]> git.pld-linux.org Git - packages/gcc.git/commitdiff
This commit was manufactured by cvs2git to create branch 'AC-branch'.
authorcvs2git <feedback@pld-linux.org>
Tue, 12 Oct 2004 20:50:53 +0000 (20:50 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Sprout from master 2004-10-12 20:50:53 UTC undefine <undefine@pld-linux.org> '- patch from'
Delete:
    c++filt.1
    gcc-O2-bug.patch
    gcc-ada-bootstrap.patch
    gcc-ada-link.patch
    gcc-alpha-complex-float.patch
    gcc-bootstrap.patch
    gcc-builtin-apply.patch
    gcc-cpp-dos-newlines.patch
    gcc-cpp-macro-doc.patch
    gcc-crtendS.patch
    gcc-default-arch.patch
    gcc-disableshared.patch
    gcc-gcc-page.c.patch
    gcc-gcj-vs-iconv.patch
    gcc-gpc.patch
    gcc-libobjc.patch
    gcc-libstdc++-bastring.patch
    gcc-libstdc++-out-of-mem.patch
    gcc-libstdc++-wstring.patch
    gcc-libstdc++.patch
    gcc-m68k-pic.patch
    gcc-manpage.patch
    gcc-march-i686-fix.patch
    gcc-pld-linux.patch
    gcc-pointer-arith.patch
    gcc-ppc-ada-hack.patch
    gcc-ppc-descriptions.patch
    gcc-ppc-ice.patch
    gcc-pr15666.patch
    gcc-sparc32-rfi.patch
    gcc-visibility.patch
    gcc32-attr-visibility.patch
    gcc32-attr-visibility2.patch
    gcc32-attr-visibility3.patch
    gcc32-attr-visibility4.patch
    gcc32-attr-visibility5.patch
    gcc32-c++-pretty_function.patch
    gcc32-cfg-eh.patch
    gcc32-doc-gcov.patch
    gcc32-hard-reg-sharing.patch
    gcc32-hard-reg-sharing2.patch
    gcc32-i386-default-momit-leaf-frame-pointer.patch
    gcc32-i386-no-default-momit-leaf-frame-pointer.patch
    gcc32-i386-pic-label-thunk.patch
    gcc32-i386-profile-olfp.patch
    gcc32-libstdc++-glibc.patch
    gcc32-locale_in_ctype_members.patch
    gcc32-locale_in_ctype_members_header.patch
    gcc32-locale_in_monetary_members.patch
    gcc32-pr6842.patch
    gcc32-sparc-sll1.patch
    gcc32-tls-dwarf2.patch
    gcc32-tls.patch
    gcc32-tls2.patch
    gcc32-tls3.patch
    gcc32-tls4.patch
    gcc32-tls5.patch
    gcov.1

58 files changed:
c++filt.1 [deleted file]
gcc-O2-bug.patch [deleted file]
gcc-ada-bootstrap.patch [deleted file]
gcc-ada-link.patch [deleted file]
gcc-alpha-complex-float.patch [deleted file]
gcc-bootstrap.patch [deleted file]
gcc-builtin-apply.patch [deleted file]
gcc-cpp-dos-newlines.patch [deleted file]
gcc-cpp-macro-doc.patch [deleted file]
gcc-crtendS.patch [deleted file]
gcc-default-arch.patch [deleted file]
gcc-disableshared.patch [deleted file]
gcc-gcc-page.c.patch [deleted file]
gcc-gcj-vs-iconv.patch [deleted file]
gcc-gpc.patch [deleted file]
gcc-libobjc.patch [deleted file]
gcc-libstdc++-bastring.patch [deleted file]
gcc-libstdc++-out-of-mem.patch [deleted file]
gcc-libstdc++-wstring.patch [deleted file]
gcc-libstdc++.patch [deleted file]
gcc-m68k-pic.patch [deleted file]
gcc-manpage.patch [deleted file]
gcc-march-i686-fix.patch [deleted file]
gcc-pld-linux.patch [deleted file]
gcc-pointer-arith.patch [deleted file]
gcc-ppc-ada-hack.patch [deleted file]
gcc-ppc-descriptions.patch [deleted file]
gcc-ppc-ice.patch [deleted file]
gcc-pr15666.patch [deleted file]
gcc-sparc32-rfi.patch [deleted file]
gcc-visibility.patch [deleted file]
gcc32-attr-visibility.patch [deleted file]
gcc32-attr-visibility2.patch [deleted file]
gcc32-attr-visibility3.patch [deleted file]
gcc32-attr-visibility4.patch [deleted file]
gcc32-attr-visibility5.patch [deleted file]
gcc32-c++-pretty_function.patch [deleted file]
gcc32-cfg-eh.patch [deleted file]
gcc32-doc-gcov.patch [deleted file]
gcc32-hard-reg-sharing.patch [deleted file]
gcc32-hard-reg-sharing2.patch [deleted file]
gcc32-i386-default-momit-leaf-frame-pointer.patch [deleted file]
gcc32-i386-no-default-momit-leaf-frame-pointer.patch [deleted file]
gcc32-i386-pic-label-thunk.patch [deleted file]
gcc32-i386-profile-olfp.patch [deleted file]
gcc32-libstdc++-glibc.patch [deleted file]
gcc32-locale_in_ctype_members.patch [deleted file]
gcc32-locale_in_ctype_members_header.patch [deleted file]
gcc32-locale_in_monetary_members.patch [deleted file]
gcc32-pr6842.patch [deleted file]
gcc32-sparc-sll1.patch [deleted file]
gcc32-tls-dwarf2.patch [deleted file]
gcc32-tls.patch [deleted file]
gcc32-tls2.patch [deleted file]
gcc32-tls3.patch [deleted file]
gcc32-tls4.patch [deleted file]
gcc32-tls5.patch [deleted file]
gcov.1 [deleted file]

diff --git a/c++filt.1 b/c++filt.1
deleted file mode 100644 (file)
index c9742bd..0000000
--- a/c++filt.1
+++ /dev/null
@@ -1,263 +0,0 @@
-.\" Automatically generated by Pod::Man version 1.15
-.\" Tue Sep 18 12:11:39 2001
-.\"
-.\" Standard preamble:
-.\" ======================================================================
-.de Sh \" Subsection heading
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Ip \" List item
-.br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  | will give a
-.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used
-.\" to do unbreakable dashes and therefore won't be available.  \*(C` and
-.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
-.tr \(*W-|\(bv\*(Tr
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` ""
-.    ds C' ""
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr
-.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
-.\" index entries marked with X<> in POD.  Of course, you'll have to process
-.\" the output yourself in some meaningful fashion.
-.if \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.\"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it
-.\" makes way too many mistakes in technical documents.
-.hy 0
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.bd B 3
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ======================================================================
-.\"
-.IX Title "C++FILT 1"
-.TH C++FILT 1 "binutils-2.11.90.0.27" "2001-09-18" "GNU"
-.UC
-.SH "NAME"
-c++filt \- Demangle \*(C+ and Java symbols.
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-c++filt [\fB\-_\fR|\fB\*(--strip-underscores\fR]
-        [\fB\-j\fR|\fB\*(--java\fR]
-        [\fB\-n\fR|\fB\*(--no-strip-underscores\fR]
-        [\fB\-s\fR \fIformat\fR|\fB\*(--format=\fR\fIformat\fR]
-        [\fB\*(--help\fR]  [\fB\*(--version\fR]  [\fIsymbol\fR...]
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-The \*(C+ and Java languages provides function overloading, which means
-that you can write many functions with the same name (providing each
-takes parameters of different types).  All \*(C+ and Java function names
-are encoded into a low-level assembly label (this process is known as
-\&\fImangling\fR). The \fBc++filt\fR
-[1]
-program does the inverse mapping: it decodes (\fIdemangles\fR) low-level
-names into user-level names so that the linker can keep these overloaded
-functions from clashing.
-.PP
-Every alphanumeric word (consisting of letters, digits, underscores,
-dollars, or periods) seen in the input is a potential label.  If the
-label decodes into a \*(C+ name, the \*(C+ name replaces the low-level
-name in the output.
-.PP
-You can use \fBc++filt\fR to decipher individual symbols:
-.PP
-.Vb 1
-\&        c++filt I<symbol>
-.Ve
-If no \fIsymbol\fR arguments are given, \fBc++filt\fR reads symbol
-names from the standard input and writes the demangled names to the
-standard output.  All results are printed on the standard output.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.Ip "\fB\-_\fR" 4
-.IX Item "-_"
-.PD 0
-.Ip "\fB\*(--strip-underscores\fR" 4
-.IX Item "strip-underscores"
-.PD
-On some systems, both the C and \*(C+ compilers put an underscore in front
-of every name.  For example, the C name \f(CW\*(C`foo\*(C'\fR gets the low-level
-name \f(CW\*(C`_foo\*(C'\fR.  This option removes the initial underscore.  Whether
-\&\fBc++filt\fR removes the underscore by default is target dependent.
-.Ip "\fB\-j\fR" 4
-.IX Item "-j"
-.PD 0
-.Ip "\fB\*(--java\fR" 4
-.IX Item "java"
-.PD
-Prints demangled names using Java syntax.  The default is to use \*(C+
-syntax.
-.Ip "\fB\-n\fR" 4
-.IX Item "-n"
-.PD 0
-.Ip "\fB\*(--no-strip-underscores\fR" 4
-.IX Item "no-strip-underscores"
-.PD
-Do not remove the initial underscore.
-.Ip "\fB\-s\fR \fIformat\fR" 4
-.IX Item "-s format"
-.PD 0
-.Ip "\fB\*(--format=\fR\fIformat\fR" 4
-.IX Item "format=format"
-.PD
-\&\s-1GNU\s0 \fBnm\fR can decode three different methods of mangling, used by
-different \*(C+ compilers.  The argument to this option selects which
-method it uses:
-.RS 4
-.if n .Ip "\f(CW""""gnu""""\fR" 4
-.el .Ip "\f(CWgnu\fR" 4
-.IX Item "gnu"
-the one used by the \s-1GNU\s0 compiler (the default method)
-.if n .Ip "\f(CW""""lucid""""\fR" 4
-.el .Ip "\f(CWlucid\fR" 4
-.IX Item "lucid"
-the one used by the Lucid compiler
-.if n .Ip "\f(CW""""arm""""\fR" 4
-.el .Ip "\f(CWarm\fR" 4
-.IX Item "arm"
-the one specified by the \*(C+ Annotated Reference Manual
-.if n .Ip "\f(CW""""hp""""\fR" 4
-.el .Ip "\f(CWhp\fR" 4
-.IX Item "hp"
-the one used by the \s-1HP\s0 compiler
-.if n .Ip "\f(CW""""edg""""\fR" 4
-.el .Ip "\f(CWedg\fR" 4
-.IX Item "edg"
-the one used by the \s-1EDG\s0 compiler
-.if n .Ip "\f(CW""""gnu\-new\-abi""""\fR" 4
-.el .Ip "\f(CWgnu\-new\-abi\fR" 4
-.IX Item "gnu-new-abi"
-the one used by the \s-1GNU\s0 compiler with the new \s-1ABI\s0.
-.RE
-.RS 4
-.RE
-.Ip "\fB\*(--help\fR" 4
-.IX Item "help"
-Print a summary of the options to \fBc++filt\fR and exit.
-.Ip "\fB\*(--version\fR" 4
-.IX Item "version"
-Print the version number of \fBc++filt\fR and exit.
-.SH "FOOTNOTES"
-.IX Header "FOOTNOTES"
-.Ip "1." 4
-\&\s-1MS-DOS\s0 does not allow \f(CW\*(C`+\*(C'\fR characters in file names, so on
-\&\s-1MS-DOS\s0 this program is named \fBc++filt\fR.
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-the Info entries for \fIbinutils\fR.
-.SH "COPYRIGHT"
-.IX Header "COPYRIGHT"
-Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
-.PP
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections, with no Front-Cover Texts, and with no
-Back-Cover Texts.  A copy of the license is included in the
-section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R".
diff --git a/gcc-O2-bug.patch b/gcc-O2-bug.patch
deleted file mode 100644 (file)
index b5490c1..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -urN gcc-2.95.2.org/gcc/reload1.c gcc-2.95.2/gcc/reload1.c
---- gcc-2.95.2.org/gcc/reload1.c       Sat Nov 25 01:48:15 2000
-+++ gcc-2.95.2/gcc/reload1.c   Sat Nov 25 01:52:07 2000
-@@ -423,6 +423,7 @@
- static int reload_reg_reaches_end_p   PROTO((int, int, enum reload_type));
- static int allocate_reload_reg                PROTO((struct insn_chain *, int, int,
-                                              int));
-+static int conflicts_with_override    PROTO((rtx));
- static void choose_reload_regs                PROTO((struct insn_chain *));
- static void merge_assigned_reloads    PROTO((rtx));
- static void emit_reload_insns         PROTO((struct insn_chain *));
-@@ -5594,6 +5595,21 @@
-   return 1;
- }
-+
-+/* Determine whether the reload reg X overlaps any rtx'es used for
-+   overriding inheritance.  Return nonzero if so.  */
-+
-+static int
-+conflicts_with_override (x)
-+     rtx x;
-+{
-+  int i;
-+  for (i = 0; i < n_reloads; i++)
-+    if (reload_override_in[i]
-+       && reg_overlap_mentioned_p (x, reload_override_in[i]))
-+      return 1;
-+  return 0;
-+}
\f
- /* Assign hard reg targets for the pseudo-registers we must reload
-    into hard regs for this insn.
-@@ -6791,6 +6807,7 @@
-                  && dead_or_set_p (insn, old)
-                  /* This is unsafe if some other reload
-                     uses the same reg first.  */
-+                 && ! conflicts_with_override (reloadreg)
-                  && reload_reg_free_for_value_p (REGNO (reloadreg),
-                                                  reload_opnum[j],
-                                                  reload_when_needed[j], 
-
diff --git a/gcc-ada-bootstrap.patch b/gcc-ada-bootstrap.patch
deleted file mode 100644 (file)
index e70ef3b..0000000
+++ /dev/null
@@ -1,7695 +0,0 @@
---- gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/sinfo.h.orig 1970-01-01 01:00:00.000000000 +0100
-+++ gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/sinfo.h      2004-06-02 00:54:16.000000000 +0200
-@@ -0,0 +1,847 @@
-+/*--------------------------------------------------------------------------*/
-+/*                                                                          */
-+/*                         GNAT COMPILER COMPONENTS                         */
-+/*                                                                          */
-+/*                                S I N F O                                 */
-+/*                                                                          */
-+/*                              C Header File                               */
-+/*                                                                          */
-+/*          Copyright (C) 1992-2004, Free Software Foundation, Inc.         */
-+/*                                                                          */
-+/* GNAT is free software;  you can  redistribute it  and/or modify it under */
-+/* terms of the  GNU General Public License as published  by the Free Soft- */
-+/* ware  Foundation;  either version 2,  or (at your option) any later ver- */
-+/* sion.  GNAT is distributed in the 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 COPYING.  If not, write */
-+/* to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, */
-+/* MA 02111-1307, USA.                                                      */
-+/*                                                                          */
-+/* As a special exception,  if other files  instantiate  generics from this */
-+/* unit, or you link  this unit with other files  to produce an executable, */
-+/* this  unit  does not  by itself cause  the resulting  executable  to  be */
-+/* covered  by the  GNU  General  Public  License.  This exception does not */
-+/* however invalidate  any other reasons why  the executable file  might be */
-+/* covered by the  GNU Public License.                                      */
-+/*                                                                          */
-+/* GNAT was originally developed  by the GNAT team at  New York University. */
-+/* Extensive contributions were provided by Ada Core Technologies Inc.      */
-+/*                                                                          */
-+/*--------------------------------------------------------------------------*/
-+
-+      #define N_Unused_At_Start 0
-+      #define N_At_Clause 1
-+      #define N_Component_Clause 2
-+      #define N_Enumeration_Representation_Clause 3
-+      #define N_Mod_Clause 4
-+      #define N_Record_Representation_Clause 5
-+      #define N_Attribute_Definition_Clause 6
-+      #define N_Empty 7
-+      #define N_Pragma 8
-+      #define N_Pragma_Argument_Association 9
-+      #define N_Error 10
-+      #define N_Defining_Character_Literal 11
-+      #define N_Defining_Identifier 12
-+      #define N_Defining_Operator_Symbol 13
-+      #define N_Expanded_Name 14
-+      #define N_Identifier 15
-+      #define N_Operator_Symbol 16
-+      #define N_Character_Literal 17
-+      #define N_Op_Add 18
-+      #define N_Op_Concat 19
-+      #define N_Op_Expon 20
-+      #define N_Op_Subtract 21
-+      #define N_Op_Divide 22
-+      #define N_Op_Mod 23
-+      #define N_Op_Multiply 24
-+      #define N_Op_Rem 25
-+      #define N_Op_And 26
-+      #define N_Op_Eq 27
-+      #define N_Op_Ge 28
-+      #define N_Op_Gt 29
-+      #define N_Op_Le 30
-+      #define N_Op_Lt 31
-+      #define N_Op_Ne 32
-+      #define N_Op_Or 33
-+      #define N_Op_Xor 34
-+      #define N_Op_Rotate_Left 35
-+      #define N_Op_Rotate_Right 36
-+      #define N_Op_Shift_Left 37
-+      #define N_Op_Shift_Right 38
-+      #define N_Op_Shift_Right_Arithmetic 39
-+      #define N_Op_Abs 40
-+      #define N_Op_Minus 41
-+      #define N_Op_Not 42
-+      #define N_Op_Plus 43
-+      #define N_Attribute_Reference 44
-+      #define N_And_Then 45
-+      #define N_Conditional_Expression 46
-+      #define N_Explicit_Dereference 47
-+      #define N_Function_Call 48
-+      #define N_In 49
-+      #define N_Indexed_Component 50
-+      #define N_Integer_Literal 51
-+      #define N_Not_In 52
-+      #define N_Null 53
-+      #define N_Or_Else 54
-+      #define N_Procedure_Call_Statement 55
-+      #define N_Qualified_Expression 56
-+      #define N_Raise_Constraint_Error 57
-+      #define N_Raise_Program_Error 58
-+      #define N_Raise_Storage_Error 59
-+      #define N_Aggregate 60
-+      #define N_Allocator 61
-+      #define N_Extension_Aggregate 62
-+      #define N_Range 63
-+      #define N_Real_Literal 64
-+      #define N_Reference 65
-+      #define N_Selected_Component 66
-+      #define N_Slice 67
-+      #define N_String_Literal 68
-+      #define N_Subprogram_Info 69
-+      #define N_Type_Conversion 70
-+      #define N_Unchecked_Expression 71
-+      #define N_Unchecked_Type_Conversion 72
-+      #define N_Subtype_Indication 73
-+      #define N_Component_Declaration 74
-+      #define N_Entry_Declaration 75
-+      #define N_Formal_Object_Declaration 76
-+      #define N_Formal_Type_Declaration 77
-+      #define N_Full_Type_Declaration 78
-+      #define N_Incomplete_Type_Declaration 79
-+      #define N_Loop_Parameter_Specification 80
-+      #define N_Object_Declaration 81
-+      #define N_Protected_Type_Declaration 82
-+      #define N_Private_Extension_Declaration 83
-+      #define N_Private_Type_Declaration 84
-+      #define N_Subtype_Declaration 85
-+      #define N_Function_Specification 86
-+      #define N_Procedure_Specification 87
-+      #define N_Entry_Index_Specification 88
-+      #define N_Freeze_Entity 89
-+      #define N_Access_Function_Definition 90
-+      #define N_Access_Procedure_Definition 91
-+      #define N_Task_Type_Declaration 92
-+      #define N_Package_Body_Stub 93
-+      #define N_Protected_Body_Stub 94
-+      #define N_Subprogram_Body_Stub 95
-+      #define N_Task_Body_Stub 96
-+      #define N_Function_Instantiation 97
-+      #define N_Package_Instantiation 98
-+      #define N_Procedure_Instantiation 99
-+      #define N_Package_Body 100
-+      #define N_Subprogram_Body 101
-+      #define N_Protected_Body 102
-+      #define N_Task_Body 103
-+      #define N_Implicit_Label_Declaration 104
-+      #define N_Package_Declaration 105
-+      #define N_Single_Task_Declaration 106
-+      #define N_Subprogram_Declaration 107
-+      #define N_Use_Package_Clause 108
-+      #define N_Generic_Package_Declaration 109
-+      #define N_Generic_Subprogram_Declaration 110
-+      #define N_Constrained_Array_Definition 111
-+      #define N_Unconstrained_Array_Definition 112
-+      #define N_Exception_Renaming_Declaration 113
-+      #define N_Object_Renaming_Declaration 114
-+      #define N_Package_Renaming_Declaration 115
-+      #define N_Subprogram_Renaming_Declaration 116
-+      #define N_Generic_Function_Renaming_Declaration 117
-+      #define N_Generic_Package_Renaming_Declaration 118
-+      #define N_Generic_Procedure_Renaming_Declaration 119
-+      #define N_Abort_Statement 120
-+      #define N_Accept_Statement 121
-+      #define N_Assignment_Statement 122
-+      #define N_Asynchronous_Select 123
-+      #define N_Block_Statement 124
-+      #define N_Case_Statement 125
-+      #define N_Code_Statement 126
-+      #define N_Conditional_Entry_Call 127
-+      #define N_Delay_Relative_Statement 128
-+      #define N_Delay_Until_Statement 129
-+      #define N_Entry_Call_Statement 130
-+      #define N_Free_Statement 131
-+      #define N_Goto_Statement 132
-+      #define N_Loop_Statement 133
-+      #define N_Null_Statement 134
-+      #define N_Raise_Statement 135
-+      #define N_Requeue_Statement 136
-+      #define N_Return_Statement 137
-+      #define N_Selective_Accept 138
-+      #define N_Timed_Entry_Call 139
-+      #define N_Exit_Statement 140
-+      #define N_If_Statement 141
-+      #define N_Accept_Alternative 142
-+      #define N_Delay_Alternative 143
-+      #define N_Elsif_Part 144
-+      #define N_Entry_Body_Formal_Part 145
-+      #define N_Iteration_Scheme 146
-+      #define N_Terminate_Alternative 147
-+      #define N_Abortable_Part 148
-+      #define N_Abstract_Subprogram_Declaration 149
-+      #define N_Access_Definition 150
-+      #define N_Access_To_Object_Definition 151
-+      #define N_Case_Statement_Alternative 152
-+      #define N_Compilation_Unit 153
-+      #define N_Compilation_Unit_Aux 154
-+      #define N_Component_Association 155
-+      #define N_Component_Definition 156
-+      #define N_Component_List 157
-+      #define N_Derived_Type_Definition 158
-+      #define N_Decimal_Fixed_Point_Definition 159
-+      #define N_Defining_Program_Unit_Name 160
-+      #define N_Delta_Constraint 161
-+      #define N_Designator 162
-+      #define N_Digits_Constraint 163
-+      #define N_Discriminant_Association 164
-+      #define N_Discriminant_Specification 165
-+      #define N_Enumeration_Type_Definition 166
-+      #define N_Entry_Body 167
-+      #define N_Entry_Call_Alternative 168
-+      #define N_Exception_Declaration 169
-+      #define N_Exception_Handler 170
-+      #define N_Floating_Point_Definition 171
-+      #define N_Formal_Decimal_Fixed_Point_Definition 172
-+      #define N_Formal_Derived_Type_Definition 173
-+      #define N_Formal_Discrete_Type_Definition 174
-+      #define N_Formal_Floating_Point_Definition 175
-+      #define N_Formal_Modular_Type_Definition 176
-+      #define N_Formal_Ordinary_Fixed_Point_Definition 177
-+      #define N_Formal_Package_Declaration 178
-+      #define N_Formal_Private_Type_Definition 179
-+      #define N_Formal_Signed_Integer_Type_Definition 180
-+      #define N_Formal_Subprogram_Declaration 181
-+      #define N_Generic_Association 182
-+      #define N_Handled_Sequence_Of_Statements 183
-+      #define N_Index_Or_Discriminant_Constraint 184
-+      #define N_Itype_Reference 185
-+      #define N_Label 186
-+      #define N_Modular_Type_Definition 187
-+      #define N_Number_Declaration 188
-+      #define N_Ordinary_Fixed_Point_Definition 189
-+      #define N_Others_Choice 190
-+      #define N_Package_Specification 191
-+      #define N_Parameter_Association 192
-+      #define N_Parameter_Specification 193
-+      #define N_Protected_Definition 194
-+      #define N_Range_Constraint 195
-+      #define N_Real_Range_Specification 196
-+      #define N_Record_Definition 197
-+      #define N_Signed_Integer_Type_Definition 198
-+      #define N_Single_Protected_Declaration 199
-+      #define N_Subunit 200
-+      #define N_Task_Definition 201
-+      #define N_Triggering_Alternative 202
-+      #define N_Use_Type_Clause 203
-+      #define N_Validate_Unchecked_Conversion 204
-+      #define N_Variant 205
-+      #define N_Variant_Part 206
-+      #define N_With_Clause 207
-+      #define N_With_Type_Clause 208
-+      #define N_Unused_At_End 209
-+
-+      #define Number_Node_Kinds 210
-+   SUBTYPE (N_Access_To_Subprogram_Definition, Node_Kind, 
-+      N_Access_Function_Definition,
-+      N_Access_Procedure_Definition)
-+   SUBTYPE (N_Array_Type_Definition, Node_Kind, 
-+      N_Constrained_Array_Definition,
-+      N_Unconstrained_Array_Definition)
-+   SUBTYPE (N_Binary_Op, Node_Kind, 
-+      N_Op_Add,
-+      N_Op_Shift_Right_Arithmetic)
-+   SUBTYPE (N_Body_Stub, Node_Kind, 
-+      N_Package_Body_Stub,
-+      N_Task_Body_Stub)
-+   SUBTYPE (N_Declaration, Node_Kind, 
-+      N_Component_Declaration,
-+      N_Procedure_Specification)
-+   SUBTYPE (N_Direct_Name, Node_Kind, 
-+      N_Identifier,
-+      N_Character_Literal)
-+   SUBTYPE (N_Entity, Node_Kind, 
-+      N_Defining_Character_Literal,
-+      N_Defining_Operator_Symbol)
-+   SUBTYPE (N_Generic_Declaration, Node_Kind, 
-+      N_Generic_Package_Declaration,
-+      N_Generic_Subprogram_Declaration)
-+   SUBTYPE (N_Generic_Instantiation, Node_Kind, 
-+      N_Function_Instantiation,
-+      N_Procedure_Instantiation)
-+   SUBTYPE (N_Generic_Renaming_Declaration, Node_Kind, 
-+      N_Generic_Function_Renaming_Declaration,
-+      N_Generic_Procedure_Renaming_Declaration)
-+   SUBTYPE (N_Has_Chars, Node_Kind, 
-+      N_Attribute_Definition_Clause,
-+      N_Op_Plus)
-+   SUBTYPE (N_Has_Entity, Node_Kind, 
-+      N_Expanded_Name,
-+      N_Attribute_Reference)
-+   SUBTYPE (N_Has_Etype, Node_Kind, 
-+      N_Error,
-+      N_Subtype_Indication)
-+   SUBTYPE (N_Has_Treat_Fixed_As_Integer, Node_Kind, 
-+      N_Op_Divide,
-+      N_Op_Rem)
-+   SUBTYPE (N_Later_Decl_Item, Node_Kind, 
-+      N_Task_Type_Declaration,
-+      N_Generic_Subprogram_Declaration)
-+   SUBTYPE (N_Op, Node_Kind, 
-+      N_Op_Add,
-+      N_Op_Plus)
-+   SUBTYPE (N_Op_Boolean, Node_Kind, 
-+      N_Op_And,
-+      N_Op_Xor)
-+   SUBTYPE (N_Op_Compare, Node_Kind, 
-+      N_Op_Eq,
-+      N_Op_Ne)
-+   SUBTYPE (N_Op_Shift, Node_Kind, 
-+      N_Op_Rotate_Left,
-+      N_Op_Shift_Right_Arithmetic)
-+   SUBTYPE (N_Proper_Body, Node_Kind, 
-+      N_Package_Body,
-+      N_Task_Body)
-+   SUBTYPE (N_Raise_xxx_Error, Node_Kind, 
-+      N_Raise_Constraint_Error,
-+      N_Raise_Storage_Error)
-+   SUBTYPE (N_Renaming_Declaration, Node_Kind, 
-+      N_Exception_Renaming_Declaration,
-+      N_Generic_Procedure_Renaming_Declaration)
-+   SUBTYPE (N_Representation_Clause, Node_Kind, 
-+      N_At_Clause,
-+      N_Attribute_Definition_Clause)
-+   SUBTYPE (N_Statement_Other_Than_Procedure_Call, Node_Kind, 
-+      N_Abort_Statement,
-+      N_If_Statement)
-+   SUBTYPE (N_Has_Condition, Node_Kind, 
-+      N_Exit_Statement,
-+      N_Terminate_Alternative)
-+   SUBTYPE (N_Subexpr, Node_Kind, 
-+      N_Expanded_Name,
-+      N_Unchecked_Type_Conversion)
-+   SUBTYPE (N_Subprogram_Specification, Node_Kind, 
-+      N_Function_Specification,
-+      N_Procedure_Specification)
-+   SUBTYPE (N_Unary_Op, Node_Kind, 
-+      N_Op_Abs,
-+      N_Op_Plus)
-+   SUBTYPE (N_Unit_Body, Node_Kind, 
-+      N_Package_Body,
-+      N_Subprogram_Body)
-+   INLINE Boolean   ABE_Is_Certain                 (Node_Id N)
-+      { return Flag18 (N); }
-+   INLINE Boolean   Abort_Present                  (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Node_Id   Abortable_Part                 (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Boolean   Abstract_Present               (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE List_Id   Accept_Handler_Records         (Node_Id N)
-+      { return List5 (N); }
-+   INLINE Node_Id   Accept_Statement               (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Elist_Id  Access_Types_To_Process        (Node_Id N)
-+      { return Elist2 (N); }
-+   INLINE List_Id   Actions                        (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Node_Id   Activation_Chain_Entity        (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Acts_As_Spec                   (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Node_Id   Aggregate_Bounds               (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Aliased_Present                (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Boolean   All_Others                     (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Boolean   All_Present                    (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE List_Id   Alternatives                   (Node_Id N)
-+      { return List4 (N); }
-+   INLINE Node_Id   Ancestor_Part                  (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Node_Id   Array_Aggregate                (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Assignment_OK                  (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Node_Id   Associated_Node                (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   At_End_Proc                    (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Name_Id   Attribute_Name                 (Node_Id N)
-+      { return Name2 (N); }
-+   INLINE Node_Id   Aux_Decls_Node                 (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Boolean   Backwards_OK                   (Node_Id N)
-+      { return Flag6 (N); }
-+   INLINE Boolean   Bad_Is_Detected                (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Boolean   By_Ref                         (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Boolean   Body_Required                  (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Node_Id   Body_To_Inline                 (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Box_Present                    (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Char_Code Char_Literal_Value             (Node_Id N)
-+      { return Char_Code2 (N); }
-+   INLINE Name_Id   Chars                          (Node_Id N)
-+      { return Name1 (N); }
-+   INLINE Boolean   Check_Address_Alignment        (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Node_Id   Choice_Parameter               (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE List_Id   Choices                        (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Boolean   Compile_Time_Known_Aggregate   (Node_Id N)
-+      { return Flag18 (N); }
-+   INLINE List_Id   Component_Associations         (Node_Id N)
-+      { return List2 (N); }
-+   INLINE List_Id   Component_Clauses              (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Node_Id   Component_Definition           (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE List_Id   Component_Items                (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Node_Id   Component_List                 (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Component_Name                 (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Condition                      (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE List_Id   Condition_Actions              (Node_Id N)
-+      { return List3 (N); }
-+   INLINE List_Id   Config_Pragmas                 (Node_Id N)
-+      { return List4 (N); }
-+   INLINE Boolean   Constant_Present               (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE Node_Id   Constraint                     (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE List_Id   Constraints                    (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Boolean   Context_Installed              (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE List_Id   Context_Items                  (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Node_Id   Controlling_Argument           (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Boolean   Conversion_OK                  (Node_Id N)
-+      { return Flag14 (N); }
-+   INLINE Node_Id   Corresponding_Body             (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Corresponding_Generic_Association (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Uint      Corresponding_Integer_Value    (Node_Id N)
-+      { return Uint4 (N); }
-+   INLINE Node_Id   Corresponding_Spec             (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Corresponding_Stub             (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Entity_Id Dcheck_Function                (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Debug_Statement                (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE List_Id   Declarations                   (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Node_Id   Default_Expression             (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Default_Name                   (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Entity_Id Defining_Identifier            (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Defining_Unit_Name             (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Delay_Alternative              (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Boolean   Delay_Finalize_Attach          (Node_Id N)
-+      { return Flag14 (N); }
-+   INLINE Node_Id   Delay_Statement                (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Delta_Expression               (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Node_Id   Digits_Expression              (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Boolean   Discr_Check_Funcs_Built        (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE List_Id   Discrete_Choices               (Node_Id N)
-+      { return List4 (N); }
-+   INLINE Node_Id   Discrete_Range                 (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Discrete_Subtype_Definition    (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE List_Id   Discrete_Subtype_Definitions   (Node_Id N)
-+      { return List2 (N); }
-+   INLINE List_Id   Discriminant_Specifications    (Node_Id N)
-+      { return List4 (N); }
-+   INLINE Node_Id   Discriminant_Type              (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Boolean   Do_Accessibility_Check         (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Do_Discriminant_Check          (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Do_Division_Check              (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Do_Length_Check                (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Boolean   Do_Overflow_Check              (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE Boolean   Do_Range_Check                 (Node_Id N)
-+      { return Flag9 (N); }
-+   INLINE Boolean   Do_Storage_Check               (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE Boolean   Do_Tag_Check                   (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Elaborate_All_Present          (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Boolean   Elaborate_Present              (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Node_Id   Elaboration_Boolean            (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE List_Id   Else_Actions                   (Node_Id N)
-+      { return List3 (N); }
-+   INLINE List_Id   Else_Statements                (Node_Id N)
-+      { return List4 (N); }
-+   INLINE List_Id   Elsif_Parts                    (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Node_Id   Enclosing_Variant              (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   End_Label                      (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Uint      End_Span                       (Node_Id N)
-+      { return Uint5 (N); }
-+   INLINE Node_Id   Entity                         (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Entity_Or_Associated_Node      (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Entry_Body_Formal_Part         (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Entry_Call_Alternative         (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Entry_Call_Statement           (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Entry_Direct_Name              (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Entry_Index                    (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Entry_Index_Specification      (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Etype                          (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE List_Id   Exception_Choices              (Node_Id N)
-+      { return List4 (N); }
-+   INLINE List_Id   Exception_Handlers             (Node_Id N)
-+      { return List5 (N); }
-+   INLINE Boolean   Exception_Junk                 (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Node_Id   Explicit_Actual_Parameter      (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Expansion_Delayed              (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Node_Id   Explicit_Generic_Actual_Parameter (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Expression                     (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE List_Id   Expressions                    (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Node_Id   First_Bit                      (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Entity_Id First_Inlined_Subprogram       (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   First_Name                     (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Node_Id   First_Named_Actual             (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   First_Real_Statement           (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Entity_Id First_Subtype_Link             (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Boolean   Float_Truncate                 (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Node_Id   Formal_Type_Definition         (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Forwards_OK                    (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Boolean   From_At_Mod                    (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE List_Id   Generic_Associations           (Node_Id N)
-+      { return List3 (N); }
-+   INLINE List_Id   Generic_Formal_Declarations    (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Node_Id   Generic_Parent                 (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Generic_Parent_Type            (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Handled_Statement_Sequence     (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Handler_List_Entry             (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Boolean   Has_Created_Identifier         (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Boolean   Has_Dynamic_Length_Check       (Node_Id N)
-+      { return Flag10 (N); }
-+   INLINE Boolean   Has_Dynamic_Range_Check        (Node_Id N)
-+      { return Flag12 (N); }
-+   INLINE Boolean   Has_No_Elaboration_Code        (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE Boolean   Has_Priority_Pragma            (Node_Id N)
-+      { return Flag6 (N); }
-+   INLINE Boolean   Has_Private_View               (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Boolean   Has_Storage_Size_Pragma        (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Boolean   Has_Task_Info_Pragma           (Node_Id N)
-+      { return Flag7 (N); }
-+   INLINE Boolean   Has_Task_Name_Pragma           (Node_Id N)
-+      { return Flag8 (N); }
-+   INLINE Boolean   Has_Wide_Character             (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Elist_Id  Hidden_By_Use_Clause           (Node_Id N)
-+      { return Elist4 (N); }
-+   INLINE Node_Id   High_Bound                     (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Identifier                     (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Boolean   Implicit_With                  (Node_Id N)
-+      { return Flag16 (N); }
-+   INLINE Boolean   In_Present                     (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Boolean   Includes_Infinities            (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Node_Id   Instance_Spec                  (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Uint      Intval                         (Node_Id N)
-+      { return Uint3 (N); }
-+   INLINE Boolean   Is_Asynchronous_Call_Block     (Node_Id N)
-+      { return Flag7 (N); }
-+   INLINE Boolean   Is_Component_Left_Opnd         (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Is_Component_Right_Opnd        (Node_Id N)
-+      { return Flag14 (N); }
-+   INLINE Boolean   Is_Controlling_Actual          (Node_Id N)
-+      { return Flag16 (N); }
-+   INLINE Boolean   Is_In_Discriminant_Check       (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Boolean   Is_Machine_Number              (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Boolean   Is_Null_Loop                   (Node_Id N)
-+      { return Flag16 (N); }
-+   INLINE Boolean   Is_Overloaded                  (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Boolean   Is_Power_Of_2_For_Shift        (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Is_Protected_Subprogram_Body   (Node_Id N)
-+      { return Flag7 (N); }
-+   INLINE Boolean   Is_Static_Expression           (Node_Id N)
-+      { return Flag6 (N); }
-+   INLINE Boolean   Is_Subprogram_Descriptor       (Node_Id N)
-+      { return Flag16 (N); }
-+   INLINE Boolean   Is_Task_Allocation_Block       (Node_Id N)
-+      { return Flag6 (N); }
-+   INLINE Boolean   Is_Task_Master                 (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Node_Id   Iteration_Scheme               (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Entity_Id Itype                          (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Boolean   Kill_Range_Check               (Node_Id N)
-+      { return Flag11 (N); }
-+   INLINE Node_Id   Label_Construct                (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Left_Opnd                      (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Last_Bit                       (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Boolean   Last_Name                      (Node_Id N)
-+      { return Flag6 (N); }
-+   INLINE Node_Id   Library_Unit                   (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Boolean   Limited_View_Installed         (Node_Id N)
-+      { return Flag18 (N); }
-+   INLINE Boolean   Limited_Present                (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE List_Id   Literals                       (Node_Id N)
-+      { return List1 (N); }
-+   INLINE List_Id   Loop_Actions                   (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Node_Id   Loop_Parameter_Specification   (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Low_Bound                      (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Mod_Clause                     (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Boolean   More_Ids                       (Node_Id N)
-+      { return Flag5 (N); }
-+   INLINE Boolean   Must_Be_Byte_Aligned           (Node_Id N)
-+      { return Flag14 (N); }
-+   INLINE Boolean   Must_Not_Freeze                (Node_Id N)
-+      { return Flag8 (N); }
-+   INLINE Node_Id   Name                           (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE List_Id   Names                          (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Node_Id   Next_Entity                    (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Next_Named_Actual              (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Next_Rep_Item                  (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Next_Use_Clause                (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   No_Ctrl_Actions                (Node_Id N)
-+      { return Flag7 (N); }
-+   INLINE Boolean   No_Elaboration_Check           (Node_Id N)
-+      { return Flag14 (N); }
-+   INLINE Boolean   No_Entities_Ref_In_Spec        (Node_Id N)
-+      { return Flag8 (N); }
-+   INLINE Boolean   No_Initialization              (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   No_Truncation                  (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE Boolean   Null_Present                   (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Null_Record_Present            (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE Node_Id   Object_Definition              (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Boolean   OK_For_Stream                  (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Node_Id   Original_Discriminant          (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Entity_Id Original_Entity                (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE List_Id   Others_Discrete_Choices        (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Boolean   Out_Present                    (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE List_Id   Parameter_Associations         (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Boolean   Parameter_List_Truncated       (Node_Id N)
-+      { return Flag17 (N); }
-+   INLINE List_Id   Parameter_Specifications       (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Node_Id   Parameter_Type                 (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Parent_Spec                    (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Position                       (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE List_Id   Pragma_Argument_Associations   (Node_Id N)
-+      { return List2 (N); }
-+   INLINE List_Id   Pragmas_After                  (Node_Id N)
-+      { return List5 (N); }
-+   INLINE List_Id   Pragmas_Before                 (Node_Id N)
-+      { return List4 (N); }
-+   INLINE Node_Id   Prefix                         (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Uint      Present_Expr                   (Node_Id N)
-+      { return Uint3 (N); }
-+   INLINE Boolean   Prev_Ids                       (Node_Id N)
-+      { return Flag6 (N); }
-+   INLINE Boolean   Print_In_Hex                   (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE List_Id   Private_Declarations           (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Boolean   Private_Present                (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Node_Id   Procedure_To_Call              (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Proper_Body                    (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Protected_Definition           (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Protected_Present              (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Boolean   Raises_Constraint_Error        (Node_Id N)
-+      { return Flag7 (N); }
-+   INLINE Node_Id   Range_Constraint               (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Range_Expression               (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Node_Id   Real_Range_Specification       (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE Ureal     Realval                        (Node_Id N)
-+      { return Ureal3 (N); }
-+   INLINE Uint      Reason                         (Node_Id N)
-+      { return Uint3 (N); }
-+   INLINE Node_Id   Record_Extension_Part          (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Redundant_Use                  (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Node_Id   Return_Type                    (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Boolean   Reverse_Present                (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Node_Id   Right_Opnd                     (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Boolean   Rounded_Result                 (Node_Id N)
-+      { return Flag18 (N); }
-+   INLINE Node_Id   Scope                          (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE List_Id   Select_Alternatives            (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Node_Id   Selector_Name                  (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE List_Id   Selector_Names                 (Node_Id N)
-+      { return List1 (N); }
-+   INLINE Boolean   Shift_Count_OK                 (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Entity_Id Source_Type                    (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Specification                  (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE List_Id   Statements                     (Node_Id N)
-+      { return List3 (N); }
-+   INLINE Boolean   Static_Processing_OK           (Node_Id N)
-+      { return Flag4 (N); }
-+   INLINE Node_Id   Storage_Pool                   (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE String_Id Strval                         (Node_Id N)
-+      { return Str3 (N); }
-+   INLINE Node_Id   Subtype_Indication             (Node_Id N)
-+      { return Node5 (N); }
-+   INLINE Node_Id   Subtype_Mark                   (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE List_Id   Subtype_Marks                  (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Boolean   Tagged_Present                 (Node_Id N)
-+      { return Flag15 (N); }
-+   INLINE Entity_Id Target_Type                    (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Entity_Id Task_Body_Procedure            (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Node_Id   Task_Definition                (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE List_Id   Then_Actions                   (Node_Id N)
-+      { return List2 (N); }
-+   INLINE List_Id   Then_Statements                (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Boolean   Treat_Fixed_As_Integer         (Node_Id N)
-+      { return Flag14 (N); }
-+   INLINE Node_Id   Triggering_Alternative         (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Node_Id   Triggering_Statement           (Node_Id N)
-+      { return Node1 (N); }
-+   INLINE Elist_Id  TSS_Elist                      (Node_Id N)
-+      { return Elist3 (N); }
-+   INLINE Node_Id   Type_Definition                (Node_Id N)
-+      { return Node3 (N); }
-+   INLINE Node_Id   Unit                           (Node_Id N)
-+      { return Node2 (N); }
-+   INLINE Boolean   Unknown_Discriminants_Present  (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Unreferenced_In_Spec           (Node_Id N)
-+      { return Flag7 (N); }
-+   INLINE Node_Id   Variant_Part                   (Node_Id N)
-+      { return Node4 (N); }
-+   INLINE List_Id   Variants                       (Node_Id N)
-+      { return List1 (N); }
-+   INLINE List_Id   Visible_Declarations           (Node_Id N)
-+      { return List2 (N); }
-+   INLINE Boolean   Was_Originally_Stub            (Node_Id N)
-+      { return Flag13 (N); }
-+   INLINE Boolean   Zero_Cost_Handling             (Node_Id N)
-+      { return Flag5 (N); }
-+
---- gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/einfo.h.orig 1970-01-01 01:00:00.000000000 +0100
-+++ gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/einfo.h      2004-06-02 00:54:19.000000000 +0200
-@@ -0,0 +1,1814 @@
-+/*--------------------------------------------------------------------------*/
-+/*                                                                          */
-+/*                         GNAT COMPILER COMPONENTS                         */
-+/*                                                                          */
-+/*                                E I N F O                                 */
-+/*                                                                          */
-+/*                              C Header File                               */
-+/*                                                                          */
-+/*          Copyright (C) 1992-2003 Free Software Foundation, Inc.          */
-+/*                                                                          */
-+/* GNAT is free software;  you can  redistribute it  and/or modify it under */
-+/* terms of the  GNU General Public License as published  by the Free Soft- */
-+/* ware  Foundation;  either version 2,  or (at your option) any later ver- */
-+/* sion.  GNAT is distributed in the 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 COPYING.  If not, write */
-+/* to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, */
-+/* MA 02111-1307, USA.                                                      */
-+/*                                                                          */
-+/* As a special exception,  if other files  instantiate  generics from this */
-+/* unit, or you link  this unit with other files  to produce an executable, */
-+/* this  unit  does not  by itself cause  the resulting  executable  to  be */
-+/* covered  by the  GNU  General  Public  License.  This exception does not */
-+/* however invalidate  any other reasons why  the executable file  might be */
-+/* covered by the  GNU Public License.                                      */
-+/*                                                                          */
-+/* GNAT was originally developed  by the GNAT team at  New York University. */
-+/* Extensive contributions were provided by Ada Core Technologies Inc.      */
-+/*                                                                          */
-+/*--------------------------------------------------------------------------*/
-+
-+   #define E_Void                           0
-+   #define E_Variable                       1
-+   #define E_Component                      2
-+   #define E_Constant                       3
-+   #define E_Discriminant                   4
-+   #define E_Loop_Parameter                 5
-+   #define E_In_Parameter                   6
-+   #define E_Out_Parameter                  7
-+   #define E_In_Out_Parameter               8
-+   #define E_Generic_In_Out_Parameter       9
-+   #define E_Generic_In_Parameter           10
-+   #define E_Named_Integer                  11
-+   #define E_Named_Real                     12
-+   #define E_Enumeration_Type               13
-+   #define E_Enumeration_Subtype            14
-+   #define E_Signed_Integer_Type            15
-+   #define E_Signed_Integer_Subtype         16
-+   #define E_Modular_Integer_Type           17
-+   #define E_Modular_Integer_Subtype        18
-+   #define E_Ordinary_Fixed_Point_Type      19
-+   #define E_Ordinary_Fixed_Point_Subtype   20
-+   #define E_Decimal_Fixed_Point_Type       21
-+   #define E_Decimal_Fixed_Point_Subtype    22
-+   #define E_Floating_Point_Type            23
-+   #define E_Floating_Point_Subtype         24
-+   #define E_Access_Type                    25
-+   #define E_Access_Subtype                 26
-+   #define E_Access_Attribute_Type          27
-+   #define E_Allocator_Type                 28
-+   #define E_General_Access_Type            29
-+   #define E_Access_Subprogram_Type         30
-+   #define E_Access_Protected_Subprogram_Type 31
-+   #define E_Anonymous_Access_Type          32
-+   #define E_Array_Type                     33
-+   #define E_Array_Subtype                  34
-+   #define E_String_Type                    35
-+   #define E_String_Subtype                 36
-+   #define E_String_Literal_Subtype         37
-+   #define E_Class_Wide_Type                38
-+   #define E_Class_Wide_Subtype             39
-+   #define E_Record_Type                    40
-+   #define E_Record_Subtype                 41
-+   #define E_Record_Type_With_Private       42
-+   #define E_Record_Subtype_With_Private    43
-+   #define E_Private_Type                   44
-+   #define E_Private_Subtype                45
-+   #define E_Limited_Private_Type           46
-+   #define E_Limited_Private_Subtype        47
-+   #define E_Incomplete_Type                48
-+   #define E_Task_Type                      49
-+   #define E_Task_Subtype                   50
-+   #define E_Protected_Type                 51
-+   #define E_Protected_Subtype              52
-+   #define E_Exception_Type                 53
-+   #define E_Subprogram_Type                54
-+   #define E_Enumeration_Literal            55
-+   #define E_Function                       56
-+   #define E_Operator                       57
-+   #define E_Procedure                      58
-+   #define E_Entry                          59
-+   #define E_Entry_Family                   60
-+   #define E_Block                          61
-+   #define E_Entry_Index_Parameter          62
-+   #define E_Exception                      63
-+   #define E_Generic_Function               64
-+   #define E_Generic_Procedure              65
-+   #define E_Generic_Package                66
-+   #define E_Label                          67
-+   #define E_Loop                           68
-+   #define E_Package                        69
-+   #define E_Package_Body                   70
-+   #define E_Protected_Object               71
-+   #define E_Protected_Body                 72
-+   #define E_Task_Body                      73
-+   #define E_Subprogram_Body                74
-+
-+   SUBTYPE (Access_Kind, Entity_Kind, 
-+      E_Access_Type, E_Anonymous_Access_Type)
-+
-+   SUBTYPE (Array_Kind, Entity_Kind, 
-+      E_Array_Type, E_String_Literal_Subtype)
-+
-+   SUBTYPE (Class_Wide_Kind, Entity_Kind, 
-+      E_Class_Wide_Type, E_Class_Wide_Subtype)
-+
-+   SUBTYPE (Composite_Kind, Entity_Kind, 
-+      E_Array_Type, E_Protected_Subtype)
-+
-+   SUBTYPE (Concurrent_Kind, Entity_Kind, 
-+      E_Task_Type, E_Protected_Subtype)
-+
-+   SUBTYPE (Concurrent_Body_Kind, Entity_Kind, 
-+      E_Protected_Body, E_Task_Body)
-+
-+   SUBTYPE (Decimal_Fixed_Point_Kind, Entity_Kind, 
-+      E_Decimal_Fixed_Point_Type, E_Decimal_Fixed_Point_Subtype)
-+
-+   SUBTYPE (Digits_Kind, Entity_Kind, 
-+      E_Decimal_Fixed_Point_Type, E_Floating_Point_Subtype)
-+
-+   SUBTYPE (Discrete_Kind, Entity_Kind, 
-+      E_Enumeration_Type, E_Modular_Integer_Subtype)
-+
-+   SUBTYPE (Discrete_Or_Fixed_Point_Kind, Entity_Kind, 
-+      E_Enumeration_Type, E_Decimal_Fixed_Point_Subtype)
-+
-+   SUBTYPE (Elementary_Kind, Entity_Kind, 
-+      E_Enumeration_Type, E_Anonymous_Access_Type)
-+
-+   SUBTYPE (Enumeration_Kind, Entity_Kind, 
-+      E_Enumeration_Type, E_Enumeration_Subtype)
-+
-+   SUBTYPE (Entry_Kind, Entity_Kind, 
-+      E_Entry, E_Entry_Family)
-+
-+   SUBTYPE (Fixed_Point_Kind, Entity_Kind, 
-+      E_Ordinary_Fixed_Point_Type, E_Decimal_Fixed_Point_Subtype)
-+
-+   SUBTYPE (Float_Kind, Entity_Kind, 
-+      E_Floating_Point_Type, E_Floating_Point_Subtype)
-+
-+   SUBTYPE (Formal_Kind, Entity_Kind, 
-+      E_In_Parameter, E_In_Out_Parameter)
-+
-+   SUBTYPE (Generic_Subprogram_Kind, Entity_Kind, 
-+      E_Generic_Function, E_Generic_Procedure)
-+
-+   SUBTYPE (Generic_Unit_Kind, Entity_Kind, 
-+      E_Generic_Function, E_Generic_Package)
-+
-+   SUBTYPE (Incomplete_Or_Private_Kind, Entity_Kind, 
-+      E_Record_Type_With_Private, E_Incomplete_Type)
-+
-+   SUBTYPE (Integer_Kind, Entity_Kind, 
-+      E_Signed_Integer_Type, E_Modular_Integer_Subtype)
-+
-+   SUBTYPE (Modular_Integer_Kind, Entity_Kind, 
-+      E_Modular_Integer_Type, E_Modular_Integer_Subtype)
-+
-+   SUBTYPE (Named_Kind, Entity_Kind, 
-+      E_Named_Integer, E_Named_Real)
-+
-+   SUBTYPE (Numeric_Kind, Entity_Kind, 
-+      E_Signed_Integer_Type, E_Floating_Point_Subtype)
-+
-+   SUBTYPE (Object_Kind, Entity_Kind, 
-+      E_Variable, E_Generic_In_Parameter)
-+
-+   SUBTYPE (Ordinary_Fixed_Point_Kind, Entity_Kind, 
-+      E_Ordinary_Fixed_Point_Type, E_Ordinary_Fixed_Point_Subtype)
-+
-+   SUBTYPE (Overloadable_Kind, Entity_Kind, 
-+      E_Enumeration_Literal, E_Entry)
-+
-+   SUBTYPE (Private_Kind, Entity_Kind, 
-+      E_Record_Type_With_Private, E_Limited_Private_Subtype)
-+
-+   SUBTYPE (Protected_Kind, Entity_Kind, 
-+      E_Protected_Type, E_Protected_Subtype)
-+
-+   SUBTYPE (Real_Kind, Entity_Kind, 
-+      E_Ordinary_Fixed_Point_Type, E_Floating_Point_Subtype)
-+
-+   SUBTYPE (Record_Kind, Entity_Kind, 
-+      E_Class_Wide_Type, E_Record_Subtype_With_Private)
-+
-+   SUBTYPE (Scalar_Kind, Entity_Kind, 
-+      E_Enumeration_Type, E_Floating_Point_Subtype)
-+
-+   SUBTYPE (String_Kind, Entity_Kind, 
-+      E_String_Type, E_String_Literal_Subtype)
-+
-+   SUBTYPE (Subprogram_Kind, Entity_Kind, 
-+      E_Function, E_Procedure)
-+
-+   SUBTYPE (Signed_Integer_Kind, Entity_Kind, 
-+      E_Signed_Integer_Type, E_Signed_Integer_Subtype)
-+
-+   SUBTYPE (Task_Kind, Entity_Kind, 
-+      E_Task_Type, E_Task_Subtype)
-+
-+   SUBTYPE (Type_Kind, Entity_Kind, 
-+      E_Enumeration_Type, E_Subprogram_Type)
-+
-+   typedef char Component_Alignment_Kind;
-+      #define Calign_Default           0
-+      #define Calign_Component_Size    1
-+      #define Calign_Component_Size_4  2
-+      #define Calign_Storage_Unit      3
-+
-+   typedef Boolean B;
-+   typedef Component_Alignment_Kind C;
-+   typedef Entity_Id E;
-+   typedef Mechanism_Type M;
-+   typedef Node_Id N;
-+   typedef Uint U;
-+   typedef Ureal R;
-+   typedef Elist_Id L;
-+   typedef List_Id S;
-+
-+   INLINE L Accept_Address                     (E Id);
-+   INLINE E Access_Disp_Table                  (E Id);
-+   INLINE E Actual_Subtype                     (E Id);
-+   INLINE B Address_Taken                      (E Id);
-+   INLINE E Alias                              (E Id);
-+   INLINE U Alignment                          (E Id);
-+   INLINE E Associated_Final_Chain             (E Id);
-+   INLINE E Associated_Formal_Package          (E Id);
-+   INLINE N Associated_Node_For_Itype          (E Id);
-+   INLINE E Associated_Storage_Pool            (E Id);
-+   INLINE N Barrier_Function                   (E Id);
-+   INLINE N Block_Node                         (E Id);
-+   INLINE E Body_Entity                        (E Id);
-+   INLINE B Body_Needed_For_SAL                (E Id);
-+   INLINE E CR_Discriminant                    (E Id);
-+   INLINE B C_Pass_By_Copy                     (E Id);
-+   INLINE B Can_Never_Be_Null                  (E Id);
-+   INLINE B Checks_May_Be_Suppressed           (E Id);
-+   INLINE E Class_Wide_Type                    (E Id);
-+   INLINE E Cloned_Subtype                     (E Id);
-+
-+   #define Component_Alignment einfo__component_alignment
-+   C Component_Alignment                (E Id);
-+
-+   INLINE N Component_Clause                   (E Id);
-+   INLINE U Component_Bit_Offset               (E Id);
-+   INLINE U Component_Size                     (E Id);
-+   INLINE E Component_Type                     (E Id);
-+   INLINE E Corresponding_Concurrent_Type      (E Id);
-+   INLINE E Corresponding_Discriminant         (E Id);
-+   INLINE E Corresponding_Equality             (E Id);
-+   INLINE E Corresponding_Record_Type          (E Id);
-+   INLINE E Corresponding_Remote_Type          (E Id);
-+   INLINE N Current_Value                      (E Id);
-+   INLINE B Debug_Info_Off                     (E Id);
-+   INLINE E Debug_Renaming_Link                (E Id);
-+   INLINE E DTC_Entity                         (E Id);
-+   INLINE U DT_Entry_Count                     (E Id);
-+   INLINE U DT_Position                        (E Id);
-+   INLINE E Default_Expr_Function              (E Id);
-+   INLINE B Default_Expressions_Processed      (E Id);
-+   INLINE N Default_Value                      (E Id);
-+   INLINE B Delay_Cleanups                     (E Id);
-+   INLINE B Delay_Subprogram_Descriptors       (E Id);
-+   INLINE R Delta_Value                        (E Id);
-+   INLINE L Dependent_Instances                (E Id);
-+   INLINE B Depends_On_Private                 (E Id);
-+   INLINE U Digits_Value                       (E Id);
-+   INLINE E Directly_Designated_Type           (E Id);
-+   INLINE B Discard_Names                      (E Id);
-+   INLINE E Discriminal                        (E Id);
-+   INLINE E Discriminal_Link                   (E Id);
-+   INLINE E Discriminant_Checking_Func         (E Id);
-+   INLINE L Discriminant_Constraint            (E Id);
-+   INLINE N Discriminant_Default_Value         (E Id);
-+   INLINE U Discriminant_Number                (E Id);
-+   INLINE B Elaborate_All_Desirable            (E Id);
-+   INLINE E Elaboration_Entity                 (E Id);
-+   INLINE B Elaboration_Entity_Required        (E Id);
-+   INLINE E Enclosing_Scope                    (E Id);
-+   INLINE B Entry_Accepted                     (E Id);
-+   INLINE E Entry_Bodies_Array                 (E Id);
-+   INLINE E Entry_Cancel_Parameter             (E Id);
-+   INLINE E Entry_Component                    (E Id);
-+   INLINE E Entry_Formal                       (E Id);
-+   INLINE E Entry_Index_Constant               (E Id);
-+   INLINE E Entry_Index_Type                   (E Id);
-+   INLINE E Entry_Parameters_Type              (E Id);
-+   INLINE E Enum_Pos_To_Rep                    (E Id);
-+   INLINE U Enumeration_Pos                    (E Id);
-+   INLINE U Enumeration_Rep                    (E Id);
-+   INLINE N Enumeration_Rep_Expr               (E Id);
-+   INLINE E Equivalent_Type                    (E Id);
-+   INLINE U Esize                              (E Id);
-+   INLINE U Exception_Code                     (E Id);
-+   INLINE E Extra_Accessibility                (E Id);
-+   INLINE E Extra_Constrained                  (E Id);
-+   INLINE E Extra_Formal                       (E Id);
-+   INLINE E Finalization_Chain_Entity          (E Id);
-+
-+   #define Finalize_Storage_Only einfo__finalize_storage_only
-+   B Finalize_Storage_Only              (E Id);
-+
-+   INLINE E First_Entity                       (E Id);
-+   INLINE N First_Index                        (E Id);
-+   INLINE E First_Literal                      (E Id);
-+   INLINE E First_Optional_Parameter           (E Id);
-+   INLINE E First_Private_Entity               (E Id);
-+   INLINE N First_Rep_Item                     (E Id);
-+   INLINE N Freeze_Node                        (E Id);
-+   INLINE B From_With_Type                     (E Id);
-+   INLINE E Full_View                          (E Id);
-+   INLINE B Function_Returns_With_DSP          (E Id);
-+   INLINE E Generic_Homonym                    (E Id);
-+   INLINE L Generic_Renamings                  (E Id);
-+   INLINE S Handler_Records                    (E Id);
-+   INLINE B Has_Aliased_Components             (E Id);
-+   INLINE B Has_Alignment_Clause               (E Id);
-+   INLINE B Has_All_Calls_Remote               (E Id);
-+   INLINE B Has_Atomic_Components              (E Id);
-+   INLINE B Has_Biased_Representation          (E Id);
-+   INLINE B Has_Completion                     (E Id);
-+   INLINE B Has_Completion_In_Body             (E Id);
-+   INLINE B Has_Complex_Representation         (E Id);
-+   INLINE B Has_Component_Size_Clause          (E Id);
-+   INLINE B Has_Contiguous_Rep                 (E Id);
-+   INLINE B Has_Controlled_Component           (E Id);
-+   INLINE B Has_Controlling_Result             (E Id);
-+   INLINE B Has_Convention_Pragma              (E Id);
-+   INLINE B Has_Delayed_Freeze                 (E Id);
-+   INLINE B Has_Discriminants                  (E Id);
-+   INLINE B Has_Enumeration_Rep_Clause         (E Id);
-+   INLINE B Has_Exit                           (E Id);
-+   INLINE B Has_External_Tag_Rep_Clause        (E Id);
-+   INLINE B Has_Fully_Qualified_Name           (E Id);
-+   INLINE B Has_Gigi_Rep_Item                  (E Id);
-+   INLINE B Has_Homonym                        (E Id);
-+
-+   #define Has_Interrupt_Handler einfo__has_interrupt_handler
-+   B Has_Interrupt_Handler              (E Id);
-+
-+   INLINE B Has_Machine_Radix_Clause           (E Id);
-+   INLINE B Has_Master_Entity                  (E Id);
-+   INLINE B Has_Missing_Return                 (E Id);
-+   INLINE B Has_Nested_Block_With_Handler      (E Id);
-+   INLINE B Has_Forward_Instantiation          (E Id);
-+   INLINE B Has_Non_Standard_Rep               (E Id);
-+   INLINE B Has_Object_Size_Clause             (E Id);
-+   INLINE B Has_Per_Object_Constraint          (E Id);
-+   INLINE B Has_Pragma_Controlled              (E Id);
-+   INLINE B Has_Pragma_Elaborate_Body          (E Id);
-+   INLINE B Has_Pragma_Inline                  (E Id);
-+   INLINE B Has_Pragma_Pack                    (E Id);
-+   INLINE B Has_Pragma_Pure_Function           (E Id);
-+   INLINE B Has_Pragma_Unreferenced            (E Id);
-+   INLINE B Has_Primitive_Operations           (E Id);
-+   INLINE B Has_Qualified_Name                 (E Id);
-+   INLINE B Has_Record_Rep_Clause              (E Id);
-+   INLINE B Has_Recursive_Call                 (E Id);
-+   INLINE B Has_Size_Clause                    (E Id);
-+   INLINE B Has_Small_Clause                   (E Id);
-+   INLINE B Has_Specified_Layout               (E Id);
-+   INLINE B Has_Storage_Size_Clause            (E Id);
-+   INLINE B Has_Subprogram_Descriptor          (E Id);
-+   INLINE B Has_Task                           (E Id);
-+   INLINE B Has_Unchecked_Union                (E Id);
-+   INLINE B Has_Unknown_Discriminants          (E Id);
-+   INLINE B Has_Volatile_Components            (E Id);
-+   INLINE B Has_Xref_Entry                     (E Id);
-+   INLINE E Hiding_Loop_Variable               (E Id);
-+   INLINE E Homonym                            (E Id);
-+   INLINE B In_Package_Body                    (E Id);
-+   INLINE B In_Private_Part                    (E Id);
-+   INLINE B In_Use                             (E Id);
-+   INLINE L Inner_Instances                    (E Id);
-+   INLINE N Interface_Name                     (E Id);
-+   INLINE B Is_AST_Entry                       (E Id);
-+   INLINE B Is_Abstract                        (E Id);
-+   INLINE B Is_Access_Constant                 (E Id);
-+   INLINE B Is_Aliased                         (E Id);
-+   INLINE B Is_Asynchronous                    (E Id);
-+   INLINE B Is_Atomic                          (E Id);
-+   INLINE B Is_Bit_Packed_Array                (E Id);
-+   INLINE B Is_CPP_Class                       (E Id);
-+   INLINE B Is_Called                          (E Id);
-+   INLINE B Is_Character_Type                  (E Id);
-+   INLINE B Is_Child_Unit                      (E Id);
-+   INLINE B Is_Class_Wide_Equivalent_Type      (E Id);
-+   INLINE B Is_Compilation_Unit                (E Id);
-+   INLINE B Is_Completely_Hidden               (E Id);
-+   INLINE B Is_Constr_Subt_For_UN_Aliased      (E Id);
-+   INLINE B Is_Constr_Subt_For_U_Nominal       (E Id);
-+   INLINE B Is_Constrained                     (E Id);
-+   INLINE B Is_Constructor                     (E Id);
-+   INLINE B Is_Controlled                      (E Id);
-+   INLINE B Is_Controlling_Formal              (E Id);
-+   INLINE B Is_Discrim_SO_Function             (E Id);
-+   INLINE B Is_Dispatching_Operation           (E Id);
-+   INLINE B Is_Eliminated                      (E Id);
-+   INLINE B Is_Entry_Formal                    (E Id);
-+   INLINE B Is_Exported                        (E Id);
-+   INLINE B Is_First_Subtype                   (E Id);
-+   INLINE B Is_For_Access_Subtype              (E Id);
-+   INLINE B Is_Frozen                          (E Id);
-+   INLINE B Is_Generic_Instance                (E Id);
-+   INLINE B Is_Hidden                          (E Id);
-+   INLINE B Is_Hidden_Open_Scope               (E Id);
-+   INLINE B Is_Immediately_Visible             (E Id);
-+   INLINE B Is_Imported                        (E Id);
-+   INLINE B Is_Inlined                         (E Id);
-+   INLINE B Is_Instantiated                    (E Id);
-+   INLINE B Is_Internal                        (E Id);
-+   INLINE B Is_Interrupt_Handler               (E Id);
-+   INLINE B Is_Intrinsic_Subprogram            (E Id);
-+   INLINE B Is_Itype                           (E Id);
-+   INLINE B Is_Known_Non_Null                  (E Id);
-+   INLINE B Is_Known_Valid                     (E Id);
-+   INLINE B Is_Limited_Composite               (E Id);
-+   INLINE B Is_Machine_Code_Subprogram         (E Id);
-+   INLINE B Is_Non_Static_Subtype              (E Id);
-+   INLINE B Is_Null_Init_Proc                  (E Id);
-+   INLINE B Is_Optional_Parameter              (E Id);
-+   INLINE B Is_Package_Body_Entity             (E Id);
-+   INLINE B Is_Packed                          (E Id);
-+   INLINE B Is_Packed_Array_Type               (E Id);
-+   INLINE B Is_Potentially_Use_Visible         (E Id);
-+   INLINE B Is_Preelaborated                   (E Id);
-+   INLINE B Is_Private_Composite               (E Id);
-+   INLINE B Is_Private_Descendant              (E Id);
-+   INLINE B Is_Psected                         (E Id);
-+   INLINE B Is_Public                          (E Id);
-+   INLINE B Is_Pure                            (E Id);
-+   INLINE B Is_Remote_Call_Interface           (E Id);
-+   INLINE B Is_Remote_Types                    (E Id);
-+   INLINE B Is_Renaming_Of_Object              (E Id);
-+   INLINE B Is_Shared_Passive                  (E Id);
-+   INLINE B Is_Statically_Allocated            (E Id);
-+   INLINE B Is_Tag                             (E Id);
-+   INLINE B Is_Tagged_Type                     (E Id);
-+   INLINE B Is_Thread_Body                     (E Id);
-+   INLINE B Is_True_Constant                   (E Id);
-+   INLINE B Is_Unchecked_Union                 (E Id);
-+   INLINE B Is_Unsigned_Type                   (E Id);
-+   INLINE B Is_VMS_Exception                   (E Id);
-+   INLINE B Is_Valued_Procedure                (E Id);
-+   INLINE B Is_Visible_Child_Unit              (E Id);
-+
-+   #define Is_Volatile einfo__is_volatile
-+   B Is_Volatile                        (E Id);
-+
-+   #define Is_Wrapper_Package einfo__is_wrapper_package
-+   B Is_Wrapper_Package                 (E Id);
-+
-+   INLINE B Kill_Elaboration_Checks            (E Id);
-+   INLINE B Kill_Range_Checks                  (E Id);
-+   INLINE B Kill_Tag_Checks                    (E Id);
-+   INLINE E Last_Entity                        (E Id);
-+   INLINE L Limited_Views                      (E Id);
-+   INLINE E Lit_Indexes                        (E Id);
-+   INLINE E Lit_Strings                        (E Id);
-+   INLINE B Machine_Radix_10                   (E Id);
-+   INLINE E Master_Id                          (E Id);
-+   INLINE B Materialize_Entity                 (E Id);
-+   INLINE M Mechanism                          (E Id);
-+   INLINE U Modulus                            (E Id);
-+   INLINE B Needs_Debug_Info                   (E Id);
-+   INLINE B Needs_No_Actuals                   (E Id);
-+   INLINE B Never_Set_In_Source                (E Id);
-+   INLINE E Next_Inlined_Subprogram            (E Id);
-+   INLINE B No_Pool_Assigned                   (E Id);
-+   INLINE B No_Return                          (E Id);
-+   INLINE B Non_Binary_Modulus                 (E Id);
-+   INLINE E Non_Limited_View                   (E Id);
-+   INLINE B Nonzero_Is_True                    (E Id);
-+   INLINE U Normalized_First_Bit               (E Id);
-+   INLINE U Normalized_Position                (E Id);
-+   INLINE U Normalized_Position_Max            (E Id);
-+   INLINE E Object_Ref                         (E Id);
-+   INLINE E Original_Array_Type                (E Id);
-+   INLINE E Original_Record_Component          (E Id);
-+   INLINE E Packed_Array_Type                  (E Id);
-+   INLINE E Parent_Subtype                     (E Id);
-+   INLINE L Primitive_Operations               (E Id);
-+   INLINE E Prival                             (E Id);
-+   INLINE L Privals_Chain                      (E Id);
-+   INLINE L Private_Dependents                 (E Id);
-+   INLINE N Private_View                       (E Id);
-+   INLINE E Protected_Body_Subprogram          (E Id);
-+   INLINE E Protected_Formal                   (E Id);
-+   INLINE E Protected_Operation                (E Id);
-+   INLINE U RM_Size                            (E Id);
-+   INLINE B Reachable                          (E Id);
-+   INLINE B Referenced                         (E Id);
-+   INLINE B Referenced_As_LHS                  (E Id);
-+   INLINE N Referenced_Object                  (E Id);
-+   INLINE N Register_Exception_Call            (E Id);
-+   INLINE E Related_Array_Object               (E Id);
-+   INLINE E Related_Instance                   (E Id);
-+   INLINE N Renamed_Entity                     (E Id);
-+   INLINE N Renamed_Object                     (E Id);
-+   INLINE U Renaming_Map                       (E Id);
-+   INLINE B Return_Present                     (E Id);
-+   INLINE B Returns_By_Ref                     (E Id);
-+   INLINE B Reverse_Bit_Order                  (E Id);
-+   INLINE N Scalar_Range                       (E Id);
-+   INLINE U Scale_Value                        (E Id);
-+   INLINE U Scope_Depth_Value                  (E Id);
-+   INLINE B Sec_Stack_Needed_For_Return        (E Id);
-+   INLINE S Shadow_Entities                    (E Id);
-+   INLINE E Shared_Var_Assign_Proc             (E Id);
-+   INLINE E Shared_Var_Read_Proc               (E Id);
-+   INLINE N Size_Check_Code                    (E Id);
-+   INLINE B Size_Known_At_Compile_Time         (E Id);
-+   INLINE B Size_Depends_On_Discriminant       (E Id);
-+   INLINE R Small_Value                        (E Id);
-+   INLINE E Spec_Entity                        (E Id);
-+   INLINE E Storage_Size_Variable              (E Id);
-+   INLINE L Stored_Constraint                  (E Id);
-+   INLINE B Strict_Alignment                   (E Id);
-+   INLINE U String_Literal_Length              (E Id);
-+   INLINE N String_Literal_Low_Bound           (E Id);
-+   INLINE B Suppress_Elaboration_Warnings      (E Id);
-+   INLINE B Suppress_Init_Proc                 (E Id);
-+   INLINE B Suppress_Style_Checks              (E Id);
-+   INLINE B Treat_As_Volatile                  (E Id);
-+   INLINE E Underlying_Full_View               (E Id);
-+   INLINE N Unset_Reference                    (E Id);
-+   INLINE B Uses_Sec_Stack                     (E Id);
-+   INLINE B Vax_Float                          (E Id);
-+   INLINE B Warnings_Off                       (E Id);
-+   INLINE B Is_Access_Type                     (E Id);
-+   INLINE B Is_Array_Type                      (E Id);
-+   INLINE B Is_Class_Wide_Type                 (E Id);
-+   INLINE B Is_Composite_Type                  (E Id);
-+   INLINE B Is_Concurrent_Body                 (E Id);
-+   INLINE B Is_Concurrent_Record_Type          (E Id);
-+   INLINE B Is_Concurrent_Type                 (E Id);
-+   INLINE B Is_Decimal_Fixed_Point_Type        (E Id);
-+   INLINE B Is_Digits_Type                     (E Id);
-+   INLINE B Is_Discrete_Or_Fixed_Point_Type    (E Id);
-+   INLINE B Is_Discrete_Type                   (E Id);
-+   INLINE B Is_Elementary_Type                 (E Id);
-+   INLINE B Is_Entry                           (E Id);
-+   INLINE B Is_Enumeration_Type                (E Id);
-+   INLINE B Is_Fixed_Point_Type                (E Id);
-+   INLINE B Is_Floating_Point_Type             (E Id);
-+   INLINE B Is_Formal                          (E Id);
-+   INLINE B Is_Formal_Subprogram               (E Id);
-+   INLINE B Is_Generic_Actual_Type             (E Id);
-+   INLINE B Is_Generic_Unit                    (E Id);
-+   INLINE B Is_Generic_Type                    (E Id);
-+   INLINE B Is_Generic_Subprogram              (E Id);
-+   INLINE B Is_Incomplete_Or_Private_Type      (E Id);
-+   INLINE B Is_Integer_Type                    (E Id);
-+   INLINE B Is_Limited_Record                  (E Id);
-+   INLINE B Is_Modular_Integer_Type            (E Id);
-+   INLINE B Is_Named_Number                    (E Id);
-+   INLINE B Is_Numeric_Type                    (E Id);
-+   INLINE B Is_Object                          (E Id);
-+   INLINE B Is_Ordinary_Fixed_Point_Type       (E Id);
-+   INLINE B Is_Overloadable                    (E Id);
-+   INLINE B Is_Overriding_Operation            (E Id);
-+   INLINE B Is_Private_Type                    (E Id);
-+   INLINE B Is_Protected_Type                  (E Id);
-+   INLINE B Is_Real_Type                       (E Id);
-+   INLINE B Is_Record_Type                     (E Id);
-+   INLINE B Is_Scalar_Type                     (E Id);
-+   INLINE B Is_Signed_Integer_Type             (E Id);
-+   INLINE B Is_Subprogram                      (E Id);
-+   INLINE B Is_Task_Type                       (E Id);
-+   INLINE B Is_Type                            (E Id);
-+
-+   #define Address_Clause einfo__address_clause
-+   N Address_Clause                     (E Id);
-+
-+   #define Alignment_Clause einfo__alignment_clause
-+   N Alignment_Clause                   (E Id);
-+
-+   #define Ancestor_Subtype einfo__ancestor_subtype
-+   E Ancestor_Subtype                   (E Id);
-+
-+   #define Base_Type einfo__base_type
-+   E Base_Type                          (E Id);
-+
-+   #define Constant_Value einfo__constant_value
-+   N Constant_Value                     (E Id);
-+
-+   #define Declaration_Node einfo__declaration_node
-+   N Declaration_Node                   (E Id);
-+
-+   #define Designated_Type einfo__designated_type
-+   E Designated_Type                    (E Id);
-+
-+   #define Enclosing_Dynamic_Scope einfo__enclosing_dynamic_scope
-+   E Enclosing_Dynamic_Scope            (E Id);
-+
-+   #define First_Component einfo__first_component
-+   E First_Component                    (E Id);
-+
-+   #define First_Discriminant einfo__first_discriminant
-+   E First_Discriminant                 (E Id);
-+
-+   #define First_Formal einfo__first_formal
-+   E First_Formal                       (E Id);
-+
-+   #define First_Stored_Discriminant einfo__first_stored_discriminant
-+   E First_Stored_Discriminant          (E Id);
-+
-+   #define First_Subtype einfo__first_subtype
-+   E First_Subtype                      (E Id);
-+
-+   #define Has_Attach_Handler einfo__has_attach_handler
-+   B Has_Attach_Handler                 (E Id);
-+
-+   #define Has_Entries einfo__has_entries
-+   B Has_Entries                        (E Id);
-+
-+   #define Has_Foreign_Convention einfo__has_foreign_convention
-+   B Has_Foreign_Convention             (E Id);
-+
-+   #define Has_Private_Ancestor einfo__has_private_ancestor
-+   B Has_Private_Ancestor               (E Id);
-+
-+   INLINE B Has_Private_Declaration            (E Id);
-+
-+   #define Implementation_Base_Type einfo__implementation_base_type
-+   E Implementation_Base_Type           (E Id);
-+
-+   #define Is_Always_Inlined einfo__is_always_inlined
-+   B Is_Always_Inlined                  (E Id);
-+
-+   #define Is_Boolean_Type einfo__is_boolean_type
-+   B Is_Boolean_Type                    (E Id);
-+
-+   #define Is_By_Copy_Type einfo__is_by_copy_type
-+   B Is_By_Copy_Type                    (E Id);
-+
-+   #define Is_By_Reference_Type einfo__is_by_reference_type
-+   B Is_By_Reference_Type               (E Id);
-+
-+   #define Is_Derived_Type einfo__is_derived_type
-+   B Is_Derived_Type                    (E Id);
-+
-+   #define Is_Dynamic_Scope einfo__is_dynamic_scope
-+   B Is_Dynamic_Scope                   (E Id);
-+
-+   #define Is_Indefinite_Subtype einfo__is_indefinite_subtype
-+   B Is_Indefinite_Subtype              (E Id);
-+
-+   #define Is_Limited_Type einfo__is_limited_type
-+   B Is_Limited_Type                    (E Id);
-+
-+   #define Is_Package einfo__is_package
-+   B Is_Package                         (E Id);
-+
-+   #define Is_Protected_Private einfo__is_protected_private
-+   B Is_Protected_Private               (E Id);
-+
-+   #define Is_Protected_Record_Type einfo__is_protected_record_type
-+   B Is_Protected_Record_Type           (E Id);
-+
-+   #define Is_Return_By_Reference_Type einfo__is_return_by_reference_type
-+   B Is_Return_By_Reference_Type        (E Id);
-+
-+   #define Is_String_Type einfo__is_string_type
-+   B Is_String_Type                     (E Id);
-+
-+   #define Is_Task_Record_Type einfo__is_task_record_type
-+   B Is_Task_Record_Type                (E Id);
-+
-+   #define Next_Component einfo__next_component
-+   E Next_Component                     (E Id);
-+
-+   #define Next_Discriminant einfo__next_discriminant
-+   E Next_Discriminant                  (E Id);
-+
-+   #define Next_Formal einfo__next_formal
-+   E Next_Formal                        (E Id);
-+
-+   #define Next_Formal_With_Extras einfo__next_formal_with_extras
-+   E Next_Formal_With_Extras            (E Id);
-+
-+   INLINE E Next_Literal                       (E Id);
-+
-+   #define Next_Stored_Discriminant einfo__next_stored_discriminant
-+   E Next_Stored_Discriminant           (E Id);
-+
-+   #define Number_Dimensions einfo__number_dimensions
-+   Pos Number_Dimensions                  (E Id);
-+
-+   #define Number_Discriminants einfo__number_discriminants
-+   Pos Number_Discriminants               (E Id);
-+
-+   #define Number_Entries einfo__number_entries
-+   Nat Number_Entries                     (E Id);
-+
-+   #define Number_Formals einfo__number_formals
-+   Pos Number_Formals                     (E Id);
-+
-+   INLINE Formal_Kind Parameter_Mode                     (E Id);
-+
-+   #define Root_Type einfo__root_type
-+   E Root_Type                          (E Id);
-+
-+   #define Scope_Depth_Set einfo__scope_depth_set
-+   B Scope_Depth_Set                    (E Id);
-+
-+   #define Size_Clause einfo__size_clause
-+   N Size_Clause                        (E Id);
-+
-+   #define Tag_Component einfo__tag_component
-+   E Tag_Component                      (E Id);
-+
-+   #define Type_High_Bound einfo__type_high_bound
-+   N Type_High_Bound                    (E Id);
-+
-+   #define Type_Low_Bound einfo__type_low_bound
-+   N Type_Low_Bound                     (E Id);
-+
-+   #define Underlying_Type einfo__underlying_type
-+   E Underlying_Type                    (E Id);
-+
-+   #define Known_Alignment einfo__known_alignment
-+   B Known_Alignment                       (Entity_Id E);
-+
-+   #define Known_Component_Bit_Offset einfo__known_component_bit_offset
-+   B Known_Component_Bit_Offset            (Entity_Id E);
-+
-+   #define Known_Component_Size einfo__known_component_size
-+   B Known_Component_Size                  (Entity_Id E);
-+
-+   #define Known_Esize einfo__known_esize
-+   B Known_Esize                           (Entity_Id E);
-+
-+   #define Known_Normalized_First_Bit einfo__known_normalized_first_bit
-+   B Known_Normalized_First_Bit            (Entity_Id E);
-+
-+   #define Known_Normalized_Position einfo__known_normalized_position
-+   B Known_Normalized_Position             (Entity_Id E);
-+
-+   #define Known_Normalized_Position_Max einfo__known_normalized_position_max
-+   B Known_Normalized_Position_Max         (Entity_Id E);
-+
-+   #define Known_RM_Size einfo__known_rm_size
-+   B Known_RM_Size                         (Entity_Id E);
-+
-+   #define Known_Static_Component_Bit_Offset einfo__known_static_component_bit_offset
-+   B Known_Static_Component_Bit_Offset     (Entity_Id E);
-+
-+   #define Known_Static_Component_Size einfo__known_static_component_size
-+   B Known_Static_Component_Size           (Entity_Id E);
-+
-+   #define Known_Static_Esize einfo__known_static_esize
-+   B Known_Static_Esize                    (Entity_Id E);
-+
-+   #define Known_Static_Normalized_First_Bit einfo__known_static_normalized_first_bit
-+   B Known_Static_Normalized_First_Bit     (Entity_Id E);
-+
-+   #define Known_Static_Normalized_Position einfo__known_static_normalized_position
-+   B Known_Static_Normalized_Position      (Entity_Id E);
-+
-+   #define Known_Static_Normalized_Position_Max einfo__known_static_normalized_position_max
-+   B Known_Static_Normalized_Position_Max  (Entity_Id E);
-+
-+   #define Known_Static_RM_Size einfo__known_static_rm_size
-+   B Known_Static_RM_Size                  (Entity_Id E);
-+
-+   #define Unknown_Alignment einfo__unknown_alignment
-+   B Unknown_Alignment                     (Entity_Id E);
-+
-+   #define Unknown_Component_Bit_Offset einfo__unknown_component_bit_offset
-+   B Unknown_Component_Bit_Offset          (Entity_Id E);
-+
-+   #define Unknown_Component_Size einfo__unknown_component_size
-+   B Unknown_Component_Size                (Entity_Id E);
-+
-+   #define Unknown_Esize einfo__unknown_esize
-+   B Unknown_Esize                         (Entity_Id E);
-+
-+   #define Unknown_Normalized_First_Bit einfo__unknown_normalized_first_bit
-+   B Unknown_Normalized_First_Bit          (Entity_Id E);
-+
-+   #define Unknown_Normalized_Position einfo__unknown_normalized_position
-+   B Unknown_Normalized_Position           (Entity_Id E);
-+
-+   #define Unknown_Normalized_Position_Max einfo__unknown_normalized_position_max
-+   B Unknown_Normalized_Position_Max       (Entity_Id E);
-+
-+   #define Unknown_RM_Size einfo__unknown_rm_size
-+   B Unknown_RM_Size                       (Entity_Id E);
-+
-+
-+   INLINE L Accept_Address (E Id)
-+      { return Elist21 (Id); }
-+
-+   INLINE E Access_Disp_Table (E Id)
-+      { return Node16 (Implementation_Base_Type (Id)); }
-+
-+   INLINE E Actual_Subtype (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE B Address_Taken (E Id)
-+      { return Flag104 (Id); }
-+
-+   INLINE E Alias (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE U Alignment (E Id)
-+      { return Uint14 (Id); }
-+
-+   INLINE E Associated_Final_Chain (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE E Associated_Formal_Package (E Id)
-+      { return Node12 (Id); }
-+
-+   INLINE N Associated_Node_For_Itype (E Id)
-+      { return Node8 (Id); }
-+
-+   INLINE E Associated_Storage_Pool (E Id)
-+      { return Node22 (Root_Type (Id)); }
-+
-+   INLINE N Barrier_Function (E Id)
-+      { return Node12 (Id); }
-+
-+   INLINE N Block_Node (E Id)
-+      { return Node11 (Id); }
-+
-+   INLINE E Body_Entity (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE B Body_Needed_For_SAL (E Id)
-+      { return Flag40 (Id); }
-+
-+   INLINE B C_Pass_By_Copy (E Id)
-+      { return Flag125 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Can_Never_Be_Null (E Id)
-+      { return Flag38 (Id); }
-+
-+   INLINE B Checks_May_Be_Suppressed (E Id)
-+      { return Flag31 (Id); }
-+
-+   INLINE E Class_Wide_Type (E Id)
-+      { return Node9 (Id); }
-+
-+   INLINE E Cloned_Subtype (E Id)
-+      { return Node16 (Id); }
-+
-+   INLINE U Component_Bit_Offset (E Id)
-+      { return Uint11 (Id); }
-+
-+   INLINE N Component_Clause (E Id)
-+      { return Node13 (Id); }
-+
-+   INLINE U Component_Size (E Id)
-+      { return Uint22 (Implementation_Base_Type (Id)); }
-+
-+   INLINE E Component_Type (E Id)
-+      { return Node20 (Implementation_Base_Type (Id)); }
-+
-+   INLINE E Corresponding_Concurrent_Type (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE E Corresponding_Discriminant (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE E Corresponding_Equality (E Id)
-+      { return Node13 (Id); }
-+
-+   INLINE E Corresponding_Record_Type (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE E Corresponding_Remote_Type (E Id)
-+      { return Node22 (Id); }
-+
-+   INLINE N Current_Value (E Id)
-+      { return Node9 (Id); }
-+
-+   INLINE E CR_Discriminant (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE B Debug_Info_Off (E Id)
-+      { return Flag166 (Id); }
-+
-+   INLINE E Debug_Renaming_Link (E Id)
-+      { return Node13 (Id); }
-+
-+   INLINE E Default_Expr_Function (E Id)
-+      { return Node21 (Id); }
-+
-+   INLINE B Default_Expressions_Processed (E Id)
-+      { return Flag108 (Id); }
-+
-+   INLINE N Default_Value (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE B Delay_Cleanups (E Id)
-+      { return Flag114 (Id); }
-+
-+   INLINE B Delay_Subprogram_Descriptors (E Id)
-+      { return Flag50 (Id); }
-+
-+   INLINE R Delta_Value (E Id)
-+      { return Ureal18 (Id); }
-+
-+   INLINE L Dependent_Instances (E Id)
-+      { return Elist8 (Id); }
-+
-+   INLINE B Depends_On_Private (E Id)
-+      { return Flag14 (Id); }
-+
-+   INLINE U Digits_Value (E Id)
-+      { return Uint17 (Id); }
-+
-+   INLINE E Directly_Designated_Type (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE B Discard_Names (E Id)
-+      { return Flag88 (Id); }
-+
-+   INLINE E Discriminal (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE N Discriminal_Link (E Id)
-+      { return Node10 (Id); }
-+
-+   INLINE E Discriminant_Checking_Func (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE L Discriminant_Constraint (E Id)
-+      { return Elist21 (Id); }
-+
-+   INLINE N Discriminant_Default_Value (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE U Discriminant_Number (E Id)
-+      { return Uint15 (Id); }
-+
-+   INLINE U DT_Entry_Count (E Id)
-+      { return Uint15 (Id); }
-+
-+   INLINE U DT_Position (E Id)
-+      { return Uint15 (Id); }
-+
-+   INLINE E DTC_Entity (E Id)
-+      { return Node16 (Id); }
-+
-+   INLINE B Elaborate_All_Desirable (E Id)
-+      { return Flag146 (Id); }
-+
-+   INLINE E Elaboration_Entity (E Id)
-+      { return Node13 (Id); }
-+
-+   INLINE B Elaboration_Entity_Required (E Id)
-+      { return Flag174 (Id); }
-+
-+   INLINE E Enclosing_Scope (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE B Entry_Accepted (E Id)
-+      { return Flag152 (Id); }
-+
-+   INLINE E Entry_Bodies_Array (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE E Entry_Cancel_Parameter (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE E Entry_Component (E Id)
-+      { return Node11 (Id); }
-+
-+   INLINE E Entry_Formal (E Id)
-+      { return Node16 (Id); }
-+
-+   INLINE N Entry_Index_Constant (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE E Entry_Parameters_Type (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE E Enum_Pos_To_Rep (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE Uint Enumeration_Pos (E Id)
-+      { return Uint11 (Id); }
-+
-+   INLINE U Enumeration_Rep (E Id)
-+      { return Uint12 (Id); }
-+
-+   INLINE N Enumeration_Rep_Expr (E Id)
-+      { return Node22 (Id); }
-+
-+   INLINE E Equivalent_Type (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE Uint Esize (E Id)
-+      { return Uint12 (Id); }
-+
-+   INLINE Uint Exception_Code (E Id)
-+      { return Uint22 (Id); }
-+
-+   INLINE E Extra_Accessibility (E Id)
-+      { return Node13 (Id); }
-+
-+   INLINE E Extra_Constrained (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE E Extra_Formal (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE E Finalization_Chain_Entity (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE E First_Entity (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE N First_Index (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE E First_Literal (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE E First_Optional_Parameter (E Id)
-+      { return Node14 (Id); }
-+
-+   INLINE E First_Private_Entity (E Id)
-+      { return Node16 (Id); }
-+
-+   INLINE E First_Rep_Item (E Id)
-+      { return Node6 (Id); }
-+
-+   INLINE N Freeze_Node (E Id)
-+      { return Node7 (Id); }
-+
-+   INLINE B From_With_Type (E Id)
-+      { return Flag159 (Id); }
-+
-+   INLINE E Full_View (E Id)
-+      { return Node11 (Id); }
-+
-+   INLINE B Function_Returns_With_DSP (E Id)
-+      { return Flag169 (Id); }
-+
-+   INLINE E Generic_Homonym (E Id)
-+      { return Node11 (Id); }
-+
-+   INLINE L Generic_Renamings (E Id)
-+      { return Elist23 (Id); }
-+
-+   INLINE S Handler_Records (E Id)
-+      { return List10 (Id); }
-+
-+   INLINE B Has_Aliased_Components (E Id)
-+      { return Flag135 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Alignment_Clause (E Id)
-+      { return Flag46 (Id); }
-+
-+   INLINE B Has_All_Calls_Remote (E Id)
-+      { return Flag79 (Id); }
-+
-+   INLINE B Has_Atomic_Components (E Id)
-+      { return Flag86 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Biased_Representation (E Id)
-+      { return Flag139 (Id); }
-+
-+   INLINE B Has_Completion (E Id)
-+      { return Flag26 (Id); }
-+
-+   INLINE B Has_Completion_In_Body (E Id)
-+      { return Flag71 (Id); }
-+
-+   INLINE B Has_Complex_Representation (E Id)
-+      { return Flag140 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Component_Size_Clause (E Id)
-+      { return Flag68 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Controlled_Component (E Id)
-+      { return Flag43 (Base_Type (Id)); }
-+
-+   INLINE B Has_Contiguous_Rep (E Id)
-+      { return Flag181 (Id); }
-+
-+   INLINE B Has_Controlling_Result (E Id)
-+      { return Flag98 (Id); }
-+
-+   INLINE B Has_Convention_Pragma (E Id)
-+      { return Flag119 (Id); }
-+
-+   INLINE B Has_Delayed_Freeze (E Id)
-+      { return Flag18 (Id); }
-+
-+   INLINE B Has_Discriminants (E Id)
-+      { return Flag5 (Id); }
-+
-+   INLINE B Has_Enumeration_Rep_Clause (E Id)
-+      { return Flag66 (Id); }
-+
-+   INLINE B Has_Exit (E Id)
-+      { return Flag47 (Id); }
-+
-+   INLINE B Has_External_Tag_Rep_Clause (E Id)
-+      { return Flag110 (Id); }
-+
-+   INLINE B Has_Forward_Instantiation (E Id)
-+      { return Flag175 (Id); }
-+
-+   INLINE B Has_Fully_Qualified_Name (E Id)
-+      { return Flag173 (Id); }
-+
-+   INLINE B Has_Gigi_Rep_Item (E Id)
-+      { return Flag82 (Id); }
-+
-+   INLINE B Has_Homonym (E Id)
-+      { return Flag56 (Id); }
-+
-+   INLINE B Has_Machine_Radix_Clause (E Id)
-+      { return Flag83 (Id); }
-+
-+   INLINE B Has_Master_Entity (E Id)
-+      { return Flag21 (Id); }
-+
-+   INLINE B Has_Missing_Return (E Id)
-+      { return Flag142 (Id); }
-+
-+   INLINE B Has_Nested_Block_With_Handler (E Id)
-+      { return Flag101 (Id); }
-+
-+   INLINE B Has_Non_Standard_Rep (E Id)
-+      { return Flag75 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Object_Size_Clause (E Id)
-+      { return Flag172 (Id); }
-+
-+   INLINE B Has_Per_Object_Constraint (E Id)
-+      { return Flag154 (Id); }
-+
-+   INLINE B Has_Pragma_Controlled (E Id)
-+      { return Flag27 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Pragma_Elaborate_Body (E Id)
-+      { return Flag150 (Id); }
-+
-+   INLINE B Has_Pragma_Inline (E Id)
-+      { return Flag157 (Id); }
-+
-+   INLINE B Has_Pragma_Pack (E Id)
-+      { return Flag121 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Pragma_Pure_Function (E Id)
-+      { return Flag179 (Id); }
-+
-+   INLINE B Has_Pragma_Unreferenced (E Id)
-+      { return Flag180 (Id); }
-+
-+   INLINE B Has_Primitive_Operations (E Id)
-+      { return Flag120 (Base_Type (Id)); }
-+
-+   INLINE B Has_Private_Declaration (E Id)
-+      { return Flag155 (Id); }
-+
-+   INLINE B Has_Qualified_Name (E Id)
-+      { return Flag161 (Id); }
-+
-+   INLINE B Has_Record_Rep_Clause (E Id)
-+      { return Flag65 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Recursive_Call (E Id)
-+      { return Flag143 (Id); }
-+
-+   INLINE B Has_Size_Clause (E Id)
-+      { return Flag29 (Id); }
-+
-+   INLINE B Has_Small_Clause (E Id)
-+      { return Flag67 (Id); }
-+
-+   INLINE B Has_Specified_Layout (E Id)
-+      { return Flag100 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Storage_Size_Clause (E Id)
-+      { return Flag23 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Subprogram_Descriptor (E Id)
-+      { return Flag93 (Id); }
-+
-+   INLINE B Has_Task (E Id)
-+      { return Flag30 (Base_Type (Id)); }
-+
-+   INLINE B Has_Unchecked_Union (E Id)
-+      { return Flag123 (Base_Type (Id)); }
-+
-+   INLINE B Has_Unknown_Discriminants (E Id)
-+      { return Flag72 (Id); }
-+
-+   INLINE B Has_Volatile_Components (E Id)
-+      { return Flag87 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Has_Xref_Entry (E Id)
-+      { return Flag182 (Implementation_Base_Type (Id)); }
-+
-+   INLINE E Hiding_Loop_Variable (E Id)
-+      { return Node8 (Id); }
-+
-+   INLINE E Homonym (E Id)
-+      { return Node4 (Id); }
-+
-+   INLINE B In_Package_Body (E Id)
-+      { return Flag48 (Id); }
-+
-+   INLINE B In_Private_Part (E Id)
-+      { return Flag45 (Id); }
-+
-+   INLINE B In_Use (E Id)
-+      { return Flag8 (Id); }
-+
-+   INLINE L Inner_Instances (E Id)
-+      { return Elist23 (Id); }
-+
-+   INLINE N Interface_Name (E Id)
-+      { return Node21 (Id); }
-+
-+   INLINE B Is_Abstract (E Id)
-+      { return Flag19 (Id); }
-+
-+   INLINE B Is_Access_Constant (E Id)
-+      { return Flag69 (Id); }
-+
-+   INLINE B Is_Aliased (E Id)
-+      { return Flag15 (Id); }
-+
-+   INLINE B Is_AST_Entry (E Id)
-+      { return Flag132 (Id); }
-+
-+   INLINE B Is_Asynchronous (E Id)
-+      { return Flag81 (Id); }
-+
-+   INLINE B Is_Atomic (E Id)
-+      { return Flag85 (Id); }
-+
-+   INLINE B Is_Bit_Packed_Array (E Id)
-+      { return Flag122 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Is_Called (E Id)
-+      { return Flag102 (Id); }
-+
-+   INLINE B Is_Character_Type (E Id)
-+      { return Flag63 (Id); }
-+
-+   INLINE B Is_Child_Unit (E Id)
-+      { return Flag73 (Id); }
-+
-+   INLINE B Is_Class_Wide_Equivalent_Type (E Id)
-+      { return Flag35 (Id); }
-+
-+   INLINE B Is_Compilation_Unit (E Id)
-+      { return Flag149 (Id); }
-+
-+   INLINE B Is_Completely_Hidden (E Id)
-+      { return Flag103 (Id); }
-+
-+   INLINE B Is_Constr_Subt_For_U_Nominal (E Id)
-+      { return Flag80 (Id); }
-+
-+   INLINE B Is_Constr_Subt_For_UN_Aliased (E Id)
-+      { return Flag141 (Id); }
-+
-+   INLINE B Is_Constrained (E Id)
-+      { return Flag12 (Id); }
-+
-+   INLINE B Is_Constructor (E Id)
-+      { return Flag76 (Id); }
-+
-+   INLINE B Is_Controlled (E Id)
-+      { return Flag42 (Base_Type (Id)); }
-+
-+   INLINE B Is_Controlling_Formal (E Id)
-+      { return Flag97 (Id); }
-+
-+   INLINE B Is_CPP_Class (E Id)
-+      { return Flag74 (Id); }
-+
-+   INLINE B Is_Discrim_SO_Function (E Id)
-+      { return Flag176 (Id); }
-+
-+   INLINE B Is_Dispatching_Operation (E Id)
-+      { return Flag6 (Id); }
-+
-+   INLINE B Is_Eliminated (E Id)
-+      { return Flag124 (Id); }
-+
-+   INLINE B Is_Entry_Formal (E Id)
-+      { return Flag52 (Id); }
-+
-+   INLINE B Is_Exported (E Id)
-+      { return Flag99 (Id); }
-+
-+   INLINE B Is_First_Subtype (E Id)
-+      { return Flag70 (Id); }
-+
-+   INLINE B Is_For_Access_Subtype (E Id)
-+      { return Flag118 (Id); }
-+
-+   INLINE B Is_Formal_Subprogram (E Id)
-+      { return Flag111 (Id); }
-+
-+   INLINE B Is_Frozen (E Id)
-+      { return Flag4 (Id); }
-+
-+   INLINE B Is_Generic_Actual_Type (E Id)
-+      { return Flag94 (Id); }
-+
-+   INLINE B Is_Generic_Instance (E Id)
-+      { return Flag130 (Id); }
-+
-+   INLINE B Is_Generic_Type (E Id)
-+      { return Flag13 (Id); }
-+
-+   INLINE B Is_Hidden (E Id)
-+      { return Flag57 (Id); }
-+
-+   INLINE B Is_Hidden_Open_Scope (E Id)
-+      { return Flag171 (Id); }
-+
-+   INLINE B Is_Immediately_Visible (E Id)
-+      { return Flag7 (Id); }
-+
-+   INLINE B Is_Imported (E Id)
-+      { return Flag24 (Id); }
-+
-+   INLINE B Is_Inlined (E Id)
-+      { return Flag11 (Id); }
-+
-+   INLINE B Is_Instantiated (E Id)
-+      { return Flag126 (Id); }
-+
-+   INLINE B Is_Internal (E Id)
-+      { return Flag17 (Id); }
-+
-+   INLINE B Is_Interrupt_Handler (E Id)
-+      { return Flag89 (Id); }
-+
-+   INLINE B Is_Intrinsic_Subprogram (E Id)
-+      { return Flag64 (Id); }
-+
-+   INLINE B Is_Itype (E Id)
-+      { return Flag91 (Id); }
-+
-+   INLINE B Is_Known_Non_Null (E Id)
-+      { return Flag37 (Id); }
-+
-+   INLINE B Is_Known_Valid (E Id)
-+      { return Flag170 (Id); }
-+
-+   INLINE B Is_Limited_Composite (E Id)
-+      { return Flag106 (Id); }
-+
-+   INLINE B Is_Limited_Record (E Id)
-+      { return Flag25 (Id); }
-+
-+   INLINE B Is_Machine_Code_Subprogram (E Id)
-+      { return Flag137 (Id); }
-+
-+   INLINE B Is_Non_Static_Subtype (E Id)
-+      { return Flag109 (Id); }
-+
-+   INLINE B Is_Null_Init_Proc (E Id)
-+      { return Flag178 (Id); }
-+
-+   INLINE B Is_Optional_Parameter (E Id)
-+      { return Flag134 (Id); }
-+
-+   INLINE B Is_Overriding_Operation (E Id)
-+      { return Flag39 (Id); }
-+
-+   INLINE B Is_Package_Body_Entity (E Id)
-+      { return Flag160 (Id); }
-+
-+   INLINE B Is_Packed (E Id)
-+      { return Flag51 (Implementation_Base_Type (Id)); }
-+
-+   INLINE B Is_Packed_Array_Type (E Id)
-+      { return Flag138 (Id); }
-+
-+   INLINE B Is_Potentially_Use_Visible (E Id)
-+      { return Flag9 (Id); }
-+
-+   INLINE B Is_Preelaborated (E Id)
-+      { return Flag59 (Id); }
-+
-+   INLINE B Is_Private_Composite (E Id)
-+      { return Flag107 (Id); }
-+
-+   INLINE B Is_Private_Descendant (E Id)
-+      { return Flag53 (Id); }
-+
-+   INLINE B Is_Psected (E Id)
-+      { return Flag153 (Id); }
-+
-+   INLINE B Is_Public (E Id)
-+      { return Flag10 (Id); }
-+
-+   INLINE B Is_Pure (E Id)
-+      { return Flag44 (Id); }
-+
-+   INLINE B Is_Remote_Call_Interface (E Id)
-+      { return Flag62 (Id); }
-+
-+   INLINE B Is_Remote_Types (E Id)
-+      { return Flag61 (Id); }
-+
-+   INLINE B Is_Renaming_Of_Object (E Id)
-+      { return Flag112 (Id); }
-+
-+   INLINE B Is_Shared_Passive (E Id)
-+      { return Flag60 (Id); }
-+
-+   INLINE B Is_Statically_Allocated (E Id)
-+      { return Flag28 (Id); }
-+
-+   INLINE B Is_Tag (E Id)
-+      { return Flag78 (Id); }
-+
-+   INLINE B Is_Tagged_Type (E Id)
-+      { return Flag55 (Id); }
-+
-+   INLINE B Is_Thread_Body (E Id)
-+      { return Flag77 (Id); }
-+
-+   INLINE B Is_True_Constant (E Id)
-+      { return Flag163 (Id); }
-+
-+   INLINE B Is_Unchecked_Union (E Id)
-+      { return Flag117 (Id); }
-+
-+   INLINE B Is_Unsigned_Type (E Id)
-+      { return Flag144 (Id); }
-+
-+   INLINE B Is_Valued_Procedure (E Id)
-+      { return Flag127 (Id); }
-+
-+   INLINE B Is_Visible_Child_Unit (E Id)
-+      { return Flag116 (Id); }
-+
-+   INLINE B Is_VMS_Exception (E Id)
-+      { return Flag133 (Id); }
-+
-+   INLINE B Kill_Elaboration_Checks (E Id)
-+      { return Flag32 (Id); }
-+
-+   INLINE B Kill_Range_Checks (E Id)
-+      { return Flag33 (Id); }
-+
-+   INLINE B Kill_Tag_Checks (E Id)
-+      { return Flag34 (Id); }
-+
-+   INLINE E Last_Entity (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE L Limited_Views (E Id)
-+      { return Elist23 (Id); }
-+
-+   INLINE E Lit_Indexes (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE E Lit_Strings (E Id)
-+      { return Node16 (Id); }
-+
-+   INLINE B Machine_Radix_10 (E Id)
-+      { return Flag84 (Id); }
-+
-+   INLINE E Master_Id (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE B Materialize_Entity (E Id)
-+      { return Flag168 (Id); }
-+
-+   INLINE M Mechanism (E Id)
-+      { return UI_To_Int (Uint8 (Id)); }
-+
-+   INLINE Uint Modulus (E Id)
-+      { return Uint17 (Base_Type (Id)); }
-+
-+   INLINE B Needs_Debug_Info (E Id)
-+      { return Flag147 (Id); }
-+
-+   INLINE B Needs_No_Actuals (E Id)
-+      { return Flag22 (Id); }
-+
-+   INLINE B Never_Set_In_Source (E Id)
-+      { return Flag115 (Id); }
-+
-+   INLINE E Next_Inlined_Subprogram (E Id)
-+      { return Node12 (Id); }
-+
-+   INLINE B No_Pool_Assigned (E Id)
-+      { return Flag131 (Root_Type (Id)); }
-+
-+   INLINE B No_Return (E Id)
-+      { return Flag113 (Id); }
-+
-+   INLINE B Non_Binary_Modulus (E Id)
-+      { return Flag58 (Base_Type (Id)); }
-+
-+   INLINE E Non_Limited_View (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE B Nonzero_Is_True (E Id)
-+      { return Flag162 (Base_Type (Id)); }
-+
-+   INLINE U Normalized_First_Bit (E Id)
-+      { return Uint8 (Id); }
-+
-+   INLINE U Normalized_Position (E Id)
-+      { return Uint14 (Id); }
-+
-+   INLINE U Normalized_Position_Max (E Id)
-+      { return Uint10 (Id); }
-+
-+   INLINE E Object_Ref (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE E Original_Array_Type (E Id)
-+      { return Node21 (Id); }
-+
-+   INLINE E Original_Record_Component (E Id)
-+      { return Node22 (Id); }
-+
-+   INLINE E Packed_Array_Type (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE E Parent_Subtype (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE L Primitive_Operations (E Id)
-+      { return Elist15 (Id); }
-+
-+   INLINE E Prival (E Id)
-+      { return Node17 (Id); }
-+
-+   INLINE L Privals_Chain (E Id)
-+      { return Elist23 (Id); }
-+
-+   INLINE L Private_Dependents (E Id)
-+      { return Elist18 (Id); }
-+
-+   INLINE N Private_View (E Id)
-+      { return Node22 (Id); }
-+
-+   INLINE E Protected_Body_Subprogram (E Id)
-+      { return Node11 (Id); }
-+
-+   INLINE E Protected_Formal (E Id)
-+      { return Node22 (Id); }
-+
-+   INLINE N Protected_Operation (E Id)
-+      { return Node23 (Id); }
-+
-+   INLINE B Reachable (E Id)
-+      { return Flag49 (Id); }
-+
-+   INLINE B Referenced (E Id)
-+      { return Flag156 (Id); }
-+
-+   INLINE B Referenced_As_LHS (E Id)
-+      { return Flag36 (Id); }
-+
-+   INLINE N Referenced_Object (E Id)
-+      { return Node10 (Id); }
-+
-+   INLINE N Register_Exception_Call (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE E Related_Array_Object (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE E Related_Instance (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE N Renamed_Entity (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE N Renamed_Object (E Id)
-+      { return Node18 (Id); }
-+
-+   INLINE U Renaming_Map (E Id)
-+      { return Uint9 (Id); }
-+
-+   INLINE B Return_Present (E Id)
-+      { return Flag54 (Id); }
-+
-+   INLINE B Returns_By_Ref (E Id)
-+      { return Flag90 (Id); }
-+
-+   INLINE B Reverse_Bit_Order (E Id)
-+      { return Flag164 (Base_Type (Id)); }
-+
-+   INLINE U RM_Size (E Id)
-+      { return Uint13 (Id); }
-+
-+   INLINE N Scalar_Range (E Id)
-+      { return Node20 (Id); }
-+
-+   INLINE U Scale_Value (E Id)
-+      { return Uint15 (Id); }
-+
-+   INLINE U Scope_Depth_Value (E Id)
-+      { return Uint22 (Id); }
-+
-+   INLINE B Sec_Stack_Needed_For_Return (E Id)
-+      { return Flag167 (Id); }
-+
-+   INLINE S Shadow_Entities (E Id)
-+      { return List14 (Id); }
-+
-+   INLINE E Shared_Var_Assign_Proc (E Id)
-+      { return Node22 (Id); }
-+
-+   INLINE E Shared_Var_Read_Proc (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE N Size_Check_Code (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE B Size_Depends_On_Discriminant (E Id)
-+      { return Flag177 (Id); }
-+
-+   INLINE B Size_Known_At_Compile_Time (E Id)
-+      { return Flag92 (Id); }
-+
-+   INLINE R Small_Value (E Id)
-+      { return Ureal21 (Id); }
-+
-+   INLINE E Spec_Entity (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE E Storage_Size_Variable (E Id)
-+      { return Node15 (Implementation_Base_Type (Id)); }
-+
-+   INLINE L Stored_Constraint (E Id)
-+      { return Elist23 (Id); }
-+
-+   INLINE B Strict_Alignment (E Id)
-+      { return Flag145 (Implementation_Base_Type (Id)); }
-+
-+   INLINE U String_Literal_Length (E Id)
-+      { return Uint16 (Id); }
-+
-+   INLINE N String_Literal_Low_Bound (E Id)
-+      { return Node15 (Id); }
-+
-+   INLINE B Suppress_Elaboration_Warnings (E Id)
-+      { return Flag148 (Id); }
-+
-+   INLINE B Suppress_Init_Proc (E Id)
-+      { return Flag105 (Base_Type (Id)); }
-+
-+   INLINE B Suppress_Style_Checks (E Id)
-+      { return Flag165 (Id); }
-+
-+   INLINE B Treat_As_Volatile (E Id)
-+      { return Flag41 (Id); }
-+
-+   INLINE E Underlying_Full_View (E Id)
-+      { return Node19 (Id); }
-+
-+   INLINE N Unset_Reference (E Id)
-+      { return Node16 (Id); }
-+
-+   INLINE B Uses_Sec_Stack (E Id)
-+      { return Flag95 (Id); }
-+
-+   INLINE B Vax_Float (E Id)
-+      { return Flag151 (Base_Type (Id)); }
-+
-+   INLINE B Warnings_Off (E Id)
-+      { return Flag96 (Id); }
-+
-+   INLINE B Is_Access_Type                      (E Id)
-+      { return IN (Ekind (Id), Access_Kind); }
-+
-+   INLINE B Is_Array_Type                       (E Id)
-+      { return IN (Ekind (Id), Array_Kind); }
-+
-+   INLINE B Is_Class_Wide_Type                  (E Id)
-+      { return IN (Ekind (Id), Class_Wide_Kind); }
-+
-+   INLINE B Is_Composite_Type                   (E Id)
-+      { return IN (Ekind (Id), Composite_Kind); }
-+
-+   INLINE B Is_Concurrent_Body                  (E Id)
-+      { return IN (Ekind (Id), Concurrent_Body_Kind); }
-+
-+   INLINE B Is_Concurrent_Record_Type           (E Id)
-+      { return Flag20 (Id); }
-+
-+   INLINE B Is_Concurrent_Type                  (E Id)
-+      { return IN (Ekind (Id), Concurrent_Kind); }
-+
-+   INLINE B Is_Decimal_Fixed_Point_Type         (E Id)
-+      { return IN (Ekind (Id), Decimal_Fixed_Point_Kind); }
-+
-+   INLINE B Is_Digits_Type                      (E Id)
-+      { return IN (Ekind (Id), Digits_Kind); }
-+
-+   INLINE B Is_Discrete_Or_Fixed_Point_Type     (E Id)
-+      { return IN (Ekind (Id), Discrete_Or_Fixed_Point_Kind); }
-+
-+   INLINE B Is_Discrete_Type                    (E Id)
-+      { return IN (Ekind (Id), Discrete_Kind); }
-+
-+   INLINE B Is_Elementary_Type                  (E Id)
-+      { return IN (Ekind (Id), Elementary_Kind); }
-+
-+   INLINE B Is_Entry                            (E Id)
-+      { return IN (Ekind (Id), Entry_Kind); }
-+
-+   INLINE B Is_Enumeration_Type                 (E Id)
-+      { return IN (Ekind (Id), Enumeration_Kind); }
-+
-+   INLINE B Is_Fixed_Point_Type                 (E Id)
-+      { return IN (Ekind (Id), Fixed_Point_Kind); }
-+
-+   INLINE B Is_Floating_Point_Type              (E Id)
-+      { return IN (Ekind (Id), Float_Kind); }
-+
-+   INLINE B Is_Formal                           (E Id)
-+      { return IN (Ekind (Id), Formal_Kind); }
-+
-+   INLINE B Is_Generic_Subprogram               (E Id)
-+      { return IN (Ekind (Id), Generic_Subprogram_Kind); }
-+
-+   INLINE B Is_Generic_Unit                     (E Id)
-+      { return IN (Ekind (Id), Generic_Unit_Kind); }
-+
-+   INLINE B Is_Incomplete_Or_Private_Type       (E Id)
-+      { return IN (Ekind (Id), Incomplete_Or_Private_Kind); }
-+
-+   INLINE B Is_Integer_Type                     (E Id)
-+      { return IN (Ekind (Id), Integer_Kind); }
-+
-+   INLINE B Is_Modular_Integer_Type             (E Id)
-+      { return IN (Ekind (Id), Modular_Integer_Kind); }
-+
-+   INLINE B Is_Named_Number                     (E Id)
-+      { return IN (Ekind (Id), Named_Kind); }
-+
-+   INLINE B Is_Numeric_Type                     (E Id)
-+      { return IN (Ekind (Id), Numeric_Kind); }
-+
-+   INLINE B Is_Object                           (E Id)
-+      { return IN (Ekind (Id), Object_Kind); }
-+
-+   INLINE B Is_Ordinary_Fixed_Point_Type        (E Id)
-+      { return IN (Ekind (Id), Ordinary_Fixed_Point_Kind); }
-+
-+   INLINE B Is_Overloadable                     (E Id)
-+      { return IN (Ekind (Id), Overloadable_Kind); }
-+
-+   INLINE B Is_Private_Type                     (E Id)
-+      { return IN (Ekind (Id), Private_Kind); }
-+
-+   INLINE B Is_Protected_Type                   (E Id)
-+      { return IN (Ekind (Id), Protected_Kind); }
-+
-+   INLINE B Is_Real_Type                        (E Id)
-+      { return IN (Ekind (Id), Real_Kind); }
-+
-+   INLINE B Is_Record_Type                      (E Id)
-+      { return IN (Ekind (Id), Record_Kind); }
-+
-+   INLINE B Is_Scalar_Type                      (E Id)
-+      { return IN (Ekind (Id), Scalar_Kind); }
-+
-+   INLINE B Is_Signed_Integer_Type              (E Id)
-+      { return IN (Ekind (Id), Signed_Integer_Kind); }
-+
-+   INLINE B Is_Subprogram                       (E Id)
-+      { return IN (Ekind (Id), Subprogram_Kind); }
-+
-+   INLINE B Is_Task_Type                        (E Id)
-+      { return IN (Ekind (Id), Task_Kind); }
-+
-+   INLINE B Is_Type                             (E Id)
-+      { return IN (Ekind (Id), Type_Kind); }
-+
-+   INLINE N Entry_Index_Type (E Id)
-+      { return Etype (Discrete_Subtype_Definition (Parent (Id))); }
-+
-+   INLINE Node_Id Next_Index (Node_Id Id)
-+      { return Next (Id); }
-+
-+   INLINE E Next_Literal (E Id)
-+      { return Next (Id); }
-+
-+   INLINE Formal_Kind Parameter_Mode (E Id)
-+      { return Ekind (Id); }
-+
-+/* End of einfo.h (C version of Einfo package specification) */
---- gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/nmake.adb.orig       1970-01-01 01:00:00.000000000 +0100
-+++ gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/nmake.adb    2004-06-02 00:52:35.000000000 +0200
-@@ -0,0 +1,2867 @@
-+------------------------------------------------------------------------------
-+--                                                                          --
-+--                         GNAT COMPILER COMPONENTS                         --
-+--                                                                          --
-+--                                N M A K E                                 --
-+--                                                                          --
-+--                                 B o d y                                  --
-+--                                                                          --
-+--          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
-+--                                                                          --
-+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-+-- terms of the  GNU General Public License as published  by the Free Soft- --
-+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
-+-- sion.  GNAT is distributed in the 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 COPYING.  If not, write --
-+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
-+-- MA 02111-1307, USA.                                                      --
-+--                                                                          --
-+-- 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 order checking, since the routines here are
-+--  generated automatically in order.
-+
-+
-+with Atree;  use Atree;
-+with Sinfo;  use Sinfo;
-+with Snames; use Snames;
-+with Stand;  use Stand;
-+
-+package body Nmake is
-+
-+   function Make_Unused_At_Start (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Unused_At_Start, Sloc);
-+   begin
-+      return N;
-+   end Make_Unused_At_Start;
-+
-+   function Make_Unused_At_End (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Unused_At_End, Sloc);
-+   begin
-+      return N;
-+   end Make_Unused_At_End;
-+
-+   function Make_Identifier (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Identifier, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      return N;
-+   end Make_Identifier;
-+
-+   function Make_Integer_Literal (Sloc : Source_Ptr;
-+      Intval                       : Uint)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Integer_Literal, Sloc);
-+   begin
-+      Set_Intval (N, Intval);
-+      return N;
-+   end Make_Integer_Literal;
-+
-+   function Make_Real_Literal (Sloc : Source_Ptr;
-+      Realval                      : Ureal)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Real_Literal, Sloc);
-+   begin
-+      Set_Realval (N, Realval);
-+      return N;
-+   end Make_Real_Literal;
-+
-+   function Make_Character_Literal (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Char_Literal_Value           : Char_Code)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Character_Literal, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      Set_Char_Literal_Value (N, Char_Literal_Value);
-+      return N;
-+   end Make_Character_Literal;
-+
-+   function Make_String_Literal (Sloc : Source_Ptr;
-+      Strval                       : String_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_String_Literal, Sloc);
-+   begin
-+      Set_Strval (N, Strval);
-+      return N;
-+   end Make_String_Literal;
-+
-+   function Make_Pragma (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Pragma_Argument_Associations : List_Id := No_List;
-+      Debug_Statement              : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Pragma, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      Set_Pragma_Argument_Associations
-+        (N, Pragma_Argument_Associations);
-+      Set_Debug_Statement (N, Debug_Statement);
-+      return N;
-+   end Make_Pragma;
-+
-+   function Make_Pragma_Argument_Association (Sloc : Source_Ptr;
-+      Chars                        : Name_Id := No_Name;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Pragma_Argument_Association, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Pragma_Argument_Association;
-+
-+   function Make_Defining_Identifier (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Entity (N_Defining_Identifier, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      return N;
-+   end Make_Defining_Identifier;
-+
-+   function Make_Full_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Type_Definition              : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Full_Type_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Type_Definition (N, Type_Definition);
-+      return N;
-+   end Make_Full_Type_Declaration;
-+
-+   function Make_Subtype_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Subtype_Indication           : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subtype_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Subtype_Indication (N, Subtype_Indication);
-+      return N;
-+   end Make_Subtype_Declaration;
-+
-+   function Make_Subtype_Indication (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Constraint                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subtype_Indication, Sloc);
-+   begin
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Constraint (N, Constraint);
-+      return N;
-+   end Make_Subtype_Indication;
-+
-+   function Make_Object_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Aliased_Present              : Boolean := False;
-+      Constant_Present             : Boolean := False;
-+      Object_Definition            : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Object_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Aliased_Present (N, Aliased_Present);
-+      Set_Constant_Present (N, Constant_Present);
-+      Set_Object_Definition (N, Object_Definition);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Object_Declaration;
-+
-+   function Make_Number_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Number_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Number_Declaration;
-+
-+   function Make_Derived_Type_Definition (Sloc : Source_Ptr;
-+      Abstract_Present             : Boolean := False;
-+      Subtype_Indication           : Node_Id;
-+      Record_Extension_Part        : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Derived_Type_Definition, Sloc);
-+   begin
-+      Set_Abstract_Present (N, Abstract_Present);
-+      Set_Subtype_Indication (N, Subtype_Indication);
-+      Set_Record_Extension_Part (N, Record_Extension_Part);
-+      return N;
-+   end Make_Derived_Type_Definition;
-+
-+   function Make_Range_Constraint (Sloc : Source_Ptr;
-+      Range_Expression             : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Range_Constraint, Sloc);
-+   begin
-+      Set_Range_Expression (N, Range_Expression);
-+      return N;
-+   end Make_Range_Constraint;
-+
-+   function Make_Range (Sloc : Source_Ptr;
-+      Low_Bound                    : Node_Id;
-+      High_Bound                   : Node_Id;
-+      Includes_Infinities          : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Range, Sloc);
-+   begin
-+      Set_Low_Bound (N, Low_Bound);
-+      Set_High_Bound (N, High_Bound);
-+      Set_Includes_Infinities (N, Includes_Infinities);
-+      return N;
-+   end Make_Range;
-+
-+   function Make_Enumeration_Type_Definition (Sloc : Source_Ptr;
-+      Literals                     : List_Id;
-+      End_Label                    : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Enumeration_Type_Definition, Sloc);
-+   begin
-+      Set_Literals (N, Literals);
-+      Set_End_Label (N, End_Label);
-+      return N;
-+   end Make_Enumeration_Type_Definition;
-+
-+   function Make_Defining_Character_Literal (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Entity (N_Defining_Character_Literal, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      return N;
-+   end Make_Defining_Character_Literal;
-+
-+   function Make_Signed_Integer_Type_Definition (Sloc : Source_Ptr;
-+      Low_Bound                    : Node_Id;
-+      High_Bound                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Signed_Integer_Type_Definition, Sloc);
-+   begin
-+      Set_Low_Bound (N, Low_Bound);
-+      Set_High_Bound (N, High_Bound);
-+      return N;
-+   end Make_Signed_Integer_Type_Definition;
-+
-+   function Make_Modular_Type_Definition (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Modular_Type_Definition, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Modular_Type_Definition;
-+
-+   function Make_Floating_Point_Definition (Sloc : Source_Ptr;
-+      Digits_Expression            : Node_Id;
-+      Real_Range_Specification     : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Floating_Point_Definition, Sloc);
-+   begin
-+      Set_Digits_Expression (N, Digits_Expression);
-+      Set_Real_Range_Specification (N, Real_Range_Specification);
-+      return N;
-+   end Make_Floating_Point_Definition;
-+
-+   function Make_Real_Range_Specification (Sloc : Source_Ptr;
-+      Low_Bound                    : Node_Id;
-+      High_Bound                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Real_Range_Specification, Sloc);
-+   begin
-+      Set_Low_Bound (N, Low_Bound);
-+      Set_High_Bound (N, High_Bound);
-+      return N;
-+   end Make_Real_Range_Specification;
-+
-+   function Make_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr;
-+      Delta_Expression             : Node_Id;
-+      Real_Range_Specification     : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Ordinary_Fixed_Point_Definition, Sloc);
-+   begin
-+      Set_Delta_Expression (N, Delta_Expression);
-+      Set_Real_Range_Specification (N, Real_Range_Specification);
-+      return N;
-+   end Make_Ordinary_Fixed_Point_Definition;
-+
-+   function Make_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr;
-+      Delta_Expression             : Node_Id;
-+      Digits_Expression            : Node_Id;
-+      Real_Range_Specification     : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Decimal_Fixed_Point_Definition, Sloc);
-+   begin
-+      Set_Delta_Expression (N, Delta_Expression);
-+      Set_Digits_Expression (N, Digits_Expression);
-+      Set_Real_Range_Specification (N, Real_Range_Specification);
-+      return N;
-+   end Make_Decimal_Fixed_Point_Definition;
-+
-+   function Make_Digits_Constraint (Sloc : Source_Ptr;
-+      Digits_Expression            : Node_Id;
-+      Range_Constraint             : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Digits_Constraint, Sloc);
-+   begin
-+      Set_Digits_Expression (N, Digits_Expression);
-+      Set_Range_Constraint (N, Range_Constraint);
-+      return N;
-+   end Make_Digits_Constraint;
-+
-+   function Make_Unconstrained_Array_Definition (Sloc : Source_Ptr;
-+      Subtype_Marks                : List_Id;
-+      Component_Definition         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Unconstrained_Array_Definition, Sloc);
-+   begin
-+      Set_Subtype_Marks (N, Subtype_Marks);
-+      Set_Component_Definition (N, Component_Definition);
-+      return N;
-+   end Make_Unconstrained_Array_Definition;
-+
-+   function Make_Constrained_Array_Definition (Sloc : Source_Ptr;
-+      Discrete_Subtype_Definitions : List_Id;
-+      Component_Definition         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Constrained_Array_Definition, Sloc);
-+   begin
-+      Set_Discrete_Subtype_Definitions
-+        (N, Discrete_Subtype_Definitions);
-+      Set_Component_Definition (N, Component_Definition);
-+      return N;
-+   end Make_Constrained_Array_Definition;
-+
-+   function Make_Component_Definition (Sloc : Source_Ptr;
-+      Aliased_Present              : Boolean := False;
-+      Subtype_Indication           : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Component_Definition, Sloc);
-+   begin
-+      Set_Aliased_Present (N, Aliased_Present);
-+      Set_Subtype_Indication (N, Subtype_Indication);
-+      return N;
-+   end Make_Component_Definition;
-+
-+   function Make_Discriminant_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Type            : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Discriminant_Specification, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Type (N, Discriminant_Type);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Discriminant_Specification;
-+
-+   function Make_Index_Or_Discriminant_Constraint (Sloc : Source_Ptr;
-+      Constraints                  : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Index_Or_Discriminant_Constraint, Sloc);
-+   begin
-+      Set_Constraints (N, Constraints);
-+      return N;
-+   end Make_Index_Or_Discriminant_Constraint;
-+
-+   function Make_Discriminant_Association (Sloc : Source_Ptr;
-+      Selector_Names               : List_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Discriminant_Association, Sloc);
-+   begin
-+      Set_Selector_Names (N, Selector_Names);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Discriminant_Association;
-+
-+   function Make_Record_Definition (Sloc : Source_Ptr;
-+      End_Label                    : Node_Id := Empty;
-+      Abstract_Present             : Boolean := False;
-+      Tagged_Present               : Boolean := False;
-+      Limited_Present              : Boolean := False;
-+      Component_List               : Node_Id;
-+      Null_Present                 : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Record_Definition, Sloc);
-+   begin
-+      Set_End_Label (N, End_Label);
-+      Set_Abstract_Present (N, Abstract_Present);
-+      Set_Tagged_Present (N, Tagged_Present);
-+      Set_Limited_Present (N, Limited_Present);
-+      Set_Component_List (N, Component_List);
-+      Set_Null_Present (N, Null_Present);
-+      return N;
-+   end Make_Record_Definition;
-+
-+   function Make_Component_List (Sloc : Source_Ptr;
-+      Component_Items              : List_Id;
-+      Variant_Part                 : Node_Id := Empty;
-+      Null_Present                 : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Component_List, Sloc);
-+   begin
-+      Set_Component_Items (N, Component_Items);
-+      Set_Variant_Part (N, Variant_Part);
-+      Set_Null_Present (N, Null_Present);
-+      return N;
-+   end Make_Component_List;
-+
-+   function Make_Component_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Component_Definition         : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Component_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Component_Definition (N, Component_Definition);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Component_Declaration;
-+
-+   function Make_Variant_Part (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Variants                     : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Variant_Part, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Variants (N, Variants);
-+      return N;
-+   end Make_Variant_Part;
-+
-+   function Make_Variant (Sloc : Source_Ptr;
-+      Discrete_Choices             : List_Id;
-+      Component_List               : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Variant, Sloc);
-+   begin
-+      Set_Discrete_Choices (N, Discrete_Choices);
-+      Set_Component_List (N, Component_List);
-+      return N;
-+   end Make_Variant;
-+
-+   function Make_Others_Choice (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Others_Choice, Sloc);
-+   begin
-+      return N;
-+   end Make_Others_Choice;
-+
-+   function Make_Access_To_Object_Definition (Sloc : Source_Ptr;
-+      All_Present                  : Boolean := False;
-+      Subtype_Indication           : Node_Id;
-+      Constant_Present             : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Access_To_Object_Definition, Sloc);
-+   begin
-+      Set_All_Present (N, All_Present);
-+      Set_Subtype_Indication (N, Subtype_Indication);
-+      Set_Constant_Present (N, Constant_Present);
-+      return N;
-+   end Make_Access_To_Object_Definition;
-+
-+   function Make_Access_Function_Definition (Sloc : Source_Ptr;
-+      Protected_Present            : Boolean := False;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Subtype_Mark                 : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Access_Function_Definition, Sloc);
-+   begin
-+      Set_Protected_Present (N, Protected_Present);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      return N;
-+   end Make_Access_Function_Definition;
-+
-+   function Make_Access_Procedure_Definition (Sloc : Source_Ptr;
-+      Protected_Present            : Boolean := False;
-+      Parameter_Specifications     : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Access_Procedure_Definition, Sloc);
-+   begin
-+      Set_Protected_Present (N, Protected_Present);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      return N;
-+   end Make_Access_Procedure_Definition;
-+
-+   function Make_Access_Definition (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Access_Definition, Sloc);
-+   begin
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      return N;
-+   end Make_Access_Definition;
-+
-+   function Make_Incomplete_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Incomplete_Type_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Unknown_Discriminants_Present
-+        (N, Unknown_Discriminants_Present);
-+      return N;
-+   end Make_Incomplete_Type_Declaration;
-+
-+   function Make_Explicit_Dereference (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Explicit_Dereference, Sloc);
-+   begin
-+      Set_Prefix (N, Prefix);
-+      return N;
-+   end Make_Explicit_Dereference;
-+
-+   function Make_Indexed_Component (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Expressions                  : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Indexed_Component, Sloc);
-+   begin
-+      Set_Prefix (N, Prefix);
-+      Set_Expressions (N, Expressions);
-+      return N;
-+   end Make_Indexed_Component;
-+
-+   function Make_Slice (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Discrete_Range               : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Slice, Sloc);
-+   begin
-+      Set_Prefix (N, Prefix);
-+      Set_Discrete_Range (N, Discrete_Range);
-+      return N;
-+   end Make_Slice;
-+
-+   function Make_Selected_Component (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Selector_Name                : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Selected_Component, Sloc);
-+   begin
-+      Set_Prefix (N, Prefix);
-+      Set_Selector_Name (N, Selector_Name);
-+      return N;
-+   end Make_Selected_Component;
-+
-+   function Make_Attribute_Reference (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Attribute_Name               : Name_Id;
-+      Expressions                  : List_Id := No_List;
-+      Must_Be_Byte_Aligned         : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Attribute_Reference, Sloc);
-+   begin
-+      Set_Prefix (N, Prefix);
-+      Set_Attribute_Name (N, Attribute_Name);
-+      Set_Expressions (N, Expressions);
-+      Set_Must_Be_Byte_Aligned (N, Must_Be_Byte_Aligned);
-+      return N;
-+   end Make_Attribute_Reference;
-+
-+   function Make_Aggregate (Sloc : Source_Ptr;
-+      Expressions                  : List_Id := No_List;
-+      Component_Associations       : List_Id := No_List;
-+      Null_Record_Present          : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Aggregate, Sloc);
-+   begin
-+      Set_Expressions (N, Expressions);
-+      Set_Component_Associations (N, Component_Associations);
-+      Set_Null_Record_Present (N, Null_Record_Present);
-+      return N;
-+   end Make_Aggregate;
-+
-+   function Make_Component_Association (Sloc : Source_Ptr;
-+      Choices                      : List_Id;
-+      Expression                   : Node_Id;
-+      Box_Present                  : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Component_Association, Sloc);
-+   begin
-+      Set_Choices (N, Choices);
-+      Set_Expression (N, Expression);
-+      Set_Box_Present (N, Box_Present);
-+      return N;
-+   end Make_Component_Association;
-+
-+   function Make_Extension_Aggregate (Sloc : Source_Ptr;
-+      Ancestor_Part                : Node_Id;
-+      Expressions                  : List_Id := No_List;
-+      Component_Associations       : List_Id := No_List;
-+      Null_Record_Present          : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Extension_Aggregate, Sloc);
-+   begin
-+      Set_Ancestor_Part (N, Ancestor_Part);
-+      Set_Expressions (N, Expressions);
-+      Set_Component_Associations (N, Component_Associations);
-+      Set_Null_Record_Present (N, Null_Record_Present);
-+      return N;
-+   end Make_Extension_Aggregate;
-+
-+   function Make_Null (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Null, Sloc);
-+   begin
-+      return N;
-+   end Make_Null;
-+
-+   function Make_And_Then (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_And_Then, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      return N;
-+   end Make_And_Then;
-+
-+   function Make_Or_Else (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Or_Else, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      return N;
-+   end Make_Or_Else;
-+
-+   function Make_In (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_In, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      return N;
-+   end Make_In;
-+
-+   function Make_Not_In (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Not_In, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      return N;
-+   end Make_Not_In;
-+
-+   function Make_Op_And (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_And, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_And);
-+      Set_Entity (N, Standard_Op_And);
-+      return N;
-+   end Make_Op_And;
-+
-+   function Make_Op_Or (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Or, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Or);
-+      Set_Entity (N, Standard_Op_Or);
-+      return N;
-+   end Make_Op_Or;
-+
-+   function Make_Op_Xor (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Xor, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Xor);
-+      Set_Entity (N, Standard_Op_Xor);
-+      return N;
-+   end Make_Op_Xor;
-+
-+   function Make_Op_Eq (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Eq, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Eq);
-+      Set_Entity (N, Standard_Op_Eq);
-+      return N;
-+   end Make_Op_Eq;
-+
-+   function Make_Op_Ne (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Ne, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Ne);
-+      Set_Entity (N, Standard_Op_Ne);
-+      return N;
-+   end Make_Op_Ne;
-+
-+   function Make_Op_Lt (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Lt, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Lt);
-+      Set_Entity (N, Standard_Op_Lt);
-+      return N;
-+   end Make_Op_Lt;
-+
-+   function Make_Op_Le (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Le, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Le);
-+      Set_Entity (N, Standard_Op_Le);
-+      return N;
-+   end Make_Op_Le;
-+
-+   function Make_Op_Gt (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Gt, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Gt);
-+      Set_Entity (N, Standard_Op_Gt);
-+      return N;
-+   end Make_Op_Gt;
-+
-+   function Make_Op_Ge (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Ge, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Ge);
-+      Set_Entity (N, Standard_Op_Ge);
-+      return N;
-+   end Make_Op_Ge;
-+
-+   function Make_Op_Add (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Add, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Add);
-+      Set_Entity (N, Standard_Op_Add);
-+      return N;
-+   end Make_Op_Add;
-+
-+   function Make_Op_Subtract (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Subtract, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Subtract);
-+      Set_Entity (N, Standard_Op_Subtract);
-+      return N;
-+   end Make_Op_Subtract;
-+
-+   function Make_Op_Concat (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Concat, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Concat);
-+      Set_Entity (N, Standard_Op_Concat);
-+      return N;
-+   end Make_Op_Concat;
-+
-+   function Make_Op_Multiply (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Multiply, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Multiply);
-+      Set_Entity (N, Standard_Op_Multiply);
-+      return N;
-+   end Make_Op_Multiply;
-+
-+   function Make_Op_Divide (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Divide, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Divide);
-+      Set_Entity (N, Standard_Op_Divide);
-+      return N;
-+   end Make_Op_Divide;
-+
-+   function Make_Op_Mod (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Mod, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Mod);
-+      Set_Entity (N, Standard_Op_Mod);
-+      return N;
-+   end Make_Op_Mod;
-+
-+   function Make_Op_Rem (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Rem, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Rem);
-+      Set_Entity (N, Standard_Op_Rem);
-+      return N;
-+   end Make_Op_Rem;
-+
-+   function Make_Op_Expon (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Expon, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Expon);
-+      Set_Entity (N, Standard_Op_Expon);
-+      return N;
-+   end Make_Op_Expon;
-+
-+   function Make_Op_Plus (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Plus, Sloc);
-+   begin
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Add);
-+      Set_Entity (N, Standard_Op_Plus);
-+      return N;
-+   end Make_Op_Plus;
-+
-+   function Make_Op_Minus (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Minus, Sloc);
-+   begin
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Subtract);
-+      Set_Entity (N, Standard_Op_Minus);
-+      return N;
-+   end Make_Op_Minus;
-+
-+   function Make_Op_Abs (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Abs, Sloc);
-+   begin
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Abs);
-+      Set_Entity (N, Standard_Op_Abs);
-+      return N;
-+   end Make_Op_Abs;
-+
-+   function Make_Op_Not (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Not, Sloc);
-+   begin
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Op_Not);
-+      Set_Entity (N, Standard_Op_Not);
-+      return N;
-+   end Make_Op_Not;
-+
-+   function Make_Type_Conversion (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Type_Conversion, Sloc);
-+   begin
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Type_Conversion;
-+
-+   function Make_Qualified_Expression (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Qualified_Expression, Sloc);
-+   begin
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Qualified_Expression;
-+
-+   function Make_Allocator (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Allocator, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Allocator;
-+
-+   function Make_Null_Statement (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Null_Statement, Sloc);
-+   begin
-+      return N;
-+   end Make_Null_Statement;
-+
-+   function Make_Label (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Label, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      return N;
-+   end Make_Label;
-+
-+   function Make_Assignment_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Assignment_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Assignment_Statement;
-+
-+   function Make_If_Statement (Sloc : Source_Ptr;
-+      Condition                    : Node_Id;
-+      Then_Statements              : List_Id;
-+      Elsif_Parts                  : List_Id := No_List;
-+      Else_Statements              : List_Id := No_List;
-+      End_Span                     : Uint := No_Uint)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_If_Statement, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Then_Statements (N, Then_Statements);
-+      Set_Elsif_Parts (N, Elsif_Parts);
-+      Set_Else_Statements (N, Else_Statements);
-+      Set_End_Span (N, End_Span);
-+      return N;
-+   end Make_If_Statement;
-+
-+   function Make_Elsif_Part (Sloc : Source_Ptr;
-+      Condition                    : Node_Id;
-+      Then_Statements              : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Elsif_Part, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Then_Statements (N, Then_Statements);
-+      return N;
-+   end Make_Elsif_Part;
-+
-+   function Make_Case_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id;
-+      Alternatives                 : List_Id;
-+      End_Span                     : Uint := No_Uint)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Case_Statement, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      Set_Alternatives (N, Alternatives);
-+      Set_End_Span (N, End_Span);
-+      return N;
-+   end Make_Case_Statement;
-+
-+   function Make_Case_Statement_Alternative (Sloc : Source_Ptr;
-+      Discrete_Choices             : List_Id;
-+      Statements                   : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Case_Statement_Alternative, Sloc);
-+   begin
-+      Set_Discrete_Choices (N, Discrete_Choices);
-+      Set_Statements (N, Statements);
-+      return N;
-+   end Make_Case_Statement_Alternative;
-+
-+   function Make_Loop_Statement (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id := Empty;
-+      Iteration_Scheme             : Node_Id := Empty;
-+      Statements                   : List_Id;
-+      End_Label                    : Node_Id;
-+      Has_Created_Identifier       : Boolean := False;
-+      Is_Null_Loop                 : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Loop_Statement, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      Set_Iteration_Scheme (N, Iteration_Scheme);
-+      Set_Statements (N, Statements);
-+      Set_End_Label (N, End_Label);
-+      Set_Has_Created_Identifier (N, Has_Created_Identifier);
-+      Set_Is_Null_Loop (N, Is_Null_Loop);
-+      return N;
-+   end Make_Loop_Statement;
-+
-+   function Make_Iteration_Scheme (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Loop_Parameter_Specification : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Iteration_Scheme, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Loop_Parameter_Specification
-+        (N, Loop_Parameter_Specification);
-+      return N;
-+   end Make_Iteration_Scheme;
-+
-+   function Make_Loop_Parameter_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Reverse_Present              : Boolean := False;
-+      Discrete_Subtype_Definition  : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Loop_Parameter_Specification, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Reverse_Present (N, Reverse_Present);
-+      Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
-+      return N;
-+   end Make_Loop_Parameter_Specification;
-+
-+   function Make_Block_Statement (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id := Empty;
-+      Declarations                 : List_Id := No_List;
-+      Handled_Statement_Sequence   : Node_Id;
-+      Has_Created_Identifier       : Boolean := False;
-+      Is_Task_Allocation_Block     : Boolean := False;
-+      Is_Asynchronous_Call_Block   : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Block_Statement, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      Set_Declarations (N, Declarations);
-+      Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
-+      Set_Has_Created_Identifier (N, Has_Created_Identifier);
-+      Set_Is_Task_Allocation_Block (N, Is_Task_Allocation_Block);
-+      Set_Is_Asynchronous_Call_Block (N, Is_Asynchronous_Call_Block);
-+      return N;
-+   end Make_Block_Statement;
-+
-+   function Make_Exit_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id := Empty;
-+      Condition                    : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Exit_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Condition (N, Condition);
-+      return N;
-+   end Make_Exit_Statement;
-+
-+   function Make_Goto_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Goto_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Goto_Statement;
-+
-+   function Make_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subprogram_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      return N;
-+   end Make_Subprogram_Declaration;
-+
-+   function Make_Abstract_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Abstract_Subprogram_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      return N;
-+   end Make_Abstract_Subprogram_Declaration;
-+
-+   function Make_Function_Specification (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Subtype_Mark                 : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Function_Specification, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      return N;
-+   end Make_Function_Specification;
-+
-+   function Make_Procedure_Specification (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Parameter_Specifications     : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Procedure_Specification, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      return N;
-+   end Make_Procedure_Specification;
-+
-+   function Make_Designator (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Identifier                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Designator, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Identifier (N, Identifier);
-+      return N;
-+   end Make_Designator;
-+
-+   function Make_Defining_Program_Unit_Name (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Defining_Program_Unit_Name, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      return N;
-+   end Make_Defining_Program_Unit_Name;
-+
-+   function Make_Operator_Symbol (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Strval                       : String_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Operator_Symbol, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      Set_Strval (N, Strval);
-+      return N;
-+   end Make_Operator_Symbol;
-+
-+   function Make_Defining_Operator_Symbol (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Entity (N_Defining_Operator_Symbol, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      return N;
-+   end Make_Defining_Operator_Symbol;
-+
-+   function Make_Parameter_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      In_Present                   : Boolean := False;
-+      Out_Present                  : Boolean := False;
-+      Parameter_Type               : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Parameter_Specification, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_In_Present (N, In_Present);
-+      Set_Out_Present (N, Out_Present);
-+      Set_Parameter_Type (N, Parameter_Type);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Parameter_Specification;
-+
-+   function Make_Subprogram_Body (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id;
-+      Bad_Is_Detected              : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subprogram_Body, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      Set_Declarations (N, Declarations);
-+      Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
-+      Set_Bad_Is_Detected (N, Bad_Is_Detected);
-+      return N;
-+   end Make_Subprogram_Body;
-+
-+   function Make_Procedure_Call_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Parameter_Associations       : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Procedure_Call_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Parameter_Associations (N, Parameter_Associations);
-+      return N;
-+   end Make_Procedure_Call_Statement;
-+
-+   function Make_Function_Call (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Parameter_Associations       : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Function_Call, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Parameter_Associations (N, Parameter_Associations);
-+      return N;
-+   end Make_Function_Call;
-+
-+   function Make_Parameter_Association (Sloc : Source_Ptr;
-+      Selector_Name                : Node_Id;
-+      Explicit_Actual_Parameter    : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Parameter_Association, Sloc);
-+   begin
-+      Set_Selector_Name (N, Selector_Name);
-+      Set_Explicit_Actual_Parameter (N, Explicit_Actual_Parameter);
-+      return N;
-+   end Make_Parameter_Association;
-+
-+   function Make_Return_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Return_Statement, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Return_Statement;
-+
-+   function Make_Package_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Package_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      return N;
-+   end Make_Package_Declaration;
-+
-+   function Make_Package_Specification (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Visible_Declarations         : List_Id;
-+      Private_Declarations         : List_Id := No_List;
-+      End_Label                    : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Package_Specification, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Visible_Declarations (N, Visible_Declarations);
-+      Set_Private_Declarations (N, Private_Declarations);
-+      Set_End_Label (N, End_Label);
-+      return N;
-+   end Make_Package_Specification;
-+
-+   function Make_Package_Body (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Package_Body, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Declarations (N, Declarations);
-+      Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
-+      return N;
-+   end Make_Package_Body;
-+
-+   function Make_Private_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False;
-+      Abstract_Present             : Boolean := False;
-+      Tagged_Present               : Boolean := False;
-+      Limited_Present              : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Private_Type_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Unknown_Discriminants_Present
-+        (N, Unknown_Discriminants_Present);
-+      Set_Abstract_Present (N, Abstract_Present);
-+      Set_Tagged_Present (N, Tagged_Present);
-+      Set_Limited_Present (N, Limited_Present);
-+      return N;
-+   end Make_Private_Type_Declaration;
-+
-+   function Make_Private_Extension_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False;
-+      Abstract_Present             : Boolean := False;
-+      Subtype_Indication           : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Private_Extension_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Unknown_Discriminants_Present
-+        (N, Unknown_Discriminants_Present);
-+      Set_Abstract_Present (N, Abstract_Present);
-+      Set_Subtype_Indication (N, Subtype_Indication);
-+      return N;
-+   end Make_Private_Extension_Declaration;
-+
-+   function Make_Use_Package_Clause (Sloc : Source_Ptr;
-+      Names                        : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Use_Package_Clause, Sloc);
-+   begin
-+      Set_Names (N, Names);
-+      return N;
-+   end Make_Use_Package_Clause;
-+
-+   function Make_Use_Type_Clause (Sloc : Source_Ptr;
-+      Subtype_Marks                : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Use_Type_Clause, Sloc);
-+   begin
-+      Set_Subtype_Marks (N, Subtype_Marks);
-+      return N;
-+   end Make_Use_Type_Clause;
-+
-+   function Make_Object_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Subtype_Mark                 : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Object_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Object_Renaming_Declaration;
-+
-+   function Make_Exception_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Exception_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Exception_Renaming_Declaration;
-+
-+   function Make_Package_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Package_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Package_Renaming_Declaration;
-+
-+   function Make_Subprogram_Renaming_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subprogram_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Subprogram_Renaming_Declaration;
-+
-+   function Make_Generic_Package_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Generic_Package_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Generic_Package_Renaming_Declaration;
-+
-+   function Make_Generic_Procedure_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Generic_Procedure_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Generic_Procedure_Renaming_Declaration;
-+
-+   function Make_Generic_Function_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Generic_Function_Renaming_Declaration, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Generic_Function_Renaming_Declaration;
-+
-+   function Make_Task_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Task_Definition              : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Task_Type_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Task_Definition (N, Task_Definition);
-+      return N;
-+   end Make_Task_Type_Declaration;
-+
-+   function Make_Single_Task_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Task_Definition              : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Single_Task_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Task_Definition (N, Task_Definition);
-+      return N;
-+   end Make_Single_Task_Declaration;
-+
-+   function Make_Task_Definition (Sloc : Source_Ptr;
-+      Visible_Declarations         : List_Id;
-+      Private_Declarations         : List_Id := No_List;
-+      End_Label                    : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Task_Definition, Sloc);
-+   begin
-+      Set_Visible_Declarations (N, Visible_Declarations);
-+      Set_Private_Declarations (N, Private_Declarations);
-+      Set_End_Label (N, End_Label);
-+      return N;
-+   end Make_Task_Definition;
-+
-+   function Make_Task_Body (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Task_Body, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Declarations (N, Declarations);
-+      Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
-+      return N;
-+   end Make_Task_Body;
-+
-+   function Make_Protected_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Protected_Definition         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Protected_Type_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Protected_Definition (N, Protected_Definition);
-+      return N;
-+   end Make_Protected_Type_Declaration;
-+
-+   function Make_Single_Protected_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Protected_Definition         : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Single_Protected_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Protected_Definition (N, Protected_Definition);
-+      return N;
-+   end Make_Single_Protected_Declaration;
-+
-+   function Make_Protected_Definition (Sloc : Source_Ptr;
-+      Visible_Declarations         : List_Id;
-+      Private_Declarations         : List_Id := No_List;
-+      End_Label                    : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Protected_Definition, Sloc);
-+   begin
-+      Set_Visible_Declarations (N, Visible_Declarations);
-+      Set_Private_Declarations (N, Private_Declarations);
-+      Set_End_Label (N, End_Label);
-+      return N;
-+   end Make_Protected_Definition;
-+
-+   function Make_Protected_Body (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Declarations                 : List_Id;
-+      End_Label                    : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Protected_Body, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Declarations (N, Declarations);
-+      Set_End_Label (N, End_Label);
-+      return N;
-+   end Make_Protected_Body;
-+
-+   function Make_Entry_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discrete_Subtype_Definition  : Node_Id := Empty;
-+      Parameter_Specifications     : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Entry_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      return N;
-+   end Make_Entry_Declaration;
-+
-+   function Make_Accept_Statement (Sloc : Source_Ptr;
-+      Entry_Direct_Name            : Node_Id;
-+      Entry_Index                  : Node_Id := Empty;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Handled_Statement_Sequence   : Node_Id;
-+      Declarations                 : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Accept_Statement, Sloc);
-+   begin
-+      Set_Entry_Direct_Name (N, Entry_Direct_Name);
-+      Set_Entry_Index (N, Entry_Index);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
-+      Set_Declarations (N, Declarations);
-+      return N;
-+   end Make_Accept_Statement;
-+
-+   function Make_Entry_Body (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Entry_Body_Formal_Part       : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Entry_Body, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Entry_Body_Formal_Part (N, Entry_Body_Formal_Part);
-+      Set_Declarations (N, Declarations);
-+      Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
-+      return N;
-+   end Make_Entry_Body;
-+
-+   function Make_Entry_Body_Formal_Part (Sloc : Source_Ptr;
-+      Entry_Index_Specification    : Node_Id := Empty;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Condition                    : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Entry_Body_Formal_Part, Sloc);
-+   begin
-+      Set_Entry_Index_Specification (N, Entry_Index_Specification);
-+      Set_Parameter_Specifications (N, Parameter_Specifications);
-+      Set_Condition (N, Condition);
-+      return N;
-+   end Make_Entry_Body_Formal_Part;
-+
-+   function Make_Entry_Index_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discrete_Subtype_Definition  : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Entry_Index_Specification, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
-+      return N;
-+   end Make_Entry_Index_Specification;
-+
-+   function Make_Entry_Call_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Parameter_Associations       : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Entry_Call_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Parameter_Associations (N, Parameter_Associations);
-+      return N;
-+   end Make_Entry_Call_Statement;
-+
-+   function Make_Requeue_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Abort_Present                : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Requeue_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Abort_Present (N, Abort_Present);
-+      return N;
-+   end Make_Requeue_Statement;
-+
-+   function Make_Delay_Until_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Delay_Until_Statement, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Delay_Until_Statement;
-+
-+   function Make_Delay_Relative_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Delay_Relative_Statement, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Delay_Relative_Statement;
-+
-+   function Make_Selective_Accept (Sloc : Source_Ptr;
-+      Select_Alternatives          : List_Id;
-+      Else_Statements              : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Selective_Accept, Sloc);
-+   begin
-+      Set_Select_Alternatives (N, Select_Alternatives);
-+      Set_Else_Statements (N, Else_Statements);
-+      return N;
-+   end Make_Selective_Accept;
-+
-+   function Make_Accept_Alternative (Sloc : Source_Ptr;
-+      Accept_Statement             : Node_Id;
-+      Condition                    : Node_Id := Empty;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Accept_Alternative, Sloc);
-+   begin
-+      Set_Accept_Statement (N, Accept_Statement);
-+      Set_Condition (N, Condition);
-+      Set_Statements (N, Statements);
-+      Set_Pragmas_Before (N, Pragmas_Before);
-+      return N;
-+   end Make_Accept_Alternative;
-+
-+   function Make_Delay_Alternative (Sloc : Source_Ptr;
-+      Delay_Statement              : Node_Id;
-+      Condition                    : Node_Id := Empty;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Delay_Alternative, Sloc);
-+   begin
-+      Set_Delay_Statement (N, Delay_Statement);
-+      Set_Condition (N, Condition);
-+      Set_Statements (N, Statements);
-+      Set_Pragmas_Before (N, Pragmas_Before);
-+      return N;
-+   end Make_Delay_Alternative;
-+
-+   function Make_Terminate_Alternative (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Pragmas_Before               : List_Id := No_List;
-+      Pragmas_After                : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Terminate_Alternative, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Pragmas_Before (N, Pragmas_Before);
-+      Set_Pragmas_After (N, Pragmas_After);
-+      return N;
-+   end Make_Terminate_Alternative;
-+
-+   function Make_Timed_Entry_Call (Sloc : Source_Ptr;
-+      Entry_Call_Alternative       : Node_Id;
-+      Delay_Alternative            : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Timed_Entry_Call, Sloc);
-+   begin
-+      Set_Entry_Call_Alternative (N, Entry_Call_Alternative);
-+      Set_Delay_Alternative (N, Delay_Alternative);
-+      return N;
-+   end Make_Timed_Entry_Call;
-+
-+   function Make_Entry_Call_Alternative (Sloc : Source_Ptr;
-+      Entry_Call_Statement         : Node_Id;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Entry_Call_Alternative, Sloc);
-+   begin
-+      Set_Entry_Call_Statement (N, Entry_Call_Statement);
-+      Set_Statements (N, Statements);
-+      Set_Pragmas_Before (N, Pragmas_Before);
-+      return N;
-+   end Make_Entry_Call_Alternative;
-+
-+   function Make_Conditional_Entry_Call (Sloc : Source_Ptr;
-+      Entry_Call_Alternative       : Node_Id;
-+      Else_Statements              : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Conditional_Entry_Call, Sloc);
-+   begin
-+      Set_Entry_Call_Alternative (N, Entry_Call_Alternative);
-+      Set_Else_Statements (N, Else_Statements);
-+      return N;
-+   end Make_Conditional_Entry_Call;
-+
-+   function Make_Asynchronous_Select (Sloc : Source_Ptr;
-+      Triggering_Alternative       : Node_Id;
-+      Abortable_Part               : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Asynchronous_Select, Sloc);
-+   begin
-+      Set_Triggering_Alternative (N, Triggering_Alternative);
-+      Set_Abortable_Part (N, Abortable_Part);
-+      return N;
-+   end Make_Asynchronous_Select;
-+
-+   function Make_Triggering_Alternative (Sloc : Source_Ptr;
-+      Triggering_Statement         : Node_Id;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Triggering_Alternative, Sloc);
-+   begin
-+      Set_Triggering_Statement (N, Triggering_Statement);
-+      Set_Statements (N, Statements);
-+      Set_Pragmas_Before (N, Pragmas_Before);
-+      return N;
-+   end Make_Triggering_Alternative;
-+
-+   function Make_Abortable_Part (Sloc : Source_Ptr;
-+      Statements                   : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Abortable_Part, Sloc);
-+   begin
-+      Set_Statements (N, Statements);
-+      return N;
-+   end Make_Abortable_Part;
-+
-+   function Make_Abort_Statement (Sloc : Source_Ptr;
-+      Names                        : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Abort_Statement, Sloc);
-+   begin
-+      Set_Names (N, Names);
-+      return N;
-+   end Make_Abort_Statement;
-+
-+   function Make_Compilation_Unit (Sloc : Source_Ptr;
-+      Context_Items                : List_Id;
-+      Private_Present              : Boolean := False;
-+      Unit                         : Node_Id;
-+      Aux_Decls_Node               : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Compilation_Unit, Sloc);
-+   begin
-+      Set_Context_Items (N, Context_Items);
-+      Set_Private_Present (N, Private_Present);
-+      Set_Unit (N, Unit);
-+      Set_Aux_Decls_Node (N, Aux_Decls_Node);
-+      return N;
-+   end Make_Compilation_Unit;
-+
-+   function Make_Compilation_Unit_Aux (Sloc : Source_Ptr;
-+      Declarations                 : List_Id := No_List;
-+      Actions                      : List_Id := No_List;
-+      Pragmas_After                : List_Id := No_List;
-+      Config_Pragmas               : List_Id := Empty_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Compilation_Unit_Aux, Sloc);
-+   begin
-+      Set_Declarations (N, Declarations);
-+      Set_Actions (N, Actions);
-+      Set_Pragmas_After (N, Pragmas_After);
-+      Set_Config_Pragmas (N, Config_Pragmas);
-+      return N;
-+   end Make_Compilation_Unit_Aux;
-+
-+   function Make_With_Clause (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      First_Name                   : Boolean := True;
-+      Last_Name                    : Boolean := True;
-+      Limited_Present              : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_With_Clause, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_First_Name (N, First_Name);
-+      Set_Last_Name (N, Last_Name);
-+      Set_Limited_Present (N, Limited_Present);
-+      return N;
-+   end Make_With_Clause;
-+
-+   function Make_With_Type_Clause (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Tagged_Present               : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_With_Type_Clause, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Tagged_Present (N, Tagged_Present);
-+      return N;
-+   end Make_With_Type_Clause;
-+
-+   function Make_Subprogram_Body_Stub (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subprogram_Body_Stub, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      return N;
-+   end Make_Subprogram_Body_Stub;
-+
-+   function Make_Package_Body_Stub (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Package_Body_Stub, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      return N;
-+   end Make_Package_Body_Stub;
-+
-+   function Make_Task_Body_Stub (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Task_Body_Stub, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      return N;
-+   end Make_Task_Body_Stub;
-+
-+   function Make_Protected_Body_Stub (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Protected_Body_Stub, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      return N;
-+   end Make_Protected_Body_Stub;
-+
-+   function Make_Subunit (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Proper_Body                  : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subunit, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Proper_Body (N, Proper_Body);
-+      return N;
-+   end Make_Subunit;
-+
-+   function Make_Exception_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Exception_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      return N;
-+   end Make_Exception_Declaration;
-+
-+   function Make_Handled_Sequence_Of_Statements (Sloc : Source_Ptr;
-+      Statements                   : List_Id;
-+      End_Label                    : Node_Id := Empty;
-+      Exception_Handlers           : List_Id := No_List;
-+      At_End_Proc                  : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Handled_Sequence_Of_Statements, Sloc);
-+   begin
-+      Set_Statements (N, Statements);
-+      Set_End_Label (N, End_Label);
-+      Set_Exception_Handlers (N, Exception_Handlers);
-+      Set_At_End_Proc (N, At_End_Proc);
-+      return N;
-+   end Make_Handled_Sequence_Of_Statements;
-+
-+   function Make_Exception_Handler (Sloc : Source_Ptr;
-+      Choice_Parameter             : Node_Id := Empty;
-+      Exception_Choices            : List_Id;
-+      Statements                   : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Exception_Handler, Sloc);
-+   begin
-+      Set_Choice_Parameter (N, Choice_Parameter);
-+      Set_Exception_Choices (N, Exception_Choices);
-+      Set_Statements (N, Statements);
-+      return N;
-+   end Make_Exception_Handler;
-+
-+   function Make_Raise_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Raise_Statement, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      return N;
-+   end Make_Raise_Statement;
-+
-+   function Make_Generic_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Generic_Formal_Declarations  : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Generic_Subprogram_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      Set_Generic_Formal_Declarations (N, Generic_Formal_Declarations);
-+      return N;
-+   end Make_Generic_Subprogram_Declaration;
-+
-+   function Make_Generic_Package_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Generic_Formal_Declarations  : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Generic_Package_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      Set_Generic_Formal_Declarations (N, Generic_Formal_Declarations);
-+      return N;
-+   end Make_Generic_Package_Declaration;
-+
-+   function Make_Package_Instantiation (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Package_Instantiation, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      Set_Generic_Associations (N, Generic_Associations);
-+      return N;
-+   end Make_Package_Instantiation;
-+
-+   function Make_Procedure_Instantiation (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Procedure_Instantiation, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      Set_Generic_Associations (N, Generic_Associations);
-+      return N;
-+   end Make_Procedure_Instantiation;
-+
-+   function Make_Function_Instantiation (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Function_Instantiation, Sloc);
-+   begin
-+      Set_Defining_Unit_Name (N, Defining_Unit_Name);
-+      Set_Name (N, Name);
-+      Set_Generic_Associations (N, Generic_Associations);
-+      return N;
-+   end Make_Function_Instantiation;
-+
-+   function Make_Generic_Association (Sloc : Source_Ptr;
-+      Selector_Name                : Node_Id := Empty;
-+      Explicit_Generic_Actual_Parameter : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Generic_Association, Sloc);
-+   begin
-+      Set_Selector_Name (N, Selector_Name);
-+      Set_Explicit_Generic_Actual_Parameter
-+        (N, Explicit_Generic_Actual_Parameter);
-+      return N;
-+   end Make_Generic_Association;
-+
-+   function Make_Formal_Object_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      In_Present                   : Boolean := False;
-+      Out_Present                  : Boolean := False;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Object_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_In_Present (N, In_Present);
-+      Set_Out_Present (N, Out_Present);
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Formal_Object_Declaration;
-+
-+   function Make_Formal_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Formal_Type_Definition       : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Type_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Formal_Type_Definition (N, Formal_Type_Definition);
-+      Set_Discriminant_Specifications (N, Discriminant_Specifications);
-+      Set_Unknown_Discriminants_Present
-+        (N, Unknown_Discriminants_Present);
-+      return N;
-+   end Make_Formal_Type_Declaration;
-+
-+   function Make_Formal_Private_Type_Definition (Sloc : Source_Ptr;
-+      Abstract_Present             : Boolean := False;
-+      Tagged_Present               : Boolean := False;
-+      Limited_Present              : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Private_Type_Definition, Sloc);
-+   begin
-+      Set_Abstract_Present (N, Abstract_Present);
-+      Set_Tagged_Present (N, Tagged_Present);
-+      Set_Limited_Present (N, Limited_Present);
-+      return N;
-+   end Make_Formal_Private_Type_Definition;
-+
-+   function Make_Formal_Derived_Type_Definition (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Private_Present              : Boolean := False;
-+      Abstract_Present             : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Derived_Type_Definition, Sloc);
-+   begin
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Private_Present (N, Private_Present);
-+      Set_Abstract_Present (N, Abstract_Present);
-+      return N;
-+   end Make_Formal_Derived_Type_Definition;
-+
-+   function Make_Formal_Discrete_Type_Definition (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Discrete_Type_Definition, Sloc);
-+   begin
-+      return N;
-+   end Make_Formal_Discrete_Type_Definition;
-+
-+   function Make_Formal_Signed_Integer_Type_Definition (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Signed_Integer_Type_Definition, Sloc);
-+   begin
-+      return N;
-+   end Make_Formal_Signed_Integer_Type_Definition;
-+
-+   function Make_Formal_Modular_Type_Definition (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Modular_Type_Definition, Sloc);
-+   begin
-+      return N;
-+   end Make_Formal_Modular_Type_Definition;
-+
-+   function Make_Formal_Floating_Point_Definition (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Floating_Point_Definition, Sloc);
-+   begin
-+      return N;
-+   end Make_Formal_Floating_Point_Definition;
-+
-+   function Make_Formal_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Ordinary_Fixed_Point_Definition, Sloc);
-+   begin
-+      return N;
-+   end Make_Formal_Ordinary_Fixed_Point_Definition;
-+
-+   function Make_Formal_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Decimal_Fixed_Point_Definition, Sloc);
-+   begin
-+      return N;
-+   end Make_Formal_Decimal_Fixed_Point_Definition;
-+
-+   function Make_Formal_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Default_Name                 : Node_Id := Empty;
-+      Box_Present                  : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Subprogram_Declaration, Sloc);
-+   begin
-+      Set_Specification (N, Specification);
-+      Set_Default_Name (N, Default_Name);
-+      Set_Box_Present (N, Box_Present);
-+      return N;
-+   end Make_Formal_Subprogram_Declaration;
-+
-+   function Make_Formal_Package_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List;
-+      Box_Present                  : Boolean := False)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Formal_Package_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      Set_Name (N, Name);
-+      Set_Generic_Associations (N, Generic_Associations);
-+      Set_Box_Present (N, Box_Present);
-+      return N;
-+   end Make_Formal_Package_Declaration;
-+
-+   function Make_Attribute_Definition_Clause (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Chars                        : Name_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Attribute_Definition_Clause, Sloc);
-+   begin
-+      Set_Name (N, Name);
-+      Set_Chars (N, Chars);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Attribute_Definition_Clause;
-+
-+   function Make_Enumeration_Representation_Clause (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id;
-+      Array_Aggregate              : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Enumeration_Representation_Clause, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      Set_Array_Aggregate (N, Array_Aggregate);
-+      return N;
-+   end Make_Enumeration_Representation_Clause;
-+
-+   function Make_Record_Representation_Clause (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id;
-+      Mod_Clause                   : Node_Id := Empty;
-+      Component_Clauses            : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Record_Representation_Clause, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      Set_Mod_Clause (N, Mod_Clause);
-+      Set_Component_Clauses (N, Component_Clauses);
-+      return N;
-+   end Make_Record_Representation_Clause;
-+
-+   function Make_Component_Clause (Sloc : Source_Ptr;
-+      Component_Name               : Node_Id;
-+      Position                     : Node_Id;
-+      First_Bit                    : Node_Id;
-+      Last_Bit                     : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Component_Clause, Sloc);
-+   begin
-+      Set_Component_Name (N, Component_Name);
-+      Set_Position (N, Position);
-+      Set_First_Bit (N, First_Bit);
-+      Set_Last_Bit (N, Last_Bit);
-+      return N;
-+   end Make_Component_Clause;
-+
-+   function Make_Code_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Code_Statement, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Code_Statement;
-+
-+   function Make_Op_Rotate_Left (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Rotate_Left, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Rotate_Left);
-+      Set_Entity (N, Standard_Op_Rotate_Left);
-+      return N;
-+   end Make_Op_Rotate_Left;
-+
-+   function Make_Op_Rotate_Right (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Rotate_Right, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Rotate_Right);
-+      Set_Entity (N, Standard_Op_Rotate_Right);
-+      return N;
-+   end Make_Op_Rotate_Right;
-+
-+   function Make_Op_Shift_Left (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Shift_Left, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Shift_Left);
-+      Set_Entity (N, Standard_Op_Shift_Left);
-+      return N;
-+   end Make_Op_Shift_Left;
-+
-+   function Make_Op_Shift_Right_Arithmetic (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Shift_Right_Arithmetic, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Shift_Right_Arithmetic);
-+      Set_Entity (N, Standard_Op_Shift_Right_Arithmetic);
-+      return N;
-+   end Make_Op_Shift_Right_Arithmetic;
-+
-+   function Make_Op_Shift_Right (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Op_Shift_Right, Sloc);
-+   begin
-+      Set_Left_Opnd (N, Left_Opnd);
-+      Set_Right_Opnd (N, Right_Opnd);
-+      Set_Chars (N, Name_Shift_Right);
-+      Set_Entity (N, Standard_Op_Shift_Right);
-+      return N;
-+   end Make_Op_Shift_Right;
-+
-+   function Make_Delta_Constraint (Sloc : Source_Ptr;
-+      Delta_Expression             : Node_Id;
-+      Range_Constraint             : Node_Id := Empty)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Delta_Constraint, Sloc);
-+   begin
-+      Set_Delta_Expression (N, Delta_Expression);
-+      Set_Range_Constraint (N, Range_Constraint);
-+      return N;
-+   end Make_Delta_Constraint;
-+
-+   function Make_At_Clause (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_At_Clause, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_At_Clause;
-+
-+   function Make_Mod_Clause (Sloc : Source_Ptr;
-+      Expression                   : Node_Id;
-+      Pragmas_Before               : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Mod_Clause, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      Set_Pragmas_Before (N, Pragmas_Before);
-+      return N;
-+   end Make_Mod_Clause;
-+
-+   function Make_Conditional_Expression (Sloc : Source_Ptr;
-+      Expressions                  : List_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Conditional_Expression, Sloc);
-+   begin
-+      Set_Expressions (N, Expressions);
-+      return N;
-+   end Make_Conditional_Expression;
-+
-+   function Make_Expanded_Name (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Prefix                       : Node_Id;
-+      Selector_Name                : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Expanded_Name, Sloc);
-+   begin
-+      Set_Chars (N, Chars);
-+      Set_Prefix (N, Prefix);
-+      Set_Selector_Name (N, Selector_Name);
-+      return N;
-+   end Make_Expanded_Name;
-+
-+   function Make_Free_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Free_Statement, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Free_Statement;
-+
-+   function Make_Freeze_Entity (Sloc : Source_Ptr;
-+      Actions                      : List_Id := No_List)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Freeze_Entity, Sloc);
-+   begin
-+      Set_Actions (N, Actions);
-+      return N;
-+   end Make_Freeze_Entity;
-+
-+   function Make_Implicit_Label_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Implicit_Label_Declaration, Sloc);
-+   begin
-+      Set_Defining_Identifier (N, Defining_Identifier);
-+      return N;
-+   end Make_Implicit_Label_Declaration;
-+
-+   function Make_Itype_Reference (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Itype_Reference, Sloc);
-+   begin
-+      return N;
-+   end Make_Itype_Reference;
-+
-+   function Make_Raise_Constraint_Error (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Reason                       : Uint)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Raise_Constraint_Error, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Reason (N, Reason);
-+      return N;
-+   end Make_Raise_Constraint_Error;
-+
-+   function Make_Raise_Program_Error (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Reason                       : Uint)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Raise_Program_Error, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Reason (N, Reason);
-+      return N;
-+   end Make_Raise_Program_Error;
-+
-+   function Make_Raise_Storage_Error (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Reason                       : Uint)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Raise_Storage_Error, Sloc);
-+   begin
-+      Set_Condition (N, Condition);
-+      Set_Reason (N, Reason);
-+      return N;
-+   end Make_Raise_Storage_Error;
-+
-+   function Make_Reference (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Reference, Sloc);
-+   begin
-+      Set_Prefix (N, Prefix);
-+      return N;
-+   end Make_Reference;
-+
-+   function Make_Subprogram_Info (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Subprogram_Info, Sloc);
-+   begin
-+      Set_Identifier (N, Identifier);
-+      return N;
-+   end Make_Subprogram_Info;
-+
-+   function Make_Unchecked_Expression (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Unchecked_Expression, Sloc);
-+   begin
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Unchecked_Expression;
-+
-+   function Make_Unchecked_Type_Conversion (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Unchecked_Type_Conversion, Sloc);
-+   begin
-+      Set_Subtype_Mark (N, Subtype_Mark);
-+      Set_Expression (N, Expression);
-+      return N;
-+   end Make_Unchecked_Type_Conversion;
-+
-+   function Make_Validate_Unchecked_Conversion (Sloc : Source_Ptr)
-+      return Node_Id
-+   is
-+      N : constant Node_Id :=
-+            New_Node (N_Validate_Unchecked_Conversion, Sloc);
-+   begin
-+      return N;
-+   end Make_Validate_Unchecked_Conversion;
-+
-+end Nmake;
---- gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/nmake.ads.orig       1970-01-01 01:00:00.000000000 +0100
-+++ gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/nmake.ads    2004-06-02 00:52:35.000000000 +0200
-@@ -0,0 +1,1351 @@
-+------------------------------------------------------------------------------
-+--                                                                          --
-+--                         GNAT COMPILER COMPONENTS                         --
-+--                                                                          --
-+--                                N M A K E                                 --
-+--                                                                          --
-+--                                 S p e c                                  --
-+--                                                                          --
-+--          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
-+--                                                                          --
-+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-+-- terms of the  GNU General Public License as published  by the Free Soft- --
-+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
-+-- sion.  GNAT is distributed in the 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 COPYING.  If not, write --
-+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
-+-- MA 02111-1307, USA.                                                      --
-+--                                                                          --
-+-- 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 order checking, since the routines here are
-+--  generated automatically in order.
-+
-+
-+with Nlists; use Nlists;
-+with Types;  use Types;
-+with Uintp;  use Uintp;
-+with Urealp; use Urealp;
-+
-+package Nmake is
-+
-+--  This package contains a set of routines used to construct tree nodes
-+--  using a functional style. There is one routine for each node type defined
-+--  in Sinfo with the general interface:
-+
-+--    function Make_xxx (Sloc : Source_Ptr,
-+--                       Field_Name_1 : Field_Name_1_Type [:= default]
-+--                       Field_Name_2 : Field_Name_2_Type [:= default]
-+--                       ...)
-+--    return Node_Id
-+
-+--  Only syntactic fields are included (i.e. fields marked as "-Sem" or "-Lib"
-+--  in the Sinfo spec are excluded). In addition, the following four syntactic
-+--  fields are excluded:
-+
-+--    Prev_Ids
-+--    More_Ids
-+--    Comes_From_Source
-+--    Paren_Count
-+
-+--  since they are very rarely set in expanded code. If they need to be set,
-+--  to other than the default values (False, False, False, zero), then the
-+--  appropriate Set_xxx procedures must be used on the returned value.
-+
-+--  Default values are provided only for flag fields (where the default is
-+--  False), and for optional fields. An optional field is one where the
-+--  comment line describing the field contains the string "(set to xxx if".
-+--  For such fields, a default value of xxx is provided."
-+
-+--  Warning: since calls to Make_xxx routines are normal function calls, the
-+--  arguments can be evaluated in any order. This means that at most one such
-+--  argument can have side effects (e.g. be a call to a parse routine).
-+
-+   function Make_Unused_At_Start (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Unused_At_Start);
-+
-+   function Make_Unused_At_End (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Unused_At_End);
-+
-+   function Make_Identifier (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Identifier);
-+
-+   function Make_Integer_Literal (Sloc : Source_Ptr;
-+      Intval                       : Uint)
-+      return Node_Id;
-+   pragma Inline (Make_Integer_Literal);
-+
-+   function Make_Real_Literal (Sloc : Source_Ptr;
-+      Realval                      : Ureal)
-+      return Node_Id;
-+   pragma Inline (Make_Real_Literal);
-+
-+   function Make_Character_Literal (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Char_Literal_Value           : Char_Code)
-+      return Node_Id;
-+   pragma Inline (Make_Character_Literal);
-+
-+   function Make_String_Literal (Sloc : Source_Ptr;
-+      Strval                       : String_Id)
-+      return Node_Id;
-+   pragma Inline (Make_String_Literal);
-+
-+   function Make_Pragma (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Pragma_Argument_Associations : List_Id := No_List;
-+      Debug_Statement              : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Pragma);
-+
-+   function Make_Pragma_Argument_Association (Sloc : Source_Ptr;
-+      Chars                        : Name_Id := No_Name;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Pragma_Argument_Association);
-+
-+   function Make_Defining_Identifier (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Defining_Identifier);
-+
-+   function Make_Full_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Type_Definition              : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Full_Type_Declaration);
-+
-+   function Make_Subtype_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Subtype_Indication           : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subtype_Declaration);
-+
-+   function Make_Subtype_Indication (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Constraint                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subtype_Indication);
-+
-+   function Make_Object_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Aliased_Present              : Boolean := False;
-+      Constant_Present             : Boolean := False;
-+      Object_Definition            : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Object_Declaration);
-+
-+   function Make_Number_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Number_Declaration);
-+
-+   function Make_Derived_Type_Definition (Sloc : Source_Ptr;
-+      Abstract_Present             : Boolean := False;
-+      Subtype_Indication           : Node_Id;
-+      Record_Extension_Part        : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Derived_Type_Definition);
-+
-+   function Make_Range_Constraint (Sloc : Source_Ptr;
-+      Range_Expression             : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Range_Constraint);
-+
-+   function Make_Range (Sloc : Source_Ptr;
-+      Low_Bound                    : Node_Id;
-+      High_Bound                   : Node_Id;
-+      Includes_Infinities          : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Range);
-+
-+   function Make_Enumeration_Type_Definition (Sloc : Source_Ptr;
-+      Literals                     : List_Id;
-+      End_Label                    : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Enumeration_Type_Definition);
-+
-+   function Make_Defining_Character_Literal (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Defining_Character_Literal);
-+
-+   function Make_Signed_Integer_Type_Definition (Sloc : Source_Ptr;
-+      Low_Bound                    : Node_Id;
-+      High_Bound                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Signed_Integer_Type_Definition);
-+
-+   function Make_Modular_Type_Definition (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Modular_Type_Definition);
-+
-+   function Make_Floating_Point_Definition (Sloc : Source_Ptr;
-+      Digits_Expression            : Node_Id;
-+      Real_Range_Specification     : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Floating_Point_Definition);
-+
-+   function Make_Real_Range_Specification (Sloc : Source_Ptr;
-+      Low_Bound                    : Node_Id;
-+      High_Bound                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Real_Range_Specification);
-+
-+   function Make_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr;
-+      Delta_Expression             : Node_Id;
-+      Real_Range_Specification     : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Ordinary_Fixed_Point_Definition);
-+
-+   function Make_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr;
-+      Delta_Expression             : Node_Id;
-+      Digits_Expression            : Node_Id;
-+      Real_Range_Specification     : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Decimal_Fixed_Point_Definition);
-+
-+   function Make_Digits_Constraint (Sloc : Source_Ptr;
-+      Digits_Expression            : Node_Id;
-+      Range_Constraint             : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Digits_Constraint);
-+
-+   function Make_Unconstrained_Array_Definition (Sloc : Source_Ptr;
-+      Subtype_Marks                : List_Id;
-+      Component_Definition         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Unconstrained_Array_Definition);
-+
-+   function Make_Constrained_Array_Definition (Sloc : Source_Ptr;
-+      Discrete_Subtype_Definitions : List_Id;
-+      Component_Definition         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Constrained_Array_Definition);
-+
-+   function Make_Component_Definition (Sloc : Source_Ptr;
-+      Aliased_Present              : Boolean := False;
-+      Subtype_Indication           : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Component_Definition);
-+
-+   function Make_Discriminant_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Type            : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Discriminant_Specification);
-+
-+   function Make_Index_Or_Discriminant_Constraint (Sloc : Source_Ptr;
-+      Constraints                  : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Index_Or_Discriminant_Constraint);
-+
-+   function Make_Discriminant_Association (Sloc : Source_Ptr;
-+      Selector_Names               : List_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Discriminant_Association);
-+
-+   function Make_Record_Definition (Sloc : Source_Ptr;
-+      End_Label                    : Node_Id := Empty;
-+      Abstract_Present             : Boolean := False;
-+      Tagged_Present               : Boolean := False;
-+      Limited_Present              : Boolean := False;
-+      Component_List               : Node_Id;
-+      Null_Present                 : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Record_Definition);
-+
-+   function Make_Component_List (Sloc : Source_Ptr;
-+      Component_Items              : List_Id;
-+      Variant_Part                 : Node_Id := Empty;
-+      Null_Present                 : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Component_List);
-+
-+   function Make_Component_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Component_Definition         : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Component_Declaration);
-+
-+   function Make_Variant_Part (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Variants                     : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Variant_Part);
-+
-+   function Make_Variant (Sloc : Source_Ptr;
-+      Discrete_Choices             : List_Id;
-+      Component_List               : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Variant);
-+
-+   function Make_Others_Choice (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Others_Choice);
-+
-+   function Make_Access_To_Object_Definition (Sloc : Source_Ptr;
-+      All_Present                  : Boolean := False;
-+      Subtype_Indication           : Node_Id;
-+      Constant_Present             : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Access_To_Object_Definition);
-+
-+   function Make_Access_Function_Definition (Sloc : Source_Ptr;
-+      Protected_Present            : Boolean := False;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Subtype_Mark                 : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Access_Function_Definition);
-+
-+   function Make_Access_Procedure_Definition (Sloc : Source_Ptr;
-+      Protected_Present            : Boolean := False;
-+      Parameter_Specifications     : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Access_Procedure_Definition);
-+
-+   function Make_Access_Definition (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Access_Definition);
-+
-+   function Make_Incomplete_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Incomplete_Type_Declaration);
-+
-+   function Make_Explicit_Dereference (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Explicit_Dereference);
-+
-+   function Make_Indexed_Component (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Expressions                  : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Indexed_Component);
-+
-+   function Make_Slice (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Discrete_Range               : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Slice);
-+
-+   function Make_Selected_Component (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Selector_Name                : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Selected_Component);
-+
-+   function Make_Attribute_Reference (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id;
-+      Attribute_Name               : Name_Id;
-+      Expressions                  : List_Id := No_List;
-+      Must_Be_Byte_Aligned         : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Attribute_Reference);
-+
-+   function Make_Aggregate (Sloc : Source_Ptr;
-+      Expressions                  : List_Id := No_List;
-+      Component_Associations       : List_Id := No_List;
-+      Null_Record_Present          : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Aggregate);
-+
-+   function Make_Component_Association (Sloc : Source_Ptr;
-+      Choices                      : List_Id;
-+      Expression                   : Node_Id;
-+      Box_Present                  : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Component_Association);
-+
-+   function Make_Extension_Aggregate (Sloc : Source_Ptr;
-+      Ancestor_Part                : Node_Id;
-+      Expressions                  : List_Id := No_List;
-+      Component_Associations       : List_Id := No_List;
-+      Null_Record_Present          : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Extension_Aggregate);
-+
-+   function Make_Null (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Null);
-+
-+   function Make_And_Then (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_And_Then);
-+
-+   function Make_Or_Else (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Or_Else);
-+
-+   function Make_In (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_In);
-+
-+   function Make_Not_In (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Not_In);
-+
-+   function Make_Op_And (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_And);
-+
-+   function Make_Op_Or (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Or);
-+
-+   function Make_Op_Xor (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Xor);
-+
-+   function Make_Op_Eq (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Eq);
-+
-+   function Make_Op_Ne (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Ne);
-+
-+   function Make_Op_Lt (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Lt);
-+
-+   function Make_Op_Le (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Le);
-+
-+   function Make_Op_Gt (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Gt);
-+
-+   function Make_Op_Ge (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Ge);
-+
-+   function Make_Op_Add (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Add);
-+
-+   function Make_Op_Subtract (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Subtract);
-+
-+   function Make_Op_Concat (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Concat);
-+
-+   function Make_Op_Multiply (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Multiply);
-+
-+   function Make_Op_Divide (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Divide);
-+
-+   function Make_Op_Mod (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Mod);
-+
-+   function Make_Op_Rem (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Rem);
-+
-+   function Make_Op_Expon (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Expon);
-+
-+   function Make_Op_Plus (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Plus);
-+
-+   function Make_Op_Minus (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Minus);
-+
-+   function Make_Op_Abs (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Abs);
-+
-+   function Make_Op_Not (Sloc : Source_Ptr;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Not);
-+
-+   function Make_Type_Conversion (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Type_Conversion);
-+
-+   function Make_Qualified_Expression (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Qualified_Expression);
-+
-+   function Make_Allocator (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Allocator);
-+
-+   function Make_Null_Statement (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Null_Statement);
-+
-+   function Make_Label (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Label);
-+
-+   function Make_Assignment_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Assignment_Statement);
-+
-+   function Make_If_Statement (Sloc : Source_Ptr;
-+      Condition                    : Node_Id;
-+      Then_Statements              : List_Id;
-+      Elsif_Parts                  : List_Id := No_List;
-+      Else_Statements              : List_Id := No_List;
-+      End_Span                     : Uint := No_Uint)
-+      return Node_Id;
-+   pragma Inline (Make_If_Statement);
-+
-+   function Make_Elsif_Part (Sloc : Source_Ptr;
-+      Condition                    : Node_Id;
-+      Then_Statements              : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Elsif_Part);
-+
-+   function Make_Case_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id;
-+      Alternatives                 : List_Id;
-+      End_Span                     : Uint := No_Uint)
-+      return Node_Id;
-+   pragma Inline (Make_Case_Statement);
-+
-+   function Make_Case_Statement_Alternative (Sloc : Source_Ptr;
-+      Discrete_Choices             : List_Id;
-+      Statements                   : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Case_Statement_Alternative);
-+
-+   function Make_Loop_Statement (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id := Empty;
-+      Iteration_Scheme             : Node_Id := Empty;
-+      Statements                   : List_Id;
-+      End_Label                    : Node_Id;
-+      Has_Created_Identifier       : Boolean := False;
-+      Is_Null_Loop                 : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Loop_Statement);
-+
-+   function Make_Iteration_Scheme (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Loop_Parameter_Specification : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Iteration_Scheme);
-+
-+   function Make_Loop_Parameter_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Reverse_Present              : Boolean := False;
-+      Discrete_Subtype_Definition  : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Loop_Parameter_Specification);
-+
-+   function Make_Block_Statement (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id := Empty;
-+      Declarations                 : List_Id := No_List;
-+      Handled_Statement_Sequence   : Node_Id;
-+      Has_Created_Identifier       : Boolean := False;
-+      Is_Task_Allocation_Block     : Boolean := False;
-+      Is_Asynchronous_Call_Block   : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Block_Statement);
-+
-+   function Make_Exit_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id := Empty;
-+      Condition                    : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Exit_Statement);
-+
-+   function Make_Goto_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Goto_Statement);
-+
-+   function Make_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subprogram_Declaration);
-+
-+   function Make_Abstract_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Abstract_Subprogram_Declaration);
-+
-+   function Make_Function_Specification (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Subtype_Mark                 : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Function_Specification);
-+
-+   function Make_Procedure_Specification (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Parameter_Specifications     : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Procedure_Specification);
-+
-+   function Make_Designator (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Identifier                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Designator);
-+
-+   function Make_Defining_Program_Unit_Name (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Defining_Program_Unit_Name);
-+
-+   function Make_Operator_Symbol (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Strval                       : String_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Operator_Symbol);
-+
-+   function Make_Defining_Operator_Symbol (Sloc : Source_Ptr;
-+      Chars                        : Name_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Defining_Operator_Symbol);
-+
-+   function Make_Parameter_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      In_Present                   : Boolean := False;
-+      Out_Present                  : Boolean := False;
-+      Parameter_Type               : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Parameter_Specification);
-+
-+   function Make_Subprogram_Body (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id;
-+      Bad_Is_Detected              : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Subprogram_Body);
-+
-+   function Make_Procedure_Call_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Parameter_Associations       : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Procedure_Call_Statement);
-+
-+   function Make_Function_Call (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Parameter_Associations       : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Function_Call);
-+
-+   function Make_Parameter_Association (Sloc : Source_Ptr;
-+      Selector_Name                : Node_Id;
-+      Explicit_Actual_Parameter    : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Parameter_Association);
-+
-+   function Make_Return_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Return_Statement);
-+
-+   function Make_Package_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Package_Declaration);
-+
-+   function Make_Package_Specification (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Visible_Declarations         : List_Id;
-+      Private_Declarations         : List_Id := No_List;
-+      End_Label                    : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Package_Specification);
-+
-+   function Make_Package_Body (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Package_Body);
-+
-+   function Make_Private_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False;
-+      Abstract_Present             : Boolean := False;
-+      Tagged_Present               : Boolean := False;
-+      Limited_Present              : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Private_Type_Declaration);
-+
-+   function Make_Private_Extension_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False;
-+      Abstract_Present             : Boolean := False;
-+      Subtype_Indication           : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Private_Extension_Declaration);
-+
-+   function Make_Use_Package_Clause (Sloc : Source_Ptr;
-+      Names                        : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Use_Package_Clause);
-+
-+   function Make_Use_Type_Clause (Sloc : Source_Ptr;
-+      Subtype_Marks                : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Use_Type_Clause);
-+
-+   function Make_Object_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Subtype_Mark                 : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Object_Renaming_Declaration);
-+
-+   function Make_Exception_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Exception_Renaming_Declaration);
-+
-+   function Make_Package_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Package_Renaming_Declaration);
-+
-+   function Make_Subprogram_Renaming_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subprogram_Renaming_Declaration);
-+
-+   function Make_Generic_Package_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Generic_Package_Renaming_Declaration);
-+
-+   function Make_Generic_Procedure_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Generic_Procedure_Renaming_Declaration);
-+
-+   function Make_Generic_Function_Renaming_Declaration (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Generic_Function_Renaming_Declaration);
-+
-+   function Make_Task_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Task_Definition              : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Task_Type_Declaration);
-+
-+   function Make_Single_Task_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Task_Definition              : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Single_Task_Declaration);
-+
-+   function Make_Task_Definition (Sloc : Source_Ptr;
-+      Visible_Declarations         : List_Id;
-+      Private_Declarations         : List_Id := No_List;
-+      End_Label                    : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Task_Definition);
-+
-+   function Make_Task_Body (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Task_Body);
-+
-+   function Make_Protected_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Protected_Definition         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Protected_Type_Declaration);
-+
-+   function Make_Single_Protected_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Protected_Definition         : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Single_Protected_Declaration);
-+
-+   function Make_Protected_Definition (Sloc : Source_Ptr;
-+      Visible_Declarations         : List_Id;
-+      Private_Declarations         : List_Id := No_List;
-+      End_Label                    : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Protected_Definition);
-+
-+   function Make_Protected_Body (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Declarations                 : List_Id;
-+      End_Label                    : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Protected_Body);
-+
-+   function Make_Entry_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discrete_Subtype_Definition  : Node_Id := Empty;
-+      Parameter_Specifications     : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Entry_Declaration);
-+
-+   function Make_Accept_Statement (Sloc : Source_Ptr;
-+      Entry_Direct_Name            : Node_Id;
-+      Entry_Index                  : Node_Id := Empty;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Handled_Statement_Sequence   : Node_Id;
-+      Declarations                 : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Accept_Statement);
-+
-+   function Make_Entry_Body (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Entry_Body_Formal_Part       : Node_Id;
-+      Declarations                 : List_Id;
-+      Handled_Statement_Sequence   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Entry_Body);
-+
-+   function Make_Entry_Body_Formal_Part (Sloc : Source_Ptr;
-+      Entry_Index_Specification    : Node_Id := Empty;
-+      Parameter_Specifications     : List_Id := No_List;
-+      Condition                    : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Entry_Body_Formal_Part);
-+
-+   function Make_Entry_Index_Specification (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Discrete_Subtype_Definition  : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Entry_Index_Specification);
-+
-+   function Make_Entry_Call_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Parameter_Associations       : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Entry_Call_Statement);
-+
-+   function Make_Requeue_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Abort_Present                : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Requeue_Statement);
-+
-+   function Make_Delay_Until_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Delay_Until_Statement);
-+
-+   function Make_Delay_Relative_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Delay_Relative_Statement);
-+
-+   function Make_Selective_Accept (Sloc : Source_Ptr;
-+      Select_Alternatives          : List_Id;
-+      Else_Statements              : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Selective_Accept);
-+
-+   function Make_Accept_Alternative (Sloc : Source_Ptr;
-+      Accept_Statement             : Node_Id;
-+      Condition                    : Node_Id := Empty;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Accept_Alternative);
-+
-+   function Make_Delay_Alternative (Sloc : Source_Ptr;
-+      Delay_Statement              : Node_Id;
-+      Condition                    : Node_Id := Empty;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Delay_Alternative);
-+
-+   function Make_Terminate_Alternative (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Pragmas_Before               : List_Id := No_List;
-+      Pragmas_After                : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Terminate_Alternative);
-+
-+   function Make_Timed_Entry_Call (Sloc : Source_Ptr;
-+      Entry_Call_Alternative       : Node_Id;
-+      Delay_Alternative            : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Timed_Entry_Call);
-+
-+   function Make_Entry_Call_Alternative (Sloc : Source_Ptr;
-+      Entry_Call_Statement         : Node_Id;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Entry_Call_Alternative);
-+
-+   function Make_Conditional_Entry_Call (Sloc : Source_Ptr;
-+      Entry_Call_Alternative       : Node_Id;
-+      Else_Statements              : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Conditional_Entry_Call);
-+
-+   function Make_Asynchronous_Select (Sloc : Source_Ptr;
-+      Triggering_Alternative       : Node_Id;
-+      Abortable_Part               : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Asynchronous_Select);
-+
-+   function Make_Triggering_Alternative (Sloc : Source_Ptr;
-+      Triggering_Statement         : Node_Id;
-+      Statements                   : List_Id := Empty_List;
-+      Pragmas_Before               : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Triggering_Alternative);
-+
-+   function Make_Abortable_Part (Sloc : Source_Ptr;
-+      Statements                   : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Abortable_Part);
-+
-+   function Make_Abort_Statement (Sloc : Source_Ptr;
-+      Names                        : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Abort_Statement);
-+
-+   function Make_Compilation_Unit (Sloc : Source_Ptr;
-+      Context_Items                : List_Id;
-+      Private_Present              : Boolean := False;
-+      Unit                         : Node_Id;
-+      Aux_Decls_Node               : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Compilation_Unit);
-+
-+   function Make_Compilation_Unit_Aux (Sloc : Source_Ptr;
-+      Declarations                 : List_Id := No_List;
-+      Actions                      : List_Id := No_List;
-+      Pragmas_After                : List_Id := No_List;
-+      Config_Pragmas               : List_Id := Empty_List)
-+      return Node_Id;
-+   pragma Inline (Make_Compilation_Unit_Aux);
-+
-+   function Make_With_Clause (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      First_Name                   : Boolean := True;
-+      Last_Name                    : Boolean := True;
-+      Limited_Present              : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_With_Clause);
-+
-+   function Make_With_Type_Clause (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Tagged_Present               : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_With_Type_Clause);
-+
-+   function Make_Subprogram_Body_Stub (Sloc : Source_Ptr;
-+      Specification                : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subprogram_Body_Stub);
-+
-+   function Make_Package_Body_Stub (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Package_Body_Stub);
-+
-+   function Make_Task_Body_Stub (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Task_Body_Stub);
-+
-+   function Make_Protected_Body_Stub (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Protected_Body_Stub);
-+
-+   function Make_Subunit (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Proper_Body                  : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subunit);
-+
-+   function Make_Exception_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Exception_Declaration);
-+
-+   function Make_Handled_Sequence_Of_Statements (Sloc : Source_Ptr;
-+      Statements                   : List_Id;
-+      End_Label                    : Node_Id := Empty;
-+      Exception_Handlers           : List_Id := No_List;
-+      At_End_Proc                  : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Handled_Sequence_Of_Statements);
-+
-+   function Make_Exception_Handler (Sloc : Source_Ptr;
-+      Choice_Parameter             : Node_Id := Empty;
-+      Exception_Choices            : List_Id;
-+      Statements                   : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Exception_Handler);
-+
-+   function Make_Raise_Statement (Sloc : Source_Ptr;
-+      Name                         : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Raise_Statement);
-+
-+   function Make_Generic_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Generic_Formal_Declarations  : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Generic_Subprogram_Declaration);
-+
-+   function Make_Generic_Package_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Generic_Formal_Declarations  : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Generic_Package_Declaration);
-+
-+   function Make_Package_Instantiation (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Package_Instantiation);
-+
-+   function Make_Procedure_Instantiation (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Procedure_Instantiation);
-+
-+   function Make_Function_Instantiation (Sloc : Source_Ptr;
-+      Defining_Unit_Name           : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Function_Instantiation);
-+
-+   function Make_Generic_Association (Sloc : Source_Ptr;
-+      Selector_Name                : Node_Id := Empty;
-+      Explicit_Generic_Actual_Parameter : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Generic_Association);
-+
-+   function Make_Formal_Object_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      In_Present                   : Boolean := False;
-+      Out_Present                  : Boolean := False;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Object_Declaration);
-+
-+   function Make_Formal_Type_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Formal_Type_Definition       : Node_Id;
-+      Discriminant_Specifications  : List_Id := No_List;
-+      Unknown_Discriminants_Present : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Type_Declaration);
-+
-+   function Make_Formal_Private_Type_Definition (Sloc : Source_Ptr;
-+      Abstract_Present             : Boolean := False;
-+      Tagged_Present               : Boolean := False;
-+      Limited_Present              : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Private_Type_Definition);
-+
-+   function Make_Formal_Derived_Type_Definition (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Private_Present              : Boolean := False;
-+      Abstract_Present             : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Derived_Type_Definition);
-+
-+   function Make_Formal_Discrete_Type_Definition (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Discrete_Type_Definition);
-+
-+   function Make_Formal_Signed_Integer_Type_Definition (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Signed_Integer_Type_Definition);
-+
-+   function Make_Formal_Modular_Type_Definition (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Modular_Type_Definition);
-+
-+   function Make_Formal_Floating_Point_Definition (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Floating_Point_Definition);
-+
-+   function Make_Formal_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Ordinary_Fixed_Point_Definition);
-+
-+   function Make_Formal_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Decimal_Fixed_Point_Definition);
-+
-+   function Make_Formal_Subprogram_Declaration (Sloc : Source_Ptr;
-+      Specification                : Node_Id;
-+      Default_Name                 : Node_Id := Empty;
-+      Box_Present                  : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Subprogram_Declaration);
-+
-+   function Make_Formal_Package_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id;
-+      Name                         : Node_Id;
-+      Generic_Associations         : List_Id := No_List;
-+      Box_Present                  : Boolean := False)
-+      return Node_Id;
-+   pragma Inline (Make_Formal_Package_Declaration);
-+
-+   function Make_Attribute_Definition_Clause (Sloc : Source_Ptr;
-+      Name                         : Node_Id;
-+      Chars                        : Name_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Attribute_Definition_Clause);
-+
-+   function Make_Enumeration_Representation_Clause (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id;
-+      Array_Aggregate              : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Enumeration_Representation_Clause);
-+
-+   function Make_Record_Representation_Clause (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id;
-+      Mod_Clause                   : Node_Id := Empty;
-+      Component_Clauses            : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Record_Representation_Clause);
-+
-+   function Make_Component_Clause (Sloc : Source_Ptr;
-+      Component_Name               : Node_Id;
-+      Position                     : Node_Id;
-+      First_Bit                    : Node_Id;
-+      Last_Bit                     : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Component_Clause);
-+
-+   function Make_Code_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Code_Statement);
-+
-+   function Make_Op_Rotate_Left (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Rotate_Left);
-+
-+   function Make_Op_Rotate_Right (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Rotate_Right);
-+
-+   function Make_Op_Shift_Left (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Shift_Left);
-+
-+   function Make_Op_Shift_Right_Arithmetic (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Shift_Right_Arithmetic);
-+
-+   function Make_Op_Shift_Right (Sloc : Source_Ptr;
-+      Left_Opnd                    : Node_Id;
-+      Right_Opnd                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Op_Shift_Right);
-+
-+   function Make_Delta_Constraint (Sloc : Source_Ptr;
-+      Delta_Expression             : Node_Id;
-+      Range_Constraint             : Node_Id := Empty)
-+      return Node_Id;
-+   pragma Inline (Make_Delta_Constraint);
-+
-+   function Make_At_Clause (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_At_Clause);
-+
-+   function Make_Mod_Clause (Sloc : Source_Ptr;
-+      Expression                   : Node_Id;
-+      Pragmas_Before               : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Mod_Clause);
-+
-+   function Make_Conditional_Expression (Sloc : Source_Ptr;
-+      Expressions                  : List_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Conditional_Expression);
-+
-+   function Make_Expanded_Name (Sloc : Source_Ptr;
-+      Chars                        : Name_Id;
-+      Prefix                       : Node_Id;
-+      Selector_Name                : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Expanded_Name);
-+
-+   function Make_Free_Statement (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Free_Statement);
-+
-+   function Make_Freeze_Entity (Sloc : Source_Ptr;
-+      Actions                      : List_Id := No_List)
-+      return Node_Id;
-+   pragma Inline (Make_Freeze_Entity);
-+
-+   function Make_Implicit_Label_Declaration (Sloc : Source_Ptr;
-+      Defining_Identifier          : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Implicit_Label_Declaration);
-+
-+   function Make_Itype_Reference (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Itype_Reference);
-+
-+   function Make_Raise_Constraint_Error (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Reason                       : Uint)
-+      return Node_Id;
-+   pragma Inline (Make_Raise_Constraint_Error);
-+
-+   function Make_Raise_Program_Error (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Reason                       : Uint)
-+      return Node_Id;
-+   pragma Inline (Make_Raise_Program_Error);
-+
-+   function Make_Raise_Storage_Error (Sloc : Source_Ptr;
-+      Condition                    : Node_Id := Empty;
-+      Reason                       : Uint)
-+      return Node_Id;
-+   pragma Inline (Make_Raise_Storage_Error);
-+
-+   function Make_Reference (Sloc : Source_Ptr;
-+      Prefix                       : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Reference);
-+
-+   function Make_Subprogram_Info (Sloc : Source_Ptr;
-+      Identifier                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Subprogram_Info);
-+
-+   function Make_Unchecked_Expression (Sloc : Source_Ptr;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Unchecked_Expression);
-+
-+   function Make_Unchecked_Type_Conversion (Sloc : Source_Ptr;
-+      Subtype_Mark                 : Node_Id;
-+      Expression                   : Node_Id)
-+      return Node_Id;
-+   pragma Inline (Make_Unchecked_Type_Conversion);
-+
-+   function Make_Validate_Unchecked_Conversion (Sloc : Source_Ptr)
-+      return Node_Id;
-+   pragma Inline (Make_Validate_Unchecked_Conversion);
-+
-+end Nmake;
---- gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/treeprs.ads.orig     1970-01-01 01:00:00.000000000 +0100
-+++ gcc-3.4.0/obj-amd64-pld-linux/gcc/ada/treeprs.ads  2004-06-02 00:54:11.000000000 +0200
-@@ -0,0 +1,801 @@
-+------------------------------------------------------------------------------
-+--                                                                          --
-+--                         GNAT COMPILER COMPONENTS                         --
-+--                                                                          --
-+--                              T R E E P R S                               --
-+--                                                                          --
-+--                                 S p e c                                  --
-+--                                                                          --
-+--          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
-+--                                                                          --
-+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-+-- terms of the  GNU General Public License as published  by the Free Soft- --
-+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
-+-- sion.  GNAT is distributed in the 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 COPYING.  If not, write --
-+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
-+-- MA 02111-1307, USA.                                                      --
-+--                                                                          --
-+-- 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 declaration of the string used by the Tree_Print
-+--  package. It must be updated whenever the arrangements of the field names
-+--  in package Sinfo is changed. The utility program XTREEPRS is used to
-+--  do this update correctly using the template treeprs.adt as input.
-+
-+with Sinfo; use Sinfo;
-+
-+package Treeprs is
-+
-+   --------------------------------
-+   -- String Data for Node Print --
-+   --------------------------------
-+
-+   --  String data for print out. The Pchars array is a long string with the
-+   --  the entry for each node type consisting of a single blank, followed by
-+   --  a series of entries, one for each Op or Flag field used for the node.
-+   --  Each entry has a single character which identifies the field, followed
-+   --  by the synonym name. The starting location for a given node type is
-+   --  found from the corresponding entry in the Pchars_Pos_Array.
-+
-+   --  The following characters identify the field. These are characters
-+   --  which  could never occur in a field name, so they also mark the
-+   --  end of the previous name.
-+
-+   subtype Fchar is Character range '#' .. '9';
-+
-+   F_Field1     : constant Fchar := '#'; -- Character'Val (16#23#)
-+   F_Field2     : constant Fchar := '$'; -- Character'Val (16#24#)
-+   F_Field3     : constant Fchar := '%'; -- Character'Val (16#25#)
-+   F_Field4     : constant Fchar := '&'; -- Character'Val (16#26#)
-+   F_Field5     : constant Fchar := '''; -- Character'Val (16#27#)
-+   F_Flag1      : constant Fchar := '('; -- Character'Val (16#28#)
-+   F_Flag2      : constant Fchar := ')'; -- Character'Val (16#29#)
-+   F_Flag3      : constant Fchar := '*'; -- Character'Val (16#2A#)
-+   F_Flag4      : constant Fchar := '+'; -- Character'Val (16#2B#)
-+   F_Flag5      : constant Fchar := ','; -- Character'Val (16#2C#)
-+   F_Flag6      : constant Fchar := '-'; -- Character'Val (16#2D#)
-+   F_Flag7      : constant Fchar := '.'; -- Character'Val (16#2E#)
-+   F_Flag8      : constant Fchar := '/'; -- Character'Val (16#2F#)
-+   F_Flag9      : constant Fchar := '0'; -- Character'Val (16#30#)
-+   F_Flag10     : constant Fchar := '1'; -- Character'Val (16#31#)
-+   F_Flag11     : constant Fchar := '2'; -- Character'Val (16#32#)
-+   F_Flag12     : constant Fchar := '3'; -- Character'Val (16#33#)
-+   F_Flag13     : constant Fchar := '4'; -- Character'Val (16#34#)
-+   F_Flag14     : constant Fchar := '5'; -- Character'Val (16#35#)
-+   F_Flag15     : constant Fchar := '6'; -- Character'Val (16#36#)
-+   F_Flag16     : constant Fchar := '7'; -- Character'Val (16#37#)
-+   F_Flag17     : constant Fchar := '8'; -- Character'Val (16#38#)
-+   F_Flag18     : constant Fchar := '9'; -- Character'Val (16#39#)
-+
-+   --  Note this table does not include entity field and flags whose access
-+   --  functions are in Einfo (these are handled by the Print_Entity_Info
-+   --  procedure in Treepr, which uses the routines in Einfo to get the
-+   --  proper symbolic information). In addition, the following fields are
-+   --  handled by Treepr, and do not appear in the Pchars array:
-+
-+   --    Analyzed
-+   --    Cannot_Be_Constant
-+   --    Chars
-+   --    Comes_From_Source
-+   --    Error_Posted
-+   --    Etype
-+   --    Is_Controlling_Actual
-+   --    Is_Overloaded
-+   --    Is_Static_Expression
-+   --    Left_Opnd
-+   --    Must_Check_Expr
-+   --    Must_Not_Freeze
-+   --    No_Overflow_Expr
-+   --    Paren_Count
-+   --    Raises_Constraint_Error
-+   --    Right_Opnd
-+
-+   Pchars : constant String :=
-+      --  Unused_At_Start
-+      "" &
-+      --  At_Clause
-+      "#Identifier%Expression" &
-+      --  Component_Clause
-+      "#Component_Name$Position%First_Bit&Last_Bit" &
-+      --  Enumeration_Representation_Clause
-+      "#Identifier%Array_Aggregate&Next_Rep_Item" &
-+      --  Mod_Clause
-+      "%Expression&Pragmas_Before" &
-+      --  Record_Representation_Clause
-+      "#Identifier$Mod_Clause%Component_Clauses&Next_Rep_Item" &
-+      --  Attribute_Definition_Clause
-+      "$Name%Expression&Next_Rep_Item+From_At_Mod2Check_Address_Alignment" &
-+      --  Empty
-+      "" &
-+      --  Pragma
-+      "$Pragma_Argument_Associations%Debug_Statement&Next_Rep_Item" &
-+      --  Pragma_Argument_Association
-+      "%Expression" &
-+      --  Error
-+      "" &
-+      --  Defining_Character_Literal
-+      "$Next_Entity%Scope" &
-+      --  Defining_Identifier
-+      "$Next_Entity%Scope" &
-+      --  Defining_Operator_Symbol
-+      "$Next_Entity%Scope" &
-+      --  Expanded_Name
-+      "%Prefix$Selector_Name&Entity&Associated_Node4Redundant_Use2Has_Privat" &
-+         "e_View" &
-+      --  Identifier
-+      "&Entity&Associated_Node$Original_Discriminant4Redundant_Use2Has_Priva" &
-+         "te_View" &
-+      --  Operator_Symbol
-+      "%Strval&Entity&Associated_Node2Has_Private_View" &
-+      --  Character_Literal
-+      "$Char_Literal_Value&Entity&Associated_Node2Has_Private_View" &
-+      --  Op_Add
-+      "" &
-+      --  Op_Concat
-+      "4Is_Component_Left_Opnd5Is_Component_Right_Opnd" &
-+      --  Op_Expon
-+      "4Is_Power_Of_2_For_Shift" &
-+      --  Op_Subtract
-+      "" &
-+      --  Op_Divide
-+      "5Treat_Fixed_As_Integer4Do_Division_Check9Rounded_Result" &
-+      --  Op_Mod
-+      "5Treat_Fixed_As_Integer4Do_Division_Check" &
-+      --  Op_Multiply
-+      "5Treat_Fixed_As_Integer9Rounded_Result" &
-+      --  Op_Rem
-+      "5Treat_Fixed_As_Integer4Do_Division_Check" &
-+      --  Op_And
-+      "+Do_Length_Check" &
-+      --  Op_Eq
-+      "" &
-+      --  Op_Ge
-+      "" &
-+      --  Op_Gt
-+      "" &
-+      --  Op_Le
-+      "" &
-+      --  Op_Lt
-+      "" &
-+      --  Op_Ne
-+      "" &
-+      --  Op_Or
-+      "+Do_Length_Check" &
-+      --  Op_Xor
-+      "+Do_Length_Check" &
-+      --  Op_Rotate_Left
-+      "+Shift_Count_OK" &
-+      --  Op_Rotate_Right
-+      "+Shift_Count_OK" &
-+      --  Op_Shift_Left
-+      "+Shift_Count_OK" &
-+      --  Op_Shift_Right
-+      "+Shift_Count_OK" &
-+      --  Op_Shift_Right_Arithmetic
-+      "+Shift_Count_OK" &
-+      --  Op_Abs
-+      "" &
-+      --  Op_Minus
-+      "" &
-+      --  Op_Not
-+      "" &
-+      --  Op_Plus
-+      "" &
-+      --  Attribute_Reference
-+      "%Prefix$Attribute_Name#Expressions&Entity&Associated_Node8Do_Overflow" &
-+         "_Check4Redundant_Use+OK_For_Stream5Must_Be_Byte_Aligned" &
-+      --  And_Then
-+      "#Actions" &
-+      --  Conditional_Expression
-+      "#Expressions$Then_Actions%Else_Actions" &
-+      --  Explicit_Dereference
-+      "%Prefix" &
-+      --  Function_Call
-+      "$Name%Parameter_Associations&First_Named_Actual#Controlling_Argument4" &
-+         "Do_Tag_Check5No_Elaboration_Check8Parameter_List_Truncated9ABE_Is_" &
-+         "Certain" &
-+      --  In
-+      "" &
-+      --  Indexed_Component
-+      "%Prefix#Expressions" &
-+      --  Integer_Literal
-+      "$Original_Entity%Intval4Print_In_Hex" &
-+      --  Not_In
-+      "" &
-+      --  Null
-+      "" &
-+      --  Or_Else
-+      "#Actions" &
-+      --  Procedure_Call_Statement
-+      "$Name%Parameter_Associations&First_Named_Actual#Controlling_Argument4" &
-+         "Do_Tag_Check5No_Elaboration_Check8Parameter_List_Truncated9ABE_Is_" &
-+         "Certain" &
-+      --  Qualified_Expression
-+      "&Subtype_Mark%Expression" &
-+      --  Raise_Constraint_Error
-+      "#Condition%Reason" &
-+      --  Raise_Program_Error
-+      "#Condition%Reason" &
-+      --  Raise_Storage_Error
-+      "#Condition%Reason" &
-+      --  Aggregate
-+      "#Expressions$Component_Associations8Null_Record_Present%Aggregate_Bou" &
-+         "nds&Associated_Node+Static_Processing_OK9Compile_Time_Known_Aggreg" &
-+         "ate2Expansion_Delayed" &
-+      --  Allocator
-+      "%Expression#Storage_Pool&Procedure_To_Call4No_Initialization8Do_Stora" &
-+         "ge_Check" &
-+      --  Extension_Aggregate
-+      "%Ancestor_Part&Associated_Node#Expressions$Component_Associations8Nul" &
-+         "l_Record_Present2Expansion_Delayed" &
-+      --  Range
-+      "#Low_Bound$High_Bound2Includes_Infinities" &
-+      --  Real_Literal
-+      "$Original_Entity%Realval&Corresponding_Integer_Value2Is_Machine_Numbe" &
-+         "r" &
-+      --  Reference
-+      "%Prefix" &
-+      --  Selected_Component
-+      "%Prefix$Selector_Name&Associated_Node4Do_Discriminant_Check2Is_In_Dis" &
-+         "criminant_Check" &
-+      --  Slice
-+      "%Prefix&Discrete_Range" &
-+      --  String_Literal
-+      "%Strval2Has_Wide_Character" &
-+      --  Subprogram_Info
-+      "#Identifier" &
-+      --  Type_Conversion
-+      "&Subtype_Mark%Expression4Do_Tag_Check+Do_Length_Check8Do_Overflow_Che" &
-+         "ck2Float_Truncate9Rounded_Result5Conversion_OK" &
-+      --  Unchecked_Expression
-+      "%Expression" &
-+      --  Unchecked_Type_Conversion
-+      "&Subtype_Mark%Expression2Kill_Range_Check8No_Truncation" &
-+      --  Subtype_Indication
-+      "&Subtype_Mark%Constraint/Must_Not_Freeze" &
-+      --  Component_Declaration
-+      "#Defining_Identifier&Component_Definition%Expression,More_Ids-Prev_Id" &
-+         "s" &
-+      --  Entry_Declaration
-+      "#Defining_Identifier&Discrete_Subtype_Definition%Parameter_Specificat" &
-+         "ions'Corresponding_Body" &
-+      --  Formal_Object_Declaration
-+      "#Defining_Identifier6In_Present8Out_Present&Subtype_Mark%Expression,M" &
-+         "ore_Ids-Prev_Ids" &
-+      --  Formal_Type_Declaration
-+      "#Defining_Identifier%Formal_Type_Definition&Discriminant_Specificatio" &
-+         "ns4Unknown_Discriminants_Present" &
-+      --  Full_Type_Declaration
-+      "#Defining_Identifier&Discriminant_Specifications%Type_Definition2Disc" &
-+         "r_Check_Funcs_Built" &
-+      --  Incomplete_Type_Declaration
-+      "#Defining_Identifier&Discriminant_Specifications4Unknown_Discriminant" &
-+         "s_Present" &
-+      --  Loop_Parameter_Specification
-+      "#Defining_Identifier6Reverse_Present&Discrete_Subtype_Definition" &
-+      --  Object_Declaration
-+      "#Defining_Identifier+Aliased_Present8Constant_Present&Object_Definiti" &
-+         "on%Expression$Handler_List_Entry'Corresponding_Generic_Association" &
-+         ",More_Ids-Prev_Ids4No_Initialization6Assignment_OK2Exception_Junk5" &
-+         "Delay_Finalize_Attach7Is_Subprogram_Descriptor" &
-+      --  Protected_Type_Declaration
-+      "#Defining_Identifier&Discriminant_Specifications%Protected_Definition" &
-+         "'Corresponding_Body" &
-+      --  Private_Extension_Declaration
-+      "#Defining_Identifier&Discriminant_Specifications4Unknown_Discriminant" &
-+         "s_Present+Abstract_Present'Subtype_Indication" &
-+      --  Private_Type_Declaration
-+      "#Defining_Identifier&Discriminant_Specifications4Unknown_Discriminant" &
-+         "s_Present+Abstract_Present6Tagged_Present8Limited_Present" &
-+      --  Subtype_Declaration
-+      "#Defining_Identifier'Subtype_Indication&Generic_Parent_Type2Exception" &
-+         "_Junk" &
-+      --  Function_Specification
-+      "#Defining_Unit_Name$Elaboration_Boolean%Parameter_Specifications&Subt" &
-+         "ype_Mark'Generic_Parent" &
-+      --  Procedure_Specification
-+      "#Defining_Unit_Name$Elaboration_Boolean%Parameter_Specifications'Gene" &
-+         "ric_Parent" &
-+      --  Entry_Index_Specification
-+      "#Defining_Identifier&Discrete_Subtype_Definition" &
-+      --  Freeze_Entity
-+      "&Entity$Access_Types_To_Process%TSS_Elist#Actions'First_Subtype_Link" &
-+      --  Access_Function_Definition
-+      "6Protected_Present%Parameter_Specifications&Subtype_Mark" &
-+      --  Access_Procedure_Definition
-+      "6Protected_Present%Parameter_Specifications" &
-+      --  Task_Type_Declaration
-+      "#Defining_Identifier$Task_Body_Procedure&Discriminant_Specifications%" &
-+         "Task_Definition'Corresponding_Body" &
-+      --  Package_Body_Stub
-+      "#Defining_Identifier&Library_Unit'Corresponding_Body" &
-+      --  Protected_Body_Stub
-+      "#Defining_Identifier&Library_Unit'Corresponding_Body" &
-+      --  Subprogram_Body_Stub
-+      "#Specification&Library_Unit'Corresponding_Body" &
-+      --  Task_Body_Stub
-+      "#Defining_Identifier&Library_Unit'Corresponding_Body" &
-+      --  Function_Instantiation
-+      "#Defining_Unit_Name$Name%Generic_Associations&Parent_Spec'Instance_Sp" &
-+         "ec9ABE_Is_Certain" &
-+      --  Package_Instantiation
-+      "#Defining_Unit_Name$Name%Generic_Associations&Parent_Spec'Instance_Sp" &
-+         "ec9ABE_Is_Certain" &
-+      --  Procedure_Instantiation
-+      "#Defining_Unit_Name$Name&Parent_Spec%Generic_Associations'Instance_Sp" &
-+         "ec9ABE_Is_Certain" &
-+      --  Package_Body
-+      "#Defining_Unit_Name$Declarations&Handled_Statement_Sequence'Correspon" &
-+         "ding_Spec4Was_Originally_Stub" &
-+      --  Subprogram_Body
-+      "#Specification$Declarations&Handled_Statement_Sequence%Activation_Cha" &
-+         "in_Entity'Corresponding_Spec+Acts_As_Spec6Bad_Is_Detected8Do_Stora" &
-+         "ge_Check-Has_Priority_Pragma.Is_Protected_Subprogram_Body,Is_Task_" &
-+         "Master4Was_Originally_Stub" &
-+      --  Protected_Body
-+      "#Defining_Identifier$Declarations&End_Label'Corresponding_Spec4Was_Or" &
-+         "iginally_Stub" &
-+      --  Task_Body
-+      "#Defining_Identifier$Declarations&Handled_Statement_Sequence,Is_Task_" &
-+         "Master%Activation_Chain_Entity'Corresponding_Spec4Was_Originally_S" &
-+         "tub" &
-+      --  Implicit_Label_Declaration
-+      "#Defining_Identifier$Label_Construct" &
-+      --  Package_Declaration
-+      "#Specification'Corresponding_Body&Parent_Spec%Activation_Chain_Entity" &
-+      --  Single_Task_Declaration
-+      "#Defining_Identifier%Task_Definition" &
-+      --  Subprogram_Declaration
-+      "#Specification%Body_To_Inline'Corresponding_Body&Parent_Spec" &
-+      --  Use_Package_Clause
-+      "$Names%Next_Use_Clause&Hidden_By_Use_Clause" &
-+      --  Generic_Package_Declaration
-+      "#Specification'Corresponding_Body$Generic_Formal_Declarations&Parent_" &
-+         "Spec%Activation_Chain_Entity" &
-+      --  Generic_Subprogram_Declaration
-+      "#Specification'Corresponding_Body$Generic_Formal_Declarations&Parent_" &
-+         "Spec" &
-+      --  Constrained_Array_Definition
-+      "$Discrete_Subtype_Definitions&Component_Definition" &
-+      --  Unconstrained_Array_Definition
-+      "$Subtype_Marks&Component_Definition" &
-+      --  Exception_Renaming_Declaration
-+      "#Defining_Identifier$Name" &
-+      --  Object_Renaming_Declaration
-+      "#Defining_Identifier&Subtype_Mark$Name'Corresponding_Generic_Associat" &
-+         "ion" &
-+      --  Package_Renaming_Declaration
-+      "#Defining_Unit_Name$Name&Parent_Spec" &
-+      --  Subprogram_Renaming_Declaration
-+      "#Specification$Name&Parent_Spec'Corresponding_Spec" &
-+      --  Generic_Function_Renaming_Declaration
-+      "#Defining_Unit_Name$Name&Parent_Spec" &
-+      --  Generic_Package_Renaming_Declaration
-+      "#Defining_Unit_Name$Name&Parent_Spec" &
-+      --  Generic_Procedure_Renaming_Declaration
-+      "#Defining_Unit_Name$Name&Parent_Spec" &
-+      --  Abort_Statement
-+      "$Names" &
-+      --  Accept_Statement
-+      "#Entry_Direct_Name'Entry_Index%Parameter_Specifications&Handled_State" &
-+         "ment_Sequence$Declarations" &
-+      --  Assignment_Statement
-+      "$Name%Expression4Do_Tag_Check+Do_Length_Check,Forwards_OK-Backwards_O" &
-+         "K.No_Ctrl_Actions" &
-+      --  Asynchronous_Select
-+      "#Triggering_Alternative$Abortable_Part" &
-+      --  Block_Statement
-+      "#Identifier$Declarations&Handled_Statement_Sequence,Is_Task_Master%Ac" &
-+         "tivation_Chain_Entity6Has_Created_Identifier-Is_Task_Allocation_Bl" &
-+         "ock.Is_Asynchronous_Call_Block" &
-+      --  Case_Statement
-+      "%Expression&Alternatives'End_Span" &
-+      --  Code_Statement
-+      "%Expression" &
-+      --  Conditional_Entry_Call
-+      "#Entry_Call_Alternative&Else_Statements" &
-+      --  Delay_Relative_Statement
-+      "%Expression" &
-+      --  Delay_Until_Statement
-+      "%Expression" &
-+      --  Entry_Call_Statement
-+      "$Name%Parameter_Associations&First_Named_Actual" &
-+      --  Free_Statement
-+      "%Expression#Storage_Pool&Procedure_To_Call" &
-+      --  Goto_Statement
-+      "$Name2Exception_Junk" &
-+      --  Loop_Statement
-+      "#Identifier$Iteration_Scheme%Statements&End_Label6Has_Created_Identif" &
-+         "ier7Is_Null_Loop" &
-+      --  Null_Statement
-+      "" &
-+      --  Raise_Statement
-+      "$Name" &
-+      --  Requeue_Statement
-+      "$Name6Abort_Present" &
-+      --  Return_Statement
-+      "%Expression#Storage_Pool&Procedure_To_Call4Do_Tag_Check$Return_Type,B" &
-+         "y_Ref" &
-+      --  Selective_Accept
-+      "#Select_Alternatives&Else_Statements" &
-+      --  Timed_Entry_Call
-+      "#Entry_Call_Alternative&Delay_Alternative" &
-+      --  Exit_Statement
-+      "$Name#Condition" &
-+      --  If_Statement
-+      "#Condition$Then_Statements%Elsif_Parts&Else_Statements'End_Span" &
-+      --  Accept_Alternative
-+      "$Accept_Statement#Condition%Statements&Pragmas_Before'Accept_Handler_" &
-+         "Records" &
-+      --  Delay_Alternative
-+      "$Delay_Statement#Condition%Statements&Pragmas_Before" &
-+      --  Elsif_Part
-+      "#Condition$Then_Statements%Condition_Actions" &
-+      --  Entry_Body_Formal_Part
-+      "&Entry_Index_Specification%Parameter_Specifications#Condition" &
-+      --  Iteration_Scheme
-+      "#Condition%Condition_Actions&Loop_Parameter_Specification" &
-+      --  Terminate_Alternative
-+      "#Condition&Pragmas_Before'Pragmas_After" &
-+      --  Abortable_Part
-+      "%Statements" &
-+      --  Abstract_Subprogram_Declaration
-+      "#Specification" &
-+      --  Access_Definition
-+      "&Subtype_Mark" &
-+      --  Access_To_Object_Definition
-+      "6All_Present'Subtype_Indication8Constant_Present" &
-+      --  Case_Statement_Alternative
-+      "&Discrete_Choices%Statements" &
-+      --  Compilation_Unit
-+      "&Library_Unit#Context_Items6Private_Present$Unit'Aux_Decls_Node8Has_N" &
-+         "o_Elaboration_Code4Body_Required+Acts_As_Spec%First_Inlined_Subpro" &
-+         "gram" &
-+      --  Compilation_Unit_Aux
-+      "$Declarations#Actions'Pragmas_After&Config_Pragmas" &
-+      --  Component_Association
-+      "#Choices$Loop_Actions%Expression6Box_Present" &
-+      --  Component_Definition
-+      "+Aliased_Present'Subtype_Indication" &
-+      --  Component_List
-+      "%Component_Items&Variant_Part4Null_Present" &
-+      --  Derived_Type_Definition
-+      "+Abstract_Present'Subtype_Indication%Record_Extension_Part" &
-+      --  Decimal_Fixed_Point_Definition
-+      "%Delta_Expression$Digits_Expression&Real_Range_Specification" &
-+      --  Defining_Program_Unit_Name
-+      "$Name#Defining_Identifier" &
-+      --  Delta_Constraint
-+      "%Delta_Expression&Range_Constraint" &
-+      --  Designator
-+      "$Name#Identifier" &
-+      --  Digits_Constraint
-+      "$Digits_Expression&Range_Constraint" &
-+      --  Discriminant_Association
-+      "#Selector_Names%Expression" &
-+      --  Discriminant_Specification
-+      "#Defining_Identifier'Discriminant_Type%Expression,More_Ids-Prev_Ids" &
-+      --  Enumeration_Type_Definition
-+      "#Literals&End_Label" &
-+      --  Entry_Body
-+      "#Defining_Identifier'Entry_Body_Formal_Part$Declarations&Handled_Stat" &
-+         "ement_Sequence%Activation_Chain_Entity" &
-+      --  Entry_Call_Alternative
-+      "#Entry_Call_Statement%Statements&Pragmas_Before" &
-+      --  Exception_Declaration
-+      "#Defining_Identifier%Expression,More_Ids-Prev_Ids" &
-+      --  Exception_Handler
-+      "$Choice_Parameter&Exception_Choices%Statements,Zero_Cost_Handling" &
-+      --  Floating_Point_Definition
-+      "$Digits_Expression&Real_Range_Specification" &
-+      --  Formal_Decimal_Fixed_Point_Definition
-+      "" &
-+      --  Formal_Derived_Type_Definition
-+      "&Subtype_Mark6Private_Present+Abstract_Present" &
-+      --  Formal_Discrete_Type_Definition
-+      "" &
-+      --  Formal_Floating_Point_Definition
-+      "" &
-+      --  Formal_Modular_Type_Definition
-+      "" &
-+      --  Formal_Ordinary_Fixed_Point_Definition
-+      "" &
-+      --  Formal_Package_Declaration
-+      "#Defining_Identifier$Name%Generic_Associations6Box_Present'Instance_S" &
-+         "pec9ABE_Is_Certain" &
-+      --  Formal_Private_Type_Definition
-+      "+Abstract_Present6Tagged_Present8Limited_Present" &
-+      --  Formal_Signed_Integer_Type_Definition
-+      "" &
-+      --  Formal_Subprogram_Declaration
-+      "#Specification$Default_Name6Box_Present" &
-+      --  Generic_Association
-+      "$Selector_Name#Explicit_Generic_Actual_Parameter" &
-+      --  Handled_Sequence_Of_Statements
-+      "%Statements&End_Label'Exception_Handlers#At_End_Proc$First_Real_State" &
-+         "ment,Zero_Cost_Handling" &
-+      --  Index_Or_Discriminant_Constraint
-+      "#Constraints" &
-+      --  Itype_Reference
-+      "#Itype" &
-+      --  Label
-+      "#Identifier2Exception_Junk" &
-+      --  Modular_Type_Definition
-+      "%Expression" &
-+      --  Number_Declaration
-+      "#Defining_Identifier%Expression,More_Ids-Prev_Ids" &
-+      --  Ordinary_Fixed_Point_Definition
-+      "%Delta_Expression&Real_Range_Specification" &
-+      --  Others_Choice
-+      "#Others_Discrete_Choices2All_Others" &
-+      --  Package_Specification
-+      "#Defining_Unit_Name$Visible_Declarations%Private_Declarations&End_Lab" &
-+         "el'Generic_Parent9Limited_View_Installed" &
-+      --  Parameter_Association
-+      "$Selector_Name%Explicit_Actual_Parameter&Next_Named_Actual" &
-+      --  Parameter_Specification
-+      "#Defining_Identifier6In_Present8Out_Present$Parameter_Type%Expression" &
-+         "4Do_Accessibility_Check,More_Ids-Prev_Ids'Default_Expression" &
-+      --  Protected_Definition
-+      "$Visible_Declarations%Private_Declarations&End_Label-Has_Priority_Pra" &
-+         "gma" &
-+      --  Range_Constraint
-+      "&Range_Expression" &
-+      --  Real_Range_Specification
-+      "#Low_Bound$High_Bound" &
-+      --  Record_Definition
-+      "&End_Label+Abstract_Present6Tagged_Present8Limited_Present#Component_" &
-+         "List4Null_Present" &
-+      --  Signed_Integer_Type_Definition
-+      "#Low_Bound$High_Bound" &
-+      --  Single_Protected_Declaration
-+      "#Defining_Identifier%Protected_Definition" &
-+      --  Subunit
-+      "$Name#Proper_Body%Corresponding_Stub" &
-+      --  Task_Definition
-+      "$Visible_Declarations%Private_Declarations&End_Label-Has_Priority_Pra" &
-+         "gma,Has_Storage_Size_Pragma.Has_Task_Info_Pragma/Has_Task_Name_Pra" &
-+         "gma" &
-+      --  Triggering_Alternative
-+      "#Triggering_Statement%Statements&Pragmas_Before" &
-+      --  Use_Type_Clause
-+      "$Subtype_Marks%Next_Use_Clause&Hidden_By_Use_Clause" &
-+      --  Validate_Unchecked_Conversion
-+      "#Source_Type$Target_Type" &
-+      --  Variant
-+      "&Discrete_Choices#Component_List$Enclosing_Variant%Present_Expr'Dchec" &
-+         "k_Function" &
-+      --  Variant_Part
-+      "$Name#Variants" &
-+      --  With_Clause
-+      "$Name&Library_Unit'Corresponding_Spec,First_Name-Last_Name4Context_In" &
-+         "stalled+Elaborate_Present6Elaborate_All_Present7Implicit_With8Limi" &
-+         "ted_Present9Limited_View_Installed.Unreferenced_In_Spec/No_Entitie" &
-+         "s_Ref_In_Spec" &
-+      --  With_Type_Clause
-+      "$Name6Tagged_Present" &
-+      --  Unused_At_End
-+      "";
-+
-+   type Pchar_Pos_Array is array (Node_Kind) of Positive;
-+   Pchar_Pos : constant Pchar_Pos_Array := Pchar_Pos_Array'(
-+      N_Unused_At_Start                        => 1,
-+      N_At_Clause                              => 1,
-+      N_Component_Clause                       => 23,
-+      N_Enumeration_Representation_Clause      => 66,
-+      N_Mod_Clause                             => 107,
-+      N_Record_Representation_Clause           => 133,
-+      N_Attribute_Definition_Clause            => 187,
-+      N_Empty                                  => 253,
-+      N_Pragma                                 => 253,
-+      N_Pragma_Argument_Association            => 312,
-+      N_Error                                  => 323,
-+      N_Defining_Character_Literal             => 323,
-+      N_Defining_Identifier                    => 341,
-+      N_Defining_Operator_Symbol               => 359,
-+      N_Expanded_Name                          => 377,
-+      N_Identifier                             => 452,
-+      N_Operator_Symbol                        => 528,
-+      N_Character_Literal                      => 575,
-+      N_Op_Add                                 => 634,
-+      N_Op_Concat                              => 634,
-+      N_Op_Expon                               => 681,
-+      N_Op_Subtract                            => 705,
-+      N_Op_Divide                              => 705,
-+      N_Op_Mod                                 => 761,
-+      N_Op_Multiply                            => 802,
-+      N_Op_Rem                                 => 840,
-+      N_Op_And                                 => 881,
-+      N_Op_Eq                                  => 897,
-+      N_Op_Ge                                  => 897,
-+      N_Op_Gt                                  => 897,
-+      N_Op_Le                                  => 897,
-+      N_Op_Lt                                  => 897,
-+      N_Op_Ne                                  => 897,
-+      N_Op_Or                                  => 897,
-+      N_Op_Xor                                 => 913,
-+      N_Op_Rotate_Left                         => 929,
-+      N_Op_Rotate_Right                        => 944,
-+      N_Op_Shift_Left                          => 959,
-+      N_Op_Shift_Right                         => 974,
-+      N_Op_Shift_Right_Arithmetic              => 989,
-+      N_Op_Abs                                 => 1004,
-+      N_Op_Minus                               => 1004,
-+      N_Op_Not                                 => 1004,
-+      N_Op_Plus                                => 1004,
-+      N_Attribute_Reference                    => 1004,
-+      N_And_Then                               => 1128,
-+      N_Conditional_Expression                 => 1136,
-+      N_Explicit_Dereference                   => 1174,
-+      N_Function_Call                          => 1181,
-+      N_In                                     => 1323,
-+      N_Indexed_Component                      => 1323,
-+      N_Integer_Literal                        => 1342,
-+      N_Not_In                                 => 1378,
-+      N_Null                                   => 1378,
-+      N_Or_Else                                => 1378,
-+      N_Procedure_Call_Statement               => 1386,
-+      N_Qualified_Expression                   => 1528,
-+      N_Raise_Constraint_Error                 => 1552,
-+      N_Raise_Program_Error                    => 1569,
-+      N_Raise_Storage_Error                    => 1586,
-+      N_Aggregate                              => 1603,
-+      N_Allocator                              => 1759,
-+      N_Extension_Aggregate                    => 1836,
-+      N_Range                                  => 1939,
-+      N_Real_Literal                           => 1980,
-+      N_Reference                              => 2050,
-+      N_Selected_Component                     => 2057,
-+      N_Slice                                  => 2141,
-+      N_String_Literal                         => 2163,
-+      N_Subprogram_Info                        => 2189,
-+      N_Type_Conversion                        => 2200,
-+      N_Unchecked_Expression                   => 2315,
-+      N_Unchecked_Type_Conversion              => 2326,
-+      N_Subtype_Indication                     => 2381,
-+      N_Component_Declaration                  => 2421,
-+      N_Entry_Declaration                      => 2491,
-+      N_Formal_Object_Declaration              => 2583,
-+      N_Formal_Type_Declaration                => 2668,
-+      N_Full_Type_Declaration                  => 2769,
-+      N_Incomplete_Type_Declaration            => 2857,
-+      N_Loop_Parameter_Specification           => 2935,
-+      N_Object_Declaration                     => 2999,
-+      N_Protected_Type_Declaration             => 3246,
-+      N_Private_Extension_Declaration          => 3334,
-+      N_Private_Type_Declaration               => 3448,
-+      N_Subtype_Declaration                    => 3574,
-+      N_Function_Specification                 => 3648,
-+      N_Procedure_Specification                => 3740,
-+      N_Entry_Index_Specification              => 3819,
-+      N_Freeze_Entity                          => 3867,
-+      N_Access_Function_Definition             => 3935,
-+      N_Access_Procedure_Definition            => 3991,
-+      N_Task_Type_Declaration                  => 4034,
-+      N_Package_Body_Stub                      => 4137,
-+      N_Protected_Body_Stub                    => 4189,
-+      N_Subprogram_Body_Stub                   => 4241,
-+      N_Task_Body_Stub                         => 4287,
-+      N_Function_Instantiation                 => 4339,
-+      N_Package_Instantiation                  => 4425,
-+      N_Procedure_Instantiation                => 4511,
-+      N_Package_Body                           => 4597,
-+      N_Subprogram_Body                        => 4695,
-+      N_Protected_Body                         => 4922,
-+      N_Task_Body                              => 5004,
-+      N_Implicit_Label_Declaration             => 5142,
-+      N_Package_Declaration                    => 5178,
-+      N_Single_Task_Declaration                => 5247,
-+      N_Subprogram_Declaration                 => 5283,
-+      N_Use_Package_Clause                     => 5343,
-+      N_Generic_Package_Declaration            => 5386,
-+      N_Generic_Subprogram_Declaration         => 5483,
-+      N_Constrained_Array_Definition           => 5556,
-+      N_Unconstrained_Array_Definition         => 5606,
-+      N_Exception_Renaming_Declaration         => 5641,
-+      N_Object_Renaming_Declaration            => 5666,
-+      N_Package_Renaming_Declaration           => 5738,
-+      N_Subprogram_Renaming_Declaration        => 5774,
-+      N_Generic_Function_Renaming_Declaration  => 5824,
-+      N_Generic_Package_Renaming_Declaration   => 5860,
-+      N_Generic_Procedure_Renaming_Declaration => 5896,
-+      N_Abort_Statement                        => 5932,
-+      N_Accept_Statement                       => 5938,
-+      N_Assignment_Statement                   => 6033,
-+      N_Asynchronous_Select                    => 6119,
-+      N_Block_Statement                        => 6157,
-+      N_Case_Statement                         => 6322,
-+      N_Code_Statement                         => 6355,
-+      N_Conditional_Entry_Call                 => 6366,
-+      N_Delay_Relative_Statement               => 6405,
-+      N_Delay_Until_Statement                  => 6416,
-+      N_Entry_Call_Statement                   => 6427,
-+      N_Free_Statement                         => 6474,
-+      N_Goto_Statement                         => 6516,
-+      N_Loop_Statement                         => 6536,
-+      N_Null_Statement                         => 6621,
-+      N_Raise_Statement                        => 6621,
-+      N_Requeue_Statement                      => 6626,
-+      N_Return_Statement                       => 6645,
-+      N_Selective_Accept                       => 6719,
-+      N_Timed_Entry_Call                       => 6755,
-+      N_Exit_Statement                         => 6796,
-+      N_If_Statement                           => 6811,
-+      N_Accept_Alternative                     => 6874,
-+      N_Delay_Alternative                      => 6950,
-+      N_Elsif_Part                             => 7002,
-+      N_Entry_Body_Formal_Part                 => 7046,
-+      N_Iteration_Scheme                       => 7107,
-+      N_Terminate_Alternative                  => 7164,
-+      N_Abortable_Part                         => 7203,
-+      N_Abstract_Subprogram_Declaration        => 7214,
-+      N_Access_Definition                      => 7228,
-+      N_Access_To_Object_Definition            => 7241,
-+      N_Case_Statement_Alternative             => 7289,
-+      N_Compilation_Unit                       => 7317,
-+      N_Compilation_Unit_Aux                   => 7456,
-+      N_Component_Association                  => 7506,
-+      N_Component_Definition                   => 7550,
-+      N_Component_List                         => 7585,
-+      N_Derived_Type_Definition                => 7627,
-+      N_Decimal_Fixed_Point_Definition         => 7685,
-+      N_Defining_Program_Unit_Name             => 7745,
-+      N_Delta_Constraint                       => 7770,
-+      N_Designator                             => 7804,
-+      N_Digits_Constraint                      => 7820,
-+      N_Discriminant_Association               => 7855,
-+      N_Discriminant_Specification             => 7881,
-+      N_Enumeration_Type_Definition            => 7948,
-+      N_Entry_Body                             => 7967,
-+      N_Entry_Call_Alternative                 => 8074,
-+      N_Exception_Declaration                  => 8121,
-+      N_Exception_Handler                      => 8170,
-+      N_Floating_Point_Definition              => 8235,
-+      N_Formal_Decimal_Fixed_Point_Definition  => 8278,
-+      N_Formal_Derived_Type_Definition         => 8278,
-+      N_Formal_Discrete_Type_Definition        => 8324,
-+      N_Formal_Floating_Point_Definition       => 8324,
-+      N_Formal_Modular_Type_Definition         => 8324,
-+      N_Formal_Ordinary_Fixed_Point_Definition => 8324,
-+      N_Formal_Package_Declaration             => 8324,
-+      N_Formal_Private_Type_Definition         => 8411,
-+      N_Formal_Signed_Integer_Type_Definition  => 8459,
-+      N_Formal_Subprogram_Declaration          => 8459,
-+      N_Generic_Association                    => 8498,
-+      N_Handled_Sequence_Of_Statements         => 8546,
-+      N_Index_Or_Discriminant_Constraint       => 8638,
-+      N_Itype_Reference                        => 8650,
-+      N_Label                                  => 8656,
-+      N_Modular_Type_Definition                => 8682,
-+      N_Number_Declaration                     => 8693,
-+      N_Ordinary_Fixed_Point_Definition        => 8742,
-+      N_Others_Choice                          => 8784,
-+      N_Package_Specification                  => 8819,
-+      N_Parameter_Association                  => 8928,
-+      N_Parameter_Specification                => 8986,
-+      N_Protected_Definition                   => 9115,
-+      N_Range_Constraint                       => 9187,
-+      N_Real_Range_Specification               => 9204,
-+      N_Record_Definition                      => 9225,
-+      N_Signed_Integer_Type_Definition         => 9311,
-+      N_Single_Protected_Declaration           => 9332,
-+      N_Subunit                                => 9373,
-+      N_Task_Definition                        => 9409,
-+      N_Triggering_Alternative                 => 9547,
-+      N_Use_Type_Clause                        => 9594,
-+      N_Validate_Unchecked_Conversion          => 9645,
-+      N_Variant                                => 9669,
-+      N_Variant_Part                           => 9748,
-+      N_With_Clause                            => 9762,
-+      N_With_Type_Clause                       => 9976,
-+      N_Unused_At_End                          => 9996);
-+
-+end Treeprs;
diff --git a/gcc-ada-link.patch b/gcc-ada-link.patch
deleted file mode 100644 (file)
index 339e870..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
---- gcc-3.4.0/gcc/ada/link.c.orig      Mon Jan 12 12:45:24 2004
-+++ gcc-3.4.0/gcc/ada/link.c   Tue Jun  1 15:57:42 2004
-@@ -165,9 +165,9 @@
- #elif defined (linux)
- const char *object_file_option = "";
--const char *run_path_option = "-Wl,-rpath,";
--char shared_libgnat_default = STATIC;
--int link_max = 8192;
-+const char *run_path_option = "";
-+char shared_libgnat_default = SHARED;
-+int link_max = 131072;
- unsigned char objlist_file_supported = 1;
- unsigned char using_gnu_linker = 1;
- const char *object_library_extension = ".a";
---- gcc-3.4.0/gcc/ada/Makefile.in.orig Mon Apr 26 11:19:09 2004
-+++ gcc-3.4.0/gcc/ada/Makefile.in      Tue Jun  1 15:58:33 2004
-@@ -142,7 +142,7 @@
- objext = .o
- exeext =
- arext  = .a
--soext  = .so
-+soext  = .so.1
- shext  =
- # Define this as & to perform parallel make on a Sequent.
-@@ -1269,6 +1269,90 @@
-   LIBRARY_VERSION := $(LIB_VERSION)
- endif
-+ifeq ($(strip $(filter-out alpha% linux%,$(arch) $(osys))),)
-+  LIBGNAT_TARGET_PAIRS = \
-+  a-intnam.ads<4lintnam.ads \
-+  s-inmaop.adb<7sinmaop.adb \
-+  s-intman.adb<7sintman.adb \
-+  s-osinte.ads<5iosinte.ads \
-+  s-osinte.adb<5iosinte.adb \
-+  s-osprim.adb<7sosprim.adb \
-+  s-taprop.adb<5itaprop.adb \
-+  s-tpopsp.adb<5atpopsp.adb \
-+  s-taspri.ads<5itaspri.ads \
-+  system.ads<5nsystem.ads
-+  TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
-+  THREADSLIB=-lpthread
-+  GNATLIB_SHARED=gnatlib-shared-dual
-+  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
-+  LIBRARY_VERSION := $(LIB_VERSION)
-+endif
-+
-+ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),)
-+  LIBGNAT_TARGET_PAIRS = \
-+  a-intnam.ads<4lintnam.ads \
-+  s-inmaop.adb<7sinmaop.adb \
-+  s-intman.adb<7sintman.adb \
-+  s-osinte.ads<5iosinte.ads \
-+  s-osinte.adb<5iosinte.adb \
-+  s-osprim.adb<7sosprim.adb \
-+  s-taprop.adb<5itaprop.adb \
-+  s-tpopsp.adb<5atpopsp.adb \
-+  s-taspri.ads<5itaspri.ads
-+#  system.ads<5ssystem.ads  (Tick and Stack_Check_Probes differ)
-+  TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
-+  THREADSLIB=-lpthread
-+  GNATLIB_SHARED=gnatlib-shared-dual
-+  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
-+  LIBRARY_VERSION := $(LIB_VERSION)
-+endif
-+
-+ifeq ($(strip $(filter-out ppc% linux%,$(arch) $(osys))),)
-+  LIBGNAT_TARGET_PAIRS = \
-+  a-intnam.ads<4lintnam.ads \
-+  s-inmaop.adb<7sinmaop.adb \
-+  s-intman.adb<7sintman.adb \
-+  s-osinte.ads<5iosinte.ads \
-+  s-osinte.adb<5iosinte.adb \
-+  s-osprim.adb<7sosprim.adb \
-+  s-taprop.adb<5itaprop.adb \
-+  s-tpopsp.adb<5atpopsp.adb \
-+  s-taspri.ads<5itaspri.ads
-+#  system.ads<59system.ads  (???)
-+  TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
-+  THREADSLIB=-lpthread
-+  GNATLIB_SHARED=gnatlib-shared-dual
-+  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
-+  LIBRARY_VERSION := $(LIB_VERSION)
-+endif
-+
-+ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
-+  LIBGNAT_TARGET_PAIRS = \
-+  a-intnam.ads<4lintnam.ads \
-+  s-inmaop.adb<7sinmaop.adb \
-+  s-intman.adb<7sintman.adb \
-+  s-osinte.ads<5iosinte.ads \
-+  s-osinte.adb<5iosinte.adb \
-+  s-osprim.adb<7sosprim.adb \
-+  s-taprop.adb<5itaprop.adb \
-+  s-tpopsp.adb<5atpopsp.adb \
-+  s-taspri.ads<5itaspri.ads
-+#  system.ads<59system.ads  (???)
-+  TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
-+  THREADSLIB=-lpthread
-+  GNATLIB_SHARED=gnatlib-shared-dual
-+  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
-+  LIBRARY_VERSION := $(LIB_VERSION)
-+endif
-+
-+ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),)
-+  TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
-+  THREADSLIB=-lpthread
-+  GNATLIB_SHARED=gnatlib-shared-dual
-+  PREFIX_OBJS=$(PREFIX_REAL_OBJS)
-+  LIBRARY_VERSION := $(LIB_VERSION)
-+endif
-+
- ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
-   LIBGNAT_TARGET_PAIRS = \
-   a-intnam.ads<4lintnam.ads \
-@@ -1767,6 +1840,9 @@
- # is guaranteed to overflow the buffer.
- gnatlib: ../stamp-gnatlib1 ../stamp-gnatlib2
-+      $(RMDIR) save
-+      $(MKDIR) save
-+      $(MV) *.o save/
-       $(MAKE) -C rts CC="../../xgcc -B../../" \
-               INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
-                 CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
-@@ -1779,6 +1855,8 @@
-               srcdir=$(fsrcdir) \
-               -f ../Makefile \
-               $(GNATRTL_OBJS)
-+      $(MV) save/*.o .
-+      $(RMDIR) save
-       $(RM) rts/libgnat$(arext) rts/libgnarl$(arext)
-       $(AR) $(AR_FLAGS) rts/libgnat$(arext) \
-          $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS))
-@@ -1891,14 +1969,15 @@
-            THREAD_KIND="$(THREAD_KIND)" \
-              gnatlib
-       $(RM) rts/libgnat$(soext) rts/libgnarl$(soext)
--      cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
-+      cd rts; ../../xgcc -B../../ -shared -shared-libgcc $(TARGET_LIBGCC2_CFLAGS) \
-               -o libgnat-$(LIBRARY_VERSION)$(soext) \
-               $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
-               $(SO_OPTS)libgnat-$(LIBRARY_VERSION)$(soext) $(MISCLIB) -lm
-       cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
-               -o libgnarl-$(LIBRARY_VERSION)$(soext) \
-               $(GNATRTL_TASKING_OBJS) \
--              $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) $(THREADSLIB)
-+              $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) $(THREADSLIB) \
-+              ./libgnat-$(LIBRARY_VERSION)$(soext)
-       cd rts; $(LN_S) libgnat-$(LIBRARY_VERSION)$(soext) libgnat$(soext)
-       cd rts; $(LN_S) libgnarl-$(LIBRARY_VERSION)$(soext) libgnarl$(soext)
diff --git a/gcc-alpha-complex-float.patch b/gcc-alpha-complex-float.patch
deleted file mode 100644 (file)
index 78b29ad..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-#! /bin/sh -e
-
-# All lines beginning with `# DP:' are a description of the patch.
-# DP: Fix for complex math on alpha
-
-if [ $# -eq 3 -a "$2" = '-d' ]; then
-    pdir="-d $3"
-elif [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-case "$1" in
-    -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
-    -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
-    *)
-       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-       exit 1
-esac
-exit 0
-
-(from Joel Klecker's original message):
-
- I've tested this patch with building glibc and it enables it to compile, I
- haven't been able to test the resulting binaries yet, however. I assume
- this will fix the g77 problems too.
-
-        * flow.c (insn_dead_p): Don't kill part of a complex number.
-        * emit-rtl.c (gen_lowpart_common): Handle narrow complex reg values.
-          (gen_highpart): Likewise.
-        * calls.c (expand_call): Narrow complex variable uses two regs.
-        * alpha/alpha.h (ALPHA_ARG_SIZE): Likewise.
-          (HARD_REGNO_NREGS): Likewise.
-
-diff -ur gcc-2.95.2/gcc/calls.c gcc-2.95.2.patched/gcc/calls.c
---- gcc-2.95.2/gcc/calls.c     Fri May  7 21:58:39 1999
-+++ gcc-2.95.2.patched/gcc/calls.c     Sat Feb 19 14:26:21 2000
-@@ -1499,6 +1499,11 @@
-                              validize_mem (args[i].value), nregs,
-                              args[i].mode);
-+        /* Indicate two regs used to hold a short complex arg.  */
-+        if (GET_MODE_CLASS (args[i].mode) == MODE_COMPLEX_FLOAT
-+            && GET_MODE_SIZE (args[i].mode) <= UNITS_PER_WORD)
-+          nregs = 2;
-+
-         /* Handle calls that pass values in multiple non-contiguous
-            locations.  The Irix 6 ABI has examples of this.  */
-         if (GET_CODE (reg) == PARALLEL)
-diff -ur gcc-2.95.2/gcc/config/alpha/alpha.h gcc-2.95.2.patched/gcc/config/alpha/alpha.h
---- gcc-2.95.2/gcc/config/alpha/alpha.h        Fri Jun 25 01:09:12 1999
-+++ gcc-2.95.2.patched/gcc/config/alpha/alpha.h        Sat Feb 19 14:28:45 2000
-@@ -622,7 +622,10 @@
-    but can be less for certain modes in special long registers.  */
- #define HARD_REGNO_NREGS(REGNO, MODE)   \
--  ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
-+ ((GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT                        \
-+   && GET_MODE_SIZE (MODE) <= UNITS_PER_WORD)                 \
-+  ? 2                                                         \
-+  : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
- /* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
-    On Alpha, the integer registers can hold any mode.  The floating-point
-@@ -1070,12 +1073,16 @@
- #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT)  (CUM) = 0
- /* Define intermediate macro to compute the size (in registers) of an argument
--   for the Alpha.  */
-+   for the Alpha.
-+   A short complex arg takes two registers.  */
- #define ALPHA_ARG_SIZE(MODE, TYPE, NAMED)                             \
--((MODE) != BLKmode                                                    \
-- ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD     \
-- : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
-+ ((GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT                                \
-+   && GET_MODE_SIZE (MODE) <= UNITS_PER_WORD)                         \
-+  ? 2                                                                         \
-+  : ((MODE) != BLKmode                                                        \
-+     ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD         \
-+     : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD))
- /* Update the data in CUM to advance over an argument
-    of mode MODE and data type TYPE.
-diff -ur gcc-2.95.2/gcc/emit-rtl.c gcc-2.95.2.patched/gcc/emit-rtl.c
---- gcc-2.95.2/gcc/emit-rtl.c  Wed Aug 11 03:28:52 1999
-+++ gcc-2.95.2.patched/gcc/emit-rtl.c  Sat Feb 19 14:31:19 2000
-@@ -749,6 +749,15 @@
-         && ! HARD_REGNO_MODE_OK (REGNO (x) + word, mode)
-         && HARD_REGNO_MODE_OK (REGNO (x), GET_MODE (x)))
-       return 0;
-+      else if (GET_MODE_CLASS (GET_MODE (x)) == MODE_COMPLEX_FLOAT
-+             && GET_MODE_SIZE (GET_MODE (x)) <= UNITS_PER_WORD
-+             && REGNO (x) < FIRST_PSEUDO_REGISTER)
-+      {
-+        if (REG_FUNCTION_VALUE_P (x))
-+          return gen_rtx (SUBREG, mode, x, 0);
-+        else
-+          return gen_rtx (REG, mode, REGNO (x));
-+      }
-       else if (REGNO (x) < FIRST_PSEUDO_REGISTER
-              /* integrate.c can't handle parts of a return value register. */
-              && (! REG_FUNCTION_VALUE_P (x)
-@@ -972,11 +981,6 @@
- {
-   if (GET_CODE (x) == CONCAT && GET_MODE (XEXP (x, 0)) == mode)
-     return XEXP (x, 0);
--  else if (WORDS_BIG_ENDIAN
--         && GET_MODE_BITSIZE (mode) < BITS_PER_WORD
--         && REG_P (x)
--         && REGNO (x) < FIRST_PSEUDO_REGISTER)
--    fatal ("Unable to access real part of complex value in a hard register on this target");
-   else if (WORDS_BIG_ENDIAN)
-     return gen_highpart (mode, x);
-   else
-@@ -995,11 +999,6 @@
-     return XEXP (x, 1);
-   else if (WORDS_BIG_ENDIAN)
-     return gen_lowpart (mode, x);
--  else if (!WORDS_BIG_ENDIAN
--         && GET_MODE_BITSIZE (mode) < BITS_PER_WORD
--         && REG_P (x)
--         && REGNO (x) < FIRST_PSEUDO_REGISTER)
--    fatal ("Unable to access imaginary part of complex value in a hard register on this target");
-   else
-     return gen_highpart (mode, x);
- }
-@@ -1134,6 +1133,16 @@
-       word = ((GET_MODE_SIZE (GET_MODE (x))
-                - MAX (GET_MODE_SIZE (mode), UNITS_PER_WORD))
-               / UNITS_PER_WORD);
-+
-+      if (GET_MODE_CLASS (GET_MODE (x)) == MODE_COMPLEX_FLOAT
-+        && GET_MODE_SIZE (GET_MODE (x)) <= UNITS_PER_WORD
-+        && REGNO (x) < FIRST_PSEUDO_REGISTER)
-+      {
-+        if (REG_FUNCTION_VALUE_P (x))
-+          return gen_rtx (SUBREG, mode, x, 1);
-+        else
-+          return gen_rtx (REG, mode, REGNO (x) + 1);
-+      }
-       if (REGNO (x) < FIRST_PSEUDO_REGISTER
-         /* integrate.c can't handle parts of a return value register.  */
-diff -ur gcc-2.95.2/gcc/flow.c gcc-2.95.2.patched/gcc/flow.c
---- gcc-2.95.2/gcc/flow.c      Wed Aug  4 03:09:48 1999
-+++ gcc-2.95.2.patched/gcc/flow.c      Sat Feb 19 14:34:02 2000
-@@ -2995,6 +2995,10 @@
-             while (--n > 0)
-               if (REGNO_REG_SET_P (needed, regno+n))
-                 return 0;
-+
-+            /* Don't allow part of a complex number to be deleted.  */
-+            if (GET_MODE_CLASS (GET_MODE (r)) == MODE_COMPLEX_FLOAT)
-+              return 0;
-           }
-         return 1;
-
-
diff --git a/gcc-bootstrap.patch b/gcc-bootstrap.patch
deleted file mode 100644 (file)
index 94c8c20..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-# DP: Make bootstrap: restartable at any point
-# DP: From: Donn Terry <donn@interix.com>
-
-Make bootstrap: restartable at any point.
-
-This is in response to a discussion on this topic.  This is "take 2"          |
-which should work with parallel builds, though I haven't tested that.         |
-
-When doing a make bootstrap, it's hard to know (at least when
-not throughly versed in the process details) how to restart
-after making a fix.  In general, retyping "make bootstrap"
-will do the wrong thing (particularly if the host and target
-compilers object files are incompatible!)
-
-This change keeps track of the stages completed.  The old 
-bootstrap2[234] (and *-lean) targets are rewritten, but work the
-same.
-
-I've tested this by doing a make bootstrap (on CVS sources as of              |
-last night) and by typing 'make bootstrap' after it's done,                   |
-in which case it thinks a moment and does nothing. (Which is exactly
-the right answer.)
-
-I've also done a complete regression, with no surprises.                      |
-
-I tested whether stopping/restarting at a few arbitrary points along the
-way works with older sources, but haven't tested it real recently,
-except to do a ^C halfway through a testbuild at one point.                   |
-Again, if it works at all, it should work as well as it ever did.
-I specficially did test it during the period where make bootstrap
-wasn't succeeding for me, and it helped a LOT in being able to pick up
-where I left off.  
-
-An interesting side-effect: make bootstrap-lean after a make bootstrap        |
-JUST cleans out stage1, with no unwanted consequences.                        |
-
-
-Fri May 28 15:27:02 1999  Donn Terry (donn@interix.com)
-       * Makefile.in: restructure bootstrap stages to allow 
-       clean restart after failure.
-
-diff -urP egcs.source.old/gcc/Makefile.in egcs.source/gcc/Makefile.in
---- egcs.source.old/gcc/Makefile.in    Sun May 23 13:39:21 1999
-+++ egcs.source/gcc/Makefile.in        Thu May 27 16:59:42 1999
-@@ -2360,6 +2360,8 @@ clean: mostlyclean intl.clean lang.clean
-         rm -rf `echo $(MULTILIB_OPTIONS) | sed -e 's/\// /g'`; \
-       fi ; fi
-       -rm -fr stage1 stage2 stage3 stage4
-+      -rm -f boot_stage_a boot_stage_b boot_stage_c boot_stage_d
-+      -rm -f boot_stage_e boot_stage_f
- # Delete all files that users would normally create
- # while building and installing GCC.
-@@ -2924,33 +2926,83 @@ diff:
-         $(LANG_DIFF_EXCLUDES) \
-         gcc-$(oldversion) gcc-$(version) &gt; gcc-$(oldversion)-$(version).diff
--bootstrap bootstrap-lean: force
-+
- # Only build the C compiler for stage1, because that is the only one that
- # we can guarantee will build with the native compiler, and also it is the
- # only thing useful for building stage2.
--      $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)"
--      $(MAKE) stage1
-+boot_stage_a:
-+      +$(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)"
-+      touch boot_stage_a
-+      echo ---------------------- stage a complete ---------------------
-+
-+boot_stage_b:
-+      +$(MAKE) stage1
-+      touch boot_stage_b
-+      echo ---------------------- stage b complete ---------------------
-+
- # This used to define ALLOCA as empty, but that would lead to bad results
- # for a subsequent `make install' since that would not have ALLOCA empty.
- # To prevent `make install' from compiling alloca.o and then relinking cc1
- # because alloca.o is newer, we permit these recursive makes to compile
- # alloca.o.  Then cc1 is newer, so it won't have to be relinked.
--      $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
--      $(MAKE) stage2
--      -if test $@ = bootstrap-lean; then rm -rf stage1; else true; fi
--      $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-+boot_stage_c:
-+      +$(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
-+      touch boot_stage_c
-+      echo ---------------------- stage c complete ---------------------
--bootstrap2 bootstrap2-lean: force
--      $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
--      $(MAKE) stage2
--      -if test $@ = bootstrap2-lean; then rm -rf stage1; else true; fi
--      $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-+boot_stage_d:
-+      +$(MAKE) stage2
-+      touch boot_stage_d
-+      echo ---------------------- stage d complete ---------------------
--bootstrap3 bootstrap3-lean: force
--      $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-+boot_stage_e:
-+      +$(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-+      touch boot_stage_e
-+      echo ---------------------- stage e complete ---------------------
-+
-+# Only bootstrap4 uses stage f.
-+boot_stage_f:
-+      +$(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
-+      touch boot_stage_f
-+      echo ---------------------- stage f complete ---------------------
-+
-+boot_clean_stage1:
-+      rm -rf stage1
-+
-+# This next little bit is the way it is for parallel builds.  It's simply
-+# a chain of stages which DO have to be done sequentially.
-+
-+bootstrap_a:              boot_stage_a
-+bootstrap_b:  bootstrap_a boot_stage_b
-+bootstrap_c:  bootstrap_b boot_stage_c
-+bootstrap_d:  bootstrap_c boot_stage_d
-+bootstrap_e:  bootstrap_d boot_stage_e
-+bootstrap: force bootstrap_e
-+
-+bootstrap-lean_a:                   boot_stage_a
-+bootstrap-lean_b:  bootstrap-lean_a boot_stage_b
-+bootstrap-lean_c:  bootstrap-lean_b boot_stage_c
-+bootstrap-lean_d:  bootstrap-lean_c boot_stage_d
-+bootstrap-lean_e:  bootstrap-lean_d boot_clean_stage1
-+bootstrap-lean_f:  bootstrap-lean_e boot_stage_e
-+bootstrap-lean: force bootstrap-lean_f
-+
-+bootstrap2_c:               boot_stage_c
-+bootstrap2_d:  bootstrap2_c boot_stage_d
-+bootstrap2_e:  bootstrap2_d boot_stage_e
-+bootstrap2: force bootstrap2_e
-+
-+bootstrap2-lean_c:                    boot_stage_c
-+bootstrap2-lean_d:  bootstrap2-lean_c boot_stage_d
-+bootstrap2-lean_e:  bootstrap2-lean_d boot_clean_stage1
-+bootstrap2-lean_f:  bootstrap2-lean_e boot_stage_e
-+bootstrap2-lean: force bootstrap2-lean_f
-+
-+bootstrap3 bootstrap3-lean: force boot_stage_e
-+
-+# Only bootstrap4 uses stage f.
-+bootstrap4 bootstrap4-lean: force boot_stage_f
--bootstrap4 bootstrap4-lean: force
--      $(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
- # Compare the object files in the current directory with those in the
- # stage2 directory.
diff --git a/gcc-builtin-apply.patch b/gcc-builtin-apply.patch
deleted file mode 100644 (file)
index b452e50..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-# DP: On Sparc, message forwarding in the GNUstep framework
-# DP: (gstep-base) relies on this patch. I didn't experience any side
-# DP: effects of this "workaround" on a sparc Solaris platform. However
-# DP: this workaround affects the all compilers of the egcs package.
-
-From: Richard Henderson <rth@dot.cygnus.com>
-To: Matthias.Klose@cs.tu-berlin.de, scottc@net-community.com
-Subject: Re: patch for expand_builtin_apply for sparc architecture
-Date: Mon, 16 Feb 1998 05:11:32 -0800
-
-In article <199802160833.JAA11275.cygnus.egcs.bugs@gargleblaster.cs.tu-berlin.de>,
-Matthias Klose <Matthias.Klose@cs.tu-berlin.de> wrote:
->The following patch fixes the generation of an 'unimp 4095'
->instruction for the expansion of __builtin_apply on the sparc
->architecture; fix by Scott Christley (<scottc@net-community.com>), but
->doesn't seem to be submitted to the the egcs list.
-
-You'll have to submit a test case and an explanation of why you think
-this is correct.  The Sparc32 ABI calls for an unimp instruction to
-be emitted following calls to functions that return structures.  The
-0-4095 immediate is commentary, but that's all the room in that field
-so we cannot simply remove the mask.
-
-My guess is that it is yet another example of why __builtin_apply
-is inadequate for the needs of all but completely stack-based calling
-conventions and should not be used.
-
-
-r~
-
-diff -c gcc/config/sparc/sparc.md~ gcc/config/sparc/sparc.md
-*** gcc/config/sparc/sparc.md~ Mon Nov 16 12:31:32 1998
---- gcc/config/sparc/sparc.md  Mon Nov 16 12:35:56 1998
-***************
-*** 7294,7299 ****
---- 7294,7300 ----
-        Why cannot we have delay slots filled if it were a CALL?  */
-  
-        if (! TARGET_ARCH64 && INTVAL (operands[3]) != 0)
-+ #if 0
-       emit_jump_insn
-         (gen_rtx_PARALLEL (VOIDmode,
-                   gen_rtvec (3,
-***************
-*** 7302,7307 ****
---- 7303,7318 ----
-                              GEN_INT (INTVAL (operands[3]) & 0xfff),
-                              gen_rtx_CLOBBER (VOIDmode,
-                                       gen_rtx_REG (Pmode, 15)))));
-+ #else
-+      emit_jump_insn
-+        (gen_rtx_PARALLEL (VOIDmode,
-+                  gen_rtvec (3,
-+                             gen_rtx_SET (VOIDmode, pc_rtx,
-+                                      XEXP (operands[0], 0)),
-+                             operands[3],
-+                             gen_rtx_CLOBBER (VOIDmode,
-+                                      gen_rtx_REG (Pmode, 15)))));
-+ #endif
-        else
-       emit_jump_insn
-         (gen_rtx_PARALLEL (VOIDmode,
diff --git a/gcc-cpp-dos-newlines.patch b/gcc-cpp-dos-newlines.patch
deleted file mode 100644 (file)
index d05d6b8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-# DP: Handle DOS newlines after backslashes.
-# DP: Patch from http://www.cygnus.com/ml/egcs/1999-Jan/0784.html
-
---- gcc/cccp.c.orig    Thu Jun 24 15:11:40 1999
-+++ gcc/cccp.c Mon Aug  9 12:21:55 1999
-@@ -1023,7 +1023,8 @@
-    retrying if necessary.  If MAX_READ_LEN is defined, read at most
-    that bytes at a time.  Return a negative value if an error occurs,
-    otherwise return the actual number of bytes read,
--   which must be LEN unless end-of-file was reached.  */
-+   which may be < LEN if CRs have been skipped, though we try not to do
-+   that.  */
- static int
- safe_read (desc, ptr, len)
-@@ -1032,6 +1033,7 @@
-      int len;
- {
-   int left, rcount, nchars;
-+  char *rptr;
-   left = len;
-   while (left > 0) {
-@@ -1051,8 +1053,20 @@
-       }
-     if (nchars == 0)
-       break;
--    ptr += nchars;
-+
-+    /* CRLF pairs, found with Unix when processing DOS files,
-+       throw off backslash-newline removal.
-+       Therefore, CRs are thrown away here. */
-     left -= nchars;
-+    rptr = ptr;
-+    while(nchars--)
-+      {
-+      if(*rptr == '\r' && *(rptr+1) == '\n')
-+        left++;
-+      else
-+        *ptr++ = *rptr;
-+      rptr++;
-+      }
-   }
-   return len - left;
- }
-@@ -2085,8 +2099,8 @@
-     for (;;) {
-       cnt = safe_read (f, (char *) fp->buf + size, bsize - size);
-       if (cnt < 0) goto perror;       /* error! */
-+      if (cnt == 0) break; /* End of file */
-       size += cnt;
--      if (size != bsize) break;       /* End of file */
-       bsize *= 2;
-       fp->buf = (U_CHAR *) xrealloc (fp->buf, bsize + 2);
-     }
-@@ -5024,6 +5038,8 @@
-         map_list_ptr->map_list_map = ptr;
-         while ((ch = getc (f)) != '\n')
-+          if (ch == '\r')
-+              continue;
-           if (ch == EOF)
-             break;
-       }
-@@ -5256,9 +5272,9 @@
-       i = safe_read (f, (char *) fp->buf + st_size, bsize - st_size);
-       if (i < 0)
-       goto nope;      /* error! */
--      st_size += i;
--      if (st_size != bsize)
-+      if (i == 0)
-       break;  /* End of file */
-+      st_size += i;
-       bsize *= 2;
-       fp->buf = (U_CHAR *) xrealloc (fp->buf, bsize + 2);
-     }
diff --git a/gcc-cpp-macro-doc.patch b/gcc-cpp-macro-doc.patch
deleted file mode 100644 (file)
index 54b336f..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-# DP: cpp.texi: add a node documenting macro varargs.
-
-Sat Aug  7 14:56:50 1999  Matthias Klose  <doko@cs.tu-berlin.de>
-
-       * cpp.texi: cpp.texi: add a node documenting macro varargs (copied
-       from extend.texi.
-
---- gcc/cpp.texi~      Wed May 19 13:22:57 1999
-+++ gcc/cpp.texi       Sat Aug  7 14:53:42 1999
-@@ -542,6 +542,7 @@
- * Simple Macros::    Macros that always expand the same way.
- * Argument Macros::  Macros that accept arguments that are substituted
-                        into the macro expansion.
-+* Macro Varargs::    Macros with variable number of arguments.
- * Predefined::       Predefined macros that are always available.
- * Stringification::  Macro arguments converted into string constants.
- * Concatenation::    Building tokens from parts taken from macro arguments.
-@@ -645,7 +646,7 @@
- that the result of its expansion is checked for more macro names.
- @xref{Cascaded Macros}.
--@node Argument Macros, Predefined, Simple Macros, Macros
-+@node Argument Macros, Macro Varargs, Simple Macros, Macros
- @subsection Macros with Arguments
- @cindex macros with argument
- @cindex arguments in macro definitions
-@@ -799,7 +800,68 @@
- the left parenthesis; it's the @emph{definition} where it matters whether
- there is a space.
--@node Predefined, Stringification, Argument Macros, Macros
-+@node Macro Varargs, Predefined, Argument Macros, Macros
-+@subsection Macros with Variable Numbers of Arguments
-+@cindex variable number of arguments
-+@cindex macro with variable arguments
-+@cindex rest argument (in macro)
-+
-+In GNU C, a macro can accept a variable number of arguments, much as a
-+function can.  The syntax for defining the macro looks much like that
-+used for a function.  Here is an example:
-+
-+@example
-+#define eprintf(format, args...)  \
-+ fprintf (stderr, format , ## args)
-+@end example
-+
-+Here @code{args} is a @dfn{rest argument}: it takes in zero or more
-+arguments, as many as the call contains.  All of them plus the commas
-+between them form the value of @code{args}, which is substituted into
-+the macro body where @code{args} is used.  Thus, we have this expansion:
-+
-+@example
-+eprintf ("%s:%d: ", input_file_name, line_number)
-+@expansion{}
-+fprintf (stderr, "%s:%d: " , input_file_name, line_number)
-+@end example
-+
-+@noindent
-+Note that the comma after the string constant comes from the definition
-+of @code{eprintf}, whereas the last comma comes from the value of
-+@code{args}.
-+
-+The reason for using @samp{##} is to handle the case when @code{args}
-+matches no arguments at all.  In this case, @code{args} has an empty
-+value.  In this case, the second comma in the definition becomes an
-+embarrassment: if it got through to the expansion of the macro, we would
-+get something like this:
-+
-+@example
-+fprintf (stderr, "success!\n" , )
-+@end example
-+
-+@noindent
-+which is invalid C syntax.  @samp{##} gets rid of the comma, so we get
-+the following instead:
-+
-+@example
-+fprintf (stderr, "success!\n")
-+@end example
-+
-+This is a special feature of the GNU C preprocessor: @samp{##} before a
-+rest argument that is empty discards the preceding sequence of
-+non-whitespace characters from the macro definition.  (If another macro
-+argument precedes, none of it is discarded.)
-+
-+It might be better to discard the last preprocessor token instead of the
-+last preceding sequence of non-whitespace characters; in fact, we may
-+someday change this feature to do so.  We advise you to write the macro
-+definition so that the preceding sequence of non-whitespace characters
-+is just a single token, so that the meaning will not change if we change
-+the definition of this feature.
-+
-+@node Predefined, Stringification, Macro Varargs, Macros
- @subsection Predefined Macros
- @cindex predefined macros
diff --git a/gcc-crtendS.patch b/gcc-crtendS.patch
deleted file mode 100644 (file)
index 7874c32..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-diff -urN gcc-2.95.3.org/gcc/config/i386/linux.h gcc-2.95.3/gcc/config/i386/linux.h
---- gcc-2.95.3.org/gcc/config/i386/linux.h     Mon Mar 19 19:35:22 2001
-+++ gcc-2.95.3/gcc/config/i386/linux.h Mon Mar 19 19:36:46 2001
-@@ -234,3 +234,21 @@
-     }                                                                 \
-   } while (0)
- #endif
-+
-+#if defined(__PIC__) && defined (USE_GNULIBC_1)
-+/* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
-+   __environ and atexit (). We have to make sure they are in the .dynsym
-+   section. We accomplish it by making a dummy call here. This
-+   code is never reached.  */
-+
-+#define CRT_END_INIT_DUMMY             \
-+  do                                   \
-+    {                                  \
-+      extern void *___brk_addr;                \
-+      extern char **__environ;         \
-+                                       \
-+      ___brk_addr = __environ;         \
-+      atexit (0);                      \
-+    }                                  \
-+  while (0)
-+#endif
-diff -urN gcc-2.95.3.org/gcc/crtstuff.c gcc-2.95.3/gcc/crtstuff.c
---- gcc-2.95.3.org/gcc/crtstuff.c      Mon Mar 19 19:35:22 2001
-+++ gcc-2.95.3/gcc/crtstuff.c  Mon Mar 19 19:37:56 2001
-@@ -379,20 +379,8 @@
-   FORCE_INIT_SECTION_ALIGN;
- #endif
-   asm (TEXT_SECTION_ASM_OP);
--
--/* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
--   __environ and atexit (). We have to make sure they are in the .dynsym
--   section. We accomplish it by making a dummy call here. This
--   code is never reached.  */
-- 
--#if defined(__linux__) && defined(__PIC__) && defined(__i386__)
--  {
--    extern void *___brk_addr;
--    extern char **__environ;
--
--    ___brk_addr = __environ;
--    atexit ();
--  }
-+#ifdef CRT_END_INIT_DUMMY
-+  CRT_END_INIT_DUMMY;
- #endif
- }
diff --git a/gcc-default-arch.patch b/gcc-default-arch.patch
deleted file mode 100644 (file)
index 0f23b8a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# DP: set the default architecture to i386; even if gcc is configured
-# DP: with i386-linux, it builds with Pentium instructions, tuned for i386.
-
-From: Joel Klecker <jk@espy.org>
-To: Matthias Klose <doko@cs.tu-berlin.de>
-Subject: Re: gcc: forwarded message from Markus F.X.J. Oberhumer
-Date: Wed, 11 Aug 1999 08:48:54 -0700
-
-Found it, and fixed it.
-
---- gcc/config/i386/i386.c~    Sat Aug 14 19:35:24 1999
-+++ gcc/config/i386/i386.c     Sat Aug 14 19:37:00 1999
-@@ -291,7 +291,7 @@
-   if (ix86_arch_string == 0)
-     {
--      ix86_arch_string = PROCESSOR_PENTIUM_STRING;
-+      ix86_arch_string = PROCESSOR_DEFAULT_STRING;
-       if (ix86_cpu_string == 0)
-       ix86_cpu_string = PROCESSOR_DEFAULT_STRING;
-     }
-@@ -308,7 +308,7 @@
-   if (i == ptt_size)
-     {
-       error ("bad value (%s) for -march= switch", ix86_arch_string);
--      ix86_arch_string = PROCESSOR_PENTIUM_STRING;
-+      ix86_arch_string = PROCESSOR_DEFAULT_STRING;
-       ix86_arch = PROCESSOR_DEFAULT;
-     }
diff --git a/gcc-disableshared.patch b/gcc-disableshared.patch
deleted file mode 100644 (file)
index d5d6006..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -urN gcc-20010319.org/gcc/configure.in gcc-20010319/gcc/configure.in
---- gcc-20010319.org/gcc/configure.in  Thu Mar 22 20:30:21 2001
-+++ gcc-20010319/gcc/configure.in      Thu Mar 22 20:32:01 2001
-@@ -329,6 +329,7 @@
-     ;;
-   esac
- ], [enable_shared=yes])
-+enable_shared=no
- AC_SUBST(enable_shared)
- # Determine the host, build, and target systems
diff --git a/gcc-gcc-page.c.patch b/gcc-gcc-page.c.patch
deleted file mode 100644 (file)
index 120a2df..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -urN gcc-3.2.2.org/gcc/ggc-page.c gcc-3.2.2/gcc/ggc-page.c
---- gcc-3.2.2.org/gcc/ggc-page.c       Tue Feb 18 14:27:56 2003
-+++ gcc-3.2.2/gcc/ggc-page.c   Tue Feb 18 14:28:16 2003
-@@ -346,9 +346,9 @@
-    one) before collection is performed.  */
- #define GGC_MIN_EXPAND_FOR_GC (1.3)
--/* Bound `allocated_last_gc' to 4MB, to prevent the memory expansion
-+/* Bound `allocated_last_gc' to 16MB, to prevent the memory expansion
-    test from triggering too often when the heap is small.  */
--#define GGC_MIN_LAST_ALLOCATED (4 * 1024 * 1024)
-+#define GGC_MIN_LAST_ALLOCATED (16 * 1024 * 1024)
- /* Allocate pages in chunks of this size, to throttle calls to memory
-    allocation routines.  The first page is used, the rest go onto the
diff --git a/gcc-gcj-vs-iconv.patch b/gcc-gcj-vs-iconv.patch
deleted file mode 100644 (file)
index 5ec32a1..0000000
+++ /dev/null
@@ -1,733 +0,0 @@
-#! /bin/sh -e
-
-if [ $# -eq 3 -a "$2" = '-d' ]; then
-    pdir="-d $3"
-elif [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-case "$1" in
-    -patch) patch $pdir -f --no-backup-if-mismatch -p0 -l < $0;;
-    -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 -l < $0;;
-    *)
-       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-       exit 1
-esac
-exit 0
-
-Patch: gcj -vs- iconv
-
-To: Gcc Patch List <gcc-patches at gcc dot gnu dot org> 
-Subject: Patch: gcj -vs- iconv
-From: Tom Tromey <tromey at cygnus dot com>
-Date: 06 Mar 2000 14:39:01 -0700
-Reply-To: tromey at cygnus dot com
-
-# DP: This patch changes gcj to use iconv(), when available, to read Java
-# DP: source files.  It adds a new `--encoding' option that lets the user
-# DP: choose what encoding to use.  For systems without iconv(), gcj still
-# DP: assumes that the input is UTF-8, but it no longer ignores encoding
-# DP: errors.
-# DP: 
-# DP: This patch does have one minor problem, which is that if --encoding is
-# DP: not specified we default to UTF-8 instead of the encoding the user has
-# DP: chosen (as part of his locale).  I don't know how to find that
-# DP: information.  Anyway, that is an addition which shouldn't affect
-# DP: whether or not this patch goes in, since this patch doesn't make the
-# DP: situation any worse than it is right now.
-
-Alex, I'm not sure I really understand how the parser context stack
-works, so it is possible that some of my changes there are wrong.
-Could you look at it?  Is this ok to check in?
-# DP: 
-# DP: This fixes PR gcj/33; I can now compile a Latin-1 encoded file on my
-# DP: PPC Linux box with `gcj --encoding=Latin1 ...'.
-
-2000-03-06  Tom Tromey  <tromey@cygnus.com>
-
-       Fix for PR gcj/33:
-       * jv-scan.c (help): Document --encoding.
-       (options): Added `encoding' entry.
-       (OPT_ENCODING): New define.
-       (main): Handle --encoding.
-       * lang-options.h: Document --classpath, --CLASSPATH, --main, and
-       --encoding.
-       * jcf-parse.c (parse_source_file): Correctly call java_init_lex.
-       Added `finput' argument.
-       * java-tree.h (current_encoding): Declare.
-       * parse.y (java_parser_context_restore_global): Don't restore
-       `finput'.
-       (java_parser_context_save_global): Don't set `finput' field.
-       (java_pop_parser_context): Don't restore `finput'.  Free old lexer
-       if required.
-       * lang.c (current_encoding): New global.
-       (lang_decode_option): Recognize `-fencoding='.
-       (finish_parse): Don't close finput.
-       * parse.h (struct parser_ctxt): Removed `finput' and
-       `unget_utf8_value' fields.  Added `lexer' field.
-       (java_init_lex): Fixed declaration.
-       * lex.c (java_new_lexer): New function.
-       (java_destroy_lexer): Likewise.
-       (java_read_char): Added `lex' argument.  Handle iconv case.
-       (java_read_unicode): Added `lex' argument.  Count backslashes in
-       lexer structure.
-       (java_init_lex): Added `finput' and `encoding' arguments.  Set
-       `lexer' field in ctxp.
-       (BAD_UTF8_VALUE): Removed.
-       * lex.h: Include <iconv.h> if HAVE_ICONV defined.
-       (java_lexer): New structure.
-       (UNGETC): Removed.
-       (GETC): Removed.
-       (DEFAULT_ENCODING): New define.
-       (java_destroy_lexer): Declare.
-
-Tom
-
---- gcc/java/java-tree.h.orig  Sat Apr  8 23:03:03 2000
-+++ gcc/java/java-tree.h       Sat Apr  8 23:03:56 2000
-@@ -141,6 +141,9 @@
- extern int flag_not_overriding;
- extern int flag_static_local_jdk1_1;
-+/* Encoding used for source files.  */
-+extern char *current_encoding;
-+
- /* The Java .class file that provides main_class;  the main input file. */
- extern struct JCF *current_jcf;
---- gcc/java/jcf-parse.c.orig  Sat Apr  8 23:03:03 2000
-+++ gcc/java/jcf-parse.c       Sat Apr  8 23:05:39 2000
-@@ -84,7 +84,7 @@
- static tree give_name_to_class PROTO ((JCF *jcf, int index));
- static void parse_zip_file_entries PROTO ((void));
- static void process_zip_dir PROTO ((void));
--static void parse_source_file PROTO ((tree));
-+static void parse_source_file PARAMS ((tree, FILE *));
- static void jcf_parse_source PROTO ((void));
- static int jcf_figure_file_type PROTO ((JCF *));
- static int find_in_current_zip PROTO ((char *, struct JCF **));
-@@ -570,6 +570,7 @@
- jcf_parse_source ()
- {
-   tree file;
-+  FILE *finput;
-   java_parser_context_save_global ();
-   java_push_parser_context ();
-@@ -580,7 +581,7 @@
-       if (!(finput = fopen (input_filename, "r")))
-       fatal ("input file `%s' just disappeared - jcf_parse_source",
-              input_filename);
--      parse_source_file (file);
-+      parse_source_file (file, finput);
-       if (fclose (finput))
-       fatal ("can't close input file `%s' stream - jcf_parse_source",
-              input_filename);
-@@ -741,8 +742,9 @@
- /* Parse a source file, as pointed by the current value of INPUT_FILENAME. */
- static void
--parse_source_file (file)
-+parse_source_file (file, finput)
-      tree file;
-+     FILE *finput;
- {
-   int save_error_count = java_error_count;
-   /* Mark the file as parsed */
-@@ -750,7 +752,9 @@
-   lang_init_source (1);                   /* Error msgs have no method prototypes */
--  java_init_lex ();               /* Initialize the parser */
-+  /* Initialize the parser */
-+  java_init_lex (finput,
-+               current_encoding ? current_encoding : DEFAULT_ENCODING);
-   java_parse_abort_on_error ();
-   java_parse ();                  /* Parse and build partial tree nodes. */
-@@ -778,6 +782,7 @@
-   int several_files = 0;
-   char *list = strdup (input_filename), *next;
-   tree node, current_file_list = NULL_TREE;
-+  FILE *finput;
-   do 
-     {
-@@ -888,7 +893,7 @@
-       case JCF_SOURCE:
-         java_push_parser_context ();
-         java_parser_context_save_global ();
--        parse_source_file (name);
-+        parse_source_file (name, finput);
-         java_parser_context_restore_global ();
-         java_pop_parser_context (1);
-         break;
---- gcc/java/jv-scan.c.orig    Sat Apr  8 23:03:03 2000
-+++ gcc/java/jv-scan.c Sat Apr  8 23:11:41 2000
-@@ -53,6 +53,7 @@
- {
-   int i = 1;
-   char *output_file = NULL;
-+  char *encoding = NULL;
-   long ft;
-   exec_name = argv[0];
-@@ -73,6 +74,14 @@
-             argv [i] = NULL;
-           }
-+        /* file encoding */
-+        else if (!strcmp (argv [i], "--encoding") && i+1 < argc)
-+          {
-+            argv [i] = NULL;
-+            encoding = argv [++i];
-+            argv [i] = NULL;
-+          }
-+
-         /* Print the name of the class that contains main */
-         else if (!strcmp (argv [i], "--print-main"))
-           flag_find_main = 1;
-@@ -116,7 +125,7 @@
-       input_filename = argv [i];
-       if ( (finput = fopen (argv [i], "r")) )
-         {
--          java_init_lex ();
-+          java_init_lex (finput, encoding ? encoding : DEFAULT_ENCODING);
-           yyparse ();
-           if (ftell (out) != ft)
-             fputc ('\n', out);
---- gcc/java/lang-options.h.orig       Sat Apr  8 23:03:03 2000
-+++ gcc/java/lang-options.h    Sat Apr  8 23:03:56 2000
-@@ -39,8 +39,10 @@
-   { "-M", "Print dependencies to stdout" },
-   { "-MM", "Print dependencies to stdout" },
- #endif /* ! USE_CPPLIB */
--  { "-fclasspath", "Set class path and suppress system path" },
--  { "-fCLASSPATH", "Set class path" },
-+  { "--classpath", "Set class path and suppress system path" },
-+  { "--CLASSPATH", "Set class path" },
-+  { "--main", "Choose class whose main method should be used" },
-+  { "--encoding", "Choose input encoding (default is UTF-8)" },
-   { "-I", "Add directory to class path" },
-   { "-foutput-class-dir", "Directory where class files should be written" },
-   { "-Wredundant-modifiers", 
---- gcc/java/lang.c.orig       Sat Apr  8 23:03:03 2000
-+++ gcc/java/lang.c    Sat Apr  8 23:03:56 2000
-@@ -105,6 +105,9 @@
- /* When non zero, warns that final local are treated as non final.  */
- int flag_static_local_jdk1_1 = 0;
-+/* The encoding of the source file.  */
-+char *current_encoding = NULL;
-+
- /* From gcc/flags.h, and indicates if exceptions are turned on or not.  */
- extern int flag_new_exceptions;
-@@ -172,6 +175,13 @@
-       return 1;
-     }
- #undef ARG
-+#define ARG "-fencoding="
-+  if (strncmp (p, ARG, sizeof (ARG) - 1) == 0)
-+    {
-+      current_encoding = p + sizeof (ARG) - 1;
-+      return 1;
-+    }
-+#undef ARG
-   if (p[0] == '-' && p[1] == 'f')
-     {
-@@ -252,7 +262,9 @@
-   return 0;
- }
-+/* Global open file.  */
- FILE *finput;
-+
- char *
- init_parse (filename)
-      char *filename;
-@@ -313,7 +326,6 @@
- void
- finish_parse ()
- {
--  fclose (finput);
-   jcf_dependency_write ();
- }
---- gcc/java/lex.c.orig        Sat Apr  8 23:03:03 2000
-+++ gcc/java/lex.c     Sat Apr  8 23:14:41 2000
-@@ -24,15 +24,15 @@
- The Free Software Foundation is independent of Sun Microsystems, Inc.  */
- /* It defines java_lex (yylex) that reads a Java ASCII source file
--possibly containing Unicode escape sequence or utf8 encoded characters
--and returns a token for everything found but comments, white spaces
--and line terminators. When necessary, it also fills the java_lval
--(yylval) union. It's implemented to be called by a re-entrant parser
--generated by Bison.
--
--The lexical analysis conforms to the Java grammar described in "The
--Java(TM) Language Specification. J. Gosling, B. Joy, G. Steele.
--Addison Wesley 1996" (http://java.sun.com/docs/books/jls/html/3.doc.html)  */
-+   possibly containing Unicode escape sequence or utf8 encoded
-+   characters and returns a token for everything found but comments,
-+   white spaces and line terminators. When necessary, it also fills
-+   the java_lval (yylval) union. It's implemented to be called by a
-+   re-entrant parser generated by Bison.
-+
-+   The lexical analysis conforms to the Java grammar described in "The
-+   Java(TM) Language Specification. J. Gosling, B. Joy, G. Steele.
-+   Addison Wesley 1996" (http://java.sun.com/docs/books/jls/html/3.doc.html) */
- #include "keyword.h"
-@@ -55,15 +55,18 @@
- static int java_parse_doc_section PROTO ((unicode_t));
- static void java_parse_end_comment PROTO ((unicode_t));
- static unicode_t java_get_unicode PROTO (());
--static unicode_t java_read_unicode PROTO ((int, int *));
--static void java_store_unicode PROTO ((struct java_line *, unicode_t, int));
--static unicode_t java_read_char PROTO (());
-+static unicode_t java_read_unicode PARAMS ((java_lexer *, int, int *));
-+static void java_store_unicode PARAMS ((struct java_line *, unicode_t, int));
-+static unicode_t java_read_char PARAMS ((java_lexer *));
- static void java_allocate_new_line PROTO (());
- static void java_unget_unicode PROTO (());
- static unicode_t java_sneak_unicode PROTO (());
-+java_lexer *java_new_lexer PARAMS ((FILE *, const char *));
- void
--java_init_lex ()
-+java_init_lex (finput, encoding)
-+     FILE *finput;
-+     const char *encoding;
- {
- #ifndef JC1_LITE
-   int java_lang_imported = 0;
-@@ -108,9 +111,9 @@
-   ctxp->lineno = lineno = 0;
-   ctxp->p_line = NULL;
-   ctxp->c_line = NULL;
--  ctxp->unget_utf8_value = 0;
-   ctxp->minus_seen = 0;
-   ctxp->java_error_flag = 0;
-+  ctxp->lexer = java_new_lexer (finput, encoding);
- }
- static char *
-@@ -188,22 +191,142 @@
-   ctxp->c_line->white_space_only = 1;
- }
--#define BAD_UTF8_VALUE 0xFFFE
-+/* Create a new lexer object.  */
-+java_lexer *
-+java_new_lexer (finput, encoding)
-+     FILE *finput;
-+     const char *encoding;
-+{
-+  java_lexer *lex = (java_lexer *) xmalloc (sizeof (java_lexer));
-+  int enc_error = 0;
-+
-+  lex->finput = finput;
-+  lex->bs_count = 0;
-+  lex->unget_value = 0;
-+
-+#ifdef HAVE_ICONV
-+  lex->handle = iconv_open ("UCS-2", encoding);
-+  if (lex->handle == (iconv_t) -1)
-+    {
-+      /* FIXME: we should give a nice error based on errno here.  */
-+      enc_error = 1;
-+    }
-+  lex->first = -1;
-+  lex->last = -1;
-+#else /* HAVE_ICONV */
-+  if (strcmp (encoding, DEFAULT_ENCODING))
-+    enc_error = 1;
-+#endif /* HAVE_ICONV */
-+
-+  if (enc_error)
-+    fatal ("unknown encoding: `%s'", encoding);
-+
-+  return lex;
-+}
-+
-+void
-+java_destroy_lexer (lex)
-+     java_lexer *lex;
-+{
-+  fclose (lex->finput);
-+#ifdef HAVE_ICONV
-+  iconv_close (lex->handle);
-+#endif
-+  free (lex);
-+}
- static unicode_t
--java_read_char ()
-+java_read_char (lex)
-+     java_lexer *lex;
- {
--  int c;
--  int c1, c2;
-+  if (lex->unget_value)
-+    {
-+      unicode_t r = lex->unget_value;
-+      lex->unget_value = 0;
-+      return r;
-+    }
-+
-+#ifdef HAVE_ICONV
-+  {
-+    char out[2];
-+    size_t ir, inbytesleft, in_save, out_count;
-+    char *inp, *outp;
--  if (ctxp->unget_utf8_value)
-+    while (1)
-     {
--      int to_return = ctxp->unget_utf8_value;
--      ctxp->unget_utf8_value = 0;
--      return (to_return);
-+      /* See if we need to read more data.  If FIRST == 0 then the
-+         previous conversion attempt ended in the middle of a
-+         character at the end of the buffer.  Otherwise we only have
-+         to read if the buffer is empty.  */
-+      if (lex->first == 0 || lex->first >= lex->last)
-+        {
-+          int r;
-+
-+          if (lex->first >= lex->last)
-+            {
-+              lex->first = 0;
-+              lex->last = 0;
-+            }
-+          if (feof (lex->finput))
-+            return UEOF;
-+          r = fread (&lex->buffer[lex->last], 1,
-+                     sizeof (lex->buffer) - lex->last,
-+                     lex->finput);
-+          lex->last += r;
-     }
--  c = GETC ();
-+      inbytesleft = lex->last - lex->first;
-+
-+      if (inbytesleft == 0)
-+        {
-+          /* We've tried to read and there is nothing left.  */
-+          return UEOF;
-+        }
-+
-+      in_save = inbytesleft;
-+      out_count = 2;
-+      inp = &lex->buffer[lex->first];
-+      outp = out;
-+      ir = iconv (lex->handle, (const char **) &inp, &inbytesleft,
-+                  &outp, &out_count);
-+      lex->first += in_save - inbytesleft;
-+
-+      if (out_count == 0)
-+        {
-+          /* Success.  We assume that UCS-2 is big-endian.  This
-+             appears to be an ok assumption.  */
-+          unicode_t result;
-+          result = (((unsigned char) out[0]) << 8) | (unsigned char) out[1];
-+          return result;
-+        }
-+
-+      if (ir == (size_t) -1)
-+        {
-+          if (errno == EINVAL)
-+            {
-+              /* This is ok.  This means that the end of our buffer
-+                 is in the middle of a character sequence.  We just
-+                 move the valid part of the buffer to the beginning
-+                 to force a read.  */
-+              /* We use bcopy() because it should work for
-+                 overlapping strings.  Use memmove() instead... */
-+              bcopy (&lex->buffer[lex->first], &lex->buffer[0],
-+                     lex->last - lex->first);
-+              lex->last -= lex->first;
-+              lex->first = 0;
-+            }
-+          else
-+            {
-+              /* A more serious error.  */
-+              java_lex_error ("unrecognized character in input stream", 0);
-+            }
-+        }
-+      }
-+  }
-+#else /* HAVE_ICONV */
-+  {
-+    int c, c1, c2;
-+    c = getc (lex->finput);
-   if (c < 128)
-     return (unicode_t)c;
-@@ -213,17 +336,17 @@
-     {
-       if ((c & 0xe0) == 0xc0)
-         {
--          c1 = GETC ();
-+          c1 = getc (lex->finput);
-         if ((c1 & 0xc0) == 0x80)
-           return (unicode_t)(((c &0x1f) << 6) + (c1 & 0x3f));
-         c = c1;
-       }
-       else if ((c & 0xf0) == 0xe0)
-         {
--          c1 = GETC ();
-+          c1 = getc (lex->finput);
-         if ((c1 & 0xc0) == 0x80)
-           {
--            c2 = GETC ();
-+              c2 = getc (lex->finput);
-             if ((c2 & 0xc0) == 0x80)
-               return (unicode_t)(((c & 0xf) << 12) + 
-                                  (( c1 & 0x3f) << 6) + (c2 & 0x3f));
-@@ -233,14 +356,15 @@
-         else
-           c = c1;
-       }
--      /* We looked for a UTF8 multi-byte sequence (since we saw an initial
--       byte with the high bit set), but found invalid bytes instead.
--       If the most recent byte was Ascii (and not EOF), we should
--       unget it, in case it was a comment terminator or other delimitor. */
--      if ((c & 0x80) == 0)
--      UNGETC (c);
--      return BAD_UTF8_VALUE;
-+
-+      /* We simply don't support invalid characters.  */
-+      java_lex_error ("malformed UTF-8 character", 0);
-+      }
-     }
-+#endif /* HAVE_ICONV */
-+
-+  /* We only get here on error.  */
-+  return UEOF;
- }
- static void
-@@ -261,56 +385,54 @@
- }
- static unicode_t
--java_read_unicode (term_context, unicode_escape_p)
-+java_read_unicode (lex, term_context, unicode_escape_p)
-+     java_lexer *lex;
-     int term_context;
-     int *unicode_escape_p;
- {
-   unicode_t c;
--  long i, base;
--  c = java_read_char ();
-+  c = java_read_char (lex);
-   *unicode_escape_p = 0;
-   if (c != '\\')
--    return ((term_context ? c : 
--           java_lineterminator (c) ? '\n' : (unicode_t)c));
--
--  /* Count the number of preceeding '\' */
--  for (base = ftell (finput), i = base-2; c == '\\';)
-     { 
--      fseek (finput, i--, SEEK_SET);
--      c = java_read_char ();  /* Will fail if reading utf8 stream. FIXME */
-+      lex->bs_count = 0;
-+      return (term_context ? c : (java_lineterminator (c)
-+                                ? '\n'
-+                                : (unicode_t) c));
-     }
--  fseek (finput, base, SEEK_SET);
--  if ((base-i-3)%2 == 0)      /* If odd number of \ seen */
-+
-+  ++lex->bs_count;
-+  if ((lex->bs_count) % 2 == 1)
-     {
--      c = java_read_char ();
-+      /* Odd number of \ seen.  */
-+      c = java_read_char (lex);
-       if (c == 'u')
-         {
--        unsigned short unicode = 0;
-+        unicode_t unicode = 0;
-         int shift = 12;
-         /* Next should be 4 hex digits, otherwise it's an error.
-            The hex value is converted into the unicode, pushed into
-            the Unicode stream.  */
-         for (shift = 12; shift >= 0; shift -= 4)
-           {
--            if ((c = java_read_char ()) == UEOF)
-+            if ((c = java_read_char (lex)) == UEOF)
-               return UEOF;
-             if (c >= '0' && c <= '9')
-               unicode |= (unicode_t)((c-'0') << shift);
-             else if ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))
-               unicode |= (unicode_t)((10+(c | 0x20)-'a') << shift);
-             else
--                java_lex_error 
--                  ("Non hex digit in Unicode escape sequence", 0);
-+              java_lex_error ("Non hex digit in Unicode escape sequence", 0);
-           }
-         *unicode_escape_p = 1;
--        return (term_context ? unicode :
--                (java_lineterminator (c) ? '\n' : unicode));
-+        return (term_context
-+                ? unicode : (java_lineterminator (c) ? '\n' : unicode));
-       }
--      ctxp->unget_utf8_value = c;
-+      lex->unget_value = c;
-     }
--  return (unicode_t)'\\';
-+  return (unicode_t) '\\';
- }
- static unicode_t
-@@ -325,7 +447,7 @@
-       for (;;)
-         {
-           int unicode_escape_p;
--          c = java_read_unicode (0, &unicode_escape_p);
-+          c = java_read_unicode (ctxp->lexer, 0, &unicode_escape_p);
-           java_store_unicode (ctxp->c_line, c, unicode_escape_p);
-           if (ctxp->c_line->white_space_only 
-               && !JAVA_WHITE_SPACE_P (c) && c!='\n')
-@@ -346,7 +468,7 @@
-   int unicode_escape_p;
-   if (c == '\n')              /* CR */
-     {
--      if ((c = java_read_unicode (1, &unicode_escape_p)) != '\r')
-+      if ((c = java_read_unicode (ctxp->lexer, 1, &unicode_escape_p)) != '\r')
-       {
-         ctxp->c_line->ahead [0] = c;
-         ctxp->c_line->unicode_escape_ahead_p = unicode_escape_p;
-@@ -355,7 +477,7 @@
-     }
-   else if (c == '\r')         /* LF */
-     {
--      if ((c = java_read_unicode (1, &unicode_escape_p)) != '\n')
-+      if ((c = java_read_unicode (ctxp->lexer, 1, &unicode_escape_p)) != '\n')
-       {
-         ctxp->c_line->ahead [0] = c;
-         ctxp->c_line->unicode_escape_ahead_p = unicode_escape_p;
---- gcc/java/lex.h.orig        Sat Apr  8 23:03:03 2000
-+++ gcc/java/lex.h     Sat Apr  8 23:03:56 2000
-@@ -35,6 +35,13 @@
- /* A Unicode character, as read from the input file  */
- typedef unsigned short unicode_t;
-+#ifdef HAVE_ICONV
-+#include <iconv.h>
-+#endif /* HAVE_ICONV */
-+
-+/* Default encoding to use if no encoding is specified.  */
-+#define DEFAULT_ENCODING "UTF-8"
-+
- /* Debug macro to print-out what we match  */
- #ifdef JAVA_LEX_DEBUG
- #ifdef JAVA_LEX_DEBUG_CHAR
-@@ -96,12 +103,38 @@
-   int col;
- } java_lc;
-+typedef struct java_lexer
-+{
-+  /* The file from which we're reading.  */
-+  FILE *finput;
-+
-+  /* Number of consecutive backslashes we've read.  */
-+  int bs_count;
-+
-+  /* If nonzero, a value that was pushed back.  */
-+  unicode_t unget_value;
-+
-+#ifdef HAVE_ICONV
-+  /* The handle for the iconv converter we're using.  */
-+  iconv_t handle;
-+
-+  /* Bytes we've read from the file but have not sent to iconv.  */
-+  char buffer[1024];
-+
-+  /* Index of first valid character in buffer, -1 if no valid
-+     characters.  */
-+  int first;
-+
-+  /* Index of last valid character in buffer, plus one.  -1 if no
-+     valid characters in buffer.  */
-+  int last;
-+#endif /* HAVE_ICONV */
-+} java_lexer;
--#define JAVA_LINE_MAX 80
-+/* Destroy a lexer object.  */
-+extern void java_destroy_lexer PARAMS ((java_lexer *));
--/* Macro to read and unread bytes */
--#define UNGETC(c) ungetc(c, finput)
--#define GETC()    getc(finput)
-+#define JAVA_LINE_MAX 80
- /* Build a location compound integer */
- #define BUILD_LOCATION() ((ctxp->elc.line << 12) | (ctxp->elc.col & 0xfff))
---- gcc/java/parse.h.orig      Sat Apr  8 23:03:03 2000
-+++ gcc/java/parse.h   Sat Apr  8 23:15:36 2000
-@@ -586,12 +586,11 @@
- struct parser_ctxt {
-   char *filename;                 /* Current filename */
--  FILE *finput;                           /* Current file input stream */
-   struct parser_ctxt *next;
-+  java_lexer *lexer;               /* Current lexer state */
-   struct java_line *p_line, *c_line; /* Previous and current line */
-   java_lc elc;                             /* Error's line column info */
--  unicode_t unget_utf8_value;        /* An unget utf8 value */
-   int ccb_indent;                  /* Keep track of {} indent, lexer */
-   int first_ccb_indent1;           /* First { at ident level 1 */
-   int last_ccb_indent1;                    /* Last } at ident level 1 */
-@@ -668,7 +667,7 @@
- /* Always in use, no matter what you compile */
- void java_push_parser_context PROTO ((void));
- void java_pop_parser_context PROTO ((int));
--void java_init_lex PROTO ((void));
-+void java_init_lex PARAMS ((FILE *, const char *));
- extern void java_parser_context_save_global PROTO ((void));
- extern void java_parser_context_restore_global PROTO ((void));
- int yyparse PROTO ((void));
---- gcc/java/parse.y.orig      Sat Apr  8 23:03:03 2000
-+++ gcc/java/parse.y   Sat Apr  8 23:03:56 2000
-@@ -2347,7 +2347,6 @@
-       java_push_parser_context ();
-       extra_ctxp_pushed_p = 1;
-     }
--  ctxp->finput = finput;
-   ctxp->lineno = lineno;
-   ctxp->current_class = current_class;
-   ctxp->filename = input_filename;
-@@ -2357,7 +2356,6 @@
- void
- java_parser_context_restore_global ()
- {
--  finput = ctxp->finput;
-   lineno = ctxp->lineno;
-   current_class = ctxp->current_class;
-   input_filename = ctxp->filename;
-@@ -2386,9 +2384,12 @@
-       next->incomplete_class = ctxp->incomplete_class;
-       next->gclass_list = ctxp->gclass_list;
-       lineno = ctxp->lineno;
--      finput = ctxp->finput;
-       current_class = ctxp->current_class;
-     }
-+
-+  /* If the old and new lexers differ, then free the old one.  */
-+  if (ctxp->lexer && next && ctxp->lexer != next->lexer)
-+    java_destroy_lexer (ctxp->lexer);
-   /* Set the single import class file flag to 0 for the current list
-      of imported things */
diff --git a/gcc-gpc.patch b/gcc-gpc.patch
deleted file mode 100644 (file)
index 5a1e904..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-Changes for GCC version 2.95.1 for GNU Pascal 2.1
-
-Before applying these diffs, go to the directory gcc-2.95.1
-and use the command
-
-    patch -p1
-
-feeding it the following diffs as input.
-
-*** gcc-2.95.1/gcc/expr.c.orig Thu Jul  1 00:59:55 1999
---- gcc-2.95.1/gcc/expr.c      Sun Oct 24 14:01:38 1999
-*************** store_constructor (exp, target, cleared)
-*** 4430,4435 ****
---- 4430,4444 ----
-  
-        domain_min = convert (sizetype, TYPE_MIN_VALUE (domain));
-        domain_max = convert (sizetype, TYPE_MAX_VALUE (domain));
-+ 
-+ #ifdef GPC
-+       /* Align the set.  */
-+       if (set_alignment)
-+         domain_min = size_binop (MINUS_EXPR, domain_min,
-+                                  size_binop (TRUNC_MOD_EXPR, domain_min,
-+                                              size_int (set_alignment)));
-+ #endif /* GPC */
-+ 
-        bitlength = size_binop (PLUS_EXPR,
-                             size_binop (MINUS_EXPR, domain_max, domain_min),
-                             size_one_node);
-*************** store_constructor (exp, target, cleared)
-*** 4444,4450 ****
---- 4453,4461 ----
-        if (GET_MODE (target) != BLKmode || nbits <= 2 * BITS_PER_WORD
-         || (nbytes <= 32 && TREE_CHAIN (elt) != NULL_TREE))
-       {
-+ #ifndef GPC
-         int set_word_size = TYPE_ALIGN (TREE_TYPE (exp));
-+ #endif /* not GPC */
-         enum machine_mode mode = mode_for_size (set_word_size, MODE_INT, 1);
-         char *bit_buffer = (char *) alloca (nbits);
-         HOST_WIDE_INT word = 0;
-*************** store_constructor (exp, target, cleared)
-*** 4456,4462 ****
---- 4467,4477 ----
-           {
-             if (bit_buffer[ibit])
-               {
-+ #ifdef GPC
-+                if (set_words_big_endian)
-+ #else /* not GPC */
-                 if (BYTES_BIG_ENDIAN)
-+ #endif /* not GPC */
-                   word |= (1 << (set_word_size - 1 - bit_pos));
-                 else
-                   word |= 1 << bit_pos;
-*************** store_constructor (exp, target, cleared)
-*** 4570,4575 ****
---- 4585,4596 ----
-         else
-  #endif
-           {
-+ #ifdef GPC
-+               /* The language-specific run time library must provide
-+                  a suitable `__setbits()' function whose action coincides
-+                  with the values of `set_word_size', `set_alignment', and
-+                  `set_words_big_endian'.  */
-+ #endif /* GPC */
-             emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__setbits"),
-                                0, VOIDmode, 4, XEXP (targetx, 0), Pmode,
-                                bitlength_rtx, TYPE_MODE (sizetype),
-*** gcc-2.95.1/gcc/stor-layout.c.orig  Thu Mar 11 14:56:20 1999
---- gcc-2.95.1/gcc/stor-layout.c       Wed Oct 27 16:39:10 1999
-*************** int maximum_field_alignment;
-*** 53,58 ****
---- 53,69 ----
-     May be overridden by front-ends.  */
-  int set_alignment = 0;
-  
-+ #ifdef GPC
-+ /* The word size of a bitstring or (power-)set value, in bits.
-+    Must be non-zero.
-+    May be overridden by front-ends.  */
-+ int set_word_size = BITS_PER_UNIT;
-+ 
-+ /* If non-zero, bits in (power-)sets start with the highest bit.
-+    May be overridden by front-ends.  */
-+ int set_words_big_endian /*= BYTES_BIG_ENDIAN*/;  /* @@@ Needn't be a constant!  */
-+ #endif /* GPC */
-+ 
-  static tree layout_record    PROTO((tree));
-  static void layout_union     PROTO((tree));
-  \f
-*************** static tree pending_sizes;
-*** 65,70 ****
---- 76,88 ----
-  
-  int immediate_size_expand;
-  
-+ #ifdef GPC
-+ /* Nonzero means that the size of a type may vary
-+    within one function context.  */
-+ 
-+ int size_volatile = 0;
-+ #endif /* GPC */
-+ 
-  tree
-  get_pending_sizes ()
-  {
-*************** variable_size (size)
-*** 102,108 ****
---- 120,131 ----
-        || global_bindings_p () < 0 || contains_placeholder_p (size))
-      return size;
-  
-+ #ifdef GPC
-+   if (! size_volatile)
-+     size = save_expr (size);
-+ #else /* not GPC */
-    size = save_expr (size);
-+ #endif
-  
-    if (global_bindings_p ())
-      {
-*************** variable_size (size)
-*** 119,125 ****
---- 142,152 ----
-         Also, we would like to pass const0_rtx here, but don't have it.  */
-      expand_expr (size, expand_expr (integer_zero_node, NULL_PTR, VOIDmode, 0),
-                VOIDmode, 0);
-+ #ifdef GPC
-+   else if (! size_volatile)
-+ #else /* not GPC */
-    else
-+ #endif
-      pending_sizes = tree_cons (NULL_TREE, size, pending_sizes);
-  
-    return size;
-*************** layout_type (type)
-*** 1040,1045 ****
---- 1067,1086 ----
-       abort();
-        else
-       {
-+ #ifdef GPC
-+        int alignment = set_alignment ? set_alignment : set_word_size;
-+           int lower_bound = TREE_INT_CST_LOW (TYPE_MIN_VALUE (TYPE_DOMAIN (type)));
-+           int upper_bound = TREE_INT_CST_LOW (TYPE_MAX_VALUE (TYPE_DOMAIN (type)));
-+        int size_in_bits, rounded_size;
-+           if (set_alignment)
-+             size_in_bits = upper_bound - (lower_bound / alignment) * alignment + 1;
-+           else
-+          size_in_bits
-+               = (TREE_INT_CST_LOW (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
-+               - TREE_INT_CST_LOW (TYPE_MIN_VALUE (TYPE_DOMAIN (type))) + 1);
-+        rounded_size
-+          = ((size_in_bits + alignment - 1) / alignment) * alignment;
-+ #else /* not GPC */
-  #ifndef SET_WORD_SIZE
-  #define SET_WORD_SIZE BITS_PER_WORD
-  #endif
-*************** layout_type (type)
-*** 1049,1054 ****
---- 1090,1096 ----
-              - TREE_INT_CST_LOW (TYPE_MIN_VALUE (TYPE_DOMAIN (type))) + 1);
-         int rounded_size
-           = ((size_in_bits + alignment - 1) / alignment) * alignment;
-+ #endif /* not GPC */
-         if (rounded_size > alignment)
-           TYPE_MODE (type) = BLKmode;
-         else
-*** gcc-2.95.1/gcc/tree.c.orig Wed Sep 29 19:41:05 1999
---- gcc-2.95.1/gcc/tree.c      Tue Oct 19 00:04:25 1999
-*************** get_set_constructor_bits (init, buffer, 
-*** 4986,4991 ****
---- 4986,4998 ----
-    HOST_WIDE_INT domain_min
-      = TREE_INT_CST_LOW (TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (init))));
-    tree non_const_bits = NULL_TREE;
-+ 
-+ #ifdef GPC
-+   /* Align the set.  */
-+   if (set_alignment)
-+     domain_min -= domain_min % set_alignment;
-+ #endif /* GPC */
-+ 
-    for (i = 0; i < bit_size; i++)
-      buffer[i] = 0;
-  
-*************** get_set_constructor_bytes (init, buffer,
-*** 5038,5045 ****
---- 5045,5056 ----
-       int wd_size;
-  {
-    int i;
-+ #ifdef GPC
-+   int bit_size = wd_size * BITS_PER_UNIT;
-+ #else /* not GPC */
-    int set_word_size = BITS_PER_UNIT;
-    int bit_size = wd_size * set_word_size;
-+ #endif /* not GPC */
-    int bit_pos = 0;
-    unsigned char *bytep = buffer;
-    char *bit_buffer = (char *) alloca(bit_size);
-*************** get_set_constructor_bytes (init, buffer,
-*** 5050,5055 ****
---- 5061,5084 ----
-  
-    for (i = 0; i < bit_size; i++)
-      {
-+ #ifdef GPC
-+       if (bit_buffer[i])
-+      {
-+           int k = bit_pos / BITS_PER_UNIT;
-+           if (WORDS_BIG_ENDIAN)
-+             k = set_word_size / BITS_PER_UNIT - 1 - k;
-+        if (set_words_big_endian)
-+          bytep[k] |= (1 << (BITS_PER_UNIT - 1 - bit_pos % BITS_PER_UNIT));
-+        else
-+          bytep[k] |= 1 << (bit_pos % BITS_PER_UNIT);
-+      }
-+       bit_pos++;
-+       if (bit_pos >= set_word_size)
-+      {
-+           bit_pos = 0;
-+           bytep += set_word_size / BITS_PER_UNIT;
-+         }
-+ #else /* not GPC */
-        if (bit_buffer[i])
-       {
-         if (BYTES_BIG_ENDIAN)
-*************** get_set_constructor_bytes (init, buffer,
-*** 5060,5065 ****
---- 5089,5095 ----
-        bit_pos++;
-        if (bit_pos >= set_word_size)
-       bit_pos = 0, bytep++;
-+ #endif /* not GPC */
-      }
-    return non_const_bits;
-  }
-*** gcc-2.95.1/gcc/tree.h.orig Mon Oct 18 12:19:46 1999
---- gcc-2.95.1/gcc/tree.h      Mon Oct 18 12:36:04 1999
-*************** extern int maximum_field_alignment;
-*** 1630,1635 ****
---- 1630,1643 ----
-  /* If non-zero, the alignment of a bitstring or (power-)set value, in bits. */
-  extern int set_alignment;
-  
-+ #ifdef GPC
-+ /* The word size of a bitstring or (power-)set value, in bits.  */
-+ extern int set_word_size;
-+ 
-+ /* If non-zero, bits in (power-)sets start with the highest bit.  */
-+ extern int set_words_big_endian;
-+ #endif /* GPC */
-+ 
-  /* Concatenate two lists (chains of TREE_LIST nodes) X and Y
-     by making the last node in X point to Y.
-     Returns X, except if X is 0 returns Y.  */
-*** gcc-2.95.1/gcc/tree.def.orig       Mon May 17 09:21:12 1999
---- gcc-2.95.1/gcc/tree.def    Tue Oct 26 04:16:43 1999
-*************** DEFTREECODE (WITH_CLEANUP_EXPR, "with_cl
-*** 490,528 ****
-  DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", 'e', 1)
-  
-  /* The following two codes are used in languages that have types where
-!    the position and/or sizes of fields vary from object to object of the
-!    same type, i.e., where some other field in the object contains a value
-!    that is used in the computation of another field's offset or size.
-! 
-!    For example, a record type with a discriminant in Ada is such a type.
-!    This mechanism is also used to create "fat pointers" for unconstrained
-!    array types in Ada; the fat pointer is a structure one of whose fields is
-!    a pointer to the actual array type and the other field is a pointer to a
-!    template, which is a structure containing the bounds of the array.  The
-!    bounds in the type pointed to by the first field in the fat pointer refer
-!    to the values in the template.
-! 
-!    These "self-references" are doing using a PLACEHOLDER_EXPR.  This is a
-!    node that will later be replaced with the object being referenced.  Its type
-!    is that of the object and selects which object to use from a chain of
-!    references (see below).
-! 
-!    When we wish to evaluate a size or offset, we check it is contains a
-!    placeholder.  If it does, we construct a WITH_RECORD_EXPR that contains
-!    both the expression we wish to evaluate and an expression within which the
-!    object may be found.  The latter expression is the object itself in
-!    the simple case of an Ada record with discriminant, but it can be the
-!    array in the case of an unconstrained array.
-! 
-!    In the latter case, we need the fat pointer, because the bounds of the
-!    array can only be accessed from it.  However, we rely here on the fact that
-!    the expression for the array contains the dereference of the fat pointer
-!    that obtained the array pointer.
-  
-     Accordingly, when looking for the object to substitute in place of
-     a PLACEHOLDER_EXPR, we look down the first operand of the expression
-!    passed as the second operand to WITH_RECORD_EXPR until we find something
-!    of the desired type or reach a constant.  */
-  
-  /* Denotes a record to later be supplied with a WITH_RECORD_EXPR when
-     evaluating this expression.  The type of this expression is used to
---- 490,547 ----
-  DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", 'e', 1)
-  
-  /* The following two codes are used in languages that have types where
-!    some field in an object of the type contains a value that is used in
-!    the computation of another field's offset or size and/or the size of
-!    the type.  The positions and/or sizes of fields can vary from object
-!    to object of the same type or even for one and the same object within
-!    its scope.
-! 
-!    Record types with discriminants in Ada or schema types in Pascal are
-!    examples of such types.  This mechanism is also used to create "fat
-!    pointers" for unconstrained array types in Ada; the fat pointer is a
-!    structure one of whose fields is a pointer to the actual array type
-!    and the other field is a pointer to a template, which is a structure
-!    containing the bounds of the array.  The bounds in the type pointed
-!    to by the first field in the fat pointer refer to the values in the
-!    template.
-! 
-!    When you wish to construct such a type you need "self-references"
-!    that allow you to reference the object having this type from the
-!    TYPE node, i.e. without having a variable instantiating this type.
-! 
-!    Such a "self-references" is done using a PLACEHOLDER_EXPR.  This is
-!    a node that will later be replaced with the object being referenced.
-!    Its type is that of the object and selects which object to use from
-!    a chain of references (see below).  No other slots are used in the
-!    PLACEHOLDER_EXPR.
-! 
-!    For example, if your type FOO is a RECORD_TYPE with a field BAR,
-!    and you need the value of <variable>.BAR to calculate TYPE_SIZE
-!    (FOO), just substitute <variable> above with a PLACEHOLDER_EXPR
-!    whose TREE_TYPE is FOO.  Then construct your COMPONENT_REF with
-!    the PLACEHOLDER_EXPR as the first operand (which has the correct
-!    type).  Later, when the size is needed in the program, the back-end
-!    will find this PLACEHOLDER_EXPR and generate code to calculate the
-!    actual size at run-time.  In the following, we describe how this
-!    calculation is done.
-! 
-!    When we wish to evaluate a size or offset, we check whether it
-!    contains a PLACEHOLDER_EXPR.  If it does, we construct a
-!    WITH_RECORD_EXPR that contains both the expression we wish to
-!    evaluate and an expression within which the object may be found.
-!    The latter expression is the object itself in the simple case of an
-!    Ada record with discriminant, but it can be the array in the case of
-!    an unconstrained array.
-! 
-!    In the latter case, we need the fat pointer, because the bounds of
-!    the array can only be accessed from it.  However, we rely here on the
-!    fact that the expression for the array contains the dereference of
-!    the fat pointer that obtained the array pointer.
-  
-     Accordingly, when looking for the object to substitute in place of
-     a PLACEHOLDER_EXPR, we look down the first operand of the expression
-!    passed as the second operand to WITH_RECORD_EXPR until we find
-!    something of the desired type or reach a constant.  */
-  
-  /* Denotes a record to later be supplied with a WITH_RECORD_EXPR when
-     evaluating this expression.  The type of this expression is used to
diff --git a/gcc-libobjc.patch b/gcc-libobjc.patch
deleted file mode 100644 (file)
index d32ac86..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh -e
-
-# DP: Find header file for Boehm garbage collector.
-
-if [ $# -eq 3 -a "$2" = '-d' ]; then
-    pdir="-d $3"
-elif [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-case "$1" in
-    -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
-    -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
-    *)
-       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-       exit 1
-esac
-exit 0
-
-*** libobjc/Makefile.in~       Tue Nov 10 15:25:36 1998
---- libobjc/Makefile.in        Tue Nov 10 13:16:08 1998
-***************
-*** 65,71 ****
-    -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \
-    -I$(srcdir)/$(MULTISRCTOP)../include
-  
-! OBJC_GCFLAGS=-DOBJC_WITH_GC=1
-  OBJC_THREAD_FILE=thr-@OBJC_THREAD_FILE@
-  
-  .SUFFIXES:
---- 65,71 ----
-    -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \
-    -I$(srcdir)/$(MULTISRCTOP)../include
-  
-! OBJC_GCFLAGS=-I/usr/include/gc -DOBJC_WITH_GC=1
-  OBJC_THREAD_FILE=thr-@OBJC_THREAD_FILE@
-  
-  .SUFFIXES:
diff --git a/gcc-libstdc++-bastring.patch b/gcc-libstdc++-bastring.patch
deleted file mode 100644 (file)
index 6aae8da..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-From: Richard Kettlewell <rjk@sfere.greenend.org.uk>
-To: submit@bugs.debian.org
-Subject: Bug#46550: basic_string<wchar_t> can't be instantiated
-Date: Sun, 3 Oct 1999 22:49:50 +0100
-
-Package: libstdc++2.9-dev
-Version: 2.91.60-5
-
-Hi,
-
-This ought to work, but it doesn't:
-
-------------------------------------------------------------------------
-lyonesse$ cat t.cc
-*/
-
-#include <string>
-
-template basic_string<wchar_t>;
-
-/*
-lyonesse$ c++ -c t.cc
-/usr/include/g++-2/std/bastring.h: In method `const __wchar_t * basic_string<__wchar_t,string_char_traits<__wchar_t>,__default_alloc_template<true,0> >::c_str<__wchar_t, string_char_traits<__wchar_t>, alloc>() const':
-t.cc:3:   instantiated from here
-/usr/include/g++-2/std/bastring.h:301: return to `const __wchar_t *' from `char *'
-lyonesse$ 
-------------------------------------------------------------------------
-
-# DP: Here is a patch to /usr/include/g++-2/std/bastring.h which makes it
-# DP: work for me (though note that I have not tested the c_str() method as
-# DP: such):
-
-------------------------------------------------------------------------
---- libstdc++/std/bastring.h.orig      Sun Oct  3 22:32:06 1999
-+++ libstdc++/std/bastring.h   Sun Oct  3 22:36:17 1999
-@@ -332,7 +332,8 @@
- public:
-   const charT* c_str () const
--    { if (length () == 0) return ""; terminate (); return data (); }
-+    { const charT* null_str = ""; 
-+      if (length () == 0) return null_str; terminate (); return data (); }
-   void resize (size_type n, charT c);
-   void resize (size_type n)
-     { resize (n, eos ()); }
diff --git a/gcc-libstdc++-out-of-mem.patch b/gcc-libstdc++-out-of-mem.patch
deleted file mode 100644 (file)
index a3d6b71..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-# DP: Throw exception instead of aborting when out of memory
-
-From: inaky@peloncho.fis.ucm.es
-To: submit@bugs.debian.org
-Subject: Bug#42622: libstdc++2.10-dev: stl_alloc.h: malloc_alloc out of memory handling abort()s instead of using exceptions
-Date: Sat, 7 Aug 1999 04:31:58 +0200
-
-Package: libstdc++2.10-dev
-Version: 1:2.95-2
-Severity: important
-
-        Hi
-
-        While coding some proof-of-concepts I've come around using a
-vector<> of a big lot of elements. Wanted to push the limits and try
-to recover possible failures. No way. The program was aborting on the
-library's own. 
-
-        That should not do. You want exceptions to be able to dictate
-how the program should behave on error situations. The thing is at
-stl_alloc.h, instead of throwing an exception on OOM, it was printing
-the message "out of memory" to stderr and aborting. It is also
-prepared for doing it via exceptions, so I think it should be the
-default way.
-
-        I think that behaviour should be made extensible to the whole
-libstdc++ library, as as far as I know, exception support in GCC is
-mature enough as to handle it [and I hope so :)]. That's the only way
-to fully control a program's flow. Libraries should not dictate what
-to do on error [I'm sure I'm not telling you anything new].
-
-        The changes to make stl_alloc work ok with exceptions are:
-
---- libstdc++/stl/stl_alloc.h~ Fri May  7 12:13:28 1999
-+++ libstdc++/stl/stl_alloc.h  Sat Aug  7 04:16:22 1999
-@@ -38,7 +38,7 @@
- // The allocation primitives are intended to allocate individual objects,
- // not larger arenas as with the original STL allocators.
--#if 0
-+#ifdef __STL_USE_EXCEPTIONS
- #   include <new>
- #   define __THROW_BAD_ALLOC throw bad_alloc()
- #elif !defined(__THROW_BAD_ALLOC)
-
-        Thanks, anyway, for such nice packages for GCC & Co.
-
-        Your happy Debian user,
-
--- System Information
-Debian Release: potato
-Kernel Version: Linux jovian 2.2.7 #1 mar ago 3 02:24:40 CEST 1999 i586 unknown
-
-Versions of the packages libstdc++2.10-dev depends on:
-ii  g++             2.95-2         The GNU C++ compiler.
-ii  libc6-dev       2.1.2-0pre4    GNU C Library: Development libraries and hea
-ii  libstdc++2.10   2.95-2         The GNU stdc++ library
diff --git a/gcc-libstdc++-wstring.patch b/gcc-libstdc++-wstring.patch
deleted file mode 100644 (file)
index 6210f88..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# DP: enable definition of wstring type, if __ENABLE_WSTRING is defined.
-
---- libstdc++/string~  Sat Feb 20 13:21:49 1999
-+++ libstdc++/string   Sun Dec  5 16:35:27 1999
-@@ -7,7 +7,9 @@
- extern "C++" {
- typedef basic_string <char> string;
--// typedef basic_string <wchar_t> wstring;
-+#ifdef __ENABLE_WSTRING
-+typedef basic_string <wchar_t> wstring;
-+#endif
- } // extern "C++"
- #endif
diff --git a/gcc-libstdc++.patch b/gcc-libstdc++.patch
deleted file mode 100644 (file)
index 473a2e7..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -ur gcc-2.95.1.orig/libstdc++/config/linux.ml gcc-2.95.1/libstdc++/config/linux.ml
---- gcc-2.95.1.orig/libstdc++/config/linux.ml  Sun Aug 30 23:18:46 1998
-+++ gcc-2.95.1/libstdc++/config/linux.ml       Thu Aug 19 20:13:06 1999
-@@ -1,10 +1,5 @@
- # Elf with shared libm, so we can link it into the shared libstdc++.
--ARLIB   = libstdc++-$(LIBSTDCXX_INTERFACE)$(LIBC_INTERFACE)$(CXX_INTERFACE)-$(VERSION).a
--MARLINK = libstdc++$(LIBC_INTERFACE)$(CXX_INTERFACE).a.$(LIBSTDCXX_INTERFACE)
--SHLIB   = libstdc++-$(LIBSTDCXX_INTERFACE)$(LIBC_INTERFACE)$(CXX_INTERFACE)-$(VERSION).so
--MSHLINK = libstdc++$(LIBC_INTERFACE)$(CXX_INTERFACE).so.$(LIBSTDCXX_INTERFACE)
--
- LIBS    = $(ARLIB) marlink $(ARLINK) $(SHLIB) mshlink $(SHLINK)
- SHFLAGS = -Wl,-soname,$(MSHLINK)
- SHDEPS  = -lm
-diff -ur gcc-2.95.1.orig/libstdc++/configure.in gcc-2.95.1/libstdc++/configure.in
---- gcc-2.95.1.orig/libstdc++/configure.in     Tue Jun  8 01:28:10 1999
-+++ gcc-2.95.1/libstdc++/configure.in  Thu Aug 19 20:15:53 1999
-@@ -193,7 +193,7 @@
-   if test x${enable_version_specific_runtime_libs} = xyes; then
-     gxx_include_dir='${libsubdir}/include/g++'
-   else
--    gxx_include_dir='${prefix}/include/g++'-${libstdcxx_interface}
-+    gxx_include_dir='${prefix}/include/g++'
-   fi
- fi
---- gcc-2.95.1/libstdc++/Makefile.in~  Thu Aug  5 10:00:40 1999
-+++ gcc-2.95.1/libstdc++/Makefile.in   Fri Aug 20 15:22:06 1999
-@@ -30,8 +30,8 @@
-        memory numeric pthread_alloc queue rope set slist stack utility \
-        vector fstream iomanip iostream strstream iosfwd bitset valarray
--ARLIB   = libstdc++.a.$(VERSION)
--ARLINK  = libstdc++.a
-+ARLIB   = libstdc++.a
-+ARLINK  = libstdc++.a.$(VERSION)
- MARLINK = libstdc++.a.`echo $(VERSION) | sed 's/\([0-9]*[.][0-9]*\).*/\1/'`
- SHLIB   = libstdc++.so.$(VERSION)
- SHARLIB = libstdc++-sh.a
diff --git a/gcc-m68k-pic.patch b/gcc-m68k-pic.patch
deleted file mode 100644 (file)
index 6ff7224..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# DP: Two patches by Andreas Schwab to fix -fpic and loop optimization.
-# DP: Another patch by Andreas Schwab to fix %a5 restauration in some cases.
-
-------------------------------------------------------------------------------
---- gcc/config/m68k/m68k.c~    Mon Aug  2 06:51:08 1999
-+++ gcc/config/m68k/m68k.c     Fri Oct 22 11:47:09 1999
-@@ -356,7 +356,7 @@
-       mask &= ~ (1 << (15 - FRAME_POINTER_REGNUM));
-       num_saved_regs--;
-     }
--  if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
-+  if (flag_pic && current_function_uses_pic_offset_table)
-     {
-       mask |= 1 << (15 - PIC_OFFSET_TABLE_REGNUM);
-       num_saved_regs++;
-@@ -493,7 +493,10 @@
-   for (regno = 0 ; regno < FIRST_PSEUDO_REGISTER ; regno++)
-     if (regs_ever_live[regno] && ! call_used_regs[regno])
-       return 0;
--  
-+
-+  if (flag_pic && current_function_uses_pic_offset_table)
-+    return 0;
-+
-   return 1;
- }
-@@ -568,7 +571,7 @@
-         nregs++;
-       mask |= 1 << regno;
-       }
--  if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
-+  if (flag_pic && current_function_uses_pic_offset_table)
-     {
-       nregs++;
-       mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
-@@ -1334,8 +1337,6 @@
-                            gen_rtx_PLUS (Pmode,
-                                          pic_offset_table_rtx, orig));
-       current_function_uses_pic_offset_table = 1;
--      if (reload_in_progress)
--      regs_ever_live[PIC_OFFSET_TABLE_REGNUM] = 1;
-       RTX_UNCHANGING_P (pic_ref) = 1;
-       emit_move_insn (reg, pic_ref);
-       return reg;
---- gcc/loop.c~        Fri Jun 25 06:38:11 1999
-+++ gcc/loop.c Fri Oct 22 11:45:16 1999
-@@ -4046,11 +4046,11 @@
-                in-between when biv_toal_increment returns nonzero both times
-                but we test it here in case some day some real cfg analysis
-                gets used to set always_computable.  */
--            && ((loop_insn_first_p (bl2->biv->insn, bl->biv->insn)
--                 && no_labels_between_p (bl2->biv->insn, bl->biv->insn))
--                || (! reg_used_between_p (bl->biv->src_reg, bl->biv->insn,
--                                          bl2->biv->insn)
--                    && no_jumps_between_p (bl->biv->insn, bl2->biv->insn)))
-+            && (loop_insn_first_p (bl2->biv->insn, bl->biv->insn)
-+                ? no_labels_between_p (bl2->biv->insn, bl->biv->insn)
-+                : (! reg_used_between_p (bl->biv->src_reg, bl->biv->insn,
-+                                         bl2->biv->insn)
-+                   && no_jumps_between_p (bl->biv->insn, bl2->biv->insn)))
-             && validate_change (bl->biv->insn,
-                                 &SET_SRC (single_set (bl->biv->insn)),
-                                 copy_rtx (src), 0))
diff --git a/gcc-manpage.patch b/gcc-manpage.patch
deleted file mode 100644 (file)
index 9aaee1b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# DP: Document exit codes.
-
-Wed Oct 20 22:55:23 1999  Matthias Klose  <doko@debian.org>
-
-       * gcc.1: Document exit codes.
-
---- gcc/gcc.1.orig     Thu Oct 21 12:52:54 1999
-+++ gcc/gcc.1  Thu Oct 21 12:53:15 1999
-@@ -4141,6 +4141,11 @@
- if available, else
- .B /tmp\c
- \&).
-+.SH "EXIT STATUS"
-+Normally the exit status is 0, if compilation or link edit are successful,
-+and nonzero else. The option
-+.B -Werror
-+treats each warning as an error.
- .SH "SEE ALSO"
- cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
- .br
diff --git a/gcc-march-i686-fix.patch b/gcc-march-i686-fix.patch
deleted file mode 100644 (file)
index 4aeeef0..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-2002-08-17  H.J. Lu <hjl@gnu.org>
-
-       * calls.c (PUSH_ARGS_REVERSED): Define only if not defined.
-       * expr.c (PUSH_ARGS_REVERSED): Likewise.
-
-2002-07-26  H.J. Lu <hjl@gnu.org>
-
-       * config/i386/i386.h (PUSH_ARGS_REVERSED): Set to 1.
-
---- gcc/calls.c.var    Thu Apr  4 15:28:47 2002
-+++ gcc/calls.c        Sat Aug 17 22:45:46 2002
-@@ -46,9 +46,11 @@ Software Foundation, 59 Temple Place - S
- #ifdef PUSH_ROUNDING
-+#ifndef PUSH_ARGS_REVERSED
- #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
- #define PUSH_ARGS_REVERSED  PUSH_ARGS
- #endif
-+#endif
- #endif
---- gcc/config/i386/i386.h.var Sun Jul 14 23:54:36 2002
-+++ gcc/config/i386/i386.h     Sat Aug 17 19:03:21 2002
-@@ -1581,6 +1581,10 @@ enum reg_class
- #define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS)
-+/* We want the stack and args grow in opposite directions, even if
-+   PUSH_ARGS is 0.  */
-+#define PUSH_ARGS_REVERSED 1
-+
- /* Offset of first parameter from the argument pointer register value.  */
- #define FIRST_PARM_OFFSET(FNDECL) 0
---- gcc/expr.c.var     Mon May  6 22:43:11 2002
-+++ gcc/expr.c Sat Aug 17 22:52:27 2002
-@@ -54,9 +54,11 @@ Software Foundation, 59 Temple Place - S
- #ifdef PUSH_ROUNDING
-+#ifndef PUSH_ARGS_REVERSED
- #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
- #define PUSH_ARGS_REVERSED    /* If it's last to first.  */
- #endif
-+#endif
- #endif
-2002-08-18  H.J. Lu <hjl@gnu.org>
-
-       * calls.c (store_one_arg): Remove ATTRIBUTE_UNUSED on
-       variable_size. Mark any slots used for the argument as in-use
-       only if we can't pass all arguments to a library call in
-       registers.
-
---- gcc/calls.c.copy   Sun Aug 18 07:35:11 2002
-+++ gcc/calls.c        Sun Aug 18 08:27:29 2002
-@@ -4270,7 +4270,7 @@ store_one_arg (arg, argblock, flags, var
-      struct arg_data *arg;
-      rtx argblock;
-      int flags;
--     int variable_size ATTRIBUTE_UNUSED;
-+     int variable_size;
-      int reg_parm_stack_space;
- {
-   tree pval = arg->tree_value;
-@@ -4345,14 +4345,22 @@ store_one_arg (arg, argblock, flags, var
-                 emit_move_insn (arg->save_area, stack_area);
-               }
-           }
-+
-+        /* Now that we have saved any slots that will be overwritten
-+           by this store, mark all slots this store will use.  We
-+           must do this before we actually expand the argument since
-+           the expansion itself may trigger library calls which might
-+           need to use the same stack slot. We only do it if we can't
-+           pass all arguments to a library call in registers.  */
-+        if (arg->partial)
-+          {
-+            for (i = lower_bound; i < upper_bound; i++)
-+              stack_usage_map[i] = 1;
-+
-+            /* Set it so that we don't do it again.  */
-+            variable_size = 1;
-+          }
-       }
--      /* Now that we have saved any slots that will be overwritten by this
--       store, mark all slots this store will use.  We must do this before
--       we actually expand the argument since the expansion itself may
--       trigger library calls which might need to use the same stack slot.  */
--      if (argblock && ! variable_size && arg->stack)
--      for (i = lower_bound; i < upper_bound; i++)
--        stack_usage_map[i] = 1;
-     }
-   /* If this isn't going to be placed on both the stack and in registers,
-@@ -4579,6 +4587,11 @@ store_one_arg (arg, argblock, flags, var
-       arg->value = arg->stack_slot;
-     }
-+  if (ACCUMULATE_OUTGOING_ARGS && !(flags & ECF_SIBCALL)
-+      && argblock && ! variable_size && arg->stack)
-+    for (i = lower_bound; i < upper_bound; i++)
-+      stack_usage_map[i] = 1;
-+
-   /* Once we have pushed something, pops can't safely
-      be deferred during the rest of the arguments.  */
-   NO_DEFER_POP;
diff --git a/gcc-pld-linux.patch b/gcc-pld-linux.patch
deleted file mode 100644 (file)
index cf777eb..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-diff -urN gcc-2.95.3.test1.org/gcc/Makefile.in gcc-2.95.3.test1/gcc/Makefile.in
---- gcc-2.95.3.test1.org/gcc/Makefile.in       Wed Jan  3 20:34:29 2001
-+++ gcc-2.95.3.test1/gcc/Makefile.in   Wed Jan  3 20:37:33 2001
-@@ -368,6 +368,9 @@
- # libgcc1-test target (must also be overridable for a target)
- LIBGCC1_TEST = libgcc1-test
-+# The libgcc symbol versioning map.
-+LIBGCC_MAP=
-+
- # List of extra executables that should be compiled for this target machine
- # that are used for compiling from source code to object code.
- # The rules for compiling them should be in the t-* file for the machine.
-@@ -838,14 +841,14 @@
- # Note that we can compile enquire using the cross-compiler just built,
- # although we can't run it on this machine.
- all.cross: native gcc-cross specs stmp-headers $(STMP_FIXPROTO) $(LIBGCC) \
--      $(LIBGCC1_TEST) $(EXTRA_PARTS) lang.all.cross doc
-+      $(LIBGCC_MAP) $(LIBGCC1_TEST) $(EXTRA_PARTS) lang.all.cross doc
- # This is what to compile if making gcc with a cross-compiler.
- all.build: native xgcc$(exeext) cpp$(exeext) $(EXTRA_PARTS) lang.all.build
- # This is what must be made before installing GCC and converting libraries.
- start.encap: native xgcc$(exeext) cpp$(exeext) specs $(LIBGCC1) \
-       xlimits.h lang.start.encap
- # These can't be made until after GCC can run.
--rest.encap: stmp-headers $(STMP_FIXPROTO) $(LIBGCC) $(EXTRA_PARTS) lang.rest.encap
-+rest.encap: stmp-headers $(STMP_FIXPROTO) $(LIBGCC) $(LIBGCC_MAP) $(EXTRA_PARTS) lang.rest.encap
- # This is what is made with the host's compiler
- # whether making a cross compiler or not.
- native: config.status auto-host.h intl.all $(LANGUAGES) \
-@@ -860,7 +863,7 @@
- # On the target machine, finish building a cross compiler.
- # This does the things that can't be done on the host machine.
--rest.cross: $(LIBGCC) specs
-+rest.cross: $(LIBGCC) $(LIBGCC_MAP) specs
- # Verify that it works to compile and link libgcc1-test.
- # If it does, then there are sufficient replacements for libgcc1.a.
-@@ -2353,7 +2356,7 @@
- # Using unprotoize.c is not quite right in the first place, 
- # but what better way is there?
-       -rm -f libgcc.a libgcc1.a libgcc1-asm.a libgcc2.a libgcc2.ready
--      -rm -f libgcc1.null
-+      -rm -f libgcc1.null libgcc.map
-       -rm -f *.dvi
-       -rm -f */*.dvi
-       -if [ -f md.pre-cpp ]; then \
-@@ -2526,6 +2529,12 @@
-         $(INSTALL_DATA) specs $(libsubdir)/specs; \
-         chmod a-x $(libsubdir)/specs; \
-       fi
-+# Install libgcc.map if it exists.
-+      -if [ -n "$(LIBGCC_MAP)" -a -f libgcc.map ] ; then \
-+        rm -f $(libsubdir)/libgcc.map; \
-+        $(INSTALL_DATA) libgcc.map $(libsubdir)/libgcc.map; \
-+        chmod a-x $(libsubdir)/libgcc.map; \
-+      fi
- # Install protoize if it was compiled.
-       -if [ -f protoize$(exeext) ]; \
-       then \
-@@ -3032,7 +3041,10 @@
-        do \
-          if [ -d stage1/$$dir ] ; then true ; else mkdir stage1/$$dir ; fi ; \
-        done
--      -mv $(STAGESTUFF) stage1
-+      -for i in $(STAGESTUFF) ; \
-+       do \
-+         mv $$i stage1 ; \
-+       done
-       -mv intl/*$(objext) stage1/intl
- # Copy as/ld if they exist to stage dir, so that running xgcc from the stage
- # dir will work properly.
-@@ -3041,6 +3053,10 @@
-       -if [ -f collect-ld$(exeext) ] ; then $(LN_S) ../collect-ld$(exeext) stage1 ; else true ; fi
-       -rm -f stage1/libgcc.a
-       -cp libgcc.a stage1
-+      -if [ -n "$(LIBGCC_MAP)" -a -f libgcc.map ] ; then \
-+        rm -f stage1/libgcc.map; \
-+        cp libgcc.map stage1; \
-+      fi
-       -if $(RANLIB_TEST_FOR_TARGET) ; then \
-         $(RANLIB_FOR_TARGET) stage1/libgcc.a; \
-       else true; fi
-@@ -3056,7 +3072,10 @@
-        do \
-          if [ -d stage2/$$dir ] ; then true ; else mkdir stage2/$$dir ; fi ; \
-        done
--      -mv $(STAGESTUFF) stage2
-+      -for i in $(STAGESTUFF) ; \
-+       do \
-+         mv $$i stage2 ; \
-+       done
-       -mv intl/*$(objext) stage2/intl
- # Copy as/ld if they exist to stage dir, so that running xgcc from the stage
- # dir will work properly.
-@@ -3065,6 +3084,10 @@
-       -if [ -f collect-ld ] ; then $(LN_S) ../collect-ld$(exeext) stage2 ; else true ; fi
-       -rm -f stage2/libgcc.a
-       -cp libgcc.a stage2
-+      -if [ -n "$(LIBGCC_MAP)" -a -f libgcc.map ] ; then \
-+        rm -f stage2/libgcc.map; \
-+        cp libgcc.map stage2; \
-+      fi
-       -if $(RANLIB_TEST_FOR_TARGET) ; then \
-         $(RANLIB_FOR_TARGET) stage2/libgcc.a; \
-       else true; fi
-@@ -3080,7 +3103,10 @@
-        do \
-          if [ -d stage3/$$dir ] ; then true ; else mkdir stage3/$$dir ; fi ; \
-        done
--      -mv $(STAGESTUFF) stage3
-+      -for i in $(STAGESTUFF) ; \
-+       do \
-+         mv $$i stage3 ; \
-+       done
-       -mv intl/*$(objext) stage3/intl
- # Copy as/ld if they exist to stage dir, so that running xgcc from the stage
- # dir will work properly.
-@@ -3089,6 +3115,10 @@
-       -if [ -f collect-ld$(exeext) ] ; then $(LN_S) ../collect-ld$(exeext) stage3 ; else true ; fi
-       -rm -f stage3/libgcc.a
-       -cp libgcc.a stage3
-+      -if [ -n "$(LIBGCC_MAP)" -a -f libgcc.map ] ; then \
-+        rm -f stage3/libgcc.map; \
-+        cp libgcc.map stage3; \
-+      fi
-       -if $(RANLIB_TEST_FOR_TARGET) ; then \
-         $(RANLIB_FOR_TARGET) stage3/libgcc.a; \
-       else true; fi
-@@ -3104,7 +3134,10 @@
-        do \
-          if [ -d stage4/$$dir ] ; then true ; else mkdir stage4/$$dir ; fi ; \
-        done
--      -mv $(STAGESTUFF) stage4
-+      -for i in $(STAGESTUFF) ; \
-+       do \
-+         mv $$i stage4 ; \
-+       done
-       -mv intl/*$(objext) stage4/intl
- # Copy as/ld if they exist to stage dir, so that running xgcc from the stage
- # dir will work properly.
-@@ -3113,6 +3146,10 @@
-       -if [ -f collect-ld$(exeext) ] ; then $(LN_S) ../collect-ld$(exeext) stage4 ; else true ; fi
-       -rm -f stage4/libgcc.a
-       -cp libgcc.a stage4
-+      -if [ -n "$(LIBGCC_MAP)" -a -f libgcc.map ] ; then \
-+        rm -f stage4/libgcc.map; \
-+        cp libgcc.map stage4; \
-+      fi
-       -if $(RANLIB_TEST_FOR_TARGET) ; then \
-         $(RANLIB_FOR_TARGET) stage4/libgcc.a; \
-       else true; fi
-@@ -3196,3 +3233,9 @@
-       echo "#endif" >> t-float.h-cross
-       mv t-float.h-cross float.h-cross
-+# Rule to generate the libgcc symbol versioning map.
-+libgcc.map:
-+      echo "GCC.INTERNAL {" > $@
-+      echo "  local:" >> $@
-+      $(EXTRACT_LIBGCC) >> $@
-+      echo "};" >> $@
-diff -urN gcc-2.95.3.test1.org/gcc/config/i386/i386.md gcc-2.95.3.test1/gcc/config/i386/i386.md
---- gcc-2.95.3.test1.org/gcc/config/i386/i386.md       Wed Jan  3 20:34:36 2001
-+++ gcc-2.95.3.test1/gcc/config/i386/i386.md   Wed Jan  3 20:35:21 2001
-@@ -1345,7 +1345,8 @@
-   else if ((reload_in_progress | reload_completed) == 0
-          && GET_CODE (operands[0]) != MEM
-          && GET_CODE (operands[1]) == CONST_DOUBLE
--         && !standard_80387_constant_p (operands[1]))
-+           && ((flag_pic && flag_omit_frame_pointer)
-+               || ! standard_80387_constant_p (operands[1])))
-     {
-       operands[1] = validize_mem (force_const_mem (SFmode, operands[1]));
-     }
-@@ -1473,7 +1474,8 @@
-   else if ((reload_in_progress | reload_completed) == 0
-          && GET_CODE (operands[0]) != MEM
-          && GET_CODE (operands[1]) == CONST_DOUBLE
--         && !standard_80387_constant_p (operands[1]))
-+           && ((flag_pic && flag_omit_frame_pointer)
-+              || ! standard_80387_constant_p (operands[1])))
-     {
-       operands[1] = validize_mem (force_const_mem (DFmode, operands[1]));
-     }
-@@ -1601,7 +1603,8 @@
-   else if ((reload_in_progress | reload_completed) == 0
-          && GET_CODE (operands[0]) != MEM
-          && GET_CODE (operands[1]) == CONST_DOUBLE
--         && !standard_80387_constant_p (operands[1]))
-+           && ((flag_pic && flag_omit_frame_pointer)
-+               || ! standard_80387_constant_p (operands[1])))
-     {
-       operands[1] = validize_mem (force_const_mem (XFmode, operands[1]));
-     }
-diff -urN gcc-2.95.3.test1.org/gcc/config/linux.h gcc-2.95.3.test1/gcc/config/linux.h
---- gcc-2.95.3.test1.org/gcc/config/linux.h    Wed Jan  3 20:34:33 2001
-+++ gcc-2.95.3.test1/gcc/config/linux.h        Wed Jan  3 20:35:22 2001
-@@ -103,7 +103,7 @@
-      %{!profile:%{!ggdb:-lc} %{ggdb:-lg}}}"
- #else
- #define LIB_SPEC \
--  "%{shared: -lc} \
-+  "%{shared: -lc --version-script libgcc.map%s} \
-    %{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
-       %{profile:-lc_p} %{!profile: -lc}}"
- #endif
-diff -urN gcc-2.95.3.test1.org/gcc/config/t-linux gcc-2.95.3.test1/gcc/config/t-linux
---- gcc-2.95.3.test1.org/gcc/config/t-linux    Wed Jan  3 20:34:33 2001
-+++ gcc-2.95.3.test1/gcc/config/t-linux        Wed Jan  3 20:35:22 2001
-@@ -14,3 +14,17 @@
- LIBGCC1 = 
- CROSS_LIBGCC1 =
- LIBGCC1_TEST =
-+
-+# Make glocal functions in libgcc.a local to the shared library with
-+# symbol versioning.
-+LIBGCC_MAP=libgcc.map
-+# This list has to be maintained manually. It should cover the libgcc
-+# functions, which can be safely made local to a shared library, on
-+# all Linux platforms.
-+LIBGCC_MAP_LIST=__ashldi3 __ashrdi3 __builtin_saveregs __clear_cache \
-+  __cmpdi2 __divdi3 __dummy __eprintf __ffsdi2 __fixdfdi __fixsfdi \
-+  __fixunsdfdi __fixunsdfsi __fixunssfdi __fixunssfsi __fixunsxfdi \
-+  __fixunsxfsi __fixxfdi __floatdidf __floatdisf __floatdixf \
-+  __gcc_bcmp __lshrdi3 __moddi3 __muldi3 __negdi2 __pure_virtual \
-+  __ucmpdi2 __udiv_w_sdiv __udivdi3 __udivmoddi4 __umoddi3
-+EXTRACT_LIBGCC=for s in $(LIBGCC_MAP_LIST); do echo "    $$s;"; done
-diff -urN gcc-2.95.3.test1.org/gcc/f/Make-lang.in gcc-2.95.3.test1/gcc/f/Make-lang.in
---- gcc-2.95.3.test1.org/gcc/f/Make-lang.in    Wed Jan  3 20:34:42 2001
-+++ gcc-2.95.3.test1/gcc/f/Make-lang.in        Wed Jan  3 20:35:22 2001
-@@ -212,7 +212,7 @@
- f77.all.build: g77$(exeext)
- f77.all.cross: g77-cross$(exeext)
--f77.start.encap: g77$(exeext)
-+f77.start.encap: g77$(exeext)  $(srcdir)/f/intdoc.texi
- f77.rest.encap:
- f77.info: f/g77.info
-diff -urN gcc-2.95.3.test1.org/libf2c/Makefile.in gcc-2.95.3.test1/libf2c/Makefile.in
---- gcc-2.95.3.test1.org/libf2c/Makefile.in    Wed Jan  3 20:34:47 2001
-+++ gcc-2.95.3.test1/libf2c/Makefile.in        Wed Jan  3 20:35:22 2001
-@@ -61,18 +61,18 @@
- # Quote this way so that it can be used to set shell variables too.
- # Currently no use for PICFLAG, RUNTESTFLAGS -- check usage.
- FLAGS_TO_PASS= \
--      CC='$(CC)' \
--      CFLAGS='$(CFLAGS)' \
--      CPPFLAGS='$(CPPFLAGS)' \
--      AR='$(AR)' \
--      RANLIB='$(RANLIB)' \
--      PICFLAG='$(PICFLAG)' \
--      RUNTESTFLAGS='$(RUNTESTFLAGS)' \
--      prefix='$(prefix)' \
--      exec_prefix='$(exec_prefix)' \
--      libdir='$(libdir)' \
--      libsubdir='$(libsubdir)' \
--      tooldir='$(tooldir)'
-+      "CC=$(CC)" \
-+      "CFLAGS=$(CFLAGS)" \
-+      "CPPFLAGS=$(CPPFLAGS)" \
-+      "AR=$(AR)" \
-+      "RANLIB=$(RANLIB)" \
-+      "PICFLAG=$(PICFLAG)" \
-+      "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
-+      "prefix=$(prefix)" \
-+      "exec_prefix=$(exec_prefix)" \
-+      "libdir=$(libdir)" \
-+      "libsubdir=$(libsubdir)" \
-+      "tooldir=$(tooldir)"
- LIBG2C = libg2c.a
diff --git a/gcc-pointer-arith.patch b/gcc-pointer-arith.patch
deleted file mode 100644 (file)
index 4e049f7..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#! /bin/sh -e
-
-if [ $# -eq 3 -a "$2" = '-d' ]; then
-    pdir="-d $3"
-elif [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-case "$1" in
-    -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
-    -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
-    *)
-       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-       exit 1
-esac
-exit 0
-
-# append the patch here and adjust the -p? flag in the patch calls.
-
-From: Jim Kingdon <kingdon@redhat.com>
-To: rth@cygnus.com
-CC: gcc-patches@gcc.gnu.org
-Subject: Re: patch to make -Wpointer-arith work with glibc 2.1.2pre3
-Date: Tue, 21 Sep 1999 15:50:20 -0400
-
-Richard Henderson writes:
-
-> This could all be tidied a bit by creating a couple of macros near
-> the beginning of c-parse.in to do the encoding and decoding.  Also,
-> setting the type of `extension' means $<itype>1 can be written $1.
-
-Here you go (sorry for the delay, I plead hurricanes and other
-causes).
-
-Let me know if you still aren't happy :-).
-
-# DP: Wed Sep  1 09:12:02 1999  Jim Kingdon  <http://developer.redhat.com>
-# DP: 
-# DP:  * c-parse.in: save and restore warn_pointer_arith on __extension__
-# DP:  along with pedantic.
-# DP:  (SAVE_WARN_FLAGS, RESTORE_WARN_FLAGS): Added.
-# DP:  Set the type of extension to itype rather than $<itype>1 kludge.
-# DP:  * extend.texi (Alternate Keywords): Adjust documentation.
-
-Index: c-parse.in
-===================================================================
-RCS file: /cvs/egcs/egcs/gcc/c-parse.in,v
-retrieving revision 1.23
-diff -u -r1.23 c-parse.in
---- gcc/c-parse.in     1999/09/07 05:47:29     1.23
-+++ gcc/c-parse.in     1999/09/21 19:05:43
-@@ -185,6 +185,8 @@
- %type <ttype> parmlist_or_identifiers parmlist_or_identifiers_1
- %type <ttype> identifiers_or_typenames
-+%type <itype> extension
-+
- %type <itype> setspecs
- %type <ends_in_label> lineno_stmt_or_label lineno_stmt_or_labels stmt_or_label
-@@ -227,6 +229,15 @@
- /* 1 if we explained undeclared var errors.  */
- static int undeclared_variable_notice;
-+/* For __extension__, save/restore the warning flags which are
-+   controlled by __extension__.  */
-+#define SAVE_WARN_FLAGS() (pedantic | (warn_pointer_arith << 1))
-+#define RESTORE_WARN_FLAGS(val) \
-+  do {                                     \
-+    pedantic = val & 1;                    \
-+    warn_pointer_arith = (val >> 1) & 1;   \
-+  } while (0)
-+
- ifobjc
- /* Objective-C specific information */
-@@ -297,7 +308,7 @@
-                 else
-                   error ("argument of `asm' is not a constant string"); }
-       | extension extdef
--              { pedantic = $<itype>1; }
-+              { RESTORE_WARN_FLAGS ($1); }
-       ;
- datadef:
-@@ -438,7 +449,7 @@
-       /* __extension__ turns off -pedantic for following primary.  */
-       | extension cast_expr     %prec UNARY
-               { $$ = $2;
--                pedantic = $<itype>1; }
-+                RESTORE_WARN_FLAGS ($1); }
-       | unop cast_expr  %prec UNARY
-               { $$ = build_unary_op ($1, $2, 0);
-                 overflow_warning ($$); }
-@@ -1002,7 +1013,7 @@
-       | declmods ';'
-               { pedwarn ("empty declaration"); }
-       | extension decl
--              { pedantic = $<itype>1; }
-+              { RESTORE_WARN_FLAGS ($1); }
-       ;
- /* Declspecs which contain at least one type specifier or typedef name.
-@@ -1607,7 +1618,7 @@
-               { $$ = NULL_TREE; }
-       | extension component_decl
-               { $$ = $2;
--                pedantic = $<itype>1; }
-+                RESTORE_WARN_FLAGS ($1); }
-       ;
- components:
-@@ -2441,8 +2452,9 @@
- extension:
-       EXTENSION
--              { $<itype>$ = pedantic;
--                pedantic = 0; }
-+              { $$ = SAVE_WARN_FLAGS();
-+                pedantic = 0;
-+                warn_pointer_arith = 0; }
-       ;
\f
- ifobjc
diff --git a/gcc-ppc-ada-hack.patch b/gcc-ppc-ada-hack.patch
deleted file mode 100644 (file)
index c2675f2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -ur gcc-20020311/gcc/ada/targtyps.c gcc-20020311-/gcc/ada/targtyps.c
---- gcc-20020311/gcc/ada/targtyps.c    Tue Oct  2 16:57:55 2001
-+++ gcc-20020311-/gcc/ada/targtyps.c   Sat Mar 16 15:19:39 2002
-@@ -99,6 +99,8 @@
- #define WIDEST_HARDWARE_FP_SIZE LONG_DOUBLE_TYPE_SIZE
- #endif
-+static int rs6000_long_double_type_size = 64;
-+
- /* The following provide a functional interface for the front end Ada code
-    to determine the sizes that are used for various C types. */
-Only in gcc-20020311-/gcc/ada: targtyps.c~
diff --git a/gcc-ppc-descriptions.patch b/gcc-ppc-descriptions.patch
deleted file mode 100644 (file)
index bf8913c..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-# DP: Add descriptions to rs6000.h and sysv4.h to quench warnings.
-# DP:  by Franz Sirl
-
-Index: gcc/config/rs6000/rs6000.h
---- rs6000.h   1999/06/09 15:59:37     1.49.4.1
-+++ gcc/config/rs6000/rs6000.h 1999/06/12 18:55:36
-@@ -352,46 +352,81 @@ extern int target_flags;
- #endif
- #define TARGET_SWITCHES                                                       \
-- {{"power",           MASK_POWER  | MASK_MULTIPLE | MASK_STRING},     \
-+ {{"power",           MASK_POWER  | MASK_MULTIPLE | MASK_STRING,      \
-+                      "Use POWER instruction set"},                   \
-   {"power2",          (MASK_POWER | MASK_MULTIPLE | MASK_STRING       \
--                       | MASK_POWER2)},                               \
--  {"no-power2",               - MASK_POWER2},                                 \
-+                       | MASK_POWER2),                                \
-+                      "Use POWER2 instruction set"},                  \
-+  {"no-power2",               - MASK_POWER2,                                  \
-+                      "Do not use POWER2 instruction set"},           \
-   {"no-power",                - (MASK_POWER | MASK_POWER2 | MASK_MULTIPLE     \
--                         | MASK_STRING)},                             \
--  {"powerpc",         MASK_POWERPC},                                  \
-+                         | MASK_STRING),                              \
-+                      "Do not use POWER instruction set"},            \
-+  {"powerpc",         MASK_POWERPC,                                   \
-+                      "Use PowerPC instruction set"},                 \
-   {"no-powerpc",      - (MASK_POWERPC | MASK_PPC_GPOPT                \
--                         | MASK_PPC_GFXOPT | MASK_POWERPC64)},        \
--  {"powerpc-gpopt",   MASK_POWERPC | MASK_PPC_GPOPT},                 \
--  {"no-powerpc-gpopt",        - MASK_PPC_GPOPT},                              \
--  {"powerpc-gfxopt",  MASK_POWERPC | MASK_PPC_GFXOPT},                \
--  {"no-powerpc-gfxopt",       - MASK_PPC_GFXOPT},                             \
--  {"powerpc64",               MASK_POWERPC64},                                \
--  {"no-powerpc64",    - MASK_POWERPC64},                              \
--  {"new-mnemonics",   MASK_NEW_MNEMONICS},                            \
--  {"old-mnemonics",   -MASK_NEW_MNEMONICS},                           \
-+                         | MASK_PPC_GFXOPT | MASK_POWERPC64),         \
-+                      "Do not use PowerPC instruction set"},          \
-+  {"powerpc-gpopt",   MASK_POWERPC | MASK_PPC_GPOPT,                  \
-+                      "Use PowerPC General Purpose group optional instructions"},\
-+  {"no-powerpc-gpopt",        - MASK_PPC_GPOPT,                               \
-+                      "Don't use PowerPC General Purpose group optional instructions"},\
-+  {"powerpc-gfxopt",  MASK_POWERPC | MASK_PPC_GFXOPT,                 \
-+                      "Use PowerPC Graphics group optional instructions"},\
-+  {"no-powerpc-gfxopt",       - MASK_PPC_GFXOPT,                              \
-+                      "Don't use PowerPC Graphics group optional instructions"},\
-+  {"powerpc64",               MASK_POWERPC64,                                 \
-+                      "Use PowerPC-64 instruction set"},              \
-+  {"no-powerpc64",    - MASK_POWERPC64,                               \
-+                      "Don't use PowerPC-64 instruction set"},        \
-+  {"new-mnemonics",   MASK_NEW_MNEMONICS,                             \
-+                      "Use new mnemonics for PowerPC architecture"},  \
-+  {"old-mnemonics",   -MASK_NEW_MNEMONICS,                            \
-+                      "Use old mnemonics for PowerPC architecture"},  \
-   {"full-toc",                - (MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC       \
--                         | MASK_MINIMAL_TOC)},                        \
--  {"fp-in-toc",               - MASK_NO_FP_IN_TOC},                           \
--  {"no-fp-in-toc",    MASK_NO_FP_IN_TOC},                             \
--  {"sum-in-toc",      - MASK_NO_SUM_IN_TOC},                          \
--  {"no-sum-in-toc",   MASK_NO_SUM_IN_TOC},                            \
--  {"minimal-toc",     MASK_MINIMAL_TOC},                              \
--  {"minimal-toc",     - (MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC)},    \
--  {"no-minimal-toc",  - MASK_MINIMAL_TOC},                            \
--  {"hard-float",      - MASK_SOFT_FLOAT},                             \
--  {"soft-float",      MASK_SOFT_FLOAT},                               \
--  {"multiple",                MASK_MULTIPLE | MASK_MULTIPLE_SET},             \
--  {"no-multiple",     - MASK_MULTIPLE},                               \
--  {"no-multiple",     MASK_MULTIPLE_SET},                             \
--  {"string",          MASK_STRING | MASK_STRING_SET},                 \
--  {"no-string",               - MASK_STRING},                                 \
--  {"no-string",               MASK_STRING_SET},                               \
--  {"update",          - MASK_NO_UPDATE},                              \
--  {"no-update",               MASK_NO_UPDATE},                                \
--  {"fused-madd",      - MASK_NO_FUSED_MADD},                          \
--  {"no-fused-madd",   MASK_NO_FUSED_MADD},                            \
-+                         | MASK_MINIMAL_TOC),                         \
-+                      "no description yet"},                          \
-+  {"fp-in-toc",               - MASK_NO_FP_IN_TOC,                            \
-+                      "Place floating point constants in TOC"},       \
-+  {"no-fp-in-toc",    MASK_NO_FP_IN_TOC,                              \
-+                      "Don't place floating point constants in TOC"}, \
-+  {"sum-in-toc",      - MASK_NO_SUM_IN_TOC,                           \
-+                      "Place symbol+offset constants in TOC"},        \
-+  {"no-sum-in-toc",   MASK_NO_SUM_IN_TOC,                             \
-+                      "Don't place symbol+offset constants in TOC"},  \
-+  {"minimal-toc",     MASK_MINIMAL_TOC,                               \
-+                      "no description yet"},                          \
-+  {"minimal-toc",     - (MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC),     \
-+                      "no description yet"},                          \
-+  {"no-minimal-toc",  - MASK_MINIMAL_TOC,                             \
-+                      "no description yet"},                          \
-+  {"hard-float",      - MASK_SOFT_FLOAT,                              \
-+                      "Use hardware fp"},                             \
-+  {"soft-float",      MASK_SOFT_FLOAT,                                \
-+                      "Do not use hardware fp"},                      \
-+  {"multiple",                MASK_MULTIPLE | MASK_MULTIPLE_SET,              \
-+                      "Generate load/store multiple instructions"},   \
-+  {"no-multiple",     - MASK_MULTIPLE,                                \
-+                      "Do not generate load/store multiple instructions"},\
-+  {"no-multiple",     MASK_MULTIPLE_SET,                              \
-+                      "Do not generate load/store multiple instructions"},\
-+  {"string",          MASK_STRING | MASK_STRING_SET,                  \
-+                      "Generate string instructions for block moves"},\
-+  {"no-string",               - MASK_STRING,                                  \
-+                      "Do not generate string instructions for block moves"},\
-+  {"no-string",               MASK_STRING_SET,                                \
-+                      "Do not generate string instructions for block moves"},\
-+  {"update",          - MASK_NO_UPDATE,                               \
-+                      "Generate load/store with update instructions"},\
-+  {"no-update",               MASK_NO_UPDATE,                                 \
-+                      "Do not generate load/store with update instructions"},\
-+  {"fused-madd",      - MASK_NO_FUSED_MADD,                           \
-+                      "Generate fused multiply/add instructions"},    \
-+  {"no-fused-madd",   MASK_NO_FUSED_MADD,                             \
-+                      "Don't generate fused multiply/add instructions"},\
-   SUBTARGET_SWITCHES                                                  \
--  {"",                        TARGET_DEFAULT}}
-+  {"",                        TARGET_DEFAULT,                                 \
-+                      ""}}
- #define TARGET_DEFAULT (MASK_POWER | MASK_MULTIPLE | MASK_STRING)
-@@ -449,13 +484,13 @@ extern enum processor_type rs6000_cpu;
- #define       SUBTARGET_OPTIONS
- #endif
--#define TARGET_OPTIONS                                \
--{                                             \
--   {"cpu=",  &rs6000_select[1].string},               \
--   {"tune=", &rs6000_select[2].string},               \
--   {"debug-", &rs6000_debug_name},            \
--   {"debug=", &rs6000_debug_name},            \
--   SUBTARGET_OPTIONS                          \
-+#define TARGET_OPTIONS                                                        \
-+{                                                                     \
-+   {"cpu=",  &rs6000_select[1].string, "Use features of and schedule code for given CPU" },\
-+   {"tune=", &rs6000_select[2].string, "Schedule code for given CPU" },       \
-+   {"debug-", &rs6000_debug_name, "Enable debug output" },            \
-+   {"debug=", &rs6000_debug_name, "Enable debug output" },            \
-+   SUBTARGET_OPTIONS                                                  \
- }
- /* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */
-Index: gcc/config/rs6000/sysv4.h
---- sysv4.h    1999/05/28 02:46:56     1.19.4.1
-+++ gcc/config/rs6000/sysv4.h  1999/06/12 18:55:38
-@@ -66,39 +66,39 @@ extern enum rs6000_sdata_type rs6000_sda
-    the same as -mminimal-toc.  */
- #undef        SUBTARGET_SWITCHES
- #define SUBTARGET_SWITCHES                                            \
--  { "bit-align",      -MASK_NO_BITFIELD_TYPE },                       \
--  { "no-bit-align",    MASK_NO_BITFIELD_TYPE },                       \
--  { "strict-align",    MASK_STRICT_ALIGN },                           \
--  { "no-strict-align",        -MASK_STRICT_ALIGN },                           \
--  { "relocatable",     MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC }, \
--  { "no-relocatable", -MASK_RELOCATABLE },                            \
--  { "relocatable-lib",         MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC }, \
--  { "no-relocatable-lib", -MASK_RELOCATABLE },                                \
--  { "little-endian",   MASK_LITTLE_ENDIAN },                          \
--  { "little",          MASK_LITTLE_ENDIAN },                          \
--  { "big-endian",     -MASK_LITTLE_ENDIAN },                          \
--  { "big",            -MASK_LITTLE_ENDIAN },                          \
--  { "no-toc",          0 },                                           \
--  { "toc",             MASK_MINIMAL_TOC },                            \
--  { "full-toc",                MASK_MINIMAL_TOC },                            \
--  { "prototype",       MASK_PROTOTYPE },                              \
--  { "no-prototype",   -MASK_PROTOTYPE },                              \
--  { "no-traceback",    0 },                                           \
--  { "eabi",            MASK_EABI },                                   \
--  { "no-eabi",                -MASK_EABI },                                   \
--  { "regnames",                 MASK_REGNAMES },                              \
--  { "no-regnames",     -MASK_REGNAMES },                              \
--  { "sdata",           0 },                                           \
--  { "no-sdata",                0 },                                           \
--  { "sim",             0 },                                           \
--  { "ads",             0 },                                           \
--  { "yellowknife",     0 },                                           \
--  { "mvme",            0 },                                           \
--  { "emb",             0 },                                           \
--  { "solaris-cclib",   0 },                                           \
--  { "shlib",           0 },                                           \
--  EXTRA_SUBTARGET_SWITCHES                                              \
--  { "newlib",          0 },
-+  { "bit-align",      -MASK_NO_BITFIELD_TYPE, "Align to the base type of the bitfield." },\
-+  { "no-bit-align",    MASK_NO_BITFIELD_TYPE, "Don't align to the base type of the bitfield." },\
-+  { "strict-align",    MASK_STRICT_ALIGN, "Don't assume that unaligned accesses are handled by the system" },\
-+  { "no-strict-align",        -MASK_STRICT_ALIGN, "Assume that unaligned accesses are handled by the system" },\
-+  { "relocatable",     MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC, "Produce code relocatable at runtime." },\
-+  { "no-relocatable", -MASK_RELOCATABLE, "Don't produce code relocatable at runtime." },\
-+  { "relocatable-lib",         MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC, "Produce code relocatable at runtime." },\
-+  { "no-relocatable-lib", -MASK_RELOCATABLE, "Don't produce code relocatable at runtime." },\
-+  { "little-endian",   MASK_LITTLE_ENDIAN, "Produce little endian code." },   \
-+  { "little",          MASK_LITTLE_ENDIAN, "Produce little endian code." },   \
-+  { "big-endian",     -MASK_LITTLE_ENDIAN, "Produce big endian code." },      \
-+  { "big",            -MASK_LITTLE_ENDIAN, "Produce big endian code." },      \
-+  { "no-toc",          0, "no description yet" },                             \
-+  { "toc",             MASK_MINIMAL_TOC, "no description yet" },              \
-+  { "full-toc",                MASK_MINIMAL_TOC, "no description yet" },              \
-+  { "prototype",       MASK_PROTOTYPE, "no description yet" },                \
-+  { "no-prototype",   -MASK_PROTOTYPE, "no description yet" },                \
-+  { "no-traceback",    0, "no description yet" },                             \
-+  { "eabi",            MASK_EABI, "Use EABI." },                              \
-+  { "no-eabi",                -MASK_EABI, "Don't use EABI." },                        \
-+  { "regnames",                 MASK_REGNAMES, "Use alternate register names." },     \
-+  { "no-regnames",     -MASK_REGNAMES, "Don't use alternate register names." },\
-+  { "sdata",           0, "no description yet" },                             \
-+  { "no-sdata",                0, "no description yet" },                             \
-+  { "sim",             0, "Link with libsim.a, libc.a and sim-crt0.o." },     \
-+  { "ads",             0, "Link with libads.a, libc.a and crt0.o." },         \
-+  { "yellowknife",     0, "Link with libyk.a, libc.a and crt0.o." },          \
-+  { "mvme",            0, "Link with libmvme.a, libc.a and crt0.o." },        \
-+  { "emb",             0, "Set the PPC_EMB bit in the ELF flags header" },    \
-+  { "solaris-cclib",   0, "no description yet" },                             \
-+  { "shlib",           0, "no description yet" },                             \
-+  EXTRA_SUBTARGET_SWITCHES                                                    \
-+  { "newlib",          0, "no description yet" },
- /* This is meant to be redefined in the host dependent files */
- #define EXTRA_SUBTARGET_SWITCHES
-@@ -111,8 +111,8 @@ extern const char *rs6000_abi_name;
- extern const char *rs6000_sdata_name;
- #define SUBTARGET_OPTIONS                                             \
--  { "call-",  &rs6000_abi_name},                                      \
--  { "sdata=", &rs6000_sdata_name}
-+  { "call-",  &rs6000_abi_name, "Select ABI calling convention." },                   \
-+  { "sdata=", &rs6000_sdata_name, "Select method for sdata handling." }
- /* Max # of bytes for variables to automatically be put into the .sdata
-    or .sdata2 sections.  */
diff --git a/gcc-ppc-ice.patch b/gcc-ppc-ice.patch
deleted file mode 100644 (file)
index 206e902..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# DP: Add "Internal compiler error:" before some errors
-# DP:  by Franz Sirl
-
-Index: gcc/toplev.c
---- toplev.c   1999/05/20 10:40:05     1.185.4.1
-+++ gcc/toplev.c       1999/06/12 18:55:32
-@@ -1467,6 +1467,8 @@ fatal_insn VPROTO((const char *msgid, rt
- #endif
-   va_list ap;
-+  error ("Internal compiler error:");
-+
-   VA_START (ap, insn);
- #ifndef ANSI_PROTOTYPES
-@@ -1943,6 +1945,8 @@ fatal VPROTO((const char *msgid, ...))
-   const char *msgid;
- #endif
-   va_list ap;
-+
-+  error ("Internal compiler error:");
-   VA_START (ap, msgid);
diff --git a/gcc-pr15666.patch b/gcc-pr15666.patch
deleted file mode 100644 (file)
index 376fa9d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: gcc/ChangeLog
-from  Alexandre Oliva  <aoliva@redhat.com>
-
-       PR middle-end/15666
-       * c-decl.c (finish_decl): Use change_decl_assembler_name for the
-       builtin decl as well.
-
-Index: gcc/c-decl.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/c-decl.c,v
-retrieving revision 1.504
-diff -u -p -r1.504 c-decl.c
---- gcc/c-decl.c 31 May 2004 22:06:27 -0000 1.504
-+++ gcc/c-decl.c 1 Jun 2004 04:03:41 -0000
-@@ -2886,7 +2886,7 @@ finish_decl (tree decl, tree init, tree 
-       {
-         tree builtin = built_in_decls [DECL_FUNCTION_CODE (decl)];
-         SET_DECL_RTL (builtin, NULL_RTX);
--        SET_DECL_ASSEMBLER_NAME (builtin, get_identifier (starred));
-+        change_decl_assembler_name (builtin, get_identifier (starred));
- #ifdef TARGET_MEM_FUNCTIONS
-         if (DECL_FUNCTION_CODE (decl) == BUILT_IN_MEMCPY)
-           init_block_move_fn (starred);
diff --git a/gcc-sparc32-rfi.patch b/gcc-sparc32-rfi.patch
deleted file mode 100644 (file)
index 2d0118e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# DP: Makes it so sparc32 remains binary compatible with older releases
-
---- gcc/crtstuff.c.orig        Mon Apr 26 20:11:08 1999
-+++ gcc/crtstuff.c     Mon Apr 26 20:12:28 1999
-@@ -89,11 +89,12 @@
-    
- /* References to __register_frame_info and __deregister_frame_info should
-    be weak in this file if at all possible.  */
--extern void __register_frame_info (void *, struct object *)
--                                TARGET_ATTRIBUTE_WEAK;
-+extern void __register_frame_info (void *, struct object *);
--extern void *__deregister_frame_info (void *)
--                                   TARGET_ATTRIBUTE_WEAK;
-+extern void *__deregister_frame_info (void *);
-+/* DEBIAN/SPARC - Changed the references to the
-+ * previous for binary compatibility reasons
-+ */
- /* Provide default definitions for the pseudo-ops used to switch to the
-    .ctors and .dtors sections.
diff --git a/gcc-visibility.patch b/gcc-visibility.patch
deleted file mode 100644 (file)
index 877ff53..0000000
+++ /dev/null
@@ -1,702 +0,0 @@
-diff -aur gcc-3.4.0orig/gcc/c-common.c gcc-3.4.0/gcc/c-common.c
---- gcc-3.4.0orig/gcc/c-common.c       2004-03-19 01:32:59.000000000 +0000
-+++ gcc-3.4.0/gcc/c-common.c   2004-05-10 21:05:33.000000000 +0100
-@@ -833,7 +833,7 @@
-                             handle_deprecated_attribute },
-   { "vector_size",          1, 1, false, true, false,
-                             handle_vector_size_attribute },
--  { "visibility",           1, 1, true,  false, false,
-+  { "visibility",           1, 1, false, false, false,
-                             handle_visibility_attribute },
-   { "tls_model",            1, 1, true,  false, false,
-                             handle_tls_model_attribute },
-@@ -4886,7 +4886,16 @@
-   *no_add_attrs = true;
--  if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl))
-+  if (TYPE_P (*node))
-+    {
-+      if (TREE_CODE (*node) != RECORD_TYPE && TREE_CODE (*node) != UNION_TYPE)
-+       {
-+         warning ("`%s' attribute ignored on non-class types",
-+                  IDENTIFIER_POINTER (name));
-+         return NULL_TREE;
-+       }
-+    }
-+  else if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl))
-     {
-       warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
-       return NULL_TREE;
-@@ -4897,6 +4906,14 @@
-       error ("visibility arg not a string");
-       return NULL_TREE;
-     }
-+  
-+  /*  If this is a type, set the visibility on the type decl.  */
-+  if (TYPE_P (decl))
-+    {
-+      decl = TYPE_NAME (decl);
-+      if (! decl)
-+        return NULL_TREE;
-+    }
-   if (strcmp (TREE_STRING_POINTER (id), "default") == 0)
-     DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT;
-@@ -4908,6 +4925,14 @@
-     DECL_VISIBILITY (decl) = VISIBILITY_PROTECTED;
-   else
-     error ("visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\"");
-+  DECL_VISIBILITYSPECIFIED (decl) = 1;
-+
-+  /* For decls only, go ahead and attach the attribute to the node as well.
-+     This is needed so we can determine whether we have VISIBILITY_DEFAULT
-+     because the visibility was not specified, or because it was explicitly
-+     overridden from the class visibility.  */
-+  if (DECL_P (*node))
-+    *no_add_attrs = false;
-   return NULL_TREE;
- }
-
-diff -aur gcc-3.4.0orig/gcc/c-decl.c gcc-3.4.0/gcc/c-decl.c
---- gcc-3.4.0orig/gcc/c-decl.c 2004-03-22 17:58:18.000000000 +0000
-+++ gcc-3.4.0/gcc/c-decl.c     2004-05-10 15:16:27.000000000 +0100
-@@ -1164,9 +1164,8 @@
-     }
-   /* warnings */
--  /* All decls must agree on a non-default visibility.  */
--  if (DECL_VISIBILITY (newdecl) != VISIBILITY_DEFAULT
--      && DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT
-+  /* All decls must agree on a visibility.  */
-+  if (DECL_VISIBILITYSPECIFIED (newdecl) && DECL_VISIBILITYSPECIFIED (olddecl)
-       && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl))
-     {
-       warning ("%Jredeclaration of '%D' with different visibility "
-@@ -1361,9 +1360,12 @@
-      Currently, it can only be defined in the prototype.  */
-   COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl);
--  /* If either declaration has a nondefault visibility, use it.  */
--  if (DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT)
--    DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl);
-+  /* Use visibility of whichever declaration had it specified */
-+  if (DECL_VISIBILITYSPECIFIED (olddecl))
-+    {
-+      DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl);
-+      DECL_VISIBILITYSPECIFIED (newdecl) = 1;
-+    }
-   if (TREE_CODE (newdecl) == FUNCTION_DECL)
-     {
-
-diff -aur gcc-3.4.0orig/gcc/common.opt gcc-3.4.0/gcc/common.opt
---- gcc-3.4.0orig/gcc/common.opt       2004-02-18 00:09:04.000000000 +0000
-+++ gcc-3.4.0/gcc/common.opt   2004-05-09 08:10:50.000000000 +0100
-@@ -718,6 +718,11 @@
- Common
- Add extra commentary to assembler output
-+fvisibility=
-+Common Joined RejectNegative
-+-fvisibility=[default|internal|hidden|protected]      Set the default symbol visibility
-+
-+
- fvpt
- Common
- Use expression value profiles in optimizations
-
-diff -aur gcc-3.4.0orig/gcc/c.opt gcc-3.4.0/gcc/c.opt
---- gcc-3.4.0orig/gcc/c.opt    2004-02-18 00:09:03.000000000 +0000
-+++ gcc-3.4.0/gcc/c.opt        2004-05-09 08:10:50.000000000 +0100
-@@ -656,6 +656,10 @@
- C++ ObjC++
- Use __cxa_atexit to register destructors
-+fvisibility-inlines-hidden
-+C++
-+Marks all inlined methods as having hidden visibility
-+
- fvtable-gc
- C++ ObjC++
- Discard unused virtual functions
-diff -aur gcc-3.4.0orig/gcc/c-opts.c gcc-3.4.0/gcc/c-opts.c
---- gcc-3.4.0orig/gcc/c-opts.c 2004-02-18 00:09:03.000000000 +0000
-+++ gcc-3.4.0/gcc/c-opts.c     2004-05-09 08:10:50.000000000 +0100
-@@ -912,6 +912,10 @@
-     case OPT_fuse_cxa_atexit:
-       flag_use_cxa_atexit = value;
-       break;
-+      
-+    case OPT_fvisibility_inlines_hidden:
-+      visibility_options.inlineshidden = value;
-+      break;
-     case OPT_fweak:
-       flag_weak = value;
-
-diff -aur gcc-3.4.0orig/gcc/cp/class.c gcc-3.4.0/gcc/cp/class.c
---- gcc-3.4.0orig/gcc/cp/class.c       2004-03-09 07:27:23.000000000 +0000
-+++ gcc-3.4.0/gcc/cp/class.c   2004-05-10 21:06:50.000000000 +0100
-@@ -524,6 +524,10 @@
-   DECL_ALIGN (decl) = MAX (TYPE_ALIGN (double_type_node),
-                          DECL_ALIGN (decl));
-+  /* The vtable's visibility is the class visibility.  There is no way
-+     to override the visibility for just the vtable. */
-+  DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type);
-+  DECL_VISIBILITYSPECIFIED (decl) = CLASSTYPE_VISIBILITYSPECIFIED (class_type);
-   import_export_vtable (decl, class_type, 0);
-   return decl;
-@@ -2971,7 +2975,25 @@
-       continue;
-         
-       if (TREE_CODE (x) == CONST_DECL || TREE_CODE (x) == VAR_DECL)
--      continue;
-+      {
-+        /* Apply the class's visibility attribute to static members
-+           which do not have a visibility attribute. */
-+        if (! lookup_attribute ("visibility", DECL_ATTRIBUTES (x)))
-+            {
-+              if (visibility_options.inlineshidden && DECL_INLINE (x))
-+                {
-+                  DECL_VISIBILITY (x) = VISIBILITY_HIDDEN;
-+                  DECL_VISIBILITYSPECIFIED (x) = 1;
-+                }
-+              else
-+                {
-+                  DECL_VISIBILITY (x) = CLASSTYPE_VISIBILITY (current_class_type);
-+                  DECL_VISIBILITYSPECIFIED (x) = CLASSTYPE_VISIBILITYSPECIFIED (current_class_type);
-+                }
-+            }
-+
-+        continue;
-+      }
-       /* Now it can only be a FIELD_DECL.  */
-@@ -3708,6 +3730,22 @@
-       check_for_override (x, t);
-       if (DECL_PURE_VIRTUAL_P (x) && ! DECL_VINDEX (x))
-       cp_error_at ("initializer specified for non-virtual method `%D'", x);
-+ 
-+      /* Apply the class's visibility attribute to methods which do
-+       not have a visibility attribute. */
-+      if (! lookup_attribute ("visibility", DECL_ATTRIBUTES (x)))
-+        {
-+          if (visibility_options.inlineshidden && DECL_INLINE (x))
-+            {
-+              DECL_VISIBILITY (x) = VISIBILITY_HIDDEN;
-+              DECL_VISIBILITYSPECIFIED (x) = 1;
-+            }
-+          else
-+            {
-+              DECL_VISIBILITY (x) = CLASSTYPE_VISIBILITY (current_class_type);
-+              DECL_VISIBILITYSPECIFIED (x) = CLASSTYPE_VISIBILITYSPECIFIED (current_class_type);
-+            }
-+        }
-       /* The name of the field is the original field name
-        Save this in auxiliary field for later overloading.  */
-@@ -7830,3 +7868,4 @@
-   *vid->last_init = build_tree_list (NULL_TREE, init);
-   vid->last_init = &TREE_CHAIN (*vid->last_init);
- }
-+
-
-diff -aur gcc-3.4.0orig/gcc/cp/cp-tree.h gcc-3.4.0/gcc/cp/cp-tree.h
---- gcc-3.4.0orig/gcc/cp/cp-tree.h     2004-03-20 00:13:08.000000000 +0000
-+++ gcc-3.4.0/gcc/cp/cp-tree.h 2004-05-10 20:56:56.000000000 +0100
-@@ -1008,7 +1008,12 @@
- #define PUBLICLY_UNIQUELY_DERIVED_P(PARENT, TYPE) \
-   (lookup_base ((TYPE), (PARENT),  ba_not_special | ba_quiet, NULL) \
-    != NULL_TREE)
--\f
-+
-+/* Gives the visibility specification for a class type.  */
-+#define CLASSTYPE_VISIBILITY(TYPE)            DECL_VISIBILITY (TYPE_NAME (TYPE))
-+#define CLASSTYPE_VISIBILITYSPECIFIED(TYPE)   DECL_VISIBILITYSPECIFIED (TYPE_NAME (TYPE))
-+
-+
- /* This is a few header flags for 'struct lang_type'.  Actually,
-    all but the first are used only for lang_type_class; they
-    are put in this structure to save space.  */
-
-diff -aur gcc-3.4.0orig/gcc/cp/decl.c gcc-3.4.0/gcc/cp/decl.c
---- gcc-3.4.0orig/gcc/cp/decl.c        2004-04-01 21:47:21.000000000 +0100
-+++ gcc-3.4.0/gcc/cp/decl.c    2004-05-28 21:16:11.000000000 +0100
-@@ -1869,17 +1869,34 @@
-   DECL_COMMON (newdecl) = DECL_COMMON (olddecl);
-   COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl);
--  /* If either declaration has a nondefault visibility, use it.  */
--  if (DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT)
-+  /* Warn about conflicting visibility specifications.  */
-+  if (DECL_VISIBILITYSPECIFIED (olddecl) && DECL_VISIBILITYSPECIFIED (newdecl)
-+      && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl))
-+    {
-+      warning ("%J'%D': visibility attribute ignored because it",
-+        newdecl, newdecl);
-+      warning ("%Jconflicts with previous declaration here", olddecl);
-+    }
-+  /* Choose the declaration which specified visibility.  */
-+  if (DECL_VISIBILITYSPECIFIED (olddecl))
-     {
--      if (DECL_VISIBILITY (newdecl) != VISIBILITY_DEFAULT
--        && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl))
--      {
--        warning ("%J'%D': visibility attribute ignored because it",
--                 newdecl, newdecl);
--        warning ("%Jconflicts with previous declaration here", olddecl);
--      }
-       DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl);
-+      DECL_VISIBILITYSPECIFIED (newdecl) = 1;
-+    }
-+  /* If it's a definition of a global operator new or operator
-+     delete, it must be default visibility.  */
-+  if (NEW_DELETE_OPNAME_P (DECL_NAME (newdecl)) && DECL_INITIAL (newdecl) != NULL_TREE)
-+    {
-+      if (!DECL_FUNCTION_MEMBER_P (newdecl) && VISIBILITY_DEFAULT != DECL_VISIBILITY (newdecl))
-+        {
-+          warning ("%J`%D': ignoring non-default symbol",
-+            newdecl, newdecl);
-+          warning ("%Jvisibility on global operator new or delete", newdecl);
-+          DECL_VISIBILITY (olddecl) = VISIBILITY_DEFAULT;
-+          DECL_VISIBILITYSPECIFIED (olddecl) = 1;
-+          DECL_VISIBILITY (newdecl) = VISIBILITY_DEFAULT;
-+          DECL_VISIBILITYSPECIFIED (newdecl) = 1;
-+        }
-     }
-   if (TREE_CODE (newdecl) == FUNCTION_DECL)
-
-diff -aur gcc-3.4.0orig/gcc/cp/method.c gcc-3.4.0/gcc/cp/method.c
---- gcc-3.4.0orig/gcc/cp/method.c      2004-04-08 23:15:58.000000000 +0100
-+++ gcc-3.4.0/gcc/cp/method.c  2004-05-09 08:10:52.000000000 +0100
-@@ -394,6 +394,7 @@
-      rewrite.  */
-   TREE_PUBLIC (thunk_fndecl) = TREE_PUBLIC (function);
-   DECL_VISIBILITY (thunk_fndecl) = DECL_VISIBILITY (function);
-+  DECL_VISIBILITYSPECIFIED (thunk_fndecl) = DECL_VISIBILITYSPECIFIED (function);
-   if (flag_syntax_only)
-     {
-
-diff -aur gcc-3.4.0orig/gcc/cp/optimize.c gcc-3.4.0/gcc/cp/optimize.c
---- gcc-3.4.0orig/gcc/cp/optimize.c    2004-02-08 01:52:50.000000000 +0000
-+++ gcc-3.4.0/gcc/cp/optimize.c        2004-05-09 08:10:52.000000000 +0100
-@@ -155,6 +155,7 @@
-       DECL_NOT_REALLY_EXTERN (clone) = DECL_NOT_REALLY_EXTERN (fn);
-       TREE_PUBLIC (clone) = TREE_PUBLIC (fn);
-       DECL_VISIBILITY (clone) = DECL_VISIBILITY (fn);
-+      DECL_VISIBILITYSPECIFIED (clone) = DECL_VISIBILITYSPECIFIED (fn);
-       /* Adjust the parameter names and locations.  */
-       parm = DECL_ARGUMENTS (fn);
-
-diff -aur gcc-3.4.0orig/gcc/cp/rtti.c gcc-3.4.0/gcc/cp/rtti.c
---- gcc-3.4.0orig/gcc/cp/rtti.c        2004-03-08 23:00:26.000000000 +0000
-+++ gcc-3.4.0/gcc/cp/rtti.c    2004-05-10 21:09:21.000000000 +0100
-@@ -361,7 +361,11 @@
-       pushdecl_top_level_and_finish (d, NULL_TREE);
-       if (CLASS_TYPE_P (type))
--      CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d;
-+      {
-+        CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d;
-+        DECL_VISIBILITY (d) = CLASSTYPE_VISIBILITY (type);
-+        DECL_VISIBILITYSPECIFIED (d) = CLASSTYPE_VISIBILITYSPECIFIED (type);
-+      }
-       /* Remember the type it is for.  */
-       TREE_TYPE (name) = type;
-@@ -759,6 +763,11 @@
-     TREE_STATIC (name_decl) = 1;
-     DECL_EXTERNAL (name_decl) = 0;
-     TREE_PUBLIC (name_decl) = 1;
-+    if (CLASS_TYPE_P (target))
-+      {
-+        DECL_VISIBILITY (name_decl) = CLASSTYPE_VISIBILITY (target);
-+        DECL_VISIBILITYSPECIFIED (name_decl) = CLASSTYPE_VISIBILITYSPECIFIED (target);
-+      }
-     import_export_tinfo (name_decl, target, typeinfo_in_lib_p (target));
-     /* External name of the string containing the type's name has a
-        special name.  */
-
-diff -aur gcc-3.4.0orig/gcc/c-pragma.c gcc-3.4.0/gcc/c-pragma.c
---- gcc-3.4.0orig/gcc/c-pragma.c       2004-01-23 23:35:53.000000000 +0000
-+++ gcc-3.4.0/gcc/c-pragma.c   2004-05-09 08:10:52.000000000 +0100
-@@ -480,6 +480,86 @@
-   return asmname;
- }
-+
-+#ifdef HANDLE_PRAGMA_VISIBILITY
-+static void handle_pragma_visibility (cpp_reader *);
-+
-+/* Sets the default visibility for symbols to something other than that
-+   specified on the command line.  */
-+static void
-+handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED)
-+{ /* Form is #pragma GCC visibility push(hidden)|pop */
-+  static int visstack [16], visidx;
-+  tree x;
-+  enum cpp_ttype token;
-+  enum { bad, push, pop } action = bad;
-+ 
-+  token = c_lex (&x);
-+  if (token == CPP_NAME)
-+    {
-+      const char *op = IDENTIFIER_POINTER (x);
-+      if (!strcmp (op, "push"))
-+        action = push;
-+      else if (!strcmp (op, "pop"))
-+        action = pop;
-+    }
-+  if (bad == action)
-+    GCC_BAD ("#pragma GCC visibility must be followed by push or pop");
-+  else
-+    {
-+      if (pop == action)
-+        {
-+          if (!visidx)
-+            {
-+              GCC_BAD ("No matching push for '#pragma GCC visibility pop'");
-+            }
-+          else
-+            {
-+              default_visibility = visstack[--visidx];
-+              visibility_options.inpragma = (visidx>0);
-+            }
-+        }
-+      else
-+        {
-+          if (c_lex (&x) != CPP_OPEN_PAREN)
-+            GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored");
-+          token = c_lex (&x);
-+          if (token != CPP_NAME)
-+            {
-+              GCC_BAD ("malformed #pragma GCC visibility push");
-+            }
-+          else if (visidx >= 16)
-+            {
-+              GCC_BAD ("No more than sixteen #pragma GCC visibility pushes allowed at once");
-+            }
-+          else
-+            {
-+              const char *str = IDENTIFIER_POINTER (x);
-+              visstack[visidx++] = default_visibility;
-+              if (!strcmp (str, "default"))
-+                default_visibility = VISIBILITY_DEFAULT;
-+              else if (!strcmp (str, "internal"))
-+                default_visibility = VISIBILITY_INTERNAL;
-+              else if (!strcmp (str, "hidden"))
-+                default_visibility = VISIBILITY_HIDDEN;  
-+              else if (!strcmp (str, "protected"))
-+                default_visibility = VISIBILITY_PROTECTED;
-+              else
-+                {
-+                  GCC_BAD ("#pragma GCC visibility push() must specify default, internal, hidden or protected");
-+                }
-+              visibility_options.inpragma = 1;
-+            }
-+          if (c_lex (&x) != CPP_CLOSE_PAREN)
-+            GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored");
-+        }
-+    }
-+  if (c_lex (&x) != CPP_EOF)
-+    warning ("junk at end of '#pragma GCC visibility'");
-+}
-+
-+#endif
-+
- /* Front-end wrapper for pragma registration to avoid dragging
-    cpplib.h in almost everywhere.  */
- void
-@@ -505,6 +585,9 @@
- #ifdef HANDLE_PRAGMA_EXTERN_PREFIX
-   c_register_pragma (0, "extern_prefix", handle_pragma_extern_prefix);
- #endif
-+#ifdef HANDLE_PRAGMA_VISIBILITY
-+  c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
-+#endif
- #ifdef REGISTER_TARGET_PRAGMAS
-   REGISTER_TARGET_PRAGMAS ();
-diff -aur gcc-3.4.0orig/gcc/c-pragma.h gcc-3.4.0/gcc/c-pragma.h
---- gcc-3.4.0orig/gcc/c-pragma.h       2004-01-31 06:18:05.000000000 +0000
-+++ gcc-3.4.0/gcc/c-pragma.h   2004-05-09 08:10:53.000000000 +0100
-@@ -44,6 +44,11 @@
- #define HANDLE_PRAGMA_PACK 1
- #endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
-+/* It's safe to always leave visibility pragma enabled as if
-+   visibility is not supported on the host OS platform the
-+   statements are ignored.  */
-+#define HANDLE_PRAGMA_VISIBILITY 1
-+
- extern void init_pragma (void);
- /* Front-end wrapper for pragma registration to avoid dragging
-
-
-diff -aur gcc-3.4.0orig/gcc/doc/invoke.texi gcc-3.4.0/gcc/doc/invoke.texi
---- gcc-3.4.0orig/gcc/doc/invoke.texi  2004-04-19 00:05:36.000000000 +0100
-+++ gcc-3.4.0/gcc/doc/invoke.texi      2004-05-28 21:29:36.000000000 +0100
-@@ -183,7 +183,8 @@
- -fno-optional-diags  -fpermissive @gol
- -frepo  -fno-rtti  -fstats  -ftemplate-depth-@var{n} @gol
- -fuse-cxa-atexit  -fno-weak  -nostdinc++ @gol
---fno-default-inline  -Wabi  -Wctor-dtor-privacy @gol
-+-fno-default-inline  -fvisibility-inlines-hidden @gol
-+-Wabi  -Wctor-dtor-privacy @gol
- -Wnon-virtual-dtor  -Wreorder @gol
- -Weffc++  -Wno-deprecated @gol
- -Wno-non-template-friend  -Wold-style-cast @gol
-@@ -674,7 +675,8 @@
- -fargument-alias  -fargument-noalias @gol
- -fargument-noalias-global  -fleading-underscore @gol
- -ftls-model=@var{model} @gol
---ftrapv  -fwrapv  -fbounds-check}
-+-ftrapv  -fwrapv  -fbounds-check @gol
-+-fvisibility}
- @end table
- @menu
-@@ -1433,6 +1435,20 @@
- destructors, but will only work if your C library supports
- @code{__cxa_atexit}.
-+@item -fvisibility-inlines-hidden
-+@opindex fvisibility-inlines-hidden
-+Causes all inlined methods to be marked with
-+@code{__attribute__ ((visibility ("hidden")))} so that they do not
-+appear in the export table of a DSO and do not require a PLT indirection
-+when used within the DSO. Enabling this option can have a dramatic effect
-+on load and link times of a DSO as it massively reduces the size of the
-+dynamic export table when the library makes heavy use of templates. While
-+it can cause bloating through duplication of code within each DSO where
-+it is used, often the wastage is less than the considerable space occupied
-+by a long symbol name in the export table which is typical when using
-+templates and namespaces. For even more savings, combine with the
-+@code{-fvisibility=hidden} switch.
-+
- @item -fno-weak
- @opindex fno-weak
- Do not use weak symbol support, even if it is provided by the linker.
-@@ -11198,6 +11214,54 @@
- The default without @option{-fpic} is @code{initial-exec}; with
- @option{-fpic} the default is @code{global-dynamic}.
-+
-+@item -fvisibility=@var{default|internal|hidden|protected}
-+@opindex fvisibility
-+Set the default ELF image symbol visibility to the specified option - all
-+symbols will be marked with this unless overrided within the code.
-+Using this feature can very substantially improve linking and
-+load times of shared object libraries, produce more optimised
-+code, provide near-perfect API export and prevent symbol clashes.
-+It is @strong{strongly} recommended that you use this in any shared objects
-+you distribute.
-+     
-+Despite the nomenclature, @code{default} always means public ie;
-+available to be linked against from outside the shared object.
-+@code{protected} and @code{internal} are pretty useless in real-world
-+usage so the only other commonly used option will be @code{hidden}.
-+The default if -fvisibility isn't specified is @code{default} ie; make every
-+symbol public - this causes the same behaviour as previous versions of
-+GCC.
-+     
-+A good explanation of the benefits offered by ensuring ELF
-+symbols have the correct visibility is given by ``How To Write
-+Shared Libraries'' by Ulrich Drepper (which can be found at
-+@w{@uref{http://people.redhat.com/~drepper/}}) - however a superior
-+solution made possible by this option to marking things hidden when
-+the default is public is to make the default hidden and mark things
-+public. This is the norm with DLL's on Windows and with @option{-fvisibility=hidden}
-+and @code{__attribute__ ((visibility("default")))} instead of
-+@code{__declspec(dllexport)} you get almost identical semantics with
-+identical syntax. This is a great boon to those working with
-+cross-platform projects.
-+
-+For those adding visibility support to existing code, you may find
-+@samp{#pragma GCC visibility} of use. This works by you enclosing
-+the declarations you wish to set visibility for with (for example)
-+@samp{#pragma GCC visibility push(hidden)} and
-+@samp{#pragma GCC visibility pop}. These can be nested up to sixteen
-+times. Bear in mind that symbol visibility should be viewed @strong{as
-+part of the API interface contract} and thus all new code should
-+always specify visibility when it is not the default ie; declarations
-+only for use within the local DSO should @strong{always} be marked explicitly
-+as hidden as so to avoid PLT indirection overheads - making this
-+abundantly clear also aids readability and self-documentation of the code.
-+Note that due to ISO C++ specification requirements, operator new and
-+operator delete must always be of default visibility.
-+
-+An overview of these techniques, their benefits and how to use them
-+is at @w{@uref{http://www.nedprod.com/programs/gccvisibility.html}}.
-+
- @end table
- @c man end
-
-diff -aur gcc-3.4.0orig/gcc/flags.h gcc-3.4.0/gcc/flags.h
---- gcc-3.4.0orig/gcc/flags.h  2004-02-18 00:09:04.000000000 +0000
-+++ gcc-3.4.0/gcc/flags.h      2004-05-09 08:10:53.000000000 +0100
-@@ -60,6 +60,30 @@
- /* Nonzero means emit debugging information only for symbols which are used.  */
- extern int flag_debug_only_used_symbols;
-+/* Enumerate visibility settings.  */
-+#ifndef SYMBOL_VISIBILITY_DEFINED
-+#define SYMBOL_VISIBILITY_DEFINED
-+enum symbol_visibility
-+{
-+  VISIBILITY_DEFAULT,
-+  VISIBILITY_INTERNAL,
-+  VISIBILITY_HIDDEN,
-+  VISIBILITY_PROTECTED
-+};
-+#endif
-+
-+/* The default visibility for all symbols (unless overridden).  */
-+extern enum symbol_visibility default_visibility;
-+
-+struct visibility_flags
-+{
-+  unsigned inpragma : 1;      /* True when in #pragma GCC visibility.  */
-+  unsigned inlineshidden : 1; /* True when -finlineshidden in effect.  */
-+};
-+
-+/* Global visibility options.  */
-+extern struct visibility_flags visibility_options;
-+
- /* Nonzero means do optimizations.  -opt.  */
- extern int optimize;
-
-diff -aur gcc-3.4.0orig/gcc/opts.c gcc-3.4.0/gcc/opts.c
---- gcc-3.4.0orig/gcc/opts.c   2004-02-18 00:09:04.000000000 +0000
-+++ gcc-3.4.0/gcc/opts.c       2004-05-09 08:10:53.000000000 +0100
-@@ -142,6 +142,12 @@
-    write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.  */
- bool use_gnu_debug_info_extensions;
-+/* The default visibility for all symbols (unless overridden) */
-+enum symbol_visibility default_visibility = VISIBILITY_DEFAULT;
-+
-+/* Global visibility options.  */
-+struct visibility_flags visibility_options;
-+
- /* Columns of --help display.  */
- static unsigned int columns = 80;
-@@ -1440,6 +1446,21 @@
-       flag_verbose_asm = value;
-       break;
-+    case OPT_fvisibility_:
-+      {
-+        if(!strcmp(arg, "default"))
-+          default_visibility=VISIBILITY_DEFAULT;
-+        else if(!strcmp(arg, "internal"))
-+          default_visibility=VISIBILITY_INTERNAL;
-+        else if(!strcmp(arg, "hidden"))
-+          default_visibility=VISIBILITY_HIDDEN;
-+        else if(!strcmp(arg, "protected"))
-+          default_visibility=VISIBILITY_PROTECTED;
-+        else
-+          error("unrecognised visibility value \"%s\"", arg);
-+      }
-+      break;
-+
-     case OPT_fweb:
-       flag_web = value;
-       break;
-
-diff -aur gcc-3.4.0orig/gcc/tree.c gcc-3.4.0/gcc/tree.c
---- gcc-3.4.0orig/gcc/tree.c   2004-02-05 22:01:35.000000000 +0000
-+++ gcc-3.4.0/gcc/tree.c       2004-05-10 15:22:52.000000000 +0100
-@@ -2563,6 +2563,11 @@
-     layout_decl (t, 0);
-   else if (code == FUNCTION_DECL)
-     DECL_MODE (t) = FUNCTION_MODE;
-+    
-+  /* Set default visibility to whatever the user supplied with
-+     visibility_specified depending on #pragma GCC visibility.  */
-+  DECL_VISIBILITY (t) = default_visibility;
-+  DECL_VISIBILITYSPECIFIED (t) = visibility_options.inpragma;
-   return t;
- }
-
-diff -aur gcc-3.4.0orig/gcc/tree.h gcc-3.4.0/gcc/tree.h
---- gcc-3.4.0orig/gcc/tree.h   2004-02-08 01:52:43.000000000 +0000
-+++ gcc-3.4.0/gcc/tree.h       2004-05-09 08:10:54.000000000 +0100
-@@ -1499,6 +1499,10 @@
- /* Value of the decls's visibility attribute */
- #define DECL_VISIBILITY(NODE) (DECL_CHECK (NODE)->decl.visibility)
-+/* Nonzero means that the decl had its visibility specified rather than
-+   being inferred.  */
-+#define DECL_VISIBILITYSPECIFIED(NODE) (DECL_CHECK (NODE)->decl.visibility_specified)
-+
- /* In a FUNCTION_DECL, nonzero if the function cannot be inlined.  */
- #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.uninlinable)
-@@ -1633,7 +1637,8 @@
-    || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL)
- /* Enumerate visibility settings.  */
--
-+#ifndef SYMBOL_VISIBILITY_DEFINED
-+#define SYMBOL_VISIBILITY_DEFINED
- enum symbol_visibility
- {
-   VISIBILITY_DEFAULT,
-@@ -1641,6 +1646,7 @@
-   VISIBILITY_HIDDEN,
-   VISIBILITY_PROTECTED
- };
-+#endif
- struct function;
-@@ -1684,8 +1690,7 @@
-   unsigned thread_local_flag : 1;
-   unsigned declared_inline_flag : 1;
-   ENUM_BITFIELD(symbol_visibility) visibility : 2;
--  unsigned unused : 1;
--  /* one unused bit.  */
-+  unsigned visibility_specified : 1;
-   unsigned lang_flag_0 : 1;
-   unsigned lang_flag_1 : 1;
-
-diff -aur gcc-3.4.0orig/gcc/varasm.c gcc-3.4.0/gcc/varasm.c
---- gcc-3.4.0orig/gcc/varasm.c 2004-04-14 22:14:08.000000000 +0100
-+++ gcc-3.4.0/gcc/varasm.c     2004-05-09 08:10:54.000000000 +0100
-@@ -5150,8 +5150,8 @@
-   /* Static variables are always local.  */
-   else if (! TREE_PUBLIC (exp))
-     local_p = true;
--  /* A variable is local if the user tells us so.  */
--  else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
-+  /* A variable is local if the user explicitly tells us so.  */
-+  else if (DECL_VISIBILITYSPECIFIED (exp) && DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
-     local_p = true;
-   /* Otherwise, variables defined outside this object may not be local.  */
-   else if (DECL_EXTERNAL (exp))
-@@ -5159,6 +5159,9 @@
-   /* Linkonce and weak data are never local.  */
-   else if (DECL_ONE_ONLY (exp) || DECL_WEAK (exp))
-     local_p = false;
-+  /* If none of the above and visibility is not default, make local.  */
-+  else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
-+    local_p = true;
-   /* If PIC, then assume that any global name can be overridden by
-      symbols resolved from other modules.  */
-   else if (shlib)
-
diff --git a/gcc32-attr-visibility.patch b/gcc32-attr-visibility.patch
deleted file mode 100644 (file)
index 51536d8..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-2002-02-26  Jakub Jelinek  <jakub@redhat.com>
-
-       * attribs.c (c_common_attribute_table): Add visibility.
-       (handle_visibility_attribute): New function.
-       * varasm.c (assemble_visibility): New function.
-       * output.h (assemble_visibility): Add prototype.
-       * tree.h (MODULE_LOCAL_P): Define.
-       * crtstuff.c (__dso_handle): Use visibility attribute.
-       * config/i386/i386.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG
-       for MODULE_LOCAL_P symbols too.
-       * config/ia64/ia64.c (ia64_encode_section_info): Handle
-       MODULE_LOCAL_P symbols the same way as local symbols.
-       Add SDATA_NAME_FLAG_CHAR even if decl was explicitely forced
-       into .sdata/.sbss by the user.
-       * doc/extend.texi (Function Attributes): Document visibility
-       attribute.
-
-       * gcc.dg/ia64-visibility-1.c: New test.
-
---- gcc/attribs.c      2002/02/25 22:38:52     1.14
-+++ gcc/attribs.c      2002/02/26 21:17:14     1.15
-@@ -75,6 +75,8 @@ static tree handle_weak_attribute    PARAMS
-                                                bool *));
- static tree handle_alias_attribute    PARAMS ((tree *, tree, tree, int,
-                                                bool *));
-+static tree handle_visibility_attribute       PARAMS ((tree *, tree, tree, int,
-+                                               bool *));
- static tree handle_no_instrument_function_attribute PARAMS ((tree *, tree,
-                                                            tree, int,
-                                                            bool *));
-@@ -148,6 +150,8 @@ static const struct attribute_spec c_com
-                             handle_deprecated_attribute },
-   { "vector_size",          1, 1, false, true, false,
-                             handle_vector_size_attribute },
-+  { "visibility",           1, 1, true,  false, false,
-+                            handle_visibility_attribute },
-   { NULL,                     0, 0, false, false, false, NULL }
- };
-@@ -1061,6 +1065,50 @@ handle_alias_attribute (node, name, args
-   return NULL_TREE;
- }
-+/* Handle an "visibility" attribute; arguments as in
-+   struct attribute_spec.handler.  */
-+
-+static tree
-+handle_visibility_attribute (node, name, args, flags, no_add_attrs)
-+     tree *node;
-+     tree name;
-+     tree args;
-+     int flags ATTRIBUTE_UNUSED;
-+     bool *no_add_attrs;
-+{
-+  tree decl = *node;
-+
-+  if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl))
-+    {
-+      warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
-+      *no_add_attrs = true;
-+    }
-+  else
-+    {
-+      tree id;
-+
-+      id = TREE_VALUE (args);
-+      if (TREE_CODE (id) != STRING_CST)
-+      {
-+        error ("visibility arg not a string");
-+        *no_add_attrs = true;
-+        return NULL_TREE;
-+      }
-+      if (strcmp (TREE_STRING_POINTER (id), "hidden")
-+        && strcmp (TREE_STRING_POINTER (id), "protected")
-+        && strcmp (TREE_STRING_POINTER (id), "internal"))
-+      {
-+        error ("visibility arg must be one of \"hidden\", \"protected\" or \"internal\"");
-+        *no_add_attrs = true;
-+        return NULL_TREE;
-+      }
-+
-+      assemble_visibility (decl, TREE_STRING_POINTER (id));
-+    }
-+
-+  return NULL_TREE;
-+}
-+
- /* Handle a "no_instrument_function" attribute; arguments as in
-    struct attribute_spec.handler.  */
---- gcc/varasm.c       2002/02/20 23:19:19     1.250
-+++ gcc/varasm.c       2002/02/26 21:17:14     1.251
-@@ -5160,6 +5160,25 @@ assemble_alias (decl, target)
- #endif
- }
-+/* Emit an assembler directive to set symbol for DECL visibility to
-+   VISIBILITY_TYPE.  */
-+
-+void
-+assemble_visibility (decl, visibility_type)
-+     tree decl;
-+     const char *visibility_type ATTRIBUTE_UNUSED;
-+{
-+  const char *name;
-+
-+  name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
-+
-+#ifdef HAVE_GAS_HIDDEN
-+  fprintf (asm_out_file, "\t.%s\t%s\n", visibility_type, name);
-+#else
-+  warning ("visibility attribute not supported in this configuration; ignored");
-+#endif
-+}
-+
- /* Returns 1 if the target configuration supports defining public symbols
-    so that one of them will be chosen at link time instead of generating a
-    multiply-defined symbol error, whether through the use of weak symbols or
---- gcc/output.h       2002/02/17 14:23:50     1.94
-+++ gcc/output.h       2002/02/26 21:17:14     1.95
-@@ -255,6 +255,8 @@ extern void assemble_constant_align        PARA
- extern void assemble_alias            PARAMS ((tree, tree));
-+extern void assemble_visibility               PARAMS ((tree, const char *));
-+
- /* Output a string of literal assembler code
-    for an `asm' keyword used between functions.  */
- extern void assemble_asm              PARAMS ((tree));
---- gcc/tree.h 2002/02/20 00:19:33     1.308
-+++ gcc/tree.h 2002/02/26 21:17:14     1.309
-@@ -2283,6 +2283,11 @@ extern tree merge_attributes            PARAMS ((t
- extern tree merge_dllimport_decl_attributes PARAMS ((tree, tree));
- #endif
-+/* Return true if DECL will be always resolved to a symbol defined in the
-+   same module (shared library or program).  */
-+#define MODULE_LOCAL_P(DECL) \
-+  (lookup_attribute ("visibility", DECL_ATTRIBUTES (DECL)) != NULL)
-+
- /* Return a version of the TYPE, qualified as indicated by the
-    TYPE_QUALS, if one exists.  If no qualified version exists yet,
-    return NULL_TREE.  */
---- gcc/crtstuff.c     2002/02/05 10:31:01     1.54
-+++ gcc/crtstuff.c     2002/02/26 21:17:14     1.55
-@@ -213,13 +213,9 @@ STATIC void *__JCR_LIST__[]
-    in one DSO or the main program is not used in another object.  The
-    dynamic linker takes care of this.  */
--/* XXX Ideally the following should be implemented using
--       __attribute__ ((__visibility__ ("hidden")))
--   but the __attribute__ support is not yet there.  */
- #ifdef HAVE_GAS_HIDDEN
--asm (".hidden\t__dso_handle");
-+extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
- #endif
--
- #ifdef CRTSTUFFS_O
- void *__dso_handle = &__dso_handle;
- #else
---- gcc/config/i386/i386.h     2002/02/17 07:52:12     1.243
-+++ gcc/config/i386/i386.h     2002/02/26 21:17:18     1.244
-@@ -2266,7 +2266,9 @@ do {                                                             \
-                                                               \
-           SYMBOL_REF_FLAG (XEXP (rtl, 0))                     \
-             = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'      \
--               || ! TREE_PUBLIC (DECL));                      \
-+               || ! TREE_PUBLIC (DECL)                        \
-+               || (TREE_CODE (DECL) == VAR_DECL               \
-+                   && MODULE_LOCAL_P (DECL)));                \
-         }                                                     \
-       }                                                               \
- } while (0)
---- gcc/config/ia64/ia64.c     2002/01/21 02:24:02     1.139
-+++ gcc/config/ia64/ia64.c     2002/02/26 22:41:48     1.141
-@@ -6897,13 +6904,14 @@ ia64_encode_section_info (decl)
-      statically allocated, but the space is allocated somewhere else.  Such
-      decls can not be own data.  */
-   if (! TARGET_NO_SDATA
--      && TREE_STATIC (decl) && ! DECL_EXTERNAL (decl)
--      && ! (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
--      && ! (TREE_PUBLIC (decl)
--          && (flag_pic
--              || (DECL_COMMON (decl)
--                  && (DECL_INITIAL (decl) == 0
--                      || DECL_INITIAL (decl) == error_mark_node))))
-+      && ((TREE_STATIC (decl) && ! DECL_EXTERNAL (decl)
-+         && ! (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
-+         && ! (TREE_PUBLIC (decl)
-+               && (flag_pic
-+                   || (DECL_COMMON (decl)
-+                       && (DECL_INITIAL (decl) == 0
-+                           || DECL_INITIAL (decl) == error_mark_node)))))
-+        || MODULE_LOCAL_P (decl))
-       /* Either the variable must be declared without a section attribute,
-        or the section must be sdata or sbss.  */
-       && (DECL_SECTION_NAME (decl) == 0
-@@ -6923,9 +6931,12 @@ ia64_encode_section_info (decl)
-       ;
-       /* If this is an incomplete type with size 0, then we can't put it in
--       sdata because it might be too big when completed.  */
--      else if (size > 0
--             && size <= (HOST_WIDE_INT) ia64_section_threshold
-+       sdata because it might be too big when completed.
-+       Objects bigger than threshold should have SDATA_NAME_FLAG_CHAR
-+       added if they are in .sdata or .sbss explicitely.  */
-+      else if (((size > 0
-+               && size <= (HOST_WIDE_INT) ia64_section_threshold)
-+              || DECL_SECTION_NAME (decl))
-              && symbol_str[0] != SDATA_NAME_FLAG_CHAR)
-       {
-         size_t len = strlen (symbol_str);
---- gcc/doc/extend.texi        2002/02/23 12:59:07     1.64
-+++ gcc/doc/extend.texi        2002/02/26 21:17:17     1.65
-@@ -2198,7 +2198,7 @@ The @code{alias} attribute causes the de
- alias for another symbol, which must be specified.  For instance,
- @smallexample
--void __f () @{ /* do something */; @}
-+void __f () @{ /* @r{Do something.} */; @}
- void f () __attribute__ ((weak, alias ("__f")));
- @end smallexample
-@@ -2206,6 +2206,19 @@ declares @samp{f} to be a weak alias for
- mangled name for the target must be used.
- Not all target machines support this attribute.
-+
-+@item visibility ("@var{visibility_type}")
-+@cindex @code{visibility} attribute
-+The @code{visibility} attribute on ELF targets causes the declaration
-+to be emitted with hidden, protected or internal visibility.
-+
-+@smallexample
-+void __attribute__ ((visibility ("protected")))
-+f () @{ /* @r{Do something.} */; @}
-+int i __attribute__ ((visibility ("hidden")));
-+@end smallexample
-+
-+Not all ELF targets support this attribute.
- @item regparm (@var{number})
- @cindex functions that are passed arguments in registers on the 386
---- gcc/testsuite/gcc.dg/ia64-visibility-1.c.jj        Tue Feb 26 12:30:32 2002
-+++ gcc/testsuite/gcc.dg/ia64-visibility-1.c   Tue Feb 26 12:33:26 2002
-@@ -0,0 +1,36 @@
-+/* Test visibility attribute.  */
-+/* { dg-do compile { target ia64*-*-linux* } } */
-+/* { dg-options "-O2 -fpic" } */
-+/* { dg-final { scan-assembler "\\.hidden.*variable_j" } } */
-+/* { dg-final { scan-assembler "\\.hidden.*variable_m" } } */
-+/* { dg-final { scan-assembler "\\.protected.*baz" } } */
-+/* { dg-final { scan-assembler "gprel.*variable_i" } } */
-+/* { dg-final { scan-assembler "gprel.*variable_j" } } */
-+/* { dg-final { scan-assembler "ltoff.*variable_k" } } */
-+/* { dg-final { scan-assembler "gprel.*variable_l" } } */
-+/* { dg-final { scan-assembler "gprel.*variable_m" } } */
-+/* { dg-final { scan-assembler "ltoff.*variable_n" } } */
-+
-+static int variable_i;
-+int variable_j __attribute__((visibility ("hidden")));
-+int variable_k;
-+struct A { char a[64]; };
-+static struct A variable_l __attribute__((section (".sbss")));
-+struct A variable_m __attribute__((visibility ("hidden"), section(".sbss")));
-+struct A variable_n __attribute__((section (".sbss")));
-+
-+int foo (void)
-+{
-+  return variable_i + variable_j + variable_k;
-+}
-+
-+void bar (void)
-+{
-+  variable_l.a[10] = 0;
-+  variable_m.a[10] = 0;
-+  variable_n.a[10] = 0;
-+}
-+
-+void __attribute__((visibility ("protected"))) baz (void)
-+{
-+}
diff --git a/gcc32-attr-visibility2.patch b/gcc32-attr-visibility2.patch
deleted file mode 100644 (file)
index a36471b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-2002-03-06  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/i386/i386.h (REDO_SECTION_INFO_P): Define.
-
-2002-03-02  Richard Henderson  <rth@redhat.com>
-
-       * config/i386/i386.h (ENCODE_SECTION_INFO): MODULE_LOCAL_P applies
-       to functions as well.
-
-2002-03-02  Richard Henderson  <rth@redhat.com>
-
-       * attribs.c (handle_visibility_attribute): Don't call
-       assemble_visibility.
-       * varasm.c (maybe_assemble_visibility): New.
-       (assemble_start_function, assemble_variable, assemble_alias): Use it.
-
---- gcc/config/i386/i386.h.jj  Tue Jun  4 18:54:32 2002
-+++ gcc/config/i386/i386.h     Tue Jun  4 18:54:42 2002
-@@ -2268,12 +2268,13 @@ do {                                                           \
-           SYMBOL_REF_FLAG (XEXP (rtl, 0))                     \
-             = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'      \
-                || ! TREE_PUBLIC (DECL)                        \
--               || (TREE_CODE (DECL) == VAR_DECL               \
--                   && MODULE_LOCAL_P (DECL)));                \
-+               || MODULE_LOCAL_P (DECL));                     \
-         }                                                     \
-       }                                                               \
- } while (0)
-+#define REDO_SECTION_INFO_P(DECL) 1
-+
- /* The `FINALIZE_PIC' macro serves as a hook to emit these special
-    codes once the function is being compiled into assembly code, but
-    not before.  (It is not done before, because in the case of
---- gcc/varasm.c.jj    Tue Jun  4 18:54:32 2002
-+++ gcc/varasm.c       Tue Jun  4 18:54:42 2002
-@@ -167,6 +167,7 @@ static unsigned min_align          PARAMS ((unsi
- static void output_constructor                PARAMS ((tree, HOST_WIDE_INT,
-                                                unsigned int));
- static void globalize_decl            PARAMS ((tree));
-+static void maybe_assemble_visibility PARAMS ((tree));
- static int in_named_entry_eq          PARAMS ((const PTR, const PTR));
- static hashval_t in_named_entry_hash  PARAMS ((const PTR));
- #ifdef ASM_OUTPUT_BSS
-@@ -1238,6 +1239,8 @@ assemble_start_function (decl, fnname)
-       }
-       globalize_decl (decl);
-+
-+      maybe_assemble_visibility (decl);
-     }
-   /* Do any machine/system dependent processing of the function name */
-@@ -1591,6 +1594,9 @@ assemble_variable (decl, top_level, at_e
-   DECL_ALIGN (decl) = align;
-   set_mem_align (decl_rtl, align);
-+  if (TREE_PUBLIC (decl))
-+    maybe_assemble_visibility (decl);
-+
-   /* Handle uninitialized definitions.  */
-   if ((DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node)
-@@ -5167,7 +5173,11 @@ assemble_alias (decl, target)
- #ifdef ASM_OUTPUT_DEF
-   /* Make name accessible from other files, if appropriate.  */
-   if (TREE_PUBLIC (decl))
--    globalize_decl (decl);
-+    {
-+      globalize_decl (decl);
-+
-+      maybe_assemble_visibility (decl);
-+    }
- #ifdef ASM_OUTPUT_DEF_FROM_DECLS
-   ASM_OUTPUT_DEF_FROM_DECLS (asm_out_file, decl, target);
-@@ -5213,6 +5223,21 @@ assemble_visibility (decl, visibility_ty
- #endif
- }
-+/* A helper function to call assemble_visibility when needed for a decl.  */
-+
-+static void
-+maybe_assemble_visibility (decl)
-+     tree decl;
-+{
-+  tree visibility = lookup_attribute ("visibility", DECL_ATTRIBUTES (decl));
-+  if (visibility)
-+    {
-+      const char *type
-+      = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (visibility)));
-+      assemble_visibility (decl, type);
-+    }
-+}
-+
- /* Returns 1 if the target configuration supports defining public symbols
-    so that one of them will be chosen at link time instead of generating a
-    multiply-defined symbol error, whether through the use of weak symbols or
---- gcc/attribs.c.jj   Tue Jun  4 18:54:32 2002
-+++ gcc/attribs.c      Tue Jun  4 18:54:42 2002
-@@ -1101,8 +1101,6 @@ handle_visibility_attribute (node, name,
-         *no_add_attrs = true;
-         return NULL_TREE;
-       }
--
--      assemble_visibility (decl, TREE_STRING_POINTER (id));
-     }
-   return NULL_TREE;
diff --git a/gcc32-attr-visibility3.patch b/gcc32-attr-visibility3.patch
deleted file mode 100644 (file)
index bc66ec9..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-2002-07-31  Jakub Jelinek  <jakub@redhat.com>
-
-       * varasm.c (assemble_visibility): Strip name encoding.
-
-       * gcc.dg/ia64-visibility-2.c: New test.
-
---- gcc/testsuite/gcc.dg/ia64-visibility-2.c.jj        2002-07-31 16:31:50.000000000 +0200
-+++ gcc/testsuite/gcc.dg/ia64-visibility-2.c   2002-07-31 16:32:36.000000000 +0200
-@@ -0,0 +1,15 @@
-+/* Test visibility attribute.  */
-+/* { dg-do link { target ia64*-*-linux* } } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+int foo (int x);
-+int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
-+int bar (int x)
-+{
-+  return x;
-+}
-+
-+int main ()
-+{
-+  return 0;
-+}
---- gcc/varasm.c.jj    2002-07-30 12:49:45.000000000 +0200
-+++ gcc/varasm.c       2002-07-31 16:20:22.000000000 +0200
-@@ -5227,7 +5227,7 @@ assemble_visibility (decl, visibility_ty
- {
-   const char *name;
--  name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
-+  STRIP_NAME_ENCODING (name, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
- #ifdef HAVE_GAS_HIDDEN
-   fprintf (asm_out_file, "\t.%s\t%s\n", visibility_type, name);
diff --git a/gcc32-attr-visibility4.patch b/gcc32-attr-visibility4.patch
deleted file mode 100644 (file)
index eccfbb9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-2002-08-23  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/alpha/alpha.c (alpha_encode_section_info): Use
-       MODULE_LOCAL_P.
-
---- gcc/config/alpha/alpha.c.jj        2002-05-30 11:12:20.000000000 +0200
-+++ gcc/config/alpha/alpha.c   2002-08-23 12:05:30.000000000 +0200
-@@ -1594,7 +1594,7 @@ alpha_encode_section_info (decl)
-   /* Linkonce and weak data is never local.  */
-   else if (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
-     is_local = false;
--  else if (! TREE_PUBLIC (decl))
-+  else if (! TREE_PUBLIC (decl) || MODULE_LOCAL_P (decl))
-     is_local = true;
-   /* If PIC, then assume that any global name can be overridden by
-      symbols resolved from other modules.  */
diff --git a/gcc32-attr-visibility5.patch b/gcc32-attr-visibility5.patch
deleted file mode 100644 (file)
index b76b661..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-2002-08-28  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/alpha/alpha.c (alpha_encode_section_info): Check static and
-       visibility before DECL_EXTERNAL.
-
---- gcc/config/alpha/alpha.c.jj        2002-08-28 11:20:29.000000000 +0200
-+++ gcc/config/alpha/alpha.c   2002-08-28 21:50:55.000000000 +0200
-@@ -1589,13 +1589,13 @@ alpha_encode_section_info (decl)
-   /* A variable is considered "local" if it is defined in this module.  */
--  if (DECL_EXTERNAL (decl))
-+  if (! TREE_PUBLIC (decl) || MODULE_LOCAL_P (decl))
-+    is_local = true;
-+  else if (DECL_EXTERNAL (decl))
-     is_local = false;
-   /* Linkonce and weak data is never local.  */
-   else if (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
-     is_local = false;
--  else if (! TREE_PUBLIC (decl) || MODULE_LOCAL_P (decl))
--    is_local = true;
-   /* If PIC, then assume that any global name can be overridden by
-      symbols resolved from other modules.  */
-   else if (flag_pic)
diff --git a/gcc32-c++-pretty_function.patch b/gcc32-c++-pretty_function.patch
deleted file mode 100644 (file)
index be1f5fc..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-2002-05-24  Jakub Jelinek  <jakub@redhat.com>
-
-       PR c++/6794
-       * decl.c (cp_make_fname_decl): If outside of function, emit
-       the variable immediately.
-       * call.c (build_call): Avoid crashing when noreturn function
-       is called outside of function context.
-
-       * g++.dg/ext/pretty1.C: New test.
-       * g++.dg/ext/pretty2.C: New test.
-
---- gcc/cp/decl.c.jj   Tue May 21 20:27:10 2002
-+++ gcc/cp/decl.c      Fri May 24 17:28:16 2002
-@@ -6772,7 +6772,10 @@ cp_make_fname_decl (id, type_dep)
-   TREE_USED (decl) = 1;
-   cp_finish_decl (decl, init, NULL_TREE, LOOKUP_ONLYCONVERTING);
--      
-+
-+  if (!current_function_decl)
-+    rest_of_decl_compilation (decl, 0, 1, 0);
-+
-   return decl;
- }
---- gcc/cp/call.c.jj   Mon Apr 15 14:48:51 2002
-+++ gcc/cp/call.c      Fri May 24 12:49:22 2002
-@@ -408,7 +408,7 @@ build_call (function, parms)
-   nothrow = ((decl && TREE_NOTHROW (decl))
-            || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
--  if (decl && TREE_THIS_VOLATILE (decl))
-+  if (decl && TREE_THIS_VOLATILE (decl) && current_function_decl)
-     current_function_returns_abnormally = 1;
-   if (decl && TREE_DEPRECATED (decl))
---- gcc/testsuite/g++.dg/ext/pretty1.C.jj      Fri May 24 18:09:27 2002
-+++ gcc/testsuite/g++.dg/ext/pretty1.C Fri May 24 18:13:10 2002
-@@ -0,0 +1,67 @@
-+// PR c++/6794
-+// Test whether __PRETTY_FUNCTION__ works in templates, functions and
-+// in initializers at global scope
-+// { dg-do compile }
-+// { dg-options "" }
-+
-+extern "C" void __assert_fail (const char *, const char *,
-+                             unsigned int, const char *)
-+  throw() __attribute__((noreturn));
-+extern "C" void abort (void);
-+extern "C" void exit (int);
-+
-+#define str(expr) #expr
-+#define assert(expr)                                          \
-+  ((expr) ? 0 : (__assert_fail (str(expr), __FILE__, __LINE__,        \
-+                              __PRETTY_FUNCTION__), 0))
-+
-+int __attribute__((noinline))
-+foo (void)
-+{
-+  return 1;
-+}
-+
-+template<class T> int
-+bar (T)
-+{
-+  return (assert (foo ()), 1);
-+}
-+
-+template<> int
-+bar<int> (int)
-+{
-+  return (assert (foo ()), 2);
-+}
-+
-+int a = (assert (foo ()), 1);
-+int b = (assert (foo ()), 2);
-+
-+int
-+main ()
-+{
-+  double c = 1.0;
-+  unsigned char *d = 0;
-+  int e = (assert (foo ()), 3);
-+
-+  bar (c);
-+  bar (d);
-+  bar (e);
-+}
-+
-+namespace N
-+{
-+  int f = (assert (foo ()), 4);
-+}
-+
-+void __attribute__((noinline))
-+__assert_fail (const char *cond, const char *file, unsigned int line,
-+             const char *pretty) throw ()
-+{
-+  abort ();
-+}
-+
-+// { dg-final { scan-assembler "int bar\\(T\\).*with T = int" } }
-+// { dg-final { scan-assembler "top level" } }
-+// { dg-final { scan-assembler "int main\\(\\)" } }
-+// { dg-final { scan-assembler "int bar\\(T\\).*with T = double" } }
-+// { dg-final { scan-assembler "int bar\\(T\\).*with T = unsigned char\*" } }
---- gcc/testsuite/g++.dg/ext/pretty2.C.jj      Fri May 24 18:09:27 2002
-+++ gcc/testsuite/g++.dg/ext/pretty2.C Fri May 24 18:13:42 2002
-@@ -0,0 +1,61 @@
-+// PR c++/6794
-+// Test whether __PRETTY_FUNCTION__ works in templates, functions and
-+// in initializers at global scope
-+// { dg-do run }
-+// { dg-options "" }
-+
-+extern "C" void __assert_fail (const char *, const char *,
-+                             unsigned int, const char *)
-+  throw() __attribute__((noreturn));
-+extern "C" void abort (void);
-+extern "C" void exit (int);
-+
-+#define str(expr) #expr
-+#define assert(expr)                                          \
-+  ((expr) ? 0 : (__assert_fail (str(expr), __FILE__, __LINE__,        \
-+                              __PRETTY_FUNCTION__), 0))
-+
-+int __attribute__((noinline))
-+foo (void)
-+{
-+  return 1;
-+}
-+
-+template<class T> int
-+bar (T)
-+{
-+  return (assert (foo ()), 1);
-+}
-+
-+template<> int
-+bar<int> (int)
-+{
-+  return (assert (foo ()), 2);
-+}
-+
-+int a = (assert (foo ()), 1);
-+int b = (assert (foo ()), 2);
-+
-+int
-+main ()
-+{
-+  double c = 1.0;
-+  unsigned char *d = 0;
-+  int e = (assert (foo ()), 3);
-+
-+  bar (c);
-+  bar (d);
-+  bar (e);
-+}
-+
-+namespace N
-+{
-+  int f = (assert (foo ()), 4);
-+}
-+
-+void __attribute__((noinline))
-+__assert_fail (const char *cond, const char *file, unsigned int line,
-+             const char *pretty) throw ()
-+{
-+  abort ();
-+}
diff --git a/gcc32-cfg-eh.patch b/gcc32-cfg-eh.patch
deleted file mode 100644 (file)
index 4d11138..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-2002-05-28  Richard Henderson  <rth@redhat.com>
-
-       * flow.c (calculate_global_regs_live): Rename call_used to
-       invalidated_by_call.  Initialize from regs_invalidated_by_call
-       instead of call_used_regs.
-
-2002-07-20  Jakub Jelinek  <jakub@redhat.com>
-
-       * g++.dg/opt/life1.C: New test.
-
---- gcc/flow.c 28 May 2002 12:53:39 -0000      1.527
-+++ gcc/flow.c 28 May 2002 20:01:29 -0000      1.528
-@@ -1048,19 +1048,19 @@ calculate_global_regs_live (blocks_in, b
-      int flags;
- {
-   basic_block *queue, *qhead, *qtail, *qend;
--  regset tmp, new_live_at_end, call_used;
--  regset_head tmp_head, call_used_head;
-+  regset tmp, new_live_at_end, invalidated_by_call;
-+  regset_head tmp_head, invalidated_by_call_head;
-   regset_head new_live_at_end_head;
-   int i;
-   tmp = INITIALIZE_REG_SET (tmp_head);
-   new_live_at_end = INITIALIZE_REG_SET (new_live_at_end_head);
--  call_used = INITIALIZE_REG_SET (call_used_head);
-+  invalidated_by_call = INITIALIZE_REG_SET (invalidated_by_call_head);
-   /* Inconveniently, this is only readily available in hard reg set form.  */
-   for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
--    if (call_used_regs[i])
--      SET_REGNO_REG_SET (call_used, i);
-+    if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
-+      SET_REGNO_REG_SET (invalidated_by_call, i);
-   /* Create a worklist.  Allocate an extra slot for ENTRY_BLOCK, and one
-      because the `head == tail' style test for an empty queue doesn't
-@@ -1147,7 +1147,7 @@ calculate_global_regs_live (blocks_in, b
-           if (e->flags & EDGE_EH)
-             {
-               bitmap_operation (tmp, sb->global_live_at_start,
--                                call_used, BITMAP_AND_COMPL);
-+                                invalidated_by_call, BITMAP_AND_COMPL);
-               IOR_REG_SET (new_live_at_end, tmp);
-             }
-           else
-@@ -1315,7 +1315,7 @@ calculate_global_regs_live (blocks_in, b
-   FREE_REG_SET (tmp);
-   FREE_REG_SET (new_live_at_end);
--  FREE_REG_SET (call_used);
-+  FREE_REG_SET (invalidated_by_call);
-   if (blocks_out)
-     {
---- gcc/testsuite/g++.dg/opt/life1.C.jj        Sat Jul 20 18:57:05 2002
-+++ gcc/testsuite/g++.dg/opt/life1.C   Sat Jul 20 19:00:01 2002
-@@ -0,0 +1,16 @@
-+// This testcase did not set up the pic register on IA-32 due
-+// to bug in calculate_global_regs_live EH edge handling.
-+// { dg-do compile { target i?86-*-linux* } }
-+// { dg-options "-O2 -fPIC" }
-+
-+struct A { };
-+
-+void foo (A (*fn)())
-+{
-+  try {
-+    A a = fn ();
-+  } catch (...) {
-+  }
-+}
-+
-+// { dg-final { scan-assembler "GLOBAL_OFFSET_TABLE" } }
diff --git a/gcc32-doc-gcov.patch b/gcc32-doc-gcov.patch
deleted file mode 100644 (file)
index d7abc9e..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-2002-08-14  Nathan Sidwell  <nathan@codesourcery.com>
-
-       * doc/invoke.texi (-a): Remove documentation.
-       (-fprofile-arcs): Remove reference to -a, -ax options.
-       * doc/gcov.texi (Gcov Data Files): Data might be merged.
-
---- gcc/doc/gcov.texi.jj       2001-11-15 11:38:19.000000000 +0100
-+++ gcc/doc/gcov.texi  2002-08-22 11:48:48.000000000 +0200
-@@ -388,7 +388,7 @@ built with the GCC @option{-fprofile-arc
- separate @file{.da} file is created for each source file compiled with
- this option, and the name of the @file{.da} file is stored as an
- absolute pathname in the resulting object file.  This path name is
--derived from the source file name by substituting a @file{.da} suffix.
-+derived from the object file name by substituting a @file{.da} suffix.
- The format of the @file{.da} file is fairly simple.  The first 8-byte
- number is the number of counts in the file, followed by the counts
---- gcc/doc/invoke.texi.jj     2002-08-08 17:55:08.000000000 +0200
-+++ gcc/doc/invoke.texi        2002-08-22 11:46:49.000000000 +0200
-@@ -2831,20 +2831,6 @@ analysis program @code{gprof}.  You must
- the source files you want data about, and you must also use it when
- linking.
--@cindex @code{tcov}
--@item -a
--@opindex a
--Generate extra code to write profile information for basic blocks, which will
--record the number of times each basic block is executed, the basic block start
--address, and the function name containing the basic block.  If @option{-g} is
--used, the line number and filename of the start of the basic block will also be
--recorded.  If not overridden by the machine description, the default action is
--to append to the text file @file{bb.out}.
--
--This data could be analyzed by a program like @code{tcov}.  Note,
--however, that the format of the data is not what @code{tcov} expects.
--Eventually GNU @code{gprof} should be extended to process this data.
--
- @item -Q
- @opindex Q
- Makes the compiler print out each function name as it is compiled, and
-@@ -2877,18 +2863,7 @@ optimization and code generation options
- Control Optimization}).
- The other use of @option{-fprofile-arcs} is for use with @code{gcov},
--when it is used with the @option{-ftest-coverage} option.  GCC
--supports two methods of determining code coverage: the options that
--support @code{gcov}, and options @option{-a} and @option{-ax}, which
--write information to text files.  The options that support @code{gcov}
--do not need to instrument every arc in the program, so a program compiled
--with them runs faster than a program compiled with @option{-a}, which
--adds instrumentation code to every basic block in the program.  The
--tradeoff: since @code{gcov} does not have execution counts for all
--branches, it must start with the execution counts for the instrumented
--branches, and then iterate over the program flow graph until the entire
--graph has been solved.  Hence, @code{gcov} runs a little more slowly than
--a program which uses information from @option{-a} and @option{-ax}.
-+when it is used with the @option{-ftest-coverage} option.
- With @option{-fprofile-arcs}, for each function of your program GCC
- creates a program flow graph, then finds a spanning tree for the graph.
-@@ -2898,11 +2873,6 @@ executed.  When an arc is the only exit 
- instrumentation code can be added to the block; otherwise, a new basic
- block must be created to hold the instrumentation code.
--This option makes it possible to estimate branch probabilities and to
--calculate basic block execution counts.  In general, basic block
--execution counts as provided by @option{-a} do not give enough
--information to estimate all branch probabilities.
--
- @need 2000
- @item -ftest-coverage
- @opindex ftest-coverage
diff --git a/gcc32-hard-reg-sharing.patch b/gcc32-hard-reg-sharing.patch
deleted file mode 100644 (file)
index ffa155c..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-2002-06-20  Jakub Jelinek  <jakub@redhat.com>
-
-       * emit-rtl.c (init_emit_once): Register static_regno_reg_rtx
-       with GC.
-       * alias.c (init_alias_once): Register static_reg_base_value
-       with GC.
-
-2002-06-13  Jeffrey Law  <law@redhat.com>
-
-       * rs6000.c (rs6000_frame_related): Avoid unwanted sharing
-       of hard registers.
-
-       * emit-rtl.c (static_regno_reg_rtx): Define.
-       (init_emit_once): Initialize static_regno_reg_rtx.
-       (init_emit): Copy static_regno_reg_rtx into regno_reg_rtx instead
-       of building new hard reg objects once per function.
-       (gen_rtx_REG): Try to share hard regs.
-       * regclass.c (init_fake_stack_mems): New function broken out from
-       init_regs.
-       * rtl.h (init_fake_stack_mems): Declare.
-       * toplev.c (lang_independent_init): Call init_regs before
-       init_emit_once.  Call init_fake_stack_mems after init_emit_once.
-
-       * alias.c (argument_registers): Remove.
-       (init_alias_once): Initialize static_reg_base_value here.  Remove
-       initialization of argument_registers.
-       (init_alias_once_per_function): Remove.
-       (init_alias_analysis): Copy all the entries from static_reg_base_value
-       into new_reg_base_value all at once.
-       * rtl.h (init_alias_once_per_function): Remove declaration.
-       * function.c (prepare_function_start): Do not call
-       init_alias_once_per_function.
-
-       * caller-save.c (init_caller_save): Use gen_rtx_INSN instead of
-       starting a sequence and emitting an INSN.
-
-2002-06-11  Jeffrey Law <law@redhat.com>
-
-       * caller-save.c (init_caller_save): Move creation of SAVEINSN
-       and RESTINSN into into the scope of the sequence.
-
-       * loop.c (loop_regs_scan): Avoid useless generation of REG objects.
-
-2002-06-10  Jeffrey Law  <law@redhat.com>
-
-       * alias.c (static_reg_base_value): New to hold RTL for
-       items allocated once per function for the aliasing code.
-       (init_alias_once_per_function): Initialize static_reg_base_value.
-       (init_alias_analysis): Avoid throw-away allocations of RTL by
-       using pre-computed values in static_reg_base_value.
-       * function.c (prepare_function_start): Call
-       init_alias_once_per_function appropriately.
-       * rtl.h (init_alias_once_per_function): Declare.
-       * caller-save (init_caller_save): Restructure slightly to
-       avoid lots of silly RTL generation.
-       * expr.c (init_expr_once): Likewise.
-       * reload1.c (reload_cse_regs_1): Allocate throw-away register
-       RTL object here.  Pass it into children.
-       (reload_cse_simplify_operands): Use passed-in register RTL
-       object.
-       (reload_cse_simplify): Pass through throw-away register
-       RTL object.
-
-2002-06-07  Jeff Law  <law@redhat.com>
-
-       * emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
-       * combine.c (move_deaths): Use regno_reg_rtx for hard regs rather
-       than creating a new register.
-       (distribute_notes): Likewise.
-       * df.c (df_reg_use_gen): Likewise.
-       (df_reg_clobber_gen): Likewise.
-       (df_ref_record): Likewise.
-       * expr.c (use_regs): Likewise.
-       * flow.c (propagate_one_insn): Likewise.
-       (mark_set_1): Likewise.
-       (mark_used_reg): Likewise.
-       * reload.c (emit_reload_insns): Likewise.
-
---- gcc/df.c.jj        Tue Apr  2 21:23:50 2002
-+++ gcc/df.c   Thu Jun 20 14:12:05 2002
-@@ -633,8 +633,7 @@ static rtx df_reg_use_gen (regno)
-   rtx reg;
-   rtx use;
--  reg = regno >= FIRST_PSEUDO_REGISTER
--    ? regno_reg_rtx[regno] : gen_rtx_REG (reg_raw_mode[regno], regno);
-+  reg = regno_reg_rtx[regno];
-   use = gen_rtx_USE (GET_MODE (reg), reg);
-   return use;
-@@ -648,8 +647,7 @@ static rtx df_reg_clobber_gen (regno)
-   rtx reg;
-   rtx use;
--  reg = regno >= FIRST_PSEUDO_REGISTER
--    ? regno_reg_rtx[regno] : gen_rtx_REG (reg_raw_mode[regno], regno);
-+  reg = regno_reg_rtx[regno];
-   use = gen_rtx_CLOBBER (GET_MODE (reg), reg);
-   return use;
-@@ -905,7 +903,7 @@ df_ref_record (df, reg, loc, insn, ref_t
-       endregno = regno + HARD_REGNO_NREGS (regno, GET_MODE (reg));
-       for (i = regno; i < endregno; i++)
--      df_ref_record_1 (df, gen_rtx_REG (reg_raw_mode[i], i),
-+      df_ref_record_1 (df, regno_reg_rtx[i],
-                        loc, insn, ref_type, ref_flags);
-     }
-   else
---- gcc/config/rs6000/rs6000.c.jj      Sat May 25 00:01:52 2002
-+++ gcc/config/rs6000/rs6000.c Thu Jun 20 18:23:59 2002
-@@ -8531,6 +8531,14 @@ rs6000_frame_related (insn, reg, val, re
- {
-   rtx real, temp;
-+  /* copy_rtx will not make unique copies of registers, so we need to
-+     ensure we don't have unwanted sharing here.  */
-+  if (reg == reg2)
-+    reg = gen_raw_REG (GET_MODE (reg), REGNO (reg));
-+
-+  if (reg == rreg)
-+    reg = gen_raw_REG (GET_MODE (reg), REGNO (reg));
-+
-   real = copy_rtx (PATTERN (insn));
-   real = replace_rtx (real, reg, 
---- gcc/combine.c.jj   Tue Jun  4 15:02:15 2002
-+++ gcc/combine.c      Thu Jun 20 14:12:38 2002
-@@ -11908,7 +11908,7 @@ move_deaths (x, maybe_kill_insn, from_cu
-               if (i < regno || i >= ourend)
-                 REG_NOTES (where_dead)
-                   = gen_rtx_EXPR_LIST (REG_DEAD,
--                                       gen_rtx_REG (reg_raw_mode[i], i),
-+                                       regno_reg_rtx[i],
-                                        REG_NOTES (where_dead));
-           }
-@@ -11935,7 +11935,7 @@ move_deaths (x, maybe_kill_insn, from_cu
-               offset = 1;
-             for (i = regno + offset; i < ourend; i++)
--              move_deaths (gen_rtx_REG (reg_raw_mode[i], i),
-+              move_deaths (regno_reg_rtx[i],
-                            maybe_kill_insn, from_cuid, to_insn, &oldnotes);
-           }
-@@ -12557,7 +12557,7 @@ distribute_notes (notes, from_insn, i3, 
-                     for (i = regno; i < endregno;
-                          i += HARD_REGNO_NREGS (i, reg_raw_mode[i]))
-                       {
--                        rtx piece = gen_rtx_REG (reg_raw_mode[i], i);
-+                        rtx piece = regno_reg_rtx[i];
-                         basic_block bb = BASIC_BLOCK (this_basic_block);
-                         if (! dead_or_set_p (place, piece)
---- gcc/emit-rtl.c.jj  Thu May 23 10:28:12 2002
-+++ gcc/emit-rtl.c     Thu Jun 20 18:38:08 2002
-@@ -92,6 +92,12 @@ static int no_line_numbers;
- rtx global_rtl[GR_MAX];
-+/* Commonly used RTL for hard registers.  These objects are not necessarily
-+   unique, so we allocate them separately from global_rtl.  They are
-+   initialized once per compilation unit, then copied into regno_reg_rtx
-+   at the beginning of each function.  */
-+static rtx static_regno_reg_rtx[FIRST_PSEUDO_REGISTER];
-+
- /* We record floating-point CONST_DOUBLEs in each floating-point mode for
-    the values of 0, 1, and 2.  For the integer entries and VOIDmode, we
-    record a copy of const[012]_rtx.  */
-@@ -427,6 +433,15 @@ gen_rtx_REG (mode, regno)
-       return stack_pointer_rtx;
-     }
-+  /* If the per-function register table has been set up, try to re-use
-+     an existing entry in that table to avoid useless generation of RTL.  */
-+  if (0 && cfun
-+      && cfun->emit
-+      && regno_reg_rtx
-+      && regno >= 0 && regno < FIRST_PSEUDO_REGISTER
-+      && reg_raw_mode[regno] == mode)
-+    return regno_reg_rtx[regno];
-+
-   return gen_raw_REG (mode, regno);
- }
-@@ -4841,6 +4856,11 @@ init_emit ()
-   f->emit->regno_decl
-     = (tree *) xcalloc (f->emit->regno_pointer_align_length, sizeof (tree));
-+  /* Put copies of all the hard registers into regno_reg_rtx.  */
-+  memcpy (regno_reg_rtx,
-+        static_regno_reg_rtx,
-+        FIRST_PSEUDO_REGISTER * sizeof (rtx));
-+
-   /* Put copies of all the virtual register rtx into regno_reg_rtx.  */
-   init_virtual_regs (f->emit);
-@@ -5015,8 +5035,14 @@ init_emit_once (line_numbers)
-     gen_raw_REG (Pmode, VIRTUAL_OUTGOING_ARGS_REGNUM);
-   virtual_cfa_rtx = gen_raw_REG (Pmode, VIRTUAL_CFA_REGNUM);
-+  /* Initialize RTL for commonly used hard registers.  These are
-+     copied into regno_reg_rtx as we begin to compile each function.  */
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    static_regno_reg_rtx[i] = gen_raw_REG (reg_raw_mode[i], i);
-+
-   /* These rtx must be roots if GC is enabled.  */
-   ggc_add_rtx_root (global_rtl, GR_MAX);
-+  ggc_add_rtx_root (static_regno_reg_rtx, (int) FIRST_PSEUDO_REGISTER);
- #ifdef INIT_EXPANDERS
-   /* This is to initialize {init|mark|free}_machine_status before the first
---- gcc/expr.c.jj      Tue May  7 12:45:49 2002
-+++ gcc/expr.c Thu Jun 20 17:04:00 2002
-@@ -208,6 +208,7 @@ init_expr_once ()
-   enum machine_mode mode;
-   int num_clobbers;
-   rtx mem, mem1;
-+  rtx reg;
-   start_sequence ();
-@@ -217,6 +218,10 @@ init_expr_once ()
-   mem = gen_rtx_MEM (VOIDmode, stack_pointer_rtx);
-   mem1 = gen_rtx_MEM (VOIDmode, frame_pointer_rtx);
-+  /* A scratch register we can modify in-place below to avoid
-+     useless RTL allocations.  */
-+  reg = gen_raw_REG (VOIDmode, -1);
-+
-   insn = emit_insn (gen_rtx_SET (0, NULL_RTX, NULL_RTX));
-   pat = PATTERN (insn);
-@@ -224,11 +229,11 @@ init_expr_once ()
-        mode = (enum machine_mode) ((int) mode + 1))
-     {
-       int regno;
--      rtx reg;
-       direct_load[(int) mode] = direct_store[(int) mode] = 0;
-       PUT_MODE (mem, mode);
-       PUT_MODE (mem1, mode);
-+      PUT_MODE (reg, mode);
-       /* See if there is some register that can be used in this mode and
-        directly loaded or stored from memory.  */
-@@ -241,7 +246,7 @@ init_expr_once ()
-           if (! HARD_REGNO_MODE_OK (regno, mode))
-             continue;
--          reg = gen_rtx_REG (mode, regno);
-+          REGNO (reg) = regno;
-           SET_SRC (pat) = mem;
-           SET_DEST (pat) = reg;
-@@ -2280,7 +2285,7 @@ use_regs (call_fusage, regno, nregs)
-     abort ();
-   for (i = 0; i < nregs; i++)
--    use_reg (call_fusage, gen_rtx_REG (reg_raw_mode[regno + i], regno + i));
-+    use_reg (call_fusage, regno_reg_rtx[regno + i]);
- }
- /* Add USE expressions to *CALL_FUSAGE for each REG contained in the
---- gcc/flow.c.jj      Tue Apr 23 20:26:35 2002
-+++ gcc/flow.c Thu Jun 20 14:12:05 2002
-@@ -1721,8 +1721,7 @@ propagate_one_insn (pbi, insn)
-           if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
-             {
-               /* We do not want REG_UNUSED notes for these registers.  */
--              mark_set_1 (pbi, CLOBBER, gen_rtx_REG (reg_raw_mode[i], i),
--                          cond, insn,
-+              mark_set_1 (pbi, CLOBBER, regno_reg_rtx[i], cond, insn,
-                           pbi->flags & ~(PROP_DEATH_NOTES | PROP_REG_INFO));
-             }
-       }
-@@ -1770,8 +1769,7 @@ propagate_one_insn (pbi, insn)
-            so they are made live.  */
-         for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-           if (global_regs[i])
--            mark_used_reg (pbi, gen_rtx_REG (reg_raw_mode[i], i),
--                           cond, insn);
-+            mark_used_reg (pbi, regno_reg_rtx[i], cond, insn);
-       }
-     }
-@@ -2769,7 +2767,7 @@ mark_set_1 (pbi, code, reg, cond, insn, 
-                   if (! REGNO_REG_SET_P (pbi->reg_live, i))
-                     REG_NOTES (insn)
-                       = alloc_EXPR_LIST (REG_UNUSED,
--                                         gen_rtx_REG (reg_raw_mode[i], i),
-+                                         regno_reg_rtx[i],
-                                          REG_NOTES (insn));
-               }
-           }
-@@ -3577,7 +3575,7 @@ mark_used_reg (pbi, reg, cond, insn)
-               && ! dead_or_set_regno_p (insn, i))
-             REG_NOTES (insn)
-               = alloc_EXPR_LIST (REG_DEAD,
--                                 gen_rtx_REG (reg_raw_mode[i], i),
-+                                 regno_reg_rtx[i],
-                                  REG_NOTES (insn));
-       }
-     }
---- gcc/reload1.c.jj   Wed May 22 14:17:55 2002
-+++ gcc/reload1.c      Thu Jun 20 17:05:46 2002
-@@ -444,7 +444,7 @@ static int constraint_accepts_reg_p        PARA
- static void reload_cse_regs_1         PARAMS ((rtx));
- static int reload_cse_noop_set_p      PARAMS ((rtx));
- static int reload_cse_simplify_set    PARAMS ((rtx, rtx));
--static int reload_cse_simplify_operands       PARAMS ((rtx));
-+static int reload_cse_simplify_operands       PARAMS ((rtx, rtx));
- static void reload_combine            PARAMS ((void));
- static void reload_combine_note_use   PARAMS ((rtx *, rtx));
- static void reload_combine_note_store PARAMS ((rtx, rtx, void *));
-@@ -459,7 +459,7 @@ static HOST_WIDE_INT sext_for_mode PARAM
- static void failed_reload             PARAMS ((rtx, int));
- static int set_reload_reg             PARAMS ((int, int));
- static void reload_cse_delete_noop_set        PARAMS ((rtx, rtx));
--static void reload_cse_simplify               PARAMS ((rtx));
-+static void reload_cse_simplify               PARAMS ((rtx, rtx));
- void fixup_abnormal_edges             PARAMS ((void));
- extern void dump_needs                        PARAMS ((struct insn_chain *));
\f
-@@ -7161,8 +7161,7 @@ emit_reload_insns (chain)
-                   for (k = 1; k < nnr; k++)
-                     reg_last_reload_reg[nregno + k]
-                       = (nr == nnr
--                         ? gen_rtx_REG (reg_raw_mode[REGNO (rld[r].reg_rtx) + k],
--                                        REGNO (rld[r].reg_rtx) + k)
-+                         ? regno_reg_rtx[REGNO (rld[r].reg_rtx) + k]
-                          : 0);
-                 /* Now do the inverse operation.  */
-@@ -7211,8 +7210,7 @@ emit_reload_insns (chain)
-                   for (k = 1; k < nnr; k++)
-                     reg_last_reload_reg[nregno + k]
-                       = (nr == nnr
--                         ? gen_rtx_REG (reg_raw_mode[REGNO (rld[r].reg_rtx) + k],
--                                        REGNO (rld[r].reg_rtx) + k)
-+                         ? regno_reg_rtx[REGNO (rld[r].reg_rtx) + k]
-                          : 0);
-                 /* Unless we inherited this reload, show we haven't
-@@ -8061,8 +8059,9 @@ reload_cse_noop_set_p (set)
- /* Try to simplify INSN.  */
- static void
--reload_cse_simplify (insn)
-+reload_cse_simplify (insn, testreg)
-      rtx insn;
-+     rtx testreg;
- {
-   rtx body = PATTERN (insn);
-@@ -8089,7 +8088,7 @@ reload_cse_simplify (insn)
-       if (count > 0)
-       apply_change_group ();
-       else
--      reload_cse_simplify_operands (insn);
-+      reload_cse_simplify_operands (insn, testreg);
-     }
-   else if (GET_CODE (body) == PARALLEL)
-     {
-@@ -8132,7 +8131,7 @@ reload_cse_simplify (insn)
-       if (count > 0)
-       apply_change_group ();
-       else
--      reload_cse_simplify_operands (insn);
-+      reload_cse_simplify_operands (insn, testreg);
-     }
- }
-@@ -8158,6 +8157,7 @@ reload_cse_regs_1 (first)
-      rtx first;
- {
-   rtx insn;
-+  rtx testreg = gen_raw_REG (VOIDmode, -1);
-   cselib_init ();
-   init_alias_analysis ();
-@@ -8165,7 +8165,7 @@ reload_cse_regs_1 (first)
-   for (insn = first; insn; insn = NEXT_INSN (insn))
-     {
-       if (INSN_P (insn))
--      reload_cse_simplify (insn);
-+      reload_cse_simplify (insn, testreg);
-       cselib_process_insn (insn);
-     }
-@@ -8336,8 +8336,9 @@ reload_cse_simplify_set (set, insn)
-    hard registers.  */
- static int
--reload_cse_simplify_operands (insn)
-+reload_cse_simplify_operands (insn, testreg)
-      rtx insn;
-+     rtx testreg;
- {
-   int i, j;
-@@ -8357,7 +8358,6 @@ reload_cse_simplify_operands (insn)
-   int *op_alt_regno[MAX_RECOG_OPERANDS];
-   /* Array of alternatives, sorted in order of decreasing desirability.  */
-   int *alternative_order;
--  rtx reg = gen_rtx_REG (VOIDmode, -1);
-   extract_insn (insn);
-@@ -8441,8 +8441,8 @@ reload_cse_simplify_operands (insn)
-         if (! TEST_HARD_REG_BIT (equiv_regs[i], regno))
-           continue;
--        REGNO (reg) = regno;
--        PUT_MODE (reg, mode);
-+        REGNO (testreg) = regno;
-+        PUT_MODE (testreg, mode);
-         /* We found a register equal to this operand.  Now look for all
-            alternatives that can accept this register and have not been
-@@ -8484,10 +8484,10 @@ reload_cse_simplify_operands (insn)
-                    alternative yet and the operand being replaced is not
-                    a cheap CONST_INT.  */
-                 if (op_alt_regno[i][j] == -1
--                    && reg_fits_class_p (reg, class, 0, mode)
-+                    && reg_fits_class_p (testreg, class, 0, mode)
-                     && (GET_CODE (recog_data.operand[i]) != CONST_INT
-                         || (rtx_cost (recog_data.operand[i], SET)
--                            > rtx_cost (reg, SET))))
-+                            > rtx_cost (testreg, SET))))
-                   {
-                     alternative_nregs[j]++;
-                     op_alt_regno[i][j] = regno;
---- gcc/alias.c.jj     Thu Jun 20 12:43:03 2002
-+++ gcc/alias.c        Thu Jun 20 18:36:24 2002
-@@ -149,6 +149,10 @@ static rtx *reg_base_value;
- static rtx *new_reg_base_value;
- static unsigned int reg_base_value_size; /* size of reg_base_value array */
-+/* Static hunks of RTL used by the aliasing code; these are initialized
-+   once per function to avoid unnecessary RTL allocations.  */
-+static rtx static_reg_base_value[FIRST_PSEUDO_REGISTER];
-+
- #define REG_BASE_VALUE(X) \
-   (REGNO (X) < reg_base_value_size \
-    ? reg_base_value[REGNO (X)] : 0)
-@@ -2429,8 +2433,6 @@ mark_constant_function ()
- }
--static HARD_REG_SET argument_registers;
--
- void
- init_alias_once ()
- {
-@@ -2439,13 +2441,26 @@ init_alias_once ()
- #ifndef OUTGOING_REGNO
- #define OUTGOING_REGNO(N) N
- #endif
-+  ggc_add_rtx_root (static_reg_base_value, (int) FIRST_PSEUDO_REGISTER);
-   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-     /* Check whether this register can hold an incoming pointer
-        argument.  FUNCTION_ARG_REGNO_P tests outgoing register
-        numbers, so translate if necessary due to register windows.  */
-     if (FUNCTION_ARG_REGNO_P (OUTGOING_REGNO (i))
-       && HARD_REGNO_MODE_OK (i, Pmode))
--      SET_HARD_REG_BIT (argument_registers, i);
-+      static_reg_base_value[i]
-+      = gen_rtx_ADDRESS (VOIDmode, gen_rtx_REG (Pmode, i));
-+
-+  static_reg_base_value[STACK_POINTER_REGNUM]
-+    = gen_rtx_ADDRESS (Pmode, stack_pointer_rtx);
-+  static_reg_base_value[ARG_POINTER_REGNUM]
-+    = gen_rtx_ADDRESS (Pmode, arg_pointer_rtx);
-+  static_reg_base_value[FRAME_POINTER_REGNUM]
-+    = gen_rtx_ADDRESS (Pmode, frame_pointer_rtx);
-+#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
-+  static_reg_base_value[HARD_FRAME_POINTER_REGNUM]
-+    = gen_rtx_ADDRESS (Pmode, hard_frame_pointer_rtx);
-+#endif
-   alias_sets = splay_tree_new (splay_tree_compare_ints, 0, 0);
- }
-@@ -2535,21 +2550,8 @@ init_alias_analysis ()
-        The address expression is VOIDmode for an argument and
-        Pmode for other registers.  */
--      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
--      if (TEST_HARD_REG_BIT (argument_registers, i))
--        new_reg_base_value[i] = gen_rtx_ADDRESS (VOIDmode,
--                                                 gen_rtx_REG (Pmode, i));
--
--      new_reg_base_value[STACK_POINTER_REGNUM]
--      = gen_rtx_ADDRESS (Pmode, stack_pointer_rtx);
--      new_reg_base_value[ARG_POINTER_REGNUM]
--      = gen_rtx_ADDRESS (Pmode, arg_pointer_rtx);
--      new_reg_base_value[FRAME_POINTER_REGNUM]
--      = gen_rtx_ADDRESS (Pmode, frame_pointer_rtx);
--#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
--      new_reg_base_value[HARD_FRAME_POINTER_REGNUM]
--      = gen_rtx_ADDRESS (Pmode, hard_frame_pointer_rtx);
--#endif
-+      memcpy (new_reg_base_value, static_reg_base_value,
-+            FIRST_PSEUDO_REGISTER * sizeof (rtx));
-       /* Walk the insns adding values to the new_reg_base_value array.  */
-       for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
---- gcc/caller-save.c.jj       Wed Jan  2 12:47:35 2002
-+++ gcc/caller-save.c  Thu Jun 20 17:49:47 2002
-@@ -115,6 +115,9 @@ init_caller_save ()
-   rtx address;
-   int i, j;
-   enum machine_mode mode;
-+  rtx savepat, restpat;
-+  rtx test_reg, test_mem;
-+  rtx saveinsn, restinsn;
-   /* First find all the registers that we need to deal with and all
-      the modes that they can have.  If we can't find a mode to use,
-@@ -179,22 +182,30 @@ init_caller_save ()
-     address = addr_reg;
-   /* Next we try to form an insn to save and restore the register.  We
--     see if such an insn is recognized and meets its constraints.  */
-+     see if such an insn is recognized and meets its constraints. 
--  start_sequence ();
-+     To avoid lots of unnecessary RTL allocation, we construct all the RTL
-+     once, then modify the memory and register operands in-place.  */
-+
-+  test_reg = gen_rtx_REG (VOIDmode, 0);
-+  test_mem = gen_rtx_MEM (VOIDmode, address);
-+  savepat = gen_rtx_SET (VOIDmode, test_mem, test_reg);
-+  restpat = gen_rtx_SET (VOIDmode, test_reg, test_mem);
-+  saveinsn = gen_rtx_INSN (VOIDmode, 0, 0, 0, savepat, -1, 0, 0);
-+  restinsn = gen_rtx_INSN (VOIDmode, 0, 0, 0, restpat, -1, 0, 0);
-   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-     for (mode = 0 ; mode < MAX_MACHINE_MODE; mode++)
-       if (HARD_REGNO_MODE_OK (i, mode))
-         {
--        rtx mem = gen_rtx_MEM (mode, address);
--        rtx reg = gen_rtx_REG (mode, i);
--        rtx savepat = gen_rtx_SET (VOIDmode, mem, reg);
--        rtx restpat = gen_rtx_SET (VOIDmode, reg, mem);
--        rtx saveinsn = emit_insn (savepat);
--        rtx restinsn = emit_insn (restpat);
-         int ok;
-+        /* Update the register number and modes of the register
-+           and memory operand.  */
-+        REGNO (test_reg) = i;
-+        PUT_MODE (test_reg, mode);
-+        PUT_MODE (test_mem, mode);
-+
-         reg_save_code[i][mode] = recog_memoized (saveinsn);
-         reg_restore_code[i][mode] = recog_memoized (restinsn);
-@@ -232,8 +243,6 @@ init_caller_save ()
-             SET_HARD_REG_BIT (call_fixed_reg_set, i);
-           }
-       }
--
--  end_sequence ();
- }
\f
- /* Initialize save areas by showing that we haven't allocated any yet.  */
---- gcc/rtl.h.jj       Tue May 21 20:19:51 2002
-+++ gcc/rtl.h  Thu Jun 20 18:01:01 2002
-@@ -1964,6 +1964,7 @@ extern int reg_classes_intersect_p       PARAM
- extern int reg_class_subset_p         PARAMS ((enum reg_class, enum reg_class));
- extern void globalize_reg             PARAMS ((int));
- extern void init_regs                 PARAMS ((void));
-+extern void init_fake_stack_mems      PARAMS ((void));
- extern void init_reg_sets             PARAMS ((void));
- extern void regset_release_memory     PARAMS ((void));
- extern void regclass_init             PARAMS ((void));
---- gcc/regclass.c.jj  Wed Jun 19 15:11:11 2002
-+++ gcc/regclass.c     Thu Jun 20 18:01:01 2002
-@@ -605,11 +605,16 @@ init_regs ()
-   init_reg_sets_1 ();
-   init_reg_modes ();
-+}
-+/* Initialize some fake stack-frame MEM references for use in
-+   memory_move_secondary_cost.  */
-+
-+void
-+init_fake_stack_mems ()
-+{
- #ifdef HAVE_SECONDARY_RELOADS
-   {
--    /* Make some fake stack-frame MEM references for use in
--       memory_move_secondary_cost.  */
-     int i;
-     for (i = 0; i < MAX_MACHINE_MODE; i++)
---- gcc/toplev.c.jj    Thu May 30 11:08:44 2002
-+++ gcc/toplev.c       Thu Jun 20 18:01:01 2002
-@@ -5058,6 +5058,9 @@ lang_independent_init ()
-   init_stringpool ();
-   init_obstacks ();
-+  /* init_emit_once uses reg_raw_mode and therefore must be called
-+     after init_regs which initialized reg_raw_mode.  */
-+  init_regs ();
-   init_emit_once (debug_info_level == DINFO_LEVEL_NORMAL
-                 || debug_info_level == DINFO_LEVEL_VERBOSE
- #ifdef VMS_DEBUGGING_INFO
-@@ -5066,7 +5069,7 @@ lang_independent_init ()
- #endif
-                   || flag_test_coverage
-                   || warn_notreached);
--  init_regs ();
-+  init_fake_stack_mems ();
-   init_alias_once ();
-   init_stmt ();
-   init_loop ();
---- gcc/loop.c.jj      Wed Jun 19 15:10:51 2002
-+++ gcc/loop.c Thu Jun 20 18:22:01 2002
-@@ -9541,7 +9541,7 @@ loop_regs_scan (loop, extra_size)
-   if (LOOP_INFO (loop)->has_call)
-     for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-       if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i)
--          && rtx_varies_p (gen_rtx_REG (Pmode, i), /*for_alias=*/1))
-+          && rtx_varies_p (regno_reg_rtx[i], 1))
-         {
-           regs->array[i].may_not_optimize = 1;
-           regs->array[i].set_in_loop = 1;
diff --git a/gcc32-hard-reg-sharing2.patch b/gcc32-hard-reg-sharing2.patch
deleted file mode 100644 (file)
index 24a2a68..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-2002-06-11  Richard Henderson  <rth@redhat.com>
-
-       * caller-save.c (init_caller_save): Clear INSN_CODE each iteration.
-
---- gcc/caller-save.c.jj       Fri Jun 21 01:16:13 2002
-+++ gcc/caller-save.c  Thu Jul 11 10:27:57 2002
-@@ -206,6 +206,10 @@ init_caller_save ()
-         PUT_MODE (test_reg, mode);
-         PUT_MODE (test_mem, mode);
-+        /* Force re-recognition of the modified insns.  */
-+        INSN_CODE (saveinsn) = -1;
-+        INSN_CODE (restinsn) = -1;
-+
-         reg_save_code[i][mode] = recog_memoized (saveinsn);
-         reg_restore_code[i][mode] = recog_memoized (restinsn);
diff --git a/gcc32-i386-default-momit-leaf-frame-pointer.patch b/gcc32-i386-default-momit-leaf-frame-pointer.patch
deleted file mode 100644 (file)
index fb8e24b..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-2002-05-29  Richard Henderson  <rth@redhat.com>
-
-       * config/i386/biarch64.h (TARGET_64BIT_DEFAULT): Define with value.
-       (TARGET_BI_ARCH): Likewise.
-       * config/i386/i386.h: Test TARGET_64BIT_DEFAULT by value.
-       (TARGET_SWITCHES): Combine target defaults here not in TARGET_DEFAULT.
-       (TARGET_64BIT_DEFAULT): Default to 0.
-       (TARGET_DEFAULT): Default to MASK_OMIT_LEAF_FRAME_POINTER.
-
---- gcc/config/i386/biarch64.h.jj      Tue Oct  2 12:59:38 2001
-+++ gcc/config/i386/biarch64.h Tue Jun  4 15:11:52 2002
-@@ -21,5 +21,5 @@ along with GNU CC; see the file COPYING.
- the Free Software Foundation, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.  */
--#define TARGET_64BIT_DEFAULT
--#define TARGET_BI_ARCH
-+#define TARGET_64BIT_DEFAULT MASK_64BIT
-+#define TARGET_BI_ARCH 1
---- gcc/config/i386/i386.h.jj  Thu Apr 18 19:02:03 2002
-+++ gcc/config/i386/i386.h     Tue Jun  4 15:13:40 2002
-@@ -192,7 +192,7 @@ extern int target_flags;
- #ifdef TARGET_BI_ARCH
- #define TARGET_64BIT (target_flags & MASK_64BIT)
- #else
--#ifdef TARGET_64BIT_DEFAULT
-+#if TARGET_64BIT_DEFAULT
- #define TARGET_64BIT 1
- #else
- #define TARGET_64BIT 0
-@@ -381,14 +381,14 @@ extern int x86_prefetch_sse;
-   { "no-red-zone",            MASK_NO_RED_ZONE,                             \
-     N_("Do not use red-zone in the x86-64 code") },                         \
-   SUBTARGET_SWITCHES                                                        \
--  { "", TARGET_DEFAULT, 0 }}
-+  { "", TARGET_DEFAULT | TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_DEFAULT, 0 }}
--#ifdef TARGET_64BIT_DEFAULT
--#define TARGET_DEFAULT (MASK_64BIT | TARGET_SUBTARGET_DEFAULT)
--#else
--#define TARGET_DEFAULT TARGET_SUBTARGET_DEFAULT
-+#ifndef TARGET_64BIT_DEFAULT
-+#define TARGET_64BIT_DEFAULT 0
- #endif
-+#define TARGET_DEFAULT MASK_OMIT_LEAF_FRAME_POINTER
-+
- /* Which processor to schedule for. The cpu attribute defines a list that
-    mirrors this list, so changes to i386.md must be made at the same time.  */
-@@ -624,13 +624,13 @@ extern int ix86_arch;
- #ifndef CPP_CPU_SPEC
- #ifdef TARGET_BI_ARCH
--#ifdef TARGET_64BIT_DEFAULT
-+#if TARGET_64BIT_DEFAULT
- #define CPP_CPU_SPEC "%{m32:%(cpp_cpu32)}%{!m32:%(cpp_cpu64)} %(cpp_cpucommon)"
- #else
- #define CPP_CPU_SPEC "%{m64:%(cpp_cpu64)}%{!m64:%(cpp_cpu32)} %(cpp_cpucommon)"
- #endif
- #else
--#ifdef TARGET_64BIT_DEFAULT
-+#if TARGET_64BIT_DEFAULT
- #define CPP_CPU_SPEC "%(cpp_cpu64) %(cpp_cpucommon)"
- #else
- #define CPP_CPU_SPEC "%(cpp_cpu32) %(cpp_cpucommon)"
-@@ -695,7 +695,7 @@ extern int ix86_arch;
- #define DOUBLE_TYPE_SIZE 64
- #define LONG_LONG_TYPE_SIZE 64
--#if defined (TARGET_BI_ARCH) || defined (TARGET_64BIT_DEFAULT)
-+#if defined (TARGET_BI_ARCH) || TARGET_64BIT_DEFAULT
- #define MAX_BITS_PER_WORD 64
- #define MAX_LONG_TYPE_SIZE 64
- #else
diff --git a/gcc32-i386-no-default-momit-leaf-frame-pointer.patch b/gcc32-i386-no-default-momit-leaf-frame-pointer.patch
deleted file mode 100644 (file)
index 94befa8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Argh, GDB is not ready.
-
---- gcc/config/i386/i386.h.jj  2002-08-28 11:20:27.000000000 +0200
-+++ gcc/config/i386/i386.h     2002-08-28 22:01:26.000000000 +0200
-@@ -390,7 +390,7 @@ extern int x86_prefetch_sse;
- #define TARGET_64BIT_DEFAULT 0
- #endif
--#define TARGET_DEFAULT MASK_OMIT_LEAF_FRAME_POINTER
-+#define TARGET_DEFAULT 0
- /* Which processor to schedule for. The cpu attribute defines a list that
-    mirrors this list, so changes to i386.md must be made at the same time.  */
diff --git a/gcc32-i386-pic-label-thunk.patch b/gcc32-i386-pic-label-thunk.patch
deleted file mode 100644 (file)
index e0c11aa..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-2002-06-04  Richard Henderson  <rth@redhat.com>
-           Jakub Jelinek  <jakub@redhat.com>
-
-       * config/i386/i386.c (USE_HIDDEN_LINKONCE): New.
-       (ix86_asm_file_end): If USE_HIDDEN_LINKONCE, emit get_pc thunks
-       into linkonce sections.
-       (load_pic_register): Set up pic_label_name for it.
-
---- gcc/config/i386/i386.c.jj  Mon Jun  3 17:24:13 2002
-+++ gcc/config/i386/i386.c     Tue Jun  4 15:49:17 2002
-@@ -3786,6 +3786,12 @@ ix86_setup_frame_addresses ()
-   cfun->machine->accesses_prev_frame = 1;
- }
\f
-+#if defined(HAVE_GAS_HIDDEN) && defined(SUPPORTS_ONE_ONLY)
-+# define USE_HIDDEN_LINKONCE 1
-+#else
-+# define USE_HIDDEN_LINKONCE 0
-+#endif
-+
- static char pic_label_name[32];
- /* This function generates code for -fpic that loads %ebx with
-@@ -3800,10 +3806,6 @@ ix86_asm_file_end (file)
-   if (! TARGET_DEEP_BRANCH_PREDICTION || pic_label_name[0] == 0)
-     return;
--  /* ??? Binutils 2.10 and earlier has a linkonce elimination bug related
--     to updating relocations to a section being discarded such that this
--     doesn't work.  Ought to detect this at configure time.  */
--#if 0
-   /* The trick here is to create a linkonce section containing the
-      pic label thunk, but to refer to it with an internal label.
-      Because the label is internal, we don't have inter-dso name
-@@ -3811,28 +3813,27 @@ ix86_asm_file_end (file)
-      In order to use these macros, however, we must create a fake
-      function decl.  */
--  if (targetm.have_named_sections)
-+  if (USE_HIDDEN_LINKONCE && targetm.have_named_sections)
-     {
-       tree decl = build_decl (FUNCTION_DECL,
--                            get_identifier ("i686.get_pc_thunk"),
-+                            get_identifier (pic_label_name),
-                             error_mark_node);
-+      TREE_PUBLIC (decl) = 1;
-+      TREE_STATIC (decl) = 1;
-       DECL_ONE_ONLY (decl) = 1;
-       UNIQUE_SECTION (decl, 0);
--      named_section (decl, NULL);
-+      named_section (decl, NULL, 0);
-+      ASM_GLOBALIZE_LABEL (file, pic_label_name);
-+      fputs ("\t.hidden\t", file);
-+      assemble_name (file, pic_label_name);
-+      fputc ('\n', file);
-+      ASM_DECLARE_FUNCTION_NAME (file, pic_label_name, decl);
-     }
-   else
--#else
--    text_section ();
--#endif
--
--  /* This used to call ASM_DECLARE_FUNCTION_NAME() but since it's an
--     internal (non-global) label that's being emitted, it didn't make
--     sense to have .type information for local labels.   This caused
--     the SCO OpenServer 5.0.4 ELF assembler grief (why are you giving
--     me debug info for a label that you're declaring non-global?) this
--     was changed to call ASM_OUTPUT_LABEL() instead.  */
--
--  ASM_OUTPUT_LABEL (file, pic_label_name);
-+    {
-+      text_section ();
-+      ASM_OUTPUT_LABEL (file, pic_label_name);
-+    }
-   xops[0] = pic_offset_table_rtx;
-   xops[1] = gen_rtx_MEM (SImode, stack_pointer_rtx);
-@@ -3853,7 +3854,12 @@ load_pic_register ()
-   if (TARGET_DEEP_BRANCH_PREDICTION)
-     {
-       if (! pic_label_name[0])
--      ASM_GENERATE_INTERNAL_LABEL (pic_label_name, "LPR", 0);
-+      {
-+        if (USE_HIDDEN_LINKONCE && targetm.have_named_sections)
-+          strcpy (pic_label_name, "__i686.get_pc_thunk.bx");
-+        else
-+          ASM_GENERATE_INTERNAL_LABEL (pic_label_name, "LPR", 0);
-+      }
-       pclab = gen_rtx_MEM (QImode, gen_rtx_SYMBOL_REF (Pmode, pic_label_name));
-     }
-   else
diff --git a/gcc32-i386-profile-olfp.patch b/gcc32-i386-profile-olfp.patch
deleted file mode 100644 (file)
index 7e234f8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-2002-05-30  Richard Henderson  <rth@redhat.com>
-
-       * defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
-       * toplev.c (process_options): Don't check it.
-       * doc/tm.texi: Don't document it.
-       * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): New.
-       (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
-       * config/i386/i386.c (ix86_frame_pointer_required): Suppress leaf
-       frame pointer optimization if current_function_profile.
-
---- gcc/doc/tm.texi.jj Fri May  3 19:25:59 2002
-+++ gcc/doc/tm.texi    Tue Jun  4 23:18:43 2002
-@@ -4077,22 +4077,6 @@ must not use the @var{labelno} argument 
- @item PROFILE_BEFORE_PROLOGUE
- Define this macro if the code for function profiling should come before
- the function prologue.  Normally, the profiling code comes after.
--
--
--@findex TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
--@item TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
--On some targets, it is impossible to use profiling when the frame
--pointer has been omitted.  For example, on x86 GNU/Linux systems,
--the @code{mcount} routine provided by the GNU C Library finds the
--address of the routine that called the routine that called @code{mcount}
--by looking in the immediate caller's stack frame.  If the immediate
--caller has no frame pointer, this lookup will fail.
--
--By default, GCC assumes that the target does allow profiling when the
--frame pointer is omitted.  This macro should be defined to a C
--expression that evaluates to @code{false} if the target does not allow
--profiling when the frame pointer is omitted.
--
- @end table
- @node Tail Calls
---- gcc/config/i386/i386.c.jj  Tue Jun  4 21:13:34 2002
-+++ gcc/config/i386/i386.c     Tue Jun  4 23:18:43 2002
-@@ -3827,7 +3827,8 @@ ix86_frame_pointer_required ()
-   /* In override_options, TARGET_OMIT_LEAF_FRAME_POINTER turns off
-      the frame pointer by default.  Turn it back on now if we've not
-      got a leaf function.  */
--  if (TARGET_OMIT_LEAF_FRAME_POINTER && ! leaf_function_p ())
-+  if (TARGET_OMIT_LEAF_FRAME_POINTER
-+      && (!current_function_is_leaf || current_function_profile))
-     return 1;
-   return 0;
---- gcc/config/i386/linux.h.jj Tue Apr 16 08:15:02 2002
-+++ gcc/config/i386/linux.h    Tue Jun  4 23:18:43 2002
-@@ -63,14 +63,11 @@ Boston, MA 02111-1307, USA.  */
-     fprintf (FILE, "\tcall\tmcount\n");                                       \
- }
--/* True if it is possible to profile code that does not have a frame
--   pointer.  
--
--   The GLIBC version of mcount for the x86 assumes that there is a
-+/* The GLIBC version of mcount for the x86 assumes that there is a
-    frame, so we cannot allow profiling without a frame pointer.  */
--#undef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
--#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER false
-+#undef SUBTARGET_FRAME_POINTER_REQUIRED
-+#define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
- #undef SIZE_TYPE
- #define SIZE_TYPE "unsigned int"
---- gcc/defaults.h.jj  Fri May  3 19:24:51 2002
-+++ gcc/defaults.h     Tue Jun  4 23:18:43 2002
-@@ -398,13 +398,6 @@ do {                                                              \
-    ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
- #endif
--/* True if it is possible to profile code that does not have a frame
--   pointer.  */
--
--#ifndef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
--#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER true
--#endif
--
- #ifndef DEFAULT_GDB_EXTENSIONS
- #define DEFAULT_GDB_EXTENSIONS 1
- #endif
---- gcc/toplev.c.jj    Thu May 30 11:08:44 2002
-+++ gcc/toplev.c       Tue Jun  4 23:19:11 2002
-@@ -4908,16 +4908,6 @@ process_options ()
-     warning ("this target machine does not have delayed branches");
- #endif
--  /* Some operating systems do not allow profiling without a frame
--     pointer.  */
--  if (!TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
--      && profile_flag
--      && flag_omit_frame_pointer)
--    {
--      error ("profiling does not work without a frame pointer");
--      flag_omit_frame_pointer = 0;
--    }
--    
-   user_label_prefix = USER_LABEL_PREFIX;
-   if (flag_leading_underscore != -1)
-     {
diff --git a/gcc32-libstdc++-glibc.patch b/gcc32-libstdc++-glibc.patch
deleted file mode 100644 (file)
index f8768b4..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
-From gcc-patches-return-67062-listarch-gcc-patches=gcc dot gnu dot org at gcc dot gnu dot org Fri Aug 30 10:39:38 2002
-Return-Path: <gcc-patches-return-67062-listarch-gcc-patches=gcc dot gnu dot org at gcc dot gnu dot org>
-Delivered-To: listarch-gcc-patches at gcc dot gnu dot org
-Received: (qmail 32272 invoked by alias); 30 Aug 2002 10:39:36 -0000
-Mailing-List: contact gcc-patches-help at gcc dot gnu dot org; run by ezmlm
-Precedence: bulk
-List-Archive: <http://gcc.gnu.org/ml/gcc-patches/>
-List-Post: <mailto:gcc-patches at gcc dot gnu dot org>
-List-Help: <mailto:gcc-patches-help at gcc dot gnu dot org>
-Sender: gcc-patches-owner at gcc dot gnu dot org
-Delivered-To: mailing list gcc-patches at gcc dot gnu dot org
-Received: (qmail 32195 invoked from network); 30 Aug 2002 10:39:32 -0000
-Received: from unknown (HELO sunsite.mff.cuni.cz) (195.113.19.66)
-  by sources dot redhat dot com with SMTP; 30 Aug 2002 10:39:32 -0000
-Received: (from jakub@localhost)
-       by sunsite dot mff dot cuni dot cz (8 dot 11 dot 6/8 dot 11 dot 6) id g7UAcS700895;
-       Fri, 30 Aug 2002 12:38:28 +0200
-Date: Fri, 30 Aug 2002 12:38:28 +0200
-From: Jakub Jelinek <jakub at redhat dot com>
-To: bkoz at redhat dot com, mark at codesourcery dot com
-Cc: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, drepper at redhat dot com,
-   roland at redhat dot com
-Subject: [PATCH] Fix libstdc++-v3 on GLIBC 2.3+
-Message-ID: <20020830123828.Y1013@sunsite.ms.mff.cuni.cz>
-Reply-To: Jakub Jelinek <jakub at redhat dot com>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=iso-8859-1
-Content-Disposition: inline
-Content-Transfer-Encoding: 8bit
-User-Agent: Mutt/1.2.5.1i
-
-Hi!
-
-The following patch fixes libstdc++-v3 compilation and use on GLIBC 2.2.9x+.
-It passed libstdc++-v3 make check with 24 XPASSes and 1 FAIL - the remaining
-2 missing XPASSes (ie. the only 2 XFAILs) are:
-XFAIL: 22_locale/messages_byname.cc execution test
-XFAIL: 22_locale/messages_members_char.cc execution test
-which fail because of a glibc bug Roland is working on.
-
-The only difference on libstdc++.so symbols this has is that
-_ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE
-symbol is no longer weak (ie. T instead of W in nm output),
-which doesn't change anything for binary compatibility IMHO.
-
-Ok to commit? 3.2 branch too?
-
-2002-08-30  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/locale/generic/c++locale_internal.h: New header.
-       * config/locale/gnu/c++locale_internal.h: New header.
-       * config/locale/gnu/c_locale.cc: Include it.
-       * config/locale/gnu/collate_members.cc: Include it.
-       * config/locale/gnu/ctype_members.cc: Include it.
-       * config/locale/gnu/messages_members.cc: Include it.
-       * config/locale/gnu/monetary_members.cc: Include it.
-       * config/locale/gnu/numeric_members.cc: Include it.
-       * config/locale/gnu/time_members.cc: Include it.
-       (_M_put): Reorder __strftime_l and __wcsftime_l arguments to match
-       glibc.
-       (_M_initialize_timepunct): Initialize _M_c_locale_timepunct for
-       C locale.
-       * acinclude.m4: Include string.h when testing strcoll_l.
-       For glibc 2.3 provide __-prefixed prototypes.
-       (CLOCALE_INTERNAL_H): Set, add AC_LINK_FILES line.
-       * aclocal.m4, configure: Rebuilt.
-
-2002-08-29  Benjamin Kosnik  <bkoz@redhat.com>
-
-       * include/bits/locale_facets.h: Add declaration of specialization
-       here.
-       * config/locale/gnu/messages_members.cc: Add specialization for
-       messages<wchar_t>.
-       * config/locale/gnu/messages_members.h: Remove generic definition
-       of do_get.
-
---- libstdc++-v3/config/locale/generic/c++locale_internal.h.jj 2002-08-29 14:57:21.000000000 +0200
-+++ libstdc++-v3/config/locale/generic/c++locale_internal.h    2002-08-30 12:05:10.000000000 +0200
-@@ -0,0 +1,30 @@
-+// Locale internal implementation header -*- C++ -*-
-+
-+// Copyright (C) 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library 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 this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// The generic locale code doesn't need to do anything here (yet)
---- libstdc++-v3/config/locale/gnu/c_locale.cc.jj      2002-04-23 20:30:31.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/c_locale.cc 2002-08-30 12:09:12.000000000 +0200
-@@ -36,6 +36,7 @@
- #include <locale>
- #include <stdexcept>
- #include <langinfo.h>
-+#include "c++locale_internal.h"
- namespace std 
- {
---- libstdc++-v3/config/locale/gnu/collate_members.cc.jj       2002-04-23 20:30:31.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/collate_members.cc  2002-08-30 12:09:12.000000000 +0200
-@@ -1,6 +1,6 @@
- // std::collate implementation details, GNU version -*- C++ -*-
--// Copyright (C) 2001 Free Software Foundation, Inc.
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -34,6 +34,7 @@
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- #include <locale>
-+#include "c++locale_internal.h"
- namespace std
- {
---- libstdc++-v3/config/locale/gnu/ctype_members.cc.jj 2002-05-25 00:18:17.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/ctype_members.cc    2002-08-30 12:09:12.000000000 +0200
-@@ -34,6 +34,7 @@
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- #include <locale>
-+#include "c++locale_internal.h"
- namespace std
- {
---- libstdc++-v3/config/locale/gnu/messages_members.cc.jj      2002-05-22 15:38:28.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/messages_members.cc 2002-08-30 12:09:12.000000000 +0200
-@@ -34,6 +34,7 @@
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- #include <locale>
-+#include "c++locale_internal.h"
- namespace std
- {
-@@ -56,4 +57,25 @@ namespace std
-       return string(__msg);
- #endif
-     }
-+
-+#ifdef _GLIBCPP_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
-+    {
-+# if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      __uselocale(__old);
-+      return _M_convert_from_char(__msg);
-+# else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return _M_convert_from_char(__msg);
-+# endif
-+    }
-+#endif
- }
---- libstdc++-v3/config/locale/gnu/monetary_members.cc.jj      2002-07-27 01:31:05.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/monetary_members.cc 2002-08-30 12:09:12.000000000 +0200
-@@ -34,6 +34,7 @@
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- #include <locale>
-+#include "c++locale_internal.h"
- namespace std
- {
---- libstdc++-v3/config/locale/gnu/numeric_members.cc.jj       2002-04-23 20:30:31.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/numeric_members.cc  2002-08-30 12:09:12.000000000 +0200
-@@ -34,6 +34,7 @@
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- #include <locale>
-+#include "c++locale_internal.h"
- namespace std
- {
---- libstdc++-v3/config/locale/gnu/time_members.cc.jj  2002-05-22 15:38:30.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/time_members.cc     2002-08-30 12:09:12.000000000 +0200
-@@ -35,6 +35,7 @@
- // Written by Benjamin Kosnik <bkoz@redhat.com>
- #include <locale>
-+#include "c++locale_internal.h"
- namespace std
- {
-@@ -52,7 +53,7 @@ namespace std
-          const tm* __tm) const
-     {
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
--      __strftime_l(__s, __maxlen, _M_c_locale_timepunct, __format, __tm);
-+      __strftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
- #else
-       char* __old = strdup(setlocale(LC_ALL, NULL));
-       setlocale(LC_ALL, _M_name_timepunct);
-@@ -69,6 +70,9 @@ namespace std
-       if (__cloc == _S_c_locale)
-       {
-         // "C" locale
-+
-+        _M_c_locale_timepunct = _S_c_locale; 
-+
-         _M_date_format = "%m/%d/%y";
-         _M_date_era_format = "%m/%d/%y";
-         _M_time_format = "%H:%M:%S";
-@@ -202,7 +206,7 @@ namespace std
-          const tm* __tm) const
-     {
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
--      __wcsftime_l(__s, __maxlen, _M_c_locale_timepunct, __format, __tm);
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
- #else
-       char* __old = strdup(setlocale(LC_ALL, NULL));
-       setlocale(LC_ALL, _M_name_timepunct);
-@@ -219,6 +223,9 @@ namespace std
-       if (__cloc == _S_c_locale)
-       {
-         // "C" locale
-+
-+        _M_c_locale_timepunct = _S_c_locale; 
-+
-         _M_date_format = L"%m/%d/%y";
-         _M_date_era_format = L"%m/%d/%y";
-         _M_time_format = L"%H:%M:%S";
---- libstdc++-v3/config/locale/gnu/messages_members.h.jj       2002-05-22 15:38:28.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/messages_members.h  2002-08-29 17:50:14.000000000 +0200
-@@ -55,26 +55,6 @@
-     }
-   template<typename _CharT>
--    typename messages<_CharT>::string_type  
--    messages<_CharT>::do_get(catalog, int, int, 
--                           const string_type& __dfault) const
--    { 
--#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
--      __c_locale __old = __uselocale(_M_c_locale_messages);
--      char* __msg = gettext(_M_convert_to_char(__dfault));
--      __uselocale(__old);
--      return _M_convert_from_char(__msg);
--#else
--      char* __old = strdup(setlocale(LC_ALL, NULL));
--      setlocale(LC_ALL, _M_name_messages);
--      char* __msg = gettext(_M_convert_to_char(__dfault));
--      setlocale(LC_ALL, __old);
--      free(__old);
--      return _M_convert_from_char(__msg);
--#endif
--    }
--
--  template<typename _CharT>
-     void    
-     messages<_CharT>::do_close(catalog) const 
-     { }
---- libstdc++-v3/config/locale/gnu/c++locale_internal.h.jj     2002-08-29 14:57:21.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/c++locale_internal.h        2002-08-29 15:21:59.000000000 +0200
-@@ -0,0 +1,59 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library 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 this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// Written by Jakub Jelinek <jakub@redhat.com>
-+
-+#include <clocale>
-+
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+                                                  
-+extern "C" __typeof(iswctype_l) __iswctype_l;
-+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
-+extern "C" __typeof(strcoll_l) __strcoll_l;
-+extern "C" __typeof(strftime_l) __strftime_l;
-+extern "C" __typeof(strtod_l) __strtod_l;
-+extern "C" __typeof(strtof_l) __strtof_l;
-+extern "C" __typeof(strtold_l) __strtold_l;
-+extern "C" __typeof(strtol_l) __strtol_l;
-+extern "C" __typeof(strtoll_l) __strtoll_l;
-+extern "C" __typeof(strtoul_l) __strtoul_l;
-+extern "C" __typeof(strtoull_l) __strtoull_l;
-+extern "C" __typeof(strxfrm_l) __strxfrm_l;
-+extern "C" __typeof(towlower_l) __towlower_l;
-+extern "C" __typeof(towupper_l) __towupper_l;
-+extern "C" __typeof(wcscoll_l) __wcscoll_l;
-+extern "C" __typeof(wcsftime_l) __wcsftime_l;
-+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
-+extern "C" __typeof(wctype_l) __wctype_l;
-+extern "C" __typeof(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#endif // GLIBC 2.3 and later
---- libstdc++-v3/include/bits/locale_facets.h.jj       2002-08-01 23:43:48.000000000 +0200
-+++ libstdc++-v3/include/bits/locale_facets.h  2002-08-29 17:49:53.000000000 +0200
-@@ -1739,6 +1739,12 @@ namespace std
-     string
-     messages<char>::do_get(catalog, int, int, const string&) const;
-+#ifdef _GLIBCPP_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;
-+#endif
-+
-   // Include host and configuration specific messages virtual functions.
-   #include <bits/messages_members.h>
---- libstdc++-v3/acinclude.m4.jj       2002-08-29 13:51:58.000000000 +0200
-+++ libstdc++-v3/acinclude.m4  2002-08-30 11:58:42.000000000 +0200
-@@ -1131,6 +1131,12 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-         AC_TRY_RUN([
-         #define _GNU_SOURCE 1
-         #include <locale.h>
-+        #include <string.h>
-+        #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        extern __typeof(newlocale) __newlocale;
-+        extern __typeof(duplocale) __duplocale;
-+        extern __typeof(strcoll_l) __strcoll_l;
-+        #endif
-         int main()
-         {
-           const char __one[] = "Äuglein Augmen";
-@@ -1179,6 +1185,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-       CMONEY_CC=config/locale/generic/monetary_members.cc
-       CNUMERIC_CC=config/locale/generic/numeric_members.cc
-       CTIME_CC=config/locale/generic/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-     xgnu)
-       AC_MSG_RESULT(gnu)
-@@ -1211,6 +1218,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-       CMONEY_CC=config/locale/gnu/monetary_members.cc
-       CNUMERIC_CC=config/locale/gnu/numeric_members.cc
-       CTIME_CC=config/locale/gnu/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
-       ;;
-     xieee_1003.1-2001)
-       AC_MSG_RESULT(generic)
-@@ -1225,6 +1233,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-       CMONEY_CC=config/locale/generic/monetary_members.cc
-       CNUMERIC_CC=config/locale/generic/numeric_members.cc
-       CTIME_CC=config/locale/generic/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-     *)
-       echo "$enable_clocale is an unknown locale package" 1>&2
-@@ -1248,6 +1257,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-   AC_LINK_FILES($CMONEY_CC, src/monetary.cc)
-   AC_LINK_FILES($CNUMERIC_CC, src/numeric.cc)
-   AC_LINK_FILES($CTIME_CC, src/time.cc)
-+  AC_LINK_FILES($CLOCALE_INTERNAL_H, src/c++locale_internal.h)
- ])
---- libstdc++-v3/aclocal.m4.jj 2002-08-29 13:51:58.000000000 +0200
-+++ libstdc++-v3/aclocal.m4    2002-08-30 11:58:46.000000000 +0200
-@@ -1143,6 +1143,12 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-         AC_TRY_RUN([
-         #define _GNU_SOURCE 1
-         #include <locale.h>
-+        #include <string.h>
-+        #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        extern __typeof(newlocale) __newlocale;
-+        extern __typeof(duplocale) __duplocale;
-+        extern __typeof(strcoll_l) __strcoll_l;
-+        #endif
-         int main()
-         {
-           const char __one[] = "Äuglein Augmen";
-@@ -1191,6 +1197,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-       CMONEY_CC=config/locale/generic/monetary_members.cc
-       CNUMERIC_CC=config/locale/generic/numeric_members.cc
-       CTIME_CC=config/locale/generic/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-     xgnu)
-       AC_MSG_RESULT(gnu)
-@@ -1223,6 +1230,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-       CMONEY_CC=config/locale/gnu/monetary_members.cc
-       CNUMERIC_CC=config/locale/gnu/numeric_members.cc
-       CTIME_CC=config/locale/gnu/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
-       ;;
-     xieee_1003.1-2001)
-       AC_MSG_RESULT(generic)
-@@ -1237,6 +1245,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-       CMONEY_CC=config/locale/generic/monetary_members.cc
-       CNUMERIC_CC=config/locale/generic/numeric_members.cc
-       CTIME_CC=config/locale/generic/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-     *)
-       echo "$enable_clocale is an unknown locale package" 1>&2
-@@ -1260,6 +1269,7 @@ AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
-   AC_LINK_FILES($CMONEY_CC, src/monetary.cc)
-   AC_LINK_FILES($CNUMERIC_CC, src/numeric.cc)
-   AC_LINK_FILES($CTIME_CC, src/time.cc)
-+  AC_LINK_FILES($CLOCALE_INTERNAL_H, src/c++locale_internal.h)
- ])
---- libstdc++-v3/configure.jj  2002-08-29 13:52:46.000000000 +0200
-+++ libstdc++-v3/configure     2002-08-30 12:00:07.000000000 +0200
-@@ -2961,6 +2961,12 @@ else
-         #define _GNU_SOURCE 1
-         #include <locale.h>
-+        #include <string.h>
-+        #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        extern __typeof(newlocale) __newlocale;
-+        extern __typeof(duplocale) __duplocale;
-+        extern __typeof(strcoll_l) __strcoll_l;
-+        #endif
-         int main()
-         {
-           const char __one[] = "Äuglein Augmen";
-@@ -3023,6 +3029,7 @@ fi
-       CMONEY_CC=config/locale/generic/monetary_members.cc
-       CNUMERIC_CC=config/locale/generic/numeric_members.cc
-       CTIME_CC=config/locale/generic/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-     xgnu)
-       echo "$ac_t""gnu" 1>&6
-@@ -3084,6 +3091,7 @@ fi
-       CMONEY_CC=config/locale/gnu/monetary_members.cc
-       CNUMERIC_CC=config/locale/gnu/numeric_members.cc
-       CTIME_CC=config/locale/gnu/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
-       ;;
-     xieee_1003.1-2001)
-       echo "$ac_t""generic" 1>&6
-@@ -3098,6 +3106,7 @@ fi
-       CMONEY_CC=config/locale/generic/monetary_members.cc
-       CNUMERIC_CC=config/locale/generic/numeric_members.cc
-       CTIME_CC=config/locale/generic/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-     *)
-       echo "$enable_clocale is an unknown locale package" 1>&2
-@@ -22689,8 +22698,8 @@ fi; done
- EOF
- cat >> $CONFIG_STATUS <<EOF
--ac_sources="$BASIC_FILE_CC $CLOCALE_CC $CCOLLATE_CC $CCTYPE_CC $CMESSAGES_CC $CMONEY_CC $CNUMERIC_CC $CTIME_CC $LINKER_MAP"
--ac_dests="src/basic_file.cc src/c++locale.cc src/collate.cc src/ctype.cc src/messages.cc src/monetary.cc src/numeric.cc src/time.cc src/linker.map"
-+ac_sources="$BASIC_FILE_CC $CLOCALE_CC $CCOLLATE_CC $CCTYPE_CC $CMESSAGES_CC $CMONEY_CC $CNUMERIC_CC $CTIME_CC $CLOCALE_INTERNAL_H $LINKER_MAP"
-+ac_dests="src/basic_file.cc src/c++locale.cc src/collate.cc src/ctype.cc src/messages.cc src/monetary.cc src/numeric.cc src/time.cc src/c++locale_internal.h src/linker.map"
- EOF
- cat >> $CONFIG_STATUS <<\EOF
-
-       Jakub
-
diff --git a/gcc32-locale_in_ctype_members.patch b/gcc32-locale_in_ctype_members.patch
deleted file mode 100644 (file)
index eb862df..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
---- libstdc++-v3/config/locale/gnu/ctype_members.cc.jj 2002-08-30 12:09:12.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/ctype_members.cc    2002-09-02 15:25:15.000000000 +0200
-@@ -166,15 +166,30 @@ namespace std
-   wchar_t
-   ctype<wchar_t>::
-   do_widen(char __c) const
--  { return btowc(__c); }
--  
-+  {
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    wchar_t __ret = btowc(__c);
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+
-   const char* 
-   ctype<wchar_t>::
-   do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-   {
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-     mbstate_t __state;
-     memset(static_cast<void*>(&__state), 0, sizeof(mbstate_t));
-     mbsrtowcs(__dest, &__lo, __hi - __lo, &__state);
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __uselocale(__old);
-+#endif
-     return __hi;
-   }
-@@ -182,7 +197,13 @@ namespace std
-   ctype<wchar_t>::
-   do_narrow(wchar_t __wc, char __dfault) const
-   { 
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-     int __c = wctob(__wc);
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __uselocale(__old);
-+#endif
-     return (__c == EOF ? __dfault : static_cast<char>(__c)); 
-   }
-@@ -191,6 +212,9 @@ namespace std
-   do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
-           char* __dest) const
-   {
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-     size_t __offset = 0;
-     while (true)
-       {
-@@ -208,6 +232,9 @@ namespace std
-       else
-         break;
-       }
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __uselocale(__old);
-+#endif
-     return __hi;
-   }
- #endif //  _GLIBCPP_USE_WCHAR_T
diff --git a/gcc32-locale_in_ctype_members_header.patch b/gcc32-locale_in_ctype_members_header.patch
deleted file mode 100644 (file)
index c434b08..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-From gcc-patches-return-67562-listarch-gcc-patches=gcc dot gnu dot org at gcc dot gnu dot org Fri Sep 06 14:44:59 2002
-Return-Path: <gcc-patches-return-67562-listarch-gcc-patches=gcc dot gnu dot org at gcc dot gnu dot org>
-Delivered-To: listarch-gcc-patches at gcc dot gnu dot org
-Received: (qmail 31503 invoked by alias); 6 Sep 2002 14:44:56 -0000
-Mailing-List: contact gcc-patches-help at gcc dot gnu dot org; run by ezmlm
-Precedence: bulk
-List-Archive: <http://gcc.gnu.org/ml/gcc-patches/>
-List-Post: <mailto:gcc-patches at gcc dot gnu dot org>
-List-Help: <mailto:gcc-patches-help at gcc dot gnu dot org>
-Sender: gcc-patches-owner at gcc dot gnu dot org
-Delivered-To: mailing list gcc-patches at gcc dot gnu dot org
-Received: (qmail 31479 invoked from network); 6 Sep 2002 14:44:52 -0000
-Received: from unknown (HELO devserv.devel.redhat.com) (66.187.233.200)
-  by sources dot redhat dot com with SMTP; 6 Sep 2002 14:44:52 -0000
-Received: (from jakub@localhost)
-       by devserv dot devel dot redhat dot com (8 dot 11 dot 6/8 dot 11 dot 0) id g86EioP06755;
-       Fri, 6 Sep 2002 10:44:50 -0400
-Date: Fri, 6 Sep 2002 10:44:50 -0400
-From: Jakub Jelinek <jakub at redhat dot com>
-To: Benjamin Kosnik <bkoz at redhat dot com>
-Cc: bkoz at nabi dot net, libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
-Subject: [PATCH] Fix libstdc++ usage of __ctype_b/__ctype_to* (take 2)
-Message-ID: <20020906104449.C7920@devserv.devel.redhat.com>
-Reply-To: Jakub Jelinek <jakub at redhat dot com>
-References: <20020901040933.I7886@dhcp187.sf.frob.com> <20020901095711.C7920@devserv.devel.redhat.com> <20020901102055.A5791@devserv.devel.redhat.com> <3D724B9A.6050908@redhat.com> <20020901145657.E7920@devserv.devel.redhat.com> <3D726A72.2080106@redhat.com> <20020901165440.F7920@devserv.devel.redhat.com> <20020904160557.7dbc29f6.bkoz@nabi.net> <20020905041710.P7920@devserv.devel.redhat.com> <20020905103148.7c1381a2.bkoz@redhat.com>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.2.5.1i
-In-Reply-To: <20020905103148 dot 7c1381a2 dot bkoz at redhat dot com>; from bkoz at redhat dot com on Thu, Sep 05, 2002 at 10:31:48AM -0500
-
-On Thu, Sep 05, 2002 at 10:31:48AM -0500, Benjamin Kosnik wrote:
-> > Most probably yes, but as it is a static method I wanted to be sure.
-> > Should I leave it in?
-> 
-> Sure.
-
-> > > Just remove all this _GLIBCPP_USE_SHADOW_HEADERS cruft.
-> > 
-> > You mean the using lines too?
-> 
-> Yep.
-
-> > BTW: This will have the effect that --enable-clocale=generic will no longer
-> > work with glibc 2.3+. Although for everything but checking the generic
-> > clocale gnu it makes no sense to use anything but --enable-clocale=gnu
-> > with glibc 2.3+, we might as well consider using:
-> > 
-> > #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-> >    __ret = *__ctype_b_loc();
-> > #else
-> >    __ret = __ctype_b;
-> > #endif
-> > here (and similarly with __ctype_tolower and __ctype_toupper).
-> 
-> Sounds good.
-
-Ok, here is an updated version of the patch.
-Ok to commit (head, branch)?
-
-2002-09-06  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/os/gnu-linux/bits/ctype_noninline.h
-       [_GLIBCPP_USE_SHADOW_HEADERS]: Remove using _C_legacy::__ctype_*.
-       (ctype<char>::classic_table): If _GLIBCPP_C_LOCALE_GNU, return
-       _S_c_locale->__ctype_b, otherwise temporarily switch to "C" locale
-       and return __ctype_b.
-       (ctype<char>::ctype(__c_locale, const mask*, bool, size_t)): If not
-       _GLIBCPP_C_LOCALE_GNU, temporarily switch to "C" locale and
-       initialize using __ctype_{b,tolower,toupper}.
-       (ctype<char>::ctype(const mask*, bool, size_t)): If
-       _GLIBCPP_C_LOCALE_GNU, initialize using
-       _S_c_locale->__ctype_{b,tolower,toupper}, otherwise temporarily
-       switch to "C" locale and initialize using __ctype_{b,tolower,toupper}.
-
---- libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h.jj 2002-09-03 11:54:25.000000000 +0200
-+++ libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h    2002-09-06 10:34:59.000000000 +0200
-@@ -34,16 +34,32 @@
-   
- // Information as gleaned from /usr/include/ctype.h
--#if _GLIBCPP_USE_SHADOW_HEADERS
--  using _C_legacy::__ctype_toupper;
--  using _C_legacy::__ctype_tolower;
--  using _C_legacy::__ctype_b;
--#endif
--
-+#if _GLIBCPP_C_LOCALE_GNU
-   const ctype_base::mask*
-   ctype<char>::classic_table() throw()
--  { return __ctype_b; }  
--  
-+  {
-+    if (!_S_c_locale)
-+      _S_create_c_locale(_S_c_locale, "C");
-+    return _S_c_locale->__ctype_b;
-+  }
-+#else
-+  const ctype_base::mask*
-+  ctype<char>::classic_table() throw()
-+  {
-+    const ctype_base::mask* __ret;
-+    char* __old = strdup(setlocale(LC_CTYPE, NULL));
-+    setlocale(LC_CTYPE, "C");
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    __ret = *__ctype_b_loc();
-+#else
-+    __ret = __ctype_b;
-+#endif
-+    setlocale(LC_CTYPE, __old);
-+    free(__old);
-+    return __ret;
-+  }
-+#endif
-+
- #if _GLIBCPP_C_LOCALE_GNU
-   ctype<char>::ctype(__c_locale __cloc, const mask* __table, bool __del, 
-                    size_t __refs) 
-@@ -57,17 +73,55 @@
- #else
-   ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
-                    size_t __refs) 
--  : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del), 
--  _M_toupper(__ctype_toupper), _M_tolower(__ctype_tolower),
--  _M_table(__table ? __table : classic_table())
--  { _M_c_locale_ctype = _S_c_locale; }
-+  : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del)
-+  {
-+    char* __old=strdup(setlocale(LC_CTYPE, NULL));
-+    setlocale(LC_CTYPE, "C");
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    _M_toupper = *__ctype_toupper_loc();
-+    _M_tolower = *__ctype_tolower_loc();
-+    _M_table = __table ? __table : *__ctype_b_loc();
-+#else
-+    _M_toupper = __ctype_toupper;
-+    _M_tolower = __ctype_tolower;
-+    _M_table = __table ? __table : __ctype_b;
-+#endif
-+    setlocale(LC_CTYPE, __old);
-+    free(__old);
-+    _M_c_locale_ctype = _S_c_locale;
-+  }
- #endif
-+#if _GLIBCPP_C_LOCALE_GNU
-   ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) : 
--  __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del), 
--  _M_toupper(__ctype_toupper), _M_tolower(__ctype_tolower),
--  _M_table(__table ? __table : classic_table())
--  { _M_c_locale_ctype = _S_c_locale; }
-+  __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del)
-+  {
-+    _M_c_locale_ctype = _S_c_locale;
-+    _M_toupper = _M_c_locale_ctype->__ctype_toupper;
-+    _M_tolower = _M_c_locale_ctype->__ctype_tolower;
-+    _M_table = __table ? __table : _M_c_locale_ctype->__ctype_b;
-+  }
-+#else
-+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
-+                   size_t __refs) 
-+  : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del)
-+  {
-+    char* __old=strdup(setlocale(LC_CTYPE, NULL));
-+    setlocale(LC_CTYPE, "C");
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+    _M_toupper = *__ctype_toupper_loc();
-+    _M_tolower = *__ctype_tolower_loc();
-+    _M_table = __table ? __table : *__ctype_b_loc();
-+#else
-+    _M_toupper = __ctype_toupper;
-+    _M_tolower = __ctype_tolower;
-+    _M_table = __table ? __table : __ctype_b;
-+#endif
-+    setlocale(LC_CTYPE, __old);
-+    free(__old);
-+    _M_c_locale_ctype = _S_c_locale;
-+  }
-+#endif
-   char
-   ctype<char>::do_toupper(char __c) const
-
-
-       Jakub
-
diff --git a/gcc32-locale_in_monetary_members.patch b/gcc32-locale_in_monetary_members.patch
deleted file mode 100644 (file)
index 0d396dd..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
---- libstdc++-v3/config/locale/gnu/monetary_members.cc.jj      2002-08-30 12:09:12.000000000 +0200
-+++ libstdc++-v3/config/locale/gnu/monetary_members.cc 2002-08-31 23:41:51.000000000 +0200
-@@ -335,9 +335,13 @@ namespace std
-       else
-       {
-         // Named locale.
--        // XXX Fix me. Switch to named locale so that mbsrtowcs will work.
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        __c_locale __old = __uselocale(__cloc);
-+#else
-+        // Switch to named locale so that mbsrtowcs will work.
-         char* __old = strdup(setlocale(LC_ALL, NULL));
-         setlocale(LC_ALL, __name);
-+#endif
-         _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
-@@ -400,9 +404,12 @@ namespace std
-         char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-         _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
--        // XXX
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        __uselocale(__old);
-+#else
-         setlocale(LC_ALL, __old);
-         free(__old);
-+#endif
-       }
-     }
-@@ -427,9 +434,13 @@ namespace std
-       else
-       {
-         // Named locale.
--        // XXX Fix me. Switch to named locale so that mbsrtowcs will work.
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        __c_locale __old = __uselocale(__cloc);
-+#else
-+        // Switch to named locale so that mbsrtowcs will work.
-         char* __old = strdup(setlocale(LC_ALL, NULL));
-         setlocale(LC_ALL, __name);
-+#endif
-         _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
-         _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w);
-@@ -491,9 +502,12 @@ namespace std
-         char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-         _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
--        // XXX
-+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-+        __uselocale(__old);
-+#else
-         setlocale(LC_ALL, __old);
-         free(__old);
-+#endif
-       }
-     }
diff --git a/gcc32-pr6842.patch b/gcc32-pr6842.patch
deleted file mode 100644 (file)
index 905efaa..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-2002-05-31  Jakub Jelinek  <jakub@redhat.com>
-
-       PR optimization/6842
-       * combine.c (combine_simplify_rtx) [SUBREG]: Don't ICE if VOIDmode
-       operand subreg cannot be simplified.
-
-       * gcc.dg/20020531-1.c: New test.
-
---- gcc/testsuite/gcc.dg/20020531-1.c.jj       Fri May 31 17:15:15 2002
-+++ gcc/testsuite/gcc.dg/20020531-1.c  Fri May 31 17:13:50 2002
-@@ -0,0 +1,21 @@
-+/* PR optimization/6842
-+   This testcase caused ICE when trying to optimize V8QI subreg of VOIDmode
-+   CONST_DOUBLE.  */
-+/* { dg-do compile { target i?86-*-* } } */
-+/* { dg-options "-O2 -mmmx" } */
-+
-+typedef int __v8qi __attribute__ ((__mode__ (__V8QI__)));
-+extern void abort (void);
-+extern void exit (int);
-+
-+void foo (void)
-+{
-+  unsigned long long a = 0x0102030405060708LL;
-+  unsigned long long b = 0x1020304050607080LL;
-+  unsigned long long c;
-+
-+  c = (unsigned long long) __builtin_ia32_paddusb ((__v8qi) a, (__v8qi) b);
-+  __builtin_ia32_emms ();
-+  if (c != 0x1122334455667788)
-+    abort ();
-+}
---- gcc/combine.c.jj   Thu May 23 10:22:59 2002
-+++ gcc/combine.c      Fri May 31 17:05:09 2002
-@@ -3863,7 +3863,12 @@ combine_simplify_rtx (x, op0_mode, last,
-       /* simplify_subreg can't use gen_lowpart_for_combine.  */
-       if (CONSTANT_P (SUBREG_REG (x))
--        && subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x))
-+        && subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x)
-+           /* Don't call gen_lowpart_for_combine if the inner mode
-+              is VOIDmode and we cannot simplify it, as SUBREG without
-+              inner mode is invalid.  */
-+        && (GET_MODE (SUBREG_REG (x)) != VOIDmode
-+            || gen_lowpart_common (mode, SUBREG_REG (x))))
-       return gen_lowpart_for_combine (mode, SUBREG_REG (x));
-       if (GET_MODE_CLASS (GET_MODE (SUBREG_REG (x))) == MODE_CC)
diff --git a/gcc32-sparc-sll1.patch b/gcc32-sparc-sll1.patch
deleted file mode 100644 (file)
index e8e1104..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-2002-05-05  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/sparc/sparc.md (ashlsi3): If shift count is const1_rtx,
-       use add instead of shift.
-       (ashldi3_sp64): Likewise.
-       (ashlsi3_const1, ashldi3_const1): Remove.
-       * config/sparc/sparc.h (PREDICATE_CODES): Add const1_operand.
-       * config/sparc/sparc.c (const1_operand): New.
-
---- gcc/config/sparc/sparc.md.jj       Sun May  5 21:56:45 2002
-+++ gcc/config/sparc/sparc.md  Sun May  5 23:33:31 2002
-@@ -7559,18 +7559,13 @@
-       && (unsigned HOST_WIDE_INT) INTVAL (operands[2]) > 31)
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+  if (operands[2] == const1_rtx)
-+    return \"add\\t%1, %1, %0\";
-   return \"sll\\t%1, %2, %0\";
- }"
--  [(set_attr "type" "shift")])
--
--;; We special case multiplication by two, as add can be done
--;; in both ALUs, while shift only in IEU0 on UltraSPARC.
--(define_insn "*ashlsi3_const1"
--  [(set (match_operand:SI 0 "register_operand" "=r")
--        (ashift:SI (match_operand:SI 1 "register_operand" "r")
--                   (const_int 1)))]
--  ""
--  "add\\t%1, %1, %0")
-+  [(set (attr "type")
-+      (if_then_else (match_operand 2 "const1_operand" "")
-+                    (const_string "ialu") (const_string "shift")))])
- (define_expand "ashldi3"
-   [(set (match_operand:DI 0 "register_operand" "=r")
-@@ -7588,15 +7583,6 @@
-     }
- }")
--;; We special case multiplication by two, as add can be done
--;; in both ALUs, while shift only in IEU0 on UltraSPARC.
--(define_insn "*ashldi3_const1"
--  [(set (match_operand:DI 0 "register_operand" "=r")
--      (ashift:DI (match_operand:DI 1 "register_operand" "r")
--                 (const_int 1)))]
--  "TARGET_ARCH64"
--  "add\\t%1, %1, %0")
--
- (define_insn "*ashldi3_sp64"
-   [(set (match_operand:DI 0 "register_operand" "=r")
-       (ashift:DI (match_operand:DI 1 "register_operand" "r")
-@@ -7608,9 +7594,13 @@
-       && (unsigned HOST_WIDE_INT) INTVAL (operands[2]) > 63)
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
-+  if (operands[2] == const1_rtx)
-+    return \"add\\t%1, %1, %0\";
-   return \"sllx\\t%1, %2, %0\";
- }"
--  [(set_attr "type" "shift")])
-+  [(set (attr "type")
-+      (if_then_else (match_operand 2 "const1_operand" "")
-+                    (const_string "ialu") (const_string "shift")))])
- ;; XXX UGH!
- (define_insn "ashldi3_v8plus"
---- gcc/config/sparc/sparc.h.jj        Fri May  3 22:57:33 2002
-+++ gcc/config/sparc/sparc.h   Sun May  5 23:20:48 2002
-@@ -3014,6 +3014,7 @@ do {                                                                     \
- #define PREDICATE_CODES                                                       \
- {"reg_or_0_operand", {SUBREG, REG, CONST_INT, CONST_DOUBLE}},         \
-+{"const1_operand", {CONST_INT}},                                      \
- {"fp_zero_operand", {CONST_DOUBLE}},                                  \
- {"fp_register_operand", {SUBREG, REG}},                                       \
- {"intreg_operand", {SUBREG, REG}},                                    \
---- gcc/config/sparc/sparc.c.jj        Fri May  3 22:57:33 2002
-+++ gcc/config/sparc/sparc.c   Sun May  5 23:24:18 2002
-@@ -478,6 +478,16 @@ reg_or_0_operand (op, mode)
-   return 0;
- }
-+/* Return non-zero only if OP is const1_rtx.  */
-+
-+int
-+const1_operand (op, mode)
-+     rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  return op == const1_rtx;
-+}
-+
- /* Nonzero if OP is a floating point value with value 0.0.  */
- int
diff --git a/gcc32-tls-dwarf2.patch b/gcc32-tls-dwarf2.patch
deleted file mode 100644 (file)
index 432f196..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-2002-08-21  Richard Henderson  <rth@redhat.com>
-
-       * config/i386/i386-protos.h (i386_output_dwarf_dtprel): Add
-       prototype.
-       * config/i386/i386.c (i386_output_dwarf_dtprel): New.
-       * config/i386/i386.h (ASM_OUTPUT_DWARF_DTPREL): Define.
-       * dwarf2.h (DW_OP_GNU_push_tls_address): Add.
-       (DW_OP_lo_user): Define to 0xe0.
-       * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Define.
-       (dwarf_stack_op_name, sizeof_loc_descr): Handle a few more OPs.
-       (output_loc_operands): Handle INTERNAL_DW_OP_tls_addr.
-       (loc_descriptor_from_tree): Handle DECL_THREAD_LOCAL variables.
-       (add_AT_location_description): Pass descr instead of rtl.
-       (add_location_or_const_value_attribute, add_bound_info,
-       gen_subprogram_die): Adjust its callers.
-       (rtl_for_decl_location): Avoid constant pool references.
-
---- gcc/config/i386/i386-protos.h      20 Aug 2002 17:20:36 -0000      1.1.1.1
-+++ gcc/config/i386/i386-protos.h      20 Aug 2002 22:35:02 -0000
-@@ -113,6 +113,7 @@ extern const char *output_fix_trunc PARA
- extern const char *output_fp_compare PARAMS ((rtx, rtx*, int, int));
- extern void i386_dwarf_output_addr_const PARAMS ((FILE*, rtx));
-+extern void i386_output_dwarf_dtprel PARAMS ((FILE*, int, rtx));
- extern rtx i386_simplify_dwarf_addr PARAMS ((rtx));
- extern void ix86_expand_clear PARAMS ((rtx));
---- gcc/config/i386/i386.c     20 Aug 2002 17:20:36 -0000      1.1.1.1
-+++ gcc/config/i386/i386.c     20 Aug 2002 22:35:02 -0000
-@@ -5921,6 +5921,33 @@ i386_dwarf_output_addr_const (file, x)
-   fputc ('\n', file);
- }
-+/* This is called from dwarf2out.c via ASM_OUTPUT_DWARF_DTPREL.
-+   We need to emit DTP-relative relocations.  */
-+
-+void
-+i386_output_dwarf_dtprel (file, size, x)
-+     FILE *file;
-+     int size;
-+     rtx x;
-+{
-+  switch (size)
-+    {
-+    case 4:
-+      fputs (ASM_LONG, file);
-+      break;
-+    case 8:
-+#ifdef ASM_QUAD
-+      fputs (ASM_QUAD, file);
-+      break;
-+#endif
-+    default:
-+      abort ();
-+   }
-+  
-+  output_addr_const (file, x);
-+  fputs ("@DTPOFF", file);
-+}
-+
- /* In the name of slightly smaller debug output, and to cater to
-    general assembler losage, recognize PIC+GOTOFF and turn it back
-    into a direct symbol reference.  */
---- gcc/config/i386/i386.h     20 Aug 2002 17:20:36 -0000      1.1.1.1
-+++ gcc/config/i386/i386.h     20 Aug 2002 22:35:02 -0000
-@@ -2899,6 +2899,13 @@ extern int const svr4_dbx_register_map[F
- #define ASM_SIMPLIFY_DWARF_ADDR(X) \
-   i386_simplify_dwarf_addr (X)
-+/* Emit a dtp-relative reference to a TLS variable.  */
-+
-+#ifdef HAVE_AS_TLS
-+#define ASM_OUTPUT_DWARF_DTPREL(FILE, SIZE, X) \
-+  i386_output_dwarf_dtprel (FILE, SIZE, X)
-+#endif
-+
- /* Switch to init or fini section via SECTION_OP, emit a call to FUNC,
-    and switch back.  For x86 we do this only to save a few bytes that
-    would otherwise be unused in the text section.  */
---- gcc/dwarf2.h       20 Aug 2002 17:20:19 -0000      1.1.1.1
-+++ gcc/dwarf2.h       20 Aug 2002 22:35:02 -0000
-@@ -399,10 +399,12 @@ enum dwarf_location_atom
-     DW_OP_push_object_address = 0x97,
-     DW_OP_call2 = 0x98,
-     DW_OP_call4 = 0x99,
--    DW_OP_calli = 0x9a
-+    DW_OP_call_ref = 0x9a,
-+    /* GNU extensions.  */
-+    DW_OP_GNU_push_tls_address = 0xe0
-   };
--#define DW_OP_lo_user 0x80    /* Implementation-defined range start.  */
-+#define DW_OP_lo_user 0xe0    /* Implementation-defined range start.  */
- #define DW_OP_hi_user 0xff    /* Implementation-defined range end.  */
- /* Type encodings.  */
---- gcc/dwarf2out.c    20 Aug 2002 17:20:19 -0000      1.1.1.1
-+++ gcc/dwarf2out.c    20 Aug 2002 22:40:42 -0000
-@@ -2169,6 +2169,11 @@ dwarf2out_frame_finish ()
- /* And now, the subset of the debugging information support code necessary
-    for emitting location expressions.  */
-+/* We need some way to distinguish DW_OP_addr with a direct symbol
-+   relocation from DW_OP_addr with a dtp-relative symbol relocation.  */
-+#define INTERNAL_DW_OP_tls_addr               (0x100 + DW_OP_addr)
-+
-+
- typedef struct dw_val_struct *dw_val_ref;
- typedef struct die_struct *dw_die_ref;
- typedef struct dw_loc_descr_struct *dw_loc_descr_ref;
-@@ -2294,6 +2299,7 @@ dwarf_stack_op_name (op)
-   switch (op)
-     {
-     case DW_OP_addr:
-+    case INTERNAL_DW_OP_tls_addr:
-       return "DW_OP_addr";
-     case DW_OP_deref:
-       return "DW_OP_deref";
-@@ -2583,6 +2589,16 @@ dwarf_stack_op_name (op)
-       return "DW_OP_xderef_size";
-     case DW_OP_nop:
-       return "DW_OP_nop";
-+    case DW_OP_push_object_address:
-+      return "DW_OP_push_object_address";
-+    case DW_OP_call2:
-+      return "DW_OP_call2";
-+    case DW_OP_call4:
-+      return "DW_OP_call4";
-+    case DW_OP_call_ref:
-+      return "DW_OP_call_ref";
-+    case DW_OP_GNU_push_tls_address:
-+      return "DW_OP_GNU_push_tls_address";
-     default:
-       return "OP_<unknown>";
-     }
-@@ -2640,6 +2656,7 @@ size_of_loc_descr (loc)
-   switch (loc->dw_loc_opc)
-     {
-     case DW_OP_addr:
-+    case INTERNAL_DW_OP_tls_addr:
-       size += DWARF2_ADDR_SIZE;
-       break;
-     case DW_OP_const1u:
-@@ -2725,6 +2742,15 @@ size_of_loc_descr (loc)
-     case DW_OP_xderef_size:
-       size += 1;
-       break;
-+    case DW_OP_call2:
-+      size += 2;
-+      break;
-+    case DW_OP_call4:
-+      size += 4;
-+      break;
-+    case DW_OP_call_ref:
-+      size += DWARF2_ADDR_SIZE;
-+      break;
-     default:
-       break;
-     }
-@@ -2874,6 +2900,17 @@ output_loc_operands (loc)
-     case DW_OP_xderef_size:
-       dw2_asm_output_data (1, val1->v.val_int, NULL);
-       break;
-+
-+    case INTERNAL_DW_OP_tls_addr:
-+#ifdef ASM_OUTPUT_DWARF_DTPREL
-+      ASM_OUTPUT_DWARF_DTPREL (asm_out_file, DWARF2_ADDR_SIZE,
-+                             val1->v.val_addr);
-+      fputc ('\n', asm_out_file);
-+#else
-+      abort ();
-+#endif
-+      break;
-+
-     default:
-       /* Other codes have no operands.  */
-       break;
-@@ -3598,7 +3635,8 @@ static unsigned int simple_field_decl_al
- static unsigned HOST_WIDE_INT simple_type_size_in_bits PARAMS ((tree));
- static HOST_WIDE_INT field_byte_offset        PARAMS ((tree));
- static void add_AT_location_description       PARAMS ((dw_die_ref,
--                                               enum dwarf_attribute, rtx));
-+                                               enum dwarf_attribute,
-+                                               dw_loc_descr_ref));
- static void add_data_member_location_attribute PARAMS ((dw_die_ref, tree));
- static void add_const_value_attribute PARAMS ((dw_die_ref, rtx));
- static rtx rtl_for_decl_location      PARAMS ((tree));
-@@ -8031,6 +8069,41 @@ loc_descriptor_from_tree (loc, addressp)
-              : 0);
-     case VAR_DECL:
-+      if (DECL_THREAD_LOCAL (loc))
-+      {
-+        rtx rtl;
-+
-+#ifndef ASM_OUTPUT_DWARF_DTPREL
-+        /* If this is not defined, we have no way to emit the data.  */
-+        return 0;
-+#endif
-+        /* The way DW_OP_GNU_push_tls_address is specified, we can only
-+           look up addresses of objects in the current module.  */
-+        if (DECL_P (loc) && TREE_PUBLIC (loc) && !MODULE_LOCAL_P (loc))
-+          return 0;
-+
-+        rtl = rtl_for_decl_location (loc);
-+        if (rtl == NULL_RTX)
-+          return 0;
-+
-+        if (GET_CODE (rtl) != MEM)
-+          return 0;
-+        rtl = XEXP (rtl, 0);
-+        if (! CONSTANT_P (rtl))
-+          return 0;
-+
-+        ret = new_loc_descr (INTERNAL_DW_OP_tls_addr, 0, 0);
-+        ret->dw_loc_oprnd1.val_class = dw_val_class_addr;
-+        ret->dw_loc_oprnd1.v.val_addr = rtl;
-+
-+        ret1 = new_loc_descr (DW_OP_GNU_push_tls_address, 0, 0);
-+        add_loc_descr (&ret, ret1);
-+
-+        indirect_p = 1;
-+        break;
-+      }
-+      /* FALLTHRU */
-+
-     case PARM_DECL:
-       {
-       rtx rtl = rtl_for_decl_location (loc);
-@@ -8531,14 +8604,12 @@ field_byte_offset (decl)
-    whole parameters.  Note that the location attributes for struct fields are
-    generated by the routine `data_member_location_attribute' below.  */
--static void
--add_AT_location_description (die, attr_kind, rtl)
-+static inline void
-+add_AT_location_description (die, attr_kind, descr)
-      dw_die_ref die;
-      enum dwarf_attribute attr_kind;
--     rtx rtl;
-+     dw_loc_descr_ref descr;
- {
--  dw_loc_descr_ref descr = loc_descriptor (rtl);
--
-   if (descr != 0)
-     add_AT_loc (die, attr_kind, descr);
- }
-@@ -8963,6 +9034,13 @@ rtl_for_decl_location (decl)
-   if (rtl)
-     rtl = ASM_SIMPLIFY_DWARF_ADDR (rtl);
- #endif
-+
-+  /* If we don't look past the constant pool, we risk emitting a
-+     reference to a constant pool entry that isn't referenced from
-+     code, and thus is not emitted.  */
-+  if (rtl)
-+    rtl = avoid_constant_pool_reference (rtl);
-+
-   return rtl;
- }
-@@ -8983,6 +9061,7 @@ add_location_or_const_value_attribute (d
-      tree decl;
- {
-   rtx rtl;
-+  dw_loc_descr_ref descr;
-   if (TREE_CODE (decl) == ERROR_MARK)
-     return;
-@@ -8993,16 +9072,11 @@ add_location_or_const_value_attribute (d
-   if (rtl == NULL_RTX)
-     return;
--  /* If we don't look past the constant pool, we risk emitting a
--     reference to a constant pool entry that isn't referenced from
--     code, and thus is not emitted.  */
--  rtl = avoid_constant_pool_reference (rtl);
--
-   switch (GET_CODE (rtl))
-     {
-     case ADDRESSOF:
--      /* The address of a variable that was optimized away; don't emit
--       anything.  */
-+      /* The address of a variable that was optimized away;
-+       don't emit anything.  */
-       break;
-     case CONST_INT:
-@@ -9017,12 +9091,24 @@ add_location_or_const_value_attribute (d
-       break;
-     case MEM:
--    case REG:
--    case SUBREG:
--    case CONCAT:
--      add_AT_location_description (die, DW_AT_location, rtl);
-+      if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
-+      {
-+        /* Need loc_descriptor_from_tree since that's where we know
-+           how to handle TLS variables.  Want the object's address
-+           since the top-level DW_AT_location assumes such.  See
-+           the confusion in loc_descriptor for reference.  */
-+        descr = loc_descriptor_from_tree (decl, 1);
-+      }
-+      else
-+      {
-+      case REG:
-+      case SUBREG:
-+      case CONCAT:
-+        descr = loc_descriptor (rtl);
-+      }
-+      add_AT_location_description (die, DW_AT_location, descr);
-       break;
--
-+      
-     default:
-       abort ();
-     }
-@@ -9154,7 +9240,8 @@ add_bound_info (subrange_die, bound_attr
-         add_AT_flag (decl_die, DW_AT_artificial, 1);
-         add_type_attribute (decl_die, TREE_TYPE (bound), 1, 0, ctx);
--        add_AT_location_description (decl_die, DW_AT_location, loc);
-+        add_AT_location_description (decl_die, DW_AT_location,
-+                                     loc_descriptor (loc));
-         add_AT_die_ref (subrange_die, bound_attr, decl_die);
-       }
-@@ -10359,7 +10446,7 @@ gen_subprogram_die (decl, context_die)
-        is not part of the state saved/restored for inline functions.  */
-       if (current_function_needs_context)
-       add_AT_location_description (subr_die, DW_AT_static_link,
--                                   lookup_static_chain (decl));
-+                           loc_descriptor (lookup_static_chain (decl)));
- #endif
-     }
diff --git a/gcc32-tls.patch b/gcc32-tls.patch
deleted file mode 100644 (file)
index f37fd5f..0000000
+++ /dev/null
@@ -1,4294 +0,0 @@
---- gcc/cp/lex.c.jj    Sat May 25 00:02:23 2002
-+++ gcc/cp/lex.c       Wed Jun 19 19:33:51 2002
-@@ -396,6 +396,7 @@ static const struct resword reswords[] =
-   { "__restrict__",   RID_RESTRICT,   0 },
-   { "__signed",               RID_SIGNED,     0 },
-   { "__signed__",     RID_SIGNED,     0 },
-+  { "__thread",               RID_THREAD,     0 },
-   { "__typeof",               RID_TYPEOF,     0 },
-   { "__typeof__",     RID_TYPEOF,     0 },
-   { "__volatile",     RID_VOLATILE,   0 },
-@@ -502,6 +503,7 @@ const short rid_to_yy[RID_MAX] =
-   /* RID_BOUNDED */   0,
-   /* RID_UNBOUNDED */ 0,
-   /* RID_COMPLEX */   TYPESPEC,
-+  /* RID_THREAD */    SCSPEC,
-   /* C++ */
-   /* RID_FRIEND */    SCSPEC,
---- gcc/cp/decl.c.jj   Wed Jun 19 19:33:51 2002
-+++ gcc/cp/decl.c      Wed Jun 19 19:33:51 2002
-@@ -7122,7 +7122,8 @@ check_tag_decl (declspecs)
-              || value == ridpointers[(int) RID_VIRTUAL]
-              || value == ridpointers[(int) RID_CONST]
-              || value == ridpointers[(int) RID_VOLATILE]
--             || value == ridpointers[(int) RID_EXPLICIT])
-+             || value == ridpointers[(int) RID_EXPLICIT]
-+             || value == ridpointers[(int) RID_THREAD])
-       ob_modifier = value;
-     }
-@@ -7596,6 +7597,12 @@ static tree
- obscure_complex_init (decl, init)
-      tree decl, init;
- {
-+  if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
-+    {
-+      error ("run-time initialization of thread-local storage");
-+      return NULL_TREE;
-+    }
-+
-   if (! flag_no_inline && TREE_STATIC (decl))
-     {
-       if (extract_init (decl, init))
-@@ -9290,6 +9297,16 @@ grokvardecl (type, declarator, specbits_
-       TREE_PUBLIC (decl) = DECL_EXTERNAL (decl);
-     }
-+  if (RIDBIT_SETP (RID_THREAD, specbits))
-+    {
-+      if (targetm.have_tls)
-+      DECL_THREAD_LOCAL (decl) = 1;
-+      else
-+      /* A mere warning is sure to result in improper semantics
-+         at runtime.  Don't bother to allow this to compile.  */
-+      error ("thread-local storage not supported for this target");
-+    }
-+
-   if (TREE_PUBLIC (decl))
-     {
-       /* [basic.link]: A name with no linkage (notably, the name of a class
-@@ -10192,10 +10209,22 @@ grokdeclarator (declarator, declspecs, d
-                   }
-                 else if (RIDBIT_SETP (i, specbits))
-                   pedwarn ("duplicate `%s'", IDENTIFIER_POINTER (id));
-+
-+                /* Diagnose "__thread extern".  Recall that this list
-+                   is in the reverse order seen in the text.  */
-+                if (i == (int)RID_THREAD)
-+                  {
-+                    if (RIDBIT_SETP (RID_EXTERN, specbits))
-+                      error ("`__thread' before `extern'");
-+                    if (RIDBIT_SETP (RID_STATIC, specbits))
-+                      error ("`__thread' before `static'");
-+                  }
-+
-                 if (i == (int)RID_EXTERN
-                     && TREE_PURPOSE (spec) == error_mark_node)
-                   /* This extern was part of a language linkage.  */
-                   extern_langp = 1;
-+
-                 RIDBIT_SET (i, specbits);
-                 goto found;
-               }
-@@ -10492,6 +10521,7 @@ grokdeclarator (declarator, declspecs, d
-     {
-       if (RIDBIT_SETP (RID_STATIC, specbits)) nclasses++;
-       if (RIDBIT_SETP (RID_EXTERN, specbits) && !extern_langp) nclasses++;
-+      if (RIDBIT_SETP (RID_THREAD, specbits)) nclasses++;
-       if (decl_context == PARM && nclasses > 0)
-       error ("storage class specifiers invalid in parameter declarations");
-       if (RIDBIT_SETP (RID_TYPEDEF, specbits))
-@@ -10523,6 +10553,13 @@ grokdeclarator (declarator, declspecs, d
-   /* Warn about storage classes that are invalid for certain
-      kinds of declarations (parameters, typenames, etc.).  */
-+  /* "static __thread" and "extern __thread" are allowed.  */
-+  if (nclasses == 2
-+      && RIDBIT_SETP (RID_THREAD, specbits)
-+      && (RIDBIT_SETP (RID_EXTERN, specbits)
-+        || RIDBIT_SETP (RID_STATIC, specbits)))
-+    nclasses = 1;
-+    
-   if (nclasses > 1)
-     error ("multiple storage classes in declaration of `%s'", name);
-   else if (decl_context != NORMAL && nclasses > 0)
-@@ -10578,6 +10615,7 @@ grokdeclarator (declarator, declspecs, d
-         RIDBIT_RESET (RID_REGISTER, specbits);
-         RIDBIT_RESET (RID_AUTO, specbits);
-         RIDBIT_RESET (RID_EXTERN, specbits);
-+        RIDBIT_RESET (RID_THREAD, specbits);
-       }
-     }
-   else if (RIDBIT_SETP (RID_EXTERN, specbits) && initialized && !funcdef_flag)
-@@ -10600,6 +10638,14 @@ grokdeclarator (declarator, declspecs, d
-       if (RIDBIT_SETP (RID_AUTO, specbits))
-       error ("top-level declaration of `%s' specifies `auto'", name);
-     }
-+  else if (RIDBIT_SETP (RID_THREAD, specbits)
-+         && !RIDBIT_SETP (RID_EXTERN, specbits)
-+         && !RIDBIT_SETP (RID_STATIC, specbits))
-+    {
-+      error ("function-scope `%s' implicitly auto and declared `__thread'",
-+           name);
-+      RIDBIT_RESET (RID_THREAD, specbits);
-+    }
-   if (nclasses > 0 && friendp)
-     error ("storage class specifiers invalid in friend function declarations");
-@@ -11800,6 +11846,8 @@ friend declaration requires class-key, i
-         error ("storage class `auto' invalid for function `%s'", name);
-       else if (RIDBIT_SETP (RID_REGISTER, specbits))
-         error ("storage class `register' invalid for function `%s'", name);
-+      else if (RIDBIT_SETP (RID_THREAD, specbits))
-+        error ("storage class `__thread' invalid for function `%s'", name);
-       /* Function declaration not at top level.
-          Storage classes other than `extern' are not allowed
---- gcc/doc/extend.texi.jj     Wed Jun 19 19:33:51 2002
-+++ gcc/doc/extend.texi        Wed Jun 19 19:33:51 2002
-@@ -432,6 +432,7 @@ extensions, accepted by GCC in C89 mode 
- * Target Builtins::     Built-in functions specific to particular targets.
- * Pragmas::             Pragmas accepted by GCC.
- * Unnamed Fields::      Unnamed struct/union fields within structs/unions.
-+* Thread-Local::        Per-thread variables.
- @end menu
- @node Statement Exprs
-@@ -6119,6 +6120,265 @@ It is ambiguous which @code{a} is being 
- Such constructs are not supported and must be avoided.  In the future,
- such constructs may be detected and treated as compilation errors.
-+@node Thread-Local
-+@section Thread-Local Storage
-+@cindex Thread-Local Storage
-+@cindex TLS
-+@cindex __thread
-+
-+Thread-local storage (@acronym{TLS}) is a mechanism by which variables
-+are allocated such that there is one instance of the variable per extant
-+thread.  The run-time model GCC uses to implement this originates
-+in the IA-64 processor-specific ABI, but has since been migrated
-+to other processors as well.  It requires significant support from
-+the linker (@command{ld}), dynamic linker (@command{ld.so}), and
-+system libraries (@file{libc.so} and @file{libpthread.so}), so it
-+is not available everywhere.
-+
-+At the user level, the extension is visible with a new storage
-+class keyword: @code{__thread}.  For example:
-+
-+@example
-+__thread int i;
-+extern __thread struct state s;
-+static __thread char *p;
-+@end example
-+
-+The @code{__thread} specifier may be used alone, with the @code{extern}
-+or @code{static} specifiers, but with no other storage class specifier.
-+When used with @code{extern} or @code{static}, @code{__thread} must appear
-+immediately after the other storage class specifier.
-+
-+The @code{__thread} specifier may be applied to any global, file-scoped
-+static, function-scoped static, or static data member of a class.  It may
-+not be applied to block-scoped automatic or non-static data member.
-+
-+When the address-of operator is applied to a thread-local variable, it is
-+evaluated at run-time and returns the address of the current thread's
-+instance of that variable.  An address so obtained may be used by any
-+thread.  When a thread terminates, any pointers to thread-local variables
-+in that thread become invalid.
-+
-+No static initialization may refer to the address of a thread-local variable.
-+
-+In C++, if an initializer is present for a thread-local variable, it must
-+be a @var{constant-expression}, as defined in 5.19.2 of the ANSI/ISO C++
-+standard.
-+
-+See @uref{http://people.redhat.com/drepper/tls.pdf,
-+ELF Handling For Thread-Local Storage} for a detailed explanation of
-+the four thread-local storage addressing models, and how the run-time
-+is expected to function.
-+
-+@menu
-+* C99 Thread-Local Edits::
-+* C++98 Thread-Local Edits::
-+@end menu
-+
-+@node C99 Thread-Local Edits
-+@subsection ISO/IEC 9899:1999 Edits for Thread-Local Storage
-+
-+The following are a set of changes to ISO/IEC 9899:1999 (aka C99)
-+that document the exact semantics of the language extension.
-+
-+@itemize @bullet
-+@item
-+@cite{5.1.2  Execution environments}
-+
-+Add new text after paragraph 1
-+
-+@quotation
-+Within either execution environment, a @dfn{thread} is a flow of
-+control within a program.  It is implementation defined whether
-+or not there may be more than one thread associated with a program.
-+It is implementation defined how threads beyond the first are
-+created, the name and type of the function called at thread
-+startup, and how threads may be terminated.  However, objects
-+with thread storage duration shall be initialized before thread
-+startup.
-+@end quotation
-+
-+@item
-+@cite{6.2.4  Storage durations of objects}
-+
-+Add new text before paragraph 3
-+
-+@quotation
-+An object whose identifier is declared with the storage-class
-+specifier @w{@code{__thread}} has @dfn{thread storage duration}.
-+Its lifetime is the entire execution of the thread, and its
-+stored value is initialized only once, prior to thread startup.
-+@end quotation
-+
-+@item
-+@cite{6.4.1  Keywords}
-+
-+Add @code{__thread}.
-+
-+@item
-+@cite{6.7.1  Storage-class specifiers}
-+
-+Add @code{__thread} to the list of storage class specifiers in
-+paragraph 1.
-+
-+Change paragraph 2 to
-+
-+@quotation
-+With the exception of @code{__thread}, at most one storage-class
-+specifier may be given [@dots{}].  The @code{__thread} specifier may
-+be used alone, or immediately following @code{extern} or
-+@code{static}.
-+@end quotation
-+
-+Add new text after paragraph 6
-+
-+@quotation
-+The declaration of an identifier for a variable that has
-+block scope that specifies @code{__thread} shall also
-+specify either @code{extern} or @code{static}.
-+
-+The @code{__thread} specifier shall be used only with
-+variables.
-+@end quotation
-+@end itemize
-+
-+@node C++98 Thread-Local Edits
-+@subsection ISO/IEC 14882:1998 Edits for Thread-Local Storage
-+
-+The following are a set of changes to ISO/IEC 14882:1998 (aka C++98)
-+that document the exact semantics of the language extension.
-+
-+@itemize @bullet
-+@b{[intro.execution]}
-+
-+New text after paragraph 4
-+
-+@quotation
-+A @dfn{thread} is a flow of control within the abstract machine.
-+It is implementation defined whether or not there may be more than
-+one thread.
-+@end quotation
-+
-+New text after paragraph 7
-+
-+@quotation
-+It is unspecified whether additional action must be taken to 
-+ensure when and whether side effects are visible to other threads.
-+@end quotation
-+
-+@item
-+@b{[lex.key]}
-+
-+Add @code{__thread}.
-+
-+@item
-+@b{[basic.start.main]}
-+
-+Add after paragraph 5
-+
-+@quotation
-+The thread that begins execution at the @code{main} function is called
-+the @dfn{main thread}.  It is implementation defined how functions 
-+beginning threads other than the main thread are designated or typed.
-+A function so designated, as well as the @code{main} function, is called
-+a @dfn{thread startup function}.  It is implementation defined what
-+happens if a thread startup function returns.  It is implementation
-+defined what happens to other threads when any thread calls @code{exit}.
-+@end quotation
-+
-+@item
-+@b{[basic.start.init]}
-+
-+Add after paragraph 4
-+
-+@quotation
-+The storage for an object of thread storage duration shall be
-+staticly initialized before the first statement of the thread startup
-+function.  An object of thread storage duration shall not require
-+dynamic initialization.
-+@end quotation
-+
-+@item
-+@b{[basic.start.term]}
-+
-+Add after paragraph 3
-+
-+@quotation
-+The type of an object with thread storage duration shall not have a
-+non-trivial destructor, nor shall it be an array type whose elements
-+(directly or indirectly) have non-trivial destructors.
-+@end quotation
-+
-+@item
-+@b{[basic.stc]}
-+
-+Add ``thread storage duration'' to the list in paragraph 1.
-+
-+Change paragraph 2
-+
-+@quotation
-+Thread, static, and automatic storage durations are associated with
-+objects introduced by declarations [@dots{}].
-+@end quotation
-+
-+Add @code{__thread} to the list of specifiers in paragraph 3.
-+
-+@item
-+@b{[basic.stc.thread]}
-+
-+New section before @b{[basic.stc.static]}
-+
-+@quotation
-+The keyword @code{__thread} applied to an non-local object gives the
-+object thread storage duration.
-+
-+A local variable or class data member declared both @code{static}
-+and @code{__thread} gives the variable or member thread storage
-+duration.
-+@end quotation
-+
-+@item
-+@b{[basic.stc.static]}
-+
-+Change paragraph 1
-+
-+@quotation
-+All objects which have neither thread storage duration, dynamic
-+storage duration nor are local [@dots{}].
-+@end quotation
-+
-+@item
-+@b{[dcl.stc]}
-+
-+Add @code{__thread} to the list in paragraph 1.
-+
-+Change paragraph 1
-+
-+@quotation
-+With the exception of @code{__thread}, at most one
-+@var{storage-class-specifier} shall appear in a given
-+@var{decl-specifier-seq}.  The @code{__thread} specifier may
-+be used alone, or immediately following the @code{extern} or
-+@code{static} specifiers.  [@dots{}]
-+@end quotation
-+
-+Add after paragraph 5
-+
-+@quotation
-+The @code{__thread} specifier can be applied only to the names of objects
-+and to anonymous unions.
-+@end quotation
-+
-+@item
-+@b{[class.mem]}
-+
-+Add after paragraph 6
-+
-+@quotation
-+Non-@code{static} members shall not be @code{__thread}.
-+@end quotation
-+@end itemize
-+
- @node C++ Extensions
- @chapter Extensions to the C++ Language
- @cindex extensions, C++ language
---- gcc/doc/invoke.texi.jj     Tue May 21 20:27:44 2002
-+++ gcc/doc/invoke.texi        Wed Jun 19 19:33:52 2002
-@@ -674,7 +674,7 @@ in the following sections.
- -fverbose-asm  -fpack-struct  -fstack-check @gol
- -fstack-limit-register=@var{reg}  -fstack-limit-symbol=@var{sym} @gol
- -fargument-alias  -fargument-noalias @gol
---fargument-noalias-global  -fleading-underscore}
-+-fargument-noalias-global  -fleading-underscore -ftls-model=@var{model}}
- @end table
- @menu
-@@ -9988,6 +9988,14 @@
- generate code that is not binary compatible with code generated without that
- switch.  Use it to conform to a non-default application binary interface.
- Not all targets provide complete support for this switch.
-+
-+@item -ftls-model=@var{model}
-+Alter the thread-local storage model to be used (@pxref{Thread-Local}).
-+The @var{model} argument should be one of @code{global-dynamic},
-+@code{local-dynamic}, @code{initial-exec} or @code{local-exec}.
-+ 
-+The default without @option{-fpic} is @code{initial-exec}; with
-+@option{-fpic} the default is @code{global-dynamic}.
- @end table
- @c man end
---- gcc/config/i386/i386.c.jj  Wed Jun 19 19:33:51 2002
-+++ gcc/config/i386/i386.c     Wed Jun 19 23:18:18 2002
-@@ -536,6 +536,10 @@ int const svr4_dbx_register_map[FIRST_PS
- rtx ix86_compare_op0 = NULL_RTX;
- rtx ix86_compare_op1 = NULL_RTX;
-+/* The encoding characters for the four TLS models present in ELF.  */
-+
-+static char const tls_model_chars[] = " GLil";
-+
- #define MAX_386_STACK_LOCALS 3
- /* Size of the register save area.  */
- #define X86_64_VARARGS_SIZE (REGPARM_MAX * UNITS_PER_WORD + SSE_REGPARM_MAX * 16)
-@@ -544,6 +548,7 @@ rtx ix86_compare_op1 = NULL_RTX;
- struct machine_function
- {
-   rtx stack_locals[(int) MAX_MACHINE_MODE][MAX_386_STACK_LOCALS];
-+  const char *some_ld_name;
-   int save_varrargs_registers;
-   int accesses_prev_frame;
- };
-@@ -596,6 +601,9 @@ enum cmodel ix86_cmodel;
- /* Asm dialect.  */
- const char *ix86_asm_string;
- enum asm_dialect ix86_asm_dialect = ASM_ATT;
-+/* TLS dialext.  */
-+const char *ix86_tls_dialect_string;
-+enum tls_dialect ix86_tls_dialect = TLS_DIALECT_GNU;
- /* which cpu are we scheduling for */
- enum processor_type ix86_cpu;
-@@ -646,12 +654,17 @@ static char internal_label_prefix[16];
- static int internal_label_prefix_len;
\f
- static int local_symbolic_operand PARAMS ((rtx, enum machine_mode));
-+static int tls_symbolic_operand_1 PARAMS ((rtx, enum tls_model));
- static void output_pic_addr_const PARAMS ((FILE *, rtx, int));
- static void put_condition_code PARAMS ((enum rtx_code, enum machine_mode,
-                                      int, int, FILE *));
-+static const char *get_some_local_dynamic_name PARAMS ((void));
-+static int get_some_local_dynamic_name_1 PARAMS ((rtx *, void *));
-+static rtx maybe_get_pool_constant PARAMS ((rtx));
- static rtx ix86_expand_int_compare PARAMS ((enum rtx_code, rtx, rtx));
- static enum rtx_code ix86_prepare_fp_compare_args PARAMS ((enum rtx_code,
-                                                          rtx *, rtx *));
-+static rtx get_thread_pointer PARAMS ((void));
- static rtx gen_push PARAMS ((rtx));
- static int memory_address_length PARAMS ((rtx addr));
- static int ix86_flags_dependant PARAMS ((rtx, rtx, enum attr_type));
-@@ -820,6 +833,11 @@ static enum x86_64_reg_class merge_class
- #undef TARGET_SCHED_REORDER
- #define TARGET_SCHED_REORDER ix86_sched_reorder
-+#ifdef HAVE_AS_TLS
-+#undef TARGET_HAVE_TLS
-+#define TARGET_HAVE_TLS true
-+#endif
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
\f
- /* Sometimes certain combinations of command options do not make
-@@ -1109,6 +1127,17 @@ override_options ()
-       ix86_branch_cost = i;
-     }
-+  if (ix86_tls_dialect_string)
-+    {
-+      if (strcmp (ix86_tls_dialect_string, "gnu") == 0)
-+      ix86_tls_dialect = TLS_DIALECT_GNU;
-+      else if (strcmp (ix86_tls_dialect_string, "sun") == 0)
-+      ix86_tls_dialect = TLS_DIALECT_SUN;
-+      else
-+      error ("bad value (%s) for -mtls-dialect= switch",
-+             ix86_tls_dialect_string);
-+    }
-+
-   /* Keep nonleaf frame pointers.  */
-   if (TARGET_OMIT_LEAF_FRAME_POINTER)
-     flag_omit_frame_pointer = 1;
-@@ -3007,6 +3036,70 @@ local_symbolic_operand (op, mode)
-   return 0;
- }
-+/* Test for various thread-local symbols.  See ix86_encode_section_info. */
-+
-+int
-+tls_symbolic_operand (op, mode)
-+     register rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  const char *symbol_str;
-+
-+  if (GET_CODE (op) != SYMBOL_REF)
-+    return 0;
-+  symbol_str = XSTR (op, 0);
-+
-+  if (symbol_str[0] != '%')
-+    return 0;
-+  return strchr (tls_model_chars, symbol_str[1]) - tls_model_chars;
-+}
-+
-+static int
-+tls_symbolic_operand_1 (op, kind)
-+     rtx op;
-+     enum tls_model kind;
-+{
-+  const char *symbol_str;
-+
-+  if (GET_CODE (op) != SYMBOL_REF)
-+    return 0;
-+  symbol_str = XSTR (op, 0);
-+
-+  return symbol_str[0] == '%' && symbol_str[1] == tls_model_chars[kind];
-+}
-+
-+int
-+global_dynamic_symbolic_operand (op, mode)
-+     register rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  return tls_symbolic_operand_1 (op, TLS_MODEL_GLOBAL_DYNAMIC);
-+}
-+
-+int
-+local_dynamic_symbolic_operand (op, mode)
-+     register rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  return tls_symbolic_operand_1 (op, TLS_MODEL_LOCAL_DYNAMIC);
-+}
-+
-+int
-+initial_exec_symbolic_operand (op, mode)
-+     register rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  return tls_symbolic_operand_1 (op, TLS_MODEL_INITIAL_EXEC);
-+}
-+
-+int
-+local_exec_symbolic_operand (op, mode)
-+     register rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  return tls_symbolic_operand_1 (op, TLS_MODEL_LOCAL_EXEC);
-+}
-+
- /* Test for a valid operand for a call instruction.  Don't allow the
-    arg pointer register or virtual regs since they may decay into
-    reg + const, which the patterns can't handle.  */
-@@ -3858,7 +3951,7 @@ ix86_asm_file_end (file)
- {
-   rtx xops[2];
--  if (! TARGET_DEEP_BRANCH_PREDICTION || pic_label_name[0] == 0)
-+  if (pic_label_name[0] == 0)
-     return;
-   /* The trick here is to create a linkonce section containing the
-@@ -3896,17 +3989,33 @@ ix86_asm_file_end (file)
-   output_asm_insn ("ret", xops);
- }
--void
--load_pic_register ()
-+/* Emit code for the SET_GOT patterns.  */
-+
-+const char *
-+output_set_got (dest)
-+     rtx dest;
- {
--  rtx gotsym, pclab;
-+  rtx xops[3];
--  if (TARGET_64BIT)
--    abort ();
-+  xops[0] = dest;
-+  xops[1] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
-+
-+  if (! TARGET_DEEP_BRANCH_PREDICTION || !flag_pic)
-+    {
-+      xops[2] = gen_rtx_LABEL_REF (Pmode, gen_label_rtx ());
-+
-+      if (!flag_pic)
-+      output_asm_insn ("mov{l}\t{%2, %0|%0, %2}", xops);
-+      else
-+      output_asm_insn ("call\t%a2", xops);
--  gotsym = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
-+      ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
-+                               CODE_LABEL_NUMBER (XEXP (xops[2], 0)));
--  if (TARGET_DEEP_BRANCH_PREDICTION)
-+      if (flag_pic)
-+      output_asm_insn ("pop{l}\t%0", xops);
-+    }
-+  else
-     {
-       if (! pic_label_name[0])
-       {
-@@ -3915,16 +4024,17 @@ load_pic_register ()
-         else
-           ASM_GENERATE_INTERNAL_LABEL (pic_label_name, "LPR", 0);
-       }
--      pclab = gen_rtx_MEM (QImode, gen_rtx_SYMBOL_REF (Pmode, pic_label_name));
--    }
-+      xops[2] = gen_rtx_SYMBOL_REF (Pmode, pic_label_name);
-+      xops[2] = gen_rtx_MEM (QImode, xops[2]);
-+      output_asm_insn ("call\t%X2", xops);
-+    }
-+  
-+  if (!flag_pic || TARGET_DEEP_BRANCH_PREDICTION)
-+    output_asm_insn ("add{l}\t{%1, %0|%0, %1}", xops);
-   else
--    {
--      pclab = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ());
--    }
--
--  emit_insn (gen_prologue_get_pc (pic_offset_table_rtx, pclab));
--
--  emit_insn (gen_prologue_set_got (pic_offset_table_rtx, gotsym, pclab));
-+    output_asm_insn ("add{l}\t{%1+[.-%a2], %0|%0, %a1+(.-%a2)}", xops);
-+  
-+  return "";
- }
- /* Generate an "push" pattern for input ARG.  */
-@@ -4253,7 +4363,15 @@ ix86_expand_prologue ()
- #endif
-   if (pic_reg_used)
--    load_pic_register ();
-+    {
-+      insn = emit_insn (gen_set_got (pic_offset_table_rtx));
-+
-+      /* ??? The current_function_uses_pic_offset_table flag is woefully
-+       inaccurate, as it isn't updated as code gets deleted.  Allow the
-+       thing to be removed.  A better solution would be to actually get
-+       proper liveness for ebx, as then we won't save/restore it too.  */
-+      REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, const0_rtx, NULL);
-+    }
-   /* If we are profiling, make sure no instructions are scheduled before
-      the call to mcount.  However, if -fpic, the above call will have
-@@ -4694,6 +4812,114 @@ ix86_find_base_term (x)
-   return term;
- }
\f
-+/* Determine if a given RTX is a valid constant.  We already know this
-+   satisfies CONSTANT_P.  */
-+
-+bool
-+legitimate_constant_p (x)
-+     rtx x;
-+{
-+  rtx inner;
-+
-+  switch (GET_CODE (x))
-+    {
-+    case SYMBOL_REF:
-+      /* TLS symbols are not constant.  */
-+      if (tls_symbolic_operand (x, Pmode))
-+      return false;
-+      break;
-+
-+    case CONST:
-+      inner = XEXP (x, 0);
-+
-+      /* Offsets of TLS symbols are never valid.
-+       Discourage CSE from creating them.  */
-+      if (GET_CODE (inner) == PLUS
-+        && tls_symbolic_operand (XEXP (inner, 0), Pmode))
-+      return false;
-+
-+      /* Only some unspecs are valid as "constants".  */
-+      if (GET_CODE (inner) == UNSPEC)
-+      switch (XINT (inner, 1))
-+        {
-+        case UNSPEC_TPOFF:
-+          return local_exec_symbolic_operand (XVECEXP (inner, 0, 0), Pmode);
-+        case UNSPEC_TP:
-+          return true;
-+        default:
-+          return false;
-+        }
-+      break;
-+
-+    default:
-+      break;
-+    }
-+
-+  /* Otherwise we handle everything else in the move patterns.  */
-+  return true;
-+}
-+
-+/* Determine if a given RTX is a valid constant address.  */
-+
-+bool
-+constant_address_p (x)
-+     rtx x;
-+{
-+  switch (GET_CODE (x))
-+    {
-+    case LABEL_REF:
-+    case CONST_INT:
-+      return true;
-+
-+    case CONST_DOUBLE:
-+      return TARGET_64BIT;
-+
-+    case CONST:
-+    case SYMBOL_REF:
-+      return !flag_pic && legitimate_constant_p (x);
-+
-+    default:
-+      return false;
-+    }
-+}
-+
-+/* Nonzero if the constant value X is a legitimate general operand
-+   when generating PIC code.  It is given that flag_pic is on and 
-+   that X satisfies CONSTANT_P or is a CONST_DOUBLE.  */
-+
-+bool
-+legitimate_pic_operand_p (x)
-+     rtx x;
-+{
-+  rtx inner;
-+
-+  switch (GET_CODE (x))
-+    {
-+    case CONST:
-+      inner = XEXP (x, 0);
-+
-+      /* Only some unspecs are valid as "constants".  */
-+      if (GET_CODE (inner) == UNSPEC)
-+      switch (XINT (inner, 1))
-+        {
-+        case UNSPEC_TPOFF:
-+          return local_exec_symbolic_operand (XVECEXP (inner, 0, 0), Pmode);
-+        case UNSPEC_TP:
-+          return true;
-+        default:
-+          return false;
-+        }
-+      /* FALLTHRU */
-+
-+    case SYMBOL_REF:
-+    case LABEL_REF:
-+      return legitimate_pic_address_disp_p (x);
-+
-+    default:
-+      return true;
-+    }
-+}
-+
- /* Determine if a given CONST RTX is a valid memory displacement
-    in PIC mode.  */
-@@ -4701,6 +4927,8 @@ int
- legitimate_pic_address_disp_p (disp)
-      register rtx disp;
- {
-+  bool saw_plus;
-+
-   /* In 64bit mode we can allow direct addresses of symbols and labels
-      when they are not dynamic symbols.  */
-   if (TARGET_64BIT)
-@@ -4737,25 +4965,39 @@ legitimate_pic_address_disp_p (disp)
-       return 1;
-     }
-+  saw_plus = false;
-   if (GET_CODE (disp) == PLUS)
-     {
-       if (GET_CODE (XEXP (disp, 1)) != CONST_INT)
-       return 0;
-       disp = XEXP (disp, 0);
-+      saw_plus = true;
-     }
-   if (GET_CODE (disp) != UNSPEC
-       || XVECLEN (disp, 0) != 1)
-     return 0;
--  /* Must be @GOT or @GOTOFF.  */
-   switch (XINT (disp, 1))
-     {
--    case 6: /* @GOT */
-+    case UNSPEC_GOT:
-+      if (saw_plus)
-+      return false;
-       return GET_CODE (XVECEXP (disp, 0, 0)) == SYMBOL_REF;
--
--    case 7: /* @GOTOFF */
-+    case UNSPEC_GOTOFF:
-       return local_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
-+    case UNSPEC_GOTTPOFF:
-+      if (saw_plus)
-+      return false;
-+      return initial_exec_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
-+    case UNSPEC_NTPOFF:
-+      if (saw_plus)
-+      return false;
-+      return local_exec_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
-+    case UNSPEC_DTPOFF:
-+      if (saw_plus)
-+      return false;
-+      return local_dynamic_symbolic_operand (XVECEXP (disp, 0, 0), Pmode);
-     }
-     
-   return 0;
-@@ -4882,12 +5124,6 @@ legitimate_address_p (mode, addr, strict
-     {
-       reason_rtx = disp;
--      if (!CONSTANT_ADDRESS_P (disp))
--      {
--        reason = "displacement is not constant";
--        goto report_error;
--      }
--
-       if (TARGET_64BIT)
-       {
-         if (!x86_64_sign_extended_value (disp))
-@@ -4905,8 +5141,30 @@ legitimate_address_p (mode, addr, strict
-           }
-       }
--      if (flag_pic && SYMBOLIC_CONST (disp))
-+      if (GET_CODE (disp) == CONST
-+        && GET_CODE (XEXP (disp, 0)) == UNSPEC)
-+      switch (XINT (XEXP (disp, 0), 1))
-+        {
-+        case UNSPEC_GOT:
-+        case UNSPEC_GOTOFF:
-+        case UNSPEC_GOTPCREL:
-+          if (!flag_pic)
-+            abort ();
-+          goto is_legitimate_pic;
-+
-+        case UNSPEC_GOTTPOFF:
-+        case UNSPEC_NTPOFF:
-+        case UNSPEC_DTPOFF:
-+          break;
-+
-+        default:
-+          reason = "invalid address unspec";
-+          goto report_error;
-+        }
-+
-+      else if (flag_pic && SYMBOLIC_CONST (disp))
-       {
-+      is_legitimate_pic:
-         if (TARGET_64BIT && (index || base))
-           {
-             reason = "non-constant pic memory reference";
-@@ -4949,6 +5207,11 @@ legitimate_address_p (mode, addr, strict
-             goto report_error;
-           }
-       }
-+      else if (!CONSTANT_ADDRESS_P (disp))
-+      {
-+        reason = "displacement is not constant";
-+        goto report_error;
-+      }
-     }
-   /* Everything looks valid.  */
-@@ -5129,7 +5392,102 @@ legitimize_pic_address (orig, reg)
-     }
-   return new;
- }
-+
-+void
-+ix86_encode_section_info (decl)
-+     tree decl;
-+{
-+  bool local_p;
-+  rtx rtl, symbol;
-+
-+  rtl = DECL_P (decl) ? DECL_RTL (decl) : TREE_CST_RTL (decl);
-+  if (GET_CODE (rtl) != MEM)
-+    return;
-+  symbol = XEXP (rtl, 0);
-+  if (GET_CODE (symbol) != SYMBOL_REF)
-+    return;
-+
-+  local_p = !DECL_P (decl) || !TREE_PUBLIC (decl) || MODULE_LOCAL_P (decl);
-+
-+  /* For basic x86, if using PIC, mark a SYMBOL_REF for a non-global
-+     symbol so that we may access it directly in the GOT.  */
-+
-+  if (flag_pic)
-+    SYMBOL_REF_FLAG (symbol) = local_p;
-+
-+  /* For ELF, encode thread-local data with %[GLil] for "global dynamic",
-+     "local dynamic", "initial exec" or "local exec" TLS models
-+     respectively.  */
-+
-+  if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
-+    {
-+      const char *symbol_str;
-+      char *newstr;
-+      size_t len;
-+      enum tls_model kind;
-+
-+      if (!flag_pic)
-+      {
-+        if (local_p)
-+          kind = TLS_MODEL_LOCAL_EXEC;
-+        else
-+          kind = TLS_MODEL_INITIAL_EXEC;
-+      }
-+      /* Local dynamic is inefficient when we're not combining the
-+       parts of the address.  */
-+      else if (optimize && local_p)
-+      kind = TLS_MODEL_LOCAL_DYNAMIC;
-+      else
-+      kind = TLS_MODEL_GLOBAL_DYNAMIC;
-+      if (kind < flag_tls_default)
-+      kind = flag_tls_default;
-+
-+      symbol_str = XSTR (symbol, 0);
-+
-+      if (symbol_str[0] == '%')
-+      {
-+        if (symbol_str[1] == tls_model_chars[kind])
-+          return;
-+        symbol_str += 2;
-+      }
-+      len = strlen (symbol_str) + 1;
-+      newstr = alloca (len + 2);
-+
-+      newstr[0] = '%';
-+      newstr[1] = tls_model_chars[kind];
-+      memcpy (newstr + 2, symbol_str, len);
-+
-+      XSTR (symbol, 0) = ggc_alloc_string (newstr, len + 2 - 1);
-+    }
-+}
-+
-+/* Undo the above when printing symbol names.  */
-+
-+const char *
-+ix86_strip_name_encoding (str)
-+     const char *str;
-+{
-+  if (str[0] == '%')
-+    str += 2;
-+  if (str [0] == '*')
-+    str += 1;
-+  return str;
-+}
\f
-+/* Load the thread pointer into a register.  */
-+
-+static rtx
-+get_thread_pointer ()
-+{
-+  rtx tp;
-+
-+  tp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TP);
-+  tp = gen_rtx_CONST (Pmode, tp);
-+  tp = force_reg (Pmode, tp);
-+
-+  return tp;
-+}
-+
- /* Try machine-dependent ways of modifying an illegitimate address
-    to be legitimate.  If we find one, return the new, valid address.
-    This macro is used in only one place: `memory_address' in explow.c.
-@@ -5167,6 +5525,84 @@ legitimize_address (x, oldx, mode)
-       debug_rtx (x);
-     }
-+  log = tls_symbolic_operand (x, mode);
-+  if (log)
-+    {
-+      rtx dest, base, off, pic;
-+
-+      switch (log)
-+        {
-+        case TLS_MODEL_GLOBAL_DYNAMIC:
-+        dest = gen_reg_rtx (Pmode);
-+          emit_insn (gen_tls_global_dynamic (dest, x));
-+        break;
-+
-+        case TLS_MODEL_LOCAL_DYNAMIC:
-+        base = gen_reg_rtx (Pmode);
-+        emit_insn (gen_tls_local_dynamic_base (base));
-+
-+        off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), UNSPEC_DTPOFF);
-+        off = gen_rtx_CONST (Pmode, off);
-+
-+        return gen_rtx_PLUS (Pmode, base, off);
-+
-+        case TLS_MODEL_INITIAL_EXEC:
-+        if (flag_pic)
-+          {
-+            current_function_uses_pic_offset_table = 1;
-+            pic = pic_offset_table_rtx;
-+          }
-+        else
-+          {
-+            pic = gen_reg_rtx (Pmode);
-+            emit_insn (gen_set_got (pic));
-+          }
-+
-+        base = get_thread_pointer ();
-+
-+        off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), UNSPEC_GOTTPOFF);
-+        off = gen_rtx_CONST (Pmode, off);
-+        off = gen_rtx_PLUS (Pmode, pic, off);
-+        off = gen_rtx_MEM (Pmode, off);
-+        RTX_UNCHANGING_P (off) = 1;
-+        set_mem_alias_set (off, ix86_GOT_alias_set ());
-+
-+        /* Damn Sun for specifing a set of dynamic relocations without
-+           considering the two-operand nature of the architecture!
-+           We'd be much better off with a "GOTNTPOFF" relocation that
-+           already contained the negated constant.  */
-+        /* ??? Using negl and reg+reg addressing appears to be a lose
-+           size-wise.  The negl is two bytes, just like the extra movl
-+           incurred by the two-operand subl, but reg+reg addressing
-+           uses the two-byte modrm form, unlike plain reg.  */
-+
-+        dest = gen_reg_rtx (Pmode);
-+        emit_insn (gen_subsi3 (dest, base, off));
-+        break;
-+
-+        case TLS_MODEL_LOCAL_EXEC:
-+        base = get_thread_pointer ();
-+
-+        off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x),
-+                              TARGET_GNU_TLS ? UNSPEC_NTPOFF : UNSPEC_TPOFF);
-+        off = gen_rtx_CONST (Pmode, off);
-+
-+        if (TARGET_GNU_TLS)
-+          return gen_rtx_PLUS (Pmode, base, off);
-+        else
-+          {
-+            dest = gen_reg_rtx (Pmode);
-+            emit_insn (gen_subsi3 (dest, base, off));
-+          }
-+        break;
-+
-+      default:
-+        abort ();
-+        }
-+
-+      return dest;
-+    }
-+
-   if (flag_pic && SYMBOLIC_CONST (x))
-     return legitimize_pic_address (x, 0);
-@@ -5410,18 +5846,30 @@ output_pic_addr_const (file, x, code)
-        output_pic_addr_const (file, XVECEXP (x, 0, 0), code);
-        switch (XINT (x, 1))
-       {
--      case 6:
-+      case UNSPEC_GOT:
-         fputs ("@GOT", file);
-         break;
--      case 7:
-+      case UNSPEC_GOTOFF:
-         fputs ("@GOTOFF", file);
-         break;
--      case 8:
-+      case UNSPEC_PLT:
-         fputs ("@PLT", file);
-         break;
--      case 15:
-+      case UNSPEC_GOTPCREL:
-         fputs ("@GOTPCREL(%RIP)", file);
-         break;
-+      case UNSPEC_GOTTPOFF:
-+        fputs ("@GOTTPOFF", file);
-+        break;
-+      case UNSPEC_TPOFF:
-+        fputs ("@TPOFF", file);
-+        break;
-+      case UNSPEC_NTPOFF:
-+        fputs ("@NTPOFF", file);
-+        break;
-+      case UNSPEC_DTPOFF:
-+        fputs ("@DTPOFF", file);
-+        break;
-       default:
-         output_operand_lossage ("invalid UNSPEC as operand");
-         break;
-@@ -5710,6 +6158,43 @@ print_reg (x, code, file)
-     }
- }
-+/* Locate some local-dynamic symbol still in use by this function
-+   so that we can print its name in some tls_local_dynamic_base
-+   pattern.  */
-+
-+static const char *
-+get_some_local_dynamic_name ()
-+{
-+  rtx insn;
-+
-+  if (cfun->machine->some_ld_name)
-+    return cfun->machine->some_ld_name;
-+
-+  for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
-+    if (INSN_P (insn)
-+      && for_each_rtx (&PATTERN (insn), get_some_local_dynamic_name_1, 0))
-+      return cfun->machine->some_ld_name;
-+
-+  abort ();
-+}
-+
-+static int
-+get_some_local_dynamic_name_1 (px, data)
-+     rtx *px;
-+     void *data ATTRIBUTE_UNUSED;
-+{
-+  rtx x = *px;
-+
-+  if (GET_CODE (x) == SYMBOL_REF
-+      && local_dynamic_symbolic_operand (x, Pmode))
-+    {
-+      cfun->machine->some_ld_name = XSTR (x, 0);
-+      return 1;
-+    }
-+
-+  return 0;
-+}
-+
- /* Meaning of CODE:
-    L,W,B,Q,S,T -- print the opcode suffix for specified size of operand.
-    C -- print opcode suffix for set/cmov insn.
-@@ -5734,6 +6219,7 @@ print_reg (x, code, file)
-    D -- print condition for SSE cmp instruction.
-    P -- if PIC, print an @PLT suffix.
-    X -- don't print any sort of PIC '@' suffix for a symbol.
-+   & -- print some in-use local-dynamic symbol name.
-  */
- void
-@@ -5751,6 +6237,10 @@ print_operand (file, x, code)
-           putc ('*', file);
-         return;
-+      case '&':
-+        assemble_name (file, get_some_local_dynamic_name ());
-+        return;
-+
-       case 'A':
-         if (ASSEMBLER_DIALECT == ASM_ATT)
-           putc ('*', file);
-@@ -6078,6 +6568,18 @@ print_operand (file, x, code)
-       REAL_VALUE_TO_DECIMAL (r, "%.22e", dstr);
-       fprintf (file, "%s", dstr);
-     }
-+
-+  else if (GET_CODE (x) == CONST
-+         && GET_CODE (XEXP (x, 0)) == UNSPEC
-+         && XINT (XEXP (x, 0), 1) == UNSPEC_TP)
-+    {
-+      if (ASSEMBLER_DIALECT == ASM_INTEL)
-+      fputs ("DWORD PTR ", file);
-+      if (ASSEMBLER_DIALECT == ASM_ATT || USER_LABEL_PREFIX[0] == 0)
-+      putc ('%', file);
-+      fputs ("gs:0", file);
-+    }
-+
-   else
-     {
-       if (code != 'P')
-@@ -6226,6 +6728,43 @@ print_operand_address (file, addr)
-       }
-     }
- }
-+
-+bool
-+output_addr_const_extra (file, x)
-+     FILE *file;
-+     rtx x;
-+{
-+  rtx op;
-+
-+  if (GET_CODE (x) != UNSPEC)
-+    return false;
-+
-+  op = XVECEXP (x, 0, 0);
-+  switch (XINT (x, 1))
-+    {
-+    case UNSPEC_GOTTPOFF:
-+      output_addr_const (file, op);
-+      fputs ("@GOTTPOFF", file);
-+      break;
-+    case UNSPEC_TPOFF:
-+      output_addr_const (file, op);
-+      fputs ("@TPOFF", file);
-+      break;
-+    case UNSPEC_NTPOFF:
-+      output_addr_const (file, op);
-+      fputs ("@NTPOFF", file);
-+      break;
-+    case UNSPEC_DTPOFF:
-+      output_addr_const (file, op);
-+      fputs ("@DTPOFF", file);
-+      break;
-+
-+    default:
-+      return false;
-+    }
-+
-+  return true;
-+}
\f
- /* Split one or more DImode RTL references into pairs of SImode
-    references.  The RTL can be REG, offsettable MEM, integer constant, or
-@@ -6763,51 +7302,117 @@ ix86_expand_clear (dest)
-   emit_insn (tmp);
- }
-+/* X is an unchanging MEM.  If it is a constant pool reference, return
-+   the constant pool rtx, else NULL.  */
-+
-+static rtx
-+maybe_get_pool_constant (x)
-+     rtx x;
-+{
-+  x = XEXP (x, 0);
-+
-+  if (flag_pic)
-+    {
-+      if (GET_CODE (x) != PLUS)
-+      return NULL_RTX;
-+      if (XEXP (x, 0) != pic_offset_table_rtx)
-+      return NULL_RTX;
-+      x = XEXP (x, 1);
-+      if (GET_CODE (x) != CONST)
-+      return NULL_RTX;
-+      x = XEXP (x, 0);
-+      if (GET_CODE (x) != UNSPEC)
-+      return NULL_RTX;
-+      if (XINT (x, 1) != UNSPEC_GOTOFF)
-+      return NULL_RTX;
-+      x = XVECEXP (x, 0, 0);
-+    }
-+
-+  if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (x))
-+    return get_pool_constant (x);
-+
-+  return NULL_RTX;
-+}
-+
- void
- ix86_expand_move (mode, operands)
-      enum machine_mode mode;
-      rtx operands[];
- {
-   int strict = (reload_in_progress || reload_completed);
--  rtx insn;
-+  rtx insn, op0, op1, tmp;
-+
-+  op0 = operands[0];
-+  op1 = operands[1];
--  if (flag_pic && mode == Pmode && symbolic_operand (operands[1], Pmode))
-+  /* ??? We have a slight problem.  We need to say that tls symbols are
-+     not legitimate constants so that reload does not helpfully reload
-+     these constants from a REG_EQUIV, which we cannot handle.  (Recall
-+     that general- and local-dynamic address resolution requires a
-+     function call.)
-+
-+     However, if we say that tls symbols are not legitimate constants,
-+     then emit_move_insn helpfully drop them into the constant pool.
-+
-+     It is far easier to work around emit_move_insn than reload.  Recognize
-+     the MEM that we would have created and extract the symbol_ref.  */
-+
-+  if (mode == Pmode
-+      && GET_CODE (op1) == MEM
-+      && RTX_UNCHANGING_P (op1))
-     {
--      /* Emit insns to move operands[1] into operands[0].  */
-+      tmp = maybe_get_pool_constant (op1);
-+      /* Note that we only care about symbolic constants here, which
-+       unlike CONST_INT will always have a proper mode.  */
-+      if (tmp && GET_MODE (tmp) == Pmode)
-+      op1 = tmp;
-+    }
--      if (GET_CODE (operands[0]) == MEM)
--      operands[1] = force_reg (Pmode, operands[1]);
-+  if (tls_symbolic_operand (op1, Pmode))
-+    {
-+      op1 = legitimize_address (op1, op1, VOIDmode);
-+      if (GET_CODE (op0) == MEM)
-+      {
-+        tmp = gen_reg_rtx (mode);
-+        emit_insn (gen_rtx_SET (VOIDmode, tmp, op1));
-+        op1 = tmp;
-+      }
-+    }
-+  else if (flag_pic && mode == Pmode && symbolic_operand (op1, Pmode))
-+    {
-+      if (GET_CODE (op0) == MEM)
-+      op1 = force_reg (Pmode, op1);
-       else
-       {
--        rtx temp = operands[0];
-+        rtx temp = op0;
-         if (GET_CODE (temp) != REG)
-           temp = gen_reg_rtx (Pmode);
--        temp = legitimize_pic_address (operands[1], temp);
--        if (temp == operands[0])
-+        temp = legitimize_pic_address (op1, temp);
-+        if (temp == op0)
-           return;
--        operands[1] = temp;
-+        op1 = temp;
-       }
-     }
-   else
-     {
--      if (GET_CODE (operands[0]) == MEM
-+      if (GET_CODE (op0) == MEM
-         && (PUSH_ROUNDING (GET_MODE_SIZE (mode)) != GET_MODE_SIZE (mode)
--            || !push_operand (operands[0], mode))
--        && GET_CODE (operands[1]) == MEM)
--      operands[1] = force_reg (mode, operands[1]);
--
--      if (push_operand (operands[0], mode)
--        && ! general_no_elim_operand (operands[1], mode))
--      operands[1] = copy_to_mode_reg (mode, operands[1]);
-+            || !push_operand (op0, mode))
-+        && GET_CODE (op1) == MEM)
-+      op1 = force_reg (mode, op1);
-+
-+      if (push_operand (op0, mode)
-+        && ! general_no_elim_operand (op1, mode))
-+      op1 = copy_to_mode_reg (mode, op1);
-       /* Force large constants in 64bit compilation into register
-        to get them CSEed.  */
-       if (TARGET_64BIT && mode == DImode
--        && immediate_operand (operands[1], mode)
--        && !x86_64_zero_extended_value (operands[1])
--        && !register_operand (operands[0], mode)
-+        && immediate_operand (op1, mode)
-+        && !x86_64_zero_extended_value (op1)
-+        && !register_operand (op0, mode)
-         && optimize && !reload_completed && !reload_in_progress)
--      operands[1] = copy_to_mode_reg (mode, operands[1]);
-+      op1 = copy_to_mode_reg (mode, op1);
-       if (FLOAT_MODE_P (mode))
-       {
-@@ -6817,13 +7422,13 @@ ix86_expand_move (mode, operands)
-         if (strict)
-           ;
--        else if (GET_CODE (operands[1]) == CONST_DOUBLE
--                 && register_operand (operands[0], mode))
--          operands[1] = validize_mem (force_const_mem (mode, operands[1]));
-+        else if (GET_CODE (op1) == CONST_DOUBLE
-+                 && register_operand (op0, mode))
-+          op1 = validize_mem (force_const_mem (mode, op1));
-       }
-     }
--  insn = gen_rtx_SET (VOIDmode, operands[0], operands[1]);
-+  insn = gen_rtx_SET (VOIDmode, op0, op1);
-   emit_insn (insn);
- }
-@@ -8588,13 +9193,14 @@ ix86_split_to_parts (operand, parts, mod
-   if (size < 2 || size > 3)
-     abort ();
--  /* Optimize constant pool reference to immediates.  This is used by fp moves,
--     that force all constants to memory to allow combining.  */
--
--  if (GET_CODE (operand) == MEM
--      && GET_CODE (XEXP (operand, 0)) == SYMBOL_REF
--      && CONSTANT_POOL_ADDRESS_P (XEXP (operand, 0)))
--    operand = get_pool_constant (XEXP (operand, 0));
-+  /* Optimize constant pool reference to immediates.  This is used by fp
-+     moves, that force all constants to memory to allow combining.  */
-+  if (GET_CODE (operand) == MEM && RTX_UNCHANGING_P (operand))
-+    {
-+      rtx tmp = maybe_get_pool_constant (operand);
-+      if (tmp)
-+      operand = tmp;
-+    }
-   if (GET_CODE (operand) == MEM && !offsettable_memref_p (operand))
-     {
-@@ -9790,6 +10396,55 @@ ix86_expand_strlensi_unroll_1 (out, alig
-   emit_label (end_0_label);
- }
-+
-+void
-+ix86_expand_call (retval, fnaddr, callarg1, callarg2, pop)
-+     rtx retval, fnaddr, callarg1, callarg2, pop;
-+{
-+  rtx use = NULL, call;
-+
-+  if (pop == const0_rtx)
-+    pop = NULL;
-+  if (TARGET_64BIT && pop)
-+    abort ();
-+
-+  /* Static functions and indirect calls don't need the pic register.  */
-+  if (! TARGET_64BIT && flag_pic
-+      && GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF
-+      && ! SYMBOL_REF_FLAG (XEXP (fnaddr, 0)))
-+    {
-+      current_function_uses_pic_offset_table = 1;
-+      use_reg (&use, pic_offset_table_rtx);
-+    }
-+
-+  if (TARGET_64BIT && INTVAL (callarg2) >= 0)
-+    {
-+      rtx al = gen_rtx_REG (QImode, 0);
-+      emit_move_insn (al, callarg2);
-+      use_reg (&use, al);
-+    }
-+
-+  if (! call_insn_operand (XEXP (fnaddr, 0), Pmode))
-+    {
-+      fnaddr = copy_to_mode_reg (Pmode, XEXP (fnaddr, 0));
-+      fnaddr = gen_rtx_MEM (QImode, fnaddr);
-+    }
-+
-+  call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1);
-+  if (retval)
-+    call = gen_rtx_SET (VOIDmode, retval, call);
-+  if (pop)
-+    {
-+      pop = gen_rtx_PLUS (Pmode, stack_pointer_rtx, pop);
-+      pop = gen_rtx_SET (VOIDmode, stack_pointer_rtx, pop);
-+      call = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, call, pop));
-+    }
-+
-+  call = emit_call_insn (call);
-+  if (use)
-+    CALL_INSN_FUNCTION_USAGE (call) = use;
-+}
-+  
\f
- /* Clear stack slot assignments remembered from previous functions.
-    This is called from INIT_EXPANDERS once before RTL is emitted for each
-@@ -9849,6 +10504,24 @@ assign_386_stack_local (mode, n)
-   return ix86_stack_locals[(int) mode][n];
- }
-+
-+/* Construct the SYMBOL_REF for the tls_get_addr function.  */
-+
-+rtx
-+ix86_tls_get_addr ()
-+{
-+  static rtx symbol;
-+
-+  if (!symbol)
-+    {
-+      symbol = gen_rtx_SYMBOL_REF (Pmode, (TARGET_GNU_TLS
-+                                         ? "___tls_get_addr"
-+                                         : "__tls_get_addr"));
-+      ggc_add_rtx_root (&symbol, 1);
-+    }
-+
-+  return symbol;
-+}
\f
- /* Calculate the length of the memory address in the instruction
-    encoding.  Does not include the one-byte modrm, opcode, or prefix.  */
---- gcc/config/i386/i386-protos.h.jj   Wed Jun 19 15:18:02 2002
-+++ gcc/config/i386/i386-protos.h      Wed Jun 19 19:33:52 2002
-@@ -28,7 +28,6 @@ extern int ix86_frame_pointer_required P
- extern void ix86_setup_frame_addresses PARAMS ((void));
- extern void ix86_asm_file_end PARAMS ((FILE *));
--extern void load_pic_register PARAMS ((void));
- extern HOST_WIDE_INT ix86_initial_elimination_offset PARAMS((int, int));
- extern void ix86_expand_prologue PARAMS ((void));
- extern void ix86_expand_epilogue PARAMS ((int));
-@@ -36,6 +35,9 @@ extern void ix86_expand_epilogue PARAMS 
- extern void ix86_output_addr_vec_elt PARAMS ((FILE *, int));
- extern void ix86_output_addr_diff_elt PARAMS ((FILE *, int, int));
-+extern void ix86_encode_section_info PARAMS ((tree));
-+extern const char *ix86_strip_name_encoding PARAMS ((const char *));
-+
- #ifdef RTX_CODE
- extern int ix86_aligned_p PARAMS ((rtx));
-@@ -51,6 +53,11 @@ extern int x86_64_immediate_operand PARA
- extern int x86_64_zext_immediate_operand PARAMS ((rtx, enum machine_mode));
- extern int const_int_1_operand PARAMS ((rtx, enum machine_mode));
- extern int symbolic_operand PARAMS ((rtx, enum machine_mode));
-+extern int tls_symbolic_operand PARAMS ((rtx, enum machine_mode));
-+extern int global_dynamic_symbolic_operand PARAMS ((rtx, enum machine_mode));
-+extern int local_dynamic_symbolic_operand PARAMS ((rtx, enum machine_mode));
-+extern int initial_exec_symbolic_operand PARAMS ((rtx, enum machine_mode));
-+extern int local_exec_symbolic_operand PARAMS ((rtx, enum machine_mode));
- extern int pic_symbolic_operand PARAMS ((rtx, enum machine_mode));
- extern int call_insn_operand PARAMS ((rtx, enum machine_mode));
- extern int constant_call_address_operand PARAMS ((rtx, enum machine_mode));
-@@ -84,6 +91,9 @@ extern int ix86_expand_movstr PARAMS ((r
- extern int ix86_expand_clrstr PARAMS ((rtx, rtx, rtx));
- extern int ix86_expand_strlen PARAMS ((rtx, rtx, rtx, rtx));
-+extern bool legitimate_constant_p PARAMS ((rtx));
-+extern bool constant_address_p PARAMS ((rtx));
-+extern bool legitimate_pic_operand_p PARAMS ((rtx));
- extern int legitimate_pic_address_disp_p PARAMS ((rtx));
- extern int legitimate_address_p PARAMS ((enum machine_mode, rtx, int));
- extern rtx legitimize_pic_address PARAMS ((rtx, rtx));
-@@ -92,10 +102,12 @@ extern rtx legitimize_address PARAMS ((r
- extern void print_reg PARAMS ((rtx, int, FILE*));
- extern void print_operand PARAMS ((FILE*, rtx, int));
- extern void print_operand_address PARAMS ((FILE*, rtx));
-+extern bool output_addr_const_extra PARAMS ((FILE*, rtx));
- extern void split_di PARAMS ((rtx[], int, rtx[], rtx[]));
- extern void split_ti PARAMS ((rtx[], int, rtx[], rtx[]));
-+extern const char *output_set_got PARAMS ((rtx));
- extern const char *output_387_binary_op PARAMS ((rtx, rtx*));
- extern const char *output_fix_trunc PARAMS ((rtx, rtx*));
- extern const char *output_fp_compare PARAMS ((rtx, rtx*, int, int));
-@@ -121,6 +133,7 @@ extern void ix86_expand_branch PARAMS ((
- extern int ix86_expand_setcc PARAMS ((enum rtx_code, rtx));
- extern int ix86_expand_int_movcc PARAMS ((rtx[]));
- extern int ix86_expand_fp_movcc PARAMS ((rtx[]));
-+extern void ix86_expand_call PARAMS ((rtx, rtx, rtx, rtx, rtx));
- extern void x86_initialize_trampoline PARAMS ((rtx, rtx, rtx));
- extern rtx ix86_zero_extend_to_Pmode PARAMS ((rtx));
- extern void ix86_split_long_move PARAMS ((rtx[]));
-@@ -181,6 +194,8 @@ extern rtx ix86_expand_builtin PARAMS ((
- #endif
-+extern rtx ix86_tls_get_addr PARAMS ((void));
-+
- #ifdef TREE_CODE
- extern int ix86_return_pops_args PARAMS ((tree, tree, int));
- extern tree ix86_build_va_list PARAMS ((void));
---- gcc/config/i386/i386.h.jj  Wed Jun 19 19:33:51 2002
-+++ gcc/config/i386/i386.h     Wed Jun 19 20:20:56 2002
-@@ -282,6 +282,9 @@ extern int x86_prefetch_sse;
- #define TARGET_RED_ZONE (!(target_flags & MASK_NO_RED_ZONE))
-+#define TARGET_GNU_TLS (ix86_tls_dialect == TLS_DIALECT_GNU)
-+#define TARGET_SUN_TLS (ix86_tls_dialect == TLS_DIALECT_SUN)
-+
- /* WARNING: Do not mark empty strings for translation, as calling
-             gettext on an empty string does NOT return an empty
-             string. */
-@@ -451,6 +454,8 @@ extern int ix86_arch;
-     "" /* Undocumented. */ },                                 \
-   { "asm=", &ix86_asm_string,                                 \
-     N_("Use given assembler dialect") },                      \
-+  { "tls-dialect=", &ix86_tls_dialect_string,                 \
-+    N_("Use given thread-local storage dialect") },           \
-   SUBTARGET_OPTIONS                                           \
- }
-@@ -1934,15 +1939,12 @@ do {                                                                   \
- #define MAX_REGS_PER_ADDRESS 2
--#define CONSTANT_ADDRESS_P(X)                                 \
--  (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF    \
--   || GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST      \
--   || GET_CODE (X) == CONST_DOUBLE)
-+#define CONSTANT_ADDRESS_P(X)  constant_address_p (X)
- /* Nonzero if the constant value X is a legitimate general operand.
-    It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE.  */
--#define LEGITIMATE_CONSTANT_P(X) 1
-+#define LEGITIMATE_CONSTANT_P(X)  legitimate_constant_p (X)
- #ifdef REG_OK_STRICT
- #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)                               \
-@@ -2005,9 +2007,7 @@ do {                                                                     \
-    when generating PIC code.  It is given that flag_pic is on and 
-    that X satisfies CONSTANT_P or is a CONST_DOUBLE.  */
--#define LEGITIMATE_PIC_OPERAND_P(X)           \
--  (! SYMBOLIC_CONST (X)                               \
--   || legitimate_pic_address_disp_p (X))
-+#define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X)
- #define SYMBOLIC_CONST(X)     \
-   (GET_CODE (X) == SYMBOL_REF                                         \
-@@ -2251,33 +2251,23 @@ enum ix86_builtins
-    On i386, if using PIC, mark a SYMBOL_REF for a non-global symbol
-    so that we may access it directly in the GOT.  */
--#define ENCODE_SECTION_INFO(DECL)                             \
--do {                                                          \
--    if (flag_pic)                                             \
--      {                                                               \
--      rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'    \
--                 ? TREE_CST_RTL (DECL) : DECL_RTL (DECL));    \
--                                                              \
--      if (GET_CODE (rtl) == MEM)                              \
--        {                                                     \
--          if (TARGET_DEBUG_ADDR                               \
--              && TREE_CODE_CLASS (TREE_CODE (DECL)) == 'd')   \
--            {                                                 \
--              fprintf (stderr, "Encode %s, public = %d\n",    \
--                       IDENTIFIER_POINTER (DECL_NAME (DECL)), \
--                       TREE_PUBLIC (DECL));                   \
--            }                                                 \
--                                                              \
--          SYMBOL_REF_FLAG (XEXP (rtl, 0))                     \
--            = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'      \
--               || ! TREE_PUBLIC (DECL)                        \
--               || MODULE_LOCAL_P (DECL));                     \
--        }                                                     \
--      }                                                               \
--} while (0)
--
-+#define ENCODE_SECTION_INFO(DECL)  ix86_encode_section_info(DECL)
- #define REDO_SECTION_INFO_P(DECL) 1
-+#define STRIP_NAME_ENCODING(VAR,STR)  ((VAR) = ix86_strip_name_encoding (STR))
-+
-+#define ASM_OUTPUT_LABELREF(FILE,NAME)                \
-+  do {                                                \
-+    const char *xname = (NAME);                       \
-+    if (xname[0] == '%')                      \
-+      xname += 2;                             \
-+    if (xname[0] == '*')                      \
-+      xname += 1;                             \
-+    else                                      \
-+      fputs (user_label_prefix, FILE);                \
-+    fputs (xname, FILE);                      \
-+  } while (0)
-+
- /* The `FINALIZE_PIC' macro serves as a hook to emit these special
-    codes once the function is being compiled into assembly code, but
-    not before.  (It is not done before, because in the case of
-@@ -2923,7 +2913,7 @@ extern int const svr4_dbx_register_map[F
-    print_operand function.  */
- #define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
--  ((CODE) == '*' || (CODE) == '+')
-+  ((CODE) == '*' || (CODE) == '+' || (CODE) == '&')
- /* Print the name of a register based on its machine mode and number.
-    If CODE is 'w', pretend the mode is HImode.
-@@ -2942,6 +2932,12 @@ extern int const svr4_dbx_register_map[F
- #define PRINT_OPERAND_ADDRESS(FILE, ADDR)  \
-   print_operand_address ((FILE), (ADDR))
-+#define OUTPUT_ADDR_CONST_EXTRA(FILE, X, FAIL)        \
-+do {                                          \
-+  if (! output_addr_const_extra (FILE, (X)))  \
-+    goto FAIL;                                        \
-+} while (0);
-+
- /* Print the name of a register for based on its machine mode and number.
-    This macro is used to print debugging output.
-    This macro is different from PRINT_REG in that it may be used in
-@@ -3071,7 +3067,12 @@ extern int const svr4_dbx_register_map[F
-   {"memory_displacement_operand", {MEM}},                             \
-   {"cmpsi_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF,      \
-                    LABEL_REF, SUBREG, REG, MEM, AND}},                \
--  {"long_memory_operand", {MEM}},
-+  {"long_memory_operand", {MEM}},                                     \
-+  {"tls_symbolic_operand", {SYMBOL_REF}},                             \
-+  {"global_dynamic_symbolic_operand", {SYMBOL_REF}},                  \
-+  {"local_dynamic_symbolic_operand", {SYMBOL_REF}},                   \
-+  {"initial_exec_symbolic_operand", {SYMBOL_REF}},                    \
-+  {"local_exec_symbolic_operand", {SYMBOL_REF}},
- /* A list of predicates that do special things with modes, and so
-    should not elicit warnings for VOIDmode match_operand.  */
-@@ -3112,6 +3113,16 @@ enum asm_dialect {
- };
- extern const char *ix86_asm_string;
- extern enum asm_dialect ix86_asm_dialect;
-+
-+enum tls_dialect
-+{
-+  TLS_DIALECT_GNU,
-+  TLS_DIALECT_SUN
-+};
-+
-+extern enum tls_dialect ix86_tls_dialect;
-+extern const char *ix86_tls_dialect_string;
-+  
- /* Value of -mcmodel specified by user.  */
- extern const char *ix86_cmodel_string;
- extern enum cmodel ix86_cmodel;
---- gcc/config/i386/i386.md.jj Tue Jun  4 20:28:36 2002
-+++ gcc/config/i386/i386.md    Wed Jun 19 19:33:52 2002
-@@ -49,55 +49,59 @@
- ;; 'k' Likewise, print the SImode name of the register.
- ;; 'h' Print the QImode name for a "high" register, either ah, bh, ch or dh.
- ;; 'y' Print "st(0)" instead of "st" as a register.
--;;
-+
- ;; UNSPEC usage:
--;; 0  This is a `scas' operation.  The mode of the UNSPEC is always SImode.
--;;    operand 0 is the memory address to scan.
--;;    operand 1 is a register containing the value to scan for.  The mode
--;;       of the scas opcode will be the same as the mode of this operand.
--;;    operand 2 is the known alignment of operand 0.
--;; 1  This is a `sin' operation.  The mode of the UNSPEC is MODE_FLOAT.
--;;    operand 0 is the argument for `sin'.
--;; 2  This is a `cos' operation.  The mode of the UNSPEC is MODE_FLOAT.
--;;    operand 0 is the argument for `cos'.
--;; 3  This is part of a `stack probe' operation.  The mode of the UNSPEC is 
--;;    always SImode.  operand 0 is the size of the stack allocation.
--;; 4  This is the source of a fake SET of the frame pointer which is used to
--;;    prevent insns referencing it being scheduled across the initial
--;;    decrement of the stack pointer.
--;; 5  This is a `bsf' operation.
--;; 6  This is the @GOT offset of a PIC address.
--;; 7  This is the @GOTOFF offset of a PIC address.
--;; 8  This is a reference to a symbol's @PLT address.
--;; 9  This is an `fnstsw' operation.
--;; 10 This is a `sahf' operation.
--;; 11 This is a `fstcw' operation
--;; 12 This is behaviour of add when setting carry flag.
--;; 13 This is a `eh_return' placeholder.
--
--;; For SSE/MMX support:
--;; 30 This is `fix', guaranteed to be truncating.
--;; 31 This is a `emms' operation.
--;; 32 This is a `maskmov' operation.
--;; 33 This is a `movmsk' operation.
--;; 34 This is a `non-temporal' move.
--;; 36 This is used to distinguish COMISS from UCOMISS.
--;; 37 This is a `ldmxcsr' operation.
--;; 38 This is a forced `movaps' instruction (rather than whatever movti does)
--;; 39 This is a forced `movups' instruction (rather than whatever movti does)
--;; 40 This is a `stmxcsr' operation.
--;; 41 This is a `shuffle' operation.
--;; 42 This is a `rcp' operation.
--;; 43 This is a `rsqsrt' operation.
--;; 44 This is a `sfence' operation.
--;; 45 This is a noop to prevent excessive combiner cleverness.
--;; 46 This is a `femms' operation.
--;; 49 This is a 'pavgusb' operation.
--;; 50 This is a `pfrcp' operation.
--;; 51 This is a `pfrcpit1' operation.
--;; 52 This is a `pfrcpit2' operation.
--;; 53 This is a `pfrsqrt' operation.
--;; 54 This is a `pfrsqrit1' operation.
-+;; ??? Note that the 3.1 branch, unlike mainline, has not had all
-+;; of the uses of UNSPEC replaced with their symbolic constants.
-+;; Thus you cannot change these arbitrarily without pain.
-+
-+(define_constants
-+  [(UNSPEC_SCAS                       0)
-+   (UNSPEC_SIN                        1)
-+   (UNSPEC_COS                        2)
-+   (UNSPEC_STACK_PROBE                3)
-+   (UNSPEC_STACK_ALLOC                4)
-+   (UNSPEC_BSF                        5)
-+   (UNSPEC_GOT                        6)
-+   (UNSPEC_GOTOFF             7)
-+   (UNSPEC_PLT                        8)
-+   (UNSPEC_FNSTSW             9)
-+   (UNSPEC_SAHF                       10)
-+   (UNSPEC_FSTCW              11)
-+   (UNSPEC_FLDCW              12)
-+   (UNSPEC_ADD_CARRY          12)
-+   (UNSPEC_EH_RETURN          13)
-+   (UNSPEC_GOTPCREL           15)
-+   (UNSPEC_SET_GOT            16)
-+
-+   ; For TLS support:
-+   (UNSPEC_GOTTPOFF             20)
-+   (UNSPEC_TPOFF                21)
-+   (UNSPEC_NTPOFF               22)
-+   (UNSPEC_DTPOFF               23)
-+   (UNSPEC_TP                   24)
-+   (UNSPEC_TLS_GD               25)
-+   (UNSPEC_TLS_LD_BASE          26)
-+
-+   ; For SSE/MMX support:
-+   (UNSPEC_FIX                  30)
-+   (UNSPEC_MASKMOV              32)
-+   (UNSPEC_MOVMSK               33)
-+   (UNSPEC_MOVNT                34)
-+   (UNSPEC_MOVA                 38)
-+   (UNSPEC_MOVU                 39)
-+   (UNSPEC_SHUFFLE              41)
-+   (UNSPEC_RCP                  42)
-+   (UNSPEC_RSQRT                43)
-+   (UNSPEC_SFENCE               44)
-+   (UNSPEC_NOP                  45)     ; prevents combiner cleverness
-+   (UNSPEC_PAVGUSB              49)
-+   (UNSPEC_PFRCP                50)
-+   (UNSPEC_PFRCPIT1             51)
-+   (UNSPEC_PFRCPIT2             52)
-+   (UNSPEC_PFRSQRT              53)
-+   (UNSPEC_PFRSQIT1             54)
-+  ])
- ;; Insns whose names begin with "x86_" are emitted by gen_FOO calls
- ;; from i386.c.
-@@ -1759,7 +1763,7 @@
-       return "lea{l}\t{%1, %0|%0, %1}";
-     default:
--      if (flag_pic && SYMBOLIC_CONST (operands[1]))
-+      if (flag_pic && !LEGITIMATE_PIC_OPERAND_P (operands[1]))
-       abort();
-       return "mov{l}\t{%1, %0|%0, %1}";
-     }
-@@ -2525,7 +2529,7 @@
-     case TYPE_LEA:
-       return "lea{q}\t{%a1, %0|%0, %a1}";
-     default:
--      if (flag_pic && SYMBOLIC_CONST (operands[1]))
-+      if (flag_pic && !LEGITIMATE_PIC_OPERAND_P (operands[1]))
-       abort ();
-       if (get_attr_mode (insn) == MODE_SI)
-       return "mov{l}\t{%k1, %k0|%k0, %k1}";
-@@ -13474,21 +13478,8 @@
-                           (match_operand:SI 3 "" "")))])]
-   "!TARGET_64BIT"
- {
--  if (operands[3] == const0_rtx)
--    {
--      emit_insn (gen_call (operands[0], operands[1], constm1_rtx));
--      DONE;
--    }
--  /* Static functions and indirect calls don't need
--     current_function_uses_pic_offset_table.  */
--  if (flag_pic
--      && GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
--      && ! SYMBOL_REF_FLAG (XEXP (operands[0], 0)))
--    current_function_uses_pic_offset_table = 1;
--  if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
--    XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
--  if (TARGET_64BIT)
--    abort();
-+  ix86_expand_call (NULL, operands[0], operands[1], operands[2], operands[3]);
-+  DONE;
- })
- (define_insn "*call_pop_0"
-@@ -13530,37 +13521,12 @@
-   [(call (match_operand:QI 0 "" "")
-        (match_operand 1 "" ""))
-    (use (match_operand 2 "" ""))]
--  ;; Operand 1 not used on the i386.
-   ""
- {
--  rtx insn;
--  /* Static functions and indirect calls don't need
--     current_function_uses_pic_offset_table.  */
--  if (flag_pic
--      && GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
--      && ! SYMBOL_REF_FLAG (XEXP (operands[0], 0)))
--    current_function_uses_pic_offset_table = 1;
--
--  if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
--    XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
--  if (TARGET_64BIT && INTVAL (operands[2]) >= 0)
--    {
--      rtx reg = gen_rtx_REG (QImode, 0);
--      emit_move_insn (reg, operands[2]);
--      insn = emit_call_insn (gen_call_exp (operands[0], operands[1]));
--      use_reg (&CALL_INSN_FUNCTION_USAGE (insn), reg);
--      DONE;
--    }
--   insn = emit_call_insn (gen_call_exp (operands[0], operands[1]));
--   DONE;
-+  ix86_expand_call (NULL, operands[0], operands[1], operands[2], NULL);
-+  DONE;
- })
--(define_expand "call_exp"
--  [(call (match_operand:QI 0 "" "")
--       (match_operand 1 "" ""))]
--  ""
--  "")
--
- (define_insn "*call_0"
-   [(call (mem:QI (match_operand 0 "constant_call_address_operand" ""))
-        (match_operand 1 "" ""))]
-@@ -13612,7 +13578,6 @@
-   [(set_attr "type" "call")])
- ;; Call subroutine, returning value in operand 0
--;; (which must be a hard register).
- (define_expand "call_value_pop"
-   [(parallel [(set (match_operand 0 "" "")
-@@ -13623,20 +13588,9 @@
-                           (match_operand:SI 4 "" "")))])]
-   "!TARGET_64BIT"
- {
--  if (operands[4] == const0_rtx)
--    {
--      emit_insn (gen_call_value (operands[0], operands[1], operands[2],
--                               constm1_rtx));
--      DONE;
--    }
--  /* Static functions and indirect calls don't need
--     current_function_uses_pic_offset_table.  */
--  if (flag_pic
--      && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
--      && ! SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
--    current_function_uses_pic_offset_table = 1;
--  if (! call_insn_operand (XEXP (operands[1], 0), Pmode))
--    XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
-+  ix86_expand_call (operands[0], operands[1], operands[2],
-+                  operands[3], operands[4]);
-+  DONE;
- })
- (define_expand "call_value"
-@@ -13647,36 +13601,10 @@
-   ;; Operand 2 not used on the i386.
-   ""
- {
--  rtx insn;
--  /* Static functions and indirect calls don't need
--     current_function_uses_pic_offset_table.  */
--  if (flag_pic
--      && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
--      && ! SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
--    current_function_uses_pic_offset_table = 1;
--  if (! call_insn_operand (XEXP (operands[1], 0), Pmode))
--    XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
--  if (TARGET_64BIT && INTVAL (operands[3]) >= 0)
--    {
--      rtx reg = gen_rtx_REG (QImode, 0);
--      emit_move_insn (reg, operands[3]);
--      insn = emit_call_insn (gen_call_value_exp (operands[0], operands[1],
--                                               operands[2]));
--      use_reg (&CALL_INSN_FUNCTION_USAGE (insn), reg);
--      DONE;
--    }
--  insn = emit_call_insn (gen_call_value_exp (operands[0], operands[1],
--                                           operands[2]));
-+  ix86_expand_call (operands[0], operands[1], operands[2], operands[3], NULL);
-   DONE;
- })
--(define_expand "call_value_exp"
--  [(set (match_operand 0 "" "")
--      (call (match_operand:QI 1 "" "")
--            (match_operand:SI 2 "" "")))]
--  ""
--  "")
--
- ;; Call subroutine returning any type.
- (define_expand "untyped_call"
-@@ -13693,12 +13621,10 @@
-      simply pretend the untyped call returns a complex long double
-      value.  */
--  emit_call_insn (TARGET_FLOAT_RETURNS_IN_80387
--                  ? gen_call_value (gen_rtx_REG (XCmode, FIRST_FLOAT_REG),
--                                  operands[0], const0_rtx,
--                                  GEN_INT (SSE_REGPARM_MAX - 1))
--                  : gen_call (operands[0], const0_rtx,
--                            GEN_INT (SSE_REGPARM_MAX - 1)));
-+  ix86_expand_call ((TARGET_FLOAT_RETURNS_IN_80387
-+                   ? gen_rtx_REG (XCmode, FIRST_FLOAT_REG) : NULL),
-+                  operands[0], const0_rtx, GEN_INT (SSE_REGPARM_MAX - 1),
-+                  NULL);
-   for (i = 0; i < XVECLEN (operands[2], 0); i++)
-     {
-@@ -13781,45 +13707,39 @@
-   ""
-   "ix86_expand_prologue (); DONE;")
--(define_insn "prologue_set_got"
-+(define_expand "set_got"
-+  [(parallel [(set (match_operand:SI 0 "register_operand" "")
-+                 (unspec:SI [(const_int 0)] UNSPEC_SET_GOT))
-+            (clobber (reg:CC 17))])]
-+  "!TARGET_64BIT"
-+  "")
-+
-+(define_insn "*set_got_nopic"
-   [(set (match_operand:SI 0 "register_operand" "=r")
--      (unspec_volatile:SI
--       [(plus:SI (match_dup 0)
--                 (plus:SI (match_operand:SI 1 "symbolic_operand" "")
--                          (minus:SI (pc) (match_operand 2 "" ""))))] 1))
-+      (unspec:SI [(const_int 0)] UNSPEC_SET_GOT))
-    (clobber (reg:CC 17))]
--  "!TARGET_64BIT"
--{
--  if (GET_CODE (operands[2]) == LABEL_REF)
--     operands[2] = XEXP (operands[2], 0);
--  if (TARGET_DEEP_BRANCH_PREDICTION) 
--    return "add{l}\t{%1, %0|%0, %1}";
--  else  
--    return "add{l}\t{%1+[.-%X2], %0|%0, %a1+(.-%X2)}";
--}
--  [(set_attr "type" "alu")
--   ; Since this insn may have two constant operands, we must set the
--   ; length manually.
--   (set_attr "length_immediate" "4")
--   (set_attr "mode" "SI")])
-+  "!TARGET_64BIT && !flag_pic"
-+  { return output_set_got (operands[0]); }
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "11")])
-+  
-+(define_insn "*set_got_deep"
-+  [(set (match_operand:SI 0 "register_operand" "=b")
-+      (unspec:SI [(const_int 0)] UNSPEC_SET_GOT))
-+   (clobber (reg:CC 17))]
-+  "!TARGET_64BIT && TARGET_DEEP_BRANCH_PREDICTION"
-+  { return output_set_got (operands[0]); }
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "11")])
--(define_insn "prologue_get_pc"
-+(define_insn "*set_got_nodeep"
-   [(set (match_operand:SI 0 "register_operand" "=r")
--    (unspec_volatile:SI [(plus:SI (pc) (match_operand 1 "" ""))] 2))]
-+      (unspec:SI [(const_int 0)] UNSPEC_SET_GOT))
-+   (clobber (reg:CC 17))]
-   "!TARGET_64BIT"
--{
--  if (GET_CODE (operands[1]) == LABEL_REF)
--    operands[1] = XEXP (operands[1], 0);
--  output_asm_insn ("call\t%X1", operands);
--  if (! TARGET_DEEP_BRANCH_PREDICTION)
--    {
--      ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
--                               CODE_LABEL_NUMBER (operands[1]));
--      return "pop{l}\t%0";
--    }
--  RET;
--}
--  [(set_attr "type" "multi")])
-+  { return output_set_got (operands[0]); }
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "12")])
- (define_expand "epilogue"
-   [(const_int 1)]
-@@ -13996,6 +13916,127 @@
- ;; ffshi2 is not useful -- 4 word prefix ops are needed, which is larger
- ;; and slower than the two-byte movzx insn needed to do the work in SImode.
\f
-+;; Thread-local storage patterns for ELF.
-+;;
-+;; Note that these code sequences must appear exactly as shown
-+;; in order to allow linker relaxation.
-+
-+(define_insn "*tls_global_dynamic_gnu"
-+  [(set (match_operand:SI 0 "register_operand" "=a")
-+      (unspec:SI [(match_operand:SI 1 "register_operand" "b")
-+                  (match_operand:SI 2 "tls_symbolic_operand" "")
-+                  (match_operand:SI 3 "call_insn_operand" "")]
-+                  UNSPEC_TLS_GD))
-+   (clobber (match_scratch:SI 4 "=d"))
-+   (clobber (match_scratch:SI 5 "=c"))
-+   (clobber (reg:CC 17))]
-+  "TARGET_GNU_TLS"
-+  "lea{l}\t{%a2@TLSGD(,%1,1), %0|%0, %a2@TLSGD[%1*1]}\;call\t%P3"
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "12")])
-+
-+(define_insn "*tls_global_dynamic_sun"
-+  [(set (match_operand:SI 0 "register_operand" "=a")
-+      (unspec:SI [(match_operand:SI 1 "register_operand" "b")
-+                  (match_operand:SI 2 "tls_symbolic_operand" "")
-+                  (match_operand:SI 3 "call_insn_operand" "")]
-+                  UNSPEC_TLS_GD))
-+   (clobber (match_scratch:SI 4 "=d"))
-+   (clobber (match_scratch:SI 5 "=c"))
-+   (clobber (reg:CC 17))]
-+  "TARGET_SUN_TLS"
-+  "lea{l}\t{%a2@DTLNDX(%1), %4|%4, %a2@DTLNDX[%1]}
-+      push{l}\t%4\;call\t%a2@TLSPLT\;pop{l}\t%4\;nop"
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "14")])
-+
-+(define_expand "tls_global_dynamic"
-+  [(parallel [(set (match_operand:SI 0 "register_operand" "")
-+                 (unspec:SI
-+                  [(match_dup 2)
-+                   (match_operand:SI 1 "tls_symbolic_operand" "")
-+                   (match_dup 3)]
-+                  UNSPEC_TLS_GD))
-+            (clobber (match_scratch:SI 4 ""))
-+            (clobber (match_scratch:SI 5 ""))
-+            (clobber (reg:CC 17))])]
-+  ""
-+{
-+  if (!flag_pic)
-+    abort ();
-+  current_function_uses_pic_offset_table = 1;
-+  operands[2] = pic_offset_table_rtx;
-+  operands[3] = ix86_tls_get_addr ();
-+})
-+
-+(define_insn "*tls_local_dynamic_base_gnu"
-+  [(set (match_operand:SI 0 "register_operand" "=a")
-+      (unspec:SI [(match_operand:SI 1 "register_operand" "b")
-+                    (match_operand:SI 2 "call_insn_operand" "")]
-+                 UNSPEC_TLS_LD_BASE))
-+   (clobber (match_scratch:SI 3 "=d"))
-+   (clobber (match_scratch:SI 4 "=c"))
-+   (clobber (reg:CC 17))]
-+  "TARGET_GNU_TLS"
-+  "lea{l}\t{%&@TLSLDM(%1), %0|%0, %&@TLSLDM[%1]}\;call\t%P2"
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "11")])
-+
-+(define_insn "*tls_local_dynamic_base_sun"
-+  [(set (match_operand:SI 0 "register_operand" "=a")
-+      (unspec:SI [(match_operand:SI 1 "register_operand" "b")
-+                    (match_operand:SI 2 "call_insn_operand" "")]
-+                 UNSPEC_TLS_LD_BASE))
-+   (clobber (match_scratch:SI 3 "=d"))
-+   (clobber (match_scratch:SI 4 "=c"))
-+   (clobber (reg:CC 17))]
-+  "TARGET_SUN_TLS"
-+  "lea{l}\t{%&@TMDNX(%1), %3|%3, %&@TMDNX[%1]}
-+      push{l}\t%3\;call\t%&@TLSPLT\;pop{l}\t%3"
-+  [(set_attr "type" "multi")
-+   (set_attr "length" "13")])
-+
-+(define_expand "tls_local_dynamic_base"
-+  [(parallel [(set (match_operand:SI 0 "register_operand" "")
-+                 (unspec:SI [(match_dup 1) (match_dup 2)]
-+                            UNSPEC_TLS_LD_BASE))
-+            (clobber (match_scratch:SI 3 ""))
-+            (clobber (match_scratch:SI 4 ""))
-+            (clobber (reg:CC 17))])]
-+  ""
-+{
-+  if (!flag_pic)
-+    abort ();
-+  current_function_uses_pic_offset_table = 1;
-+  operands[1] = pic_offset_table_rtx;
-+  operands[2] = ix86_tls_get_addr ();
-+})
-+
-+;; Local dynamic of a single variable is a lose.  Show combine how
-+;; to convert that back to global dynamic.
-+
-+(define_insn_and_split "*tls_local_dynamic_once"
-+  [(set (match_operand:SI 0 "register_operand" "=a")
-+      (plus:SI (unspec:SI [(match_operand:SI 1 "register_operand" "b")
-+                           (match_operand:SI 2 "call_insn_operand" "")]
-+                          UNSPEC_TLS_LD_BASE)
-+               (const:SI (unspec:SI
-+                          [(match_operand:SI 3 "tls_symbolic_operand" "")]
-+                          UNSPEC_DTPOFF))))
-+   (clobber (match_scratch:SI 4 "=d"))
-+   (clobber (match_scratch:SI 5 "=c"))
-+   (clobber (reg:CC 17))]
-+  ""
-+  "#"
-+  ""
-+  [(parallel [(set (match_dup 0)
-+                 (unspec:SI [(match_dup 1) (match_dup 3) (match_dup 2)]
-+                            UNSPEC_TLS_GD))
-+            (clobber (match_dup 4))
-+            (clobber (match_dup 5))
-+            (clobber (reg:CC 17))])]
-+  "")
-+\f
- ;; These patterns match the binary 387 instructions for addM3, subM3,
- ;; mulM3 and divM3.  There are three patterns for each of DFmode and
- ;; SFmode.  The first is the normal insn, the second the same insn but
-@@ -16835,7 +16876,7 @@
-   [(label_ref (match_operand 0 "" ""))]
-   "!TARGET_64BIT && flag_pic"
- {
--  load_pic_register ();
-+  emit_insn (gen_set_got (pic_offset_table_rtx));
-   DONE;
- })
\f
---- gcc/config/ia64/ia64-protos.h.jj   Tue Apr 23 20:28:20 2002
-+++ gcc/config/ia64/ia64-protos.h      Wed Jun 19 19:33:52 2002
-@@ -31,6 +31,7 @@ extern int call_operand PARAMS((rtx, enu
- extern int sdata_symbolic_operand PARAMS((rtx, enum machine_mode));
- extern int got_symbolic_operand PARAMS((rtx, enum machine_mode));
- extern int symbolic_operand PARAMS((rtx, enum machine_mode));
-+extern int tls_symbolic_operand PARAMS((rtx, enum machine_mode));
- extern int function_operand PARAMS((rtx, enum machine_mode));
- extern int setjmp_operand PARAMS((rtx, enum machine_mode));
- extern int move_operand PARAMS((rtx, enum machine_mode));
-@@ -67,6 +68,7 @@ extern int general_tfmode_operand PARAMS
- extern int destination_tfmode_operand PARAMS((rtx, enum machine_mode));
- extern int tfreg_or_fp01_operand PARAMS((rtx, enum machine_mode));
-+extern rtx ia64_expand_move PARAMS ((rtx, rtx));
- extern int ia64_move_ok PARAMS((rtx, rtx));
- extern int ia64_depz_field_mask PARAMS((rtx, rtx));
- extern rtx ia64_gp_save_reg PARAMS((int));
---- gcc/config/ia64/ia64.c.jj  Wed Jun 19 22:36:54 2002
-+++ gcc/config/ia64/ia64.c     Wed Jun 19 22:46:07 2002
-@@ -95,6 +95,13 @@ static const char * const ia64_output_re
- /* String used with the -mfixed-range= option.  */
- const char *ia64_fixed_range_string;
-+/* Determines whether we use adds, addl, or movl to generate our
-+   TLS immediate offsets.  */
-+int ia64_tls_size = 22;
-+
-+/* String used with the -mtls-size= option.  */
-+const char *ia64_tls_size_string;
-+
- /* Determines whether we run our final scheduling pass or not.  We always
-    avoid the normal second scheduling pass.  */
- static int ia64_flag_schedule_insns2;
-@@ -104,6 +111,8 @@ static int ia64_flag_schedule_insns2;
- unsigned int ia64_section_threshold;
\f
-+static rtx gen_tls_get_addr PARAMS ((void));
-+static rtx gen_thread_pointer PARAMS ((void));
- static int find_gr_spill PARAMS ((int));
- static int next_scratch_gr_reg PARAMS ((void));
- static void mark_reg_gr_used_mask PARAMS ((rtx, void *));
-@@ -214,6 +223,11 @@ static const struct attribute_spec ia64_
- #undef TARGET_SCHED_CYCLE_DISPLAY
- #define TARGET_SCHED_CYCLE_DISPLAY ia64_cycle_display
-+#ifdef HAVE_AS_TLS
-+#undef TARGET_HAVE_TLS
-+#define TARGET_HAVE_TLS true
-+#endif
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
\f
- /* Return 1 if OP is a valid operand for the MEM of a CALL insn.  */
-@@ -250,7 +264,10 @@ sdata_symbolic_operand (op, mode)
-       if (CONSTANT_POOL_ADDRESS_P (op))
-       return GET_MODE_SIZE (get_pool_mode (op)) <= ia64_section_threshold;
-       else
--        return XSTR (op, 0)[0] == SDATA_NAME_FLAG_CHAR;
-+      {
-+        const char *str = XSTR (op, 0);
-+          return (str[0] == ENCODE_SECTION_INFO_CHAR && str[1] == 's');
-+      }
-     default:
-       break;
-@@ -324,6 +341,35 @@ symbolic_operand (op, mode)
-   return 0;
- }
-+/* Return tls_model if OP refers to a TLS symbol.  */
-+
-+int
-+tls_symbolic_operand (op, mode)
-+     rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  const char *str;
-+
-+  if (GET_CODE (op) != SYMBOL_REF)
-+    return 0;
-+  str = XSTR (op, 0);
-+  if (str[0] != ENCODE_SECTION_INFO_CHAR)
-+    return 0;
-+  switch (str[1])
-+    {
-+    case 'G':
-+      return TLS_MODEL_GLOBAL_DYNAMIC;
-+    case 'L':
-+      return TLS_MODEL_LOCAL_DYNAMIC;
-+    case 'i':
-+      return TLS_MODEL_INITIAL_EXEC;
-+    case 'l':
-+      return TLS_MODEL_LOCAL_EXEC;
-+    }
-+  return 0;
-+}
-+
-+
- /* Return 1 if OP refers to a function.  */
- int
-@@ -922,6 +968,9 @@ ia64_expand_load_address (dest, src, scr
-   else
-     temp = dest;
-+  if (tls_symbolic_operand (src, Pmode))
-+    abort ();
-+
-   if (TARGET_AUTO_PIC)
-     emit_insn (gen_load_gprel64 (temp, src));
-   else if (GET_CODE (src) == SYMBOL_REF && SYMBOL_REF_FLAG (src))
-@@ -964,6 +1013,185 @@ ia64_expand_load_address (dest, src, scr
-     emit_move_insn (dest, temp);
- }
-+static rtx
-+gen_tls_get_addr ()
-+{
-+  static rtx tga;
-+  if (!tga)
-+    {
-+      tga = init_one_libfunc ("__tls_get_addr");
-+      ggc_add_rtx_root (&tga, 1);
-+    }
-+  return tga;
-+}
-+
-+static rtx
-+gen_thread_pointer ()
-+{
-+  static rtx tp;
-+  if (!tp)
-+    {
-+      tp = gen_rtx_REG (Pmode, 13);
-+      RTX_UNCHANGING_P (tp) = 1;
-+      ggc_add_rtx_root (&tp, 1);
-+    }
-+  return tp;
-+}
-+
-+rtx
-+ia64_expand_move (op0, op1)
-+     rtx op0, op1;
-+{
-+  enum machine_mode mode = GET_MODE (op0);
-+
-+  if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
-+    op1 = force_reg (mode, op1);
-+
-+  if (mode == Pmode)
-+    {
-+      enum tls_model tls_kind;
-+      if ((tls_kind = tls_symbolic_operand (op1, Pmode)))
-+      {
-+        rtx tga_op1, tga_op2, tga_ret, tga_eqv, tmp, insns;
-+
-+        switch (tls_kind)
-+          {
-+          case TLS_MODEL_GLOBAL_DYNAMIC:
-+            start_sequence ();
-+
-+            tga_op1 = gen_reg_rtx (Pmode);
-+            emit_insn (gen_load_ltoff_dtpmod (tga_op1, op1));
-+            tga_op1 = gen_rtx_MEM (Pmode, tga_op1);
-+            RTX_UNCHANGING_P (tga_op1) = 1;
-+
-+            tga_op2 = gen_reg_rtx (Pmode);
-+            emit_insn (gen_load_ltoff_dtprel (tga_op2, op1));
-+            tga_op2 = gen_rtx_MEM (Pmode, tga_op2);
-+            RTX_UNCHANGING_P (tga_op2) = 1;
-+            
-+            tga_ret = emit_library_call_value (gen_tls_get_addr (), NULL_RTX,
-+                                               LCT_CONST, Pmode, 2, tga_op1,
-+                                               Pmode, tga_op2, Pmode);
-+
-+            insns = get_insns ();
-+            end_sequence ();
-+
-+            emit_libcall_block (insns, op0, tga_ret, op1);
-+            return NULL_RTX;
-+
-+          case TLS_MODEL_LOCAL_DYNAMIC:
-+            /* ??? This isn't the completely proper way to do local-dynamic
-+               If the call to __tls_get_addr is used only by a single symbol,
-+               then we should (somehow) move the dtprel to the second arg
-+               to avoid the extra add.  */
-+            start_sequence ();
-+
-+            tga_op1 = gen_reg_rtx (Pmode);
-+            emit_insn (gen_load_ltoff_dtpmod (tga_op1, op1));
-+            tga_op1 = gen_rtx_MEM (Pmode, tga_op1);
-+            RTX_UNCHANGING_P (tga_op1) = 1;
-+
-+            tga_op2 = const0_rtx;
-+
-+            tga_ret = emit_library_call_value (gen_tls_get_addr (), NULL_RTX,
-+                                               LCT_CONST, Pmode, 2, tga_op1,
-+                                               Pmode, tga_op2, Pmode);
-+
-+            insns = get_insns ();
-+            end_sequence ();
-+
-+            tga_eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
-+                                      UNSPEC_LD_BASE);
-+            tmp = gen_reg_rtx (Pmode);
-+            emit_libcall_block (insns, tmp, tga_ret, tga_eqv);
-+
-+            if (register_operand (op0, Pmode))
-+              tga_ret = op0;
-+            else
-+              tga_ret = gen_reg_rtx (Pmode);
-+            if (TARGET_TLS64)
-+              {
-+                emit_insn (gen_load_dtprel (tga_ret, op1));
-+                emit_insn (gen_adddi3 (tga_ret, tmp, tga_ret));
-+              }
-+            else
-+              emit_insn (gen_add_dtprel (tga_ret, tmp, op1));
-+            if (tga_ret == op0)
-+              return NULL_RTX;
-+            op1 = tga_ret;
-+            break;
-+
-+          case TLS_MODEL_INITIAL_EXEC:
-+            tmp = gen_reg_rtx (Pmode);
-+            emit_insn (gen_load_ltoff_tprel (tmp, op1));
-+            tmp = gen_rtx_MEM (Pmode, tmp);
-+            RTX_UNCHANGING_P (tmp) = 1;
-+            tmp = force_reg (Pmode, tmp);
-+
-+            if (register_operand (op0, Pmode))
-+              op1 = op0;
-+            else
-+              op1 = gen_reg_rtx (Pmode);
-+            emit_insn (gen_adddi3 (op1, tmp, gen_thread_pointer ()));
-+            if (op1 == op0)
-+              return NULL_RTX;
-+            break;
-+
-+          case TLS_MODEL_LOCAL_EXEC:
-+            if (register_operand (op0, Pmode))
-+              tmp = op0;
-+            else
-+              tmp = gen_reg_rtx (Pmode);
-+            if (TARGET_TLS64)
-+              {
-+                emit_insn (gen_load_tprel (tmp, op1));
-+                emit_insn (gen_adddi3 (tmp, gen_thread_pointer (), tmp));
-+              }
-+            else
-+              emit_insn (gen_add_tprel (tmp, gen_thread_pointer (), op1));
-+            if (tmp == op0)
-+              return NULL_RTX;
-+            op1 = tmp;
-+            break;
-+
-+          default:
-+            abort ();
-+          }
-+      }
-+      else if (!TARGET_NO_PIC && symbolic_operand (op1, DImode))
-+      {
-+        /* Before optimization starts, delay committing to any particular
-+           type of PIC address load.  If this function gets deferred, we
-+           may acquire information that changes the value of the
-+           sdata_symbolic_operand predicate.
-+
-+           But don't delay for function pointers.  Loading a function address
-+           actually loads the address of the descriptor not the function.
-+           If we represent these as SYMBOL_REFs, then they get cse'd with
-+           calls, and we end up with calls to the descriptor address instead
-+           of calls to the function address.  Functions are not candidates
-+           for sdata anyways.
-+
-+           Don't delay for LABEL_REF because the splitter loses REG_LABEL
-+           notes.  Don't delay for pool addresses on general principals;
-+           they'll never become non-local behind our back.  */
-+
-+        if (rtx_equal_function_value_matters
-+            && GET_CODE (op1) != LABEL_REF
-+            && ! (GET_CODE (op1) == SYMBOL_REF
-+                  && (SYMBOL_REF_FLAG (op1)
-+                      || CONSTANT_POOL_ADDRESS_P (op1)
-+                      || STRING_POOL_ADDRESS_P (op1))))
-+          emit_insn (gen_movdi_symbolic (op0, op1));
-+        else
-+          ia64_expand_load_address (op0, op1, NULL_RTX);
-+        return NULL_RTX;
-+      }
-+    }
-+
-+  return op1;
-+}
-+
- rtx
- ia64_gp_save_reg (setjmp_p)
-      int setjmp_p;
-@@ -3944,6 +4172,16 @@ ia64_override_options ()
-   if (ia64_fixed_range_string)
-     fix_range (ia64_fixed_range_string);
-+  if (ia64_tls_size_string)
-+    {
-+      char *end;
-+      unsigned long tmp = strtoul (ia64_tls_size_string, &end, 10);
-+      if (*end || (tmp != 14 && tmp != 22 && tmp != 64))
-+      error ("bad value (%s) for -mtls-size= switch", ia64_tls_size_string);
-+      else
-+      ia64_tls_size = tmp;
-+    }
-+
-   ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload;
-   flag_schedule_insns_after_reload = 0;
-@@ -4607,6 +4845,13 @@ rtx_needs_barrier (x, flags, pred)
-         need_barrier |= rtx_needs_barrier (XVECEXP (x, 0, 2), flags, pred);
-         break;
-+      case UNSPEC_LTOFF_DTPMOD:
-+      case UNSPEC_LTOFF_DTPREL:
-+      case UNSPEC_DTPREL:
-+      case UNSPEC_LTOFF_TPREL:
-+      case UNSPEC_TPREL:
-+          break;
-+
-       default:
-         abort ();
-       }
-@@ -6872,6 +7117,9 @@ ia64_encode_section_info (decl)
-      tree decl;
- {
-   const char *symbol_str;
-+  bool is_local, is_small;
-+  rtx symbol;
-+  char encoding = 0;
-   if (TREE_CODE (decl) == FUNCTION_DECL)
-     {
-@@ -6885,75 +7133,111 @@ ia64_encode_section_info (decl)
-       || GET_CODE (XEXP (DECL_RTL (decl), 0)) != SYMBOL_REF)
-     return;
-     
--  symbol_str = XSTR (XEXP (DECL_RTL (decl), 0), 0);
-+  symbol = XEXP (DECL_RTL (decl), 0);
-+  symbol_str = XSTR (symbol, 0);
-+
-+  /* A non-decl is an entry in the constant pool.  */
-+  if (!DECL_P (decl))
-+    is_local = true;
-+  /* Static variables are always local.  */
-+  else if (! TREE_PUBLIC (decl))
-+    is_local = true;
-+  /* A variable is local if the user tells us so.  */
-+  else if (MODULE_LOCAL_P (decl))
-+    is_local = true;
-+  /* Otherwise, variables defined outside this object may not be local.  */
-+  else if (DECL_EXTERNAL (decl))
-+    is_local = false;
-+  /* Linkonce and weak data are never local.  */
-+  else if (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
-+    is_local = false;
-+  /* If PIC, then assume that any global name can be overridden by
-+     symbols resolved from other modules.  */
-+  else if (flag_pic)
-+    is_local = false;
-+  /* Uninitialized COMMON variable may be unified with symbols
-+     resolved from other modules.  */
-+  else if (DECL_COMMON (decl)
-+         && (DECL_INITIAL (decl) == NULL
-+             || DECL_INITIAL (decl) == error_mark_node))
-+    is_local = false;
-+  /* Otherwise we're left with initialized (or non-common) global data
-+     which is of necessity defined locally.  */
-+  else
-+    is_local = true;
--  /* We assume that -fpic is used only to create a shared library (dso).
--     With -fpic, no global data can ever be sdata.
--     Without -fpic, global common uninitialized data can never be sdata, since
--     it can unify with a real definition in a dso.  */
--  /* ??? Actually, we can put globals in sdata, as long as we don't use gprel
--     to access them.  The linker may then be able to do linker relaxation to
--     optimize references to them.  Currently sdata implies use of gprel.  */
--  /* We need the DECL_EXTERNAL check for C++.  static class data members get
--     both TREE_STATIC and DECL_EXTERNAL set, to indicate that they are
--     statically allocated, but the space is allocated somewhere else.  Such
--     decls can not be own data.  */
--  if (! TARGET_NO_SDATA
--      && ((TREE_STATIC (decl) && ! DECL_EXTERNAL (decl)
--         && ! (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
--         && ! (TREE_PUBLIC (decl)
--               && (flag_pic
--                   || (DECL_COMMON (decl)
--                       && (DECL_INITIAL (decl) == 0
--                           || DECL_INITIAL (decl) == error_mark_node)))))
--        || MODULE_LOCAL_P (decl))
--      /* Either the variable must be declared without a section attribute,
--       or the section must be sdata or sbss.  */
--      && (DECL_SECTION_NAME (decl) == 0
--        || ! strcmp (TREE_STRING_POINTER (DECL_SECTION_NAME (decl)),
--                     ".sdata")
--        || ! strcmp (TREE_STRING_POINTER (DECL_SECTION_NAME (decl)),
--                     ".sbss")))
-+  is_small = false;
-+  if (TARGET_NO_SDATA)
-+    ;
-+  else if (TREE_CODE (decl) == VAR_DECL && DECL_SECTION_NAME (decl))
-+    {
-+      const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (decl));
-+      if (strcmp (section, ".sdata") == 0
-+        || strcmp (section, ".sbss") == 0)
-+      is_small = true;
-+    }
-+  else
-     {
-       HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl));
--      /* If the variable has already been defined in the output file, then it
--       is too late to put it in sdata if it wasn't put there in the first
--       place.  The test is here rather than above, because if it is already
--       in sdata, then it can stay there.  */
--
--      if (TREE_ASM_WRITTEN (decl))
--      ;
--
--      /* If this is an incomplete type with size 0, then we can't put it in
--       sdata because it might be too big when completed.
--       Objects bigger than threshold should have SDATA_NAME_FLAG_CHAR
--       added if they are in .sdata or .sbss explicitely.  */
--      else if (((size > 0
--               && size <= (HOST_WIDE_INT) ia64_section_threshold)
--              || DECL_SECTION_NAME (decl))
--             && symbol_str[0] != SDATA_NAME_FLAG_CHAR)
--      {
--        size_t len = strlen (symbol_str);
--        char *newstr = alloca (len + 1);
--        const char *string;
-+      /* If this is an incomplete type with size 0, then we can't put it
-+       in sdata because it might be too big when completed.  */
-+      if (size > 0 && size <= ia64_section_threshold)
-+      is_small = true;
-+    }
--        *newstr = SDATA_NAME_FLAG_CHAR;
--        memcpy (newstr + 1, symbol_str, len + 1);
--        
--        string = ggc_alloc_string (newstr, len + 1);
--        XSTR (XEXP (DECL_RTL (decl), 0), 0) = string;
-+  if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
-+    {
-+      enum tls_model kind;
-+      if (!flag_pic)
-+      {
-+        if (is_local)
-+          kind = TLS_MODEL_LOCAL_EXEC;
-+        else
-+          kind = TLS_MODEL_INITIAL_EXEC;
-       }
--    }
--  /* This decl is marked as being in small data/bss but it shouldn't
--     be; one likely explanation for this is that the decl has been
--     moved into a different section from the one it was in when
--     ENCODE_SECTION_INFO was first called.  Remove the '@'.  */
--  else if (symbol_str[0] == SDATA_NAME_FLAG_CHAR)
-+      else if (is_local)
-+      kind = TLS_MODEL_LOCAL_DYNAMIC;
-+      else
-+      kind = TLS_MODEL_GLOBAL_DYNAMIC;
-+      if (kind < flag_tls_default)
-+      kind = flag_tls_default;
-+
-+      encoding = " GLil"[kind];
-+    }
-+  /* Determine if DECL will wind up in .sdata/.sbss.  */
-+  else if (is_local && is_small)
-+    encoding = 's';
-+  
-+  /* Finally, encode this into the symbol string.  */
-+  if (encoding)
-     {
--      XSTR (XEXP (DECL_RTL (decl), 0), 0)
--      = ggc_strdup (symbol_str + 1);
-+      char *newstr;
-+      size_t len;
-+  
-+      if (symbol_str[0] == ENCODE_SECTION_INFO_CHAR)
-+      {
-+        if (encoding == symbol_str[1])
-+          return;
-+        /* ??? Sdata became thread or thread becaome not thread.  Lose.  */
-+        abort ();
-+      }
-+
-+      len = strlen (symbol_str);
-+      newstr = alloca (len + 3);
-+      newstr[0] = ENCODE_SECTION_INFO_CHAR;
-+      newstr[1] = encoding;
-+      memcpy (newstr + 2, symbol_str, len + 1);
-+
-+      XSTR (symbol, 0) = ggc_alloc_string (newstr, len + 2);
-     }
-+  
-+  /* This decl is marked as being in small data/bss but it shouldn't be;
-+     one likely explanation for this is that the decl has been moved into
-+     a different section from the one it was in when encode_section_info
-+     was first called.  Remove the encoding.  */
-+  else if (symbol_str[0] == ENCODE_SECTION_INFO_CHAR)
-+    XSTR (symbol, 0) = ggc_strdup (symbol_str + 2);
- }
\f
- /* Output assembly directives for prologue regions.  */
---- gcc/config/ia64/ia64.h.jj  Tue Apr 23 20:28:21 2002
-+++ gcc/config/ia64/ia64.h     Wed Jun 19 19:33:52 2002
-@@ -109,6 +109,11 @@ extern int target_flags;
- #define TARGET_DWARF2_ASM     (target_flags & MASK_DWARF2_ASM)
-+extern int ia64_tls_size;
-+#define TARGET_TLS14          (ia64_tls_size == 14)
-+#define TARGET_TLS22          (ia64_tls_size == 22)
-+#define TARGET_TLS64          (ia64_tls_size == 64)
-+
- /* This macro defines names of command options to set and clear bits in
-    `target_flags'.  Its definition is an initializer with a subgrouping for
-    each command option.  */
-@@ -177,10 +182,13 @@ extern int target_flags;
-    subgrouping for each command option.  */
- extern const char *ia64_fixed_range_string;
-+extern const char *ia64_tls_size_string;
- #define TARGET_OPTIONS \
- {                                                                     \
-   { "fixed-range=",   &ia64_fixed_range_string,                       \
-       N_("Specify range of registers to make fixed")},                        \
-+  { "tls-size=",      &ia64_tls_size_string,                          \
-+      N_("Specify bit size of immediate TLS offsets")},                       \
- }
- /* Sometimes certain combinations of command options do not make sense on a
-@@ -1801,7 +1809,7 @@ do {                                                                     \
-     && (DECL_ONE_ONLY (DECL) || DECL_WEAK (DECL) || DECL_COMMON (DECL)        \
-       || DECL_SECTION_NAME (DECL) != 0))
--#define SDATA_NAME_FLAG_CHAR '@'
-+#define ENCODE_SECTION_INFO_CHAR '@'
- #define IA64_DEFAULT_GVALUE 8
-@@ -1811,8 +1819,8 @@ do {                                                                     \
- #define STRIP_NAME_ENCODING(VAR, SYMBOL_NAME) \
- do {                                          \
-   (VAR) = (SYMBOL_NAME);                      \
--  if ((VAR)[0] == SDATA_NAME_FLAG_CHAR)               \
--    (VAR)++;                                  \
-+  if ((VAR)[0] == ENCODE_SECTION_INFO_CHAR)   \
-+    (VAR) += 2;                                       \
-   if ((VAR)[0] == '*')                                \
-     (VAR)++;                                  \
- } while (0)
---- gcc/config/ia64/ia64.md.jj Tue Apr 23 20:28:21 2002
-+++ gcc/config/ia64/ia64.md    Wed Jun 19 19:33:52 2002
-@@ -68,7 +68,19 @@
- ;;    23      cycle display
- ;;      24      addp4
- ;;    25      prologue_use
--;;
-+
-+;; More unspec:
-+
-+(define_constants
-+  [; Relocations
-+   (UNSPEC_LTOFF_DTPMOD               14)
-+   (UNSPEC_LTOFF_DTPREL               15)
-+   (UNSPEC_DTPREL             16)
-+   (UNSPEC_LTOFF_TPREL                17)
-+   (UNSPEC_TPREL              18)
-+   (UNSPEC_LD_BASE            26)
-+  ])
-+
- ;; unspec_volatile:
- ;;    0       alloc
- ;;    1       blockage
-@@ -272,12 +284,12 @@
-   [(set (match_operand:QI 0 "general_operand" "")
-       (match_operand:QI 1 "general_operand" ""))]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (QImode, operands[1]);
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- (define_insn "*movqi_internal"
-   [(set (match_operand:QI 0 "destination_operand" "=r,r,r, m, r,*f,*f")
-@@ -297,12 +309,12 @@
-   [(set (match_operand:HI 0 "general_operand" "")
-       (match_operand:HI 1 "general_operand" ""))]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (HImode, operands[1]);
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- (define_insn "*movhi_internal"
-   [(set (match_operand:HI 0 "destination_operand" "=r,r,r, m, r,*f,*f")
-@@ -322,12 +334,12 @@
-   [(set (match_operand:SI 0 "general_operand" "")
-       (match_operand:SI 1 "general_operand" ""))]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (SImode, operands[1]);
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- (define_insn "*movsi_internal"
-   [(set (match_operand:SI 0 "destination_operand" "=r,r,r,r, m, r,*f,*f, r,*d")
-@@ -351,32 +363,12 @@
-   [(set (match_operand:DI 0 "general_operand" "")
-       (match_operand:DI 1 "general_operand" ""))]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (DImode, operands[1]);
--  if (! TARGET_NO_PIC && symbolic_operand (operands[1], DImode))
--    {
--      /* Before optimization starts, delay committing to any particular
--       type of PIC address load.  If this function gets deferred, we
--       may acquire information that changes the value of the
--       sdata_symbolic_operand predicate.  */
--      /* But don't delay for function pointers.  Loading a function address
--       actually loads the address of the descriptor not the function.
--       If we represent these as SYMBOL_REFs, then they get cse'd with
--       calls, and we end up with calls to the descriptor address instead of
--       calls to the function address.  Functions are not candidates for
--       sdata anyways.  */
--      if (rtx_equal_function_value_matters
--        && ! (GET_CODE (operands[1]) == SYMBOL_REF
--              && SYMBOL_REF_FLAG (operands[1])))
--      emit_insn (gen_movdi_symbolic (operands[0], operands[1], gen_reg_rtx (DImode)));
--      else
--        ia64_expand_load_address (operands[0], operands[1], NULL_RTX);
--      DONE;
--    }
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- ;; This is used during early compilation to delay the decision on
- ;; how to refer to a variable as long as possible.  This is especially
-@@ -384,19 +376,22 @@
- ;; deferred functions, since we may acquire additional information
- ;; on the variables used in the meantime.
--;; ??? This causes us to lose REG_LABEL notes, because the insn splitter
--;; does not attempt to preserve any REG_NOTES on the input instruction.
--
- (define_insn_and_split "movdi_symbolic"
-   [(set (match_operand:DI 0 "register_operand" "=r")
-       (match_operand:DI 1 "symbolic_operand" "s"))
--   (clobber (match_operand:DI  2 "register_operand" "+r"))
-+   (clobber (match_scratch:DI 2 "=r"))
-    (use (reg:DI 1))]
-   ""
-   "* abort ();"
--  ""
-+  "!no_new_pseudos || reload_completed"
-   [(const_int 0)]
--  "ia64_expand_load_address (operands[0], operands[1], operands[2]); DONE;")
-+{
-+  rtx scratch = operands[2];
-+  if (!reload_completed)
-+    gen_reg_rtx (Pmode);
-+  ia64_expand_load_address (operands[0], operands[1], scratch); 
-+  DONE;
-+})
- (define_insn "*movdi_internal"
-   [(set (match_operand:DI 0 "destination_operand"
-@@ -510,6 +505,131 @@
-   "addl %0 = @ltoff(%1), gp"
-   [(set_attr "itanium_class" "ialu")])
-+(define_insn "load_ltoff_dtpmod"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (reg:DI 1)
-+               (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                          UNSPEC_LTOFF_DTPMOD)))]
-+  ""
-+  "addl %0 = @ltoff(@dtpmod(%1)), gp"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_insn "load_ltoff_dtprel"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (reg:DI 1)
-+               (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                          UNSPEC_LTOFF_DTPREL)))]
-+  ""
-+  "addl %0 = @ltoff(@dtprel(%1)), gp"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_expand "load_dtprel"
-+  [(set (match_operand:DI 0 "register_operand" "")
-+      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                 UNSPEC_DTPREL))]
-+  ""
-+  "")
-+
-+(define_insn "*load_dtprel64"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                 UNSPEC_DTPREL))]
-+  "TARGET_TLS64"
-+  "movl %0 = @dtprel(%1)"
-+  [(set_attr "itanium_class" "long_i")])
-+
-+(define_insn "*load_dtprel22"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                 UNSPEC_DTPREL))]
-+  ""
-+  "addl %0 = @dtprel(%1), r0"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_expand "add_dtprel"
-+  [(set (match_operand:DI 0 "register_operand" "")
-+      (plus:DI (match_operand:DI 1 "register_operand" "")
-+               (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+                          UNSPEC_DTPREL)))]
-+  "!TARGET_TLS64"
-+  "")
-+
-+(define_insn "*add_dtprel14"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (match_operand:DI 1 "register_operand" "r")
-+               (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+                          UNSPEC_DTPREL)))]
-+  "TARGET_TLS14"
-+  "adds %0 = @dtprel(%2), %1"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_insn "*add_dtprel22"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (match_operand:DI 1 "register_operand" "a")
-+               (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+                          UNSPEC_DTPREL)))]
-+  "TARGET_TLS22"
-+  "addl %0 = @dtprel(%2), %1"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_insn "load_ltoff_tprel"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (reg:DI 1)
-+               (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                          UNSPEC_LTOFF_TPREL)))]
-+  ""
-+  "addl %0 = @ltoff(@tprel(%1)), gp"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_expand "load_tprel"
-+  [(set (match_operand:DI 0 "register_operand" "")
-+      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                 UNSPEC_TPREL))]
-+  ""
-+  "")
-+
-+(define_insn "*load_tprel64"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                 UNSPEC_TPREL))]
-+  "TARGET_TLS64"
-+  "movl %0 = @tprel(%1)"
-+  [(set_attr "itanium_class" "long_i")])
-+
-+(define_insn "*load_tprel22"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+                 UNSPEC_TPREL))]
-+  ""
-+  "addl %0 = @tprel(%1), r0"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_expand "add_tprel"
-+  [(set (match_operand:DI 0 "register_operand" "")
-+      (plus:DI (match_operand:DI 1 "register_operand" "")
-+               (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+                          UNSPEC_TPREL)))]
-+  "!TARGET_TLS64"
-+  "")
-+
-+(define_insn "*add_tprel14"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (match_operand:DI 1 "register_operand" "r")
-+               (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+                          UNSPEC_TPREL)))]
-+  "TARGET_TLS14"
-+  "adds %0 = @tprel(%2), %1"
-+  [(set_attr "itanium_class" "ialu")])
-+
-+(define_insn "*add_tprel22"
-+  [(set (match_operand:DI 0 "register_operand" "=r")
-+      (plus:DI (match_operand:DI 1 "register_operand" "a")
-+               (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+                          UNSPEC_TPREL)))]
-+  "TARGET_TLS22"
-+  "addl %0 = @tprel(%2), %1"
-+  [(set_attr "itanium_class" "ialu")])
-+
- ;; With no offsettable memory references, we've got to have a scratch
- ;; around to play with the second word.
- (define_expand "movti"
-@@ -517,12 +637,12 @@
-                  (match_operand:TI 1 "general_operand" ""))
-             (clobber (match_scratch:DI 2 ""))])]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (TImode, operands[1]);
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- (define_insn_and_split "*movti_internal"
-   [(set (match_operand:TI 0 "nonimmediate_operand" "=r,r,m")
-@@ -639,12 +759,12 @@
-   [(set (match_operand:SF 0 "general_operand" "")
-       (match_operand:SF 1 "general_operand" ""))]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (SFmode, operands[1]);
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- (define_insn "*movsf_internal"
-   [(set (match_operand:SF 0 "destination_operand" "=f,f, Q,*r, f,*r,*r, m")
-@@ -665,12 +785,12 @@
-   [(set (match_operand:DF 0 "general_operand" "")
-       (match_operand:DF 1 "general_operand" ""))]
-   ""
--  "
- {
--  if (! reload_in_progress && ! reload_completed
--      && ! ia64_move_ok (operands[0], operands[1]))
--    operands[1] = force_reg (DFmode, operands[1]);
--}")
-+  rtx op1 = ia64_expand_move (operands[0], operands[1]);
-+  if (!op1)
-+    DONE;
-+  operands[1] = op1;
-+})
- (define_insn "*movdf_internal"
-   [(set (match_operand:DF 0 "destination_operand" "=f,f, Q,*r, f,*r,*r, m")
---- gcc/config/ia64/sysv4.h.jj Mon Jun  3 17:24:18 2002
-+++ gcc/config/ia64/sysv4.h    Wed Jun 19 19:33:52 2002
-@@ -42,8 +42,7 @@ extern int size_directive_output;
- #undef ASM_OUTPUT_ALIGNED_LOCAL
- #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \
- do {                                                                  \
--  if ((DECL)                                                          \
--      && XSTR (XEXP (DECL_RTL (DECL), 0), 0)[0] == SDATA_NAME_FLAG_CHAR) \
-+  if ((DECL) && sdata_symbolic_operand (XEXP (DECL_RTL (DECL), 0), Pmode)) \
-     sbss_section ();                                                  \
-   else                                                                        \
-     bss_section ();                                                   \
-@@ -62,8 +61,8 @@ do {                                                                 \
- #define ASM_OUTPUT_LABELREF(STREAM, NAME)     \
- do {                                          \
-   const char *name_ = NAME;                   \
--  if (*name_ == SDATA_NAME_FLAG_CHAR)         \
--    name_++;                                  \
-+  if (*name_ == ENCODE_SECTION_INFO_CHAR)     \
-+    name_ += 2;                                       \
-   if (*name_ == '*')                          \
-     name_++;                                  \
-   else                                                \
-@@ -149,9 +148,11 @@ do {                                                                      \
-       0       .text
-       1       .rodata
-       2       .data
--      3       .sdata
--      4       .bss
-+      3       .bss
-+      4       .sdata
-       5       .sbss
-+      6       .tdata
-+      7       .tbss
- */
- #define DO_SELECT_SECTION(SECNUM, DECL, RELOC)                                \
-   do                                                                  \
-@@ -167,9 +168,10 @@ do {                                                                      \
-       }                                                               \
-       else if (TREE_CODE (DECL) == VAR_DECL)                          \
-       {                                                               \
--        if (XSTR (XEXP (DECL_RTL (DECL), 0), 0)[0]                    \
--            == SDATA_NAME_FLAG_CHAR)                                  \
--          SECNUM = 3;                                                 \
-+        if (DECL_THREAD_LOCAL (DECL))                                 \
-+          SECNUM = 6;                                                 \
-+        else if (sdata_symbolic_operand (XEXP (DECL_RTL (DECL), 0), Pmode))\
-+          SECNUM = 4;                                                 \
-         /* ??? We need the extra RELOC check, because the default     \
-            is to only check RELOC if flag_pic is set, and we don't    \
-            set flag_pic (yet?).  */                                   \
-@@ -184,13 +186,18 @@ do {                                                                     \
-           SECNUM = 0x201;                                             \
-         else                                                          \
-           SECNUM = 0x301;                                             \
-+                                                                      \
-+        if (SECNUM >= 2                                               \
-+            && (!DECL_INITIAL (DECL)                                  \
-+                || DECL_INITIAL (DECL) == error_mark_node))           \
-+          SECNUM++;                                                   \
-       }                                                               \
-       /* This could be a CONSTRUCTOR containing ADDR_EXPR of a VAR_DECL, \
-        in which case we can't put it in a shared library rodata.  */  \
-       else if (flag_pic && (RELOC))                                   \
--      SECNUM = 3;                                                     \
--      else                                                            \
-       SECNUM = 2;                                                     \
-+      else                                                            \
-+      SECNUM = 1;                                                     \
-     }                                                                 \
-   while (0)
-@@ -206,8 +213,8 @@ do {                                                                       \
-       text_section,                                                   \
-       const_section,                                                  \
-       data_section,                                                   \
--      sdata_section,                                                  \
-       bss_section,                                                    \
-+      sdata_section,                                                  \
-       sbss_section                                                    \
-       };                                                              \
-                                                                       \
-@@ -217,6 +224,12 @@ do {                                                                      \
-                                                                       \
-       switch (sec)                                                    \
-       {                                                               \
-+      case 6:                                                         \
-+        named_section (NULL_TREE, ".tdata", RELOC);                   \
-+        break;                                                        \
-+      case 7:                                                         \
-+        named_section (NULL_TREE, ".tbss", RELOC);                    \
-+        break;                                                        \
-       case 0x101:                                                     \
-         mergeable_string_section (DECL, ALIGN, 0);                    \
-         break;                                                        \
-@@ -244,9 +257,11 @@ do {                                                                      \
-       { ".text.",   ".gnu.linkonce.t." },                             \
-       { ".rodata.", ".gnu.linkonce.r." },                             \
-       { ".data.",   ".gnu.linkonce.d." },                             \
--      { ".sdata.",  ".gnu.linkonce.s." },                             \
-       { ".bss.",    ".gnu.linkonce.b." },                             \
--      { ".sbss.",   ".gnu.linkonce.sb." }                             \
-+      { ".sdata.",  ".gnu.linkonce.s." },                             \
-+      { ".sbss.",   ".gnu.linkonce.sb." },                            \
-+      { ".tdata.",  ".gnu.linkonce.td." },                            \
-+      { ".tbss.",   ".gnu.linkonce.tb." }                             \
-       };                                                              \
-                                                                       \
-       int nlen, plen, sec;                                            \
---- gcc/config/elfos.h.jj      Tue Dec 18 01:30:48 2001
-+++ gcc/config/elfos.h Wed Jun 19 19:33:52 2002
-@@ -288,24 +288,28 @@ const_section ()                                         \
-       const char *name;                                               \
-       char *string;                                           \
-       const char *prefix;                                     \
--      static const char *const prefixes[4][2] =                       \
-+      static const char *const prefixes[][2] =                        \
-       {                                                               \
-       { ".text.",   ".gnu.linkonce.t." },                     \
-       { ".rodata.", ".gnu.linkonce.r." },                     \
-       { ".data.",   ".gnu.linkonce.d." },                     \
--      { ".bss.",    ".gnu.linkonce.b." }                      \
-+      { ".bss.",    ".gnu.linkonce.b." },                     \
-+      { ".tdata",   ".gnu.linkonce.td." },                    \
-+      { ".tbss",    ".gnu.linkonce.tb." },                    \
-       };                                                      \
-                                                                       \
-       if (TREE_CODE (DECL) == FUNCTION_DECL)                  \
-       sec = 0;                                                \
-       else if (DECL_INITIAL (DECL) == 0                               \
-              || DECL_INITIAL (DECL) == error_mark_node)       \
--        sec =  3;                                             \
-+        sec = 3;                                              \
-       else if (DECL_READONLY_SECTION (DECL, RELOC))           \
-       sec = 1;                                                \
-       else                                                    \
-       sec = 2;                                                \
--                                                                      \
-+      if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl)) \
-+      sec = (sec == 3 ? 5 : 4);                               \
-+                                                              \
-       name   = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL));       \
-       /* Strip off any encoding in name.  */                  \
-       STRIP_NAME_ENCODING (name, name);                               \
-@@ -367,10 +371,18 @@ const_section ()                                         \
-     }                                                         \
-   else if (TREE_CODE (DECL) == VAR_DECL)                      \
-     {                                                         \
--      if (!TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)   \
--        || !DECL_INITIAL (DECL)                               \
--        || (DECL_INITIAL (DECL) != error_mark_node            \
--            && !TREE_CONSTANT (DECL_INITIAL (DECL))))         \
-+      if (DECL_THREAD_LOCAL (DECL))                           \
-+      {                                                       \
-+        if (!DECL_INITIAL (DECL)                              \
-+            || DECL_INITIAL (DECL) == error_mark_node)        \
-+          named_section (NULL_TREE, ".tbss", RELOC);          \
-+        else                                                  \
-+          named_section (NULL_TREE, ".tdata", RELOC);         \
-+      }                                                       \
-+      else if (!TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \
-+             || !DECL_INITIAL (DECL)                          \
-+             || (DECL_INITIAL (DECL) != error_mark_node       \
-+                 && !TREE_CONSTANT (DECL_INITIAL (DECL))))    \
-       {                                                       \
-         if (flag_pic && ((RELOC) & 2))                        \
-           named_section (NULL_TREE, ".data.rel", RELOC);      \
---- gcc/fixinc/fixincl.x.jj    Thu May  2 12:15:15 2002
-+++ gcc/fixinc/fixincl.x       Wed Jun 19 19:33:52 2002
-@@ -5,7 +5,7 @@
-  * files which are fixed to work correctly with ANSI C and placed in a
-  * directory that GNU C will search.
-  *
-- * This file contains 151 fixup descriptions.
-+ * This file contains 152 fixup descriptions.
-  *
-  * See README for more information.
-  *
-@@ -4568,6 +4568,41 @@ static const char* apzSysz_Stdlib_For_Su
- /* * * * * * * * * * * * * * * * * * * * * * * * * *
-  *
-+ *  Description of Thread_Keyword fix
-+ */
-+tSCC zThread_KeywordName[] =
-+     "thread_keyword";
-+
-+/*
-+ *  File name selection pattern
-+ */
-+tSCC zThread_KeywordList[] =
-+  "|pthread.h|bits/sigthread.h|";
-+/*
-+ *  Machine/OS name selection pattern
-+ */
-+#define apzThread_KeywordMachs (const char**)NULL
-+
-+/*
-+ *  content selection pattern - do fix if pattern found
-+ */
-+tSCC zThread_KeywordSelect0[] =
-+       " __thread([,)])";
-+
-+#define    THREAD_KEYWORD_TEST_CT  1
-+static tTestDesc aThread_KeywordTests[] = {
-+  { TT_EGREP,    zThread_KeywordSelect0, (regex_t*)NULL }, };
-+
-+/*
-+ *  Fix Command Arguments for Thread_Keyword
-+ */
-+static const char* apzThread_KeywordPatch[] = {
-+    "format",
-+    " __thr%1",
-+    (char*)NULL };
-+
-+/* * * * * * * * * * * * * * * * * * * * * * * * * *
-+ *
-  *  Description of Tinfo_Cplusplus fix
-  */
- tSCC zTinfo_CplusplusName[] =
-@@ -5581,9 +5616,9 @@ static const char* apzX11_SprintfPatch[]
-  *
-  *  List of all fixes
-  */
--#define REGEX_COUNT          163
-+#define REGEX_COUNT          164
- #define MACH_LIST_SIZE_LIMIT 279
--#define FIX_COUNT            151
-+#define FIX_COUNT            152
- /*
-  *  Enumerate the fixes
-@@ -5705,6 +5740,7 @@ typedef enum {
-     SVR4_PROFIL_FIXIDX,
-     SYSV68_STRING_FIXIDX,
-     SYSZ_STDLIB_FOR_SUN_FIXIDX,
-+    THREAD_KEYWORD_FIXIDX,
-     TINFO_CPLUSPLUS_FIXIDX,
-     ULTRIX_ATEXIT_PARAM_FIXIDX,
-     ULTRIX_ATOF_PARAM_FIXIDX,
-@@ -6314,6 +6350,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
-      SYSZ_STDLIB_FOR_SUN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-      aSysz_Stdlib_For_SunTests,   apzSysz_Stdlib_For_SunPatch, 0 },
-+  {  zThread_KeywordName,    zThread_KeywordList,
-+     apzThread_KeywordMachs,
-+     THREAD_KEYWORD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-+     aThread_KeywordTests,   apzThread_KeywordPatch, 0 },
-+
-   {  zTinfo_CplusplusName,    zTinfo_CplusplusList,
-      apzTinfo_CplusplusMachs,
-      TINFO_CPLUSPLUS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
---- gcc/fixinc/inclhack.def.jj Thu May  2 12:15:17 2002
-+++ gcc/fixinc/inclhack.def    Wed Jun 19 19:33:52 2002
-@@ -1,4 +1,3 @@
--
- /* -*- Mode: C -*-  */
- autogen definitions fixincl;
-@@ -2886,6 +2885,24 @@ fix = {
- };
-+/*
-+ * __thread is now a keyword.
-+ */
-+fix = {
-+    hackname  = thread_keyword;
-+    files     = "pthread.h";
-+    files     = "bits/sigthread.h";
-+    select    = " __thread([,)])";
-+    c_fix     = format;
-+    c_fix_arg = " __thr%1";
-+
-+    test_text =
-+        "extern int pthread_create (pthread_t *__restrict __thread,\n"
-+        "extern int pthread_kill (pthread_t __thread, int __signo);\n"
-+        "extern int pthread_cancel (pthread_t __thread);";
-+};
-+
-+
- /*
-  *  if the #if says _cplusplus, not the double underscore __cplusplus
-  *  that it should be
---- gcc/testsuite/g++.dg/dg.exp.jj     Thu Feb 14 13:26:12 2002
-+++ gcc/testsuite/g++.dg/dg.exp        Wed Jun 19 19:33:52 2002
-@@ -28,10 +28,12 @@ if ![info exists DEFAULT_CXXFLAGS] then 
- # Initialize `dg'.
- dg-init
--# Gather a list of all tests, excluding those in special/; those are handled
--# well, specially.
--set all [lsort [find $srcdir/$subdir *.C]]
--set tests [prune [prune $all $srcdir/$subdir/special/*] $srcdir/$subdir/debug/*]
-+# Gather a list of all tests, with the exception of those in directories
-+# that are handled specially.
-+set tests [lsort [find $srcdir/$subdir *.C]]
-+set tests [prune $tests $srcdir/$subdir/debug/*]
-+set tests [prune $tests $srcdir/$subdir/special/*]
-+set tests [prune $tests $srcdir/$subdir/tls/*]
- # Main loop.
- dg-runtest $tests "" $DEFAULT_CXXFLAGS
---- gcc/testsuite/g++.dg/tls/diag-1.C.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/g++.dg/tls/diag-1.C  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,30 @@
-+/* Valid __thread specifiers.  */
-+
-+__thread int g1;
-+extern __thread int g2;
-+static __thread int g3;
-+
-+void foo()
-+{
-+  extern __thread int l1;
-+  static __thread int l2;
-+}
-+
-+struct A {
-+  static __thread int i;
-+};
-+
-+__thread int A::i = 42;
-+
-+template <typename T> struct B {
-+  static __thread T t;
-+};
-+
-+template <typename T>
-+__thread T B<T>::t = 42;
-+
-+void bar ()
-+{
-+  int j = B<int>::t;
-+  int k = B<const int>::t;
-+}
---- gcc/testsuite/g++.dg/tls/diag-2.C.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/g++.dg/tls/diag-2.C  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,25 @@
-+/* Invalid __thread specifiers.  */
-+
-+__thread extern int g1;               /* { dg-error "`__thread' before `extern'" } */
-+__thread static int g2;               /* { dg-error "`__thread' before `static'" } */
-+__thread __thread int g3;     /* { dg-error "duplicate `__thread'" } */
-+typedef __thread int g4;      /* { dg-error "multiple storage classes" } */
-+
-+void foo()
-+{
-+  __thread int l1;            /* { dg-error "implicitly auto and declared `__thread'" } */
-+  auto __thread int l2;               /* { dg-error "multiple storage classes" } */
-+  __thread extern int l3;     /* { dg-error "`__thread' before `extern'" } */
-+  register __thread int l4;   /* { dg-error "multiple storage classes" } */
-+}
-+
-+__thread void f1 ();          /* { dg-error "invalid for function" } */
-+extern __thread void f2 ();   /* { dg-error "invalid for function" } */
-+static __thread void f3 ();   /* { dg-error "invalid for function" } */
-+__thread void f4 () { }               /* { dg-error "invalid for function" } */
-+
-+void bar(__thread int p1);    /* { dg-error "(invalid in parameter)|(specified for parameter)" } */
-+
-+struct A {
-+  __thread int i;             /* { dg-error "specified for field" } */
-+};
---- gcc/testsuite/g++.dg/tls/init-1.C.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/g++.dg/tls/init-1.C  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,13 @@
-+/* Valid initializations.  */
-+
-+__thread int i = 42;
-+
-+static int j;
-+__thread int *p = &j;
-+
-+/* Note that this is valid in C++ (unlike C) as a run-time initialization.  */
-+int *q = &i;
-+
-+/* Valid because "const int k" is an integral constant expression in C++.  */
-+__thread const int k = 42;
-+__thread const int l = k;
---- gcc/testsuite/g++.dg/tls/init-2.C.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/g++.dg/tls/init-2.C  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,13 @@
-+/* Invalid initializations.  */
-+
-+extern __thread int i;
-+__thread int *p = &i; /* { dg-error "run-time initialization" } */
-+
-+extern int f();
-+__thread int j = f(); /* { dg-error "run-time initialization" } */
-+
-+struct S
-+{
-+  S();
-+};
-+__thread S s;         /* { dg-error "run-time initialization" } */
---- gcc/testsuite/g++.dg/tls/tls.exp.jj        Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/g++.dg/tls/tls.exp   Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,44 @@
-+#   Copyright (C) 2002 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+# 
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+# 
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-+
-+# GCC testsuite that uses the `dg.exp' driver.
-+
-+# Load support procs.
-+load_lib g++-dg.exp
-+
-+# Test for thread-local data supported by the platform.  If it
-+# isn't, everything will fail with the "not supported" message.
-+
-+set comp_output [g++_target_compile \
-+              "$srcdir/$subdir/trivial.C" "trivial.S" assembly ""]
-+if { [string match "*not supported*" $comp_output] } {
-+  return 0
-+}
-+
-+# If a testcase doesn't have special options, use these.
-+global DEFAULT_CXXFLAGS
-+if ![info exists DEFAULT_CXXFLAGS] then {
-+    set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
-+}
-+
-+# Initialize `dg'.
-+dg-init
-+
-+# Main loop.
-+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS
-+
-+# All done.
-+dg-finish
---- gcc/testsuite/g++.dg/tls/trivial.C.jj      Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/g++.dg/tls/trivial.C Wed Jun 19 19:33:52 2002
-@@ -0,0 +1 @@
-+__thread int i;
---- gcc/testsuite/gcc.dg/tls/diag-1.c.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/gcc.dg/tls/diag-1.c  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,11 @@
-+/* Valid __thread specifiers.  */
-+
-+__thread int g1;
-+extern __thread int g2;
-+static __thread int g3;
-+
-+void foo()
-+{
-+  extern __thread int l1;
-+  static __thread int l2;
-+}
---- gcc/testsuite/gcc.dg/tls/diag-2.c.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/gcc.dg/tls/diag-2.c  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,21 @@
-+/* Invalid __thread specifiers.  */
-+
-+__thread extern int g1;               /* { dg-error "`__thread' before `extern'" } */
-+__thread static int g2;               /* { dg-error "`__thread' before `static'" } */
-+__thread __thread int g3;     /* { dg-error "duplicate `__thread'" } */
-+typedef __thread int g4;      /* { dg-error "multiple storage classes" } */
-+
-+void foo()
-+{
-+  __thread int l1;            /* { dg-error "implicitly auto and declared `__thread'" } */
-+  auto __thread int l2;               /* { dg-error "multiple storage classes" } */
-+  __thread extern int l3;     /* { dg-error "`__thread' before `extern'" } */
-+  register __thread int l4;   /* { dg-error "multiple storage classes" } */
-+}
-+
-+__thread void f1 ();          /* { dg-error "invalid storage class for function" } */
-+extern __thread void f2 ();   /* { dg-error "invalid storage class for function" } */
-+static __thread void f3 ();   /* { dg-error "invalid storage class for function" } */
-+__thread void f4 () { }               /* { dg-error "function definition declared `__thread'" } */
-+
-+void bar(__thread int p1);    /* { dg-error "storage class specified for parameter" } */
---- gcc/testsuite/gcc.dg/tls/init-1.c.jj       Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/gcc.dg/tls/init-1.c  Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,4 @@
-+/* Invalid initializations.  */
-+
-+extern __thread int i;
-+int *p = &i;  /* { dg-error "initializer element is not constant" } */
---- gcc/testsuite/gcc.dg/tls/tls.exp.jj        Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/gcc.dg/tls/tls.exp   Wed Jun 19 19:33:52 2002
-@@ -0,0 +1,45 @@
-+#   Copyright (C) 2002 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+# 
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+# 
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-+
-+# GCC testsuite that uses the `dg.exp' driver.
-+
-+# Load support procs.
-+load_lib gcc-dg.exp
-+
-+# Test for thread-local data supported by the platform.  If it
-+# isn't, everything will fail with the "not supported" message.
-+
-+set comp_output [gcc_target_compile \
-+              "$srcdir/$subdir/trivial.c" "trivial.S" assembly ""]
-+if { [string match "*not supported*" $comp_output] } {
-+  return 0
-+}
-+
-+# If a testcase doesn't have special options, use these.
-+global DEFAULT_CFLAGS
-+if ![info exists DEFAULT_CFLAGS] then {
-+    set DEFAULT_CFLAGS " -ansi -pedantic-errors"
-+}
-+
-+# Initialize `dg'.
-+dg-init
-+
-+# Main loop.
-+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
-+        "" $DEFAULT_CFLAGS
-+
-+# All done.
-+dg-finish
---- gcc/testsuite/gcc.dg/tls/trivial.c.jj      Wed Jun 19 19:33:52 2002
-+++ gcc/testsuite/gcc.dg/tls/trivial.c Wed Jun 19 19:33:52 2002
-@@ -0,0 +1 @@
-+__thread int i;
---- gcc/c-common.h.jj  Wed Apr 17 15:34:36 2002
-+++ gcc/c-common.h     Wed Jun 19 19:33:52 2002
-@@ -58,7 +58,7 @@ enum rid
-   RID_VOLATILE, RID_SIGNED,  RID_AUTO,  RID_RESTRICT,
-   /* C extensions */
--  RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX,
-+  RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX, RID_THREAD,
-   /* C++ */
-   RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE,
---- gcc/c-decl.c.jj    Wed Jun 19 19:33:50 2002
-+++ gcc/c-decl.c       Wed Jun 19 19:33:52 2002
-@@ -3571,9 +3571,19 @@ start_decl (declarator, declspecs, initi
-   /* ANSI specifies that a tentative definition which is not merged with
-      a non-tentative definition behaves exactly like a definition with an
-      initializer equal to zero.  (Section 3.7.2)
--     -fno-common gives strict ANSI behavior.  Usually you don't want it.
--     This matters only for variables with external linkage.  */
--  if (! flag_no_common || ! TREE_PUBLIC (decl))
-+
-+     -fno-common gives strict ANSI behavior, though this tends to break
-+     a large body of code that grew up without this rule.
-+
-+     Thread-local variables are never common, since there's no entrenched
-+     body of code to break, and it allows more efficient variable references
-+     in the presense of dynamic linking.  */
-+
-+  if (TREE_CODE (decl) == VAR_DECL
-+      && !initialized
-+      && TREE_PUBLIC (decl)
-+      && !DECL_THREAD_LOCAL (decl)
-+      && !flag_no_common)
-     DECL_COMMON (decl) = 1;
-   /* Set attributes here so if duplicate decl, will have proper attributes.  */
-@@ -4172,7 +4182,7 @@ grokdeclarator (declarator, declspecs, d
-         enum rid i = C_RID_CODE (id);
-         if ((int) i <= (int) RID_LAST_MODIFIER)
-           {
--            if (i == RID_LONG && (specbits & (1 << (int) i)))
-+            if (i == RID_LONG && (specbits & (1 << (int) RID_LONG)))
-               {
-                 if (longlong)
-                   error ("`long long long' is too long for GCC");
-@@ -4186,6 +4196,19 @@ grokdeclarator (declarator, declspecs, d
-               }
-             else if (specbits & (1 << (int) i))
-               pedwarn ("duplicate `%s'", IDENTIFIER_POINTER (id));
-+
-+            /* Diagnose "__thread extern".  Recall that this list
-+               is in the reverse order seen in the text.  */
-+            if (i == RID_THREAD
-+                && (specbits & (1 << (int) RID_EXTERN
-+                                | 1 << (int) RID_STATIC)))
-+              {
-+                if (specbits & 1 << (int) RID_EXTERN)
-+                  error ("`__thread' before `extern'");
-+                else
-+                  error ("`__thread' before `static'");
-+              }
-+
-             specbits |= 1 << (int) i;
-             goto found;
-           }
-@@ -4438,6 +4461,12 @@ grokdeclarator (declarator, declspecs, d
-     if (specbits & 1 << (int) RID_REGISTER) nclasses++;
-     if (specbits & 1 << (int) RID_TYPEDEF) nclasses++;
-+    /* "static __thread" and "extern __thread" are allowed.  */
-+    if ((specbits & (1 << (int) RID_THREAD
-+                   | 1 << (int) RID_STATIC
-+                   | 1 << (int) RID_EXTERN)) == (1 << (int) RID_THREAD))
-+      nclasses++;
-+
-     /* Warn about storage classes that are invalid for certain
-        kinds of declarations (parameters, typenames, etc.).  */
-@@ -4447,7 +4476,8 @@ grokdeclarator (declarator, declspecs, d
-            && (specbits
-                & ((1 << (int) RID_REGISTER)
-                   | (1 << (int) RID_AUTO)
--                  | (1 << (int) RID_TYPEDEF))))
-+                  | (1 << (int) RID_TYPEDEF)
-+                  | (1 << (int) RID_THREAD))))
-       {
-       if (specbits & 1 << (int) RID_AUTO
-           && (pedantic || current_binding_level == global_binding_level))
-@@ -4456,8 +4486,10 @@ grokdeclarator (declarator, declspecs, d
-         error ("function definition declared `register'");
-       if (specbits & 1 << (int) RID_TYPEDEF)
-         error ("function definition declared `typedef'");
-+      if (specbits & 1 << (int) RID_THREAD)
-+        error ("function definition declared `__thread'");
-       specbits &= ~((1 << (int) RID_TYPEDEF) | (1 << (int) RID_REGISTER)
--                    | (1 << (int) RID_AUTO));
-+                    | (1 << (int) RID_AUTO) | (1 << (int) RID_THREAD));
-       }
-     else if (decl_context != NORMAL && nclasses > 0)
-       {
-@@ -4480,7 +4512,7 @@ grokdeclarator (declarator, declspecs, d
-             }
-           specbits &= ~((1 << (int) RID_TYPEDEF) | (1 << (int) RID_REGISTER)
-                         | (1 << (int) RID_AUTO) | (1 << (int) RID_STATIC)
--                        | (1 << (int) RID_EXTERN));
-+                        | (1 << (int) RID_EXTERN) | (1 << (int) RID_THREAD));
-         }
-       }
-     else if (specbits & 1 << (int) RID_EXTERN && initialized && ! funcdef_flag)
-@@ -4491,12 +4523,25 @@ grokdeclarator (declarator, declspecs, d
-       else
-         error ("`%s' has both `extern' and initializer", name);
-       }
--    else if (specbits & 1 << (int) RID_EXTERN && funcdef_flag
--           && current_binding_level != global_binding_level)
--      error ("nested function `%s' declared `extern'", name);
--    else if (current_binding_level == global_binding_level
--           && specbits & (1 << (int) RID_AUTO))
--      error ("top-level declaration of `%s' specifies `auto'", name);
-+    else if (current_binding_level == global_binding_level)
-+      {
-+      if (specbits & 1 << (int) RID_AUTO)
-+        error ("top-level declaration of `%s' specifies `auto'", name);
-+      }
-+    else
-+      {
-+      if (specbits & 1 << (int) RID_EXTERN && funcdef_flag)
-+        error ("nested function `%s' declared `extern'", name);
-+      else if ((specbits & (1 << (int) RID_THREAD
-+                             | 1 << (int) RID_EXTERN
-+                             | 1 << (int) RID_STATIC))
-+               == (1 << (int) RID_THREAD))
-+        {
-+          error ("function-scope `%s' implicitly auto and declared `__thread'",
-+                 name);
-+          specbits &= ~(1 << (int) RID_THREAD);
-+        }
-+      }
-   }
-   /* Now figure out the structure of the declarator proper.
-@@ -5095,6 +5140,8 @@ grokdeclarator (declarator, declspecs, d
-         pedwarn ("invalid storage class for function `%s'", name);
-       if (specbits & (1 << (int) RID_REGISTER))
-         error ("invalid storage class for function `%s'", name);
-+      if (specbits & (1 << (int) RID_THREAD))
-+        error ("invalid storage class for function `%s'", name);
-       /* Function declaration not at top level.
-          Storage classes other than `extern' are not allowed
-          and `extern' makes no difference.  */
-@@ -5187,22 +5234,32 @@ grokdeclarator (declarator, declspecs, d
-         pedwarn_with_decl (decl, "variable `%s' declared `inline'");
-       DECL_EXTERNAL (decl) = extern_ref;
-+
-       /* At top level, the presence of a `static' or `register' storage
-          class specifier, or the absence of all storage class specifiers
-          makes this declaration a definition (perhaps tentative).  Also,
-          the absence of both `static' and `register' makes it public.  */
-       if (current_binding_level == global_binding_level)
-         {
--          TREE_PUBLIC (decl)
--            = !(specbits
--                & ((1 << (int) RID_STATIC) | (1 << (int) RID_REGISTER)));
--          TREE_STATIC (decl) = ! DECL_EXTERNAL (decl);
-+          TREE_PUBLIC (decl) = !(specbits & ((1 << (int) RID_STATIC)
-+                                             | (1 << (int) RID_REGISTER)));
-+          TREE_STATIC (decl) = !extern_ref;
-         }
-       /* Not at top level, only `static' makes a static definition.  */
-       else
-         {
-           TREE_STATIC (decl) = (specbits & (1 << (int) RID_STATIC)) != 0;
--          TREE_PUBLIC (decl) = DECL_EXTERNAL (decl);
-+          TREE_PUBLIC (decl) = extern_ref;
-+        }
-+
-+      if (specbits & 1 << (int) RID_THREAD)
-+        {
-+          if (targetm.have_tls)
-+            DECL_THREAD_LOCAL (decl) = 1;
-+          else
-+            /* A mere warning is sure to result in improper semantics
-+               at runtime.  Don't bother to allow this to compile.  */
-+            error ("thread-local storage not supported for this target");
-         }
-       }
---- gcc/c-parse.in.jj  Wed Apr 17 15:34:46 2002
-+++ gcc/c-parse.in     Wed Jun 19 19:33:52 2002
-@@ -3329,6 +3329,7 @@ static const struct resword reswords[] =
-   { "__restrict__",   RID_RESTRICT,   0 },
-   { "__signed",               RID_SIGNED,     0 },
-   { "__signed__",     RID_SIGNED,     0 },
-+  { "__thread",               RID_THREAD,     0 },
-   { "__typeof",               RID_TYPEOF,     0 },
-   { "__typeof__",     RID_TYPEOF,     0 },
-   { "__unbounded",    RID_UNBOUNDED,  0 },
-@@ -3424,6 +3425,7 @@ static const short rid_to_yy[RID_MAX] =
-   /* RID_BOUNDED */   TYPE_QUAL,
-   /* RID_UNBOUNDED */ TYPE_QUAL,
-   /* RID_COMPLEX */   TYPESPEC,
-+  /* RID_THREAD */    SCSPEC,
-   /* C++ */
-   /* RID_FRIEND */    0,
---- gcc/config.in.jj   Sat Jun  8 00:38:25 2002
-+++ gcc/config.in      Wed Jun 19 19:33:52 2002
-@@ -523,6 +523,9 @@
- /* Define if your assembler supports marking sections with SHF_MERGE flag. */
- #undef HAVE_GAS_SHF_MERGE
-+/* Define if your assembler supports thread-local storage. */
-+#undef HAVE_AS_TLS
-+
- /* Define if your assembler supports explicit relocations. */
- #undef HAVE_AS_EXPLICIT_RELOCS
---- gcc/flags.h.jj     Sat Mar 23 12:02:51 2002
-+++ gcc/flags.h        Wed Jun 19 19:33:52 2002
-@@ -450,11 +450,22 @@ extern int flag_pretend_float;
- extern int flag_pedantic_errors;
--/* Nonzero means generate position-independent code.
--   This is not fully implemented yet.  */
-+/* Nonzero means generate position-independent code.  1 vs 2 for a 
-+   target-dependent "small" or "large" mode.  */
- extern int flag_pic;
-+/* Set to the default thread-local storage (tls) model to use.  */
-+
-+enum tls_model {
-+  TLS_MODEL_GLOBAL_DYNAMIC = 1,
-+  TLS_MODEL_LOCAL_DYNAMIC,
-+  TLS_MODEL_INITIAL_EXEC,
-+  TLS_MODEL_LOCAL_EXEC
-+};
-+
-+extern enum tls_model flag_tls_default;
-+
- /* Nonzero means generate extra code for exception handling and enable
-    exception handling.  */
---- gcc/configure.in.jj        Sat Jun  8 00:38:27 2002
-+++ gcc/configure.in   Wed Jun 19 19:33:52 2002
-@@ -1715,6 +1715,72 @@ if test x"$gcc_cv_as_shf_merge" = xyes; 
- fi
- AC_MSG_RESULT($gcc_cv_as_shf_merge)
-+AC_MSG_CHECKING(assembler thread-local storage support)
-+gcc_cv_as_tls=no
-+conftest_s=
-+tls_first_major=
-+tls_first_minor=
-+case "$target" in
-+changequote(,)dnl
-+  i[34567]86-*-*)
-+changequote([,])dnl
-+    conftest_s='
-+      .section ".tdata","awT",@progbits
-+foo:  .long   25
-+      .text
-+      movl    %gs:0, %eax
-+      leal    foo@TLSGD(,%ebx,1), %eax
-+      leal    foo@TLSLDM(%ebx), %eax
-+      leal    foo@DTPOFF(%eax), %edx
-+      movl    foo@GOTTPOFF(%ebx), %eax
-+      subl    foo@GOTTPOFF(%ebx), %eax
-+      movl    $foo@TPOFF, %eax
-+      subl    $foo@TPOFF, %eax
-+      leal    foo@NTPOFF(%ecx), %eax'
-+      tls_first_major=2
-+      tls_first_minor=13
-+      ;;
-+  ia64-*-*)
-+    conftest_s='
-+      .section ".tdata","awT",@progbits
-+foo:  data8   25
-+      .text
-+      addl    r16 = @ltoff(@dtpmod(foo#)), gp
-+      addl    r17 = @ltoff(@dtprel(foo#)), gp
-+      addl    r18 = @ltoff(@tprel(foo#)), gp
-+      addl    r19 = @dtprel(foo#), gp
-+      adds    r21 = @dtprel(foo#), r13
-+      movl    r23 = @dtprel(foo#)
-+      addl    r20 = @tprel(foo#), gp
-+      adds    r22 = @tprel(foo#), r13
-+      movl    r24 = @tprel(foo#)'
-+      tls_first_major=2
-+      tls_first_minor=13
-+      ;;
-+esac
-+if test -z "$tls_first_major"; then
-+  :
-+elif test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
-+then
-+  if test "$gcc_cv_gas_major_version" -eq "$tls_first_major" \
-+        -a "$gcc_cv_gas_minor_version" -ge "$tls_first_minor" \
-+        -o "$gcc_cv_gas_major_version" -gt "$tls_first_major"; then
-+    gcc_cv_as_tls=yes
-+  fi
-+elif test x$gcc_cv_as != x; then
-+  echo "$conftest_s" > conftest.s
-+  if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
-+  then
-+    gcc_cv_as_tls=yes
-+  fi
-+  rm -f conftest.s conftest.o
-+fi
-+if test "$gcc_cv_as_tls" = yes; then
-+  AC_DEFINE(HAVE_AS_TLS, 1,
-+          [Define if your assembler supports thread-local storage.])
-+fi
-+AC_MSG_RESULT($gcc_cv_as_tls)
-+
- case "$target" in
-   # All TARGET_ABI_OSF targets.
-   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
---- gcc/configure.jj   Sat Jun  8 00:38:27 2002
-+++ gcc/configure      Wed Jun 19 22:28:09 2002
-@@ -7391,6 +7391,73 @@ EOF
- fi
- echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6
-+echo $ac_n "checking assembler thread-local storage support""... $ac_c" 1>&6
-+echo "configure:7399: checking assembler thread-local storage support" >&5
-+gcc_cv_as_tls=no
-+conftest_s=
-+tls_first_major=
-+tls_first_minor=
-+case "$target" in
-+  i[34567]86-*-*)
-+    conftest_s='
-+      .section ".tdata","awT",@progbits
-+foo:  .long   25
-+      .text
-+      movl    %gs:0, %eax
-+      leal    foo@TLSGD(,%ebx,1), %eax
-+      leal    foo@TLSLDM(%ebx), %eax
-+      leal    foo@DTPOFF(%eax), %edx
-+      movl    foo@GOTTPOFF(%ebx), %eax
-+      subl    foo@GOTTPOFF(%ebx), %eax
-+      movl    $foo@TPOFF, %eax
-+      subl    $foo@TPOFF, %eax
-+      leal    foo@NTPOFF(%ecx), %eax'
-+      tls_first_major=2
-+      tls_first_minor=13
-+      ;;
-+  ia64-*-*)
-+    conftest_s='
-+      .section ".tdata","awT",@progbits
-+foo:  data8   25
-+      .text
-+      addl    r16 = @ltoff(@dtpmod(foo#)), gp
-+      addl    r17 = @ltoff(@dtprel(foo#)), gp
-+      addl    r18 = @ltoff(@tprel(foo#)), gp
-+      addl    r19 = @dtprel(foo#), gp
-+      adds    r21 = @dtprel(foo#), r13
-+      movl    r23 = @dtprel(foo#)
-+      addl    r20 = @tprel(foo#), gp
-+      adds    r22 = @tprel(foo#), r13
-+      movl    r24 = @tprel(foo#)'
-+      tls_first_major=2
-+      tls_first_minor=13
-+      ;;
-+esac
-+if test -z "$tls_first_major"; then
-+  :
-+elif test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
-+then
-+  if test "$gcc_cv_gas_major_version" -eq "$tls_first_major" \
-+        -a "$gcc_cv_gas_minor_version" -ge "$tls_first_minor" \
-+        -o "$gcc_cv_gas_major_version" -gt "$tls_first_major"; then
-+    gcc_cv_as_tls=yes
-+  fi
-+elif test x$gcc_cv_as != x; then
-+  echo "$conftest_s" > conftest.s
-+  if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
-+  then
-+    gcc_cv_as_tls=yes
-+  fi
-+  rm -f conftest.s conftest.o
-+fi
-+if test "$gcc_cv_as_tls" = yes; then
-+  cat >> confdefs.h <<\EOF
-+#define HAVE_AS_TLS 1
-+EOF
-+
-+fi
-+echo "$ac_t""$gcc_cv_as_tls" 1>&6
-+
- case "$target" in
-   # All TARGET_ABI_OSF targets.
-   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
---- gcc/output.h.jj    Wed Jun 19 19:33:50 2002
-+++ gcc/output.h       Wed Jun 19 19:33:52 2002
-@@ -514,7 +514,8 @@ extern void no_asm_to_stream PARAMS ((FI
- #define SECTION_STRINGS  0x10000      /* contains zero terminated strings without
-                                          embedded zeros */
- #define SECTION_OVERRIDE 0x20000      /* allow override of default flags */
--#define SECTION_MACH_DEP 0x40000      /* subsequent bits reserved for target */
-+#define SECTION_TLS    0x40000        /* contains thread-local storage */
-+#define SECTION_MACH_DEP 0x80000      /* subsequent bits reserved for target */
- extern unsigned int get_named_section_flags PARAMS ((const char *));
- extern bool set_named_section_flags   PARAMS ((const char *, unsigned int));
---- gcc/print-tree.c.jj        Mon Mar 18 23:19:57 2002
-+++ gcc/print-tree.c   Wed Jun 19 19:33:52 2002
-@@ -363,6 +363,8 @@ print_node (file, prefix, node, indent)
-       if (TREE_CODE (node) == VAR_DECL && DECL_IN_TEXT_SECTION (node))
-       fputs (" in-text-section", file);
-+      if (TREE_CODE (node) == VAR_DECL && DECL_THREAD_LOCAL (node))
-+      fputs (" thread-local", file);
-       if (TREE_CODE (node) == PARM_DECL && DECL_TRANSPARENT_UNION (node))
-       fputs (" transparent-union", file);
---- gcc/target-def.h.jj        Tue Feb 12 16:19:14 2002
-+++ gcc/target-def.h   Wed Jun 19 19:33:52 2002
-@@ -98,6 +98,10 @@ Foundation, 59 Temple Place - Suite 330,
- #define TARGET_HAVE_NAMED_SECTIONS false
- #endif
-+#ifndef TARGET_HAVE_TLS
-+#define TARGET_HAVE_TLS false
-+#endif
-+
- #ifndef TARGET_ASM_EXCEPTION_SECTION
- #define TARGET_ASM_EXCEPTION_SECTION default_exception_section
- #endif
-@@ -194,9 +198,10 @@ Foundation, 59 Temple Place - Suite 330,
-   TARGET_INIT_BUILTINS,                               \
-   TARGET_EXPAND_BUILTIN,                      \
-   TARGET_SECTION_TYPE_FLAGS,                  \
-+  TARGET_CANNOT_MODIFY_JUMPS_P,                       \
-   TARGET_HAVE_NAMED_SECTIONS,                 \
-   TARGET_HAVE_CTORS_DTORS,                    \
--  TARGET_CANNOT_MODIFY_JUMPS_P                        \
-+  TARGET_HAVE_TLS                             \
- }
- #include "hooks.h"
---- gcc/target.h.jj    Tue Feb 12 16:19:14 2002
-+++ gcc/target.h       Wed Jun 19 19:33:52 2002
-@@ -178,6 +178,10 @@ struct gcc_target
-   /* ??? Should be merged with SELECT_SECTION and UNIQUE_SECTION.  */
-   unsigned int (* section_type_flags) PARAMS ((tree, const char *, int));
-+  /* True if new jumps cannot be created, to replace existing ones or
-+     not, at the current point in the compilation.  */
-+  bool (* cannot_modify_jumps_p) PARAMS ((void));
-+
-   /* True if arbitrary sections are supported.  */
-   bool have_named_sections;
-@@ -185,9 +189,8 @@ struct gcc_target
-      false if we're using collect2 for the job.  */
-   bool have_ctors_dtors;
--  /* True if new jumps cannot be created, to replace existing ones or
--     not, at the current point in the compilation.  */
--  bool (* cannot_modify_jumps_p) PARAMS ((void));
-+  /* True if thread-local storage is supported.  */
-+  bool have_tls;
- };
- extern struct gcc_target targetm;
---- gcc/toplev.c.jj    Thu May 30 11:08:44 2002
-+++ gcc/toplev.c       Wed Jun 19 19:33:52 2002
-@@ -682,12 +682,15 @@ int flag_shared_data;
- int flag_delayed_branch;
- /* Nonzero if we are compiling pure (sharable) code.
--   Value is 1 if we are doing reasonable (i.e. simple
--   offset into offset table) pic.  Value is 2 if we can
--   only perform register offsets.  */
-+   Value is 1 if we are doing "small" pic; value is 2 if we're doing
-+   "large" pic.  */
- int flag_pic;
-+/* Set to the default thread-local storage (tls) model to use.  */
-+
-+enum tls_model flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC;
-+
- /* Nonzero means generate extra code for exception handling and enable
-    exception handling.  */
-@@ -3609,6 +3612,7 @@ display_help ()
-   printf (_("  -finline-limit=<number> Limits the size of inlined functions to <number>\n"));
-   printf (_("  -fmessage-length=<number> Limits diagnostics messages lengths to <number> characters per line.  0 suppresses line-wrapping\n"));
-   printf (_("  -fdiagnostics-show-location=[once | every-line] Indicates how often source location information should be emitted, as prefix, at the beginning of diagnostics when line-wrapping\n"));
-+  printf (_("  -ftls-model=[global-dynamic | local-dynamic | initial-exec | local-exec] Indicates the default thread-local storage code generation model\n"));
-   for (i = ARRAY_SIZE (f_options); i--;)
-     {
-@@ -3887,6 +3891,19 @@ decode_f_option (arg)
-                                MAX_INLINE_INSNS);
-       set_param_value ("max-inline-insns", val);
-     }
-+  else if ((option_value = skip_leading_substring (arg, "tls-model=")))
-+    {
-+      if (strcmp (option_value, "global-dynamic") == 0)
-+      flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC;
-+      else if (strcmp (option_value, "local-dynamic") == 0)
-+      flag_tls_default = TLS_MODEL_LOCAL_DYNAMIC;
-+      else if (strcmp (option_value, "initial-exec") == 0)
-+      flag_tls_default = TLS_MODEL_INITIAL_EXEC;
-+      else if (strcmp (option_value, "local-exec") == 0)
-+      flag_tls_default = TLS_MODEL_LOCAL_EXEC;
-+      else
-+      warning ("`%s': unknown tls-model option", arg - 2);
-+    }
- #ifdef INSN_SCHEDULING
-   else if ((option_value = skip_leading_substring (arg, "sched-verbose=")))
-     fix_sched_param ("verbose", option_value);
---- gcc/tree.c.jj      Sun Apr 28 23:20:20 2002
-+++ gcc/tree.c Wed Jun 19 19:33:52 2002
-@@ -1510,12 +1510,13 @@ staticp (arg)
-     case FUNCTION_DECL:
-       /* Nested functions aren't static, since taking their address
-        involves a trampoline.  */
--      return (decl_function_context (arg) == 0 || DECL_NO_STATIC_CHAIN (arg))
--      && ! DECL_NON_ADDR_CONST_P (arg);
-+      return ((decl_function_context (arg) == 0 || DECL_NO_STATIC_CHAIN (arg))
-+            && ! DECL_NON_ADDR_CONST_P (arg));
-     case VAR_DECL:
--      return (TREE_STATIC (arg) || DECL_EXTERNAL (arg))
--      && ! DECL_NON_ADDR_CONST_P (arg);
-+      return ((TREE_STATIC (arg) || DECL_EXTERNAL (arg))
-+            && ! DECL_THREAD_LOCAL (arg)
-+            && ! DECL_NON_ADDR_CONST_P (arg));
-     case CONSTRUCTOR:
-       return TREE_STATIC (arg);
---- gcc/tree.h.jj      Wed Jun 19 19:33:50 2002
-+++ gcc/tree.h Wed Jun 19 19:33:52 2002
-@@ -1614,6 +1614,10 @@ struct tree_type
- /* In a FUNCTION_DECL, nonzero if the function cannot be inlined.  */
- #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.uninlinable)
-+/* In a VAR_DECL, nonzero if the data should be allocated from 
-+   thread-local storage.  */
-+#define DECL_THREAD_LOCAL(NODE) (VAR_DECL_CHECK (NODE)->decl.thread_local_flag)
-+
- /* In a FUNCTION_DECL, the saved representation of the body of the
-    entire function.  Usually a COMPOUND_STMT, but in C++ this may also
-    be a RETURN_INIT, CTOR_INITIALIZER, or TRY_BLOCK.  */
-@@ -1792,7 +1796,8 @@ struct tree_decl
-   unsigned non_addressable : 1;
-   unsigned user_align : 1;
-   unsigned uninlinable : 1;
--  /* Three unused bits.  */
-+  unsigned thread_local_flag : 1;
-+  /* Two unused bits.  */
-   unsigned lang_flag_0 : 1;
-   unsigned lang_flag_1 : 1;
---- gcc/varasm.c.jj    Wed Jun 19 19:33:51 2002
-+++ gcc/varasm.c       Wed Jun 19 19:33:52 2002
-@@ -1599,14 +1599,24 @@ assemble_variable (decl, top_level, at_e
-   /* Handle uninitialized definitions.  */
--  if ((DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node)
--      /* If the target can't output uninitialized but not common global data
--       in .bss, then we have to use .data.  */
--#if ! defined ASM_EMIT_BSS
--      && DECL_COMMON (decl)
-+  /* If the decl has been given an explicit section name, then it
-+     isn't common, and shouldn't be handled as such.  */
-+  if (DECL_SECTION_NAME (decl) || dont_output_data)
-+    ;
-+  /* We don't implement common thread-local data at present.  */
-+  else if (DECL_THREAD_LOCAL (decl))
-+    {
-+      if (DECL_COMMON (decl))
-+      sorry ("thread-local COMMON data not implemented");
-+    }
-+#ifndef ASM_EMIT_BSS
-+  /* If the target can't output uninitialized but not common global data
-+     in .bss, then we have to use .data.  */
-+  else if (!DECL_COMMON (decl))
-+    ;
- #endif
--      && DECL_SECTION_NAME (decl) == NULL_TREE
--      && ! dont_output_data)
-+  else if (DECL_INITIAL (decl) == 0
-+         || DECL_INITIAL (decl) == error_mark_node)
-     {
-       unsigned HOST_WIDE_INT size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
-       unsigned HOST_WIDE_INT rounded = size;
-@@ -5324,14 +5334,22 @@ default_section_type_flags (decl, name, 
-   if (decl && DECL_ONE_ONLY (decl))
-     flags |= SECTION_LINKONCE;
-+  if (decl && TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl))
-+    flags |= SECTION_TLS | SECTION_WRITE;
-+
-   if (strcmp (name, ".bss") == 0
-       || strncmp (name, ".bss.", 5) == 0
-       || strncmp (name, ".gnu.linkonce.b.", 16) == 0
-       || strcmp (name, ".sbss") == 0
-       || strncmp (name, ".sbss.", 6) == 0
--      || strncmp (name, ".gnu.linkonce.sb.", 17) == 0)
-+      || strncmp (name, ".gnu.linkonce.sb.", 17) == 0
-+      || strcmp (name, ".tbss") == 0)
-     flags |= SECTION_BSS;
-+  if (strcmp (name, ".tdata") == 0
-+      || strcmp (name, ".tbss") == 0)
-+    flags |= SECTION_TLS;
-+
-   return flags;
- }
-@@ -5374,6 +5392,8 @@ default_elf_asm_named_section (name, fla
-     *f++ = 'M';
-   if (flags & SECTION_STRINGS)
-     *f++ = 'S';
-+  if (flags & SECTION_TLS)
-+    *f++ = 'T';
-   *f = '\0';
-   if (flags & SECTION_BSS)
diff --git a/gcc32-tls2.patch b/gcc32-tls2.patch
deleted file mode 100644 (file)
index 65eea64..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-2002-07-30  Jakub Jelinek  <jakub@redhat.com>
-
-       * expr.c (expand_expr) [ADDR_EXPR]: Force addresses of thread-local
-       variables into pseudo.
-
-       * gcc.dg/tls/opt-1.c: New test.
-
---- gcc/testsuite/gcc.dg/tls/opt-1.c.jj        2002-07-30 13:57:33.000000000 +0200
-+++ gcc/testsuite/gcc.dg/tls/opt-1.c   2002-07-30 13:56:40.000000000 +0200
-@@ -0,0 +1,28 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fPIC" } */
-+/* { dg-options "-O2 -fPIC -mcpu=i686" { target i?86-*-* } } */
-+
-+extern __thread int thr;
-+
-+static int x;
-+
-+static void
-+bar (void)
-+{
-+  x = 1;
-+}
-+
-+static void
-+#ifdef __i386__
-+__attribute__ ((regparm (3)))
-+#endif
-+foo (const char *x, void *y, int *z)
-+{
-+  bar ();
-+}
-+
-+void
-+test (const char *x, void *y)
-+{
-+  foo (x, y, &thr);
-+}
---- gcc/expr.c.jj      2002-07-30 12:49:43.000000000 +0200
-+++ gcc/expr.c 2002-07-30 20:18:36.000000000 +0200
-@@ -8833,7 +8833,12 @@ expand_expr (exp, target, tmode, modifie
-         op0 = force_operand (XEXP (op0, 0), target);
-       }
--      if (flag_force_addr
-+      if ((flag_force_addr
-+         || (TREE_CODE (TREE_OPERAND (exp, 0)) == VAR_DECL
-+             && DECL_THREAD_LOCAL (TREE_OPERAND (exp, 0))
-+             && ! memory_address_p (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp,
-+                                                                        0))),
-+                                    op0)))
-         && GET_CODE (op0) != REG
-         && modifier != EXPAND_CONST_ADDRESS
-         && modifier != EXPAND_INITIALIZER
diff --git a/gcc32-tls3.patch b/gcc32-tls3.patch
deleted file mode 100644 (file)
index 17cd7cd..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-2002-08-06  Aldy Hernandez  <aldyh@redhat.com>
-
-       * c-decl.c (duplicate_decls): Error out for incompatible TLS
-       declarations.
-
-       * testsuite/gcc.dg/tls/diag-3.c: New.
-
-*** gcc/c-decl.c       1 Aug 2002 06:20:30 -0000       1.344
---- gcc/c-decl.c       7 Aug 2002 01:01:55 -0000
-*************** duplicate_decls (newdecl, olddecl, diffe
-*** 1673,1678 ****
---- 1673,1692 ----
-        if (TREE_CODE (newdecl) == VAR_DECL)
-       DECL_INITIAL (newdecl) = 0;
-      }
-+   /* TLS cannot follow non-TLS declaration.  */
-+   else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
-+         && !DECL_THREAD_LOCAL (olddecl) && DECL_THREAD_LOCAL (newdecl))
-+     {
-+       error_with_decl (newdecl, "thread-local declaration of `%s' follows non thread-local declaration");
-+       error_with_decl (olddecl, "previous declaration of `%s'");
-+     }
-+   /* non-TLS declaration cannot follow TLS declaration.  */
-+   else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
-+         && DECL_THREAD_LOCAL (olddecl) && !DECL_THREAD_LOCAL (newdecl))
-+     {
-+       error_with_decl (newdecl, "non thread-local declaration of `%s' follows thread-local declaration");
-+       error_with_decl (olddecl, "previous declaration of `%s'");
-+     }
-    else
-      {
-        errmsg = redeclaration_error_message (newdecl, olddecl);
-*** gcc/testsuite/gcc.dg/tls/diag-3.c  1 Jan 1970 00:00:00 -0000
---- gcc/testsuite/gcc.dg/tls/diag-3.c  7 Aug 2002 01:01:55 -0000
-***************
-*** 0 ****
---- 1,10 ----
-+ /* Report invalid extern and __thread combinations.  */
-+ 
-+ extern int j;                /* { dg-error "previous declaration" } */
-+ __thread int j;              /* { dg-error "thread-local declaration" } */
-+ 
-+ extern __thread int i;       /* { dg-error "previous declaration" } */
-+ int i;                       /* { dg-error "non thread-local" } */
-+ 
-+ extern __thread int k;       /* This is fine.  */
-+ __thread int k;
-
diff --git a/gcc32-tls4.patch b/gcc32-tls4.patch
deleted file mode 100644 (file)
index 014c403..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-2002-05-22  Richard Henderson  <rth@redhat.com>
-
-       * varasm.c (default_section_type_flags): Handle tls data and
-       default sections.
-
-       * gcc.dg/tls/section-1.c: New test.
-
-2002-03-15  Jason Merrill  <jason@redhat.com>
-
-       * varasm.c (assemble_variable): Call resolve_unique_section before
-       checking DECL_SECTION_NAME.
-
---- gcc/testsuite/gcc.dg/tls/section-1.c.jj    2002-08-08 16:11:55.000000000 +0200
-+++ gcc/testsuite/gcc.dg/tls/section-1.c       2002-08-08 16:19:08.000000000 +0200
-@@ -0,0 +1,11 @@
-+/* Verify that we get errors for trying to put TLS data in 
-+   sections which can't work.  */
-+
-+#define A(X)  __attribute__((section(X)))
-+
-+__thread int i A("foo");              /* Ok */
-+
-+__thread int j A(".data");  /* { dg-error "causes a section type conflict" "conflict with .data section" { xfail *-*-* } } */
-+
-+int k A("bar");
-+__thread int l A("bar");  /* { dg-error "causes a section type conflict" "conflict with user-defined section" } */
---- gcc/varasm.c.jj    2002-08-01 20:58:53.000000000 +0200
-+++ gcc/varasm.c       2002-08-08 16:10:15.000000000 +0200
-@@ -1599,6 +1599,13 @@
-   if (TREE_PUBLIC (decl))
-     maybe_assemble_visibility (decl);
-+  /* Output any data that we will need to use the address of.  */
-+  if (DECL_INITIAL (decl) == error_mark_node)
-+    reloc = contains_pointers_p (TREE_TYPE (decl)) ? 3 : 0;
-+  else if (DECL_INITIAL (decl))
-+    reloc = output_addressed_constants (DECL_INITIAL (decl));
-+  resolve_unique_section (decl, reloc, flag_data_sections);
-+
-   /* Handle uninitialized definitions.  */
-   /* If the decl has been given an explicit section name, then it
-@@ -1654,14 +1661,7 @@
-   if (TREE_PUBLIC (decl) && DECL_NAME (decl))
-     globalize_decl (decl);
--  /* Output any data that we will need to use the address of.  */
--  if (DECL_INITIAL (decl) == error_mark_node)
--    reloc = contains_pointers_p (TREE_TYPE (decl)) ? 3 : 0;
--  else if (DECL_INITIAL (decl))
--    reloc = output_addressed_constants (DECL_INITIAL (decl));
--
-   /* Switch to the appropriate section.  */
--  resolve_unique_section (decl, reloc, flag_data_sections);
-   variable_section (decl, reloc);
-   /* dbxout.c needs to know this.  */
-@@ -5345,11 +5345,14 @@
-       || strcmp (name, ".sbss") == 0
-       || strncmp (name, ".sbss.", 6) == 0
-       || strncmp (name, ".gnu.linkonce.sb.", 17) == 0
--      || strcmp (name, ".tbss") == 0)
-+      || strcmp (name, ".tbss") == 0
-+      || strncmp (name, ".gnu.linkonce.tb.", 17) == 0)
-     flags |= SECTION_BSS;
-   if (strcmp (name, ".tdata") == 0
--      || strcmp (name, ".tbss") == 0)
-+      || strcmp (name, ".tbss") == 0
-+      || strncmp (name, ".gnu.linkonce.td.", 17) == 0
-+      || strncmp (name, ".gnu.linkonce.tb.", 17) == 0)
-     flags |= SECTION_TLS;
-   return flags;
diff --git a/gcc32-tls5.patch b/gcc32-tls5.patch
deleted file mode 100644 (file)
index 2afc953..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-2002-08-08  Jakub Jelinek  <jakub@redhat.com>
-
-       * config/i386/i386.c (legitimate_constant_p): UNSPEC_TP is not
-       legitimate constant.
-       (legitimate_pic_operand_p): Neither pic operand.
-       (legitimate_address_p): But legitimate address.
-       (get_thread_pointer): Generate MEM/u instead of CONST around
-       UNSPEC_TP.
-       (print_operand): Remove printing of UNSPEC_TP.
-       (print_operand_address): And print it here.
-
-       * gcc.dg/tls/opt-2.c: New test.
-
---- gcc/config/i386/i386.c.jj  2002-08-07 22:18:39.000000000 +0200
-+++ gcc/config/i386/i386.c     2002-08-08 18:18:18.000000000 +0200
-@@ -4861,8 +4861,6 @@
-         {
-         case UNSPEC_TPOFF:
-           return local_exec_symbolic_operand (XVECEXP (inner, 0, 0), Pmode);
--        case UNSPEC_TP:
--          return true;
-         default:
-           return false;
-         }
-@@ -4921,8 +4919,6 @@
-         {
-         case UNSPEC_TPOFF:
-           return local_exec_symbolic_operand (XVECEXP (inner, 0, 0), Pmode);
--        case UNSPEC_TP:
--          return true;
-         default:
-           return false;
-         }
-@@ -5048,6 +5044,13 @@
-       debug_rtx (addr);
-     }
-+  if (GET_CODE (addr) == UNSPEC && XINT (addr, 1) == UNSPEC_TP)
-+    {
-+      if (TARGET_DEBUG_ADDR)
-+      fprintf (stderr, "Success.\n");
-+      return TRUE;
-+    }
-+
-   if (ix86_decompose_address (addr, &parts) <= 0)
-     {
-       reason = "decomposition failed";
-@@ -5499,7 +5502,9 @@
-   rtx tp;
-   tp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TP);
--  tp = gen_rtx_CONST (Pmode, tp);
-+  tp = gen_rtx_MEM (Pmode, tp);
-+  RTX_UNCHANGING_P (tp) = 1;
-+  set_mem_alias_set (tp, ix86_GOT_alias_set ());
-   tp = force_reg (Pmode, tp);
-   return tp;
-@@ -6613,17 +6618,6 @@
-       fprintf (file, "%s", dstr);
-     }
--  else if (GET_CODE (x) == CONST
--         && GET_CODE (XEXP (x, 0)) == UNSPEC
--         && XINT (XEXP (x, 0), 1) == UNSPEC_TP)
--    {
--      if (ASSEMBLER_DIALECT == ASM_INTEL)
--      fputs ("DWORD PTR ", file);
--      if (ASSEMBLER_DIALECT == ASM_ATT || USER_LABEL_PREFIX[0] == 0)
--      putc ('%', file);
--      fputs ("gs:0", file);
--    }
--
-   else
-     {
-       if (code != 'P')
-@@ -6662,6 +6656,16 @@
-   rtx base, index, disp;
-   int scale;
-+  if (GET_CODE (addr) == UNSPEC && XINT (addr, 1) == UNSPEC_TP)
-+    {
-+      if (ASSEMBLER_DIALECT == ASM_INTEL)
-+      fputs ("DWORD PTR ", file);
-+      if (ASSEMBLER_DIALECT == ASM_ATT || USER_LABEL_PREFIX[0] == 0)
-+      putc ('%', file);
-+      fputs ("gs:0", file);
-+      return;
-+    }
-+
-   if (! ix86_decompose_address (addr, &parts))
-     {
-       output_operand_lossage ("Wrong address expression or operand constraint");
---- gcc/testsuite/gcc.dg/tls/opt-2.c.jj        2002-08-08 18:36:32.000000000 +0200
-+++ gcc/testsuite/gcc.dg/tls/opt-2.c   2002-08-08 18:34:44.000000000 +0200
-@@ -0,0 +1,53 @@
-+/* This testcase generated invalid assembly on IA-32,
-+   since %gs:0 memory load was not exposed to the compiler
-+   as memory load and mem to mem moves are not possible
-+   on IA-32.  */
-+/* { dg-do link } */
-+/* { dg-options "-O2 -ftls-model=initial-exec" } */
-+/* { dg-options "-O2 -ftls-model=initial-exec -march=i686" { target i?86-*-* } } */
-+
-+__thread int thr;
-+
-+struct A
-+{
-+  unsigned int a, b, c, d, e;
-+};
-+
-+int bar (int x, unsigned long y, void *z)
-+{
-+  return 0;
-+}
-+
-+int
-+foo (int x, int y, const struct A *z)
-+{
-+  struct A b;
-+  int d;
-+
-+  b = *z;
-+  d = bar (x, y, &b);
-+  if (d == 0 && y == 0x5402)
-+    {
-+      int e = thr;
-+      d = bar (x, 0x5401, &b);
-+      if (d)
-+      {
-+        thr = e;
-+        d = 0;
-+      }
-+      else if ((z->c & 0600) != (b.c & 0600)
-+             || ((z->c & 060) && ((z->c & 060) != (b.c & 060))))
-+      {
-+        thr = 22;
-+        d = -1;
-+      }
-+    }
-+
-+  return d;
-+}
-+
-+int main (void)
-+{
-+  foo (1, 2, 0);
-+  return 0;
-+}
diff --git a/gcov.1 b/gcov.1
deleted file mode 100644 (file)
index f322f65..0000000
--- a/gcov.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH GCOV 1
-.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
-.\" other parms are allowed: see man(7), man(1)
-.SH NAME
-gcov \- test coverage program for GNU CC
-.SH SYNOPSIS
-.B gcov
-.I "[-b] [-v] [-n] [-l] [-f] [-o directory] sourcefile"
-.br
-.SH "DESCRIPTION"
-This manual page documents briefly the
-.BR gcov
-command.
-This manual page was written for the Debian GNU/Linux distribution
-(but may be used by others), because the original program does not
-have a manual page.
-Instead, it has documentation in the GNU Info format; see below.
-.PP
-.B gcov
-is a test coverage program.  Use it in concert with GNU
-CC to analyze your programs to help create more efficient, faster
-running code.  You can use gcov as a profiling tool to help
-discover where your optimization efforts will best affect your code.  You
-can also use gcov along with the other profiling tool,
-.B gprof
-, to assess which parts of your code use the greatest amount
-of computing time.
-.SH "SEE ALSO"
-The program is documented fully by
-.IR "gcc: The GNU C compiler.",
-available via the Info system.  The documentation for genclass can be
-found in the subsection "Gcov", under "a GNU CC test coverage program".
-.SH AUTHOR
-This manual page was written by the egcs maintainers for the Debian
-GNU/Linux system.
This page took 1.052327 seconds and 4 git commands to generate.