From 6a2a546676d319a399d13186a6dcea992165ac63 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Fri, 21 Apr 2006 23:40:37 +0000 Subject: [PATCH] - orphaned, outdated Changed files: c++filt.1 -> 1.2 gcc-O2-bug.patch -> 1.2 gcc-ada-bootstrap.patch -> 1.3 gcc-alpha-complex-float.patch -> 1.4 gcc-amd64-thunk.patch -> 1.2 gcc-bootstrap.patch -> 1.2 gcc-builtin-apply.patch -> 1.2 gcc-cpp-dos-newlines.patch -> 1.2 gcc-cpp-macro-doc.patch -> 1.2 gcc-crtendS.patch -> 1.2 gcc-cse-find_best_addr.patch -> 1.2 gcc-default-arch.patch -> 1.2 gcc-disableshared.patch -> 1.2 gcc-ffi64.patch -> 1.2 gcc-gcc-page.c.patch -> 1.2 gcc-gcj-vs-iconv.patch -> 1.2 gcc-gpc.patch -> 1.2 gcc-libobjc.patch -> 1.2 gcc-libstdc++-bastring.patch -> 1.2 gcc-libstdc++-out-of-mem.patch -> 1.2 gcc-libstdc++-wstring.patch -> 1.2 gcc-libstdc++.patch -> 1.3 gcc-m68k-pic.patch -> 1.2 gcc-manpage.patch -> 1.2 gcc-march-i686-fix.patch -> 1.2 gcc-paths.patch -> 1.4 gcc-pld-linux.patch -> 1.5 gcc-pointer-arith.patch -> 1.2 gcc-ppc-ada-hack.patch -> 1.2 gcc-ppc-descriptions.patch -> 1.2 gcc-ppc-ice.patch -> 1.2 gcc-pr19664.patch -> 1.2 gcc-pr19664_gnu_internal.patch -> 1.2 gcc-pr19664_libstdc++.patch -> 1.2 gcc-pr7776.patch -> 1.2 gcc-sparc32-rfi.patch -> 1.2 gcc32-ada-link.patch -> 1.7 gcc32-attr-visibility.patch -> 1.2 gcc32-attr-visibility2.patch -> 1.2 gcc32-attr-visibility3.patch -> 1.2 gcc32-attr-visibility4.patch -> 1.2 gcc32-attr-visibility5.patch -> 1.2 gcc32-boehm-gc-libs.patch -> 1.4 gcc32-bogus-inline.patch -> 1.3 gcc32-c++-nrv-test.patch -> 1.2 gcc32-c++-pretty_function.patch -> 1.2 gcc32-c++-tsubst-asm.patch -> 1.2 gcc32-cfg-eh.patch -> 1.2 gcc32-debug-pr7241.patch -> 1.2 gcc32-doc-gcov.patch -> 1.2 gcc32-duplicate-decl.patch -> 1.2 gcc32-dwarf2-pr6381.patch -> 1.2 gcc32-dwarf2-pr6436-test.patch -> 1.2 gcc32-fde-merge-compat.patch -> 1.2 gcc32-hard-reg-sharing.patch -> 1.2 gcc32-hard-reg-sharing2.patch -> 1.2 gcc32-i386-default-momit-leaf-frame-pointer.patch -> 1.2 gcc32-i386-memtest-test.patch -> 1.2 gcc32-i386-no-default-momit-leaf-frame-pointer.patch -> 1.2 gcc32-i386-pic-label-thunk.patch -> 1.2 gcc32-i386-profile-olfp.patch -> 1.2 gcc32-inline-label.patch -> 1.2 gcc32-java-no-rpath.patch -> 1.2 gcc32-libstdc++-glibc.patch -> 1.2 gcc32-locale_in_ctype_members.patch -> 1.2 gcc32-locale_in_ctype_members_header.patch -> 1.2 gcc32-locale_in_monetary_members.patch -> 1.2 gcc32-pr6842.patch -> 1.2 gcc32-sparc-sll1.patch -> 1.2 gcc32-test-rh65771.patch -> 1.2 gcc32-test-rotate.patch -> 1.2 gcc32-tls-dwarf2.patch -> 1.2 gcc32-tls.patch -> 1.4 gcc32-tls2.patch -> 1.2 gcc32-tls3.patch -> 1.3 gcc32-tls4.patch -> 1.3 gcc32-tls5.patch -> 1.3 gcc33-multi32-hack.patch -> 1.2 gcov.1 -> 1.2 --- c++filt.1 | 263 - gcc-O2-bug.patch | 42 - gcc-ada-bootstrap.patch | 7695 ----------------- gcc-alpha-complex-float.patch | 160 - gcc-amd64-thunk.patch | 21 - gcc-bootstrap.patch | 153 - gcc-builtin-apply.patch | 62 - gcc-cpp-dos-newlines.patch | 76 - gcc-cpp-macro-doc.patch | 96 - gcc-crtendS.patch | 51 - gcc-cse-find_best_addr.patch | 71 - gcc-default-arch.patch | 30 - gcc-disableshared.patch | 11 - gcc-ffi64.patch | 11 - gcc-gcc-page.c.patch | 15 - gcc-gcj-vs-iconv.patch | 733 -- gcc-gpc.patch | 361 - gcc-libobjc.patch | 38 - gcc-libstdc++-bastring.patch | 46 - gcc-libstdc++-out-of-mem.patch | 57 - gcc-libstdc++-wstring.patch | 15 - gcc-libstdc++.patch | 39 - gcc-m68k-pic.patch | 64 - gcc-manpage.patch | 20 - gcc-march-i686-fix.patch | 110 - gcc-paths.patch | 19 - gcc-pld-linux.patch | 275 - gcc-pointer-arith.patch | 124 - gcc-ppc-ada-hack.patch | 13 - gcc-ppc-descriptions.patch | 231 - gcc-ppc-ice.patch | 24 - gcc-pr19664.patch | 30 - gcc-pr19664_gnu_internal.patch | 256 - gcc-pr19664_libstdc++.patch | 1717 ---- gcc-pr7776.patch | 88 - gcc-sparc32-rfi.patch | 21 - gcc32-ada-link.patch | 127 - gcc32-attr-visibility.patch | 283 - gcc32-attr-visibility2.patch | 109 - gcc32-attr-visibility3.patch | 35 - gcc32-attr-visibility4.patch | 16 - gcc32-attr-visibility5.patch | 24 - gcc32-boehm-gc-libs.patch | 196 - gcc32-bogus-inline.patch | 99 - gcc32-c++-nrv-test.patch | 120 - gcc32-c++-pretty_function.patch | 170 - gcc32-c++-tsubst-asm.patch | 19 - gcc32-cfg-eh.patch | 74 - gcc32-debug-pr7241.patch | 21 - gcc32-doc-gcov.patch | 72 - gcc32-duplicate-decl.patch | 17 - gcc32-dwarf2-pr6381.patch | 18 - gcc32-dwarf2-pr6436-test.patch | 24 - gcc32-fde-merge-compat.patch | 34 - gcc32-hard-reg-sharing.patch | 631 -- gcc32-hard-reg-sharing2.patch | 17 - ...386-default-momit-leaf-frame-pointer.patch | 75 - gcc32-i386-memtest-test.patch | 31 - ...-no-default-momit-leaf-frame-pointer.patch | 13 - gcc32-i386-pic-label-thunk.patch | 91 - gcc32-i386-profile-olfp.patch | 102 - gcc32-inline-label.patch | 55 - gcc32-java-no-rpath.patch | 93 - gcc32-libstdc++-glibc.patch | 504 -- gcc32-locale_in_ctype_members.patch | 69 - gcc32-locale_in_ctype_members_header.patch | 186 - gcc32-locale_in_monetary_members.patch | 59 - gcc32-pr6842.patch | 48 - gcc32-sparc-sll1.patch | 95 - gcc32-test-rh65771.patch | 93 - gcc32-test-rotate.patch | 323 - gcc32-tls-dwarf2.patch | 337 - gcc32-tls.patch | 4294 --------- gcc32-tls2.patch | 54 - gcc32-tls3.patch | 48 - gcc32-tls4.patch | 74 - gcc32-tls5.patch | 149 - gcc33-multi32-hack.patch | 68 - gcov.1 | 35 - 79 files changed, 22040 deletions(-) delete mode 100644 c++filt.1 delete mode 100644 gcc-O2-bug.patch delete mode 100644 gcc-ada-bootstrap.patch delete mode 100644 gcc-alpha-complex-float.patch delete mode 100644 gcc-amd64-thunk.patch delete mode 100644 gcc-bootstrap.patch delete mode 100644 gcc-builtin-apply.patch delete mode 100644 gcc-cpp-dos-newlines.patch delete mode 100644 gcc-cpp-macro-doc.patch delete mode 100644 gcc-crtendS.patch delete mode 100644 gcc-cse-find_best_addr.patch delete mode 100644 gcc-default-arch.patch delete mode 100644 gcc-disableshared.patch delete mode 100644 gcc-ffi64.patch delete mode 100644 gcc-gcc-page.c.patch delete mode 100644 gcc-gcj-vs-iconv.patch delete mode 100644 gcc-gpc.patch delete mode 100644 gcc-libobjc.patch delete mode 100644 gcc-libstdc++-bastring.patch delete mode 100644 gcc-libstdc++-out-of-mem.patch delete mode 100644 gcc-libstdc++-wstring.patch delete mode 100644 gcc-libstdc++.patch delete mode 100644 gcc-m68k-pic.patch delete mode 100644 gcc-manpage.patch delete mode 100644 gcc-march-i686-fix.patch delete mode 100644 gcc-paths.patch delete mode 100644 gcc-pld-linux.patch delete mode 100644 gcc-pointer-arith.patch delete mode 100644 gcc-ppc-ada-hack.patch delete mode 100644 gcc-ppc-descriptions.patch delete mode 100644 gcc-ppc-ice.patch delete mode 100644 gcc-pr19664.patch delete mode 100644 gcc-pr19664_gnu_internal.patch delete mode 100644 gcc-pr19664_libstdc++.patch delete mode 100644 gcc-pr7776.patch delete mode 100644 gcc-sparc32-rfi.patch delete mode 100644 gcc32-ada-link.patch delete mode 100644 gcc32-attr-visibility.patch delete mode 100644 gcc32-attr-visibility2.patch delete mode 100644 gcc32-attr-visibility3.patch delete mode 100644 gcc32-attr-visibility4.patch delete mode 100644 gcc32-attr-visibility5.patch delete mode 100644 gcc32-boehm-gc-libs.patch delete mode 100644 gcc32-bogus-inline.patch delete mode 100644 gcc32-c++-nrv-test.patch delete mode 100644 gcc32-c++-pretty_function.patch delete mode 100644 gcc32-c++-tsubst-asm.patch delete mode 100644 gcc32-cfg-eh.patch delete mode 100644 gcc32-debug-pr7241.patch delete mode 100644 gcc32-doc-gcov.patch delete mode 100644 gcc32-duplicate-decl.patch delete mode 100644 gcc32-dwarf2-pr6381.patch delete mode 100644 gcc32-dwarf2-pr6436-test.patch delete mode 100644 gcc32-fde-merge-compat.patch delete mode 100644 gcc32-hard-reg-sharing.patch delete mode 100644 gcc32-hard-reg-sharing2.patch delete mode 100644 gcc32-i386-default-momit-leaf-frame-pointer.patch delete mode 100644 gcc32-i386-memtest-test.patch delete mode 100644 gcc32-i386-no-default-momit-leaf-frame-pointer.patch delete mode 100644 gcc32-i386-pic-label-thunk.patch delete mode 100644 gcc32-i386-profile-olfp.patch delete mode 100644 gcc32-inline-label.patch delete mode 100644 gcc32-java-no-rpath.patch delete mode 100644 gcc32-libstdc++-glibc.patch delete mode 100644 gcc32-locale_in_ctype_members.patch delete mode 100644 gcc32-locale_in_ctype_members_header.patch delete mode 100644 gcc32-locale_in_monetary_members.patch delete mode 100644 gcc32-pr6842.patch delete mode 100644 gcc32-sparc-sll1.patch delete mode 100644 gcc32-test-rh65771.patch delete mode 100644 gcc32-test-rotate.patch delete mode 100644 gcc32-tls-dwarf2.patch delete mode 100644 gcc32-tls.patch delete mode 100644 gcc32-tls2.patch delete mode 100644 gcc32-tls3.patch delete mode 100644 gcc32-tls4.patch delete mode 100644 gcc32-tls5.patch delete mode 100644 gcc33-multi32-hack.patch delete mode 100644 gcov.1 diff --git a/c++filt.1 b/c++filt.1 deleted file mode 100644 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 -.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 index b5490c1..0000000 --- a/gcc-O2-bug.patch +++ /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; -+} - - /* 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 index 12cfc80..0000000 --- a/gcc-ada-bootstrap.patch +++ /dev/null @@ -1,7695 +0,0 @@ ---- gcc/ada/sinfo.h 1970-01-01 01:00:00.000000000 +0100 -+++ 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/ada/einfo.h 1970-01-01 01:00:00.000000000 +0100 -+++ 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/ada/nmake.adb 1970-01-01 01:00:00.000000000 +0100 -+++ 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/ada/nmake.ads 1970-01-01 01:00:00.000000000 +0100 -+++ 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/ada/treeprs.ads 1970-01-01 01:00:00.000000000 +0100 -+++ 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-alpha-complex-float.patch b/gcc-alpha-complex-float.patch deleted file mode 100644 index 78b29ad..0000000 --- a/gcc-alpha-complex-float.patch +++ /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-amd64-thunk.patch b/gcc-amd64-thunk.patch deleted file mode 100644 index c8a8190..0000000 --- a/gcc-amd64-thunk.patch +++ /dev/null @@ -1,21 +0,0 @@ -PR target/16092 fix backport from gcc 3.4.0 ---- gcc-3.3.4/gcc/config/i386/i386.c.orig 2004-05-18 07:07:52.000000000 +0200 -+++ gcc-3.3.4/gcc/config/i386/i386.c 2004-06-20 19:17:22.244016950 +0200 -@@ -14673,15 +14673,14 @@ - output_asm_insn ("mov{l}\t{%0, %1|%1, %0}", xops); - } - -- xops[0] = DECL_RTL (function); -+ xops[0] = XEXP (DECL_RTL (function), 0); - if (TARGET_64BIT) - { - if (!flag_pic || (*targetm.binds_local_p) (function)) - output_asm_insn ("jmp\t%P0", xops); - else - { -- tmp = XEXP (xops[0], 0); -- tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp), UNSPEC_GOTPCREL); -+ tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, xops[0]), UNSPEC_GOTPCREL); - tmp = gen_rtx_CONST (Pmode, tmp); - tmp = gen_rtx_MEM (QImode, tmp); - xops[0] = tmp; diff --git a/gcc-bootstrap.patch b/gcc-bootstrap.patch deleted file mode 100644 index 94c8c20..0000000 --- a/gcc-bootstrap.patch +++ /dev/null @@ -1,153 +0,0 @@ -# DP: Make bootstrap: restartable at any point -# DP: From: Donn Terry - -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) > 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 index b452e50..0000000 --- a/gcc-builtin-apply.patch +++ /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 -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 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 (), 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 index d05d6b8..0000000 --- a/gcc-cpp-dos-newlines.patch +++ /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 index 54b336f..0000000 --- a/gcc-cpp-macro-doc.patch +++ /dev/null @@ -1,96 +0,0 @@ -# DP: cpp.texi: add a node documenting macro varargs. - -Sat Aug 7 14:56:50 1999 Matthias Klose - - * 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 index 7874c32..0000000 --- a/gcc-crtendS.patch +++ /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-cse-find_best_addr.patch b/gcc-cse-find_best_addr.patch deleted file mode 100644 index 6277758..0000000 --- a/gcc-cse-find_best_addr.patch +++ /dev/null @@ -1,71 +0,0 @@ -> On Thu, Jun 19, 2003 at 08:31:03AM +0200, Jan Hubicka wrote: -> > > Nathan Myers writes: -> > > -> > > > gnu/include/c++/3.4/x86_64-unknown-linux-gnu/bits/atomicity.h: In -> > > > function `int main()': -> > > > /amd/ncm/gnu/include/c++/3.4/x86_64-unknown-linux-gnu/bits/atomicity.h:43: error: inconsistent -> > > > operand constraints in an `asm' -> > > -> > > Honza, isn't this the bug in gcse that you're hunting down? -> > Yes, that looks like the same CSE problem. I will try to give it -> > priority this afternoon so it gets fixed. -> -> I take it, then, that this is a core compiler bug and not a std headers bug? -This patch should fix the problem. (at least it fixes it for the -similar testcase that comes from proprietary program. Do you think you -can simplify your code into small enought testcase for testsuite?) - -Bootstrap passed on x86-64, regtest in progress, OK if it suceeds? - -Honza - -Sat Jun 21 14:51:44 CEST 2003 Jan Hubicka - * cse.c (find_best_addr): Fold the best address discovered. -Index: cse.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/cse.c,v -retrieving revision 1.243.2.4 -diff -c -3 -p -r1.243.2.4 cse.c -*** gcc/gcc/cse.c 6 Jun 2003 10:09:09 -0000 1.243.2.4 ---- gcc/gcc/cse.c 21 Jun 2003 12:49:18 -0000 -*************** find_best_addr (insn, loc, mode) -*** 3021,3029 **** - - if (found_better) - { -! if (validate_change (insn, loc, -! canon_reg (copy_rtx (best_elt->exp), -! NULL_RTX), 0)) - return; - else - best_elt->flag = 1; ---- 3021,3049 ---- - - if (found_better) - { -! /* Avoid find_best_addr from touching this address again: -! at the beggining of this function we attempt to fold -! the address. Do it now as well. Not doing so would mean -! that we will create multiple versions of the address in the -! insn chain that may result in "+m" ASM constraint from not -! being matched. */ -! -! rtx best = canon_reg (copy_rtx (best_elt->exp), NULL_RTX); -! rtx folded = fold_rtx (copy_rtx (best), NULL_RTX); -! int addr_folded_cost = address_cost (folded, mode); -! int addr_cost = address_cost (best, mode); -! -! if ((addr_folded_cost < addr_cost -! || (addr_folded_cost == addr_cost -! /* ??? The rtx_cost comparison is left over from an -! older version of this code. It is probably no -! longer helpful. */ -! && (rtx_cost (folded, MEM) > rtx_cost (addr, MEM) -! || (approx_reg_cost (folded) -! < approx_reg_cost (addr))))) -! && validate_change (insn, loc, folded, 0)) -! return; -! if (validate_change (insn, loc, best, 0)) - return; - else - best_elt->flag = 1; diff --git a/gcc-default-arch.patch b/gcc-default-arch.patch deleted file mode 100644 index 0f23b8a..0000000 --- a/gcc-default-arch.patch +++ /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 -To: Matthias Klose -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 index d5d6006..0000000 --- a/gcc-disableshared.patch +++ /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-ffi64.patch b/gcc-ffi64.patch deleted file mode 100644 index 581a591..0000000 --- a/gcc-ffi64.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc/gcc/libffi/src/x86/ffi64.c 2004/01/21 06:11:08 1.6 -+++ gcc/gcc/libffi/src/x86/ffi64.c 2004/10/12 16:47:26 1.6.6.1 -@@ -341,6 +341,8 @@ - { - /* Pass this argument in memory. */ - argp = (void *)ALIGN(argp, (*p_arg)->alignment); -+ /* Stack arguments are *always* at least 8 byte aligned. */ -+ argp = (void *)ALIGN(argp, 8); - memcpy (argp, *p_argv, (*p_arg)->size); - argp += (*p_arg)->size; - } diff --git a/gcc-gcc-page.c.patch b/gcc-gcc-page.c.patch deleted file mode 100644 index 120a2df..0000000 --- a/gcc-gcc-page.c.patch +++ /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 index 5ec32a1..0000000 --- a/gcc-gcj-vs-iconv.patch +++ /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 -Subject: Patch: gcj -vs- iconv -From: Tom Tromey -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 - - 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 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 -+#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 index 5a1e904..0000000 --- a/gcc-gpc.patch +++ /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)); - -*************** 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 .BAR to calculate TYPE_SIZE -! (FOO), just substitute 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 index d32ac86..0000000 --- a/gcc-libobjc.patch +++ /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 index 6aae8da..0000000 --- a/gcc-libstdc++-bastring.patch +++ /dev/null @@ -1,46 +0,0 @@ -/* -From: Richard Kettlewell -To: submit@bugs.debian.org -Subject: Bug#46550: basic_string 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 - -template basic_string; - -/* -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 >::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 index a3d6b71..0000000 --- a/gcc-libstdc++-out-of-mem.patch +++ /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 - # 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 index 6210f88..0000000 --- a/gcc-libstdc++-wstring.patch +++ /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 string; --// typedef basic_string wstring; -+#ifdef __ENABLE_WSTRING -+typedef basic_string wstring; -+#endif - } // extern "C++" - - #endif diff --git a/gcc-libstdc++.patch b/gcc-libstdc++.patch deleted file mode 100644 index 473a2e7..0000000 --- a/gcc-libstdc++.patch +++ /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 index 6ff7224..0000000 --- a/gcc-m68k-pic.patch +++ /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 index 9aaee1b..0000000 --- a/gcc-manpage.patch +++ /dev/null @@ -1,20 +0,0 @@ -# DP: Document exit codes. - -Wed Oct 20 22:55:23 1999 Matthias Klose - - * 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 index 4aeeef0..0000000 --- a/gcc-march-i686-fix.patch +++ /dev/null @@ -1,110 +0,0 @@ -2002-08-17 H.J. Lu - - * calls.c (PUSH_ARGS_REVERSED): Define only if not defined. - * expr.c (PUSH_ARGS_REVERSED): Likewise. - -2002-07-26 H.J. Lu - - * 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 - - * 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-paths.patch b/gcc-paths.patch deleted file mode 100644 index e8b55e7..0000000 --- a/gcc-paths.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- gcc-3.3.3/gcc/gcc.c Sat Dec 22 01:40:45 2001 -+++ gcc-3.3.3/gcc/gcc.c.new Sun Dec 23 18:43:36 2001 -@@ -1160,13 +1160,13 @@ - /* Supply defaults for the standard prefixes. */ - - #ifndef STANDARD_EXEC_PREFIX --#define STANDARD_EXEC_PREFIX "/usr/local/lib/gcc-lib/" -+#define STANDARD_EXEC_PREFIX "/usr/lib/gcc-lib/" - #endif - #ifndef TOOLDIR_BASE_PREFIX --#define TOOLDIR_BASE_PREFIX "/usr/local/" -+#define TOOLDIR_BASE_PREFIX "/usr/" - #endif - #ifndef STANDARD_BINDIR_PREFIX --#define STANDARD_BINDIR_PREFIX "/usr/local/bin" -+#define STANDARD_BINDIR_PREFIX "/usr/bin" - #endif - - static const char *standard_exec_prefix = STANDARD_EXEC_PREFIX; diff --git a/gcc-pld-linux.patch b/gcc-pld-linux.patch deleted file mode 100644 index cf777eb..0000000 --- a/gcc-pld-linux.patch +++ /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 index 4e049f7..0000000 --- a/gcc-pointer-arith.patch +++ /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 -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 $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 -# 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 $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 parmlist_or_identifiers parmlist_or_identifiers_1 - %type identifiers_or_typenames - -+%type extension -+ - %type setspecs - - %type 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 = $1; } -+ { RESTORE_WARN_FLAGS ($1); } - ; - - datadef: -@@ -438,7 +449,7 @@ - /* __extension__ turns off -pedantic for following primary. */ - | extension cast_expr %prec UNARY - { $$ = $2; -- pedantic = $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 = $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 = $1; } -+ RESTORE_WARN_FLAGS ($1); } - ; - - components: -@@ -2441,8 +2452,9 @@ - - extension: - EXTENSION -- { $$ = pedantic; -- pedantic = 0; } -+ { $$ = SAVE_WARN_FLAGS(); -+ pedantic = 0; -+ warn_pointer_arith = 0; } - ; - - ifobjc diff --git a/gcc-ppc-ada-hack.patch b/gcc-ppc-ada-hack.patch deleted file mode 100644 index c2675f2..0000000 --- a/gcc-ppc-ada-hack.patch +++ /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 index bf8913c..0000000 --- a/gcc-ppc-descriptions.patch +++ /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 index 206e902..0000000 --- a/gcc-ppc-ice.patch +++ /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-pr19664.patch b/gcc-pr19664.patch deleted file mode 100644 index 00ce677..0000000 --- a/gcc-pr19664.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: "H dot J dot Lu" -Subject: PATCH: PR 19664: Don't change visibility if set by user - -This patch may fix visibility push(default)/pop. When visibility -has been set by user, we shouldn't change it. - - -2005-02-03 H.J. Lu - - PR C++/19664 - * decl2.c (determine_visibility): Don't set visibility to - hidden if it has been set explicitly by user. - ---- gcc-4.0.0/gcc/cp/decl2.c.orig 2005-04-05 17:38:09.000000000 +0200 -+++ gcc-4.0.0/gcc/cp/decl2.c 2005-05-05 00:41:14.000000000 +0200 -@@ -1636,8 +1636,12 @@ - && DECL_DECLARED_INLINE_P (decl) - && visibility_options.inlines_hidden) - { -- DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; -- DECL_VISIBILITY_SPECIFIED (decl) = 1; -+ /* Don't change it if it has been set explicitly by user. */ -+ if (!DECL_VISIBILITY_SPECIFIED (decl)) -+ { -+ DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; -+ DECL_VISIBILITY_SPECIFIED (decl) = 1; -+ } - } - else if (CLASSTYPE_VISIBILITY_SPECIFIED (class_type)) - { diff --git a/gcc-pr19664_gnu_internal.patch b/gcc-pr19664_gnu_internal.patch deleted file mode 100644 index c42438e..0000000 --- a/gcc-pr19664_gnu_internal.patch +++ /dev/null @@ -1,256 +0,0 @@ -2005-10-31 Benjamin Kosnik - - * src/mt_allocator.cc (__gnu_internal): Make hidden. - * src/pool_allocator.cc: Same. - * src/locale_init.cc (__gnu_internal): Same. - * src/locale.cc (__gnu_internal): Same. - * src/ios_init.cc (__gnu_internal): Same. - * src/globals_io.cc: Same. - * src/globals_locale.cc (__gnu_internal): Same. - * src/debug.cc (__gnu_internal): Same. - * src/ext-inst.cc (__gnu_internal): Same. - -*** gcc/libstdc++-v3/src/debug.cc 9 Sep 2005 10:14:33 -0000 1.15 ---- gcc/libstdc++-v3/src/debug.cc 28 Oct 2005 00:44:54 -0000 -*************** using namespace std; -*** 41,47 **** ---- 41,51 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - static __glibcxx_mutex_define_initialized(iterator_base_mutex); -+ -+ #pragma GCC visibility pop - } // namespace __gnu_internal - - namespace __gnu_debug -*** gcc/libstdc++-v3/src/ext-inst.cc 17 Aug 2005 02:14:21 -0000 1.8 ---- gcc/libstdc++-v3/src/ext-inst.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 1,6 **** - // Explicit instantiation file. - -! // Copyright (C) 2001, 2002, 2004 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 ---- 1,6 ---- - // Explicit instantiation file. - -! // Copyright (C) 2001, 2002, 2004, 2005 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 -*************** -*** 36,42 **** ---- 36,46 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - const int min_len = __gnu_cxx::_Rope_constants::_S_max_rope_depth + 1; -+ -+ #pragma GCC visibility pop - } - - namespace __gnu_cxx -*** gcc/libstdc++-v3/src/globals_io.cc 17 Aug 2005 02:14:22 -0000 1.3 ---- gcc/libstdc++-v3/src/globals_io.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 1,4 **** -! // Copyright (C) 2001, 2002, 2003, 2004 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 ---- 1,4 ---- -! // Copyright (C) 2001, 2002, 2003, 2004, 2005 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 -*************** namespace std -*** 76,81 **** ---- 76,83 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - using namespace std; - using namespace __gnu_cxx; - -*************** namespace __gnu_internal -*** 126,129 **** ---- 128,133 ---- - _GLIBCXX_mutex_address_init () - { __GTHREAD_MUTEX_INIT_FUNCTION (_GLIBCXX_mutex_address); } - #endif -+ -+ #pragma GCC visibility pop - } // namespace __gnu_internal -*** gcc/libstdc++-v3/src/globals_locale.cc 17 Aug 2005 02:14:22 -0000 1.4 ---- gcc/libstdc++-v3/src/globals_locale.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 1,4 **** -! // Copyright (C) 2001, 2002, 2003, 2004 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 ---- 1,4 ---- -! // Copyright (C) 2001, 2002, 2003, 2004, 2005 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 -*************** -*** 45,50 **** ---- 45,52 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - using namespace std; - - typedef char fake_locale_Impl[sizeof(locale::_Impl)] -*************** namespace __gnu_internal -*** 207,210 **** ---- 209,214 ---- - __attribute__ ((aligned(__alignof__(std::__timepunct_cache)))); - fake_time_cache_w timepunct_cache_w; - #endif -+ -+ #pragma GCC visibility pop - } // namespace __gnu_internal -*** gcc/libstdc++-v3/src/ios_init.cc 17 Aug 2005 02:14:22 -0000 1.8 ---- gcc/libstdc++-v3/src/ios_init.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 1,6 **** - // Iostreams base classes -*- C++ -*- - -! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free ---- 1,6 ---- - // Iostreams base classes -*- C++ -*- - -! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -*************** -*** 42,47 **** ---- 42,49 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - using namespace __gnu_cxx; - - // Extern declarations for global objects in src/globals.cc. -*************** namespace __gnu_internal -*** 62,67 **** ---- 64,71 ---- - extern stdio_filebuf buf_wcin; - extern stdio_filebuf buf_wcerr; - #endif -+ -+ #pragma GCC visibility pop - } // namespace __gnu_internal - - namespace std -*** gcc/libstdc++-v3/src/locale.cc 11 Oct 2005 06:19:13 -0000 1.112 ---- gcc/libstdc++-v3/src/locale.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 1,4 **** -! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free ---- 1,4 ---- -! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -*************** -*** 37,44 **** ---- 37,48 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - // Mutex object for cache access - static __glibcxx_mutex_define_initialized(locale_cache_mutex); -+ -+ #pragma GCC visibility pop - } - - namespace std -*** gcc/libstdc++-v3/src/locale_init.cc 9 Sep 2005 10:14:34 -0000 1.17 ---- gcc/libstdc++-v3/src/locale_init.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 37,42 **** ---- 37,44 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - // Defined in globals.cc. - extern std::locale c_locale; - extern std::locale::_Impl c_locale_impl; -*************** namespace __gnu_internal -*** 91,96 **** ---- 93,100 ---- - - // Mutex object for locale initialization. - static __glibcxx_mutex_define_initialized(locale_mutex); -+ -+ #pragma GCC visibility pop - } // namespace __gnu_internal - - namespace std -*** gcc/libstdc++-v3/src/mt_allocator.cc 12 Sep 2005 04:49:10 -0000 1.13 ---- gcc/libstdc++-v3/src/mt_allocator.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 37,42 **** ---- 37,44 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - #ifdef __GTHREADS - struct __freelist - { -*************** namespace __gnu_internal -*** 74,79 **** ---- 76,83 ---- - freelist._M_thread_freelist = __tr; - } - #endif -+ -+ #pragma GCC visibility pop - } - - namespace __gnu_cxx -*** gcc/libstdc++-v3/src/pool_allocator.cc 9 Sep 2005 10:14:34 -0000 1.6 ---- gcc/libstdc++-v3/src/pool_allocator.cc 28 Oct 2005 00:44:54 -0000 -*************** -*** 37,43 **** ---- 37,47 ---- - - namespace __gnu_internal - { -+ #pragma GCC visibility push(hidden) -+ - static __glibcxx_mutex_define_initialized(palloc_init_mutex); -+ -+ #pragma GCC visibility pop - } - - namespace __gnu_cxx diff --git a/gcc-pr19664_libstdc++.patch b/gcc-pr19664_libstdc++.patch deleted file mode 100644 index 3bb3391..0000000 --- a/gcc-pr19664_libstdc++.patch +++ /dev/null @@ -1,1717 +0,0 @@ ---- gcc/libstdc++-v3/include/ext/algorithm.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/algorithm 2005-11-03 10:28:32.000000000 +0100 -@@ -1,6 +1,6 @@ - // Algorithm extensions -*- C++ -*- - --// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2004, 2005 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 -@@ -62,6 +62,7 @@ - #define _EXT_ALGORITHM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -523,4 +524,6 @@ - } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif /* _EXT_ALGORITHM */ ---- gcc/libstdc++-v3/include/ext/array_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/array_allocator.h 2005-11-03 10:28:32.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef _ARRAY_ALLOCATOR_H - #define _ARRAY_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -142,4 +144,6 @@ - { return false; } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/bitmap_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/bitmap_allocator.h 2005-11-03 10:28:32.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef _BITMAP_ALLOCATOR_H - #define _BITMAP_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - // For std::size_t, and ptrdiff_t. - #include - -@@ -1289,6 +1291,8 @@ - - } - -+#pragma GCC visibility pop -+ - #endif - - // LocalWords: namespace GTHREADS bool const gthread endif Mutex mutex ---- gcc/libstdc++-v3/include/ext/debug_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/debug_allocator.h 2005-11-03 10:28:32.000000000 +0100 -@@ -48,6 +48,8 @@ - #ifndef _DEBUG_ALLOCATOR_H - #define _DEBUG_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - #include - - namespace __gnu_cxx -@@ -122,4 +124,6 @@ - }; - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/functional.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/functional 2005-11-03 10:28:32.000000000 +0100 -@@ -1,6 +1,6 @@ - // Functional extensions -*- C++ -*- - --// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2002, 2004, 2005 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 -@@ -62,6 +62,7 @@ - #define _EXT_FUNCTIONAL 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -421,5 +422,8 @@ - mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const) - { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } - } // namespace __gnu_cxx -+ -+#pragma GCC visibility pop -+ - #endif - ---- gcc/libstdc++-v3/include/ext/hash_map.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/hash_map 2005-11-03 10:30:29.000000000 +0100 -@@ -61,6 +61,8 @@ - #ifndef _HASH_MAP - #define _HASH_MAP 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - -@@ -622,4 +624,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/hash_set.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/hash_set 2005-11-03 10:30:57.000000000 +0100 -@@ -61,6 +61,8 @@ - #ifndef _HASH_SET - #define _HASH_SET 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - -@@ -588,4 +590,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/iterator.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/iterator 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // HP/SGI iterator extensions -*- C++ -*- - --// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2004, 2005 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 -@@ -62,6 +62,7 @@ - #define _EXT_ITERATOR 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -113,5 +114,7 @@ - } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif - ---- gcc/libstdc++-v3/include/ext/malloc_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/malloc_allocator.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,7 @@ - // Allocator that wraps "C" malloc -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 -+// 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 +35,8 @@ - #ifndef _MALLOC_ALLOCATOR_H - #define _MALLOC_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -122,4 +125,6 @@ - { return false; } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/memory.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/memory 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Memory extensions -*- C++ -*- - --// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2002, 2004, 2005 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 -@@ -62,6 +62,7 @@ - #define _EXT_MEMORY 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -194,5 +195,7 @@ - }; - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif - ---- gcc/libstdc++-v3/include/ext/mt_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/mt_allocator.h 2005-11-03 10:28:34.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef _MT_ALLOCATOR_H - #define _MT_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -731,4 +733,6 @@ - #undef __thread_default - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/new_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/new_allocator.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Allocator that wraps operator new -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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,8 @@ - #ifndef _NEW_ALLOCATOR_H - #define _NEW_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - -@@ -118,4 +120,6 @@ - { return false; } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/numeric.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/numeric 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Numeric extensions -*- C++ -*- - --// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2002, 2004, 2005 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 -@@ -62,6 +62,7 @@ - #define _EXT_NUMERIC 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -146,5 +147,7 @@ - } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif - ---- gcc/libstdc++-v3/include/ext/pod_char_traits.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/pod_char_traits.h 2005-11-03 10:28:34.000000000 +0100 -@@ -37,6 +37,8 @@ - #ifndef _POD_CHAR_TRAITS_H - #define _POD_CHAR_TRAITS_H 1 - -+#pragma GCC visibility push(default) -+ - #include - - namespace __gnu_cxx -@@ -182,4 +184,6 @@ - }; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/pool_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/pool_allocator.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Allocators -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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 -@@ -47,6 +47,8 @@ - #ifndef _POOL_ALLOCATOR_H - #define _POOL_ALLOCATOR_H 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -252,4 +254,6 @@ - } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/rb_tree.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/rb_tree 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // rb_tree extension -*- C++ -*- - --// Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2002, 2003, 2004, 2005 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 -@@ -62,6 +62,7 @@ - #define _RB_TREE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -94,4 +95,6 @@ - }; - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/rope.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/rope 2005-11-03 10:28:34.000000000 +0100 -@@ -48,6 +48,8 @@ - #ifndef _ROPE - #define _ROPE 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -2898,4 +2900,6 @@ - - # include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/slist.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/slist 2005-11-03 10:28:34.000000000 +0100 -@@ -49,6 +49,8 @@ - #ifndef _SLIST - #define _SLIST 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -1076,4 +1078,7 @@ - }; - - } // namespace std -+ -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/stdio_filebuf.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/stdio_filebuf.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // File descriptor layer for filebuf -*- C++ -*- - --// Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2002, 2003, 2004, 2005 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 -@@ -35,6 +35,7 @@ - #define _STDIO_FILEBUF_H 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -158,4 +159,6 @@ - } - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/ext/stdio_sync_filebuf.h.vis1~ 2005-10-31 21:15:57.000000000 +0100 -+++ gcc/libstdc++-v3/include/ext/stdio_sync_filebuf.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Iostreams wrapper for stdio FILE* -*- C++ -*- - --// Copyright (C) 2003, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2003, 2004, 2005 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 -@@ -35,6 +35,7 @@ - #define _STDIO_SYNC_FILEBUF_H 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -279,4 +280,6 @@ - #endif - } // namespace __gnu_cxx - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/bitset.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/bitset 2005-11-03 10:27:12.000000000 +0100 -@@ -31,6 +31,8 @@ - #ifndef _GLIBCXX_DEBUG_BITSET - #define _GLIBCXX_DEBUG_BITSET - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -318,4 +320,6 @@ - { return __os << __x._M_base(); } - } // namespace __gnu_debug_def - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/deque.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/deque 2005-11-03 10:28:26.000000000 +0100 -@@ -31,6 +31,8 @@ - #ifndef _GLIBCXX_DEBUG_DEQUE - #define _GLIBCXX_DEBUG_DEQUE 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -383,4 +385,6 @@ - { __lhs.swap(__rhs); } - } // namespace __gnu_debug_def - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/hash_map.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/hash_map 2005-11-03 10:31:55.000000000 +0100 -@@ -31,8 +31,12 @@ - #ifndef _GLIBCXX_DEBUG_HASH_MAP - #define _GLIBCXX_DEBUG_HASH_MAP 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/hash_set.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/hash_set 2005-11-03 10:32:22.000000000 +0100 -@@ -31,8 +31,12 @@ - #ifndef _GLIBCXX_DEBUG_HASH_SET - #define _GLIBCXX_DEBUG_HASH_SET 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/list.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/list 2005-11-03 10:28:28.000000000 +0100 -@@ -31,6 +31,8 @@ - #ifndef _GLIBCXX_DEBUG_LIST - #define _GLIBCXX_DEBUG_LIST 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -502,4 +504,6 @@ - { __lhs.swap(__rhs); } - } // namespace __gnu_debug_def - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/map.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/map 2005-11-03 10:28:28.000000000 +0100 -@@ -1,6 +1,6 @@ - // Debugging map/multimap implementation -*- C++ -*- - --// Copyright (C) 2003 -+// Copyright (C) 2003, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -@@ -31,8 +31,12 @@ - #ifndef _GLIBCXX_DEBUG_MAP - #define _GLIBCXX_DEBUG_MAP 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/set.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/set 2005-11-03 10:28:28.000000000 +0100 -@@ -1,6 +1,6 @@ - // Debugging set/multiset implementation -*- C++ -*- - --// Copyright (C) 2003 -+// Copyright (C) 2003, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -@@ -31,8 +31,12 @@ - #ifndef _GLIBCXX_DEBUG_SET - #define _GLIBCXX_DEBUG_SET 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/string.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/string 2005-11-03 10:28:30.000000000 +0100 -@@ -31,6 +31,8 @@ - #ifndef _GLIBCXX_DEBUG_STRING - #define _GLIBCXX_DEBUG_STRING 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -1015,4 +1017,6 @@ - - } // namespace __gnu_debug - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/debug/vector.vis1~ 2005-10-31 21:16:05.000000000 +0100 -+++ gcc/libstdc++-v3/include/debug/vector 2005-11-03 10:28:32.000000000 +0100 -@@ -31,6 +31,8 @@ - #ifndef _GLIBCXX_DEBUG_VECTOR - #define _GLIBCXX_DEBUG_VECTOR 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -413,4 +415,6 @@ - { __lhs.swap(__rhs); } - } // namespace __gnu_debug_def - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/tr1/array.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/array 2005-11-03 10:28:38.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef _ARRAY - #define _ARRAY 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -231,4 +233,6 @@ - } // namespace std::tr1 - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/tr1/functional.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/functional 2005-11-03 10:28:38.000000000 +0100 -@@ -36,6 +36,8 @@ - - #pragma GCC system_header - -+#pragma GCC visibility push(default) -+ - #include "../functional" - #include - #include -@@ -1270,4 +1272,6 @@ - } - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/tr1/memory.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/memory 2005-11-03 10:28:38.000000000 +0100 -@@ -30,6 +30,8 @@ - #ifndef _TR1_MEMORY - #define _TR1_MEMORY 1 - -+#pragma GCC visibility push(default) -+ - #include "../memory" - #include // std::less - #include // std::exception -@@ -48,4 +50,6 @@ - - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/tr1/tuple.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/tuple 2005-11-03 10:28:38.000000000 +0100 -@@ -36,6 +36,8 @@ - #ifndef _TUPLE - #define _TUPLE 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - -@@ -272,4 +274,6 @@ - - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/tr1/type_traits.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/type_traits 2005-11-03 10:28:38.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef _TYPE_TRAITS - #define _TYPE_TRAITS 1 - -+#pragma GCC visibility push(default) -+ - #include - #include - -@@ -703,4 +705,6 @@ - } - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/tr1/unordered_map.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/unordered_map 2005-11-03 10:28:38.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef GNU_LIBSTDCXX_TR1_UNORDERED_MAP_ - #define GNU_LIBSTDCXX_TR1_UNORDERED_MAP_ - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -167,4 +169,6 @@ - } - } - -+#pragma GCC visibility pop -+ - #endif /* GNU_LIBSTDCXX_TR1_UNORDERED_MAP_ */ ---- gcc/libstdc++-v3/include/tr1/unordered_set.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/unordered_set 2005-11-03 10:28:38.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef GNU_LIBSTDCXX_TR1_UNORDERED_SET_ - #define GNU_LIBSTDCXX_TR1_UNORDERED_SET_ - -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -162,4 +164,6 @@ - } - } - -+#pragma GCC visibility pop -+ - #endif /* GNU_LIBSTDCXX_TR1_UNORDERED_SET_ */ ---- gcc/libstdc++-v3/include/tr1/utility.vis1~ 2005-10-31 21:16:08.000000000 +0100 -+++ gcc/libstdc++-v3/include/tr1/utility 2005-11-03 10:28:38.000000000 +0100 -@@ -34,6 +34,8 @@ - #ifndef _TR1_UTILITY - #define _TR1_UTILITY 1 - -+#pragma GCC visibility push(default) -+ - #include "../utility" - - namespace std -@@ -93,6 +95,8 @@ - get(const pair<_Tp1, _Tp2>& __in) - { return __pair_get<_Int>::__const_get(__in); } - } --} -+} -+ -+#pragma GCC visibility pop - - #endif ---- gcc/libstdc++-v3/include/std/std_algorithm.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_algorithm.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -61,10 +61,13 @@ - #define _GLIBCXX_ALGORITHM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_ALGORITHM */ ---- gcc/libstdc++-v3/include/std/std_bitset.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_bitset.h 2005-11-03 10:28:34.000000000 +0100 -@@ -48,6 +48,7 @@ - #define _GLIBCXX_BITSET 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include // For size_t - #include // For memset -@@ -1300,4 +1301,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_BITSET */ ---- gcc/libstdc++-v3/include/std/std_complex.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_complex.h 2005-11-03 10:28:34.000000000 +0100 -@@ -43,6 +43,7 @@ - #define _GLIBCXX_COMPLEX 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -1485,4 +1486,6 @@ - : _M_value(__z.__rep()) { } - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_COMPLEX */ ---- gcc/libstdc++-v3/include/std/std_deque.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_deque.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_DEQUE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -77,4 +78,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_DEQUE */ ---- gcc/libstdc++-v3/include/std/std_fstream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_fstream.h 2005-11-03 10:28:34.000000000 +0100 -@@ -40,6 +40,7 @@ - #define _GLIBCXX_FSTREAM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -782,4 +783,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_FSTREAM */ ---- gcc/libstdc++-v3/include/std/std_functional.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_functional.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -49,9 +49,12 @@ - #define _GLIBCXX_FUNCTIONAL 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_FUNCTIONAL */ ---- gcc/libstdc++-v3/include/std/std_iomanip.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_iomanip.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Standard stream manipulators -*- C++ -*- - --// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003 -+// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -@@ -40,6 +40,7 @@ - #define _GLIBCXX_IOMANIP 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -296,4 +297,6 @@ - #endif - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_IOMANIP */ ---- gcc/libstdc++-v3/include/std/std_ios.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_ios.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,7 @@ - // Iostreams base classes -*- C++ -*- - --// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2005 -+// 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 -@@ -39,6 +40,7 @@ - #define _GLIBCXX_IOS 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include // For ios_base::failure -@@ -49,4 +51,6 @@ - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_IOS */ ---- gcc/libstdc++-v3/include/std/std_iosfwd.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_iosfwd.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,6 @@ - // Forwarding declarations -*- C++ -*- - --// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003 -+// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -@@ -40,6 +40,7 @@ - #define _GLIBCXX_IOSFWD 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -164,4 +165,6 @@ - /** @} */ - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_IOSFWD */ ---- gcc/libstdc++-v3/include/std/std_iostream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_iostream.h 2005-11-03 10:28:34.000000000 +0100 -@@ -1,6 +1,7 @@ - // Standard iostream objects -*- C++ -*- - --// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2005 -+// 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 -@@ -39,6 +40,7 @@ - #define _GLIBCXX_IOSTREAM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -76,4 +78,6 @@ - static ios_base::Init __ioinit; - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_IOSTREAM */ ---- gcc/libstdc++-v3/include/std/std_istream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_istream.h 2005-11-03 10:28:35.000000000 +0100 -@@ -40,6 +40,7 @@ - #define _GLIBCXX_ISTREAM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include // For numeric_limits -@@ -819,4 +820,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_ISTREAM */ ---- gcc/libstdc++-v3/include/std/std_iterator.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_iterator.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_ITERATOR 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -72,4 +73,6 @@ - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_ITERATOR */ ---- gcc/libstdc++-v3/include/std/std_limits.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_limits.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,7 @@ - // The template and inlines for the -*- C++ -*- numeric_limits classes. - --// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005 -+// 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 -@@ -43,6 +44,7 @@ - #define _GLIBCXX_NUMERIC_LIMITS 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -1156,4 +1158,6 @@ - #undef __glibcxx_digits - #undef __glibcxx_digits10 - -+#pragma GCC visibility pop -+ - #endif // _GLIBCXX_NUMERIC_LIMITS ---- gcc/libstdc++-v3/include/std/std_list.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_list.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_LIST 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -77,5 +78,7 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_LIST */ - ---- gcc/libstdc++-v3/include/std/std_locale.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_locale.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,7 @@ - // Locale support -*- C++ -*- - --// Copyright (C) 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 1997, 1998, 1999, 2002, 2003, 2005 -+// 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 -@@ -39,10 +40,13 @@ - #define _GLIBCXX_LOCALE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_LOCALE */ ---- gcc/libstdc++-v3/include/std/std_map.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_map.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_MAP 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -70,4 +71,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_MAP */ ---- gcc/libstdc++-v3/include/std/std_memory.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_memory.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2004, 2005 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 -@@ -49,6 +49,7 @@ - #define _GLIBCXX_MEMORY 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -370,4 +371,6 @@ - }; - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_MEMORY */ ---- gcc/libstdc++-v3/include/std/std_numeric.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_numeric.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_NUMERIC 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -68,4 +69,6 @@ - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_NUMERIC */ ---- gcc/libstdc++-v3/include/std/std_ostream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_ostream.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // Output streams -*- C++ -*- - --// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -@@ -40,6 +40,7 @@ - #define _GLIBCXX_OSTREAM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -525,4 +526,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_OSTREAM */ ---- gcc/libstdc++-v3/include/std/std_queue.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_queue.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_QUEUE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -74,4 +75,6 @@ - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_QUEUE */ ---- gcc/libstdc++-v3/include/std/std_set.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_set.h 2005-11-03 10:28:35.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -61,7 +61,8 @@ - #define _GLIBCXX_SET 1 - - #pragma GCC system_header -- -+#pragma GCC visibility push(default) -+ - #include - #include - #include -@@ -70,4 +71,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_SET */ ---- gcc/libstdc++-v3/include/std/std_sstream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_sstream.h 2005-11-03 10:28:36.000000000 +0100 -@@ -40,6 +40,7 @@ - #define _GLIBCXX_SSTREAM 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -614,4 +615,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_SSTREAM */ ---- gcc/libstdc++-v3/include/std/std_stack.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_stack.h 2005-11-03 10:28:36.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_STACK 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -69,4 +70,6 @@ - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_STACK */ ---- gcc/libstdc++-v3/include/std/std_stdexcept.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_stdexcept.h 2005-11-03 10:28:36.000000000 +0100 -@@ -1,6 +1,6 @@ - // Standard exception classes -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -39,6 +39,7 @@ - #define _GLIBCXX_STDEXCEPT 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -144,4 +145,6 @@ - }; - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_STDEXCEPT */ ---- gcc/libstdc++-v3/include/std/std_streambuf.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_streambuf.h 2005-11-03 10:28:37.000000000 +0100 -@@ -40,6 +40,7 @@ - #define _GLIBXX_STREAMBUF 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -806,4 +807,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_STREAMBUF */ ---- gcc/libstdc++-v3/include/std/std_string.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_string.h 2005-11-03 10:28:37.000000000 +0100 -@@ -40,6 +40,7 @@ - #define _GLIBCXX_STRING 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -56,4 +57,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_STRING */ ---- gcc/libstdc++-v3/include/std/std_utility.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_utility.h 2005-11-03 10:28:37.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2005 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 -@@ -61,9 +61,12 @@ - #define _GLIBCXX_UTILITY 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include - #include - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_UTILITY */ ---- gcc/libstdc++-v3/include/std/std_valarray.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_valarray.h 2005-11-03 10:28:37.000000000 +0100 -@@ -1,6 +1,6 @@ - // The template and inlines for the -*- C++ -*- valarray class. - --// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005 - // Free Software Foundation, Inc. - // - // This file is part of the GNU ISO C++ Library. This library is free -@@ -38,6 +38,7 @@ - #define _GLIBCXX_VALARRAY 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -1007,4 +1008,6 @@ - - } // namespace std - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_VALARRAY */ ---- gcc/libstdc++-v3/include/std/std_vector.h.vis1~ 2005-10-31 21:16:10.000000000 +0100 -+++ gcc/libstdc++-v3/include/std/std_vector.h 2005-11-03 10:28:37.000000000 +0100 -@@ -1,6 +1,6 @@ - // -*- C++ -*- - --// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// Copyright (C) 2001, 2002, 2003, 2005 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 -@@ -61,6 +61,7 @@ - #define _GLIBCXX_VECTOR 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -78,5 +79,7 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif /* _GLIBCXX_VECTOR */ - ---- gcc/libstdc++-v3/include/c_std/std_cassert.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cassert.h 2005-11-03 10:27:12.000000000 +0100 -@@ -45,5 +45,8 @@ - // No include guards on this header... - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include -+ -+#pragma GCC visibility pop ---- gcc/libstdc++-v3/include/c_std/std_cctype.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cctype.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CCTYPE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -82,4 +83,6 @@ - using ::toupper; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cerrno.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cerrno.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CERRNO 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -54,4 +55,6 @@ - #define errno errno - #endif - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cfloat.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cfloat.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,7 +46,10 @@ - #define _GLIBCXX_CFLOAT 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_climits.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_climits.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,7 +46,9 @@ - #define _GLIBCXX_CLIMITS 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -+#pragma GCC visibility pop - #endif ---- gcc/libstdc++-v3/include/c_std/std_clocale.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_clocale.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CLOCALE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -60,4 +61,6 @@ - using ::localeconv; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cmath.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cmath.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CMATH 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -575,4 +576,6 @@ - # include - #endif - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_csetjmp.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_csetjmp.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSETJMP 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -63,4 +64,6 @@ - using ::longjmp; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_csignal.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_csignal.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSIGNAL 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -59,4 +60,6 @@ - using ::raise; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cstdarg.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cstdarg.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSTDARG 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -59,4 +60,6 @@ - using ::va_list; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cstddef.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cstddef.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSTDDEF 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -55,4 +56,6 @@ - using ::size_t; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cstdio.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cstdio.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSTDIO 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -184,4 +185,6 @@ - } - #endif - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cstdlib.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cstdlib.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSTDLIB 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -215,4 +216,6 @@ - } - #endif - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cstring.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cstring.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CSTRING 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -126,4 +127,6 @@ - { return __builtin_strstr(const_cast(__s1), __s2); } - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_ctime.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_ctime.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CTIME 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -79,4 +80,6 @@ - using ::strftime; - } - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cwchar.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cwchar.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CWCHAR 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - #include -@@ -271,4 +272,6 @@ - - #endif //_GLIBCXX_USE_WCHAR_T - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/include/c_std/std_cwctype.h.vis1~ 2005-10-31 21:16:11.000000000 +0100 -+++ gcc/libstdc++-v3/include/c_std/std_cwctype.h 2005-11-03 10:27:12.000000000 +0100 -@@ -46,6 +46,7 @@ - #define _GLIBCXX_CWCTYPE 1 - - #pragma GCC system_header -+#pragma GCC visibility push(default) - - #include - -@@ -106,4 +107,6 @@ - } - #endif //_GLIBCXX_USE_WCHAR_T - -+#pragma GCC visibility pop -+ - #endif ---- gcc/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc.vis1~ 2005-10-31 21:19:34.000000000 +0100 -+++ gcc/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc 2005-11-03 10:28:38.000000000 +0100 -@@ -46,5 +46,5 @@ - test01(); - return 0; - } --// { dg-error "candidates" "" { target *-*-* } 223 } --// { dg-error "std::auto_ptr" "" { target *-*-* } 353 } -+// { dg-error "candidates" "" { target *-*-* } 224 } -+// { dg-error "std::auto_ptr" "" { target *-*-* } 354 } diff --git a/gcc-pr7776.patch b/gcc-pr7776.patch deleted file mode 100644 index 0a73938..0000000 --- a/gcc-pr7776.patch +++ /dev/null @@ -1,88 +0,0 @@ -Date: Tue, 14 Jun 2005 00:20:06 -0600 (MDT) -From: Roger Sayle -Subject: [PATCH] PR 7776: Warn about if ("abc" < "xyz") ... (take 2) - -The following patch is a revised version of my proposed solution to -PR middle-end/7776, which addresses Daniel Jacobowitz's concerns about -the potential utility of testing string literals for equality/inequality -with NULL. - -See http://gcc.gnu.org/ml/gcc-patches/2005-06/msg00369.html (and the -following thread) for details and motivation. - -The following patch has been tested on i686-pc-linux-gnu with a full -"make bootstrap", all default languages, and regression tested with a -top-level "make -k check" with no new failures. - -Ok for mainline? - -2005-06-13 Roger Sayle - - PR middle-end/7776 - * common.opt (Wstring-literal-comparison): New command line option. - * c-opts.c (c_common_handle_option): Set it with -Wall. - * c-typeck.c (parser_build_binary_op): Issue warning if either - operand of a comparison operator is a string literal, except for - testing equality or inequality against NULL. - - * gcc.dg/Wstring-literal-comparison-1.c: New test case. - * gcc.dg/Wstring-literal-comparison-2.c: Likewise. - * gcc.dg/Wstring-literal-comparison-3.c: Likewise. - * gcc.dg/Wstring-literal-comparison-4.c: Likewise. - - -*** a/gcc/common.opt 4 Jun 2005 17:07:55 -0000 1.73 ---- b/gcc/common.opt 13 Jun 2005 16:59:28 -0000 -*************** Wstrict-aliasing= -*** 117,122 **** ---- 117,126 ---- - Common Joined UInteger - Warn about code which might break strict aliasing rules - -+ Wstring-literal-comparison -+ Common Var(warn_string_literal_comparison) -+ Warn about comparisons to constant string literals -+ - Wswitch - Common Var(warn_switch) - Warn about enumerated switches, with no default, missing a case -*** a/gcc/c-opts.c 25 May 2005 03:58:55 -0000 1.146 ---- b/gcc/c-opts.c 13 Jun 2005 16:59:29 -0000 -*************** c_common_handle_option (size_t scode, co -*** 370,375 **** ---- 370,376 ---- - warn_sign_compare = value; - warn_switch = value; - warn_strict_aliasing = value; -+ warn_string_literal_comparison = value; - - /* Only warn about unknown pragmas that are not in system - headers. */ -*** a/gcc/c-typeck.c 11 Jun 2005 19:47:01 -0000 1.453 ---- b/gcc/c-typeck.c 13 Jun 2005 16:59:31 -0000 -*************** parser_build_binary_op (enum tree_code c -*** 2412,2417 **** ---- 2412,2434 ---- - - } - -+ /* Warn about comparisons against string literals, with the exception -+ of testing for equality or inequality of a string literal with NULL. */ -+ if (code == EQ_EXPR || code == NE_EXPR) -+ { -+ if ((TREE_CODE (arg1.value) == STRING_CST -+ && !integer_zerop (arg2.value)) -+ || (TREE_CODE (arg2.value) == STRING_CST -+ && !integer_zerop (arg1.value))) -+ warning (OPT_Wstring_literal_comparison, -+ "comparison with string literal"); -+ } -+ else if (TREE_CODE_CLASS (code) == tcc_comparison -+ && (TREE_CODE (arg1.value) == STRING_CST -+ || TREE_CODE (arg2.value) == STRING_CST)) -+ warning (OPT_Wstring_literal_comparison, -+ "comparison with string literal"); -+ - unsigned_conversion_warning (result.value, arg1.value); - unsigned_conversion_warning (result.value, arg2.value); - overflow_warning (result.value); diff --git a/gcc-sparc32-rfi.patch b/gcc-sparc32-rfi.patch deleted file mode 100644 index 2d0118e..0000000 --- a/gcc-sparc32-rfi.patch +++ /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/gcc32-ada-link.patch b/gcc32-ada-link.patch deleted file mode 100644 index 8b6042b..0000000 --- a/gcc32-ada-link.patch +++ /dev/null @@ -1,127 +0,0 @@ -diff -Nur gcc-3.2.2/gcc/ada/link.c gcc-3.2.2-20030218/gcc/ada/link.c ---- gcc-3.2.2/gcc/ada/link.c Sat May 4 05:28:18 2002 -+++ gcc-3.2.2-20030218/gcc/ada/link.c Tue Sep 24 15:07:49 2002 -@@ -158,11 +158,11 @@ - - #elif defined (linux) - const char *object_file_option = ""; --const char *run_path_option = "-Wl,-rpath,"; --char shared_libgnat_default = STATIC; -+const char *run_path_option = ""; -+char shared_libgnat_default = SHARED; - int link_max = 2147483647; - unsigned char objlist_file_supported = 0; --unsigned char using_gnu_linker = 0; -+unsigned char using_gnu_linker = 1; - const char *object_library_extension = ".a"; - - #elif defined (__svr4__) && defined (i386) -diff -Nur gcc-3.2.2/gcc/ada/Makefile.in gcc-3.2.2-20030218/gcc/ada/Makefile.in ---- gcc-3.2.2/gcc/ada/Makefile.in Wed Jan 29 18:34:08 2003 -+++ gcc-3.2.2-20030218/gcc/ada/Makefile.in Tue Feb 18 17:05:26 2003 -@@ -134,7 +134,7 @@ - objext = .o - exeext = - arext = .a --soext = .so -+soext = .so.1 - shext = - - HOST_CC=$(CC) -@@ -1214,6 +1214,69 @@ - endif - endif - -+ifeq ($(strip $(filter-out alpha% linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ -+ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ -+ifeq ($(strip $(filter-out ia64 linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ -+ifeq ($(strip $(filter-out x86_64 linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ -+ifeq ($(strip $(filter-out powerpc linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ -+ifeq ($(strip $(filter-out s390 linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ -+ifeq ($(strip $(filter-out s390x linux%,$(arch) $(osys))),) -+ MLIB_TGT=5lml-tgt -+ MISCLIB= -+ THREADSLIB=-lpthread -+ GNATLIB_SHARED=gnatlib-shared-dual -+ GMEM_LIB=gmemlib -+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) -+endif -+ - ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),) - ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),) - LIBGNAT_TARGET_PAIRS = \ -@@ -2179,6 +2242,9 @@ - - gnatlib: ../stamp-gnatlib1 ../stamp-gnatlib2 - # ../xgcc -B../ -dD -E ../tconfig.h $(INCLUDES) > rts/tconfig.h -+ $(RMDIR) save -+ $(MKDIR) save -+ $(MV) *.o save/ - $(MAKE) -C rts CC="../../xgcc -B../../" \ - INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ - CFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -DIN_RTS" \ -@@ -2192,6 +2258,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)) -@@ -2041,6 +2041,7 @@ - cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \ - -o libgnarl-$(LIBRARY_VERSION)$(soext) \ - $(GNATRTL_TASKING_OBJS) \ -+ ./libgnat-$(LIBRARY_VERSION)$(soext) \ - $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) $(THREADSLIB) - cd rts; $(LN_S) libgnat-$(LIBRARY_VERSION)$(soext) libgnat$(soext) - cd rts; $(LN_S) libgnarl-$(LIBRARY_VERSION)$(soext) libgnarl$(soext) diff --git a/gcc32-attr-visibility.patch b/gcc32-attr-visibility.patch deleted file mode 100644 index 51536d8..0000000 --- a/gcc32-attr-visibility.patch +++ /dev/null @@ -1,283 +0,0 @@ -2002-02-26 Jakub Jelinek - - * 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 index a36471b..0000000 --- a/gcc32-attr-visibility2.patch +++ /dev/null @@ -1,109 +0,0 @@ -2002-03-06 Jakub Jelinek - - * config/i386/i386.h (REDO_SECTION_INFO_P): Define. - -2002-03-02 Richard Henderson - - * config/i386/i386.h (ENCODE_SECTION_INFO): MODULE_LOCAL_P applies - to functions as well. - -2002-03-02 Richard Henderson - - * 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 index bc66ec9..0000000 --- a/gcc32-attr-visibility3.patch +++ /dev/null @@ -1,35 +0,0 @@ -2002-07-31 Jakub Jelinek - - * 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 index eccfbb9..0000000 --- a/gcc32-attr-visibility4.patch +++ /dev/null @@ -1,16 +0,0 @@ -2002-08-23 Jakub Jelinek - - * 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 index b76b661..0000000 --- a/gcc32-attr-visibility5.patch +++ /dev/null @@ -1,24 +0,0 @@ -2002-08-28 Jakub Jelinek - - * 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-boehm-gc-libs.patch b/gcc32-boehm-gc-libs.patch deleted file mode 100644 index 287a4e7..0000000 --- a/gcc32-boehm-gc-libs.patch +++ /dev/null @@ -1,196 +0,0 @@ -diff -urN boehm-gc.org/Makefile.am boehm-gc/Makefile.am ---- boehm-gc.org/Makefile.am Sat Oct 18 12:32:07 2003 -+++ boehm-gc/Makefile.am Sat Oct 18 12:32:55 2003 -@@ -39,7 +39,8 @@ - # linuxthread semaphore functions get linked: - libgcjgc_la_LIBADD = @addobjs@ $(THREADLIBS) - libgcjgc_la_DEPENDENCIES = @addobjs@ --libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir) -+libgcjgc_la_LDFLAGS = @LIBGCJGC_EXTRA_LDFLAGS@ -version-info 1:1:0 \ -+ -rpath $(toolexeclibdir) - - libgcjgc_convenience_la_LIBADD = @addobjs@ - libgcjgc_convenience_la_DEPENDENCIES = @addobjs@ -diff -urN boehm-gc.org/Makefile.in boehm-gc/Makefile.in ---- boehm-gc.org/Makefile.in Thu Oct 16 22:10:48 2003 -+++ boehm-gc/Makefile.in Sat Oct 18 12:32:55 2003 -@@ -133,7 +133,8 @@ - # linuxthread semaphore functions get linked: - libgcjgc_la_LIBADD = @addobjs@ $(THREADLIBS) - libgcjgc_la_DEPENDENCIES = @addobjs@ --libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir) -+libgcjgc_la_LDFLAGS = @LIBGCJGC_EXTRA_LDFLAGS@ -version-info 1:1:0 \ -+ -rpath $(toolexeclibdir) - - libgcjgc_convenience_la_LIBADD = @addobjs@ - libgcjgc_convenience_la_DEPENDENCIES = @addobjs@ -diff -urN boehm-gc.org/configure boehm-gc/configure ---- boehm-gc.org/configure Sat Oct 18 12:32:07 2003 -+++ boehm-gc/configure Sat Oct 18 12:33:48 2003 -@@ -2717,11 +2717,57 @@ - fi - - -+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -+echo "configure:2635: checking for dlopen in -ldl" >&5 -+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldl $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ -+EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl" -+LIBGCJGC_EXTRA_LDFLAGS="-ldl" -+ -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ -+ - INCLUDES=-I${srcdir}/include - THREADLIBS= - case "$THREADS" in - no | none | single) - THREADS=none -+ LIBGCJGC_EXTRA_LDFLAGS= - ;; - posix | pthreads) - THREADS=posix -@@ -2806,6 +2852,7 @@ - ;; - *-*-cygwin*) - THREADLIBS= -+ LIBGCJGC_EXTRA_LDFLAGS= - ;; - esac - ;; -@@ -2834,48 +2881,6 @@ - esac - - --echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 --echo "configure:2839: checking for dlopen in -ldl" >&5 --ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` --if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -- echo $ac_n "(cached) $ac_c" 1>&6 --else -- ac_save_LIBS="$LIBS" --LIBS="-ldl $LIBS" --cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -- rm -rf conftest* -- eval "ac_cv_lib_$ac_lib_var=yes" --else -- echo "configure: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- rm -rf conftest* -- eval "ac_cv_lib_$ac_lib_var=no" --fi --rm -f conftest* --LIBS="$ac_save_LIBS" -- --fi --if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -- echo "$ac_t""yes" 1>&6 -- EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl" --else -- echo "$ac_t""no" 1>&6 --fi -- -- -- - target_all=libgcjgc.la - - -@@ -3295,8 +3300,9 @@ - s%@STRIP@%$STRIP%g - s%@LIBTOOL@%$LIBTOOL%g - s%@CXXCPP@%$CXXCPP%g --s%@THREADLIBS@%$THREADLIBS%g - s%@EXTRA_TEST_LIBS@%$EXTRA_TEST_LIBS%g -+s%@THREADLIBS@%$THREADLIBS%g -+s%@LIBGCJGC_EXTRA_LDFLAGS@%$LIBGCJGC_EXTRA_LDFLAGS%g - s%@target_all@%$target_all%g - s%@INCLUDES@%$INCLUDES%g - s%@CXXINCLUDES@%$CXXINCLUDES%g -diff -urN boehm-gc.org/configure.in boehm-gc/configure.in ---- boehm-gc.org/configure.in Sat Oct 18 12:32:07 2003 -+++ boehm-gc/configure.in Sat Oct 18 12:32:55 2003 -@@ -63,11 +63,18 @@ - esac] - ) - -+AC_CHECK_LIB(dl, dlopen, [ -+EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl" -+LIBGCJGC_EXTRA_LDFLAGS="-ldl" -+]) -+AC_SUBST(EXTRA_TEST_LIBS) -+ - INCLUDES=-I${srcdir}/include - THREADLIBS= - case "$THREADS" in - no | none | single) - THREADS=none -+ LIBGCJGC_EXTRA_LDFLAGS= - ;; - posix | pthreads) - THREADS=posix -@@ -110,6 +117,7 @@ - ;; - *-*-cygwin*) - THREADLIBS= -+ LIBGCJGC_EXTRA_LDFLAGS= - ;; - esac - ;; -@@ -128,9 +136,7 @@ - ;; - esac - AC_SUBST(THREADLIBS) -- --AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") --AC_SUBST(EXTRA_TEST_LIBS) -+AC_SUBST(LIBGCJGC_EXTRA_LDFLAGS) - - target_all=libgcjgc.la - AC_SUBST(target_all) diff --git a/gcc32-bogus-inline.patch b/gcc32-bogus-inline.patch deleted file mode 100644 index f93cee4..0000000 --- a/gcc32-bogus-inline.patch +++ /dev/null @@ -1,99 +0,0 @@ -2001-10-12 Jakub Jelinek - - * tree-inline.c (initialize_inlined_parameters): Fail if less - arguments are passed than expected. - (expand_call_inline): Cleanup if initialize_inlined_parameters - fails. - - * g++.dg/other/inline1.C: New test. - ---- gcc/tree-inline.c.jj Tue Oct 9 16:03:13 2001 -+++ gcc/tree-inline.c Fri Oct 12 17:08:23 2001 -@@ -474,20 +474,28 @@ initialize_inlined_parameters (id, args, - - /* Loop through the parameter declarations, replacing each with an - equivalent VAR_DECL, appropriately initialized. */ -- for (p = parms, a = args; p; -- a = a ? TREE_CHAIN (a) : a, p = TREE_CHAIN (p)) -+ for (p = parms, a = args; p; a = TREE_CHAIN (a), p = TREE_CHAIN (p)) - { - #ifndef INLINER_FOR_JAVA - tree init_stmt; - tree cleanup; - #endif /* not INLINER_FOR_JAVA */ - tree var; - tree value; - tree var_sub; - -+ if (a == NULL_TREE) -+ { -+ pop_srcloc (); -+ /* If less arguments were passed than actually required, -+ issue warning and avoid inlining. */ -+ warning ("too few arguments passed to inline function, suppressing inlining"); -+ return error_mark_node; -+ } -+ - /* Find the initializer. */ - value = (*lang_hooks.tree_inlining.convert_parm_for_inlining) -- (p, a ? TREE_VALUE (a) : NULL_TREE, fn); -+ (p, TREE_VALUE (a), fn); - - /* If the parameter is never assigned to, we may not need to - create a new variable here at all. Instead, we may be able -@@ -863,6 +871,14 @@ expand_call_inline (tp, walk_subtrees, d - - /* Initialize the parameters. */ - arg_inits = initialize_inlined_parameters (id, TREE_OPERAND (t, 1), fn); -+ if (arg_inits == error_mark_node) -+ { -+ /* Clean up. */ -+ splay_tree_delete (id->decl_map); -+ id->decl_map = st; -+ return NULL_TREE; -+ } -+ - /* Expand any inlined calls in the initializers. Do this before we - push FN on the stack of functions we are inlining; we want to - inline calls to FN that appear in the initializers for the ---- gcc/testsuite/g++.dg/other/inline1.C.jj Fri Oct 12 16:54:05 2001 -+++ gcc/testsuite/g++.dg/other/inline1.C Fri Oct 12 17:14:35 2001 -@@ -0,0 +1,38 @@ -+// { dg-do compile { target i?86-*-* } } -+// { dg-options -O } -+ -+typedef unsigned int u4; -+typedef unsigned long long u8; -+typedef u8 (*u8tou8)(u8); -+ -+struct C { -+ static inline u8 a(u4 x, u4 y); -+ static inline u8 b(unsigned char *p) { return c(*(u8 *)p); } -+ static inline u8 c(u8 x) { // { dg-warning "too few arguments" "too few" } -+ return ((u8tou8)a)(x); -+ } -+}; -+ -+inline u8 C::a(u4 x, u4 y) { -+ return x + y; -+} -+ -+u8 n = 0x123456789abcdef; -+ -+struct B { -+ unsigned char *e; -+ B() { e = (unsigned char *) &n; } -+ u8 f() { -+ return C::b(e); -+ } -+}; -+ -+struct A { -+ B *g; -+ void foo (); -+}; -+ -+void A::foo () -+{ -+ g->f(); -+} diff --git a/gcc32-c++-nrv-test.patch b/gcc32-c++-nrv-test.patch deleted file mode 100644 index 05cb6bd..0000000 --- a/gcc32-c++-nrv-test.patch +++ /dev/null @@ -1,120 +0,0 @@ -2002-07-11 Jakub Jelinek - - * g++.dg/opt/nrv5.C: New test. - -2002-07-05 Jason Merrill - - * g++.dg/opt/nrv4.C: New test. - -2002-04-09 Jason Merrill - - * g++.dg/opt/nrv3.C: New test. - ---- gcc/testsuite/g++.dg/opt/nrv3.C.jj Thu Apr 11 16:25:15 2002 -+++ gcc/testsuite/g++.dg/opt/nrv3.C Tue Apr 9 19:02:43 2002 -@@ -0,0 +1,24 @@ -+// PR optimization/6189 -+// Bug: we forgot about foo's nrv after writing it out. -+// { dg-options -O3 } -+// { dg-do run } -+ -+struct A -+{ -+ int i; -+}; -+ -+ -+A foo () -+{ -+ A a; -+ a.i = 42; -+ return a; -+} -+ -+ -+int main() -+{ -+ A b = foo(); -+ return b.i != 42; -+} ---- gcc/testsuite/g++.dg/opt/nrv4.C.jj Thu Apr 11 16:25:15 2002 -+++ gcc/testsuite/g++.dg/opt/nrv4.C Fri Jul 5 17:16:56 2002 -@@ -0,0 +1,23 @@ -+// PR optimization/7145 -+// Bug: The NRV optimization caused us to lose the initializer for 'ret'. -+// { dg-options -O } -+// { dg-do run } -+ -+struct GdkColor { -+ long pixel; -+ short red; -+ short green; -+ short blue; -+}; -+ -+inline GdkColor mkcolor() { -+ GdkColor ret={0,1,2,3}; -+ return ret; -+} -+ -+int -+main() -+{ -+ GdkColor col=mkcolor(); -+ return (col.pixel != 0 || col.red != 1 || col.green != 2 || col.blue != 3); -+} ---- gcc/testsuite/g++.dg/opt/nrv5.C.jj Thu Apr 11 16:25:15 2002 -+++ gcc/testsuite/g++.dg/opt/nrv5.C Thu Jul 11 11:29:33 2002 -@@ -0,0 +1,52 @@ -+// Test for the named return value optimization with inlining. -+// Contributed by Jakub Jelinek . -+// { dg-do run } -+// { dg-options -O2 } -+ -+enum E { E0, E1, E2, E3 }; -+ -+struct S -+{ -+ E s0 : 2; -+ bool s1 : 1, s2 : 1, s3 : 1, s4 : 1, s5 : 1, s6 : 1; -+ S () : s1 (true), s2 (false), s0 (E1), s3 (true), s4 (false), s5 (true), s6 (false) {} -+ void foo (E x) { this->s0 = x; } -+}; -+ -+inline S foo () -+{ -+ S s; -+ s.foo (E0); -+ return s; -+} -+ -+inline S bar () -+{ -+ S s; -+ s.foo (E2); -+ return s; -+} -+ -+void check (S &s, bool isfoo); -+ -+void test (bool isfoo) -+{ -+ S a = isfoo ? foo () : bar (); -+ check (a, isfoo); -+} -+ -+extern "C" void abort (); -+ -+void check (S &s, bool isfoo) -+{ -+ if (! s.s1 || s.s2 || ! s.s3 || s.s4 || ! s.s5 || s.s6) -+ abort (); -+ if (s.s0 != (isfoo ? E0 : E2)) -+ abort (); -+} -+ -+int main () -+{ -+ test (true); -+ test (false); -+} diff --git a/gcc32-c++-pretty_function.patch b/gcc32-c++-pretty_function.patch deleted file mode 100644 index be1f5fc..0000000 --- a/gcc32-c++-pretty_function.patch +++ /dev/null @@ -1,170 +0,0 @@ -2002-05-24 Jakub Jelinek - - 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 int -+bar (T) -+{ -+ return (assert (foo ()), 1); -+} -+ -+template<> int -+bar (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 int -+bar (T) -+{ -+ return (assert (foo ()), 1); -+} -+ -+template<> int -+bar (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-c++-tsubst-asm.patch b/gcc32-c++-tsubst-asm.patch deleted file mode 100644 index 89964dd..0000000 --- a/gcc32-c++-tsubst-asm.patch +++ /dev/null @@ -1,19 +0,0 @@ -2002-05-09 Jason Merrill - - * g++.dg/ext/asm2.C: New test. - ---- gcc/testsuite/g++.dg/ext/asm2.C.jj Wed May 15 13:51:22 2002 -+++ gcc/testsuite/g++.dg/ext/asm2.C Sun May 12 11:25:45 2002 -@@ -0,0 +1,12 @@ -+// Bug: in a template, we forgot that this was a simple asm, and decided -+// that %edi was a malformed operand specifier. -+ -+template class I { -+public: -+ void f() { asm ("# mov %edi, %esi" ); } -+}; -+ -+int main () { -+ I x; -+ x.f(); -+} diff --git a/gcc32-cfg-eh.patch b/gcc32-cfg-eh.patch deleted file mode 100644 index 4d11138..0000000 --- a/gcc32-cfg-eh.patch +++ /dev/null @@ -1,74 +0,0 @@ -2002-05-28 Richard Henderson - - * 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 - - * 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-debug-pr7241.patch b/gcc32-debug-pr7241.patch deleted file mode 100644 index dbf172f..0000000 --- a/gcc32-debug-pr7241.patch +++ /dev/null @@ -1,21 +0,0 @@ -2002-07-11 Jakub Jelinek - - PR debug/7241 - * dwarf2out.c (base_type_die): Use DW_ATE_*_char even if main - variant is char_type_node and type name is char. - ---- gcc/dwarf2out.c.jj Wed Jun 19 15:09:56 2002 -+++ gcc/dwarf2out.c Thu Jul 11 20:47:52 2002 -@@ -7335,9 +7335,11 @@ base_type_die (type) - /* Carefully distinguish the C character types, without messing - up if the language is not C. Note that we check only for the names - that contain spaces; other names might occur by coincidence in other -- languages. */ -+ languages, so we only check if main variant is char_type_node. */ - if (! (TYPE_PRECISION (type) == CHAR_TYPE_SIZE - && (type == char_type_node -+ || (TYPE_MAIN_VARIANT (type) == char_type_node -+ && ! strcmp (type_name, "char")) - || ! strcmp (type_name, "signed char") - || ! strcmp (type_name, "unsigned char")))) - { diff --git a/gcc32-doc-gcov.patch b/gcc32-doc-gcov.patch deleted file mode 100644 index d7abc9e..0000000 --- a/gcc32-doc-gcov.patch +++ /dev/null @@ -1,72 +0,0 @@ -2002-08-14 Nathan Sidwell - - * 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-duplicate-decl.patch b/gcc32-duplicate-decl.patch deleted file mode 100644 index ef913e2..0000000 --- a/gcc32-duplicate-decl.patch +++ /dev/null @@ -1,17 +0,0 @@ -2002-01-25 Jakub Jelinek - - * g++.dg/other/redecl1.C: New test. - ---- gcc/testsuite/g++.dg/other/redecl1.C.jj Fri Jan 25 00:19:22 2002 -+++ gcc/testsuite/g++.dg/other/redecl1.C Fri Jan 25 00:23:33 2002 -@@ -0,0 +1,10 @@ -+// PR c++/5857 -+// This testcase failed because during duplicate_decls the type was promoted -+// to int. -+ -+// { dg-do compile } -+ -+typedef char baz; -+extern const char foo[]; -+const baz foo[] = "xyz"; -+const char bar[] = "abc"; diff --git a/gcc32-dwarf2-pr6381.patch b/gcc32-dwarf2-pr6381.patch deleted file mode 100644 index 644a492..0000000 --- a/gcc32-dwarf2-pr6381.patch +++ /dev/null @@ -1,18 +0,0 @@ -2002-05-08 Jason Merrill - - * g++.dg/debug/const1.C: New test. - ---- gcc/testsuite/g++.dg/debug/const1.C.jj Thu Aug 30 22:30:55 2001 -+++ gcc/testsuite/g++.dg/debug/const1.C Wed May 8 17:33:04 2002 -@@ -0,0 +1,11 @@ -+// PR c++/6381 -+// Bug: we were emitting the initializer for bar, which referenced foo, -+// which was not emitted. -+ -+// { dg-options "-O" } -+// { dg-do link } -+ -+static const int foo[] = { 0 }; -+static const int * const bar[] = { foo }; -+ -+int main() {} diff --git a/gcc32-dwarf2-pr6436-test.patch b/gcc32-dwarf2-pr6436-test.patch deleted file mode 100644 index 18df889..0000000 --- a/gcc32-dwarf2-pr6436-test.patch +++ /dev/null @@ -1,24 +0,0 @@ -2002-04-30 Jakub Jelinek - - * g++.dg/debug/typedef1.C: New test. - ---- gcc/testsuite/g++.dg/debug/typedef1.C.jj Thu Aug 30 22:30:55 2001 -+++ gcc/testsuite/g++.dg/debug/typedef1.C Tue Apr 30 19:50:12 2002 -@@ -0,0 +1,17 @@ -+// PR debug/6436 -+// { dg-do compile } -+ -+typedef struct -+{ -+ unsigned int a0, a1; -+} A __attribute__ ((aligned(8))); -+ -+typedef struct -+{ -+ A a; -+} B; -+ -+struct C -+{ -+ B *bp; -+}; diff --git a/gcc32-fde-merge-compat.patch b/gcc32-fde-merge-compat.patch deleted file mode 100644 index fec3650..0000000 --- a/gcc32-fde-merge-compat.patch +++ /dev/null @@ -1,34 +0,0 @@ -2001-10-31 Jakub Jelinek - - * frame.c (fde_merge): Choose just one from FDEs for the - same function in erratic array. - ---- gcc/unwind-dw2-fde.c.jj Fri Jan 11 14:01:21 2002 -+++ gcc/unwind-dw2-fde.c Tue Jan 15 15:58:27 2002 -@@ -535,7 +535,7 @@ fde_merge (struct object *ob, fde_compar - struct fde_vector *v1, struct fde_vector *v2) - { - size_t i1, i2; -- fde * fde2; -+ fde * fde2 = NULL; - - i2 = v2->count; - if (i2 > 0) -@@ -544,6 +544,17 @@ fde_merge (struct object *ob, fde_compar - do - { - i2--; -+ if (fde2 != NULL && fde_compare (ob, v2->array[i2], fde2) == 0) -+ { -+ /* Some linkers (e.g. 2.10.91.0.2 or 2.11.92.0.8) resolve -+ section relative relocations against removed linkonce -+ section to corresponding location in the output linkonce -+ section. Always use the earliest fde in that case. */ -+ fde2 = v2->array[i2]; -+ v1->array[i1+i2+1] = fde2; -+ v1->array[i1+i2] = fde2; -+ continue; -+ } - fde2 = v2->array[i2]; - while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0) - { diff --git a/gcc32-hard-reg-sharing.patch b/gcc32-hard-reg-sharing.patch deleted file mode 100644 index ffa155c..0000000 --- a/gcc32-hard-reg-sharing.patch +++ /dev/null @@ -1,631 +0,0 @@ -2002-06-20 Jakub Jelinek - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 *)); - -@@ -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 (); - } - - /* 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 index 24a2a68..0000000 --- a/gcc32-hard-reg-sharing2.patch +++ /dev/null @@ -1,17 +0,0 @@ -2002-06-11 Richard Henderson - - * 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 index fb8e24b..0000000 --- a/gcc32-i386-default-momit-leaf-frame-pointer.patch +++ /dev/null @@ -1,75 +0,0 @@ -2002-05-29 Richard Henderson - - * 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-memtest-test.patch b/gcc32-i386-memtest-test.patch deleted file mode 100644 index 93cded3..0000000 --- a/gcc32-i386-memtest-test.patch +++ /dev/null @@ -1,31 +0,0 @@ -2002-05-20 Jakub Jelinek - - * gcc.dg/20020525-1.c: New test. - ---- gcc/testsuite/gcc.dg/20020525-1.c.jj Thu Aug 30 22:30:55 2001 -+++ gcc/testsuite/gcc.dg/20020525-1.c Sat May 25 10:45:13 2002 -@@ -0,0 +1,24 @@ -+/* PR optimization/6703 -+ Origin: Glen Nakamura */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+extern void abort (void); -+extern void exit (int); -+ -+void foo (int *x, int y) -+{ -+ __builtin_memset (x, 0, y); -+} -+ -+int main () -+{ -+ int x[2] = { 0x5a5a5a5a, 0x5a5a5a5a }; -+ -+ if (x[1] != 0x5a5a5a5a) -+ abort (); -+ foo (x, sizeof (int) + 1); -+ if (x[1] == 0x5a5a5a5a) -+ abort (); -+ exit (0); -+} 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 index 94befa8..0000000 --- a/gcc32-i386-no-default-momit-leaf-frame-pointer.patch +++ /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 index e0c11aa..0000000 --- a/gcc32-i386-pic-label-thunk.patch +++ /dev/null @@ -1,91 +0,0 @@ -2002-06-04 Richard Henderson - Jakub Jelinek - - * 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; - } - -+#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 index 7e234f8..0000000 --- a/gcc32-i386-profile-olfp.patch +++ /dev/null @@ -1,102 +0,0 @@ -2002-05-30 Richard Henderson - - * 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-inline-label.patch b/gcc32-inline-label.patch deleted file mode 100644 index f8a455f..0000000 --- a/gcc32-inline-label.patch +++ /dev/null @@ -1,55 +0,0 @@ -2002-08-07 Jakub Jelinek - - * tree-inline.c (remap_decl): Make sure DECL_TOO_LATE is clear for - remapped labels. - - * gcc.c-torture/compile/20020807-1.c: New test. - ---- gcc/tree-inline.c.jj 2002-04-17 15:35:57.000000000 +0200 -+++ gcc/tree-inline.c 2002-08-07 14:53:14.000000000 +0200 -@@ -145,6 +145,9 @@ remap_decl (decl, id) - t = copy_decl_for_inlining (decl, fn, - VARRAY_TREE (id->fns, 0)); - -+ if (TREE_CODE (t) == LABEL_DECL) -+ DECL_TOO_LATE (t) = 0; -+ - /* The decl T could be a dynamic array or other variable size type, - in which case some fields need to be remapped because they may - contain SAVE_EXPRs. */ ---- gcc/testsuite/gcc.c-torture/compile/20020807-1.c.jj 2002-08-07 14:55:26.000000000 +0200 -+++ gcc/testsuite/gcc.c-torture/compile/20020807-1.c 2002-08-07 14:22:07.000000000 +0200 -@@ -0,0 +1,33 @@ -+int x; -+ -+static int -+__attribute__ ((noinline)) -+foo (void) -+{ -+ return 0; -+} -+ -+static void -+__attribute__ ((noinline)) -+bar (void) -+{ -+} -+ -+static inline void -+baz (void) -+{ -+ char arr[x]; -+ -+lab: -+ if (foo () == -1) -+ { -+ bar (); -+ goto lab; -+ } -+} -+ -+void -+test (void) -+{ -+ baz (); -+} diff --git a/gcc32-java-no-rpath.patch b/gcc32-java-no-rpath.patch deleted file mode 100644 index 2c21dec..0000000 --- a/gcc32-java-no-rpath.patch +++ /dev/null @@ -1,93 +0,0 @@ ---- libjava/Makefile.am.jj Tue Jun 4 20:41:44 2002 -+++ libjava/Makefile.am Wed Jun 5 15:20:30 2002 -@@ -111,6 +111,8 @@ INCLUDES = -I$(top_srcdir) -Iinclude -I$ - - ## ################################################################ - -+rpath_def = $(shell if test "$(toolexeclibdir)" != /usr/lib; then echo -rpath $(toolexeclibdir); fi) -+ - ## - ## How to build libgcj.a and libgcj.jar - ## -@@ -410,7 +412,7 @@ EXTRA_jv_convert_SOURCES = $(convert_sou - ## need this because we are explicitly using libtool to link using the - ## `.la' file. - jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - jv_convert_LINK = $(GCJLINK) - ## We don't explicitly link in the libraries we need; libgcj.la brings - ## in all dependencies. We need the -L so that gcj can find libgcj -@@ -429,7 +431,7 @@ gij_SOURCES = gij.cc - ## We need -nodefaultlibs because we want to avoid gcj's `-lgcj'. We - ## need this because we are explicitly using libtool to link using the - ## `.la' file. --gij_LDFLAGS = -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+gij_LDFLAGS = $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - gij_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gij_LDADD = -L$(here)/.libs libgcj.la -@@ -441,7 +443,7 @@ rmic_SOURCES = - ## This is a dummy definition. - EXTRA_rmic_SOURCES = $(rmi_java_source_files) - rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - rmic_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - rmic_LDADD = -L$(here)/.libs libgcj.la -@@ -453,7 +455,7 @@ rmiregistry_SOURCES = - ## This is a dummy definition. - EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files) - rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - rmiregistry_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - rmiregistry_LDADD = -L$(here)/.libs libgcj.la ---- libjava/Makefile.in.jj Tue Jun 4 23:25:56 2002 -+++ libjava/Makefile.in Wed Jun 5 15:21:59 2002 -@@ -184,6 +184,7 @@ INCLUDES = -I$(top_srcdir) -Iinclude -I$ - $(GCINCS) $(THREADINCS) $(INCLTDL) \ - $(GCC_UNWIND_INCLUDE) $(ZINCS) $(LIBFFIINCS) - -+rpath_def = $(shell if test "$(toolexeclibdir)" != /usr/lib; then echo -rpath $(toolexeclibdir); fi) - - nat_files = $(nat_source_files:.cc=.lo) - x_nat_files = $(x_nat_source_files:.cc=.lo) -@@ -263,7 +264,7 @@ CONVERT_DIR = gnu/gcj/convert - jv_convert_SOURCES = - EXTRA_jv_convert_SOURCES = $(convert_source_files) - jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - - jv_convert_LINK = $(GCJLINK) - jv_convert_LDADD = -L$(here)/.libs libgcj.la -@@ -272,7 +273,7 @@ jv_convert_DEPENDENCIES = $(convert_sour - - - gij_SOURCES = gij.cc --gij_LDFLAGS = -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+gij_LDFLAGS = $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - gij_LINK = $(GCJLINK) - gij_LDADD = -L$(here)/.libs libgcj.la - gij_DEPENDENCIES = libgcj.la libgcj.spec -@@ -280,7 +281,7 @@ gij_DEPENDENCIES = libgcj.la libgcj.spec - rmic_SOURCES = - EXTRA_rmic_SOURCES = $(rmi_java_source_files) - rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - - rmic_LINK = $(GCJLINK) - rmic_LDADD = -L$(here)/.libs libgcj.la -@@ -289,7 +290,7 @@ rmic_DEPENDENCIES = libgcj.la libgcj.spe - rmiregistry_SOURCES = - EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files) - rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) - - rmiregistry_LINK = $(GCJLINK) - rmiregistry_LDADD = -L$(here)/.libs libgcj.la diff --git a/gcc32-libstdc++-glibc.patch b/gcc32-libstdc++-glibc.patch deleted file mode 100644 index f8768b4..0000000 --- a/gcc32-libstdc++-glibc.patch +++ /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: -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: -List-Post: -List-Help: -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 -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 -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 - - * 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 - - * include/bits/locale_facets.h: Add declaration of specialization - here. - * config/locale/gnu/messages_members.cc: Add specialization for - messages. - * 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 - #include - #include -+#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 - - #include -+#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 - - #include -+#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 - - #include -+#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::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 - - #include -+#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 - - #include -+#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 - - #include -+#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 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 - 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 -+ -+#include -+ -+#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::do_get(catalog, int, int, const string&) const; - -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring&) const; -+#endif -+ - // Include host and configuration specific messages virtual functions. - #include - ---- 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 -+ #include -+ #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 -+ #include -+ #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 -+ #include -+ #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 <> $CONFIG_STATUS <<\EOF - - Jakub - diff --git a/gcc32-locale_in_ctype_members.patch b/gcc32-locale_in_ctype_members.patch deleted file mode 100644 index eb862df..0000000 --- a/gcc32-locale_in_ctype_members.patch +++ /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:: - 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:: - 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(&__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:: - 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(__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 index c434b08..0000000 --- a/gcc32-locale_in_ctype_members_header.patch +++ /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: -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: -List-Post: -List-Help: -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 -To: Benjamin Kosnik -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 -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 - - * config/os/gnu-linux/bits/ctype_noninline.h - [_GLIBCPP_USE_SHADOW_HEADERS]: Remove using _C_legacy::__ctype_*. - (ctype::classic_table): If _GLIBCPP_C_LOCALE_GNU, return - _S_c_locale->__ctype_b, otherwise temporarily switch to "C" locale - and return __ctype_b. - (ctype::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::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::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::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::ctype(__c_locale __cloc, const mask* __table, bool __del, - size_t __refs) -@@ -57,17 +73,55 @@ - #else - ctype::ctype(__c_locale, const mask* __table, bool __del, - size_t __refs) -- : __ctype_abstract_base(__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(__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::ctype(const mask* __table, bool __del, size_t __refs) : -- __ctype_abstract_base(__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(__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::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : __ctype_abstract_base(__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::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 index 0d396dd..0000000 --- a/gcc32-locale_in_monetary_members.patch +++ /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(((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(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); - _M_thousands_sep = static_cast(((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 index 905efaa..0000000 --- a/gcc32-pr6842.patch +++ /dev/null @@ -1,48 +0,0 @@ -2002-05-31 Jakub Jelinek - - 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 index e8e1104..0000000 --- a/gcc32-sparc-sll1.patch +++ /dev/null @@ -1,95 +0,0 @@ -2002-05-05 Jakub Jelinek - - * 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-test-rh65771.patch b/gcc32-test-rh65771.patch deleted file mode 100644 index 1bc801c..0000000 --- a/gcc32-test-rh65771.patch +++ /dev/null @@ -1,93 +0,0 @@ -2002-06-04 Jakub Jelinek - - * gcc.c-torture/compile/20020604-1.c: New test. - ---- gcc/testsuite/gcc.c-torture/compile/20020604-1.c.jj Thu Apr 11 16:25:15 2002 -+++ gcc/testsuite/gcc.c-torture/compile/20020604-1.c Mon Jun 3 17:43:12 2002 -@@ -0,0 +1,86 @@ -+/* This testcase ICEd at -O2 on IA-32, because -+ (insn 141 139 142 (set (subreg:SF (reg:QI 72) 0) -+ (plus:SF (reg:SF 73) -+ (reg:SF 76))) 525 {*fop_sf_comm_nosse} (insn_list 134 (nil)) -+ (expr_list:REG_DEAD (reg:SF 73) (nil))) -+ couldn't be reloaded. */ -+ -+void -+foo (unsigned int n, int x, int y, unsigned char *z) -+{ -+ int a, b; -+ float c[2048][4]; -+ -+ switch (x) -+ { -+ case 0x1906: -+ a = b = -1; -+ break; -+ case 0x190A: -+ a = b = -1; -+ break; -+ case 0x8049: -+ a = b = -1; -+ break; -+ case 0x1907: -+ a = 1; -+ b = 2; -+ break; -+ default: -+ return; -+ } -+ -+ if (a >= 0) -+ { -+ unsigned char *d = z; -+ unsigned int i; -+ for (i = 0; i < n; i++) -+ { -+ do -+ { -+ union -+ { -+ float r; -+ unsigned int i; -+ } -+ e; -+ e.r = c[i][1]; -+ d[a] = -+ ((e.i >= 0x3f7f0000) ? ((int) e.i < -+ 0) ? (unsigned char) 0 -+ : (unsigned char) 255 : (e.r = -+ e.r * (255.0F / 256.0F) + -+ 32768.0F, (unsigned char) e.i)); -+ } -+ while (0); -+ d += y; -+ } -+ } -+ -+ if (b >= 0) -+ { -+ unsigned char *d = z; -+ unsigned int i; -+ for (i = 0; i < n; i++) -+ { -+ do -+ { -+ union -+ { -+ float r; -+ unsigned int i; -+ } -+ e; -+ e.r = c[i][2]; -+ d[b] = -+ ((e.i >= 0x3f7f0000) ? ((int) e.i < -+ 0) ? (unsigned char) 0 -+ : (unsigned char) 255 : (e.r = -+ e.r * (255.0F / 256.0F) + -+ 32768.0F, (unsigned char) e.i)); -+ } -+ while (0); -+ d += y; -+ } -+ } -+} diff --git a/gcc32-test-rotate.patch b/gcc32-test-rotate.patch deleted file mode 100644 index 37e5f5c..0000000 --- a/gcc32-test-rotate.patch +++ /dev/null @@ -1,323 +0,0 @@ -2002-05-08 Tom Rix - - * gcc.c-torture/execute/20020508-1.c: New test. - * gcc.c-torture/execute/20020508-2.c: New test. - * gcc.c-torture/execute/20020508-3.c: New test. - ---- gcc/testsuite/gcc.c-torture/execute/20020508-1.c.jj Wed May 15 14:22:47 2002 -+++ gcc/testsuite/gcc.c-torture/execute/20020508-1.c Wed May 15 14:22:47 2002 -@@ -0,0 +1,104 @@ -+/* This tests the rotate patterns that some machines support. */ -+ -+#include -+ -+#ifndef CHAR_BIT -+#define CHAR_BIT 8 -+#endif -+ -+#define ROR(a,b) (((a) >> (b)) | ((a) << ((sizeof (a) * CHAR_BIT) - (b)))) -+#define ROL(a,b) (((a) << (b)) | ((a) >> ((sizeof (a) * CHAR_BIT) - (b)))) -+ -+#define CHAR_VALUE ((unsigned char)0xf234U) -+#define SHORT_VALUE ((unsigned short)0xf234U) -+#define INT_VALUE 0xf234U -+#define LONG_VALUE 0xf2345678LU -+#define LL_VALUE 0xf2345678abcdef0LLU -+ -+#define SHIFT1 4 -+#define SHIFT2 ((sizeof (long long) * CHAR_BIT) - SHIFT1) -+ -+unsigned char uc = CHAR_VALUE; -+unsigned short us = SHORT_VALUE; -+unsigned int ui = INT_VALUE; -+unsigned long ul = LONG_VALUE; -+unsigned long long ull = LL_VALUE; -+int shift1 = SHIFT1; -+int shift2 = SHIFT2; -+ -+main () -+{ -+ if (ROR (uc, shift1) != ROR (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (uc, SHIFT1) != ROR (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (us, shift1) != ROR (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (us, SHIFT1) != ROR (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ui, shift1) != ROR (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ui, SHIFT1) != ROR (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ul, shift1) != ROR (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ul, SHIFT1) != ROR (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ull, shift1) != ROR (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ull, SHIFT1) != ROR (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ull, shift2) != ROR (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROR (ull, SHIFT2) != ROR (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROL (uc, shift1) != ROL (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (uc, SHIFT1) != ROL (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (us, shift1) != ROL (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (us, SHIFT1) != ROL (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ui, shift1) != ROL (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ui, SHIFT1) != ROL (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ul, shift1) != ROL (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ul, SHIFT1) != ROL (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ull, shift1) != ROL (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ull, SHIFT1) != ROL (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ull, shift2) != ROL (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROL (ull, SHIFT2) != ROL (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ exit (0); -+} ---- gcc/testsuite/gcc.c-torture/execute/20020508-2.c.jj Wed May 15 14:22:47 2002 -+++ gcc/testsuite/gcc.c-torture/execute/20020508-2.c Wed May 15 14:22:47 2002 -@@ -0,0 +1,102 @@ -+#include -+ -+#ifndef CHAR_BIT -+#define CHAR_BIT 8 -+#endif -+ -+#define ROR(a,b) (((a) >> (b)) | ((a) << ((sizeof (a) * CHAR_BIT) - (b)))) -+#define ROL(a,b) (((a) << (b)) | ((a) >> ((sizeof (a) * CHAR_BIT) - (b)))) -+ -+#define CHAR_VALUE ((char)0x1234) -+#define SHORT_VALUE ((short)0x1234) -+#define INT_VALUE ((int)0x1234) -+#define LONG_VALUE ((long)0x12345678L) -+#define LL_VALUE ((long long)0x12345678abcdef0LL) -+ -+#define SHIFT1 4 -+#define SHIFT2 ((sizeof (long long) * CHAR_BIT) - SHIFT1) -+ -+char c = CHAR_VALUE; -+short s = SHORT_VALUE; -+int i = INT_VALUE; -+long l = LONG_VALUE; -+long long ll = LL_VALUE; -+int shift1 = SHIFT1; -+int shift2 = SHIFT2; -+ -+main () -+{ -+ if (ROR (c, shift1) != ROR (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (c, SHIFT1) != ROR (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (s, shift1) != ROR (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (s, SHIFT1) != ROR (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (i, shift1) != ROR (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (i, SHIFT1) != ROR (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (l, shift1) != ROR (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (l, SHIFT1) != ROR (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ll, shift1) != ROR (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ll, SHIFT1) != ROR (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ll, shift2) != ROR (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROR (ll, SHIFT2) != ROR (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROL (c, shift1) != ROL (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (c, SHIFT1) != ROL (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (s, shift1) != ROL (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (s, SHIFT1) != ROL (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (i, shift1) != ROL (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (i, SHIFT1) != ROL (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (l, shift1) != ROL (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (l, SHIFT1) != ROL (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ll, shift1) != ROL (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ll, SHIFT1) != ROL (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ll, shift2) != ROL (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROL (ll, SHIFT2) != ROL (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ exit (0); -+} ---- gcc/testsuite/gcc.c-torture/execute/20020508-3.c.jj Wed May 15 14:22:47 2002 -+++ gcc/testsuite/gcc.c-torture/execute/20020508-3.c Wed May 15 14:22:47 2002 -@@ -0,0 +1,102 @@ -+#include -+ -+#ifndef CHAR_BIT -+#define CHAR_BIT 8 -+#endif -+ -+#define ROR(a,b) (((a) >> (b)) | ((a) << ((sizeof (a) * CHAR_BIT) - (b)))) -+#define ROL(a,b) (((a) << (b)) | ((a) >> ((sizeof (a) * CHAR_BIT) - (b)))) -+ -+#define CHAR_VALUE ((char)0xf234) -+#define SHORT_VALUE ((short)0xf234) -+#define INT_VALUE ((int)0xf234) -+#define LONG_VALUE ((long)0xf2345678L) -+#define LL_VALUE ((long long)0xf2345678abcdef0LL) -+ -+#define SHIFT1 4 -+#define SHIFT2 ((sizeof (long long) * CHAR_BIT) - SHIFT1) -+ -+char c = CHAR_VALUE; -+short s = SHORT_VALUE; -+int i = INT_VALUE; -+long l = LONG_VALUE; -+long long ll = LL_VALUE; -+int shift1 = SHIFT1; -+int shift2 = SHIFT2; -+ -+main () -+{ -+ if (ROR (c, shift1) != ROR (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (c, SHIFT1) != ROR (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (s, shift1) != ROR (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (s, SHIFT1) != ROR (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (i, shift1) != ROR (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (i, SHIFT1) != ROR (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (l, shift1) != ROR (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (l, SHIFT1) != ROR (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ll, shift1) != ROR (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ll, SHIFT1) != ROR (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROR (ll, shift2) != ROR (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROR (ll, SHIFT2) != ROR (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROL (c, shift1) != ROL (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (c, SHIFT1) != ROL (CHAR_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (s, shift1) != ROL (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (s, SHIFT1) != ROL (SHORT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (i, shift1) != ROL (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (i, SHIFT1) != ROL (INT_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (l, shift1) != ROL (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (l, SHIFT1) != ROL (LONG_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ll, shift1) != ROL (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ll, SHIFT1) != ROL (LL_VALUE, SHIFT1)) -+ abort (); -+ -+ if (ROL (ll, shift2) != ROL (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ if (ROL (ll, SHIFT2) != ROL (LL_VALUE, SHIFT2)) -+ abort (); -+ -+ exit (0); -+} diff --git a/gcc32-tls-dwarf2.patch b/gcc32-tls-dwarf2.patch deleted file mode 100644 index 432f196..0000000 --- a/gcc32-tls-dwarf2.patch +++ /dev/null @@ -1,337 +0,0 @@ -2002-08-21 Richard Henderson - - * 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_"; - } -@@ -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 index f37fd5f..0000000 --- a/gcc32-tls.patch +++ /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; - - 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; - - /* 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; - } - -+/* 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; -+} - -+/* 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; -+} - - /* 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; -+} -+ - - /* 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; -+} - - /* 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. - -+;; 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))])] -+ "") -+ - ;; 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; - }) - ---- 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; - -+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; - - /* 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); - } - - /* 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 struct B { -+ static __thread T t; -+}; -+ -+template -+__thread T B::t = 42; -+ -+void bar () -+{ -+ int j = B::t; -+ int k = B::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= Limits the size of inlined functions to \n")); - printf (_(" -fmessage-length= Limits diagnostics messages lengths to 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 index 65eea64..0000000 --- a/gcc32-tls2.patch +++ /dev/null @@ -1,54 +0,0 @@ -2002-07-30 Jakub Jelinek - - * 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 index 17cd7cd..0000000 --- a/gcc32-tls3.patch +++ /dev/null @@ -1,48 +0,0 @@ -2002-08-06 Aldy Hernandez - - * 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 index 014c403..0000000 --- a/gcc32-tls4.patch +++ /dev/null @@ -1,74 +0,0 @@ -2002-05-22 Richard Henderson - - * 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 - - * 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 index 2afc953..0000000 --- a/gcc32-tls5.patch +++ /dev/null @@ -1,149 +0,0 @@ -2002-08-08 Jakub Jelinek - - * 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/gcc33-multi32-hack.patch b/gcc33-multi32-hack.patch deleted file mode 100644 index 61a26cb..0000000 --- a/gcc33-multi32-hack.patch +++ /dev/null @@ -1,68 +0,0 @@ -This is an optimization hack which should only be present -in a sparc 32bit driver of the compiler compiled with -host/target/build sparc64-redhat-linux --with-cpu=v7. -As long long HOST_WIDE_INT slows things down, we can have in -addition to the sparc64-*/3.2/{cc1,cc1plus} -sparc-*/3.2/{cc1,cc1plus} binaries which are suitable for compiling --m32 code only, but use long HOST_WIDE_INT. - ---- gcc/gcc.c.jj 2003-05-15 18:06:04.000000000 -0400 -+++ gcc/gcc.c 2003-05-20 10:31:15.000000000 -0400 -@@ -3003,6 +3003,8 @@ process_command (argc, argv) - int have_c = 0; - int have_o = 0; - int lang_n_infiles = 0; -+ int m64 = 0; -+ int used_B = 0; - #ifdef MODIFY_TARGET_NAME - int is_modify_target_name; - int j; -@@ -3493,6 +3495,7 @@ warranty; not even for MERCHANTABILITY o - PREFIX_PRIORITY_B_OPT, 0, &warn_B, 0); - add_prefix (&include_prefixes, concat (value, "include", NULL), - NULL, PREFIX_PRIORITY_B_OPT, 0, NULL, 0); -+ used_B = 1; - n_switches++; - } - break; -@@ -3555,6 +3558,13 @@ warranty; not even for MERCHANTABILITY o - #endif - goto normal_switch; - -+ /* HACK START */ -+ case 'm': -+ if (p[1] == '6' && p[2] == '4') -+ m64 = 1; -+ /* FALLTHROUGH */ -+ /* HACK END */ -+ - default: - normal_switch: - -@@ -3621,6 +3631,26 @@ warranty; not even for MERCHANTABILITY o - /* Use 2 as fourth arg meaning try just the machine as a suffix, - as well as trying the machine and the version. */ - #ifndef OS2 -+ /* HACK START */ -+ if (!m64 && !used_B && !strncmp (spec_machine, "sparc64-", 8)) -+ { -+ const char *sparc32_exec_prefix = -+ concat (standard_exec_prefix, "sparc-", spec_machine + 8, -+ dir_separator_str, spec_version, dir_separator_str, NULL); -+ add_prefix (&exec_prefixes, sparc32_exec_prefix, "GCC", -+ PREFIX_PRIORITY_LAST, 0, warn_std_ptr, 0); -+ } -+ /* HACK END */ -+ /* HACK START */ -+ if (!m64 && !used_B && !strncmp (spec_machine, "ppc64-", 6)) -+ { -+ const char *ppc32_exec_prefix = -+ concat (standard_exec_prefix, "ppc-", spec_machine + 6, -+ dir_separator_str, spec_version, dir_separator_str, NULL); -+ add_prefix (&exec_prefixes, ppc32_exec_prefix, "GCC", -+ PREFIX_PRIORITY_LAST, 0, warn_std_ptr, 0); -+ } -+ /* HACK END */ - add_prefix (&exec_prefixes, standard_exec_prefix, "GCC", - PREFIX_PRIORITY_LAST, 1, warn_std_ptr, 0); - add_prefix (&exec_prefixes, standard_exec_prefix, "BINUTILS", diff --git a/gcov.1 b/gcov.1 deleted file mode 100644 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. -- 2.44.0