summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>1999-05-26 13:38:57 +0000
committerMarc Espie <espie@cvs.openbsd.org>1999-05-26 13:38:57 +0000
commit08ec8d6365fd2e4e7bff42852c5a65191cd2893e (patch)
tree924db8d271b07aafe2d787ac846e20c93bc66adc /gnu
parentdb3aa5f54910bada5f2512466a81d9787be2c65e (diff)
egcs projects compiler system
Exact copy of the snapshot, except for the removal of texinfo/ gcc/ch/ libchill/
Diffstat (limited to 'gnu')
-rw-r--r--gnu/egcs/ChangeLog81
-rw-r--r--gnu/egcs/INSTALL/README15
-rw-r--r--gnu/egcs/MAINTAINERS2
-rw-r--r--gnu/egcs/Makefile.in41
-rw-r--r--gnu/egcs/config/ChangeLog16
-rw-r--r--gnu/egcs/config/mpw/ChangeLog16
-rw-r--r--gnu/egcs/configure2
-rw-r--r--gnu/egcs/configure.in6
-rw-r--r--gnu/egcs/contrib/ChangeLog32
-rw-r--r--gnu/egcs/contrib/egcs_update214
-rw-r--r--gnu/egcs/contrib/test_summary18
-rw-r--r--gnu/egcs/etc/ChangeLog24
-rw-r--r--gnu/egcs/etc/make-stds.texi41
-rw-r--r--gnu/egcs/etc/standards.texi1003
-rw-r--r--gnu/egcs/gcc/ABOUT-GCC-NLS24
-rw-r--r--gnu/egcs/gcc/BUGS6
-rw-r--r--gnu/egcs/gcc/NEWS2611
-rw-r--r--gnu/egcs/gcc/README8
-rw-r--r--gnu/egcs/gcc/acconfig.h3
-rw-r--r--gnu/egcs/gcc/alias.c64
-rw-r--r--gnu/egcs/gcc/c-lang.c8
-rw-r--r--gnu/egcs/gcc/c-pragma.c24
-rw-r--r--gnu/egcs/gcc/config.in3
-rw-r--r--gnu/egcs/gcc/config/alpha/alpha.h60
-rw-r--r--gnu/egcs/gcc/config/alpha/elf.h8
-rw-r--r--gnu/egcs/gcc/config/alpha/osf.h12
-rw-r--r--gnu/egcs/gcc/config/alpha/vms.h4
-rw-r--r--gnu/egcs/gcc/config/arm/aout.h5
-rw-r--r--gnu/egcs/gcc/config/arm/arm.c72
-rw-r--r--gnu/egcs/gcc/config/arm/arm.h52
-rw-r--r--gnu/egcs/gcc/config/arm/arm.md54
-rw-r--r--gnu/egcs/gcc/config/arm/elf.h13
-rw-r--r--gnu/egcs/gcc/config/arm/linux-elf.h34
-rw-r--r--gnu/egcs/gcc/config/arm/linux-elf26.h18
-rw-r--r--gnu/egcs/gcc/config/c4x/c4x.c52
-rw-r--r--gnu/egcs/gcc/config/c4x/c4x.h33
-rw-r--r--gnu/egcs/gcc/config/c4x/c4x.md3
-rw-r--r--gnu/egcs/gcc/config/dbxcoff.h4
-rw-r--r--gnu/egcs/gcc/config/dbxelf.h18
-rw-r--r--gnu/egcs/gcc/config/elfos.h5
-rw-r--r--gnu/egcs/gcc/config/h8300/h8300.c10
-rw-r--r--gnu/egcs/gcc/config/h8300/h8300.md53
-rw-r--r--gnu/egcs/gcc/config/i386/cygwin.h27
-rw-r--r--gnu/egcs/gcc/config/i386/dgux.h2
-rw-r--r--gnu/egcs/gcc/config/i386/djgpp.h10
-rw-r--r--gnu/egcs/gcc/config/i386/freebsd-elf.h115
-rw-r--r--gnu/egcs/gcc/config/i386/freebsd.h27
-rw-r--r--gnu/egcs/gcc/config/i386/gnu.h27
-rw-r--r--gnu/egcs/gcc/config/i386/sol2.h27
-rw-r--r--gnu/egcs/gcc/config/i386/t-dgux6
-rw-r--r--gnu/egcs/gcc/config/i386/udk.h2
-rw-r--r--gnu/egcs/gcc/config/i386/uwin.h2
-rw-r--r--gnu/egcs/gcc/config/i386/winnt.c32
-rw-r--r--gnu/egcs/gcc/config/i386/xm-djgpp.h2
-rw-r--r--gnu/egcs/gcc/config/i386/xm-uwin.h39
-rw-r--r--gnu/egcs/gcc/config/m68k/m68k.md4
-rw-r--r--gnu/egcs/gcc/config/m68k/mot3300-crt0.S2
-rw-r--r--gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S2
-rw-r--r--gnu/egcs/gcc/config/m68k/x-mot33008
-rw-r--r--gnu/egcs/gcc/config/m88k/dgux.h2
-rw-r--r--gnu/egcs/gcc/config/m88k/dguxbcs.h2
-rw-r--r--gnu/egcs/gcc/config/mips/mips.h6
-rw-r--r--gnu/egcs/gcc/config/mips/mips.md24
-rw-r--r--gnu/egcs/gcc/config/mips/vxworks.h2
-rw-r--r--gnu/egcs/gcc/config/pa/pa.c16
-rw-r--r--gnu/egcs/gcc/config/rs6000/eabi-ctors.c12
-rw-r--r--gnu/egcs/gcc/config/rs6000/linux.h2
-rw-r--r--gnu/egcs/gcc/config/rs6000/rs6000.md1158
-rw-r--r--gnu/egcs/gcc/config/sh/lib1funcs.asm6
-rw-r--r--gnu/egcs/gcc/config/sh/sh.c34
-rw-r--r--gnu/egcs/gcc/config/sh/sh.h1
-rw-r--r--gnu/egcs/gcc/config/sh/sh.md25
-rw-r--r--gnu/egcs/gcc/config/sparc/pbd.h30
-rw-r--r--gnu/egcs/gcc/config/sparc/sparc.md40
-rw-r--r--gnu/egcs/gcc/config/sparc/sun4o3.h8
-rw-r--r--gnu/egcs/gcc/config/sparc/sysv4.h27
-rw-r--r--gnu/egcs/gcc/config/svr4.h3
-rw-r--r--gnu/egcs/gcc/config/v850/v850.c8
-rw-r--r--gnu/egcs/gcc/cp/ChangeLog440
-rw-r--r--gnu/egcs/gcc/cp/NEWS32
-rw-r--r--gnu/egcs/gcc/cp/class.c436
-rw-r--r--gnu/egcs/gcc/cp/cp-tree.def8
-rw-r--r--gnu/egcs/gcc/cp/error.c5
-rw-r--r--gnu/egcs/gcc/cp/exception.cc4
-rw-r--r--gnu/egcs/gcc/cp/expr.c96
-rw-r--r--gnu/egcs/gcc/cp/gxxint.texi235
-rw-r--r--gnu/egcs/gcc/cp/init.c356
-rw-r--r--gnu/egcs/gcc/cp/lang-specs.h16
-rw-r--r--gnu/egcs/gcc/cp/method.c276
-rw-r--r--gnu/egcs/gcc/cp/parse.y1
-rw-r--r--gnu/egcs/gcc/cp/rtti.c25
-rw-r--r--gnu/egcs/gcc/cp/search.c156
-rw-r--r--gnu/egcs/gcc/cp/semantics.c15
-rw-r--r--gnu/egcs/gcc/cp/typeck2.c9
-rw-r--r--gnu/egcs/gcc/cpp.texi108
-rw-r--r--gnu/egcs/gcc/dwarf2.h6
-rw-r--r--gnu/egcs/gcc/dwarf2out.c84
-rw-r--r--gnu/egcs/gcc/dwarfout.c82
-rw-r--r--gnu/egcs/gcc/except.c62
-rw-r--r--gnu/egcs/gcc/expmed.c11
-rw-r--r--gnu/egcs/gcc/expr.h11
-rw-r--r--gnu/egcs/gcc/f/BUGS10
-rw-r--r--gnu/egcs/gcc/f/ChangeLog153
-rw-r--r--gnu/egcs/gcc/f/INSTALL29
-rw-r--r--gnu/egcs/gcc/f/Make-lang.in52
-rw-r--r--gnu/egcs/gcc/f/NEWS188
-rw-r--r--gnu/egcs/gcc/f/bugs.texi4
-rw-r--r--gnu/egcs/gcc/f/com.c21
-rw-r--r--gnu/egcs/gcc/f/ffe.texi1141
-rw-r--r--gnu/egcs/gcc/f/g77.texi210
-rw-r--r--gnu/egcs/gcc/f/g77install.texi58
-rw-r--r--gnu/egcs/gcc/f/lang-specs.h10
-rw-r--r--gnu/egcs/gcc/f/news.texi196
-rw-r--r--gnu/egcs/gcc/f/root.texi36
-rw-r--r--gnu/egcs/gcc/f/stw.h2
-rw-r--r--gnu/egcs/gcc/f/top.c8
-rw-r--r--gnu/egcs/gcc/f/version.c2
-rw-r--r--gnu/egcs/gcc/final.c4
-rw-r--r--gnu/egcs/gcc/fix-header.c4
-rw-r--r--gnu/egcs/gcc/fixinc/Makefile.in2
-rw-r--r--gnu/egcs/gcc/fixinc/README2
-rw-r--r--gnu/egcs/gcc/fixinc/fixinc.svr433
-rw-r--r--gnu/egcs/gcc/fixinc/fixinc.winnt2
-rw-r--r--gnu/egcs/gcc/fixinc/fixincl.c178
-rw-r--r--gnu/egcs/gcc/fixinc/fixincl.sh25
-rw-r--r--gnu/egcs/gcc/fixinc/fixincl.tpl24
-rw-r--r--gnu/egcs/gcc/fixinc/fixincl.x1268
-rw-r--r--gnu/egcs/gcc/fixinc/gnu-regex.c10
-rw-r--r--gnu/egcs/gcc/fixinc/inclhack.def93
-rw-r--r--gnu/egcs/gcc/fixinc/inclhack.sh265
-rw-r--r--gnu/egcs/gcc/fixinc/inclhack.tpl23
-rw-r--r--gnu/egcs/gcc/fixinc/procopen.c17
-rw-r--r--gnu/egcs/gcc/fixinc/server.c16
-rw-r--r--gnu/egcs/gcc/fixincludes4
-rw-r--r--gnu/egcs/gcc/fixproto25
-rw-r--r--gnu/egcs/gcc/flow.c112
-rw-r--r--gnu/egcs/gcc/frame.c10
-rw-r--r--gnu/egcs/gcc/function.h30
-rw-r--r--gnu/egcs/gcc/ginclude/va-ppc.h160
-rw-r--r--gnu/egcs/gcc/ginclude/varargs.h4
-rw-r--r--gnu/egcs/gcc/glimits.h2
-rw-r--r--gnu/egcs/gcc/haifa-sched.c22
-rw-r--r--gnu/egcs/gcc/intl/ChangeLog16
-rw-r--r--gnu/egcs/gcc/java/ChangeLog248
-rw-r--r--gnu/egcs/gcc/java/Make-lang.in14
-rw-r--r--gnu/egcs/gcc/java/class.c4
-rw-r--r--gnu/egcs/gcc/java/decl.c2
-rw-r--r--gnu/egcs/gcc/java/except.c165
-rw-r--r--gnu/egcs/gcc/java/expr.c43
-rw-r--r--gnu/egcs/gcc/java/java-except.h9
-rw-r--r--gnu/egcs/gcc/java/jvgenmain.c1
-rw-r--r--gnu/egcs/gcc/java/jvspec.c20
-rw-r--r--gnu/egcs/gcc/java/lex.c4
-rw-r--r--gnu/egcs/gcc/java/parse-scan.c6
-rw-r--r--gnu/egcs/gcc/java/parse.c4807
-rw-r--r--gnu/egcs/gcc/java/parse.y243
-rw-r--r--gnu/egcs/gcc/java/xref.c2
-rw-r--r--gnu/egcs/gcc/just-fixinc2
-rw-r--r--gnu/egcs/gcc/libgcc2.c21
-rw-r--r--gnu/egcs/gcc/local-alloc.c3
-rw-r--r--gnu/egcs/gcc/mkinstalldirs2
-rw-r--r--gnu/egcs/gcc/objc/lang-specs.h12
-rw-r--r--gnu/egcs/gcc/output.h8
-rw-r--r--gnu/egcs/gcc/po/ChangeLog20
-rw-r--r--gnu/egcs/gcc/po/POTFILES.in3
-rw-r--r--gnu/egcs/gcc/real.c60
-rw-r--r--gnu/egcs/gcc/reg-stack.c65
-rw-r--r--gnu/egcs/gcc/regclass.c31
-rw-r--r--gnu/egcs/gcc/reload.c180
-rw-r--r--gnu/egcs/gcc/reload.h7
-rw-r--r--gnu/egcs/gcc/rtlanal.c82
-rw-r--r--gnu/egcs/gcc/sched.c15
-rw-r--r--gnu/egcs/gcc/system.h20
-rw-r--r--gnu/egcs/gcc/testsuite/ChangeLog29
-rw-r--r--gnu/egcs/gcc/testsuite/README6
-rw-r--r--gnu/egcs/gcc/testsuite/g++.old-deja/g++.pt/friend37.C5
-rw-r--r--gnu/egcs/gcc/testsuite/g77.f-torture/compile/19990502-0.f409
-rw-r--r--gnu/egcs/gcc/testsuite/gcc.c-torture/ChangeLog16
-rw-r--r--gnu/egcs/gcc/tree.c48
-rw-r--r--gnu/egcs/gcc/tree.def10
-rw-r--r--gnu/egcs/gcc/unroll.c26
-rw-r--r--gnu/egcs/gcc/varasm.c86
-rw-r--r--gnu/egcs/libio/ChangeLog88
-rw-r--r--gnu/egcs/libio/configure.in16
-rw-r--r--gnu/egcs/libio/dbz/dbzmain.c2
-rw-r--r--gnu/egcs/libio/dbz/fake.c2
-rw-r--r--gnu/egcs/libio/filebuf.cc16
-rw-r--r--gnu/egcs/libio/fstream.h10
-rw-r--r--gnu/egcs/libio/iolibio.h8
-rw-r--r--gnu/egcs/libio/iostream.cc75
-rw-r--r--gnu/egcs/libio/iostream.h1
-rw-r--r--gnu/egcs/libio/isgetline.cc12
-rw-r--r--gnu/egcs/libio/isgetsb.cc4
-rw-r--r--gnu/egcs/libio/isscan.cc10
-rw-r--r--gnu/egcs/libio/libio.h11
-rw-r--r--gnu/egcs/libio/libioP.h67
-rw-r--r--gnu/egcs/libio/parsestream.h2
-rw-r--r--gnu/egcs/libio/stdio/ChangeLog16
-rw-r--r--gnu/egcs/libio/stdstreams.cc2
-rw-r--r--gnu/egcs/libio/stream.h4
-rw-r--r--gnu/egcs/libio/strstream.h6
-rw-r--r--gnu/egcs/libio/tests/ChangeLog16
-rw-r--r--gnu/egcs/libio/testsuite/ChangeLog16
-rw-r--r--gnu/egcs/libstdc++/ChangeLog126
-rw-r--r--gnu/egcs/libstdc++/Makefile.in16
-rw-r--r--gnu/egcs/libstdc++/configure.in16
-rw-r--r--gnu/egcs/libstdc++/std/bastring.cc10
-rw-r--r--gnu/egcs/libstdc++/std/bastring.h22
-rw-r--r--gnu/egcs/libstdc++/std/complext.cc2
-rw-r--r--gnu/egcs/libstdc++/stdexcepti.cc4
-rw-r--r--gnu/egcs/libstdc++/stl/ChangeLog47
-rw-r--r--gnu/egcs/libstdc++/stl/bitset3
-rw-r--r--gnu/egcs/libstdc++/stl/pthread_alloc18
-rw-r--r--gnu/egcs/libstdc++/stl/stl_algo.h4
-rw-r--r--gnu/egcs/libstdc++/stl/stl_config.h18
-rw-r--r--gnu/egcs/libstdc++/stl/stl_deque.h14
-rw-r--r--gnu/egcs/libstdc++/stl/stl_function.h8
-rw-r--r--gnu/egcs/libstdc++/stl/stl_numeric.h14
-rw-r--r--gnu/egcs/libstdc++/stl/stl_queue.h82
-rw-r--r--gnu/egcs/libstdc++/stl/stl_rope.h28
-rw-r--r--gnu/egcs/libstdc++/tests/ChangeLog16
-rw-r--r--gnu/egcs/libstdc++/testsuite/ChangeLog16
-rw-r--r--gnu/egcs/ltconfig1825
-rw-r--r--gnu/egcs/ltmain.sh2949
224 files changed, 8252 insertions, 17561 deletions
diff --git a/gnu/egcs/ChangeLog b/gnu/egcs/ChangeLog
index d7319f7cfaa..062c421567f 100644
--- a/gnu/egcs/ChangeLog
+++ b/gnu/egcs/ChangeLog
@@ -1,84 +1,3 @@
-Tue Mar 7 21:48:55 2000 Jeffrey A Law (law@cygnus.com)
-
- * config.guess: Fix detection of ReliantUNIX.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Aug 4 02:07:14 1999 Jeffrey A Law (law@cygnus.com)
-
- * config.sub (vxworks case): Use os=-vxworks, not os=vxworks.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Tue Jun 22 23:39:29 1999 Tom Tromey <tromey@cygnus.com>
-
- * configure.in (target_libs): Added target-zlib.
- * Makefile.in (ALL_TARGET_MODULES): Added zlib.
- (CONFIGURE_TARGET_MODULES): Likewise.
- (CHECK_TARGET_MODULES): Likewise.
- (INSTALL_TARGET_MODULES): Likewise.
- (CLEAN_TARGET_MODULES): Likewise.
- (configure-target-zlib): New target.
- (all-target-zlib): Likewise.
- (all-target-libjava): Depend on all-target-zlib.
- (configure-target-libjava): Depend on configure-target-zlib.
-
- * Makefile.in (configure-target-libjava): Depend on
- configure-target-newlib.
- (configure-target-boehm-gc): New target.
- (configure-target-qthreads): New target.
-
- * configure.in (host_tools): Added zip.
- * Makefile.in (all-target-libjava): Depend on all-zip.
- (all-zip): New target.
- (ALL_MODULES): Added all-zip.
- (NATIVE_CHECK_MODULES): Added check-zip.
- (INSTALL_MODULES): Added install-zip.
- (CLEAN_MODULES): Added clean-zip.
-
- * configure.in (target_libs): Added target-qthreads.
- * Makefile.in (ALL_TARGET_MODULES): Added qthreads.
- (CONFIGURE_TARGET_MODULES): Likewise.
- (CHECK_TARGET_MODULES): Likewise.
- (INSTALL_TARGET_MODULES): Likewise.
- (CLEAN_TARGET_MODULES): Likewise.
- (all-target-qthreads): New target.
- (configure-target-libjava): Depend on configure-target-qthreads.
- (all-target-libjava): Depend on all-target-qthreads.
-
- * Makefile.in (ALL_TARGET_MODULES): Added libjava, boehm-gc.
- (CONFIGURE_TARGET_MODULES): Likewise.
- (CHECK_TARGET_MODULES): Likewise.
- (INSTALL_TARGET_MODULES): Likewise.
- (CLEAN_TARGET_MODULES): Likewise.
- (all-target-libjava): New target.
- (all-target-boehm-gc): Likewise.
- * configure.in (target_libs): Added libjava, boehm-gc.
-
-Sun May 30 16:03:16 1999 Cort Dougan <cort@cs.nmt.edu>
-
- * config.guess (ppc-*-linux-gnu): Also use ld emul elf32ppclinux.
-
-Thu May 20 10:00:42 1999 Stephen L Moshier <moshier@world.std.com>
-
- * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
-
-1999-04-23 Tom Tromey <tromey@cygnus.com>
-
- * ltconfig, ltmain.sh: Update to libtool 1.2f.
-
Tue Apr 13 22:50:54 1999 Donn Terry (donn@interix.com)
Martin Heller (Ing.-Buero_Heller@t-online.de)
diff --git a/gnu/egcs/INSTALL/README b/gnu/egcs/INSTALL/README
index 7c888f53a8c..5fd9648bfef 100644
--- a/gnu/egcs/INSTALL/README
+++ b/gnu/egcs/INSTALL/README
@@ -1,10 +1,9 @@
-The installation instructions are no longer in this directory. Instead
-they can be found in the "install" directory at the toplevel of the GCC
-distribution (ie gcc-2.95/install). For HTML browsing start with
-install/index.html, for plaintext, start with install/INDEX.
+This directory has been obsoleted for egcs snapshots and CVS access.
-Moving the installation instructions in this manner makes it significantly
-easier to share code between the distribution and the web pages.
+Instead check out the toplevel "wwwdocs" as a sibling of your egcs
+tree or read these files via the egcs web site
+http://egcs.cygnus.com
-This directory (INSTALL) will be completely removed in the next major
-GCC release.
+
+Copies of the relevant files will be copied into this directory for
+releases.
diff --git a/gnu/egcs/MAINTAINERS b/gnu/egcs/MAINTAINERS
index 4ab0dd9dece..bc164d65f45 100644
--- a/gnu/egcs/MAINTAINERS
+++ b/gnu/egcs/MAINTAINERS
@@ -55,7 +55,6 @@ caller-save.c Jeff Law law@cygnus.com
debugging code Jim Wilson wilson@cygnus.com
dwarf debugging code Jason Merrill jason@cygnus.com
c++ runtime libs Ulrich Drepper drepper@cygnus.com
-C++ runtime libs Gabriel Dos Reis dosreis@cmla.ens-cachan.fr
*synthetic multiply Torbjorn Granlund tege@swox.com
*c-torture Torbjorn Granlund tege@swox.com
*f-torture Kate Hedstrom kate@ahab.rutgers.edu
@@ -100,7 +99,6 @@ Andrew Haley aph@cygnus.com
Alexandre Petit-Bianco apbianco@cygnus.com
Anthony Green green@cygnus.com
Stu Grossman grossman@cygnus.com
-Gabriel Dos Reis dosreis@cmla.ens-cachan.fr
* Indicates folks we need to get Kerberos/ssh accounts ready so they
diff --git a/gnu/egcs/Makefile.in b/gnu/egcs/Makefile.in
index 7af178465b9..795a7da3fd3 100644
--- a/gnu/egcs/Makefile.in
+++ b/gnu/egcs/Makefile.in
@@ -233,7 +233,7 @@ CC_FOR_TARGET = ` \
# variable is passed down to the gcc Makefile, where it is used to
# build libgcc2.a. We define it here so that it can itself be
# overridden on the command line.
-GCC_FOR_TARGET = $$r/gcc/xgcc -B$$r/gcc/ -B$(build_tooldir)/bin/ -I$(build_tooldir)/include
+GCC_FOR_TARGET = $$r/gcc/xgcc -B$$r/gcc/ -B$(build_tooldir)/bin/
CHILL_FOR_TARGET = ` \
if [ -f $$r/gcc/xgcc ] ; then \
@@ -567,7 +567,6 @@ ALL_MODULES = \
all-time \
all-uudecode \
all-wdiff \
- all-zip \
$(EXTRA_TARGET_HOST_ALL_MODULES)
# This is a list of the check targets for all of the modules which are
@@ -579,8 +578,7 @@ ALL_MODULES = \
NATIVE_CHECK_MODULES = \
check-bison \
check-byacc \
- check-flex \
- check-zip
+ check-flex
CROSS_CHECK_MODULES = \
check-apache \
@@ -712,7 +710,6 @@ INSTALL_MODULES = \
install-time \
install-uudecode \
install-wdiff \
- install-zip \
$(EXTRA_TARGET_HOST_INSTALL_MODULES)
# This is a list of the targets for all of the modules which are compiled
@@ -770,10 +767,6 @@ ALL_TARGET_MODULES = \
all-target-gperf \
all-target-examples \
all-target-libstub \
- all-target-libjava \
- all-target-zlib \
- all-target-boehm-gc \
- all-target-qthreads \
all-target-cygmon
# This is a list of the configure targets for all of the modules which
@@ -793,10 +786,6 @@ CONFIGURE_TARGET_MODULES = \
configure-target-gperf \
configure-target-examples \
configure-target-libstub \
- configure-target-libjava \
- configure-target-zlib \
- configure-target-boehm-gc \
- configure-target-qthreads \
configure-target-cygmon
# This is a list of the check targets for all of the modules which are
@@ -811,10 +800,6 @@ CHECK_TARGET_MODULES = \
check-target-libobjc \
check-target-winsup \
check-target-libiberty \
- check-target-libjava \
- check-target-zlib \
- check-target-boehm-gc \
- check-target-qthreads \
check-target-gperf
# This is a list of the install targets for all of the modules which are
@@ -830,11 +815,6 @@ INSTALL_TARGET_MODULES = \
install-target-winsup \
install-target-libgloss \
install-target-libiberty \
- install-target-bsp \
- install-target-libjava \
- install-target-zlib \
- install-target-boehm-gc \
- install-target-qthreads \
install-target-gperf
# This is a list of the targets for which we can do a clean-{target}.
@@ -900,9 +880,7 @@ CLEAN_MODULES = \
clean-tgas \
clean-time \
clean-uudecode \
- clean-wdiff \
- clean-zip
-
+ clean-wdiff
# All of the target modules that can be cleaned
CLEAN_TARGET_MODULES = \
@@ -920,10 +898,6 @@ CLEAN_TARGET_MODULES = \
clean-target-gperf \
clean-target-examples \
clean-target-libstub \
- clean-target-libjava \
- clean-target-zlib \
- clean-target-boehm-gc \
- clean-target-qthreads \
clean-target-cygmon
# All of the x11 modules that can be cleaned
@@ -1561,8 +1535,6 @@ all-bash:
all-bfd: all-libiberty all-intl
all-binutils: all-libiberty all-opcodes all-bfd all-flex all-bison all-byacc all-intl
all-bison: all-texinfo
-configure-target-boehm-gc: configure-target-newlib configure-target-qthreads
-all-target-boehm-gc: configure-target-boehm-gc
all-byacc:
all-bzip2:
all-cvssrc:
@@ -1615,8 +1587,6 @@ all-target-libio: configure-target-libio all-gas all-ld all-gcc all-target-libib
check-target-libio: all-target-libstdc++
all-libgui: all-tcl all-tk all-itcl
all-libiberty:
-configure-target-libjava: $(ALL_GCC) configure-target-zlib configure-target-boehm-gc configure-target-qthreads configure-target-newlib
-all-target-libjava: configure-target-libjava all-gcc all-zip all-target-newlib all-target-zlib all-target-boehm-gc all-target-qthreads
configure-target-librx: $(ALL_GCC) configure-target-newlib
all-target-librx: configure-target-librx
configure-target-libstdc++: $(ALL_GCC)
@@ -1636,8 +1606,6 @@ all-opcodes: all-bfd all-libiberty
all-patch: all-libiberty
all-perl:
all-prms: all-libiberty
-configure-target-qthreads: configure-target-newlib
-all-target-qthreads: configure-target-qthreads
all-rcs:
all-readline:
all-recode: all-libiberty
@@ -1659,9 +1627,6 @@ all-wdiff:
all-target-winsup: all-target-newlib all-target-libiberty all-target-libio configure-target-winsup
configure-target-winsup: configure-target-newlib
all-uudecode: all-libiberty
-all-zip:
-configure-target-zlib: $(ALL_GCC)
-all-target-zlib: configure-target-zlib
configure-target-libiberty: $(ALL_GCC)
all-target-libiberty: configure-target-libiberty all-gcc all-ld all-target-newlib
all-target: $(ALL_TARGET_MODULES)
diff --git a/gnu/egcs/config/ChangeLog b/gnu/egcs/config/ChangeLog
index beaefd1d1ec..6d9cdfcf086 100644
--- a/gnu/egcs/config/ChangeLog
+++ b/gnu/egcs/config/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
Tue Feb 2 22:51:21 1999 Philip Blundell <philb@gnu.org>
* mh-armpic: New file. Patch from Jim Pick <jim@jimpick.com>.
diff --git a/gnu/egcs/config/mpw/ChangeLog b/gnu/egcs/config/mpw/ChangeLog
index 551beca4b38..3cdefbf7a75 100644
--- a/gnu/egcs/config/mpw/ChangeLog
+++ b/gnu/egcs/config/mpw/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
Tue Nov 26 12:34:12 1996 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed: Fix some comments.
diff --git a/gnu/egcs/configure b/gnu/egcs/configure
index 41b82fe8aef..0c2325256f8 100644
--- a/gnu/egcs/configure
+++ b/gnu/egcs/configure
@@ -86,7 +86,7 @@ subdirs=
target_alias=NOTARGET
target_makefile_frag=
undefs=NOUNDEFS
-version="$Revision: 1.1.1.4 $"
+version="$Revision: 1.1 $"
x11=default
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
diff --git a/gnu/egcs/configure.in b/gnu/egcs/configure.in
index 7265f49a87f..d0e7166d51a 100644
--- a/gnu/egcs/configure.in
+++ b/gnu/egcs/configure.in
@@ -50,7 +50,7 @@ fi
# these tools are built for the host environment
# Note, the powerpc-eabi build depends on sim occurring before gdb in order to
# know that we are building the simulator.
-host_tools="texinfo byacc flex bison binutils ld gas gcc sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find emacs emacs19 uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext zip"
+host_tools="texinfo byacc flex bison binutils ld gas gcc sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find emacs emacs19 uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext"
# these libraries are built for the target environment, and are built after
@@ -65,10 +65,6 @@ target_libs="target-libiberty \
target-libg++ \
target-libf2c \
target-libchill \
- target-libjava \
- target-zlib \
- target-boehm-gc \
- target-qthreads \
target-libobjc"
# these tools are built using the target libs, and are intended to run only
diff --git a/gnu/egcs/contrib/ChangeLog b/gnu/egcs/contrib/ChangeLog
index 8b8d93c2bc8..99420bc04a8 100644
--- a/gnu/egcs/contrib/ChangeLog
+++ b/gnu/egcs/contrib/ChangeLog
@@ -1,35 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * test_summary: Replace egcs with gcc. Update e-mail address.
-
-1999-06-12 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * test_summary: Set default mail-address and version for egcs
- instead of relying on unpredictable pathnames.
- Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>
-
-1999-06-12 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * test_summary: Set default mail-address and version for egcs
- instead of relying on unpredictable pathnames.
- Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>
-
Fri Apr 2 16:09:02 1999 Jeffrey A Law (law@cygnus.com)
* fixinc/*: Delete obsolete files.
diff --git a/gnu/egcs/contrib/egcs_update b/gnu/egcs/contrib/egcs_update
index e7fa727d61b..6882b234b60 100644
--- a/gnu/egcs/contrib/egcs_update
+++ b/gnu/egcs/contrib/egcs_update
@@ -9,27 +9,14 @@
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
# are omitted.
#
-# If the first parameter reads --patch, the second parameter is considered
-# a patch file.
-#
-# If the first parameter is --touch, no cvs operation will be performed,
-# only generated files that appear to be out of date in the local tree
-# will be touched.
-#
-# If the first parameter is --list, a list of the generated files and
-# their dependencies will be printed; --help prints this message.
-#
# Examples:
#
# contrib/egcs_update -r egcs_latest_snapshot
# contrib/egcs_update -A
# contrib/egcs_update --nostdflags -P -r egcs_1_1_branch gcc/testsuite
-# contrib/egcs_update --patch some-patch
-# contrib/egcs_update --touch
-# contrib/egcs_update --list
#
#
-# (C) 1998-1999 Free Software Foundation
+# (C) 1998 Free Software Foundation
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
#
# This script is Free Software, and it can be copied, distributed and
@@ -37,166 +24,83 @@
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
-# Default options used when updating via CVS.
UPDATE_OPTIONS=-P
# Add -d to create any directories that exist in the repository but not
# locally.
# Add -A to reset any sticky tags, dates, or `-k' options.
-# This function prints a list of all generated files, along with their
-# dependencies. Note that only one target is supported per line: the
-# colon is stripped from the output.
-files_and_dependencies () {
- sed -e 's/ *#.*//' -e '/^$/d' -e 's/://' <<\EOF
-# All automake dependencies within texinfo
-# In fact, not all, since we do not care about sub-directories that
-# we do not build. In particular, *.po and *.gmo are not touched.
-texinfo/aclocal.m4: texinfo/configure.in texinfo/acinclude.m4
-texinfo/Makefile.in: texinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
-texinfo/configure: texinfo/configure.in texinfo/aclocal.m4
-texinfo/stamp-h.in: texinfo/configure.in texinfo/aclocal.m4 texinfo/acconfig.h
-texinfo/lib/Makefile.in: texinfo/lib/Makefile.am texinfo/configure.in texinfo/aclocal.m4
-texinfo/makeinfo/Makefile.in: texinfo/makeinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
-texinfo/util/Makefile.in: texinfo/util/Makefile.am texinfo/configure.in texinfo/aclocal.m4
-# Now, proceed to gcc automatically generated files
-gcc/configure: gcc/configure.in
-gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h
-gcc/config.in: gcc/cstamp-h.in
-gcc/c-parse.y: gcc/c-parse.in
-gcc/c-parse.c: gcc/c-parse.y
-gcc/c-parse.h: gcc/c-parse.c
-gcc/c-gperf.h: gcc/c-parse.gperf
-gcc/cexp.c: gcc/cexp.y
-gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
-gcc/fixinc/inclhack.sh: gcc/fixinc/inclhack.def gcc/fixinc/inclhack.tpl gcc/fixinc/hackshell.tpl
-gcc/fixinc/fixincl.sh: gcc/fixinc/inclhack.def gcc/fixinc/inclhack.tpl
-# And then, language-specific files
-gcc/cp/parse.c: gcc/cp/parse.y
-gcc/cp/parse.h: gcc/cp/parse.c
-gcc/objc/objc-parse.y: gcc/c-parse.in
-gcc/objc/objc-parse.c: gcc/objc/objc-parse.y
-gcc/java/parse.h: gcc/java/parse.y
-gcc/java/parse.c: gcc/java/parse.y gcc/java/lex.c gcc/java/parse.h gcc/java/lex.h
-gcc/java/parse-scan.c: gcc/java/parse-scan.y gcc/java/lex.c gcc/java/parse.h gcc/java/lex.h
-# And libraries, at last
-libchill/configure: libchill/configure.in
-libf2c/configure: libf2c/configure.in
-libf2c/libF77/configure: libf2c/libF77/configure.in
-libf2c/libI77/configure: libf2c/libI77/configure.in
-libf2c/libU77/configure: libf2c/libU77/configure.in
-libf2c/libU77/stamp-h.in: libf2c/libU77/configure.in libf2c/libU77/acconfig.h
-libobjc/configure: libobjc/configure.in
-EOF
-}
-
-
-# This function checks whether its first argument is newer than all
-# the other arguments. It returns success (0) otherwise.
-is_out_of_date () {
- test `ls -1dt ${1+"$@"} | sed 1q` != "$1"
-}
-
-
-# This function touches generated files such that the ``end'' user does
-# not have to rebuild them.
-touch_files () {
- files_and_dependencies | while read f deps; do
- if test -f $f && is_out_of_date "$f" $deps; then
- echo Touching "$f"...
- touch $f
- if is_out_of_date "$f" $deps; then
- # Hmm, it may have got the same timestamp as one of
- # its touched dependencies. Wait a second and retry
- sleep 1
- touch $f
- fi
- fi
- done
-}
+echo "Current directory is `pwd`."
-
-# This functions applies a patch to an existing tree.
-apply_patch () {
- if [ -f $1 ]; then
- echo "Applying patch file $1"
- case "$1" in
- *gz)
- gzip -d -c $1 | patch -p1 ;;
- *)
- cat $1 | patch -p1 ;;
- esac
- fi
- echo "Adjusting file timestamps"
- touch_files
-}
-
-# Check whether this indeed looks like a local tree.
-if [ ! -f gcc/version.c ]; then
- echo "This does not seem to be an egcs tree!"
- exit
-fi
-
-case "$1" in
-# First of all, check whether we are going to process a patch.
---patch)
- if test "$#" != 2; then
- echo "$1" expects only one argument >&2
- exit 1
- fi
- apply_patch "${2}"
- exit $?
- ;;
-
---touch)
- if test "$#" != 1; then
- echo "$1" does not expect any argument >&2
- exit 1
- fi
- touch_files
- exit $?
- ;;
-
---list)
- if test "$#" != 1; then
- echo "$1" does not expect any argument >&2
- exit 1
- fi
- files_and_dependencies | sed 's/ /: /'
- exit $?
- ;;
-
---help)
- sed -e '1,2d' -e '/^UPDATE_OPTIONS=/{i\
-\
-
-p
-}' \
- -e '/^$/,$d' -e 's/#//' -e 's/^ //' < $0
- exit $?
- ;;
-
-esac
-
-# Check whether this indeed looks like a local CVS tree.
-if [ ! -d CVS ]; then
- echo "This does not seem to be an egcs CVS tree!"
- exit
+# First of all, check whether this indeed looks like a local CVS of egcs.
+if [ ! -d CVS ] || [ ! -f gcc/version.c ]; then
+ echo "This does not seem to be an egcs CVS tree!"
+ exit
fi
# Check command-line options
+
if [ x"${1}"x = x"--nostdflags"x ]; then
shift
else
set -- $UPDATE_OPTIONS ${1+"$@"}
fi
-echo "Updating CVS tree"
+
+echo "Pass 1: Updating autoconf and bison generated files"
+# Do a CVS update on those files that exist in CVS directories. libg++
+# makes sense to drop into the tree, but it isn't CVS-controlled.
+X=`for i in \`find . -name configure.in -o -name '*.y'\`
+do
+ D=\`dirname $i\`/CVS
+ if [ -f $i -a -d $D ]; then
+ echo $i
+ fi
+done`
+cvs -q update $X
+if [ $? -ne 0 ]; then
+ echo "CVS update of generated files failed." >&2
+ exit 1
+fi
+
+
+echo "Pass 2: Updating full tree"
cvs -q update ${1+"$@"}
if [ $? -ne 0 ]; then
echo "CVS update of full tree failed." >&2
exit 1
fi
-echo "Adjusting file timestamps"
-touch_files
+echo "Pass 3: Fixing local tree"
+# Please also update the FAQ accordingly if you change the list of
+# files below. Note that generated files should be touched only
+# after the corresponding *.y files.
+touch `find . -name configure -print`
+touch `find texinfo -name Makefile.in -print`
+touch `find texinfo -name \*.pot -print`
+touch `find texinfo -name \*.gmo -print`
+for f in gcc/c-parse.y \
+ gcc/c-parse.h \
+ gcc/c-parse.c \
+ gcc/cstamp-h.in \
+ gcc/c-gperf.h \
+ gcc/cexp.c \
+ gcc/cp/parse.c \
+ gcc/cp/parse.h \
+ gcc/objc/objc-parse.y \
+ gcc/objc/objc-parse.c \
+ gcc/java/parse.h \
+ gcc/java/parse.c \
+ gcc/java/parse-scan.c \
+ libf2c/libU77/stamp-h.in \
+ contrib/fixinc/fixincl.x \
+ contrib/fixinc/inclhack.sh \
+ contrib/fixinc/fixincl.sh \
+ gcc/fixinc/fixincl.x \
+ gcc/fixinc/inclhack.sh \
+ gcc/fixinc/fixincl.sh
+do
+ if [ -f $f ]; then
+ touch $f
+ fi
+done
diff --git a/gnu/egcs/contrib/test_summary b/gnu/egcs/contrib/test_summary
index 03fed36fdaf..fd76292682f 100644
--- a/gnu/egcs/contrib/test_summary
+++ b/gnu/egcs/contrib/test_summary
@@ -1,6 +1,6 @@
#! /bin/sh
-# (C) 1998-1999 Free Software Foundation
+# (C) 1998 Free Software Foundation
# Originally by Alexandre Oliva <oliva@dcc.unicamp.br>
# This script is Free Software, and it can be copied, distributed and
@@ -9,8 +9,8 @@
# This script processes *.{sum,log} files, producing a shell-script
# that sends e-mail to the appropriate lists and renames files to
-# *.sent. It currently handles only gcc, but it should be quite easy
-# to modify it to handle other packages and its mailing lists.
+# *.sent. It currently handles gcc and egcs, but it should be quite
+# easy to modify it to handle other packages and its mailing lists.
# The scripts assumes it is run in the root directory of the build
# tree, and it will include all .sum files it finds in the mail
@@ -85,8 +85,6 @@ if $forcemail || $anychange; then :; else mailto=nobody; fi &&
$AWK '
BEGIN {
lang="";
- address="gcc-testresults@gcc.gnu.org";
- version="gcc";
print "cat <<\EOF |";
'${prepend_logs+" system(\"cat $prepend_logs\"); "}'
}
@@ -97,6 +95,16 @@ $1 ~ /\/configure$/ { $1 = "configure flags:"; configflags = $0 }
/^[ ]*=== [^ ]+ tests ===/ {
if (lang == "") lang = " "$2" "; else lang = " ";
}
+/\/ss(\/|c? )/ {
+ program="ss";
+ if (lang == " ") address="nobody";
+ else if (lang == " gcc ") address="gcc2@cygnus.com";
+ else address="g++@cygnus.com";
+}
+/\/egcsh?((-[^ ]*)?\/|c?[ -])/ {
+ address="egcs-testresults@egcs.cygnus.com";
+ if (version == 0) version="egcs";
+}
/--disable-haifa/ { prefix="haifa-disabled "; }
/--enable-haifa/ { prefix="haifa-enabled "; }
$2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; }
diff --git a/gnu/egcs/etc/ChangeLog b/gnu/egcs/etc/ChangeLog
index 64ae1b8629e..95cfd399fd0 100644
--- a/gnu/egcs/etc/ChangeLog
+++ b/gnu/egcs/etc/ChangeLog
@@ -1,27 +1,3 @@
-2001-01-11 Bernd Schmidt <bernds@redhat.co.uk>
-
- * standards.texi, make-stds.texi: Update to FSF version of Jan 11.
-
-2000-05-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
-
- * standards.texi, make-stds.texi: Update to FSF version of May 13.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
Mon Nov 23 16:46:10 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in: Use AC_PREREQ(2.12.1).
diff --git a/gnu/egcs/etc/make-stds.texi b/gnu/egcs/etc/make-stds.texi
index 0f0e7d4d91e..b8e0bbed4f1 100644
--- a/gnu/egcs/etc/make-stds.texi
+++ b/gnu/egcs/etc/make-stds.texi
@@ -21,8 +21,6 @@ chapter
@end ifclear
@end iftex
describes conventions for writing the Makefiles for GNU programs.
-Using Automake will help you write a Makefile that follows these
-conventions.
@menu
* Makefile Basics:: General Conventions for Makefiles
@@ -249,10 +247,9 @@ Every Makefile should define the variable @code{INSTALL}, which is the
basic command for installing a file into the system.
Every Makefile should also define the variables @code{INSTALL_PROGRAM}
-and @code{INSTALL_DATA}. (The default for @code{INSTALL_PROGRAM} should
-be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be
-@code{$@{INSTALL@} -m 644}.) Then it should use those variables as the
-commands for actual installation, for executables and nonexecutables
+and @code{INSTALL_DATA}. (The default for each of these should be
+@code{$(INSTALL)}.) Then it should use those variables as the commands
+for actual installation, for executables and nonexecutables
respectively. Use these variables as follows:
@example
@@ -283,28 +280,26 @@ installed.
Installation directories should always be named by variables, so it is
easy to install in a nonstandard place. The standard names for these
variables are described below. They are based on a standard filesystem
-layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
-and other modern operating systems.
+layout; variants of it are used in SVR4, 4.4BSD, Linux, Ultrix v4, and
+other modern operating systems.
These two variables set the root for the installation. All the other
installation directories should be subdirectories of one of these two,
and nothing should be directly installed into these two directories.
-@table @code
+@table @samp
@item prefix
-@vindex prefix
A prefix used in constructing the default values of the variables listed
below. The default value of @code{prefix} should be @file{/usr/local}.
When building the complete GNU system, the prefix will be empty and
@file{/usr} will be a symbolic link to @file{/}.
(If you are using Autoconf, write it as @samp{@@prefix@@}.)
-Running @samp{make install} with a different value of @code{prefix} from
-the one used to build the program should @emph{not} recompile the
-program.
+Running @samp{make install} with a different value of @code{prefix}
+from the one used to build the program should @var{not} recompile
+the program.
@item exec_prefix
-@vindex exec_prefix
A prefix used in constructing the default values of some of the
variables listed below. The default value of @code{exec_prefix} should
be @code{$(prefix)}.
@@ -315,22 +310,20 @@ machine-specific files (such as executables and subroutine libraries),
while @code{$(prefix)} is used directly for other directories.
Running @samp{make install} with a different value of @code{exec_prefix}
-from the one used to build the program should @emph{not} recompile the
+from the one used to build the program should @var{not} recompile the
program.
@end table
Executable programs are installed in one of the following directories.
-@table @code
+@table @samp
@item bindir
-@vindex bindir
The directory for installing executable programs that users can run.
This should normally be @file{/usr/local/bin}, but write it as
@file{$(exec_prefix)/bin}.
(If you are using Autoconf, write it as @samp{@@bindir@@}.)
@item sbindir
-@vindex sbindir
The directory for installing executable programs that can be run from
the shell, but are only generally useful to system administrators. This
should normally be @file{/usr/local/sbin}, but write it as
@@ -338,7 +331,6 @@ should normally be @file{/usr/local/sbin}, but write it as
(If you are using Autoconf, write it as @samp{@@sbindir@@}.)
@item libexecdir
-@vindex libexecdir
@comment This paragraph adjusted to avoid overfull hbox --roland 5jul94
The directory for installing executable programs to be run by other
programs rather than by users. This directory should normally be
@@ -631,8 +623,7 @@ the installation commands. @xref{Install Command Categories}.
@item install-strip
Like @code{install}, but strip the executable files while installing
-them. In simple cases, this target can use the @code{install} target in
-a simple way:
+them. In many cases, the definition of this target can be very simple:
@smallexample
install-strip:
@@ -640,14 +631,6 @@ install-strip:
install
@end smallexample
-But if the package installs scripts as well as real executables, the
-@code{install-strip} target can't just refer to the @code{install}
-target; it has to strip the executables but not the scripts.
-
-@code{install-strip} should not strip the executables in the build
-directory which are being copied for installation. It should only strip
-the copies that are installed.
-
Normally we do not recommend stripping an executable unless you are sure
the program has no bugs. However, it can be reasonable to install a
stripped executable for actual execution while saving the unstripped
diff --git a/gnu/egcs/etc/standards.texi b/gnu/egcs/etc/standards.texi
index 8f515012e26..93fddcb0e21 100644
--- a/gnu/egcs/etc/standards.texi
+++ b/gnu/egcs/etc/standards.texi
@@ -3,7 +3,7 @@
@setfilename standards.info
@settitle GNU Coding Standards
@c This date is automagically updated when you save this file:
-@set lastupdate December 1, 2000
+@set lastupdate March 13, 1998
@c %**end of header
@ifinfo
@@ -17,12 +17,6 @@ END-INFO-DIR-ENTRY
@c @setchapternewpage odd
@setchapternewpage off
-@c Put everything in one index (arbitrarily chosen to be the concept index).
-@syncodeindex fn cp
-@syncodeindex ky cp
-@syncodeindex pg cp
-@syncodeindex vr cp
-
@c This is used by a cross ref in make-stds.texi
@set CODESTD 1
@iftex
@@ -34,7 +28,7 @@ END-INFO-DIR-ENTRY
@ifinfo
GNU Coding Standards
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -65,7 +59,7 @@ by the Free Software Foundation.
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -90,15 +84,13 @@ Last updated @value{lastupdate}.
@end ifinfo
@menu
-* Preface:: About the GNU Coding Standards
-* Legal Issues:: Keeping Free Software Free
-* Design Advice:: General Program Design
-* Program Behavior:: Program Behavior for All Programs
-* Writing C:: Making The Best Use of C
-* Documentation:: Documenting Programs
-* Managing Releases:: The Release Process
-* References:: References to Non-Free Software or Documentation
-* Index::
+* Preface:: About the GNU Coding Standards
+* Intellectual Property:: Keeping Free Software Free
+* Design Advice:: General Program Design
+* Program Behavior:: Program Behavior for All Programs
+* Writing C:: Making The Best Use of C
+* Documentation:: Documenting Programs
+* Managing Releases:: The Release Process
@end menu
@node Preface
@@ -113,7 +105,7 @@ even if you write in another programming language. The rules often
state reasons for writing in a certain way.
Corrections or suggestions for this document should be sent to
-@email{bug-standards@@gnu.org}. If you make a suggestion, please include a
+@email{gnu@@gnu.org}. If you make a suggestion, please include a
suggested new wording for it; our time is limited. We prefer a context
diff to the @file{standards.texi} or @file{make-stds.texi} files, but if
you don't have those files, please mail your suggestion anyway.
@@ -121,34 +113,19 @@ you don't have those files, please mail your suggestion anyway.
This release of the GNU Coding Standards was last updated
@value{lastupdate}.
-@cindex where to obtain @code{standards.texi}
-@cindex downloading this manual
-If you did not obtain this file directly from the GNU project and
-recently, please check for a newer version. You can ftp the GNU Coding
-Standards from any GNU FTP host in the directory
-@file{/pub/gnu/standards/}. The GNU Coding Standards are available
-there in several different formats: @file{standards.text},
-@file{standards.texi}, @file{standards.info}, and @file{standards.dvi}.
-The GNU Coding Standards are also available on the GNU World Wide Web
-server: @uref{http://www.gnu.org/prep/standards_toc.html}.
-
-@node Legal Issues
+@node Intellectual Property
@chapter Keeping Free Software Free
-@cindex legal aspects
This @value{CHAPTER} discusses how you can make sure that GNU software
-avoids legal difficulties, and other related issues.
+remains unencumbered.
@menu
* Reading Non-Free Code:: Referring to Proprietary Programs
* Contributions:: Accepting Contributions
-* Trademarks:: How We Deal with Trademark Issues
@end menu
@node Reading Non-Free Code
@section Referring to Proprietary Programs
-@cindex proprietary programs
-@cindex avoiding proprietary code
Don't in any circumstances refer to Unix source code for or during
your work on GNU! (Or to any other proprietary programs.)
@@ -180,17 +157,15 @@ Or turn some parts of the program into independently usable libraries.
Or use a simple garbage collector instead of tracking precisely when
to free memory, or use a new GNU facility such as obstacks.
+
@node Contributions
@section Accepting Contributions
-@cindex legal papers
-@cindex accepting contributions
-
-If the program you are working on is copyrighted by the Free Software
-Foundation, then when someone else sends you a piece of code to add to
-the program, we need legal papers to use it---just as we asked you to
-sign papers initially. @emph{Each} person who makes a nontrivial
-contribution to a program must sign some sort of legal papers in order
-for us to have clear title to the program; the main author alone is not
+
+If someone else sends you a piece of code to add to the program you are
+working on, we need legal papers to use it---the same sort of legal
+papers we will need to get from you. @emph{Each} significant
+contributor to a program must sign some sort of legal papers in order
+for us to have clear title to the program. The main author alone is not
enough.
So, before adding in any contributions from other people, please tell
@@ -206,17 +181,16 @@ This also applies to comments and documentation files. For copyright
law, comments and code are just text. Copyright applies to all kinds of
text, so we need legal papers for all kinds.
-We know it is frustrating to ask for legal papers; it's frustrating for
-us as well. But if you don't wait, you are going out on a limb---for
-example, what if the contributor's employer won't sign a disclaimer?
-You might have to take that code out again!
-
You don't need papers for changes of a few lines here or there, since
they are not significant for copyright purposes. Also, you don't need
papers if all you get from the suggestion is some ideas, not actual code
-which you use. For example, if someone send you one implementation, but
-you write a different implementation of the same idea, you don't need to
-get papers.
+which you use. For example, if you write a different solution to the
+problem, you don't need to get papers.
+
+We know this is frustrating; it's frustrating for us as well. But if
+you don't wait, you are going out on a limb---for example, what if the
+contributor's employer won't sign a disclaimer? You might have to take
+that code out again!
The very worst thing is if you forget to tell us about the other
contributor. We could be very embarrassed in court some day as a
@@ -226,123 +200,39 @@ We have more detailed advice for maintainers of programs; if you have
reached the stage of actually maintaining a program for GNU (whether
released or not), please ask us for a copy.
-@node Trademarks
-@section Trademarks
-@cindex trademarks
-
-Please do not include any trademark acknowledgements in GNU software
-packages or documentation.
-
-Trademark acknowledgements are the statements that such-and-such is a
-trademark of so-and-so. The GNU Project has no objection to the basic
-idea of trademarks, but these acknowledgements feel like kowtowing, so
-we don't use them. There is no legal requirement for them.
-
-What is legally required, as regards other people's trademarks, is to
-avoid using them in ways which a reader might read as naming or labeling
-our own programs or activities. For example, since ``Objective C'' is
-(or at least was) a trademark, we made sure to say that we provide a
-``compiler for the Objective C language'' rather than an ``Objective C
-compiler''. The latter is meant to be short for the former, but it does
-not explicitly state the relationship, so it could be misinterpreted as
-using ``Objective C'' as a label for the compiler rather than for the
-language.
-
@node Design Advice
@chapter General Program Design
-@cindex program design
This @value{CHAPTER} discusses some of the issues you should take into
account when designing your program.
-@c Standard or ANSI C
-@c
-@c In 1989 the American National Standards Institute (ANSI) standardized
-@c C as standard X3.159-1989. In December of that year the
-@c International Standards Organization ISO adopted the ANSI C standard
-@c making minor changes. In 1990 ANSI then re-adopted ISO standard
-@c C. This version of C is known as either ANSI C or Standard C.
-
-@c A major revision of the C Standard appeared in 1999.
-
@menu
-* Source Language:: Which languges to use.
* Compatibility:: Compatibility with other implementations
* Using Extensions:: Using non-standard features
-* Standard C:: Using Standard C features
+* ANSI C:: Using ANSI C features
+* Source Language:: Using languages other than C
@end menu
-@node Source Language
-@section Which Languages to Use
-@cindex programming languges
-
-When you want to use a language that gets compiled and runs at high
-speed, the best language to use is C. Using another language is like
-using a non-standard feature: it will cause trouble for users. Even if
-GCC supports the other language, users may find it inconvenient to have
-to install the compiler for that other language in order to build your
-program. For example, if you write your program in C++, people will
-have to install the GNU C++ compiler in order to compile your program.
-
-C has one other advantage over C++ and other compiled languages: more
-people know C, so more people will find it easy to read and modify the
-program if it is written in C.
-
-So in general it is much better to use C, rather than the
-comparable alternatives.
-
-But there are two exceptions to that conclusion:
-
-@itemize @bullet
-@item
-It is no problem to use another language to write a tool specifically
-intended for use with that language. That is because the only people
-who want to build the tool will be those who have installed the other
-language anyway.
-
-@item
-If an application is of interest only to a narrow part of the community,
-then the question of which language it is written in has less effect on
-other people, so you may as well please yourself.
-@end itemize
-
-Many programs are designed to be extensible: they include an interpreter
-for a language that is higher level than C. Often much of the program
-is written in that language, too. The Emacs editor pioneered this
-technique.
-
-@cindex GUILE
-The standard extensibility interpreter for GNU software is GUILE, which
-implements the language Scheme (an especially clean and simple dialect
-of Lisp). @uref{http://www.gnu.org/software/guile/}. We don't reject
-programs written in other ``scripting languages'' such as Perl and
-Python, but using GUILE is very important for the overall consistency of
-the GNU system.
-
@node Compatibility
@section Compatibility with Other Implementations
-@cindex compatibility with C and @sc{posix} standards
-@cindex @sc{posix} compatibility
With occasional exceptions, utility programs and libraries for GNU
should be upward compatible with those in Berkeley Unix, and upward
-compatible with Standard C if Standard C specifies their
-behavior, and upward compatible with @sc{posix} if @sc{posix} specifies
-their behavior.
+compatible with @sc{ansi} C if @sc{ansi} C specifies their behavior, and
+upward compatible with @sc{POSIX} if @sc{POSIX} specifies their
+behavior.
When these standards conflict, it is useful to offer compatibility
modes for each of them.
-@cindex options for compatibility
-Standard C and @sc{posix} prohibit many kinds of extensions. Feel
-free to make the extensions anyway, and include a @samp{--ansi},
+@sc{ansi} C and @sc{POSIX} prohibit many kinds of extensions. Feel free
+to make the extensions anyway, and include a @samp{--ansi},
@samp{--posix}, or @samp{--compatible} option to turn them off.
However, if the extension has a significant chance of breaking any real
-programs or scripts, then it is not really upward compatible. So you
-should try to redesign its interface to make it upward compatible.
+programs or scripts, then it is not really upward compatible. Try to
+redesign its interface.
-@cindex @code{POSIXLY_CORRECT}, environment variable
-Many GNU programs suppress extensions that conflict with @sc{posix} if the
+Many GNU programs suppress extensions that conflict with POSIX if the
environment variable @code{POSIXLY_CORRECT} is defined (even if it is
defined with a null value). Please make your program recognize this
variable if appropriate.
@@ -353,12 +243,10 @@ completely with something totally different and better. (For example,
@code{vi} is replaced with Emacs.) But it is nice to offer a compatible
feature as well. (There is a free @code{vi} clone, so we offer it.)
-Additional useful features are welcome regardless of whether
-there is any precedent for them.
+Additional useful features not in Berkeley Unix are welcome.
@node Using Extensions
@section Using Non-standard Features
-@cindex non-standard extensions
Many GNU facilities that already exist support a number of convenient
extensions over the comparable Unix facilities. Whether to use these
@@ -379,33 +267,29 @@ straightforwardly do without them, but to use the extensions if they
are a big improvement.
An exception to this rule are the large, established programs (such as
-Emacs) which run on a great variety of systems. Using GNU extensions in
-such programs would make many users unhappy, so we don't do that.
-
-Another exception is for programs that are used as part of compilation:
-anything that must be compiled with other compilers in order to
-bootstrap the GNU compilation facilities. If these require the GNU
-compiler, then no one can compile them without having them installed
-already. That would be extremely troublesome in certain cases.
+Emacs) which run on a great variety of systems. Such programs would
+be broken by use of GNU extensions.
-@node Standard C
-@section Standard C and Pre-Standard C
-@cindex @sc{ansi} C standard
+Another exception is for programs that are used as part of
+compilation: anything that must be compiled with other compilers in
+order to bootstrap the GNU compilation facilities. If these require
+the GNU compiler, then no one can compile them without having them
+installed already. That would be no good.
-1989 Standard C is widespread enough now that it is ok to use its
-features in new programs. There is one exception: do not ever use the
-``trigraph'' feature of Standard C.
+@node ANSI C
+@section @sc{ansi} C and pre-@sc{ansi} C
-1999 Standard C is not widespread yet, so please do not require its
-features in programs. It is ok to use its features if they are present.
+Do not ever use the ``trigraph'' feature of @sc{ansi} C.
-However, it is easy to support pre-standard compilers in most programs,
-so if you know how to do that, feel free. If a program you are
-maintaining has such support, you should try to keep it working.
+@sc{ansi} C is widespread enough now that it is ok to write new programs
+that use @sc{ansi} C features (and therefore will not work in
+non-@sc{ansi} compilers). And if a program is already written in
+@sc{ansi} C, there's no need to convert it to support non-@sc{ansi}
+compilers.
-@cindex function prototypes
-To support pre-standard C, instead of writing function definitions in
-standard prototype form,
+However, it is easy to support non-@sc{ansi} compilers in most programs,
+so you might still consider doing so when you write a program. Instead
+of writing function definitions in @sc{ansi} prototype form,
@example
int
@@ -414,7 +298,7 @@ foo (int x, int y)
@end example
@noindent
-write the definition in pre-standard style like this,
+write the definition in pre-@sc{ansi} style like this,
@example
int
@@ -431,75 +315,79 @@ int foo (int, int);
@end example
You need such a declaration anyway, in a header file, to get the benefit
-of prototypes in all the files where the function is called. And once
-you have the declaration, you normally lose nothing by writing the
-function definition in the pre-standard style.
-
-This technique does not work for integer types narrower than @code{int}.
-If you think of an argument as being of a type narrower than @code{int},
-declare it as @code{int} instead.
-
-There are a few special cases where this technique is hard to use. For
-example, if a function argument needs to hold the system type
-@code{dev_t}, you run into trouble, because @code{dev_t} is shorter than
-@code{int} on some machines; but you cannot use @code{int} instead,
-because @code{dev_t} is wider than @code{int} on some machines. There
-is no type you can safely use on all machines in a non-standard
-definition. The only way to support non-standard C and pass such an
-argument is to check the width of @code{dev_t} using Autoconf and choose
-the argument type accordingly. This may not be worth the trouble.
-
-In order to support pre-standard compilers that do not recognize
-prototypes, you may want to use a preprocessor macro like this:
+of @sc{ansi} C prototypes in all the files where the function is called.
+And once you have it, you lose nothing by writing the function
+definition in the pre-@sc{ansi} style.
-@example
-/* Declare the prototype for a general external function. */
-#if defined (__STDC__) || defined (WINDOWSNT)
-#define P_(proto) proto
-#else
-#define P_(proto) ()
-#endif
-@end example
+If you don't know non-@sc{ansi} C, there's no need to learn it; just
+write in @sc{ansi} C.
+
+@node Source Language
+@section Using Languages Other Than C
+
+Using a language other than C is like using a non-standard feature: it
+will cause trouble for users. Even if GCC supports the other language,
+users may find it inconvenient to have to install the compiler for that
+other language in order to build your program. For example, if you
+write your program in C++, people will have to install the C++ compiler
+in order to compile your program. Thus, it is better if you write in C.
+
+But there are three situations when there is no disadvantage in using
+some other language:
+
+@itemize @bullet
+@item
+It is okay to use another language if your program contains an
+interpreter for that language.
+
+For example, if your program links with GUILE, it is ok to write part of
+the program in Scheme or another language supported by GUILE.
+
+@item
+It is okay to use another language in a tool specifically intended for
+use with that language.
+
+This is okay because the only people who want to build the tool will be
+those who have installed the other language anyway.
+
+@item
+If an application is of interest to a narrow community, then perhaps
+it's not important if the application is inconvenient to install.
+@end itemize
+
+C has one other advantage over C++ and other compiled languages: more
+people know C, so more people will find it easy to read and modify the
+program if it is written in C.
@node Program Behavior
@chapter Program Behavior for All Programs
-This @value{CHAPTER} describes conventions for writing robust
-software. It also describes general standards for error messages, the
-command line interface, and how libraries should behave.
+This @value{CHAPTER} describes how to write robust software. It also
+describes general standards for error messages, the command line interface,
+and how libraries should behave.
@menu
* Semantics:: Writing robust programs
* Libraries:: Library behavior
* Errors:: Formatting error messages
-* User Interfaces:: Standards about interfaces generally
-* Graphical Interfaces:: Standards for graphical interfaces
-* Command-Line Interfaces:: Standards for command line interfaces
-* Option Table:: Table of long options
+* User Interfaces:: Standards for command line interfaces
+* Option Table:: Table of long options.
* Memory Usage:: When and how to care about memory needs
-* File Usage:: Which files to use, and where
@end menu
@node Semantics
@section Writing Robust Programs
-@cindex arbitrary limits on data
Avoid arbitrary limits on the length or number of @emph{any} data
structure, including file names, lines, files, and symbols, by allocating
all data structures dynamically. In most Unix utilities, ``long lines
are silently truncated''. This is not acceptable in a GNU utility.
-@cindex @code{NUL} characters
Utilities reading files should not drop NUL characters, or any other
-nonprinting characters @emph{including those with codes above 0177}.
-The only sensible exceptions would be utilities specifically intended
-for interface to certain types of terminals or printers
-that can't handle those characters.
-Whenever possible, try to make programs work properly with
-sequences of bytes that represent multibyte characters, using encodings
-such as UTF-8 and others.
-
-@cindex error messages
+nonprinting characters @emph{including those with codes above 0177}. The
+only sensible exceptions would be utilities specifically intended for
+interface to certain types of printers that can't handle those characters.
+
Check every system call for an error return, unless you know you wish to
ignore errors. Include the system error text (from @code{perror} or
equivalent) in @emph{every} error message resulting from a failing
@@ -507,8 +395,6 @@ system call, as well as the name of the file if any and the name of the
utility. Just ``cannot open foo.c'' or ``stat failed'' is not
sufficient.
-@cindex @code{malloc} return value
-@cindex memory allocation failure
Check every call to @code{malloc} or @code{realloc} to see if it
returned zero. Check @code{realloc} even if you are making the block
smaller; in a system that rounds block sizes to a power of 2,
@@ -530,7 +416,6 @@ user), it is better to abort the command and return to the command
reader loop. This allows the user to kill other processes to free up
virtual memory, and then try the command again.
-@cindex command-line arguments, decoding
Use @code{getopt_long} to decode arguments, unless the argument syntax
makes this unreasonable.
@@ -543,21 +428,12 @@ Try to avoid low-level interfaces to obscure Unix data structures (such
as file directories, utmp, or the layout of kernel memory), since these
are less likely to work compatibly. If you need to find all the files
in a directory, use @code{readdir} or some other high-level interface.
-These are supported compatibly by GNU.
+These will be supported compatibly by GNU.
-@cindex signal handling
-The preferred signal handling facilities are the BSD variant of
-@code{signal}, and the @sc{posix} @code{sigaction} function; the
-alternative USG @code{signal} interface is an inferior design.
+By default, the GNU system will provide the signal handling functions of
+@sc{BSD} and of @sc{POSIX}. So GNU software should be written to use
+these.
-Nowadays, using the @sc{posix} signal functions may be the easiest way
-to make a program portable. If you use @code{signal}, then on GNU/Linux
-systems running GNU libc version 1, you should include
-@file{bsd/signal.h} instead of @file{signal.h}, so as to get BSD
-behavior. It is up to you whether to support systems where
-@code{signal} has only the USG behavior, or give up on them.
-
-@cindex impossible conditions
In error checks that detect ``impossible'' conditions, just abort.
There is usually no point in printing any message. These checks
indicate the existence of bugs. Whoever wants to fix the bugs will have
@@ -572,28 +448,12 @@ bits (0 through 255). A single run of the program might have 256
errors; if you try to return 256 as the exit status, the parent process
will see 0 as the status, and it will appear that the program succeeded.
-@cindex temporary files
-@cindex @code{TMPDIR} environment variable
If you make temporary files, check the @code{TMPDIR} environment
variable; if that variable is defined, use the specified directory
instead of @file{/tmp}.
-In addition, be aware that there is a possible security problem when
-creating temporary files in world-writable directories. In C, you can
-avoid this problem by creating temporary files in this manner:
-
-@example
-fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
-@end example
-
-@noindent
-or by using the @code{mkstemps} function from libiberty.
-
-In bash, use @code{set -C} to avoid this problem.
-
@node Libraries
@section Library Behavior
-@cindex libraries
Try to make library functions reentrant. If they need to do dynamic
storage allocation, at least try to avoid any nonreentrancy aside from
@@ -613,18 +473,16 @@ together, so that no reasonable program could use one without the
other; then they can both go in the same file.
External symbols that are not documented entry points for the user
-should have names beginning with @samp{_}. The @samp{_} should be
-followed by the chosen name prefix for the library, to prevent
-collisions with other libraries. These can go in the same files with
-user entry points if you like.
+should have names beginning with @samp{_}. They should also contain
+the chosen name prefix for the library, to prevent collisions with
+other libraries. These can go in the same files with user entry
+points if you like.
Static functions and variables can be used as you like and need not
fit any naming convention.
@node Errors
@section Formatting Error Messages
-@cindex formatting error messages
-@cindex error messages, formatting
Error messages from compilers should look like this:
@@ -632,20 +490,6 @@ Error messages from compilers should look like this:
@var{source-file-name}:@var{lineno}: @var{message}
@end example
-@noindent
-If you want to mention the column number, use this format:
-
-@example
-@var{source-file-name}:@var{lineno}:@var{column}: @var{message}
-@end example
-
-@noindent
-Line numbers should start from 1 at the beginning of the file, and
-column numbers should start from 1 at the beginning of the line. (Both
-of these conventions are chosen for compatibility.) Calculate column
-numbers assuming that space and all ASCII printing characters have
-equal width, and assuming tab stops every 8 columns.
-
Error messages from other noninteractive programs should look like this:
@example
@@ -662,12 +506,6 @@ when there is an appropriate source file, or like this:
@noindent
when there is no relevant source file.
-If you want to mention the column number, use this format:
-
-@example
-@var{program}:@var{source-file-name}:@var{lineno}:@var{column}: @var{message}
-@end example
-
In an interactive program (one that is reading commands from a
terminal), it is better not to include the program name in an error
message. The place to indicate which program is running is in the
@@ -684,10 +522,8 @@ usage messages, should start with a capital letter. But they should not
end with a period.
@node User Interfaces
-@section Standards for Interfaces Generally
+@section Standards for Command Line Interfaces
-@cindex program name and its behavior
-@cindex behavior, dependent on program's name
Please don't make the behavior of a utility depend on the name used
to invoke it. It is useful sometimes to make a link to a utility
with a different name, and that should not change what it does.
@@ -695,13 +531,10 @@ with a different name, and that should not change what it does.
Instead, use a run time option or a compilation switch or both
to select among the alternate behaviors.
-@cindex output device and program's behavior
Likewise, please don't make the behavior of the program depend on the
type of output device it is used with. Device independence is an
-important principle of the system's design; do not compromise it merely
-to save someone from typing an option now and then. (Variation in error
-message syntax when using a terminal is ok, because that is a side issue
-that people do not depend on.)
+important principle of the system's design; do not compromise it
+merely to save someone from typing an option now and then.
If you think one behavior is most useful when the output is to a
terminal, and another is most useful when the output is a file or a
@@ -717,42 +550,13 @@ output device type. For example, we provide a @code{dir} program much
like @code{ls} except that its default output format is always
multi-column format.
-@node Graphical Interfaces
-@section Standards for Graphical Interfaces
-@cindex graphical user interface
-
-@cindex gtk
-When you write a program that provides a graphical user interface,
-please make it work with X Windows and the GTK toolkit unless the
-functionality specifically requires some alternative (for example,
-``displaying jpeg images while in console mode'').
-
-In addition, please provide a command-line interface to control the
-functionality. (In many cases, the graphical user interface can be a
-separate program which invokes the command-line program.) This is
-so that the same jobs can be done from scripts.
-
-@cindex corba
-@cindex gnome
-Please also consider providing a CORBA interface (for use from GNOME), a
-library interface (for use from C), and perhaps a keyboard-driven
-console interface (for use by users from console mode). Once you are
-doing the work to provide the functionality and the graphical interface,
-these won't be much extra work.
-
-@node Command-Line Interfaces
-@section Standards for Command Line Interfaces
-@cindex command-line interface
-
-@findex getopt
-It is a good idea to follow the @sc{posix} guidelines for the
+It is a good idea to follow the @sc{POSIX} guidelines for the
command-line options of a program. The easiest way to do this is to use
@code{getopt} to parse them. Note that the GNU version of @code{getopt}
will normally permit options anywhere among the arguments unless the
-special argument @samp{--} is used. This is not what @sc{posix}
+special argument @samp{--} is used. This is not what @sc{POSIX}
specifies; it is a GNU extension.
-@cindex long-named options
Please define long-named options that are equivalent to the
single-letter Unix-style options. We hope to make GNU more user
friendly this way. This is easy to do with the GNU function
@@ -772,20 +576,16 @@ file name as an ordinary argument for compatibility, try to provide an
option as another way to specify it. This will lead to more consistency
among GNU utilities, and fewer idiosyncracies for users to remember.
-@cindex standard command-line options
All programs should support two standard options: @samp{--version}
and @samp{--help}.
@table @code
-@cindex @samp{--version} option
@item --version
-This option should direct the program to print information about its name,
+This option should direct the program to information about its name,
version, origin and legal status, all on standard output, and then exit
successfully. Other options and arguments should be ignored once this
is seen, and the program should not perform its normal function.
-@cindex canonical name of a program
-@cindex program's canonical name
The first line is meant to be easy for a program to parse; the version
number proper starts after the last space. In addition, it contains
the canonical name for this program, in this format:
@@ -858,15 +658,12 @@ versions' changes. You don't have to mention the name of the program in
these notices, if that is inconvenient, since it appeared in the first
line.
-@cindex @samp{--help} option
@item --help
This option should output brief documentation for how to invoke the
program, on standard output, then exit successfully. Other options and
arguments should be ignored once this is seen, and the program should
not perform its normal function.
-@cindex address for bug reports
-@cindex bug reports
Near the end of the @samp{--help} option's output there should be a line
that says where to mail bug reports. It should have this format:
@@ -877,13 +674,11 @@ Report bugs to @var{mailing-address}.
@node Option Table
@section Table of Long Options
-@cindex long option names
-@cindex table of long options
Here is a table of long options used by GNU programs. It is surely
incomplete, but we aim to list all the options that a new program might
want to be compatible with. If you use names not already in the table,
-please send @email{bug-standards@@gnu.org} a list of them, with their
+please send @email{gnu@@gnu.org} a list of them, with their
meanings, so we can update the table.
@c Please leave newlines between items in this table; it's much easier
@@ -943,9 +738,6 @@ and @code{unexpand}.
@item avoid-wraps
@samp{-n} in @code{wdiff}.
-@item background
-For server programs, run in the background.
-
@item backward-search
@samp{-B} in @code{ctags}.
@@ -1070,9 +862,6 @@ Used in @code{tar} and @code{cpio}.
@item dereference-args
@samp{-D} in @code{du}.
-@item device
-Specify an I/O device (special file name).
-
@item diacritics
@samp{-d} in @code{recode}.
@@ -1205,11 +994,6 @@ Used in @code{makeinfo}.
@item force-prefix
@samp{-F} in @code{shar}.
-@item foreground
-For server programs, run in the foreground;
-in other words, don't do anything special to run the server
-in the background.
-
@item format
Used in @code{ls}, @code{time}, and @code{ptx}.
@@ -1255,9 +1039,6 @@ Used to ask for brief usage information.
@item hide-control-chars
@samp{-q} in @code{ls}.
-@item html
-In @code{makeinfo}, output HTML.
-
@item idle
@samp{-u} in @code{who}.
@@ -1318,10 +1099,6 @@ In @code{makeinfo}, output HTML.
@item info
@samp{-i}, @samp{-l}, and @samp{-m} in Finger.
-@item init-file
-In some programs, specify the name of the file to read as the user's
-init file.
-
@item initial
@samp{-i} in @code{expand}.
@@ -1340,9 +1117,6 @@ init file.
@item intermix-type
@samp{-p} in @code{shar}.
-@item iso-8601
-Used in @code{date}
-
@item jobs
@samp{-j} in Make.
@@ -1578,10 +1352,6 @@ Used in GDB.
@item only-time
@samp{-F} in @code{gprof}.
-@item options
-@samp{-o} in @code{getopt}, @code{fdlist}, @code{fdmount},
-@code{fdmountd}, and @code{fdumount}.
-
@item output
In various programs, specify the output file name.
@@ -1666,9 +1436,6 @@ Used in @code{tar} and @code{cp}.
@item prompt
@samp{-p} in @code{ed}.
-@item proxy
-Specify an HTTP proxy.
-
@item query-user
@samp{-X} in @code{shar}.
@@ -1797,12 +1564,6 @@ Used in many programs to inhibit the usual output.
@item size
@samp{-s} in @code{ls}.
-@item socket
-Specify a file descriptor for a network server to use for its socket,
-instead of opening and binding a new socket. This provides a way to
-run, in a nonpriveledged process, a server that normally needs a
-reserved port number.
-
@item sort
Used in @code{ls}.
@@ -1901,9 +1662,6 @@ Used in GDB and @code{objdump}.
@item time
Used in @code{ls} and @code{touch}.
-@item timeout
-Specify how long to wait before giving up on some operation.
-
@item to-stdout
@samp{-O} in @code{tar}.
@@ -1996,9 +1754,8 @@ Print the version number.
@node Memory Usage
@section Memory Usage
-@cindex memory usage
-If a program typically uses just a few meg of memory, don't bother making any
+If it typically uses just a few meg of memory, don't bother making any
effort to reduce memory usage. For example, if it is impractical for
other reasons to operate on files more than a few meg long, it is
reasonable to read entire input files into core to operate on them.
@@ -2014,23 +1771,6 @@ files that are bigger than will fit in core all at once.
If your program creates complicated data structures, just make them in
core and give a fatal error if @code{malloc} returns zero.
-@node File Usage
-@section File Usage
-@cindex file usage
-
-Programs should be prepared to operate when @file{/usr} and @file{/etc}
-are read-only file systems. Thus, if the program manages log files,
-lock files, backup files, score files, or any other files which are
-modified for internal purposes, these files should not be stored in
-@file{/usr} or @file{/etc}.
-
-There are two exceptions. @file{/etc} is used to store system
-configuration information; it is reasonable for a program to modify
-files in @file{/etc} when its job is to update the system configuration.
-Also, if the user explicitly asks to modify one file in a directory, it
-is reasonable for the program to store other files in the same
-directory.
-
@node Writing C
@chapter Making The Best Use of C
@@ -2051,10 +1791,7 @@ when writing GNU software.
@node Formatting
@section Formatting Your Source Code
-@cindex formatting source code
-@cindex open brace
-@cindex braces, in C source
It is important to put the open-brace that starts the body of a C
function in column zero, and avoid putting any other open-brace or
open-parenthesis or open-bracket in column zero. Several tools look
@@ -2076,8 +1813,7 @@ concat (s1, s2) /* Name starts in column zero here */
@end example
@noindent
-or, if you want to use Standard C syntax, format the definition like
-this:
+or, if you want to use @sc{ansi} C, format the definition like this:
@example
static char *
@@ -2087,7 +1823,7 @@ concat (char *s1, char *s2)
@}
@end example
-In Standard C, if the arguments don't fit nicely on one line,
+In @sc{ansi} C, if the arguments don't fit nicely on one line,
split it like this:
@example
@@ -2097,25 +1833,7 @@ lots_of_args (int an_integer, long a_long, short a_short,
@dots{}
@end example
-The rest of this section gives our recommendations for other aspects of
-C formatting style, which is also the default style of the @code{indent}
-program in version 1.2 and newer. It corresponds to the options
-
-@smallexample
--nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
--ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob
-@end smallexample
-
-We don't think of these recommendations as requirements, because it
-causes no problems for users if two different programs have different
-formatting styles.
-
-But whatever style you use, please use it consistently, since a mixture
-of styles within one program tends to look ugly. If you are
-contributing changes to an existing program, please follow the style of
-that program.
-
-For the body of the function, our recommended style looks like this:
+For the body of the function, we prefer code formatted like this:
@example
if (x < foo (y, z))
@@ -2131,14 +1849,12 @@ else
@}
@end example
-@cindex spaces before open-paren
We find it easier to read a program when it has spaces before the
open-parentheses and after the commas. Especially after the commas.
When you split an expression into multiple lines, split it
before an operator, not after one. Here is the right way:
-@cindex expressions, splitting
@example
if (foo_this_is_long && bar > win (x, y, z)
&& remaining_condition)
@@ -2163,15 +1879,14 @@ mode = ((inmode[j] == VOIDmode
Insert extra parentheses so that Emacs will indent the code properly.
For example, the following indentation looks nice if you do it by hand,
+but Emacs would mess it up:
@example
v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+ rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;
@end example
-@noindent
-but Emacs would alter it. Adding a set of parentheses produces
-something that looks equally nice, and which Emacs will preserve:
+But adding a set of parentheses solves the problem:
@example
v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
@@ -2188,16 +1903,14 @@ do
while (a > 0);
@end example
-@cindex formfeed
-@cindex control-L
Please use formfeed characters (control-L) to divide the program into
pages at logical places (but not within a function). It does not matter
just how long the pages are, since they do not have to fit on a printed
page. The formfeeds should appear alone on lines by themselves.
+
@node Comments
@section Commenting Your Work
-@cindex commenting
Every program should start with a comment saying briefly what it is for.
Example: @samp{fmt - filter for simple filling of text}.
@@ -2249,8 +1962,6 @@ There should be a comment on each static variable as well, like this:
int truncate_lines;
@end example
-@cindex conditionals, comments for
-@cindex @code{#endif}, commenting
Every @samp{#endif} should have a comment, except in the case of short
conditionals (just a few lines) that are not nested. The comment should
state the condition of the conditional that is ending, @emph{including
@@ -2292,23 +2003,9 @@ but, by contrast, write the comments this way for a @samp{#ifndef}:
@node Syntactic Conventions
@section Clean Use of C Constructs
-@cindex syntactic conventions
-
-@cindex implicit @code{int}
-@cindex function argument, declaring
-Please explicitly declare the types of all objects. For example, you
-should explicitly declare all arguments to functions, and you should
-declare functions to return @code{int} rather than omitting the
-@code{int}.
-
-@cindex compiler warnings
-@cindex @samp{-Wall} compiler option
-Some programmers like to use the GCC @samp{-Wall} option, and change the
-code whenever it issues a warning. If you want to do this, then do.
-Other programmers prefer not to use @samp{-Wall}, because it gives
-warnings for valid and legitimate code which they do not want to change.
-If you want to do this, then do. The compiler should be your servant,
-not your master.
+
+Please explicitly declare all arguments to functions.
+Don't omit them just because they are @code{int}s.
Declarations of external functions and functions to appear later in the
source file should all go in one place near the beginning of the file
@@ -2316,7 +2013,6 @@ source file should all go in one place near the beginning of the file
should go in a header file. Don't put @code{extern} declarations inside
functions.
-@cindex temporary variables
It used to be common practice to use the same local variables (with
names like @code{tem}) over and over for different values within one
function. Instead of doing this, it is better declare a separate local
@@ -2328,7 +2024,6 @@ all its uses. This makes the program even cleaner.
Don't use local variables or parameters that shadow global identifiers.
-@cindex multiple variables in a line
Don't declare multiple variables in one declaration that spans lines.
Start a new declaration on each line, instead. For example, instead
of this:
@@ -2429,15 +2124,13 @@ if (foo == 0)
fatal ("virtual memory exhausted");
@end example
-@pindex lint
Don't make the program ugly to placate @code{lint}. Please don't insert any
casts to @code{void}. Zero without a cast is perfectly fine as a null
pointer constant, except when calling a varargs function.
-@node Names
+@node Names
@section Naming Variables and Functions
-@cindex names of variables and functions
The names of global variables and functions in a program serve as
comments of a sort. So don't choose terse names---instead, look for
names that give useful information about the meaning of the variable or
@@ -2447,10 +2140,6 @@ comments.
Local variable names can be shorter, because they are used only within
one context, where (presumably) comments explain their purpose.
-Try to limit your use of abbreviations in symbol names. It is ok to
-make a few abbreviations, explain what they mean, and then use them
-frequently, but don't use lots of obscure abbreviations.
-
Please use underscores to separate words in a name, so that the Emacs
word commands can be useful within them. Stick to lower case; reserve
upper case for macros and @code{enum} constants, and for name-prefixes
@@ -2475,41 +2164,30 @@ When you want to define names with constant integer values, use
@code{enum} rather than @samp{#define}. GDB knows about enumeration
constants.
-@cindex file-name limitations
-@pindex doschk
-You might want to make sure that none of the file names would conflict
-the files were loaded onto an MS-DOS file system which shortens the
-names. You can use the program @code{doschk} to test for this.
-
-Some GNU programs were designed to limit themselves to file names of 14
-characters or less, to avoid file name conflicts if they are read into
-older System V systems. Please preserve this feature in the existing
-GNU programs that have it, but there is no need to do this in new GNU
-programs. @code{doschk} also reports file names longer than 14
-characters.
+Use file names of 14 characters or less, to avoid creating gratuitous
+problems on older System V systems. You can use the program
+@code{doschk} to test for this. @code{doschk} also tests for potential
+name conflicts if the files were loaded onto an MS-DOS file
+system---something you may or may not care about.
@node System Portability
@section Portability between System Types
-@cindex portability, between system types
In the Unix world, ``portability'' refers to porting to different Unix
versions. For a GNU program, this kind of portability is desirable, but
not paramount.
The primary purpose of GNU software is to run on top of the GNU kernel,
-compiled with the GNU C compiler, on various types of @sc{cpu}. So the
-kinds of portability that are absolutely necessary are quite limited.
-But it is important to support Linux-based GNU systems, since they
-are the form of GNU that is popular.
-
-Beyond that, it is good to support the other free operating systems
-(*BSD), and it is nice to support other Unix-like systems if you want
-to. Supporting a variety of Unix-like systems is desirable, although
-not paramount. It is usually not too hard, so you may as well do it.
-But you don't have to consider it an obligation, if it does turn out to
-be hard.
-
-@pindex autoconf
+compiled with the GNU C compiler, on various types of @sc{cpu}. The
+amount and kinds of variation among GNU systems on different @sc{cpu}s
+will be comparable to the variation among Linux-based GNU systems or
+among BSD systems today. So the kinds of portability that are absolutely
+necessary are quite limited.
+
+But many users do run GNU software on non-GNU Unix or Unix-like systems.
+So supporting a variety of Unix-like systems is desirable, although not
+paramount.
+
The easiest way to achieve portability to most Unix-like systems is to
use Autoconf. It's unlikely that your program needs to know more
information about the host platform than Autoconf can provide, simply
@@ -2519,30 +2197,19 @@ written.
Avoid using the format of semi-internal data bases (e.g., directories)
when there is a higher-level alternative (@code{readdir}).
-@cindex non-@sc{posix} systems, and portability
As for systems that are not like Unix, such as MSDOS, Windows, the
-Macintosh, VMS, and MVS, supporting them is often a lot of work. When
-that is the case, it is better to spend your time adding features that
-will be useful on GNU and GNU/Linux, rather than on supporting other
-incompatible systems.
-
-It is a good idea to define the ``feature test macro''
-@code{_GNU_SOURCE} when compiling your C files. When you compile on GNU
-or GNU/Linux, this will enable the declarations of GNU library extension
-functions, and that will usually give you a compiler error message if
-you define the same function names in some other way in your program.
-(You don't have to actually @emph{use} these functions, if you prefer
-to make the program more portable to other systems.)
-
-But whether or not you use these GNU extensions, you should avoid
-using their names for any other meanings. Doing so would make it hard
-to move your code into other GNU programs.
+Macintosh, VMS, and MVS, supporting them is usually so much work that it
+is better if you don't.
+
+The planned GNU kernel is not finished yet, but you can tell which
+facilities it will provide by looking at the GNU C Library Manual. The
+GNU kernel is based on Mach, so the features of Mach will also be
+available. However, if you use Mach features, you'll probably have
+trouble debugging your program today.
@node CPU Portability
@section Portability between @sc{cpu}s
-@cindex data types, and portability
-@cindex portability, and data types
Even GNU systems will differ because of differences among @sc{cpu}
types---for example, difference in byte ordering and alignment
requirements. It is absolutely essential to handle these differences.
@@ -2550,25 +2217,6 @@ However, don't make any effort to cater to the possibility that an
@code{int} will be less than 32 bits. We don't support 16-bit machines
in GNU.
-Similarly, don't make any effort to cater to the possibility that
-@code{long} will be smaller than predefined types like @code{size_t}.
-For example, the following code is ok:
-
-@example
-printf ("size = %lu\n", (unsigned long) sizeof array);
-printf ("diff = %ld\n", (long) (pointer2 - pointer1));
-@end example
-
-1989 Standard C requires this to work, and we know of only one
-counterexample: 64-bit programs on Microsoft Windows IA-64. We will
-leave it to those who want to port GNU programs to that environment
-to figure out how to do it.
-
-Predefined file-size types like @code{off_t} are an exception: they are
-longer than @code{long} on many platforms, so code like the above won't
-work with them. One way to print an @code{off_t} value portably is to
-print its digits yourself, one by one.
-
Don't assume that the address of an @code{int} object is also the
address of its least-significant byte. This is false on big-endian
machines. Thus, don't make the following mistake:
@@ -2583,9 +2231,9 @@ while ((c = getchar()) != EOF)
When calling functions, you need not worry about the difference between
pointers of various types, or between pointers and integers. On most
machines, there's no difference anyway. As for the few machines where
-there is a difference, all of them support Standard C prototypes, so you can
-use prototypes (perhaps conditionalized to be active only in Standard C)
-to make the code work on those systems.
+there is a difference, all of them support @sc{ansi} C, so you can use
+prototypes (conditionalized to be active only in @sc{ansi} C) to make
+the code work on those systems.
In certain cases, it is ok to pass integer and pointer arguments
indiscriminately to the same function, and use no prototype on any
@@ -2595,7 +2243,7 @@ that pass their arguments along to @code{printf} and friends:
@example
error (s, a1, a2, a3)
char *s;
- char *a1, *a2, *a3;
+ int a1, a2, a3;
@{
fprintf (stderr, "error: ");
fprintf (stderr, s, a1, a2, a3);
@@ -2603,50 +2251,36 @@ error (s, a1, a2, a3)
@end example
@noindent
-In practice, this works on all machines, since a pointer is generally
-the widest possible kind of argument; it is much simpler than any
-``correct'' alternative. Be sure @emph{not} to use a prototype for such
-functions.
+In practice, this works on all machines, and it is much simpler than any
+``correct'' alternative. Be sure @emph{not} to use a prototype
+for such functions.
-If you have decided to use Standard C, then you can instead define
-@code{error} using @file{stdarg.h}, and pass the arguments along to
-@code{vfprintf}.
-
-@cindex casting pointers to integers
-Avoid casting pointers to integers if you can. Such casts greatly
-reduce portability, and in most programs they are easy to avoid. In the
-cases where casting pointers to integers is essential---such as, a Lisp
-interpreter which stores type information as well as an address in one
-word---you'll have to make explicit provisions to handle different word
-sizes. You will also need to make provision for systems in which the
-normal range of addresses you can get from @code{malloc} starts far away
-from zero.
+However, avoid casting pointers to integers unless you really need to.
+These assumptions really reduce portability, and in most programs they
+are easy to avoid. In the cases where casting pointers to integers is
+essential---such as, a Lisp interpreter which stores type information as
+well as an address in one word---it is ok to do so, but you'll have to
+make explicit provisions to handle different word sizes.
@node System Functions
@section Calling System Functions
-@cindex library functions, and portability
-@cindex portability, and library functions
-C implementations differ substantially. Standard C reduces but does
-not eliminate the incompatibilities; meanwhile, many GNU packages still
-support pre-standard compilers because this is not hard to do. This
-chapter gives recommendations for how to use the more-or-less standard C
-library functions to avoid unnecessary loss of portability.
+C implementations differ substantially. @sc{ansi} C reduces but does not
+eliminate the incompatibilities; meanwhile, many users wish to compile
+GNU software with pre-@sc{ansi} compilers. This chapter gives
+recommendations for how to use the more or less standard C library
+functions to avoid unnecessary loss of portability.
@itemize @bullet
@item
-Don't use the return value of @code{sprintf}. It returns the number of
+Don't use the value of @code{sprintf}. It returns the number of
characters written on some systems, but not on all systems.
@item
-Be aware that @code{vfprintf} is not always available.
-
-@item
@code{main} should be declared to return type @code{int}. It should
terminate either by calling @code{exit} or by returning the integer
status code; make sure it cannot ever return an undefined value.
-@cindex declaration for system functions
@item
Don't declare system functions explicitly.
@@ -2663,7 +2297,7 @@ actual conflicts.
@item
If you must declare a system function, don't specify the argument types.
-Use an old-style declaration, not a Standard C prototype. The more you
+Use an old-style declaration, not an @sc{ansi} prototype. The more you
specify about the function, the more likely a conflict.
@item
@@ -2685,7 +2319,6 @@ exceptional systems (mostly 64-bit machines), you can use
@code{realloc}---or put these declarations in configuration files
specific to those systems.
-@cindex string library functions
@item
The string functions require special treatment. Some Unix systems have
a header file @file{string.h}; others have @file{strings.h}. Neither
@@ -2696,7 +2329,7 @@ figure out which file to include, or don't include either file.
If you don't include either strings file, you can't get declarations for
the string functions from the header file in the usual way.
-That causes less of a problem than you might think. The newer standard
+That causes less of a problem than you might think. The newer @sc{ansi}
string functions should be avoided anyway because many systems still
don't support them. The string functions you can use are these:
@@ -2726,7 +2359,7 @@ names, but neither pair works on all systems.
You should pick a single pair of names and use it throughout your
program. (Nowadays, it is better to choose @code{strchr} and
-@code{strrchr} for new programs, since those are the standard
+@code{strrchr} for new programs, since those are the standard @sc{ansi}
names.) Declare both of those names as functions returning @code{char
*}. On systems which don't support those names, define them as macros
in terms of the other pair. For example, here is what to put at the
@@ -2752,9 +2385,7 @@ One way to get them properly defined is to use Autoconf.
@node Internationalization
@section Internationalization
-@cindex internationalization
-@pindex gettext
GNU has a library called GNU gettext that makes it easy to translate the
messages in a program into various languages. You should use this
library in every program. Use English for the messages as they appear
@@ -2781,7 +2412,6 @@ translations for this package from the translations for other packages.
Normally, the text domain name should be the same as the name of the
package---for example, @samp{fileutils} for the GNU file utilities.
-@cindex message text, and internationalization
To enable gettext to work well, avoid writing code that makes
assumptions about the structure of words or sentences. When you want
the precise text of a sentence to vary depending on the data, use two or
@@ -2853,7 +2483,6 @@ printf (f->tried_implicit
@node Mmap
@section Mmap
-@findex mmap
Don't assume that @code{mmap} either works on all files or fails
for all files. It may work on some files and fail on others.
@@ -2870,19 +2499,10 @@ all these kinds of files.
@node Documentation
@chapter Documenting Programs
-@cindex documentation
-
-A GNU program should ideally come with full free documentation, adequate
-for both reference and tutorial purposes. If the package can be
-programmed or extended, the documentation should cover programming or
-extending it, as well as just using it.
@menu
* GNU Manuals:: Writing proper manuals.
-* Doc Strings and Manuals:: Compiling doc strings doesn't make a manual.
* Manual Structure Details:: Specific structure conventions.
-* License for Manuals:: Writing the distribution terms for a manual.
-* Manual Credits:: Giving credit to documentation contributors.
* NEWS File:: NEWS files supplement manuals.
* Change Logs:: Recording Changes
* Man Pages:: Man pages are secondary.
@@ -2893,18 +2513,10 @@ extending it, as well as just using it.
@node GNU Manuals
@section GNU Manuals
-The preferred document format for the GNU system is the Texinfo
-formatting language. Every GNU package should (ideally) have
-documentation in Texinfo both for reference and for learners. Texinfo
-makes it possible to produce a good quality formatted book, using
-@TeX{}, and to generate an Info file. It is also possible to generate
-HTML output from Texinfo source. See the Texinfo manual, either the
-hardcopy, or the on-line version available through @code{info} or the
-Emacs Info subsystem (@kbd{C-h i}).
-
-Nowadays some other formats such as Docbook and Sgmltexi can be
-converted automatically into Texinfo. It is ok to produce the Texinfo
-documentation by conversion this way, as long as it gives good results.
+The preferred way to document part of the GNU system is to write a
+manual in the Texinfo formatting language. See the Texinfo manual,
+either the hardcopy, or the on-line version available through
+@code{info} or the Emacs Info subsystem (@kbd{C-h i}).
Programmers often find it most natural to structure the documentation
following the structure of the implementation, which they know. But
@@ -2933,9 +2545,9 @@ have one manual for ``comparison of files'' which covers both of those
programs, as well as @code{cmp}. By documenting these programs
together, we can make the whole subject clearer.
-The manual which discusses a program should certainly document all of
-the program's command-line options and all of its commands. It should
-give examples of their use. But don't organize the manual as a list of
+The manual which discusses a program should document all of the
+program's command-line options and all of its commands. It should give
+examples of their use. But don't organize the manual as a list of
features. Instead, organize it logically, by subtopics. Address the
questions that a user will ask when thinking about the job that the
program does.
@@ -2945,8 +2557,6 @@ It should be set up for convenient access to each topic through Info,
and for reading straight through (appendixes aside). A GNU manual
should give a good introduction to a beginner reading through from the
start, and should also provide all the details that hackers want.
-The Bison manual is a good example of this---please take a look at it
-to see what we mean.
That is not as hard as it first sounds. Arrange each chapter as a
logical breakdown of its topic, but order the sections, and write their
@@ -2960,62 +2570,22 @@ are purely tutorial and cover the basics of the subject. These provide
the framework for a beginner to understand the rest of the manual. The
Bison manual provides a good example of how to do this.
-To serve as a reference, a manual should have an Index that list all the
-functions, variables, options, and important concepts that are part of
-the program. One combined Index should do for a short manual, but
-sometimes for a complex package it is better to use multiple indices.
-The Texinfo manual includes advice on preparing good index entries, see
-@ref{Index Entries, , Making Index Entries, texinfo, The GNU Texinfo
-Manual}, and see @ref{Indexing Commands, , Defining the Entries of an
-Index, texinfo, The GNU Texinfo manual}.
-
Don't use Unix man pages as a model for how to write GNU documentation;
most of them are terse, badly structured, and give inadequate
-explanation of the underlying concepts. (There are, of course, some
-exceptions.) Also, Unix man pages use a particular format which is
+explanation of the underlying concepts. (There are, of course
+exceptions.) Also Unix man pages use a particular format which is
different from what we use in GNU manuals.
-Please include an email address in the manual for where to report
-bugs @emph{in the manual}.
-
Please do not use the term ``pathname'' that is used in Unix
documentation; use ``file name'' (two words) instead. We use the term
-``path'' only for search paths, which are lists of directory names.
+``path'' only for search paths, which are lists of file names.
Please do not use the term ``illegal'' to refer to erroneous input to a
computer program. Please use ``invalid'' for this, and reserve the term
-``illegal'' for activities punishable by law.
-
-@node Doc Strings and Manuals
-@section Doc Strings and Manuals
-
-Some programming systems, such as Emacs, provide a documentation string
-for each function, command or variable. You may be tempted to write a
-reference manual by compiling the documentation strings and writing a
-little additional text to go around them---but you must not do it. That
-approach is a fundamental mistake. The text of well-written
-documentation strings will be entirely wrong for a manual.
-
-A documentation string needs to stand alone---when it appears on the
-screen, there will be no other text to introduce or explain it.
-Meanwhile, it can be rather informal in style.
-
-The text describing a function or variable in a manual must not stand
-alone; it appears in the context of a section or subsection. Other text
-at the beginning of the section should explain some of the concepts, and
-should often make some general points that apply to several functions or
-variables. The previous descriptions of functions and variables in the
-section will also have given information about the topic. A description
-written to stand alone would repeat some of that information; this
-redundance looks bad. Meanwhile, the informality that is acceptable in
-a documentation string is totally unacceptable in a manual.
-
-The only good way to use documentation strings in writing a good manual
-is to use them as a source of information for writing good text.
+``illegal'' for violations of law.
@node Manual Structure Details
@section Manual Structure Details
-@cindex manual structure
The title page of the manual should state the version of the programs or
packages documented in the manual. The Top node of the manual should
@@ -3035,44 +2605,14 @@ Alternatively, put a menu item in some menu whose item name fits one of
the above patterns. This identifies the node which that item points to
as the node for this purpose, regardless of the node's actual name.
-The @samp{--usage} feature of the Info reader looks for such a node
-or menu item in order to find the relevant text, so it is essential
-for every Texinfo file to have one.
+There will be automatic features for specifying a program name and
+quickly reading just this part of its manual.
If one manual describes several programs, it should have such a node for
-each program described in the manual.
-
-@node License for Manuals
-@section License for Manuals
-@cindex license for manuals
-
-Please use the GNU Free Documentation License for all GNU manuals that
-are more than a few pages long. Likewise for a collection of short
-documents---you only need one copy of the GNU FDL for the whole
-collection. For a single short document, you can use a very permissive
-non-copyleft license, to avoid taking up space with a long license.
-
-See @uref{http://www.gnu.org/copyleft/fdl-howto.html} for more explanation
-of how to employ the GFDL.
-
-Note that it is not obligatory to include a copy of the GNU GPL or GNU
-LGPL in a manual whose license is neither the GPL nor the LGPL. It can
-be a good idea to include the program's license in a large manual; in a
-short manual, whose size would be increased considerably by including
-the program's license, it is probably better not to include it.
-
-@node Manual Credits
-@section Manual Credits
-@cindex credits for manuals
-
-Please credit the principal human writers of the manual as the authors,
-on the title page of the manual. If a company sponsored the work, thank
-the company in a suitable place in the manual, but do not cite the
-company as an author.
+each program described.
@node NEWS File
@section The NEWS File
-@cindex @file{NEWS} file
In addition to its manual, the package should have a file named
@file{NEWS} which contains a list of user-visible changes worth
@@ -3087,7 +2627,6 @@ user to that file.
@node Change Logs
@section Change Logs
-@cindex change logs
Keep a change log to describe all the changes made to program source
files. The purpose of this is so that people investigating bugs in the
@@ -3102,7 +2641,6 @@ history of how the conflicting concepts arose and who they came from.
* Style of Change Logs::
* Simple Changes::
* Conditional Changes::
-* Indicating the Part Changed::
@end menu
@node Change Log Concepts
@@ -3121,8 +2659,7 @@ you.
Another alternative is to record change log information with a version
control system such as RCS or CVS. This can be converted automatically
-to a @file{ChangeLog} file using @code{rcs2log}; in Emacs, the command
-@kbd{C-x v a} (@code{vc-update-change-log}) does the job.
+to a @file{ChangeLog} file.
There's no need to describe the full purpose of the changes or how they
work together. If you think that a change calls for explanation, you're
@@ -3143,16 +2680,10 @@ Then describe the changes you made to that function or variable.
@node Style of Change Logs
@subsection Style of Change Logs
-@cindex change logs, style
-Here are some simple examples of change log entries, starting with the
-header line that says who made the change and when, followed by
-descriptions of specific changes. (These examples are drawn from Emacs
-and GCC.)
+Here are some examples of change log entries:
@example
-1998-08-17 Richard Stallman <rms@@gnu.org>
-
* register.el (insert-register): Return nil.
(jump-to-register): Likewise.
@@ -3183,15 +2714,6 @@ entries represent parts of the same change, so that they work together,
then don't put blank lines between them. Then you can omit the file
name and the asterisk when successive entries are in the same file.
-Break long lists of function names by closing continued lines with
-@samp{)}, rather than @samp{,}, and opening the continuation with
-@samp{(} as in this example:
-
-@example
-* keyboard.c (menu_bar_items, tool_bar_items)
-(Fexecute_extended_command): Deal with `keymap' property.
-@end example
-
@node Simple Changes
@subsection Simple Changes
@@ -3199,10 +2721,9 @@ Certain simple kinds of changes don't need much detail in the change
log.
When you change the calling sequence of a function in a simple fashion,
-and you change all the callers of the function to use the new calling
-sequence, there is no need to make individual entries for all the
-callers that you changed. Just write in the entry for the function
-being called, ``All callers changed''---like this:
+and you change all the callers of the function, there is no need to make
+individual entries for all the callers that you changed. Just write in
+the entry for the function being called, ``All callers changed.''
@example
* keyboard.c (Fcommand_execute): New arg SPECIAL.
@@ -3222,8 +2743,6 @@ documentation says with the way the program actually works.
@node Conditional Changes
@subsection Conditional Changes
-@cindex conditional changes, and change logs
-@cindex change logs, conditional changes
C programs often contain compile-time @code{#if} conditionals. Many
changes are conditional; sometimes you add a new definition which is
@@ -3263,23 +2782,8 @@ a certain macro is @emph{not} defined:
(gethostname) [!HAVE_SOCKETS]: Replace with winsock version.
@end example
-@node Indicating the Part Changed
-@subsection Indicating the Part Changed
-
-Indicate the part of a function which changed by using angle brackets
-enclosing an indication of what the changed part does. Here is an entry
-for a change in the part of the function @code{sh-while-getopts} that
-deals with @code{sh} commands:
-
-@example
-* progmodes/sh-script.el (sh-while-getopts) <sh>: Handle case that
-user-specified option string is empty.
-@end example
-
-
@node Man Pages
@section Man Pages
-@cindex man pages
In the GNU project, man pages are secondary. It is not necessary or
expected for every GNU program to have a man page, but some of them do.
@@ -3326,7 +2830,6 @@ with the FSF about the individual case.
@node Managing Releases
@chapter The Release Process
-@cindex releasing
Making a release is more than just bundling up your source files in a
tar file and putting it up for FTP. You should set up your software so
@@ -3344,9 +2847,7 @@ all GNU software.
@node Configuration
@section How Configuration Should Work
-@cindex program configuration
-@pindex configure
Each GNU distribution should come with a shell script named
@code{configure}. This script is given arguments which describe the
kind of machine and system you want to compile the program for.
@@ -3414,14 +2915,13 @@ The @code{configure} script needs to be able to decode all plausible
alternatives for how to describe a machine. Thus, @samp{sun3-sunos4.1}
would be a valid alias. For many programs, @samp{vax-dec-ultrix} would
be an alias for @samp{vax-dec-bsd}, simply because the differences
-between Ultrix and @sc{bsd} are rarely noticeable, but a few programs
+between Ultrix and @sc{BSD} are rarely noticeable, but a few programs
might need to distinguish them.
@c Real 4.4BSD now runs on some Suns.
There is a shell script called @file{config.sub} that you can use
as a subroutine to validate system types and canonicalize aliases.
-@cindex optional features, configure-time
Other options are permitted to specify in more detail the software
or hardware present on the machine, and include or exclude optional
parts of the package:
@@ -3457,6 +2957,17 @@ and
Do not use a @samp{--with} option to specify the file name to use to
find certain files. That is outside the scope of what @samp{--with}
options are for.
+
+@item --nfp
+The target machine has no floating point processor.
+
+@item --gas
+The target machine assembler is GAS, the GNU assembler.
+This is obsolete; users should use @samp{--with-gnu-as} instead.
+
+@item --x
+The target machine has the X Window System installed.
+This is obsolete; users should use @samp{--with-x} instead.
@end table
All @code{configure} scripts should accept all of these ``detail''
@@ -3472,36 +2983,27 @@ you might think of. That is deliberate. We want to limit the possible
configuration options in GNU software. We do not want GNU programs to
have idiosyncratic configuration options.
-Packages that perform part of the compilation process may support
-cross-compilation. In such a case, the host and target machines for the
-program may be different.
-
-The @code{configure} script should normally treat the specified type of
-system as both the host and the target, thus producing a program which
-works for the same type of machine that it runs on.
-
-To configure a cross-compiler, cross-assembler, or what have you, you
-should specify a target different from the host, using the configure
-option @samp{--target=@var{targettype}}. The syntax for
-@var{targettype} is the same as for the host type. So the command would
-look like this:
-
-@example
-./configure @var{hosttype} --target=@var{targettype}
-@end example
+Packages that perform part of the compilation process may support cross-compilation.
+In such a case, the host and target machines for the program may be
+different. The @code{configure} script should normally treat the
+specified type of system as both the host and the target, thus producing
+a program which works for the same type of machine that it runs on.
-Programs for which cross-operation is not meaningful need not accept the
-@samp{--target} option, because configuring an entire operating system for
-cross-operation is not a meaningful operation.
+The way to build a cross-compiler, cross-assembler, or what have you, is
+to specify the option @samp{--host=@var{hosttype}} when running
+@code{configure}. This specifies the host system without changing the
+type of target system. The syntax for @var{hosttype} is the same as
+described above.
Bootstrapping a cross-compiler requires compiling it on a machine other
than the host it will run on. Compilation packages accept a
-configuration option @samp{--build=@var{buildtype}} for specifying the
-configuration on which you will compile them, but the configure script
-should normally guess the build machine type (using
-@file{config.guess}), so this option is probably not necessary. The
-host and target types normally default from the build type, so in
-bootstrapping a cross-compiler you must specify them both explicitly.
+configuration option @samp{--build=@var{hosttype}} for specifying the
+configuration on which you will compile them, in case that is different
+from the host.
+
+Programs for which cross-operation is not meaningful need not accept the
+@samp{--host} option, because configuring an entire operating system for
+cross-operation is not a meaningful thing.
Some programs have ways of configuring themselves automatically. If
your program is set up to do this, your @code{configure} script can simply
@@ -3516,7 +3018,6 @@ ignore most of its arguments.
@node Releases
@section Making Releases
-@cindex packaging
Package the distribution of @code{Foo version 69.96} up in a gzipped tar
file with the name @file{foo-69.96.tar.gz}. It should unpack into a
@@ -3529,22 +3030,6 @@ files} and @dfn{non-source files}. Source files are written by humans
and never changed automatically; non-source files are produced from
source files by programs under the control of the Makefile.
-@cindex @file{README} file
-The distribution should contain a file named @file{README} which gives
-the name of the package, and a general description of what it does. It
-is also good to explain the purpose of each of the first-level
-subdirectories in the package, if there are any. The @file{README} file
-should either state the version number of the package, or refer to where
-in the package it can be found.
-
-The @file{README} file should refer to the file @file{INSTALL}, which
-should contain an explanation of the installation procedure.
-
-The @file{README} file should also refer to the file which contains the
-copying conditions. The GNU GPL, if used, should be in a file called
-@file{COPYING}. If the GNU LGPL is used, it should be in a file called
-@file{COPYING.LIB}.
-
Naturally, all the source files must be in the distribution. It is okay
to include non-source files in the distribution, provided they are
up-to-date and machine-independent, so that building the distribution
@@ -3569,7 +3054,7 @@ Make sure that all the files in the distribution are world-readable.
Make sure that no file name in the distribution is more than 14
characters long. Likewise, no file created by building the program
should have a name longer than 14 characters. The reason for this is
-that some systems adhere to a foolish interpretation of the @sc{posix}
+that some systems adhere to a foolish interpretation of the POSIX
standard, and refuse to open a longer name, rather than truncating as
they did in the past.
@@ -3588,7 +3073,6 @@ characters both before and after the period. Thus,
are truncated to @file{foobarha.c} and @file{foobarha.o}, which are
distinct.
-@cindex @file{texinfo.tex}, in a distribution
Include in your distribution a copy of the @file{texinfo.tex} you used
to test print any @file{*.texinfo} or @file{*.texi} files.
@@ -3598,36 +3082,6 @@ Leaving them out would make the distribution file a little smaller at
the expense of possible inconvenience to a user who doesn't know what
other files to get.
-@node References
-@chapter References to Non-Free Software and Documentation
-@cindex references to non-free material
-
-A GNU program should not recommend use of any non-free program. We
-can't stop some people from writing proprietary programs, or stop other
-people from using them. But we can and should avoid helping to
-advertise them to new customers.
-
-Sometimes it is important to mention how to build your package on top of
-some non-free operating system or other non-free base package. In such
-cases, please mention the name of the non-free package or system in the
-briefest possible way. Don't include any references for where to find
-more information about the proprietary program. The goal should be that
-people already using the proprietary program will get the advice they
-need about how to use your free program, while people who don't already
-use the proprietary program will not see anything to encourage them to
-take an interest in it.
-
-Likewise, a GNU package should not refer the user to any non-free
-documentation for free software. The need for free documentation to go
-with free software is now a major focus of the GNU project; to show that
-we are serious about the need for free documentation, we must not
-undermine our position by recommending use of documentation that isn't
-free.
-
-@node Index
-@unnumbered Index
-@printindex cp
-
@contents
@bye
@@ -3636,5 +3090,4 @@ update-date-leading-regexp: "@c This date is automagically updated when you save
update-date-trailing-regexp: ""
eval: (load "/gd/gnuorg/update-date.el")
eval: (add-hook 'write-file-hooks 'update-date)
-compile-command: "make just-standards"
End:
diff --git a/gnu/egcs/gcc/ABOUT-GCC-NLS b/gnu/egcs/gcc/ABOUT-GCC-NLS
index 684edb22088..b70a7c8df67 100644
--- a/gnu/egcs/gcc/ABOUT-GCC-NLS
+++ b/gnu/egcs/gcc/ABOUT-GCC-NLS
@@ -1,26 +1,10 @@
Notes on GCC's Native Language Support
GCC's Native Language Support (NLS) is relatively new and
-experimental, so NLS is currently disabled by default.
-
-The main reason for it being buggy is, that GCC does not set the
-locale categories correctly. Currently only LC_MESSAGES is set if the
-system supports it and else nothing. To work correctly, GCC would have
-to also set the character set used by the terminal by either setting
-LC_CTYPE together with LC_MESSAGES or LC_ALL if LC_MESSAGES is
-not supported.
-
-This would change the behaviour of GCC in quite a few places because
-a number of standard C functions and macros change their behaviour
-depending on the locale. These necessary changes have been done in the
-development version, but these changes are beyond the scope
-of a maintenance release such as this. It is therefore recommended that
-you leave it disabled.
-
-If you still want to enable the feature, use configure's --enable-nls
-option to enable it. Eventually, NLS will be enabled by default, and
-you'll need --disable-nls to disable it. You must enable NLS in order
-to make a GCC distribution.
+experimental, so NLS is currently disabled by default. Use
+configure's --enable-nls option to enable it. Eventually, NLS will be
+enabled by default, and you'll need --disable-nls to disable it. You
+must enable NLS in order to make a GCC distribution.
By and large, only diagnostic messages have been internationalized.
Some work remains in other areas; for example, GCC does not yet allow
diff --git a/gnu/egcs/gcc/BUGS b/gnu/egcs/gcc/BUGS
index 2d875a092ef..e628a6467ed 100644
--- a/gnu/egcs/gcc/BUGS
+++ b/gnu/egcs/gcc/BUGS
@@ -1,4 +1,4 @@
-If you think you may have found a bug in GCC, please
+If you think you may have found a bug in GNU CC, please
read the Bugs section of the GCC manual for advice on
(1) how to tell when to report a bug,
@@ -22,6 +22,6 @@ a like manner. (Standalone Info is part of the Texinfo distribution.)
(3) By hand. Search for the chapter "Reporting Bugs" in gcc.texi, or
cat /usr/local/info/gcc* | more "+/^File: gcc.info, Node: Bugs,"
-You may also want to take a look at the GCC FAQ, in which there are
+You may also want to take a look at the EGCS FAQ, in which there are
additional instructions for submitting bug reports:
- http://www.gnu.org/software/gcc/faq.html#bugreport
+ http://egcs.cygnus.com/faq.html#bugreport
diff --git a/gnu/egcs/gcc/NEWS b/gnu/egcs/gcc/NEWS
index d66c6e86ecd..427df254eb6 100644
--- a/gnu/egcs/gcc/NEWS
+++ b/gnu/egcs/gcc/NEWS
@@ -1,1540 +1,1071 @@
-This file contains information about GCC releases which has been
-generated automatically from the online release notes. This file
-covers releases of GCC (and the former EGCS project) since EGCS 1.0,
-on the line of development that led to GCC 3; for information on GCC
-2.8.1 and older releases of GCC 2, see ONEWS.
-
-======================================================================
-http://gcc.gnu.org/gcc-2.95/gcc-2.95.3.html
-
- GCC 2.95.3
-
- January 11, 2001
-
- The GNU project and the GCC developers are pleased to announce the
- prerelease of GCC version 2.95.3. GCC used to stand for the GNU C
- Compiler, but since the compiler supports several other languages
- aside from C, it now stands for the GNU Compiler Collection.
-
- This is a minor release to address several bugs in the [1]GCC version
- 2.95.2 release.
-
- * Generic bugfixes and improvements
- + Fix numerous problems that caused incorrect optimization in
- the register reloading code.
- + Fix numerous problems that caused incorrect optimization in
- the loop optimizer.
- + Fix setjmp/longjmp based exception handling.
- + Fix aborts in the functions build_insn_chain and scan_loops
- under some circumstances.
- + Fix an alias analysis bug.
- + Fix an infinite compilation bug in the combiner.
- + A few problems with complex number support have been fixed.
- + It is no longer possible for gcc to act as a fork bomb when
- installed incorrectly.
- + The -fpack-struct option should be recognized now.
- + Fixed a bug that caused incorrect code to be generated due to
- a lost stack adjustment.
- * Platform specific bugfixes and improvements
- + Support building ARM toolchains hosted on Windows.
- + Fix attribute calculations in ARM toolchains.
- + arm-linux support has been improved.
- + Fix a PIC failure on sparc targets.
- + On ix86 targets, the regparm attribute should now work
- reliably.
- + Several updates for the h8300 port.
-
- The whole suite has been extensively [2]regression tested and
- [3]package tested. It should be reliable and suitable for widespread
- use.
-
- The GCC 2.95 release has several new optimizations, new targets, new
- languages and other new features as compared to EGCS 1.1 or GCC 2.8.
- See the [4]new features page for a more complete list of new features
- found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [5]installation instructions and [6]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [7]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [8]caveats to using GCC 2.95.3.
-
- Download GCC 2.95.3 from the [9]GNU FTP server (ftp://ftp.gnu.org)
- Download GCC 2.95.3 from the [10]GCC FTP server (ftp://gcc.gnu.org)
- [11]Find a GNU mirror site
- [12]Find a GCC mirror site
-
- For additional information about GCC please see the [13]GCC project
- web server or contact the [14]GCC development mailing list.
- _________________________________________________________________
-
-
- [15]The GCC team
- Last modified 2001-01-11
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.html
- 2. http://gcc.gnu.org/gcc-2.95/regress.html
- 3. http://gcc.gnu.org/gcc-2.95/othertest.html
- 4. http://gcc.gnu.org/gcc-2.95/features.html
- 5. http://gcc.gnu.org/install/index.html
- 6. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 7. http://gcc.gnu.org/thanks.html
- 8. http://gcc.gnu.org/gcc-2.95/caveats.html
- 9. ftp://ftp.gnu.org/pub/gnu/gcc/
- 10. ftp://gcc.gnu.org/pub/gcc/releases/index.html
- 11. http://www.gnu.org/order/ftp.html
- 12. http://gcc.gnu.org/mirrors.html
- 13. http://gcc.gnu.org/index.html
- 14. mailto:gcc@gcc.gnu.org
- 15. http://gcc.gnu.org/about.html
-======================================================================
-http://gcc.gnu.org/gcc-2.95/gcc-2.95.2.html
-
- GCC 2.95.2
-
- October 27, 1999
-
- The GNU project and the GCC developers are pleased to announce the
- release of GCC version 2.95.2. GCC used to stand for the GNU C
- Compiler, but since the compiler supports several other languages
- aside from C, it now stands for the GNU Compiler Collection.
-
- This is a minor release to address several bugs in the GCC version
- 2.95.1 release.
-
- The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
- the optimizations performed by -fstrict-aliasing are valid according
- to the C and C++ standards, the optimization have caused some
- problems, particularly with old non-conforming code.
-
- The GCC developers are experimenting with ways to warn users about
- code which violates the C/C++ standards, but those warnings are not
- ready for widespread use at this time. Rather than wait for those
- warnings the GCC developers have chosen to disable -fstrict-aliasing
- by default for the GCC 2.95.2 release.
-
- We strongly encourage developers to find and fix code which violates
- the C/C++ standards as -fstrict-aliasing may be enabled by default in
- future releases. Use the option -fstrict-aliasing to re-enable these
- optimizations.
-
- * Generic bugfixes and improvements
- + Fix incorrectly optimized memory reference in global common
- subexpression elimination (GCSE) optimization pass.
- + Fix code generation bug in regmove.c in which it could
- incorrectly change a "const" value.
- + Fix bug in optimization of conditionals involving volatile
- memory references.
- + Avoid over-allocation of stack space for some procedures.
- + Fixed bug in the compiler which caused incorrect optimization
- of an obscure series of bit manipulations, shifts and
- arithmetic.
- + Fixed register allocator bug which caused teTeX to be
- mis-compiled on Sparc targets.
- + Avoid incorrect optimization of degenerate case statements
- for certain targets such as the ARM.
- + Fix out of range memory reference in the jump optimizer.
- + Avoid dereferencing null pointer in fix-header.
- + Fix test for GCC specific features so that it is possible to
- bootstrap with gcc-2.6.2 and older versions of GCC.
- + Fix typo in scheduler which could potentially cause out of
- range memory accesses.
- + Avoid incorrect loop reversal which caused incorrect code for
- certain loops on PowerPC targets.
- + Avoid incorrect optimization of switch statements on certain
- targets (for example the ARM).
- * Platform specific bugfixes and improvements
- + Work around bug in Sun V5.0 compilers which caused bootstrap
- comparison failures on Sparc targets.
- + Fix Sparc backend bug which caused aborts in final.c.
- + Fix sparc-hal-solaris2* configuration fragments.
- + Fix bug in sparc block profiling.
- + Fix obscure code generation bug for the PARISC targets.
- + Define __STDC_EXT__ for HPUX configurations.
- + Various POWERPC64 code generation bugfixes.
- + Fix abort for PPC targets using ELF (ex GNU/Linux).
- + Fix collect2 problems for AIX targets.
- + Correct handling of .file directive for PPC targets.
- + Fix bug in fix_trunc x86 patterns.
- + Fix x86 port to correctly pop the FP stack for functions that
- return structures in memory.
- + Fix minor bug in strlen x86 pattern.
- + Use stabs debugging instead of dwarf1 for x86-solaris
- targets.
- + Fix template repository code to handle leading underscore in
- mangled names.
- + Fix weak/weak alias support for OpenBSD.
- + GNU/Linux for the ARM has C++ compatible include files.
- * Language & Runtime specific fixes.
- + Fix handling of constructor attribute in the C front-end
- which caused problems building the Chill runtime library on
- some targets.
- + Fix minor problem merging type qualifiers in the C front-end.
- + Fix aliasing bug for pointers and references (C/C++).
- + Fix incorrect "non-constant initializer bug" when
- -traditional or -fwritable-strings is enabled.
- + Fix build error for Chill front-end on SunOS.
- + Do not complain about duplicate instantiations when using
- -frepo (C++)
- + Fix array bounds handling in C++ front-end which caused
- problems with dwarf debugging information in some
- circumstances.
- + Fix minor namespace problem.
- + Fix problem linking java programs.
-
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
-
- The GCC 2.95 release has several new optimizations, new targets, new
- languages and other new features as compared to EGCS 1.1 or GCC 2.8.
- See the [3]new features page for a more complete list of new features
- found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [4]installation instructions and [5]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [6]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [7]caveats to using GCC 2.95.2.
-
- Download GCC 2.95.2 from the [8]GNU FTP server (ftp://ftp.gnu.org)
- Download GCC 2.95.2 from the [9]GCC/EGCS FTP server
- (ftp://gcc.gnu.org)
- [10]Find a GNU mirror site
- [11]Find a GCC/EGCS mirror site
-
- For additional information about GCC please see the [12]GCC project
- web server or contact the [13]GCC development mailing list.
- _________________________________________________________________
-
-
- [14]The GCC team
- Last modified 2000-11-10
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/install/index.html
- 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 6. http://gcc.gnu.org/thanks.html
- 7. http://gcc.gnu.org/gcc-2.95/caveats.html
- 8. ftp://ftp.gnu.org/pub/gnu/gcc/
- 9. ftp://gcc.gnu.org/pub/gcc/releases/index.html
- 10. http://www.gnu.org/order/ftp.html
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://gcc.gnu.org/index.html
- 13. mailto:gcc@gcc.gnu.org
- 14. http://gcc.gnu.org/about.html
-======================================================================
-http://gcc.gnu.org/gcc-2.95/gcc-2.95.1.html
-
- GCC 2.95.1
-
- August 19, 1999
-
- The GNU project and the GCC/EGCS developers are pleased to announce
- the release of GCC version 2.95.1. GCC used to stand for the GNU C
- Compiler, but since the compiler supports several other languages
- aside from C, it now stands for the GNU Compiler Collection.
-
- This is a minor release to address several bugs in the GCC version
- 2.95 release.
-
- * Generic bugfixes and improvements
- + Various documentation fixes related to the GCC/EGCS merger.
- + Fix memory management bug which could lead to spurious
- aborts, core dumps or random parsing errors in the compiler.
- + Fix a couple bugs in the dwarf1 and dwarf2 debug record
- support.
- + Fix infinite loop in the CSE optimizer.
- + Avoid undefined behavior in compiler FP emulation code
- + Fix install problem when prefix is overridden on the make
- install command.
- + Fix problem with unwanted installation of assert.h on some
- systems.
- + Fix problem with finding the wrong assembler in a single tree
- build.
- + Avoid increasing the known alignment of a register that is
- already known to be a pointer.
- * Platform specific bugfixes and improvements
- + Codegen bugfix for prologue/epilogue for cpu32 target.
- + Fix long long code generation bug for the Coldfire target.
- + Fix various aborts in the SH compiler.
- + Fix bugs in libgcc support library for the SH.
- + Fix alpha ev6 code generation bug.
- + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
- AIX platforms.
- + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
- + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
- targets.
- + Fix weak symbol handling for rs6000/ppc svr4 targets.
- + Fix various problems with 64bit code generation for the
- rs6000/ppc port.
- + Fix codegen bug which caused tetex to be mis-compiled on the
- x86
- + Fix compiler abort in new cfg code exposed by x86 port.
- + Fix out of range array reference in code convert flat
- registers to the x87 stacked FP register file.
- + Fix minor vxworks configuration bug
- + Fix return type of bsearch for SunOS 4.x.
- * Language & Runtime specific fixes.
- + The G++ signature extension has been deprecated. It will be
- removed in the next major release of G++. Use of signatures
- will result in a warning from the compiler.
- + Several bugs relating to templates and namespaces were fixed.
- + A bug that caused crashes when combining templates with -g on
- DWARF1 platforms was fixed.
- + Pointers-to-members, virtual functions, and multiple
- inheritance should now work together correctly.
- + Some code-generation bugs relating to function try blocks
- were fixed.
- + G++ is a little bit more lenient with certain archaic
- constructs than in GCC 2.95.
- + Fix to prevent shared library version #s from bring truncated
- to 1 digit
- + Fix missing std:: in the libstdc++ library.
- + Fix stream locking problems in libio.
- + Fix problem in java compiler driver.
-
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
-
- The compiler has several new optimizations, new targets, new languages
- and other new features. See the [3]new features page for a more
- complete list of new features found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [4]installation instructions and [5]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [6]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [7]caveats to using GCC 2.95.1.
-
- Download GCC 2.95.1 from the [8]GNU FTP server (ftp://ftp.gnu.org)
- Download GCC 2.95.1 from the [9]GCC/EGCS FTP server
- (ftp://go.cygnus.com)
- [10]Find a GNU mirror site
- [11]Find a GCC/EGCS mirror site
-
- For additional information about GCC please see the [12]GCC project
- web server or contact the [13]GCC development mailing list.
- _________________________________________________________________
-
-
- [14]The GCC team
- Last modified 2000-11-10
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/install/index.html
- 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 6. http://gcc.gnu.org/thanks.html
- 7. http://gcc.gnu.org/gcc-2.95/caveats.html
- 8. ftp://ftp.gnu.org/pub/gnu/gcc/
- 9. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 10. http://www.gnu.org/order/ftp.html
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://gcc.gnu.org/index.html
- 13. mailto:gcc@gcc.gnu.org
- 14. http://gcc.gnu.org/about.html
-======================================================================
-http://gcc.gnu.org/gcc-2.95/gcc-2.95.html
-
- GCC 2.95
-
- July 31, 1999
-
- The GNU project and the GCC/EGCS developers are pleased to announce
- the release of GCC version 2.95. GCC used to stand for the GNU C
- Compiler, but since the compiler supports several other languages
- aside from C, it now stands for the GNU Compiler Collection.
-
- This is the first release of GCC since the April 1999 GCC/EGCS
- reunification and includes nearly a year's worth of new development
- and bugfixes.
-
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
-
- The compiler has several new optimizations, new targets, new languages
- and other new features. See the [3]new features page for a more
- complete list of new features found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [4]installation instructions and [5]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [6]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [7]caveats to using GCC 2.95.
-
- Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org)
- Download GCC 2.95 from the [9]GCC/EGCS FTP server
- (ftp://go.cygnus.com)
- [10]Find a GNU mirror site
- [11]Find a GCC/EGCS mirror site
-
- For additional information about GCC please see the [12]GCC project
- web server or contact the [13]GCC development mailing list.
- _________________________________________________________________
-
-
- [14]The GCC team
- Last modified 2000-11-10
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/install/index.html
- 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 6. http://gcc.gnu.org/thanks.html
- 7. http://gcc.gnu.org/gcc-2.95/caveats.html
- 8. ftp://ftp.gnu.org/pub/gnu/gcc/
- 9. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 10. http://www.gnu.org/order/ftp.html
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://gcc.gnu.org/index.html
- 13. mailto:gcc@gcc.gnu.org
- 14. http://gcc.gnu.org/about.html
-======================================================================
-http://gcc.gnu.org/gcc-2.95/features.html
-
- GCC 2.95 New Features
-
- * General Optimizer Improvements:
- + [1]Localized register spilling to improve speed and code
- density especially on small register class machines.
- + [2]Global CSE using lazy code motion algorithms.
- + [3]Improved global constant/copy propagation.
- + [4]Improved control flow graph analysis and manipulation.
- + [5]Local dead store elimination.
- + [6]Memory Load hoisting/store sinking in loops.
- + [7]Type based alias analysis is enabled by default. Note this
- feature will expose bugs in the Linux kernel. Please refer to
- the [8]FAQ for additional information on this issue.
- + Major revamp of GIV detection, combination and simplification
- to improve loop performance.
- + Major improvements to register allocation and reloading.
- * New Languages and Language specific improvements
- + [9]Many C++ improvements.
- + [10]Many Fortran improvements.
- + [11]Java front-end has been integrated. A [12]runtime library
- is available separately.
- + [13]ISO C99 support
- + [14]Chill front-end and runtime has been integrated.
- + Boehm garbage collector support in libobjc.
- + More support for various pragmas which appear in vendor
- include files
- * New Targets and Target Specific Improvements
- + [15]Sparc backend rewrite.
- + -mschedule=8000 will optimize code for PA8000 class
- processors; -mpa-risc-2-0 will generate code for PA2.0
- processors
- + Various micro-optimizations for the ia32 port. K6
- optimizations
- + Compiler will attempt to align doubles in the stack on the
- ia32 port
- + Alpha EV6 support
- + PowerPC 750
- + RS6000/PowerPC: -mcpu=401 was added as an alias for
- -mcpu=403. -mcpu=e603e was added to do -mcpu=603e and
- -msoft-float.
- + c3x, c4x
- + HyperSparc
- + SparcLite86x
- + sh4
- + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
- arm-linux)
- + vxWorks targets include support for vxWorks threads
- + StrongARM 110 and ARM9 support added. ARM Scheduling
- parameters rewritten.
- + Various changes to the MIPS port to avoid assembler macros,
- which
- + Various performance improvements to the i960 port.
- + Major rewrite of ns32k port in turn improves performance
- * Other significant improvements
- + [16]Ability to dump cfg information and display it using vcg.
- + The new faster scheme for fixing vendor header files is
- enabled by default.
- + Experimental internationalization support.
- + multibyte character support
- + Some compile-time speedups for pathological problems
- + Better support for complex types
- * Plus the usual mountain of bugfixes
- * Core compiler is based on the gcc2 development tree from Sept 30,
- 1998, so we have all of the [17]features found in GCC 2.8.
- _________________________________________________________________
-
-
- [18]The GCC team
- Last modified 2000-12-04
-
-References
-
- 1. http://gcc.gnu.org/news/spill.html
- 2. http://gcc.gnu.org/news/lcm.html
- 3. http://gcc.gnu.org/news/cprop.html
- 4. http://gcc.gnu.org/news/cfg.html
- 5. http://gcc.gnu.org/news/dse.html
- 6. http://gcc.gnu.org/news/hoist.html
- 7. http://gcc.gnu.org/news/alias.html
- 8. http://gcc.gnu.org/fom_serv/cache/24.html
- 9. http://gcc.gnu.org/gcc-2.95/c++features.html
- 10. http://gcc.gnu.org/onlinedocs/g77_news.html
- 11. http://sources.redhat.com/java/gcj-announce.txt
- 12. http://gcc.gnu.org/javaannounce.html
- 13. http://gcc.gnu.org/c99status.html
- 14. http://gcc.gnu.org/news/chill.html
- 15. http://gcc.gnu.org/news/sparc.html
- 16. http://gcc.gnu.org/news/egcs-vcg.html
- 17. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 18. http://gcc.gnu.org/about.html
-======================================================================
-http://gcc.gnu.org/gcc-2.95/caveats.html
-
- GCC 2.95 Caveats
-
- * GCC 2.95 will issue an error for invalid asm statements that had
- been silently accepted by earlier versions of the compiler. This
- is particularly noticeable when compiling older versions of the
- Linux kernel (2.0.xx). Please refer to the [1]FAQ for more
- information on this issue.
- * GCC 2.95 implements type based alias analysis to disambiguate
- memory references. Some programs, particularly the Linux kernel
- violate ANSI/ISO aliasing rules and therefore may not operate
- correctly when compiled with GCC 2.95. Please refer to the [2]FAQ
- for more information on this issue.
- * GCC 2.95 has a known bug in its handling of complex variables for
- 64bit targets. Instead of silently generating incorrect code, GCC
- 2.95 will issue a fatal error for situations it can not handle.
- This primarily affects the Fortran community as Fortran makes more
- use of complex variables than C or C++.
- * GCC 2.95 has an integrated libstdc++, but does not have an
- integrated libg++. Furthermore old libg++ releases will not work
- with GCC 2.95. You can retrieve a recent copy of libg++ from the
- [3]GCC ftp server.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86 GNU/Linux
- platforms with shared libraries.
- * In general, GCC 2.95 is more rigorous about rejecting invalid C++
- code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
- or EGCS 1.1. As a result it may be necessary to fix C++ code
- before it will compile with GCC 2.95.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- The flag -fpermissive may allow some non-conforming code to
- compile with GCC 2.95.
- * GCC 2.95 compiled C++ code is not binary compatible with EGCS
- 1.1.x, EGCS 1.0.x or GCC 2.8.x.
- * GCC 2.95 does not have changes from the GCC 2.8 tree that were
- made between Sept 30, 1998 and April 30, 1999 (the official end of
- the GCC 2.8 project). Future GCC releases will include all the
- changes from the defunct GCC 2.8 sources.
- _________________________________________________________________
-
-
- [4]The GCC team
- Last modified 2000-11-10
-
-References
-
- 1. http://gcc.gnu.org/faq.html#asmclobber
- 2. http://gcc.gnu.org/fom_serv/cache/24.html
- 3. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
- 4. http://gcc.gnu.org/about.html
-======================================================================
-http://gcc.gnu.org/egcs-1.1/egcs-1.1.2.html
-
- EGCS 1.1.2
-
- March 15, 1999
-
- We are pleased to announce the release of EGCS 1.1.2.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.1.2 is a minor update to the EGCS 1.1.1 compiler to fix several
- serious problems in EGCS 1.1.1.
- * General improvements and fixes
- + Fix bug in loop optimizer which caused the SPARC (and
- potentially other) ports to segfault.
- + Fix infinite recursion in alias analysis and combiner code.
- + Fix bug in regclass preferencing.
- + Fix incorrect loop reversal which caused incorrect code to be
- generated for several targets.
- + Fix return value for builtin memcpy.
- + Reduce compile time for certain loops which exposed quadratic
- behavior in the loop optimizer.
- + Fix bug which caused volatile memory to be written multiple
- times when only one write was needed/desired.
- + Fix compiler abort in caller-save.c
- + Fix combiner bug which caused incorrect code generation for
- certain division by constant operations.
- + Fix incorrect code generation due to a bug in range check
- optimizations.
- + Fix incorrect code generation due to mis-handling of
- clobbered values in CSE.
- + Fix compiler abort/segfault due to incorrect register
- splitting when unrolling loops.
- + Fix code generation involving autoincremented addresses with
- ternary operators.
- + Work around bug in the scheduler which caused qt to be
- mis-compiled on some platforms.
- + Fix code generation problems with -fshort-enums.
- + Tighten security for temporary files.
- + Improve compile time for codes which make heavy use of
- overloaded functions.
- + Fix multiply defined constructor/destructor symbol problems.
- + Avoid setting bogus RPATH environemnt variable during
- bootstrap.
- + Avoid GNU-make dependencies in the texinfo subdir.
- + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
- --enable-cpp= can be used to specify an additional install
- directory for the cpp wrapper script.
- + Fix CSE bug which caused incorrect label-label refs to appear
- on some platforms.
- + Avoid linking in EH routines from libgcc if they are not
- needed.
- + Avoid obscure bug in aliasing code.
- + Fix bug in weak symbol handling.
- * Platform-specific improvements and fixes
- + Fix detection of PPro/PII on Unixware 7.
- + Fix compiler segfault when building spec99 and other programs
- for SPARC targets.
- + Fix code-generation bugs for integer and floating point
- conditional move instructions on the PPro/PII.
- + Use fixincludes to fix byteorder problems on i?86-*-sysv.
- + Fix build failure for the arc port.
- + Fix floating point format configuration for i?86-gnu port
- + Fix problems with hppa1.0-hp-hpux10.20 configuration when
- threads are enabled
- + Fix coldfire code generation bugs.
- + Fix "unrecognized insn" problems for Alpha and PPC ports.
- + Fix h8/300 code generation problem with floating point values
- in memory.
- + Fix unrecognized insn problems for the m68k port.
- + Fix namespace-pollution problem for the x86 port.
- + Fix problems with old assembler on x86 NeXT systems.
- + Fix PIC code-generation problems for the SPARC port.
- + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
- + Fix minor ISO namespace violation in Alpha varargs/stdarg
- support.
- + Fix incorrect "braf" instruction usage for the SH port.
- + Fix minor bug in va-sh which prevented its use with -ansi.
- + Fix problems recognizing and supporting FreeBSD.
- + Handle OpenBSD systems correctly.
- + Minor fixincludes fix for Digital UNIX 4.0B.
- + Fix problems with ctors/dtors in SCO shared libraries.
- + Abort instead of generating incorrect code for PPro/PII
- floating point conditional moves.
- + Avoid multiply defined symbols on Linux/GNU systems using
- libc-5.4.xx.
- + Fix abort in alpha compiler.
-
- Fortran-specific fixes
- * Fix the IDate intrinsic (VXT) (in libg2c) so the returned year is
- in the documented, non-Y2K-compliant range of 0-99, instead of
- being returned as 100 in the year 2000.
- * Fix the `Date_and_Time' intrinsic (in libg2c) to return the
- milliseconds value properly in Values(8).
- * Fix the `LStat' intrinsic (in libg2c) to return device-ID
- information properly in SArray(7).
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most gcc releases.
-
- EGCS 1.1.2 is based on the June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from gcc2 up to June 6, 1998.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
-
- The EGCS 1.1.2 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.1.2 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [4]amazing
- group of volunteers is what makes EGCS successful.
-
- And finally, we can't in good conscience fail to mention some
- [5]caveats to using EGCS 1.1.2. [6]Download EGCS 1.1.2 from
- egcs.cygnus.com (USA California) -->
-
- [7]Download EGCS 1.1.2 from go.cygnus.com (USA California - High speed
- link provided by Stanford)
-
- The EGCS 1.1.2 release is also available on many [8]mirror sites.
- _________________________________________________________________
-
- Last modified on July 28, 1999.
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.1/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 4. http://gcc.gnu.org/thanks.html
- 5. http://gcc.gnu.org/egcs-1.1/caveats.html
- 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 8. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.1/egcs-1.1.1.html
-
- EGCS 1.1.1
-
- December 1, 1998
-
- We are pleased to announce the release of EGCS 1.1.1.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.1.1 is a minor update to the EGCS 1.1 compiler to fix several
- serious problems in EGCS 1.1.
- * General improvements and fixes
- + Avoid some stack overflows when compiling large functions.
- + Avoid incorrect loop invariant code motions.
- + Fix some core dumps on Linux kernel code.
- + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
- + Fix code generation problem in gcse.
- + Various documentation related fixes.
- * g++/libstdc++ improvements and fixes
- + MT safe EH fix for setjmp/longjmp based exception handling.
- + Fix a few bad interactions between optimization and exception
- handling.
- + Fixes for demangling of template names starting with "__".
- + Fix a bug that would fail to run destructors in some cases
- with -O2.
- + Fix 'new' of classes with virtual bases.
- + Fix crash building Qt on the Alpha.
- + Fix failure compiling WIFEXITED macro on GNU/Linux.
- + Fix some -frepo failures.
- * g77 and libf2c improvements and fixes
- + Various documentation fixes.
- + Avoid compiler crash on RAND intrinsic.
- + Fix minor bugs in makefiles exposed by BSD make programs.
- + Define _XOPEN_SOURCE for libI77 build to avoid potential
- problems on some 64-bit systems.
- + Fix problem with implicit endfile on rewind.
- + Fix spurious recursive I/O errors.
- * platform specific improvements and fixes
- + Match all versions of UnixWare7.
- + Do not assume x86 SVR4 or UnixWare targets can handle stabs
- + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
- from unsigned ints to double precision floats.
- + Fix ARM ABI issue with NetBSD.
- + Fix a few arm code generation bugs.
- + Fixincludes will fix additional broken SCO OpenServer header
- files.
- + Fix a m68k backend bug which caused invalid offsets in reg+d
- addresses.
- + Fix problems with 64bit AIX 4.3 support.
- + Fix handling of long longs for varargs/stdarg functions on
- the ppc.
- + Minor fixes to CPP predefines for Windows.
- + Fix code generation problems with gpr<->fpr copies for 64bit
- ppc
- + Fix a few coldfire code generation bugs.
- + Fix some more header file problems on SunOS 4.x
- + Fix assert.h handling for RTEMS.
- + Fix Windows handling of TREE_SYMBOL_REFERENCED.
- + Fix x86 compiler abort in reg-stack pass.
- + Fix cygwin/windows problem with section attributes.
- + Fix Alpha code generation problem exposed by SMP Linux
- kernels.
- + Fix typo in m68k 32->64bit integer conversion.
- + Make sure target libraries build with -fPIC for PPC & Alpha
- targets.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most gcc releases.
-
- EGCS 1.1.1 is based on the June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from gcc2 up to June 6, 1998.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
-
- The EGCS 1.1.1 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.1.1 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [4]amazing
- group of volunteers is what makes EGCS successful.
-
- And finally, we can't in good conscience fail to mention some
- [5]caveats to using EGCS 1.1.1.
-
- [6]Download EGCS 1.1.1 from egcs.cygnus.com (USA California)
-
- The EGCS 1.1.1 release is also available on many mirror sites.
- [7]Goto mirror list to find a closer site
- _________________________________________________________________
-
- Last modified on July 28, 1999.
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.1/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 4. http://gcc.gnu.org/thanks.html
- 5. http://gcc.gnu.org/egcs-1.1/caveats.html
- 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 7. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.1/egcs-1.1.html
-
- EGCS 1.1
-
- September 3, 1998
-
- We are pleased to announce the release of EGCS 1.1.
-
- EGCS is a free software project to further the development of the GNU
- compilers using an open development environment.
-
- EGCS 1.1 is a major new release of the EGCS compiler system. It has
- been [1]extensively tested and is believed to be stable and suitable
- for widespread use.
-
- EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from GCC up to June 6, 1998.
-
- EGCS also contains many improvements and features not found in GCC or
- in older versions of EGCS.
- * Global common subexpression elimination and global constant/copy
- propagation (aka [2]gcse)
- * Ongoing improvements to the [3]alias analysis support to allow for
- better optimizations throughout the compiler.
- * Vastly improved [4]C++ compiler and integrated C++ runtime
- libraries.
- * Fixes for the /tmp symlink race security problems.
- * New targets including mips16, arm-thumb and 64 bit PowerPC.
- * Improvements to GNU Fortran (g77) compiler and runtime library
- made since [5]g77 version 0.5.23.
-
- See the [6]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
-
- The EGCS 1.1 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.1 distribution). However, we also keep the
- most up to date [7]installation instructions and [8]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [9]amazing
- group of volunteers is what makes EGCS successful.
-
- And finally, we can't in good conscience fail to mention some
- [10]caveats to using EGCS 1.1.
-
- [11]Download EGCS 1.1 from egcs.cygnus.com (USA California)
-
- [12]Download EGCS 1.1 from go.cygnus.com (USA California -- High speed
- link provided by Stanford)
-
- The EGCS 1.1 release is also available on many mirror sites.
- [13]Goto mirror list to find a closer site
- _________________________________________________________________
-
- Last modified on September 4, 1999.
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
- 2. http://gcc.gnu.org/news/gcse.html
- 3. http://gcc.gnu.org/news/alias.html
- 4. http://gcc.gnu.org/egcs-1.1/c++features.html
- 5. http://gcc.gnu.org/onlinedocs/g77_news.html
- 6. http://gcc.gnu.org/egcs-1.1/features.html
- 7. http://gcc.gnu.org/install/index.html
- 8. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 9. http://gcc.gnu.org/thanks.html
- 10. http://gcc.gnu.org/egcs-1.1/caveats.html
- 11. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 12. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 13. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.1/features.html
-
- EGCS 1.1 new features
-
- * Integrated GNU Fortran (g77) compiler and runtime library with
- improvements, based on [1]g77 version 0.5.23.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Compiler implements [3]global common subexpression elimination and
- global copy/constant propagation.
- * More major improvements in the [4]alias analysis code.
- * More major improvements in the exception handling code to improve
- performance, lower static overhead and provide the infrastructure
- for future improvements.
- * The infamous /tmp symlink race security problems have been fixed.
- * The regmove optimization pass has been nearly completely rewritten
- to improve performance of generated code.
- * The compiler now recomputes register usage information before
- local register allocation. By providing more accurate information
- to the priority based allocator, we get better register
- allocation.
- * The register reloading phase of the compiler optimizes spill code
- much better than in previous releases.
- * Some bad interactions between the register allocator and
- instruction scheduler have been fixed, resulting in much better
- code for certain programs. Additionally, we have tuned the
- scheduler in various ways to improve performance of generated code
- for some architectures.
- * The compiler's branch shortening algorithms have been
- significantly improved to work better on targets which align jump
- targets.
- * The compiler now supports -Os to prefer optimizing for code space
- over optimizing for code speed.
- * The compiler will now totally eliminate library calls which
- compute constant values. This primarily helps targets with no
- integer div/mul support and targets without floating point
- support.
- * The compiler now supports an extensive "--help" option.
- * cpplib has been greatly improved and may be suitable for limited
- use.
- * Memory footprint for the compiler has been significantly reduced
- for some pathological cases.
- * The time to build EGCS has been improved for certain targets
- (particularly the alpha and mips platforms).
- * Many infrastructure improvements throughout the compiler, plus the
- usual mountain of bugfixes and minor improvements.
- * Target dependent improvements:
- + SPARC port now includes V8 plus and V9 support as well as
- performance tuning for Ultra class machines. The SPARC port
- now uses the Haifa scheduler.
- + Alpha port has been tuned for the EV6 processor and has an
- optimized expansion of memcpy/bzero. The Alpha port now uses
- the Haifa scheduler.
- + RS6000/PowerPC: EGCS 1.1 includes support for the Power64
- architecture and aix4.3 support. The RS6000/PowerPC port now
- uses the Haifa scheduler.
- + x86: Alignment of static store data and jump targets is per
- Intel recommendations now. Various improvements throughout
- the x86 port to improve performance on Pentium processors.
- Conditional move support has been fixed and enabled for PPro
- processors. The x86 port also better supports 64bit
- operations now.
- + MIPS has improved multiply/multiply-add support and now
- includes mips16 ISA support.
- + M68k has many micro-optimizations and Coldfire fixes.
- * Core compiler is based on the GCC development tree from June 9,
- 1998, so we have all of the [5]features found in GCC 2.8.
-
- [6]Return to the EGCS home page
-
- Last modified: September 4, 1999
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/g77_news.html
- 2. http://gcc.gnu.org/egcs-1.1/c++features.html
- 3. http://gcc.gnu.org/news/gcse.html
- 4. http://gcc.gnu.org/news/alias.html
- 5. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 6. http://gcc.gnu.org/index.html
-======================================================================
-http://gcc.gnu.org/egcs-1.1/caveats.html
-
- EGCS 1.1 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with EGCS;
- HJ Lu has made a [1]libg++ snapshot available which may work with
- EGCS.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86-linux
- platforms with shared libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See
- [2]the FAQ for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
- a result it may be necessary to fix C++ code before it will
- compile with EGCS.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- * EGCS 1.1 compiled C++ code is not binary compatible with EGCS
- 1.0.x or GCC 2.8.x due to changes necessary to support thread safe
- exception handling.
-
- [3]Return to the GCC home page
-
- Last modified: July 28, 1999
-
-References
-
- 1. ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1.2.tar.gz
- 2. http://gcc.gnu.org/fom_serv/cache/24.html
- 3. http://gcc.gnu.org/index.html
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html
-
- EGCS 1.0.3
-
- May 15, 1998
-
- We are pleased to announce the release of EGCS 1.0.3.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
- problems reported by Red Hat for builds of Red Hat 5.1.
- * Generic bugfixes:
- + Fix a typo in the libio library which resulted in incorrect
- behavior of istream::get.
- + Fix the Fortran negative array index problem.
- + Fix a major problem with the ObjC runtime thread support
- exposed by glibc2.
- + Reduce memory consumption of the Haifa scheduler.
- * Target specific bugfixes:
- + Fix one x86 floating point code generation bug exposed by
- glibc2 builds.
- + Fix one x86 internal compiler error exposed by glibc2 builds.
- + Fix profiling bugs on the Alpha.
- + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
- + Fix rs6000/ppc bug when converting values from integer types
- to floating point types.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.3 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- GNU/Linux systems!
- * The integrated libstdc++ library includes a verbatim copy of
- [1]SGI's STL release instead of a modified copy.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [2]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.3 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.3 distribution). However, we also keep the
- most up to date [3]installation instructions and [4]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [5]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- [6]Download EGCS 1.0.3 from ftp.cygnus.com (USA California)
-
- [7]Download EGCS 1.0.3 from go.cygnus.com (USA California -- High
- speed link provided by Stanford)
-
- The EGCS 1.0.3 release is also available on many mirror sites.
- [8]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Last modified on February 22, 1999.
-
-References
-
- 1. http://www.sgi.com/Technology/STL
- 2. http://gcc.gnu.org/egcs-1.0/features.html
- 3. http://gcc.gnu.org/install/index.html
- 4. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 5. http://gcc.gnu.org/egcs-1.0/caveats.html
- 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 8. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html
-
- EGCS 1.0.2
-
- March 16, 1998
-
- We are pleased to announce the release of EGCS 1.0.2.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
- serious problems in EGCS 1.0.1.
- * General improvements and fixes
- + Memory consumption significantly reduced, especially for
- templates and inline functions.
- + Fix various problems with glibc2.1.
- + Fix loop optimization bug exposed by rs6000/ppc port.
- + Fix to avoid potential code generation problems in jump.c.
- + Fix some undefined symbol problems in dwarf1 debug support.
- * g++/libstdc++ improvements and fixes
- + libstdc++ in the EGCS release has been updated and should be
- link compatible with libstdc++-2.8.
- + Various fixes in libio/libstdc++ to work better on Linux
- systems.
- + Fix problems with duplicate symbols on systems that do not
- support weak symbols.
- + Memory corruption bug and undefined symbols in bastring have
- been fixed.
- + Various exception handling fixes.
- + Fix compiler abort for very long thunk names.
- * g77 improvements and fixes
- + Fix compiler crash for omitted bound in Fortran CASE
- statement.
- + Add missing entries to g77 lang-options.
- + Fix problem with -fpedantic in the g77 compiler.
- + Fix "backspace" problem with g77 on alphas.
- + Fix x86 backend problem with Fortran literals and -fpic.
- + Fix some of the problems with negative subscripts for g77 on
- alphas.
- + Fixes for Fortran builds on cygwin32/mingw32.
- * platform specific improvements and fixes
- + Fix long double problems on x86 (exposed by glibc)
- + x86 ports define i386 again to keep imake happy.
- + Fix exception handling support on NetBSD ports.
- + Several changes to collect2 to fix many problems with AIX.
- + Define __ELF__ for rs6000/linux.
- + Fix -mcall-linux problem on rs6000/linux.
- + Fix stdarg/vararg problem for rs6000/linux.
- + Allow autoconf to select a proper install problem on AIX 3.1.
- + m68k port support includes -mcpu32 option as well as cpu32
- multilibs.
- + Fix stdarg bug for irix6.
- + Allow EGCS to build on irix5 without the gnu assembler.
- + Fix problem with static linking on sco5.
- + Fix bootstrap on sco5 with native compiler.
- + Fix for abort building newlib on H8 target.
- + Fix fixincludes handling of math.h on SunOS.
- + Minor fix for motorola 3300 m68k systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.2 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of
- [1]SGI's STL release.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [2]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.2 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.2 distribution). However, we also keep the
- most up to date [3]installation instructions and [4]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [5]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- [6]Download EGCS 1.0.2 from ftp.cygnus.com (USA California)
-
- [7]Download EGCS 1.0.2 from go.cygnus.com (USA California -- High
- speed link provided by Stanford)
-
- The EGCS 1.0.2 release is also available on many mirror sites.
- [8]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Last modified on July 28, 1999.
-
-References
-
- 1. http://www.sgi.com/Technology/STL/
- 2. http://gcc.gnu.org/egcs-1.0/features.html
- 3. http://gcc.gnu.org/install/index.html
- 4. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 5. http://gcc.gnu.org/egcs-1.0/caveats.html
- 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 8. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html
-
- EGCS 1.0.1
-
- January 6, 1998
-
- We are pleased to announce the release of EGCS 1.0.1.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
- critical bugs and add support for Red Hat 5.0 Linux. Changes since the
- EGCS 1.0 release:
- * Add support for Red Hat 5.0 Linux and better support for Linux
- systems using glibc2.
- Many programs failed to link when compiled with EGCS 1.0 on Red
- Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1
- should fix these problems.
- * Compatability with both EGCS 1.0 and GCC 2.8 libgcc exception
- handling interfaces.
- To avoid future compatibility problems, we strongly urge anyone
- who is planning on distributing shared libraries that contain C++
- code to upgrade to EGCS 1.0.1 first.
- Soon after EGCS 1.0 was released, the GCC developers made some
- incompatible changes in libgcc's exception handling interfaces.
- These changes were needed to solve problems on some platforms.
- This means that GCC 2.8.0, when released, will not be seamlessly
- compatible with shared libraries built by EGCS 1.0. The reason is
- that the libgcc.a in GCC 2.8.0 will not contain a function needed
- by the old interface.
- The result of this is that there may be compatibility problems
- with shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
- With EGCS 1.0.1, generated code uses the new (GCC 2.8.0)
- interface, and libgcc.a has the support routines for both the old
- and the new interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be
- freely mixed, and EGCS 1.0.1 and GCC 2.8.0 code can be freely
- mixed).
- The maintainers of GCC 2.x have decided against including seamless
- support for the old interface in 2.8.0, since it was never
- "official", so to avoid future compatibility problems we recommend
- against distributing any shared libraries built by EGCS 1.0 that
- contain C++ code (upgrade to 1.0.1 and use that).
- * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
- The x86 changes fix code generation errors exposed when building
- glibc2 and the Linux dynamic linker (ld.so).
- The hppa change fixes a compiler abort when configured for use
- with RTEMS.
- The MIPS changes fix problems with the definition of LONG_MAX on
- newer systems, allow for command line selection of the target ABI,
- and fix one code generation problem.
- The rs6000/ppc change fixes some problems with passing structures
- to varargs/stdarg functions.
- * A few machine independent bugfixes, mostly to fix code generation
- errors when building Linux kernels or glibc.
- * Fix a few critical exception handling and template bugs in the C++
- compiler.
- * Fix Fortran namelist bug on alphas.
- * Fix build problems on x86-solaris systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.1 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of
- [1]SGI's STL release.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [2]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.1 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.1 distribution). However, we also keep the
- most up to date [3]installation instructions and [4]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [5]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- [6]Download EGCS 1.0.1 from ftp.cygnus.com (USA California)
-
- [7]Download EGCS 1.0.1 from go.cygnus.com (USA California -- High
- speed link provided by Stanford)
-
- The EGCS 1.0.1 release is also available on many mirror sites.
- [8]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Last modified on July 28, 1999.
-
-References
-
- 1. http://www.sgi.com/Technology/STL/
- 2. http://gcc.gnu.org/egcs-1.0/features.html
- 3. http://gcc.gnu.org/install/index.html
- 4. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 5. http://gcc.gnu.org/egcs-1.0/caveats.html
- 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 8. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.html
-
- EGCS 1.0
-
- December 3, 1997
-
- We are pleased to announce the release of EGCS 1.0.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- An important goal of EGCS is to allow wide scale testing of
- experimental features and optimizations; therefore, EGCS contains some
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS 1.0 also contains many improvements and features not found in GCC
- 2.7 and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of
- [1]SGI's STL release.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [2]new features page for a more complete list of new features.
-
- The EGCS 1.0 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0 distribution). However, we also keep the
- most up to date [3]installation instructions and [4]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [5]caveats to
- using EGCS.
-
- Update: The T1 into our main California offices has been 100%
- saturated since shortly after the release. We've added an EGCS 1.0
- mirror at our Massachusetts office to help share the load. We also
- encourage folks to use the many mirrors available throughout the
- world.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS! (go.cygnus.com)
-
- [6]Download EGCS 1.0 from ftp.cygnus.com (USA California)
-
- [7]Download EGCS 1.0 from go.cygnus.com (USA California -- High speed
- link provided by Stanford)
-
- The EGCS 1.0 release should be available on most mirror sites by now.
- [8]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Last modified on July 28, 1999.
-
-References
-
- 1. http://www.sgi.com/Technology/STL
- 2. http://gcc.gnu.org/egcs-1.0/features.html
- 3. http://gcc.gnu.org/install/index.html
- 4. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 5. http://gcc.gnu.org/egcs-1.0/caveats.html
- 6. ftp://egcs.cygnus.com/pub/egcs/releases/index.html
- 7. ftp://go.cygnus.com/pub/sourceware.cygnus.com/pub/egcs/releases/index.html
- 8. http://gcc.gnu.org/mirrors.html
-======================================================================
-http://gcc.gnu.org/egcs-1.0/features.html
-
- EGCS 1.0 features
-
- * Core compiler is based on the gcc2 development tree from Aug 2,
- 1997, so we have most of the [1]features found in GCC 2.8.
- * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * New instruction scheduler from IBM Haifa which includes support
- for function wide instruction scheduling as well as superscalar
- scheduling.
- * Significantly improved alias analysis code.
- * Improved register allocation for two address machines.
- * Significant code generation improvements for Fortran code on
- Alphas
- * Various optimizations from the g77 project as well as improved
- loop optimizations.
- * Dwarf2 debug format support for some targets.
- * egcs libstdc++ includes the SGI STL implementation without
- changes.
- * As a result of these and other changes, egcs libstc++ is not
- binary compatible with previous releases of libstdc++.
- * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The
- SCO Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0
- and 1.1), Support for RTEMS on several embedded targets, Support
- for arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
- MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc.
- * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
- * RS6000/PowerPC ports generate code which can run on all
- RS6000/PowerPC variants by default.
- * -mcpu= and -march= switches for the x86 port to allow better
- control over how the x86 port generates code.
- * Includes the template repository patch (aka repo patch); note the
- new template code makes repo obsolete for ELF systems using gnu-ld
- such as Linux.
- * Plus the usual assortment of bugfixes and improvements.
-
- [3]Return to the egcs home page
-
- Last modified: July 28, 1999
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 2. http://gcc.gnu.org/egcs-1.0/c++features.html
- 3. http://gcc.gnu.org/index.html
-======================================================================
-http://gcc.gnu.org/egcs-1.0/caveats.html
-
- EGCS 1.0 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with egc; HJ
- Lu has made a [1]libg++ snapshot available which may work with
- EGCS.
- Note most C++ programs only need libstdc++.
- * Note that using -pedantic or -Wreturn-type can cause an explosion
- in the amount of memory needed for template-heavy C++ code, such
- as code that uses STL. Also note that -Wall includes
- -Wreturn-type, so if you use -Wall you will need to specify
- -Wno-return-type to turn it off.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, and mips based platforms. Exception
- handling is known to work on x86-linux platforms with shared
- libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See
- [2]the FAQ for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than G++ 2.7. As a result it may be
- necessary to fix C++ code before it will compile with EGCS.
- * G++ is also aggressively tracking the C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of G++) may no longer be accepted.
- * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
- 1.0.x and later releases should work with Red Hat Linux 5.0.
-
- [3]Return to the GCC home page
-
- Last modified: August 27, 1998
-
-References
-
- 1. ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1.2.tar.gz
- 2. http://gcc.gnu.org/fom_serv/cache/24.html
- 3. http://gcc.gnu.org/index.html
-======================================================================
+Noteworthy changes in GCC after EGCS 1.1.
+-----------------------------------------
+
+Target specific NEWS
+
+ RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403. -mcpu=e603e
+ was added to do -mcpu=603e and -msoft-float.
+
+Noteworthy changes in GCC for EGCS 1.1.
+---------------------------------------
+
+The compiler now implements global common subexpression elimination (gcse) as
+well as global constant/copy propagation. (link to gcse page).
+
+More major improvements have been made to the alias analysis code. A new
+option to allow front-ends to provide alias information to the optimizers
+has also been added (-fstrict-aliasing). -fstrict-aliasing is off by default
+now, but will be enabled by default in the future. (link to alias page)
+
+Major changes continue in the exception handling support. This release
+includes some changes to reduce static overhead for exception handling. It
+also includes some major changes to the setjmp/longjmp based EH mechanism to
+make it less pessimistic. And finally, major infrastructure improvements
+to the dwarf2 EH mechanism have been made to make our EH support extensible.
+
+We have fixed the infamous security problems with temporary files.
+
+The "regmove" optimization pass has been nearly completely rewritten. It now
+uses much more information about the target to determine profitability of
+transformations.
+
+The compiler now recomputes register usage information immediately before
+register allocation. Previously such information was only not kept up to
+date after instruction combination which led to poor register allocation
+choices by our priority based register allocator.
+
+The register reloading phase of the compiler has been improved to better
+optimize spill code. This primarily helps targets which generate lots of
+spills (like the x86 ports and many register poor embedded ports).
+
+A few changes in the heuristics used by the register allocator and scheduler
+have been made which can significantly improve performance for certain
+applications.
+
+The compiler's branch shortening algorithms have been significantly improved
+to work better on targets which align jump targets.
+
+The compiler now supports the "ADDRESSOF" optimization which can significantly
+reduce the overhead for certain inline calls (and inline calls in general).
+
+The compiler now supports a code size optimization switch (-Os). When enabled
+the compiler will prefer optimizations which improve code size over those
+which improve code speed.
+
+The compiler has been improved to completely eliminate library calls which
+compute constant values. This is particularly useful on machines which
+do not have integer mul/div or floating point support on-chip.
+
+GCC now supports a "--help" option to print detailed help information.
+
+cpplib has been greatly improved. It is probably useable for some sites now
+(major missing feature is trigraphs).
+
+Memory footprint for the compiler has been significantly reduced for certain
+pathalogical cases.
+
+Build time improvements for targets which support lots of sched parameters
+(alpha and mips primarily).
+
+Compile time for certain programs using large constant initializers has been
+improved (effects glibc significantly).
+
+Plus an incredible number of infrastructure changes, warning fixes, bugfixes
+and local optimizations.
+
+Various improvements have been made to better support cross compilations. They
+are still not easy, but they are improving.
+
+Target specific NEWS
+
+ Sparc: Now includes V8 plus and V9 support, lots of tuning for Ultrasparcs
+ and uses the Haifa scheduler by default.
+
+ Alpha: EV6 tuned, optimized expansion of memcpy/bzero.
+
+ x86: Data in the static store is aligned per Intel recommendations. Jump
+ targets are aligned per Intel recommendations. Improved epilogue
+ sequences for Pentium chips. Backend improvements which should help
+ register allocation on all x86 variants. Support for PPro conditional
+ move instructions has been fixed and enabled. Random changes
+ throughout the port to make generated code more Pentium friendly.
+ Improved support for 64bit integer operations.
+ Unixware 7, a System V Release 5 target is now supported.
+ SCO OpenServer targets can support GAS. See gcc/INSTALL for details.
+
+ RS6000/PowerPC: Includes AIX4.3 support as well as PowerPC64 support.
+ Haifa instruction scheduling is enabled by default now.
+
+ MIPS: Multiply/Multiply-Add support has been largely rewritten to generate
+ more efficient code. Includes mips16 support.
+
+ M68K: Various micro-optimizations and Coldfire fixes.
+
+ M32r: Major improvements to this port.
+
+ Arm: Includes Thumb and super interworking support.
+
+EGCS includes all gcc2 changes up to and including the June 9, 1998 snapshot.
+
+
+Noteworthy changes in GCC version 2.8.1
+---------------------------------------
+
+Numerous bugs have been fixed and some minor performance
+improvements (compilation speed) have been made.
+
+Noteworthy changes in GCC version 2.8.0
+---------------------------------------
+
+A major change in this release is the addition of a framework for
+exception handling, currently used by C++. Many internal changes and
+optimization improvements have been made. These increase the
+maintainability and portability of GCC. GCC now uses autoconf to
+compute many host parameters.
+
+The following lists changes that add new features or targets.
+
+See cp/NEWS for new features of C++ in this release.
+
+New tools and features:
+
+ The Dwarf 2 debugging information format is supported on ELF systems, and
+ is the default for -ggdb where available. It can also be used for C++.
+ The Dwarf version 1 debugging format is also permitted for C++, but
+ does not work well.
+
+ gcov.c is provided for test coverage analysis and branch profiling
+ analysis is also supported; see -fprofile-arcs, -ftest-coverage,
+ and -fbranch-probabilities.
+
+ Support for the Checker memory checking tool.
+
+ New switch, -fstack-check, to check for stack overflow on systems that
+ don't have such built into their ABI.
+
+ New switches, -Wundef and -Wno-undef to warn if an undefined identifier
+ is evaluated in an #if directive.
+
+ Options -Wall and -Wimplicit now cause GCC to warn about implicit int
+ in declarations (e.g. `register i;'), since the C Standard committee
+ has decided to disallow this in the next revision of the standard;
+ -Wimplicit-function-declarations and -Wimplicit-int are subsets of
+ this.
+
+ Option -Wsign-compare causes GCC to warn about comparison of signed and
+ unsigned values.
+
+ Add -dI option of cccp for cxref.
+
+New features in configuration, installation and specs file handling:
+
+ New option --enable-c-cpplib to configure script.
+
+ You can use --with-cpu on the configure command to specify the default
+ CPU that GCC should generate code for.
+
+ The -specs=file switch allows you to override default specs used in
+ invoking programs like cc1, as, etc.
+
+ Allow including one specs file from another and renaming a specs
+ variable.
+
+ You can now relocate all GCC files with a single environment variable
+ or a registry entry under Windows 95 and Windows NT.
+
+Changes in Objective-C:
+
+ The Objective-C Runtime Library has been made thread-safe.
+
+ The Objective-C Runtime Library contains an interface for creating
+ mutexes, condition mutexes, and threads; it requires a back-end
+ implementation for the specific platform and/or thread package.
+ Currently supported are DEC/OSF1, IRIX, Mach, OS/2, POSIX, PCThreads,
+ Solaris, and Windows32. The --enable-threads parameter can be used
+ when configuring GCC to enable and select a thread back-end.
+
+ Objective-C is now configured as separate front-end language to GCC,
+ making it more convenient to conditionally build it.
+
+ The internal structures of the Objective-C Runtime Library have
+ changed sufficiently to warrant a new version number; now version 8.
+ Programs compiled with an older version must be recompiled.
+
+ The Objective-C Runtime Library can be built as a DLL on Windows 95
+ and Windows NT systems.
+
+ The Objective-C Runtime Library implements +load.
+
+The following new targets are supported (see also list under each
+individual CPU below):
+
+ Embedded target m32r-elf.
+ Embedded Hitachi Super-H using ELF.
+ RTEMS real-time system on various CPU targets.
+ ARC processor.
+ NEC V850 processor.
+ Matsushita MN10200 processor.
+ Matsushita MN10300 processor.
+ Sparc and PowerPC running on VxWorks.
+ Support both glibc versions 1 and 2 on Linux-based GNU systems.
+
+New features for DEC Alpha systems:
+
+ Allow detailed specification of IEEE fp support:
+ -mieee, -mieee-with-inexact, and -mieee-conformant
+ -mfp-trap-mode=xxx, -mfp-round-mode=xxx, -mtrap-precision=xxx
+ -mcpu=xxx for CPU selection
+ Support scheduling parameters for EV5.
+ Add support for BWX, CIX, and MAX instruction set extensions.
+ Support Linux-based GNU systems.
+ Support VMS.
+
+Additional supported processors and systems for MIPS targets:
+
+ MIPS4 instruction set.
+ R4100, R4300 and R5000 processors.
+ N32 and N64 ABI.
+ IRIX 6.2.
+ SNI SINIX.
+
+New features for Intel x86 family:
+
+ Add scheduling parameters for Pentium and Pentium Pro.
+ Support stabs on Solaris-x86.
+ Intel x86 processors running the SCO OpenServer 5 family.
+ Intel x86 processors running DG/UX.
+ Intel x86 using Cygwin32 or Mingw32 on Windows 95 and Windows NT.
+
+New features for Motorola 68k family:
+
+ Support for 68060 processor.
+ More consistent switches to specify processor.
+ Motorola 68k family running AUX.
+ 68040 running pSOS, ELF object files, DBX debugging.
+ Coldfire variant of Motorola m68k family.
+
+New features for the HP PA RISC:
+
+ -mspace and -mno-space
+ -mlong-load-store and -mno-long-load-store
+ -mbig-switch -mno-big-switch
+
+ GCC on the PA requires either gas-2.7 or the HP assembler; for best
+ results using GAS is highly recommended. GAS is required for -g and
+ exception handling support.
+
+New features for SPARC-based systems:
+
+ The ultrasparc cpu.
+ The sparclet cpu, supporting only a.out file format.
+ Sparc running SunOS 4 with the GNU assembler.
+ Sparc running the Linux-based GNU system.
+ Embedded Sparc processors running the ELF object file format.
+ -mcpu=xxx
+ -mtune=xxx
+ -malign-loops=xxx
+ -malign-jumps=xxx
+ -malign-functions=xxx
+ -mimpure-text and -mno-impure-text
+
+ Options -mno-v8 and -mno-sparclite are no longer supported on SPARC
+ targets. Options -mcypress, -mv8, -msupersparc, -msparclite, -mf930,
+ and -mf934 are deprecated and will be deleted in GCC 2.9. Use
+ -mcpu=xxx instead.
+
+New features for rs6000 and PowerPC systems:
+
+ Solaris 2.51 running on PowerPC's.
+ The Linux-based GNU system running on PowerPC's.
+ -mcpu=604e,602,603e,620,801,823,mpc505,821,860,power2
+ -mtune=xxx
+ -mrelocatable-lib, -mno-relocatable-lib
+ -msim, -mmve, -memb
+ -mupdate, -mno-update
+ -mfused-madd, -mno-fused-madd
+
+ -mregnames
+ -meabi
+ -mcall-linux, -mcall-solaris, -mcall-sysv-eabi, -mcall-sysv-noeabi
+ -msdata, -msdata=none, -msdata=default, -msdata=sysv, -msdata=eabi
+ -memb, -msim, -mmvme
+ -myellowknife, -mads
+ wchar_t is now of type long as per the ABI, not unsigned short.
+ -p/-pg support
+ -mcpu=403 now implies -mstrict-align.
+ Implement System V profiling.
+
+ Aix 4.1 GCC targets now default to -mcpu=common so that programs
+ compiled can be moved between rs6000 and powerpc based systems. A
+ consequence of this is that -static won't work, and that some programs
+ may be slightly slower.
+
+ You can select the default value to use for -mcpu=xxx on rs6000 and
+ powerpc targets by using the --with-cpu=xxx option when configuring the
+ compiler. In addition, a new options, -mtune=xxx was added that
+ selects the machine to schedule for but does not select the
+ architecture level.
+
+ Directory names used for storing the multilib libraries on System V
+ and embedded PowerPC systems have been shortened to work with commands
+ like tar that have fixed limits on pathname size.
+
+New features for the Hitachi H8/300(H):
+
+ -malign-300
+ -ms (for the Hitachi H8/S processor)
+ -mint32
+
+New features for the ARM:
+
+ -march=xxx, -mtune=xxx, -mcpu=xxx
+ Support interworking with Thumb code.
+ ARM processor with a.out object format, COFF, or AOF assembler.
+ ARM on "semi-hosted" platform.
+ ARM running NetBSD.
+ ARM running the Linux-based GNU system.
+
+New feature for Solaris systems:
+
+ GCC installation no longer makes a copy of system include files,
+ thus insulating GCC better from updates to the operating system.
+
+
+Noteworthy changes in GCC version 2.7.2
+---------------------------------------
+
+A few bugs have been fixed (most notably the generation of an
+invalid assembler opcode on some RS/6000 systems).
+
+Noteworthy changes in GCC version 2.7.1
+---------------------------------------
+
+This release fixes numerous bugs (mostly minor) in GCC 2.7.0, but
+also contains a few new features, mostly related to specific targets.
+
+Major changes have been made in code to support Windows NT.
+
+The following new targets are supported:
+
+ 2.9 BSD on PDP-11
+ Linux on m68k
+ HP/UX version 10 on HP PA RISC (treated like version 9)
+ DEC Alpha running Windows NT
+
+When parsing C, GCC now recognizes C++ style `//' comments unless you
+specify `-ansi' or `-traditional'.
+
+The PowerPC System V targets (powerpc-*-sysv, powerpc-*-eabi) now use the
+calling sequence specified in the System V Application Binary Interface
+Processor Supplement (PowerPC Processor ABI Supplement) rather than the calling
+sequence used in GCC version 2.7.0. That calling sequence was based on the AIX
+calling sequence without function descriptors. To compile code for that older
+calling sequence, either configure the compiler for powerpc-*-eabiaix or use
+the -mcall-aix switch when compiling and linking.
+
+Noteworthy changes in GCC version 2.7.0
+---------------------------------------
+
+GCC now works better on systems that use ".obj" and ".exe" instead of
+".o" and no extension. This involved changes to the driver program,
+gcc.c, to convert ".o" names to ".obj" and to GCC's Makefile to use
+".obj" and ".exe" in filenames that are not targets. In order to
+build GCC on such systems, you may need versions of GNU make and/or
+compatible shells. At this point, this support is preliminary.
+
+Object file extensions of ".obj" and executable file extensions of
+".exe" are allowed when using appropriate version of GNU Make.
+
+Numerous enhancements were made to the __attribute__ facility including
+more attributes and more places that support it. We now support the
+"packed", "nocommon", "noreturn", "volatile", "const", "unused",
+"transparent_union", "constructor", "destructor", "mode", "section",
+"align", "format", "weak", and "alias" attributes. Each of these
+names may also be specified with added underscores, e.g., "__packed__".
+__attribute__ may now be applied to parameter definitions, function
+definitions, and structure, enum, and union definitions.
+
+GCC now supports returning more structures in registers, as specified by
+many calling sequences (ABIs), such as on the HP PA RISC.
+
+A new option '-fpack-struct' was added to automatically pack all structure
+members together without holes.
+
+There is a new library (cpplib) and program (cppmain) that at some
+point will replace cpp (aka cccp). To use cppmain as cpp now, pass
+the option CCCP=cppmain to make. The library is already used by the
+fix-header program, which should speed up the fixproto script.
+
+New options for supported targets:
+
+ GNU on many targets.
+ NetBSD on MIPS, m68k, VAX, and x86.
+ LynxOS on x86, m68k, Sparc, and RS/6000.
+ VxWorks on many targets.
+
+ Windows/NT on x86 architecture. Initial support for Windows/NT on Alpha
+ (not fully working).
+
+ Many embedded targets, specifically UDI on a29k, aout, coff, elf,
+ and vsta "operating systems" on m68k, m88k, mips, sparc, and x86.
+
+Additional support for x86 (i386, i486, and Pentium):
+
+ Work with old and new linkers for Linux-based GNU systems,
+ supporting both a.out and ELF.
+ FreeBSD on x86.
+ Stdcall convention.
+ -malign-double, -mregparm=, -malign-loops= and -malign-jumps= switches.
+ On ISC systems, support -Xp like -posix.
+
+Additions for RS/6000:
+
+ Instruction scheduling information for PowerPC 403.
+ AIX 4.1 on PowerPC.
+ -mstring and -mno-string.
+ -msoft-float and floating-point emulation included.
+ Preliminary support for PowerPC System V.4 with or without the GNU as.
+ Preliminary support for EABI.
+ Preliminary support for 64-bit systems.
+ Both big and little endian systems.
+
+New features for MIPS-based systems:
+
+ r4650.
+ mips4 and R8000.
+ Irix 6.0.
+ 64-bit ABI.
+ Allow dollar signs in labels on SGI/Irix 5.x.
+
+New support for HP PA RISC:
+
+ Generation of PIC (requires binutils-2.5.2.u6 or later).
+ HP-UX version 9 on HP PA RISC (dynamically links even with -g).
+ Processor variants for HP PA RISC: 700, 7100, and 7100LC.
+ Automatic generation of long calls when needed.
+ -mfast-indirect-calls for kernels and static binaries.
+
+ The called routine now copies arguments passed by invisible reference,
+ as required by the calling standard.
+
+Other new miscellaneous target-specific support:
+
+ -mno-multm on a29k.
+ -mold-align for i960.
+ Configuration for "semi-hosted" ARM.
+ -momit-leaf-frame-pointer for M88k.
+ SH3 variant of Hitachi Super-H and support both big and little endian.
+
+Changes to Objective-C:
+
+ Bare-bones implementation of NXConstantString has been added,
+ which is invoked by the @"string" directive.
+
+ Class * has been changed to Class to conform to the NextSTEP and
+ OpenStep runtime.
+
+ Enhancements to make dynamic loading easier.
+
+ The module version number has been updated to Version 7, thus existing
+ code will need to be recompiled to use the current run-time library.
+
+GCC now supports the ISO Normative Addendum 1 to the C Standard.
+As a result:
+
+ The header <iso646.h> defines macros for C programs written
+ in national variants of ISO 646.
+
+ The following digraph tokens are supported:
+ <: :> <% %> %: %:%:
+ These behave like the following, respectively:
+ [ ] { } # ##
+
+ Digraph tokens are supported unless you specify the `-traditional'
+ option; you do not need to specify `-ansi' or `-trigraphs'. Except
+ for contrived and unlikely examples involving preprocessor
+ stringizing, digraph interpretation doesn't change the meaning of
+ programs; this is unlike trigraph interpretation, which changes the
+ meanings of relatively common strings.
+
+ The macro __STDC_VERSION__ has the value 199409L.
+
+ As usual, for full conformance to the standard, you also need a
+ C library that conforms.
+
+The following lists changes that have been made to g++. If some
+features mentioned below sound unfamiliar, you will probably want to
+look at the recently-released public review copy of the C++ Working
+Paper. For PostScript and PDF (Adobe Acrobat) versions, see the
+archive at ftp://research.att.com/dist/stdc++/WP. For HTML and ASCII
+versions, see ftp://ftp.cygnus.com/pub/g++. On the web, see
+http://www.cygnus.com/~mrs/wp-draft.
+
+The scope of variables declared in the for-init-statement has been changed
+to conform to http://www.cygnus.com/~mrs/wp-draft/stmt.html#stmt.for; as a
+result, packages such as groff 1.09 will not compile unless you specify the
+-fno-for-scope flag. PLEASE DO NOT REPORT THIS AS A BUG; this is a change
+mandated by the C++ standardization committee.
+
+Binary incompatibilities:
+
+ The builtin 'bool' type is now the size of a machine word on RISC targets,
+ for code efficiency; it remains one byte long on CISC targets.
+
+ Code that does not use #pragma interface/implementation will most
+ likely shrink dramatically, as g++ now only emits the vtable for a
+ class in the translation unit where its first non-inline, non-abstract
+ virtual function is defined.
+
+ Classes that do not define the copy constructor will sometimes be
+ passed and returned in registers. This may illuminate latent bugs in
+ your code.
+
+Support for automatic template instantiation has *NOT* been added, due
+to a disagreement over design philosophies.
+
+Support for exception handling has been improved; more targets are now
+supported, and throws will use the RTTI mechanism to match against the
+catch parameter type. Optimization is NOT SUPPORTED with
+-fhandle-exceptions; no need to report this as a bug.
+
+Support for Run-Time Type Identification has been added with -frtti.
+This support is still in alpha; one major restriction is that any file
+compiled with -frtti must include <typeinfo.h>.
+
+Preliminary support for namespaces has been added. This support is far
+from complete, and probably not useful.
+
+Synthesis of compiler-generated constructors, destructors and
+assignment operators is now deferred until the functions are used.
+
+The parsing of expressions such as `a ? b : c = 1' has changed from
+`(a ? b : c) = 1' to `a : b ? (c = 1)'.
+
+The code generated for testing conditions, especially those using ||
+and &&, is now more efficient.
+
+The operator keywords and, and_eq, bitand, bitor, compl, not, not_eq,
+or, or_eq, xor and xor_eq are now supported. Use -ansi or
+-foperator-names to enable them.
+
+The 'explicit' keyword is now supported. 'explicit' is used to mark
+constructors and type conversion operators that should not be used
+implicitly.
+
+g++ now accepts the typename keyword, though it currently has no
+semantics; it can be a no-op in the current template implementation.
+You may want to start using it in your code, however, since the
+pending rewrite of the template implementation to compile STL properly
+(perhaps for 2.8.0, perhaps not) will require you to use it as
+indicated by the current draft.
+
+Handling of user-defined type conversion has been overhauled so that
+type conversion operators are now found and used properly in
+expressions and function calls.
+
+-fno-strict-prototype now only applies to function declarations with
+"C" linkage.
+
+g++ now warns about 'if (x=0)' with -Wparentheses or -Wall.
+
+#pragma weak and #pragma pack are supported on System V R4 targets, as
+are various other target-specific #pragmas supported by gcc.
+
+new and delete of const types is now allowed (with no additional
+semantics).
+
+Explicit instantiation of template methods is now supported. Also,
+'inline template class foo<int>;' can be used to emit only the vtable
+for a template class.
+
+With -fcheck-new, g++ will check the return value of all calls to
+operator new, and not attempt to modify a returned null pointer.
+
+The template instantiation code now handles more conversions when
+passing to a parameter that does not depend on template arguments.
+This means that code like 'string s; cout << s;' now works.
+
+Invalid jumps in a switch statement past declarations that require
+initializations are now caught.
+
+Functions declared 'extern inline' now have the same linkage semantics
+as inline member functions. On supported targets, where previously
+these functions (and vtables, and template instantiations) would have
+been defined statically, they will now be defined as weak symbols so
+that only one out-of-line definition is used.
+
+collect2 now demangles linker output, and c++filt has become part of
+the gcc distribution.
+
+Noteworthy changes in GCC version 2.6.3:
+
+A few more bugs have been fixed.
+
+Noteworthy changes in GCC version 2.6.2:
+
+A few bugs have been fixed.
+
+Names of attributes can now be preceded and followed by double underscores.
+
+Noteworthy changes in GCC version 2.6.1:
+
+Numerous (mostly minor) bugs have been fixed.
+
+The following new configurations are supported:
+
+ GNU on x86 (instead of treating it like MACH)
+ NetBSD on Sparc and Motorola 68k
+ AIX 4.1 on RS/6000 and PowerPC systems
+ Sequent DYNIX/ptx 1.x and 2.x.
+ Both COFF and ELF configurations on AViiON without using /bin/gcc
+ Windows/NT on x86 architecture; preliminary
+ AT&T DSP1610 digital signal processor chips
+ i960 systems on bare boards using COFF
+ PDP11; target only and not extensively tested
+
+The -pg option is now supported for Alpha under OSF/1 V3.0 or later.
+
+Files with an extension of ".c++" are treated as C++ code.
+
+The -Xlinker and -Wl arguments are now passed to the linker in the
+position they were specified on the command line. This makes it
+possible, for example, to pass flags to the linker about specific
+object files.
+
+The use of positional arguments to the configure script is no longer
+recommended. Use --target= to specify the target; see the GCC manual.
+
+The 386 now supports two new switches: -mreg-alloc=<string> changes
+the default register allocation order used by the compiler, and
+-mno-wide-multiply disables the use of the mul/imul instructions that
+produce 64 bit results in EAX:EDX from 32 bit operands to do long long
+multiplies and 32-bit division by constants.
+
+Noteworthy changes in GCC version 2.6.0:
+
+Numerous bugs have been fixed, in the C and C++ front-ends, as
+well as in the common compiler code.
+
+This release includes the C, Objective-C, and C++ compilers. However,
+we have moved the files for the C++ compiler (G++) files to a
+subdirectory, cp. Subsequent releases of GCC will split these files
+to a separate TAR file.
+
+The G++ team has been tracking the development of the ANSI standard for C++.
+Here are some new features added from the latest working paper:
+
+ * built-in boolean type 'bool', with constants 'true' and 'false'.
+ * array new and delete (operator new [] and delete []).
+ * WP-conforming lifetime of temporaries.
+ * explicit instantiation of templates (template class A<int>;),
+ along with an option (-fno-implicit-templates) to disable emission
+ of implicitly instantiated templates, obsoletes -fexternal-templates.
+ * static member constants (static const int foo = 4; within the
+ class declaration).
+
+Many error messages have been improved to tell the user more about the
+problem. Conformance checking with -pedantic-errors has been
+improved. G++ now compiles Fresco.
+
+There is now an experimental implementation of virtual functions using
+thunks instead of Cfront-style vtables, enabled with -fvtable-thunks.
+This option also enables a heuristic which causes the compiler to only
+emit the vtable in the translation unit where its first non-inline
+virtual function is defined; using this option and
+-fno-implicit-templates, users should be able to avoid #pragma
+interface/implementation altogether.
+
+Signatures have been added as a GNU C++ extension. Using the option
+-fhandle-signatures, users are able to turn on recognition of
+signatures. A short introduction on signatures is in the section
+`Extension to the C++ Language' in the manual.
+
+The `g++' program is now a C program, rather than a shell script.
+
+Lots and lots and lots of bugs fixes, in nested types, access control,
+pointers to member functions, the parser, templates, overload
+resolution, etc, etc.
+
+There have been two major enhancements to the Objective-C compiler:
+
+1) Added portability. It now runs on Alpha, and some problems with
+ message forwarding have been addressed on other platforms.
+
+2) Selectors have been redefined to be pointers to structs like:
+ { void *sel_id, char *sel_types }, where the sel_id is the unique
+ identifier, the selector itself is no longer unique.
+
+ Programmers should use the new function sel_eq to test selector
+ equivalence.
+
+The following major changes have been made to the base compiler and
+machine-specific files.
+
+- The MIL-STD-1750A is a new port, but still preliminary.
+
+- The h8/300h is now supported; both the h8/300 and h8/300h ports come
+ with 32 bit IEEE 754 software floating point support.
+
+- The 64-bit Sparc (v9) and 64-bit MIPS chips are supported.
+
+- NetBSD is supported on m68k, Intel x86, and pc523 systems and FreeBSD
+ on x86.
+
+- COFF is supported on x86, m68k, and Sparc systems running LynxOS.
+
+- 68K systems from Bull and Concurrent are supported and System V
+ Release 4 is supported on the Atari.
+
+- GCC supports GAS on the Motorola 3300 (sysV68) and debugging
+ (assuming GAS) on the Plexus 68K system. (However, GAS does not yet
+ work on those systems).
+
+- System V Release 4 is supported on MIPS (Tandem).
+
+- For DG/UX, an ELF configuration is now supported, and both the ELF
+ and BCS configurations support ELF and COFF object file formats.
+
+- OSF/1 V2.0 is supported on Alpha.
+
+- Function profiling is also supported on Alpha.
+
+- GAS and GDB is supported for Irix 5 (MIPS).
+
+- "common mode" (code that will run on both POWER and PowerPC
+ architectures) is now supported for the RS/6000 family; the
+ compiler knows about more PPC chips.
+
+- Both NeXTStep 2.1 and 3 are supported on 68k-based architectures.
+
+- On the AMD 29k, the -msoft-float is now supported, as well as
+ -mno-sum-in-toc for RS/6000, -mapp-regs and -mflat for Sparc, and
+ -membedded-pic for MIPS.
+
+- GCC can now convert division by integer constants into the equivalent
+ multiplication and shift operations when that is faster than the
+ division.
+
+- Two new warning options, -Wbad-function-cast and
+ -Wmissing-declarations have been added.
+
+- Configurations may now add machine-specific __attribute__ options on
+ type; many machines support the `section' attribute.
+
+- The -ffast-math flag permits some optimization that violate strict
+ IEEE rules, such as converting X * 0.0 to 0.0.
+
+Noteworthy changes in GCC version 2.5.8:
+
+This release only fixes a few serious bugs. These include fixes for a
+bug that prevented most programs from working on the RS/6000, a bug
+that caused invalid assembler code for programs with a `switch'
+statement on the NS32K, a G++ problem that caused undefined names in
+some configurations, and several less serious problems, some of which
+can affect most configuration.
+
+Noteworthy change in GCC version 2.5.7:
+
+This release only fixes a few bugs, one of which was causing bootstrap
+compare errors on some systems.
+
+Noteworthy change in GCC version 2.5.6:
+
+A few backend bugs have been fixed, some of which only occur on one
+machine.
+
+The C++ compiler in 2.5.6 includes:
+
+ * fixes for some common crashes
+ * correct handling of nested types that are referenced as `foo::bar'
+ * spurious warnings about friends being declared static and never
+ defined should no longer appear
+ * enums that are local to a method in a class, or a class that's
+ local to a function, are now handled correctly. For example:
+ class foo { void bar () { enum { x, y } E; x; } };
+ void bar () { class foo { enum { x, y } E; E baz; }; }
+
+Noteworthy change in GCC version 2.5.5:
+
+A large number of C++ bugs have been fixed.
+
+The fixproto script adds prototypes conditionally on __cplusplus.
+
+Noteworthy change in GCC version 2.5.4:
+
+A bug fix in passing of structure arguments for the HP-PA architecture
+makes code compiled with GCC 2.5.4 incompatible with code compiled
+with earlier versions (if it passes struct arguments of 33 to 64 bits,
+interspersed with other types of arguments).
+
+Noteworthy change in gcc version 2.5.3:
+
+The method of "mangling" C++ function names has been changed. So you
+must recompile all C++ programs completely when you start using GCC
+2.5. Also, GCC 2.5 requires libg++ version 2.5. Earlier libg++
+versions won't work with GCC 2.5. (This is generally true--GCC
+version M.N requires libg++ version M.N.)
+
+Noteworthy GCC changes in version 2.5:
+
+* There is now support for the IBM 370 architecture as a target.
+Currently the only operating system supported is MVS; GCC does not run
+on MVS, so you must produce .s files using GCC as a cross compiler,
+then transfer them to MVS to assemble them. This port is not reliable
+yet.
+
+* The Power PC is now supported.
+
+* The i860-based Paragon machine is now supported.
+
+* The Hitachi 3050 (an HP-PA machine) is now supported.
+
+* The variable __GNUC_MINOR__ holds the minor version number of GCC, as
+an integer. For version 2.5.X, the value is 5.
+
+* In C, initializers for static and global variables are now processed
+an element at a time, so that they don't need a lot of storage.
+
+* The C syntax for specifying which structure field comes next in an
+initializer is now `.FIELDNAME='. The corresponding syntax for
+array initializers is now `[INDEX]='. For example,
+
+ char whitespace[256]
+ = { [' '] = 1, ['\t'] = 1, ['\n'] = 1 };
+
+This was changed to accord with the syntax proposed by the Numerical
+C Extensions Group (NCEG).
+
+* Complex numbers are now supported in C. Use the keyword __complex__
+to declare complex data types. See the manual for details.
+
+* GCC now supports `long double' meaningfully on the Sparc (128-bit
+floating point) and on the 386 (96-bit floating point). The Sparc
+support is enabled on Solaris 2.x because earlier system versions
+(SunOS 4) have bugs in the emulation.
+
+* All targets now have assertions for cpu, machine and system. So you
+can now use assertions to distinguish among all supported targets.
+
+* Nested functions in C may now be inline. Just declare them inline
+in the usual way.
+
+* Packed structure members are now supported fully; it should be possible
+to access them on any supported target, no matter how little alignment
+they have.
+
+* To declare that a function does not return, you must now write
+something like this (works only in 2.5):
+
+ void fatal () __attribute__ ((noreturn));
+
+or like this (works in older versions too):
+
+ typedef void voidfn ();
+
+ volatile voidfn fatal;
+
+It used to be possible to do so by writing this:
+
+ volatile void fatal ();
+
+but it turns out that ANSI C requires that to mean something
+else (which is useless).
+
+Likewise, to declare that a function is side-effect-free
+so that calls may be deleted or combined, write
+something like this (works only in 2.5):
+
+ int computation () __attribute__ ((const));
+
+or like this (works in older versions too):
+
+ typedef int intfn ();
+
+ const intfn computation;
+
+* The new option -iwithprefixbefore specifies a directory to add to
+the search path for include files in the same position where -I would
+put it, but uses the specified prefix just like -iwithprefix.
+
+* Basic block profiling has been enhanced to record the function the
+basic block comes from, and if the module was compiled for debugging,
+the line number and filename. A default version of the basic block
+support module has been added to libgcc2 that appends the basic block
+information to a text file 'bb.out'. Machine descriptions can now
+override the basic block support module in the target macro file.
+
+New features in g++:
+
+* The new flag `-fansi-overloading' for C++. Use a newly implemented
+scheme of argument matching for C++. It makes g++ more accurately
+obey the rules set down in Chapter 13 of the Annotated C++ Reference
+Manual (the ARM). This option will be turned on by default in a
+future release.
+
+* The -finline-debug flag is now gone (it was never really used by the
+ compiler).
+
+* Recognizing the syntax for pointers to members, e.g., "foo::*bar", has been
+ dramatically improved. You should not get any syntax errors or incorrect
+ runtime results while using pointers to members correctly; if you do, it's
+ a definite bug.
+
+* Forward declaration of an enum is now flagged as an error.
+
+* Class-local typedefs are now working properly.
+
+* Nested class support has been significantly improved. The compiler
+ will now (in theory) support up to 240 nested classes before hitting
+ other system limits (like memory size).
+
+* There is a new C version of the `g++' driver, to replace the old
+ shell script. This should significantly improve the performance of
+ executing g++ on a system where a user's PATH environment variable
+ references many NFS-mounted filesystems. This driver also works
+ under MS-DOS and OS/2.
+
+* The ANSI committee working on the C++ standard has adopted a new
+ keyword `mutable'. This will allow you to make a specific member be
+ modifiable in an otherwise const class.
+
+Noteworthy GCC changes in version 2.4.4:
+
+ A crash building g++ on various hosts (including m68k) has been
+ fixed. Also the g++ compiler no longer reports incorrect
+ ambiguities in some situations where they do not exist, and
+ const template member functions are now being found properly.
+
+Noteworthy GCC changes in version 2.4:
+
+* On each target, the default is now to return short structures
+compatibly with the "usual" compiler on that target.
+
+For most targets, this means the default is to return all structures
+in memory, like long structures, in whatever way is used on that
+target. Use -freg-struct-return to enable returning short structures
+(and unions) in registers.
+
+This change means that newly compiled binaries are incompatible with
+binaries compiled with previous versions of GCC.
+
+On some targets, GCC is itself the usual compiler. On these targets,
+the default way to return short structures is still in registers.
+Use -fpcc-struct-return to tell GCC to return them in memory.
+
+* There is now a floating point emulator which can imitate the way all
+supported target machines do floating point arithmetic.
+
+This makes it possible to have cross compilation to and from the VAX,
+and between machines of different endianness. However, this works
+only when the target machine description is updated to use the new
+facilities, and not all have been updated.
+
+This also makes possible support for longer floating point types.
+GCC 2.4 supports extended format on the 68K if you use `long double',
+for targets that have a 68881. (When we have run time library
+routines for extended floating point, then `long double' will use
+extended format on all 68K targets.)
+
+We expect to support extended floating point on the i386 and Sparc in
+future versions.
+
+* Building GCC now automatically fixes the system's header files.
+This should require no attention.
+
+* GCC now installs an unsigned data type as size_t when it fixes the
+header files (on all but a handful of old target machines).
+Therefore, the bug that size_t failed to be unsigned is fixed.
+
+* Building and installation are now completely separate.
+All new files are constructed during the build process;
+installation just copies them.
+
+* New targets supported: Clipper, Hitachi SH, Hitachi 8300, and Sparc
+Lite.
+
+* A totally new and much better Objective C run time system is included.
+
+* Objective C supports many new features. Alas, I can't describe them
+since I don't use that language; however, they are the same ones
+supported in recent versions of the NeXT operating system.
+
+* The builtin functions __builtin_apply_args, __builtin_apply and
+__builtin_return let you record the arguments and returned
+value of a function without knowing their number or type.
+
+* The builtin string variables __FUNCTION__ and __PRETTY_FUNCTION__
+give the name of the function in the source, and a pretty-printed
+version of the name. The two are the same in C, but differ in C++.
+
+* Casts to union types do not yield lvalues.
+
+* ## before an empty rest argument discards the preceding sequence
+of non-whitespace characters from the macro definition.
+(This feature is subject to change.)
+
+
+New features specific to C++:
+
+* The manual contains a new section ``Common Misunderstandings with
+GNU C++'' that C++ users should read.
+
+* #pragma interface and #pragma implementation let you use the same
+C++ source file for both interface and implementation.
+However, this mechanism is still in transition.
+
+* Named returned values let you avoid an extra constructor call
+when a function result has a class type.
+
+* The C++ operators <? and >? yield min and max, respectively.
+
+* C++ gotos can exit a block safely even if the block has
+aggregates that require destructors.
+
+* gcc defines the macro __GNUG__ when compiling C++ programs.
+
+* GNU C++ now correctly distinguishes between the prefix and postfix
+forms of overloaded operator ++ and --. To avoid breaking old
+code, if a class defines only the prefix form, the compiler
+accepts either ++obj or obj++, unless -pedantic is used.
+
+* If you are using version 2.3 of libg++, you need to rebuild it with
+`make CC=gcc' to avoid mismatches in the definition of `size_t'.
+
+Newly documented compiler options:
+
+-fnostartfiles
+ Omit the standard system startup files when linking.
+
+-fvolatile-global
+ Consider memory references to extern and global data items to
+ be volatile.
+
+-idirafter DIR
+ Add DIR to the second include path.
+
+-iprefix PREFIX
+ Specify PREFIX for later -iwithprefix options.
+
+-iwithprefix DIR
+ Add PREFIX/DIR to the second include path.
+
+-mv8
+ Emit Sparc v8 code (with integer multiply and divide).
+-msparclite
+ Emit Sparclite code (roughly v7.5).
+
+-print-libgcc-file-name
+ Search for the libgcc.a file, print its absolute file name, and exit.
+
+-Woverloaded-virtual
+ Warn when a derived class function declaration may be an error
+ in defining a C++ virtual function.
+
+-Wtemplate-debugging
+ When using templates in a C++ program, warn if debugging is
+ not yet fully available.
+
++eN
+ Control how C++ virtual function definitions are used
+ (like cfront 1.x).
+
diff --git a/gnu/egcs/gcc/README b/gnu/egcs/gcc/README
index a12bf759463..fe0ac0b9f62 100644
--- a/gnu/egcs/gcc/README
+++ b/gnu/egcs/gcc/README
@@ -1,8 +1,8 @@
-This directory contains the GNU Compiler Collection (GCC) version 2.95.
-It includes all of the support for compiling C, C++, Objective C, Fortran,
-Java, and Chill.
+This directory contains the egcs version 1.1 release of the GNU C
+compiler. It includes all of the support for compiling C++ and
+Objective C, including a run-time library for Objective C.
-The GNU Compiler Collection is free software. See the file COPYING for copying
+The GNU C compiler is free software. See the file COPYING for copying
permission.
See the file gcc.texi (together with other files that it includes) for
diff --git a/gnu/egcs/gcc/acconfig.h b/gnu/egcs/gcc/acconfig.h
index d702b0e0222..68bee4f7cbd 100644
--- a/gnu/egcs/gcc/acconfig.h
+++ b/gnu/egcs/gcc/acconfig.h
@@ -93,9 +93,6 @@
/* Whether strsignal must be declared even if <string.h> is included. */
#undef NEED_DECLARATION_STRSIGNAL
-/* Whether strstr must be declared even if <string.h> is included. */
-#undef NEED_DECLARATION_STRSTR
-
/* Whether getcwd must be declared even if <unistd.h> is included. */
#undef NEED_DECLARATION_GETCWD
diff --git a/gnu/egcs/gcc/alias.c b/gnu/egcs/gcc/alias.c
index e8bf04e00df..3bfb4400486 100644
--- a/gnu/egcs/gcc/alias.c
+++ b/gnu/egcs/gcc/alias.c
@@ -1,5 +1,5 @@
/* Alias analysis for GNU C
- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
Contributed by John Carr (jfc@mit.edu).
This file is part of GNU CC.
@@ -746,55 +746,10 @@ find_base_term (x)
case PLUS:
case MINUS:
{
- rtx tmp1 = XEXP (x, 0);
- rtx tmp2 = XEXP (x, 1);
-
- /* This is a litle bit tricky since we have to determine which of
- the two operands represents the real base address. Otherwise this
- routine may return the index register instead of the base register.
-
- That may cause us to believe no aliasing was possible, when in
- fact aliasing is possible.
-
- We use a few simple tests to guess the base register. Additional
- tests can certainly be added. For example, if one of the operands
- is a shift or multiply, then it must be the index register and the
- other operand is the base register. */
-
- /* If either operand is known to be a pointer, then use it
- to determine the base term. */
- if (REG_P (tmp1) && REGNO_POINTER_FLAG (REGNO (tmp1)))
- return find_base_term (tmp1);
-
- if (REG_P (tmp2) && REGNO_POINTER_FLAG (REGNO (tmp2)))
- return find_base_term (tmp2);
-
- /* Neither operand was known to be a pointer. Go ahead and find the
- base term for both operands. */
- tmp1 = find_base_term (tmp1);
- tmp2 = find_base_term (tmp2);
-
- /* If either base term is named object or a special address
- (like an argument or stack reference), then use it for the
- base term. */
- if (tmp1
- && (GET_CODE (tmp1) == SYMBOL_REF
- || GET_CODE (tmp1) == LABEL_REF
- || (GET_CODE (tmp1) == ADDRESS
- && GET_MODE (tmp1) != VOIDmode)))
- return tmp1;
-
- if (tmp2
- && (GET_CODE (tmp2) == SYMBOL_REF
- || GET_CODE (tmp2) == LABEL_REF
- || (GET_CODE (tmp2) == ADDRESS
- && GET_MODE (tmp2) != VOIDmode)))
- return tmp2;
-
- /* We could not determine which of the two operands was the
- base register and which was the index. So we can determine
- nothing from the base alias check. */
- return 0;
+ rtx tmp = find_base_term (XEXP (x, 0));
+ if (tmp)
+ return tmp;
+ return find_base_term (XEXP (x, 1));
}
case AND:
@@ -1455,6 +1410,15 @@ init_alias_analysis ()
new_reg_base_value[HARD_FRAME_POINTER_REGNUM]
= gen_rtx_ADDRESS (Pmode, hard_frame_pointer_rtx);
#endif
+ if (struct_value_incoming_rtx
+ && GET_CODE (struct_value_incoming_rtx) == REG)
+ new_reg_base_value[REGNO (struct_value_incoming_rtx)]
+ = gen_rtx_ADDRESS (Pmode, struct_value_incoming_rtx);
+
+ if (static_chain_rtx
+ && GET_CODE (static_chain_rtx) == REG)
+ new_reg_base_value[REGNO (static_chain_rtx)]
+ = gen_rtx_ADDRESS (Pmode, static_chain_rtx);
/* Walk the insns adding values to the new_reg_base_value array. */
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
diff --git a/gnu/egcs/gcc/c-lang.c b/gnu/egcs/gcc/c-lang.c
index 7da67986af1..4c554115b7c 100644
--- a/gnu/egcs/gcc/c-lang.c
+++ b/gnu/egcs/gcc/c-lang.c
@@ -175,9 +175,7 @@ finish_file ()
{
tree fnname = get_file_function_name ('I');
start_function (void_list_node,
- build_parse_node (CALL_EXPR, fnname,
- tree_cons (NULL_TREE, NULL_TREE,
- void_list_node),
+ build_parse_node (CALL_EXPR, fnname, void_list_node,
NULL_TREE),
NULL_TREE, NULL_TREE, 0);
fnname = DECL_ASSEMBLER_NAME (current_function_decl);
@@ -197,9 +195,7 @@ finish_file ()
{
tree fnname = get_file_function_name ('D');
start_function (void_list_node,
- build_parse_node (CALL_EXPR, fnname,
- tree_cons (NULL_TREE, NULL_TREE,
- void_list_node),
+ build_parse_node (CALL_EXPR, fnname, void_list_node,
NULL_TREE),
NULL_TREE, NULL_TREE, 0);
fnname = DECL_ASSEMBLER_NAME (current_function_decl);
diff --git a/gnu/egcs/gcc/c-pragma.c b/gnu/egcs/gcc/c-pragma.c
index 5aa8d9f2870..eedd0a13f0d 100644
--- a/gnu/egcs/gcc/c-pragma.c
+++ b/gnu/egcs/gcc/c-pragma.c
@@ -141,7 +141,7 @@ pop_alignment (id)
{
entry = alignment_stack->prev;
- if (entry == NULL)
+ if (entry == NULL || entry->alignment > 4)
maximum_field_alignment = 0;
else
maximum_field_alignment = entry->alignment * 8;
@@ -163,7 +163,6 @@ insert_pack_attributes (node, attributes, prefix)
tree * prefix;
{
tree a;
- int field_alignment;
/* If we are not packing, then there is nothing to do. */
if (maximum_field_alignment == 0
@@ -174,16 +173,12 @@ insert_pack_attributes (node, attributes, prefix)
if (TREE_CODE_CLASS (TREE_CODE (node)) != 'd'
|| TREE_CODE (node) != FIELD_DECL)
return;
-
- field_alignment = TYPE_ALIGN (TREE_TYPE (node));
- if (field_alignment <= 0 || field_alignment > maximum_field_alignment)
- field_alignment = maximum_field_alignment;
/* Add a 'packed' attribute. */
* attributes = tree_cons (get_identifier ("packed"), NULL, * attributes);
/* If the alignment is > 8 then add an alignment attribute as well. */
- if (field_alignment > 8)
+ if (maximum_field_alignment > 8)
{
/* If the aligned attribute is already present then do not override it. */
for (a = * attributes; a; a = TREE_CHAIN (a))
@@ -206,7 +201,7 @@ insert_pack_attributes (node, attributes, prefix)
* attributes = tree_cons
(get_identifier ("aligned"),
tree_cons (NULL,
- build_int_2 (field_alignment / 8, 0),
+ build_int_2 (maximum_field_alignment / 8, 0),
NULL),
* attributes);
}
@@ -388,17 +383,8 @@ handle_pragma_token (string, token)
case ps_left:
if (token == NULL_TREE)
- {
- /* #pragma pack () resets packing rules to their
- defaults. */
- if (strcmp (string, ")") == 0)
- {
- align = 0;
- state = ps_right;
- }
- else
- state = ps_bad;
- }
+ state = (strcmp (string, ")") ? ps_bad : ps_right);
+
else if (TREE_CODE (token) == INTEGER_CST)
goto handle_align;
diff --git a/gnu/egcs/gcc/config.in b/gnu/egcs/gcc/config.in
index c804a2b682e..0b14498ec93 100644
--- a/gnu/egcs/gcc/config.in
+++ b/gnu/egcs/gcc/config.in
@@ -94,9 +94,6 @@
/* Whether strsignal must be declared even if <string.h> is included. */
#undef NEED_DECLARATION_STRSIGNAL
-/* Whether strstr must be declared even if <string.h> is included. */
-#undef NEED_DECLARATION_STRSTR
-
/* Whether getcwd must be declared even if <unistd.h> is included. */
#undef NEED_DECLARATION_GETCWD
diff --git a/gnu/egcs/gcc/config/alpha/alpha.h b/gnu/egcs/gcc/config/alpha/alpha.h
index e9c3f6d2f68..857ba0d4832 100644
--- a/gnu/egcs/gcc/config/alpha/alpha.h
+++ b/gnu/egcs/gcc/config/alpha/alpha.h
@@ -95,76 +95,73 @@ extern enum alpha_fp_trap_mode alpha_fptm;
/* This means that floating-point support exists in the target implementation
of the Alpha architecture. This is usually the default. */
-#define MASK_FP (1 << 0)
+
+#define MASK_FP 1
#define TARGET_FP (target_flags & MASK_FP)
/* This means that floating-point registers are allowed to be used. Note
that Alpha implementations without FP operations are required to
provide the FP registers. */
-#define MASK_FPREGS (1 << 1)
+#define MASK_FPREGS 2
#define TARGET_FPREGS (target_flags & MASK_FPREGS)
/* This means that gas is used to process the assembler file. */
-#define MASK_GAS (1 << 2)
+#define MASK_GAS 4
#define TARGET_GAS (target_flags & MASK_GAS)
/* This means that we should mark procedures as IEEE conformant. */
-#define MASK_IEEE_CONFORMANT (1 << 3)
+#define MASK_IEEE_CONFORMANT 8
#define TARGET_IEEE_CONFORMANT (target_flags & MASK_IEEE_CONFORMANT)
/* This means we should be IEEE-compliant except for inexact. */
-#define MASK_IEEE (1 << 4)
+#define MASK_IEEE 16
#define TARGET_IEEE (target_flags & MASK_IEEE)
/* This means we should be fully IEEE-compliant. */
-#define MASK_IEEE_WITH_INEXACT (1 << 5)
+#define MASK_IEEE_WITH_INEXACT 32
#define TARGET_IEEE_WITH_INEXACT (target_flags & MASK_IEEE_WITH_INEXACT)
/* This means we must construct all constants rather than emitting
them as literal data. */
-#define MASK_BUILD_CONSTANTS (1 << 6)
+#define MASK_BUILD_CONSTANTS 128
#define TARGET_BUILD_CONSTANTS (target_flags & MASK_BUILD_CONSTANTS)
/* This means we handle floating points in VAX F- (float)
or G- (double) Format. */
-#define MASK_FLOAT_VAX (1 << 7)
+#define MASK_FLOAT_VAX 512
#define TARGET_FLOAT_VAX (target_flags & MASK_FLOAT_VAX)
/* This means that the processor has byte and half word loads and stores
(the BWX extension). */
-#define MASK_BWX (1 << 8)
+#define MASK_BWX 1024
#define TARGET_BWX (target_flags & MASK_BWX)
-/* This means that the processor has the MAX extension. */
-#define MASK_MAX (1 << 9)
-#define TARGET_MAX (target_flags & MASK_MAX)
-
-/* This means that the processor has the FIX extension. */
-#define MASK_FIX (1 << 10)
-#define TARGET_FIX (target_flags & MASK_FIX)
-
/* This means that the processor has the CIX extension. */
-#define MASK_CIX (1 << 11)
+#define MASK_CIX 2048
#define TARGET_CIX (target_flags & MASK_CIX)
+/* This means that the processor has the MAX extension. */
+#define MASK_MAX 4096
+#define TARGET_MAX (target_flags & MASK_MAX)
+
/* This means that the processor is an EV5, EV56, or PCA56. This is defined
only in TARGET_CPU_DEFAULT. */
-#define MASK_CPU_EV5 (1 << 28)
+#define MASK_CPU_EV5 8192
/* Likewise for EV6. */
-#define MASK_CPU_EV6 (1 << 29)
+#define MASK_CPU_EV6 16384
/* This means we support the .arch directive in the assembler. Only
defined in TARGET_CPU_DEFAULT. */
-#define MASK_SUPPORT_ARCH (1 << 30)
+#define MASK_SUPPORT_ARCH 32768
#define TARGET_SUPPORT_ARCH (target_flags & MASK_SUPPORT_ARCH)
/* These are for target os support and cannot be changed at runtime. */
@@ -207,12 +204,10 @@ extern enum alpha_fp_trap_mode alpha_fptm;
{"float-ieee", -MASK_FLOAT_VAX, "Do not use VAX fp"}, \
{"bwx", MASK_BWX, "Emit code for the byte/word ISA extension"}, \
{"no-bwx", -MASK_BWX, ""}, \
- {"max", MASK_MAX, "Emit code for the motion video ISA extension"}, \
- {"no-max", -MASK_MAX, ""}, \
- {"fix", MASK_FIX, "Emit code for the fp move and sqrt ISA extension"}, \
- {"no-fix", -MASK_FIX, ""}, \
{"cix", MASK_CIX, "Emit code for the counting ISA extension"}, \
{"no-cix", -MASK_CIX, ""}, \
+ {"max", MASK_MAX, "Emit code for the motion video ISA extension"}, \
+ {"no-max", -MASK_MAX, ""}, \
{"", TARGET_DEFAULT | TARGET_CPU_DEFAULT, ""} }
#define TARGET_DEFAULT MASK_FP|MASK_FPREGS
@@ -263,7 +258,6 @@ extern const char *alpha_mlat_string; /* For -mmemory-latency= */
/* Corresponding to amask... */
#define CPP_AM_BWX_SPEC "-D__alpha_bwx__ -Acpu(bwx)"
#define CPP_AM_MAX_SPEC "-D__alpha_max__ -Acpu(max)"
-#define CPP_AM_FIX_SPEC "-D__alpha_fix__ -Acpu(fix)"
#define CPP_AM_CIX_SPEC "-D__alpha_cix__ -Acpu(cix)"
/* Corresponding to implver... */
@@ -276,7 +270,7 @@ extern const char *alpha_mlat_string; /* For -mmemory-latency= */
#define CPP_CPU_EV5_SPEC "%(cpp_im_ev5)"
#define CPP_CPU_EV56_SPEC "%(cpp_im_ev5) %(cpp_am_bwx)"
#define CPP_CPU_PCA56_SPEC "%(cpp_im_ev5) %(cpp_am_bwx) %(cpp_am_max)"
-#define CPP_CPU_EV6_SPEC "%(cpp_im_ev6) %(cpp_am_bwx) %(cpp_am_max) %(cpp_am_fix)"
+#define CPP_CPU_EV6_SPEC "%(cpp_im_ev6) %(cpp_am_bwx) %(cpp_am_max) %(cpp_am_cix)"
#ifndef CPP_CPU_DEFAULT_SPEC
# if TARGET_CPU_DEFAULT & MASK_CPU_EV6
@@ -326,7 +320,6 @@ extern const char *alpha_mlat_string; /* For -mmemory-latency= */
#define EXTRA_SPECS \
{ "cpp_am_bwx", CPP_AM_BWX_SPEC }, \
{ "cpp_am_max", CPP_AM_MAX_SPEC }, \
- { "cpp_am_fix", CPP_AM_FIX_SPEC }, \
{ "cpp_am_cix", CPP_AM_CIX_SPEC }, \
{ "cpp_im_ev4", CPP_IM_EV4_SPEC }, \
{ "cpp_im_ev5", CPP_IM_EV5_SPEC }, \
@@ -855,10 +848,10 @@ extern int normal_memory_operand ();
: NO_REGS)
/* If we are copying between general and FP registers, we need a memory
- location unless the FIX extension is available. */
+ location unless the CIX extension is available. */
#define SECONDARY_MEMORY_NEEDED(CLASS1,CLASS2,MODE) \
- (! TARGET_FIX && (CLASS1) != (CLASS2))
+ (! TARGET_CIX && (CLASS1) != (CLASS2))
/* Specify the mode to be used for memory when a secondary memory
location is needed. If MODE is floating-point, use it. Otherwise,
@@ -891,7 +884,7 @@ extern int normal_memory_operand ();
#define REGISTER_MOVE_COST(CLASS1, CLASS2) \
(((CLASS1) == FLOAT_REGS) == ((CLASS2) == FLOAT_REGS) \
? 2 \
- : TARGET_FIX ? 3 : 4+2*alpha_memory_latency)
+ : TARGET_CIX ? 3 : 4+2*alpha_memory_latency)
/* A C expressions returning the cost of moving data of MODE from a register to
or from memory.
@@ -2145,11 +2138,6 @@ literal_section () \
} \
while (0)
-/* To get unaligned data, we have to turn off auto alignment. */
-#define UNALIGNED_SHORT_ASM_OP ".align 0\n\t.word"
-#define UNALIGNED_INT_ASM_OP ".align 0\n\t.long"
-#define UNALIGNED_DOUBLE_INT_ASM_OP ".align 0\n\t.quad"
-
/* This is how to output an insn to push a register on the stack.
It need not be very fast code. */
diff --git a/gnu/egcs/gcc/config/alpha/elf.h b/gnu/egcs/gcc/config/alpha/elf.h
index 6cea3da5d5b..b90ce9fa914 100644
--- a/gnu/egcs/gcc/config/alpha/elf.h
+++ b/gnu/egcs/gcc/config/alpha/elf.h
@@ -58,7 +58,7 @@ do { \
} \
fprintf (FILE, "\t.set noat\n"); \
fprintf (FILE, "\t.set noreorder\n"); \
- if (TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) \
+ if (TARGET_BWX | TARGET_MAX | TARGET_CIX) \
{ \
fprintf (FILE, "\t.arch %s\n", \
(alpha_cpu == PROCESSOR_EV6 ? "ev6" \
@@ -526,9 +526,3 @@ do { \
/* We support #pragma. */
#define HANDLE_SYSV_PRAGMA
-
-/* Undo the auto-alignment stuff from alpha.h. ELF has unaligned data
- pseudos natively. */
-#undef UNALIGNED_SHORT_ASM_OP
-#undef UNALIGNED_INT_ASM_OP
-#undef UNALIGNED_DOUBLE_INT_ASM_OP
diff --git a/gnu/egcs/gcc/config/alpha/osf.h b/gnu/egcs/gcc/config/alpha/osf.h
index 5054444a759..956961f7cf3 100644
--- a/gnu/egcs/gcc/config/alpha/osf.h
+++ b/gnu/egcs/gcc/config/alpha/osf.h
@@ -30,19 +30,9 @@ Boston, MA 02111-1307, USA. */
-Dunix -D__osf__ -D_LONGLONG -DSYSTYPE_BSD \
-D_SYSTYPE_BSD -Asystem(unix) -Asystem(xpg4)"
-/* Accept DEC C flags for multithreaded programs. We use _PTHREAD_USE_D4
- instead of PTHREAD_USE_D4 since both have the same effect and the former
- doesn't invade the users' namespace. */
-
-#undef CPP_SUBTARGET_SPEC
-#define CPP_SUBTARGET_SPEC \
-"%{pthread|threads:-D_REENTRANT} %{threads:-D_PTHREAD_USE_D4}"
-
/* Under OSF4, -p and -pg require -lprof1, and -lprof1 requires -lpdf. */
-#define LIB_SPEC \
-"%{p|pg:-lprof1%{pthread|threads:_r} -lpdf} %{a:-lprof2} \
- %{threads: -lpthreads} %{pthread|threads: -lpthread -lmach -lexc} -lc"
+#define LIB_SPEC "%{p:-lprof1 -lpdf} %{pg:-lprof1 -lpdf} %{a:-lprof2} -lc"
/* Pass "-G 8" to ld because Alpha's CC does. Pass -O3 if we are
optimizing, -O1 if we are not. Pass -shared, -non_shared or
diff --git a/gnu/egcs/gcc/config/alpha/vms.h b/gnu/egcs/gcc/config/alpha/vms.h
index 44388b2cf33..44cf5bf82df 100644
--- a/gnu/egcs/gcc/config/alpha/vms.h
+++ b/gnu/egcs/gcc/config/alpha/vms.h
@@ -439,6 +439,10 @@ extern int vms_valid_decl_attribute_p ();
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
fprintf (FILE, "\t.align %d\n", LOG);
+#define UNALIGNED_SHORT_ASM_OP ".word"
+#define UNALIGNED_INT_ASM_OP ".long"
+#define UNALIGNED_DOUBLE_INT_ASM_OP ".quad"
+
#define ASM_OUTPUT_SECTION(FILE,SECTION) \
(strcmp (SECTION, ".text") == 0) \
? text_section () \
diff --git a/gnu/egcs/gcc/config/arm/aout.h b/gnu/egcs/gcc/config/arm/aout.h
index df1694aa9ca..2e341b768a6 100644
--- a/gnu/egcs/gcc/config/arm/aout.h
+++ b/gnu/egcs/gcc/config/arm/aout.h
@@ -236,7 +236,6 @@ do { char dstr[30]; \
fprintf (STREAM, "\t.space\t%d\n", NBYTES)
/* Align output to a power of two. Horrible /bin/as. */
-#ifndef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
do \
{ \
@@ -246,9 +245,7 @@ do { char dstr[30]; \
fprintf (STREAM, "\t.even\n"); \
else if (amount != 1) \
fprintf (STREAM, "\t.align\t%d\n", amount - 4); \
- } \
- while (0)
-#endif
+ } while (0)
/* Output a common block */
#ifndef ASM_OUTPUT_COMMON
diff --git a/gnu/egcs/gcc/config/arm/arm.c b/gnu/egcs/gcc/config/arm/arm.c
index fe7b41156e0..e2fe037ad56 100644
--- a/gnu/egcs/gcc/config/arm/arm.c
+++ b/gnu/egcs/gcc/config/arm/arm.c
@@ -1,6 +1,5 @@
/* Output routines for GCC for ARM.
- Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1991, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
and Martin Simmons (@harleqn.co.uk).
More major hacks by Richard Earnshaw (rearnsha@arm.com).
@@ -69,10 +68,7 @@ static int function_really_clobbers_lr PROTO ((rtx));
static void emit_multi_reg_push PROTO ((int));
static void emit_sfm PROTO ((int, int));
static enum arm_cond_code get_arm_condition_code PROTO ((rtx));
-static int const_ok_for_op RTX_CODE_PROTO ((HOST_WIDE_INT, Rcode));
-
-/* True if we are currently building a constant table. */
-int making_const_table;
+static int const_ok_for_op RTX_CODE_PROTO ((Hint, Rcode));
/* Define the information needed to generate branch insns. This is
stored from the compare operation. */
@@ -487,18 +483,25 @@ arm_override_options ()
if (flag_pic && ! TARGET_APCS_STACK)
arm_pic_register = 10;
+ /* Well, I'm about to have a go, but pic is NOT going to be compatible
+ with APCS reentrancy, since that requires too much support in the
+ assembler and linker, and the ARMASM assembler seems to lack some
+ required directives. */
+ if (flag_pic)
+ warning ("Position independent code not supported");
+
if (TARGET_APCS_FLOAT)
warning ("Passing floating point arguments in fp regs not yet supported");
/* Initialise boolean versions of the flags, for use in the arm.md file. */
- arm_fast_multiply = (insn_flags & FL_FAST_MULT) != 0;
- arm_arch4 = (insn_flags & FL_ARCH4) != 0;
+ arm_fast_multiply = insn_flags & FL_FAST_MULT;
+ arm_arch4 = insn_flags & FL_ARCH4;
- arm_ld_sched = (tune_flags & FL_LDSCHED) != 0;
- arm_is_strong = (tune_flags & FL_STRONG) != 0;
+ arm_ld_sched = tune_flags & FL_LDSCHED;
+ arm_is_strong = tune_flags & FL_STRONG;
arm_is_6_or_7 = ((tune_flags & (FL_MODE26 | FL_MODE32))
&& !(tune_flags & FL_ARCH4));
-
+
/* Default value for floating point code... if no co-processor
bus, then schedule for emulated floating point. Otherwise,
assume the user has an FPA.
@@ -577,14 +580,9 @@ use_return_insn (iscond)
return 0;
if ((iscond && arm_is_strong)
|| TARGET_THUMB_INTERWORK)
- {
- for (regno = 0; regno < 16; regno++)
- if (regs_ever_live[regno] && ! call_used_regs[regno])
- return 0;
-
- if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
+ for (regno = 0; regno < 16; regno++)
+ if (regs_ever_live[regno] && ! call_used_regs[regno])
return 0;
- }
/* Can't be done if any of the FPU regs are pushed, since this also
requires an insn */
@@ -1565,11 +1563,8 @@ arm_finalize_pic ()
/* On the ARM the PC register contains 'dot + 8' at the time of the
addition. */
pic_tmp = plus_constant (gen_rtx_LABEL_REF (Pmode, l1), 8);
- if (GOT_PCREL)
- pic_tmp2 = gen_rtx_CONST (VOIDmode,
+ pic_tmp2 = gen_rtx_CONST (VOIDmode,
gen_rtx_PLUS (Pmode, global_offset_table, pc_rtx));
- else
- pic_tmp2 = gen_rtx_CONST (VOIDmode, global_offset_table);
pic_rtx = gen_rtx_CONST (Pmode, gen_rtx_MINUS (Pmode, pic_tmp2, pic_tmp));
@@ -3703,7 +3698,7 @@ arm_reload_in_hi (operands)
gen_rtx_MEM (QImode,
plus_constant (base,
offset + 1))));
- if (! BYTES_BIG_ENDIAN)
+ if (BYTES_BIG_ENDIAN)
emit_insn (gen_rtx_SET (VOIDmode, gen_rtx_SUBREG (SImode, operands[0], 0),
gen_rtx_IOR (SImode,
gen_rtx_ASHIFT
@@ -5318,9 +5313,6 @@ output_return_instruction (operand, really_return, reverse)
if (regs_ever_live[reg] && ! call_used_regs[reg])
live_regs++;
- if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
- live_regs++;
-
if (live_regs || (regs_ever_live[14] && ! lr_save_eliminated))
live_regs++;
@@ -5340,9 +5332,7 @@ output_return_instruction (operand, really_return, reverse)
reverse ? "ldm%?%D0fd\t%|sp!, {" : "ldm%?%d0fd\t%|sp!, {");
for (reg = 0; reg <= 10; reg++)
- if (regs_ever_live[reg]
- && (! call_used_regs[reg]
- || (flag_pic && reg == PIC_OFFSET_TABLE_REGNUM)))
+ if (regs_ever_live[reg] && ! call_used_regs[reg])
{
strcat (instr, "%|");
strcat (instr, reg_names[reg]);
@@ -5502,9 +5492,6 @@ output_func_prologue (f, frame_size)
if (regs_ever_live[reg] && ! call_used_regs[reg])
live_regs_mask |= (1 << reg);
- if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
- live_regs_mask |= (1 << PIC_OFFSET_TABLE_REGNUM);
-
if (frame_pointer_needed)
live_regs_mask |= 0xD800;
else if (regs_ever_live[14])
@@ -5581,12 +5568,6 @@ output_func_epilogue (f, frame_size)
floats_offset += 4;
}
- if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
- {
- live_regs_mask |= (1 << PIC_OFFSET_TABLE_REGNUM);
- floats_offset += 4;
- }
-
if (frame_pointer_needed)
{
if (arm_fpu_arch == FP_SOFT2)
@@ -5847,17 +5828,12 @@ arm_expand_prologue ()
store_arg_regs = 1;
if (! volatile_func)
- {
- for (reg = 0; reg <= 10; reg++)
- if (regs_ever_live[reg] && ! call_used_regs[reg])
- live_regs_mask |= 1 << reg;
+ for (reg = 0; reg <= 10; reg++)
+ if (regs_ever_live[reg] && ! call_used_regs[reg])
+ live_regs_mask |= 1 << reg;
- if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
- live_regs_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
-
- if (regs_ever_live[14])
- live_regs_mask |= 0x4000;
- }
+ if (! volatile_func && regs_ever_live[14])
+ live_regs_mask |= 0x4000;
if (frame_pointer_needed)
{
diff --git a/gnu/egcs/gcc/config/arm/arm.h b/gnu/egcs/gcc/config/arm/arm.h
index 02f0656befb..0c6131b6d93 100644
--- a/gnu/egcs/gcc/config/arm/arm.h
+++ b/gnu/egcs/gcc/config/arm/arm.h
@@ -1,6 +1,5 @@
/* Definitions of target machine for GNU compiler, for ARM.
- Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1991, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
and Martin Simmons (@harleqn.co.uk).
More major hacks by Richard Earnshaw (rwe11@cl.cam.ac.uk)
@@ -481,25 +480,7 @@ extern int arm_is_6_or_7;
/* Nonzero if PIC code requires explicit qualifiers to generate
PLT and GOT relocs rather than the assembler doing so implicitly.
Subtargets can override this if required. */
-#ifndef NEED_PLT_GOT
#define NEED_PLT_GOT 0
-#endif
-
-/* Nonzero if we need to refer to the GOT with a PC-relative
- offset. In other words, generate
-
- .word _GLOBAL_OFFSET_TABLE_ - [. - (.Lxx + 8)]
-
- rather than
-
- .word _GLOBAL_OFFSET_TABLE_ - (.Lxx + 8)
-
- The default is true, which matches NetBSD. Subtargets can
- override this if required. */
-#ifndef GOT_PCREL
-#define GOT_PCREL 1
-#endif
-
/* Target machine storage Layout. */
@@ -727,7 +708,7 @@ extern const char * structure_size_string;
if (flag_pic) \
{ \
fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
- call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
+ call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 0; \
} \
else if (TARGET_APCS_STACK) \
{ \
@@ -1264,9 +1245,6 @@ do { \
for (regno = 0; regno <= 10; regno++) \
if (regs_ever_live[regno] && ! call_used_regs[regno]) \
saved_hard_reg = 1, offset += 4; \
- /* PIC register is a fixed reg, so call_used_regs set. */ \
- if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM]) \
- saved_hard_reg = 1, offset += 4; \
for (regno = 16; regno <=23; regno++) \
if (regs_ever_live[regno] && ! call_used_regs[regno]) \
offset += 12; \
@@ -1821,10 +1799,6 @@ extern int arm_pic_register;
&& (! CONSTANT_POOL_ADDRESS_P (X) \
|| ! symbol_mentioned_p (get_pool_constant (X))))
-/* We need to know when we are making a constant pool; this determines
- whether data needs to be in the GOT or can be referenced via a GOT
- offset. */
-extern int making_const_table;
/* Condition code information. */
@@ -2057,19 +2031,6 @@ extern struct rtx_def *arm_compare_op0, *arm_compare_op1;
fputs(")", STREAM); \
} \
else output_addr_const(STREAM, X); \
- \
- /* Mark symbols as position independent. We only do this in the \
- .text segment, not in the .data segment. */ \
- if (NEED_PLT_GOT && flag_pic && making_const_table && \
- (GET_CODE(X) == SYMBOL_REF || GET_CODE(X) == LABEL_REF)) \
- { \
- if (GET_CODE(X) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P(X)) \
- fprintf(STREAM, "(GOTOFF)"); \
- else if (GET_CODE (X) == LABEL_REF) \
- fprintf(STREAM, "(GOTOFF)"); \
- else \
- fprintf(STREAM, "(GOT)"); \
- } \
}
/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
@@ -2149,6 +2110,7 @@ struct rtx_def;
#ifndef HOST_WIDE_INT
#include "hwint.h"
#endif
+#define Hint HOST_WIDE_INT
#ifndef HAVE_MACHINE_MODES
#include "machmode.h"
@@ -2164,8 +2126,8 @@ struct rtx_def;
void arm_override_options PROTO ((void));
int use_return_insn PROTO ((int));
-int const_ok_for_arm PROTO ((HOST_WIDE_INT));
-int arm_split_constant RTX_CODE_PROTO ((Rcode, Mmode, HOST_WIDE_INT, Rtx, Rtx, int));
+int const_ok_for_arm PROTO ((Hint));
+int arm_split_constant RTX_CODE_PROTO ((Rcode, Mmode, Hint, Rtx, Rtx, int));
Rcode arm_canonicalize_comparison RTX_CODE_PROTO ((Rcode, Rtx *));
int arm_return_in_memory PROTO ((Tree));
int legitimate_pic_operand_p PROTO ((Rtx));
@@ -2206,9 +2168,9 @@ Rcode minmax_code PROTO ((Rtx));
int adjacent_mem_locations PROTO ((Rtx, Rtx));
int load_multiple_operation PROTO ((Rtx, Mmode));
int store_multiple_operation PROTO ((Rtx, Mmode));
-int load_multiple_sequence PROTO ((Rtx *, int, int *, int *, HOST_WIDE_INT *));
+int load_multiple_sequence PROTO ((Rtx *, int, int *, int *, Hint *));
char * emit_ldm_seq PROTO ((Rtx *, int));
-int store_multiple_sequence PROTO ((Rtx *, int, int *, int *, HOST_WIDE_INT *));
+int store_multiple_sequence PROTO ((Rtx *, int, int *, int *, Hint *));
char * emit_stm_seq PROTO ((Rtx *, int));
int arm_valid_machine_decl_attribute PROTO ((Tree, Tree, Tree));
Rtx arm_gen_load_multiple PROTO ((int, int, Rtx, int, int, int, int, int));
diff --git a/gnu/egcs/gcc/config/arm/arm.md b/gnu/egcs/gcc/config/arm/arm.md
index de40322f44f..17ffedba1d2 100644
--- a/gnu/egcs/gcc/config/arm/arm.md
+++ b/gnu/egcs/gcc/config/arm/arm.md
@@ -1,6 +1,5 @@
;;- Machine description for ARM for GNU compiler
-;; Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991, 93-98, 1999 Free Software Foundation, Inc.
;; Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
;; and Martin Simmons (@harleqn.co.uk).
;; More major hacks by Richard Earnshaw (rearnsha@arm.com).
@@ -1838,8 +1837,7 @@
(define_insn "negdi2"
[(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
- (neg:DI (match_operand:DI 1 "s_register_operand" "?r,0")))
- (clobber (reg:CC 24))]
+ (neg:DI (match_operand:DI 1 "s_register_operand" "?r,0")))]
""
"rsbs\\t%Q0, %Q1, #0\;rsc\\t%R0, %R1, #0"
[(set_attr "conds" "clob")
@@ -2141,12 +2139,14 @@
[(set_attr "length" "8")])
(define_insn "zero_extendqidi2"
- [(set (match_operand:DI 0 "s_register_operand" "=r")
- (zero_extend:DI (match_operand:QI 1 "s_register_operand" "r")))]
+ [(set (match_operand:DI 0 "s_register_operand" "=r,r")
+ (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
""
- "and%?\\t%Q0, %1, #255\;mov%?\\t%R0, #0"
+ "@
+ and%?\\t%Q0, %1, #255\;mov%?\\t%R0, #0
+ ldr%?b\\t%Q0, %1\;mov%?\\t%R0, #0"
[(set_attr "length" "8")
- (set_attr "type" "*")])
+ (set_attr "type" "*,load")])
(define_insn "extendsidi2"
[(set (match_operand:DI 0 "s_register_operand" "=r")
@@ -5799,19 +5799,15 @@
; It doesn't seem worth adding peepholes for anything but the most common
; cases since, unlike combine, the increment must immediately follow the load
; for this pattern to match.
-; We must watch to see that the source/destination register isn't also the
-; same as the base address register, and that if the index is a register,
-; that it is not the same as the base address register. In such cases the
-; instruction that we would generate would have UNPREDICTABLE behaviour so
-; we cannot use it.
+; When loading we must watch to see that the base register isn't trampled by
+; the load. In such cases this isn't a post-inc expression.
(define_peephole
[(set (mem:QI (match_operand:SI 0 "s_register_operand" "+r"))
(match_operand:QI 2 "s_register_operand" "r"))
(set (match_dup 0)
(plus:SI (match_dup 0) (match_operand:SI 1 "index_operand" "rJ")))]
- "(REGNO (operands[2]) != REGNO (operands[0]))
- && (GET_CODE (operands[1]) != REG || (REGNO (operands[1]) != REGNO (operands[0])))"
+ ""
"str%?b\\t%2, [%0], %1")
(define_peephole
@@ -5819,8 +5815,9 @@
(mem:QI (match_operand:SI 1 "s_register_operand" "+r")))
(set (match_dup 1)
(plus:SI (match_dup 1) (match_operand:SI 2 "index_operand" "rJ")))]
- "REGNO (operands[0]) != REGNO (operands[1])
- && (GET_CODE (operands[2]) != REG || REGNO (operands[0]) != REGNO (operands[2]))"
+ "REGNO(operands[0]) != REGNO(operands[1])
+ && (GET_CODE (operands[2]) != REG
+ || REGNO(operands[0]) != REGNO (operands[2]))"
"ldr%?b\\t%0, [%1], %2")
(define_peephole
@@ -5828,8 +5825,7 @@
(match_operand:SI 2 "s_register_operand" "r"))
(set (match_dup 0)
(plus:SI (match_dup 0) (match_operand:SI 1 "index_operand" "rJ")))]
- "(REGNO (operands[2]) != REGNO (operands[0]))
- && (GET_CODE (operands[1]) != REG || (REGNO (operands[1]) != REGNO (operands[0])))"
+ ""
"str%?\\t%2, [%0], %1")
(define_peephole
@@ -5839,8 +5835,9 @@
(plus:SI (match_dup 1) (match_operand:SI 2 "index_operand" "rJ")))]
"(! BYTES_BIG_ENDIAN)
&& ! TARGET_SHORT_BY_BYTES
- && REGNO (operands[0]) != REGNO (operands[1])
- && (GET_CODE (operands[2]) != REG || REGNO (operands[0]) != REGNO (operands[2]))"
+ && REGNO(operands[0]) != REGNO(operands[1])
+ && (GET_CODE (operands[2]) != REG
+ || REGNO(operands[0]) != REGNO (operands[2]))"
"ldr%?\\t%0, [%1], %2\\t%@ loadhi")
(define_peephole
@@ -5848,8 +5845,9 @@
(mem:SI (match_operand:SI 1 "s_register_operand" "+r")))
(set (match_dup 1)
(plus:SI (match_dup 1) (match_operand:SI 2 "index_operand" "rJ")))]
- "REGNO (operands[0]) != REGNO (operands[1])
- && (GET_CODE (operands[2]) != REG || REGNO (operands[0]) != REGNO (operands[2]))"
+ "REGNO(operands[0]) != REGNO(operands[1])
+ && (GET_CODE (operands[2]) != REG
+ || REGNO(operands[0]) != REGNO (operands[2]))"
"ldr%?\\t%0, [%1], %2")
(define_peephole
@@ -5857,8 +5855,7 @@
(match_operand:SI 1 "index_operand" "rJ")))
(match_operand:QI 2 "s_register_operand" "r"))
(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))]
- "(REGNO (operands[2]) != REGNO (operands[0]))
- && (GET_CODE (operands[1]) != REG || (REGNO (operands[1]) != REGNO (operands[0])))"
+ ""
"str%?b\\t%2, [%0, %1]!")
(define_peephole
@@ -5869,8 +5866,7 @@
(match_operand:QI 3 "s_register_operand" "r"))
(set (match_dup 2) (plus:SI (match_op_dup 4 [(match_dup 0) (match_dup 1)])
(match_dup 2)))]
- "REGNO (operands[0]) != REGNO (operands[2])
- && REGNO (operands[3]) != REGNO (operands[2])"
+ ""
"str%?b\\t%3, [%2, %0%S4]!")
; This pattern is never tried by combine, so do it as a peephole
@@ -6220,7 +6216,6 @@
""
"*
{
- making_const_table = TRUE;
switch (GET_MODE_CLASS (GET_MODE (operands[0])))
{
case MODE_FLOAT:
@@ -6243,7 +6238,6 @@
""
"*
{
- making_const_table = TRUE;
switch (GET_MODE_CLASS (GET_MODE (operands[0])))
{
case MODE_FLOAT:
@@ -6265,7 +6259,7 @@
[(unspec_volatile [(const_int 0)] 4)]
""
"*
- making_const_table = FALSE;
+ /* Nothing to do (currently). */
return \"\";
")
diff --git a/gnu/egcs/gcc/config/arm/elf.h b/gnu/egcs/gcc/config/arm/elf.h
index 63ec125c49e..d2ba8bb1da8 100644
--- a/gnu/egcs/gcc/config/arm/elf.h
+++ b/gnu/egcs/gcc/config/arm/elf.h
@@ -338,17 +338,4 @@ do { \
/* For PIC code we need to explicitly specify (PLT) and (GOT) relocs. */
#define NEED_PLT_GOT flag_pic
-/* The ELF assembler handles GOT addressing differently to NetBSD. */
-#define GOT_PCREL 0
-
-/* Biggest alignment supported by the object file format of this
- machine. Use this macro to limit the alignment which can be
- specified using the `__attribute__ ((aligned (N)))' construct. If
- not defined, the default value is `BIGGEST_ALIGNMENT'. */
-#define MAX_OFILE_ALIGNMENT (32768*8)
-
-/* Align output to a power of two. */
-#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
- fprintf (STREAM, "\t.align\t%d\n", POWER)
-
#include "arm/aout.h"
diff --git a/gnu/egcs/gcc/config/arm/linux-elf.h b/gnu/egcs/gcc/config/arm/linux-elf.h
index a7e9e28938f..de45e1c4b53 100644
--- a/gnu/egcs/gcc/config/arm/linux-elf.h
+++ b/gnu/egcs/gcc/config/arm/linux-elf.h
@@ -1,5 +1,5 @@
/* Definitions for ARM running Linux-based GNU systems using ELF
- Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1997, 1998, 1999 Free Software Foundation, Inc.
Contributed by Philip Blundell <philb@gnu.org>
This file is part of GNU CC.
@@ -22,36 +22,16 @@ Boston, MA 02111-1307, USA. */
/* Run-time Target Specification. */
#define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
-/* Do not assume anything about header files. */
-#define NO_IMPLICIT_EXTERN_C
-
/* We have libgcc2. */
#define HAVE_ATEXIT
-#ifndef SUBTARGET_DEFAULT_APCS26
/* Default is to use APCS-32 mode. */
-# define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SHORT_BYTE)
-# ifdef SUBTARGET_OLD_LINKER
-# define SUBTARGET_EXTRA_LINK_SPEC \
+#ifndef SUBTARGET_DEFAULT_APCS26
+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SHORT_BYTE)
+#define SUBTARGET_EXTRA_LINK_SPEC \
" %{mapcs-26:-m elf32arm26} %{!mapcs-26:-m elf32arm}"
-# else /* new linker */
-# define SUBTARGET_EXTRA_LINK_SPEC \
- " %{mapcs-26:-m armelf_linux26} %{!mapcs-26:-m armelf_linux} -p"
-# endif
-# define SUBTARGET_EXTRA_ASM_SPEC \
+#define SUBTARGET_EXTRA_ASM_SPEC \
" %{mapcs-26:-mapcs-26} %(!mapcs-26:-mapcs-32}"
-# define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
-#else /* default is APCS-26 */
-# define TARGET_DEFAULT (ARM_FLAG_SHORT_BYTE)
-# ifdef SUBTARGET_OLD_LINKER
-# define SUBTARGET_LINK_SPEC \
- " %{mapcs-32:-m elf32arm} %{!mapcs-32:-m elf32arm26}"
-# else /* new linker */
-# define SUBTARGET_LINK_SPEC \
- " %{mapcs-32:-m armelf_linux} %{!mapcs-32:-m armelf_linux26} -p"
-# endif
-# define SUBTARGET_EXTRA_ASM_SPEC \
- " %{mapcs-32:-mapcs-32} %(!mapcs-32:-mapcs-26}"
#endif
/* This was defined in linux.h. Define it here also. */
@@ -103,8 +83,8 @@ Boston, MA 02111-1307, USA. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
-"-Dunix -D__arm__ -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(arm) \
--Amachine(arm) -D__ELF__"
+"-Dunix -Darm -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(arm) \
+-Amachine(arm) -D__ELF__ -Darm_elf"
#ifndef SUBTARGET_DEFAULT_APCS26
#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
diff --git a/gnu/egcs/gcc/config/arm/linux-elf26.h b/gnu/egcs/gcc/config/arm/linux-elf26.h
index ce26f1fef9d..aa65ae7f750 100644
--- a/gnu/egcs/gcc/config/arm/linux-elf26.h
+++ b/gnu/egcs/gcc/config/arm/linux-elf26.h
@@ -1,7 +1,6 @@
-/* Definitions for ARM running Linux-based GNU systems
- using ELF and 26-bit APCS.
- Copyright (C) 1999 Free Software Foundation, Inc.
- Contributed by Philip Blundell <Philip.Blundell@pobox.com>
+/* Definitions for 26-bit ARM running Linux-based GNU systems using ELF
+ Copyright (C) 1998 Free Software Foundation, Inc.
+ Contributed by Philip Blundell <philb@gnu.org>
This file is part of GNU CC.
@@ -20,5 +19,14 @@ along with this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* Tell linux-elf.h to default to 26-bit mode. */
#define SUBTARGET_DEFAULT_APCS26
+
+#define SUBTARGET_LINK_SPEC \
+ " %{mapcs-32:-m elf32arm} %{!mapcs-32:-m elf32arm26}"
+
+#define SUBTARGET_EXTRA_ASM_SPEC \
+ " %{mapcs-32:-mapcs-32} %(!mapcs-32:-mapcs-26}"
+
+#define TARGET_DEFAULT (ARM_FLAG_SHORT_BYTE)
+
+#include "arm/linux-elf.h"
diff --git a/gnu/egcs/gcc/config/c4x/c4x.c b/gnu/egcs/gcc/config/c4x/c4x.c
index 23f8bfa093f..5c5690a4eaf 100644
--- a/gnu/egcs/gcc/config/c4x/c4x.c
+++ b/gnu/egcs/gcc/config/c4x/c4x.c
@@ -1077,8 +1077,7 @@ c4x_emit_move_sequence (operands, mode)
and emit associated (HIGH (SYMREF)) if large memory model.
c4x_legitimize_address could be used to do this,
perhaps by calling validize_address. */
- if (TARGET_EXPOSE_LDP
- && ! (reload_in_progress || reload_completed)
+ if (! (reload_in_progress || reload_completed)
&& GET_CODE (op1) == MEM
&& symbolic_address_operand (XEXP (op1, 0), Pmode))
{
@@ -1089,8 +1088,7 @@ c4x_emit_move_sequence (operands, mode)
gen_rtx_LO_SUM (Pmode, dp_reg, XEXP (op1, 0)));
}
- if (TARGET_EXPOSE_LDP
- && ! (reload_in_progress || reload_completed)
+ if (! (reload_in_progress || reload_completed)
&& GET_CODE (op0) == MEM
&& symbolic_address_operand (XEXP (op0, 0), Pmode))
{
@@ -1411,14 +1409,12 @@ c4x_check_legit_addr (mode, addr, strict)
/* Direct addressing. */
case LABEL_REF:
case SYMBOL_REF:
- if (! TARGET_EXPOSE_LDP && ! strict && mode != HFmode && mode != HImode)
- return 1;
/* These need to be converted to a LO_SUM (...).
- LEGITIMIZE_RELOAD_ADDRESS will do this during reload. */
+ c4x_legitimize_address will fix them up. */
return 0;
/* Do not allow direct memory access to absolute addresses.
- This is more pain than it's worth, especially for the
+ This is more pain than its worth, especially for the
small memory model where we can't guarantee that
this address is within the data page---we don't want
to modify the DP register in the small memory model,
@@ -1519,32 +1515,6 @@ c4x_legitimize_address (orig, mode)
}
-rtx
-c4x_legitimize_reload_address (orig, mode, insn)
- rtx orig ATTRIBUTE_UNUSED;
- enum machine_mode mode;
- rtx insn;
-{
- if (mode != HImode
- && mode != HFmode
- && GET_MODE (orig) != HImode
- && GET_MODE (orig) != HFmode
- && (GET_CODE (orig) == CONST
- || GET_CODE (orig) == SYMBOL_REF
- || GET_CODE (orig) == LABEL_REF))
- {
- rtx dp_reg = gen_rtx_REG (Pmode, DP_REGNO);
- if (! TARGET_SMALL)
- emit_insn_before (gen_rtx_SET (VOIDmode, dp_reg,
- gen_rtx_HIGH (Pmode, orig)),
- insn);
- return gen_rtx_LO_SUM (Pmode, dp_reg, orig);
- }
-
- return NULL_RTX;
-}
-
-
/* Provide the costs of an addressing mode that contains ADDR.
If ADDR is not a valid address, its cost is irrelevant.
This is used in cse and loop optimisation to determine
@@ -3032,24 +3002,20 @@ src_operand (op, mode)
if (GET_CODE (op) == CONST_DOUBLE)
return c4x_H_constant (op);
- /* Disallow symbolic addresses. Only the predicate
- symbolic_address_operand will match these. */
+ /* Disallow symbolic addresses. */
if (GET_CODE (op) == SYMBOL_REF
|| GET_CODE (op) == LABEL_REF
|| GET_CODE (op) == CONST)
return 0;
- /* If TARGET_EXPOSE_LDP is zero, allow direct memory access to
- symbolic addresses. These will be rejected by
- GO_IF_LEGITIMATE_ADDRESS and fixed up by
- LEGITIMIZE_RELOAD_ADDRESS. If TARGET_EXPOSE_LDP is nonzero,
- disallow direct memory access to symbolic addresses. These
- should be converted to a HIGH/LO_SUM pair by the movqi expander. */
+ /* Disallow direct memory access symbolic addresses.
+ These are usually caught by the movqi expander and
+ converted to a LO_SUM. */
if (GET_CODE (op) == MEM
&& ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF
|| GET_CODE (XEXP (op, 0)) == LABEL_REF
|| GET_CODE (XEXP (op, 0)) == CONST)))
- return ! TARGET_EXPOSE_LDP;
+ return 0;
return general_operand (op, mode);
}
diff --git a/gnu/egcs/gcc/config/c4x/c4x.h b/gnu/egcs/gcc/config/c4x/c4x.h
index 7ef0738f008..1dc8d5c63ed 100644
--- a/gnu/egcs/gcc/config/c4x/c4x.h
+++ b/gnu/egcs/gcc/config/c4x/c4x.h
@@ -303,9 +303,7 @@ extern int target_flags;
#define TARGET_C40 (target_flags & C40_FLAG)
#define TARGET_C44 (target_flags & C44_FLAG)
-/* Define some options to control code generation. */
#define TARGET_LOAD_ADDRESS (1 || (! TARGET_C3X && ! TARGET_SMALL))
-#define TARGET_EXPOSE_LDP 0
/* -mrpts allows the use of the RPTS instruction irregardless.
-mrpts=max-cycles will use RPTS if the number of cycles is constant
@@ -1666,20 +1664,6 @@ extern struct rtx_def *c4x_legitimize_address ();
} \
}
-extern struct rtx_def *c4x_legitimize_reload_address ();
-#define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \
-{ \
- rtx new; \
- new = c4x_legitimize_reload_address (X, MODE, insn); \
- if (new != NULL_RTX) \
- { \
- (X) = new; \
- /* We do not have to call push_reload because we do not require \
- any more reloads. */ \
- goto WIN; \
- } \
-}
-
/* No mode-dependent addresses on the C4x are autoincrements. */
@@ -1700,9 +1684,7 @@ extern struct rtx_def *c4x_legitimize_reload_address ();
restricted subset of CONST_INT and CONST_DOUBLE. Disallow
LABEL_REF and SYMBOL_REF (except on the C40 with the big memory
model) so that the symbols will be forced into the constant pool.
- On second thoughts, let's do this with the move expanders since
- the alias analysis has trouble if we force constant addresses
- into memory.
+ On second thoughts, lets do this with the move expanders.
*/
#define LEGITIMATE_CONSTANT_P(X) \
@@ -2096,7 +2078,7 @@ dtors_section () \
fprintf (FILE, "\n"); \
}
-#define ASM_FILE_END(FILE) fprintf (FILE, "\t.end\n")
+#define ASM_FILE_END(FILE) fprintf (FILE, "\t.end\n")
/* We need to have a data section we can identify so that we can set
the DP register back to a data pointer in the small memory model.
@@ -2107,7 +2089,7 @@ dtors_section () \
if (! TARGET_TI) fputs ("gcc2_compiled.:\n", FILE); \
fputs ("\t.data\ndata_sec:\n", FILE);
-#define ASM_COMMENT_START ";"
+#define ASM_COMMENT_START ";"
#define ASM_APP_ON ""
#define ASM_APP_OFF ""
@@ -2266,10 +2248,8 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM)
#define CPP_PREDEFINES ""
-/* Output of Uninitialized Variables */
-
-/* This says how to output an assembler line to define a local
- uninitialized variable. */
+/* This says how to output an assembler line
+ to define a local common symbol. */
#undef ASM_OUTPUT_LOCAL
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
@@ -2277,8 +2257,7 @@ asm_fprintf (FILE, "%s%d:\n", PREFIX, NUM)
assemble_name (FILE, (NAME)), \
fprintf (FILE, ",%u\n", (ROUNDED)))
-/* This says how to output an assembler line to define a global
- uninitialized variable. */
+/* Output of Uninitialized Variables */
#undef ASM_OUTPUT_COMMON
#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
diff --git a/gnu/egcs/gcc/config/c4x/c4x.md b/gnu/egcs/gcc/config/c4x/c4x.md
index 7f1b0f309ab..a0a4e0b9dd9 100644
--- a/gnu/egcs/gcc/config/c4x/c4x.md
+++ b/gnu/egcs/gcc/config/c4x/c4x.md
@@ -68,8 +68,6 @@
; src_operand general operand [rfHmI]
; par_ind_operand indirect S mode (ARx + 0, 1, IRx) [S<>]
; parallel_operand par_ind_operand or ext_low_reg_operand
-; symbolic_address_operand
-; call_address_operand
; ADDI src2, src1, dst three operand op
; ADDI src, dst two operand op
@@ -1143,6 +1141,7 @@
operands[3] = gen_rtx (CONST_INT, VOIDmode, INTVAL (operands[1]) & 0xffff);
}")
+; This pattern is required to handle the case where a register that clobbers
; CC has been selected to load a symbolic address. We force the address
; into memory and then generate LDP and LDIU insns.
; This is also required for the C30 if we pretend that we can
diff --git a/gnu/egcs/gcc/config/dbxcoff.h b/gnu/egcs/gcc/config/dbxcoff.h
index 1d5b448879f..9497a70b83f 100644
--- a/gnu/egcs/gcc/config/dbxcoff.h
+++ b/gnu/egcs/gcc/config/dbxcoff.h
@@ -49,8 +49,8 @@ Boston, MA 02111-1307, USA. */
#undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \
- asm_fprintf (FILE, \
- "\t.text\n\t.stabs \"\",%d,0,0,%LLetext\n%LLetext:\n", N_SO)
+ fprintf (FILE, \
+ "\t.text\n\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO)
/* Like block addresses, stabs line numbers are relative to the
current function. */
diff --git a/gnu/egcs/gcc/config/dbxelf.h b/gnu/egcs/gcc/config/dbxelf.h
index 3971bc1c9dc..9472887cc52 100644
--- a/gnu/egcs/gcc/config/dbxelf.h
+++ b/gnu/egcs/gcc/config/dbxelf.h
@@ -80,19 +80,15 @@ while (0)
current function. */
#undef ASM_OUTPUT_SOURCE_LINE
-#define ASM_OUTPUT_SOURCE_LINE(FILE, LINE) \
+#define ASM_OUTPUT_SOURCE_LINE(file, line) \
do \
{ \
static int sym_lineno = 1; \
- char temp[256]; \
- ASM_GENERATE_INTERNAL_LABEL (temp, "LM", sym_lineno); \
- fprintf (FILE, ".stabn 68,0,%d,", LINE); \
- assemble_name (FILE, temp); \
- putc ('-', FILE); \
- assemble_name (FILE, \
+ fprintf (file, ".stabn 68,0,%d,.LM%d-", \
+ line, sym_lineno); \
+ assemble_name (file, \
XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));\
- putc ('\n', FILE); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "LM", sym_lineno); \
+ fprintf (file, "\n.LM%d:\n", sym_lineno); \
sym_lineno += 1; \
} \
while (0)
@@ -103,7 +99,7 @@ while (0)
#undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \
- asm_fprintf (FILE, \
- "\t.text\n\t.stabs \"\",%d,0,0,%LLetext\n%LLetext:\n", N_SO)
+ fprintf (FILE, \
+ "\t.text\n\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO)
#endif /* __DBX_ELF_H */
diff --git a/gnu/egcs/gcc/config/elfos.h b/gnu/egcs/gcc/config/elfos.h
index d4826159198..6c107311fd7 100644
--- a/gnu/egcs/gcc/config/elfos.h
+++ b/gnu/egcs/gcc/config/elfos.h
@@ -1,6 +1,6 @@
/* elfos.h -- operating system specific defines to be used when
targeting GCC for some generic ELF system
- Copyright (C) 1991, 1994, 1995, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1994, 1995, 1999 Free Software Foundation, Inc.
Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
This file is part of GNU CC.
@@ -426,8 +426,7 @@ do { \
else \
data_section (); \
} \
- else if (TREE_CODE (DECL) == VAR_DECL \
- || TREE_CODE (DECL) == CONSTRUCTOR) \
+ else if (TREE_CODE (DECL) == VAR_DECL) \
{ \
if ((flag_pic && RELOC) \
|| !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \
diff --git a/gnu/egcs/gcc/config/h8300/h8300.c b/gnu/egcs/gcc/config/h8300/h8300.c
index 4d23e7424da..5fb4a628c46 100644
--- a/gnu/egcs/gcc/config/h8300/h8300.c
+++ b/gnu/egcs/gcc/config/h8300/h8300.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for Hitachi H8/300.
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 1999 Free Software
+ Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
@@ -396,7 +396,7 @@ function_epilogue (file, size)
if (GET_CODE (insn) == NOTE)
insn = prev_nonnote_insn (insn);
if (insn && GET_CODE (insn) == BARRIER)
- goto out;
+ return;
/* Pop the saved registers. */
for (idx = 0; idx < FIRST_PSEUDO_REGISTER; idx++)
@@ -2313,9 +2313,9 @@ get_shift_alg (cpu, shift_type, mode, count, assembler_p,
if (TARGET_H8300)
*assembler_p = "mov.b\t%t0,%s0\n\tbld\t#7,%s0\n\tsubx\t%t0,%t0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0";
else if (TARGET_H8300H)
- *assembler_p = "mov.b\t%t0,%s0\n\texts.w\t%T0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0";
+ *assembler_p = "mov.b\t%t0,%s0\n\textw.w\t%T0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0";
else if (TARGET_H8300S)
- *assembler_p = "mov.b\t%t0,%s0\n\texts.w\t%T0\n\tshar.b\t#2,%s0\n\tshar.b\t#2,%s0";
+ *assembler_p = "mov.b\t%t0,%s0\n\textw.w\t%T0\n\tshar.b\t#2,%s0\n\tshar.b\t#2,%s0";
*cc_valid_p = 0;
return SHIFT_SPECIAL;
}
diff --git a/gnu/egcs/gcc/config/h8300/h8300.md b/gnu/egcs/gcc/config/h8300/h8300.md
index bb0387b8d36..7e49af5ef75 100644
--- a/gnu/egcs/gcc/config/h8300/h8300.md
+++ b/gnu/egcs/gcc/config/h8300/h8300.md
@@ -1,6 +1,5 @@
;; GCC machine description for Hitachi H8/300
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 2000 Free Software
-;; Foundation, Inc.
+;; Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
;; Contributed by Steve Chamberlain (sac@cygnus.com),
;; Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
@@ -415,7 +414,7 @@
if (which_alternative == 7)
return \"clrmac\;ldmac %1,macl\";
if (which_alternative == 8)
- return \"stmac macl,%0\";
+ return \"stmac macl,%0\";
if (GET_CODE (operands[1]) == CONST_INT)
{
int val = INTVAL (operands[1]);
@@ -862,7 +861,7 @@
(sign_extend:SI
(mem:HI (post_inc:SI (match_operand:SI 2 "register_operand" "r"))))))]
"TARGET_H8300S"
- "clrmac\;mac @%2+,@%1+"
+ "clrmac\;mac %2,%1"
[(set_attr "length" "6")
(set_attr "cc" "none_0hit")])
@@ -875,7 +874,7 @@
(post_inc:SI (match_operand:SI 2 "register_operand" "r")))))
(match_operand:SI 3 "register_operand" "0")))]
"TARGET_H8300S"
- "mac @%2+,@%1+"
+ "mac %2,%1"
[(set_attr "length" "4")
(set_attr "cc" "none_0hit")])
@@ -1675,7 +1674,7 @@
(define_expand "zero_extendhisi2"
[(set (match_operand:SI 0 "register_operand" "")
- (zero_extend:SI (match_operand:HI 1 "register_operand" "")))]
+ (zero_extend:SI (match_operand:HI 1 "general_operand" "")))]
""
"
{
@@ -1710,16 +1709,18 @@
(set_attr "cc" "clobber,clobber,clobber")])
(define_insn ""
- [(set (match_operand:SI 0 "register_operand" "=r")
- (zero_extend:SI (match_operand:HI 1 "register_operand" "0")))]
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (zero_extend:SI (match_operand:HI 1 "general_operand_src" "0,g>")))]
"TARGET_H8300H || TARGET_H8300S"
- "extu.l %S0"
- [(set_attr "length" "2")
- (set_attr "cc" "set_znv")])
+ "@
+ extu.l %S0
+ mov.w %T1,%T0\;extu.l %S0"
+ [(set_attr "length" "2,4")
+ (set_attr "cc" "set_znv,set_znv")])
(define_expand "extendqihi2"
[(set (match_operand:HI 0 "register_operand" "")
- (sign_extend:HI (match_operand:QI 1 "register_operand" "")))]
+ (sign_extend:HI (match_operand:QI 1 "general_operand" "")))]
""
"")
@@ -1734,12 +1735,14 @@
(set_attr "cc" "clobber,clobber")])
(define_insn ""
- [(set (match_operand:HI 0 "register_operand" "=r")
- (sign_extend:HI (match_operand:QI 1 "register_operand" "0")))]
+ [(set (match_operand:HI 0 "register_operand" "=r,r")
+ (sign_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))]
"TARGET_H8300H || TARGET_H8300S"
- "exts.w %T0"
- [(set_attr "length" "2")
- (set_attr "cc" "set_znv")])
+ "@
+ exts.w %T0
+ mov.b %R1,%s0\;exts.w %T0"
+ [(set_attr "length" "2,4")
+ (set_attr "cc" "set_znv,set_znv")])
;; The compiler can synthesize a 300H variant of this which is
;; just as efficient as one that we'd create
@@ -1755,7 +1758,7 @@
(define_expand "extendhisi2"
[(set (match_operand:SI 0 "register_operand" "")
- (sign_extend:SI (match_operand:HI 1 "register_operand" "")))]
+ (sign_extend:SI (match_operand:HI 1 "general_operand" "")))]
""
"
{
@@ -1788,12 +1791,14 @@
(set_attr "cc" "clobber,clobber")])
(define_insn ""
- [(set (match_operand:SI 0 "register_operand" "=r")
- (sign_extend:SI (match_operand:HI 1 "register_operand" "0")))]
+ [(set (match_operand:SI 0 "register_operand" "=r,r")
+ (sign_extend:SI (match_operand:HI 1 "general_operand_src" "0,g>")))]
"TARGET_H8300H || TARGET_H8300S"
- "exts.l %S0"
- [(set_attr "length" "2")
- (set_attr "cc" "set_znv")])
+ "@
+ exts.l %S0
+ mov.w %T1,%T0\;exts.l %S0"
+ [(set_attr "length" "2,4")
+ (set_attr "cc" "set_znv,set_znv")])
;; ----------------------------------------------------------------------
;; SHIFTS
@@ -2287,7 +2292,7 @@
(define_peephole
[(set (match_operand:HI 1 "register_operand" "")
- (plus:HI (match_dup 1) (const_int -2)))
+ (plus:HI (match_dup 1) (const_int -1)))
(set (mem:HI (match_dup 1))
(match_operand:HI 0 "register_operand" ""))]
"REGNO(operands[1]) != REGNO(operands[0])"
diff --git a/gnu/egcs/gcc/config/i386/cygwin.h b/gnu/egcs/gcc/config/i386/cygwin.h
index dbea466bc86..48b9eba1b1c 100644
--- a/gnu/egcs/gcc/config/i386/cygwin.h
+++ b/gnu/egcs/gcc/config/i386/cygwin.h
@@ -326,7 +326,11 @@ do { \
#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \
do { \
if (i386_pe_dllexport_name_p (NAME)) \
- i386_pe_record_exported_symbol (NAME); \
+ { \
+ drectve_section (); \
+ fprintf ((STREAM), "\t.ascii \" -export:%s\"\n", \
+ I386_PE_STRIP_ENCODING (NAME)); \
+ } \
if (! i386_pe_dllimport_name_p (NAME)) \
{ \
fprintf ((STREAM), "\t.comm\t"); \
@@ -341,7 +345,13 @@ do { \
#define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL) \
do { \
if (i386_pe_dllexport_name_p (NAME)) \
- i386_pe_record_exported_symbol (NAME); \
+ { \
+ enum in_section save_section = in_section; \
+ drectve_section (); \
+ fprintf ((STREAM), "\t.ascii \" -export:%s\"\n", \
+ I386_PE_STRIP_ENCODING (NAME)); \
+ switch_to_section (save_section, (DECL)); \
+ } \
ASM_OUTPUT_LABEL ((STREAM), (NAME)); \
} while (0)
@@ -437,7 +447,12 @@ do { \
do \
{ \
if (i386_pe_dllexport_name_p (NAME)) \
- i386_pe_record_exported_symbol (NAME); \
+ { \
+ drectve_section (); \
+ fprintf ((FILE), "\t.ascii \" -export:%s\"\n", \
+ I386_PE_STRIP_ENCODING (NAME)); \
+ function_section (DECL); \
+ } \
if (write_symbols != SDB_DEBUG) \
i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \
ASM_OUTPUT_LABEL (FILE, NAME); \
@@ -503,7 +518,6 @@ do { \
extern void i386_pe_record_external_function PROTO((char *));
extern void i386_pe_declare_function_type STDIO_PROTO((FILE *, char *, int));
-extern void i386_pe_record_exported_symbol PROTO((char *));
extern void i386_pe_asm_file_end STDIO_PROTO((FILE *));
/* For Win32 ABI compatibility */
@@ -518,8 +532,3 @@ extern void i386_pe_asm_file_end STDIO_PROTO((FILE *));
#undef PCC_BITFIELDS_TYPE_MATTERS
#define PCC_BITFIELDS_TYPE_MATTERS 0
-/* Enable alias attribute support. */
-#ifndef SET_ASM_OP
-#define SET_ASM_OP "\t.set"
-#endif
-
diff --git a/gnu/egcs/gcc/config/i386/dgux.h b/gnu/egcs/gcc/config/i386/dgux.h
index 4e0b7c7cd4f..9c95911a78b 100644
--- a/gnu/egcs/gcc/config/i386/dgux.h
+++ b/gnu/egcs/gcc/config/i386/dgux.h
@@ -26,7 +26,7 @@ Boston, MA 02111-1307, USA. */
#include "i386/sysv4.h"
#ifndef VERSION_INFO2
-#define VERSION_INFO2 "$Revision: 1.1.1.3 $"
+#define VERSION_INFO2 "$Revision: 1.1 $"
#endif
#ifndef VERSION_STRING
diff --git a/gnu/egcs/gcc/config/i386/djgpp.h b/gnu/egcs/gcc/config/i386/djgpp.h
index 5727b0a9bbd..6cee75bc837 100644
--- a/gnu/egcs/gcc/config/i386/djgpp.h
+++ b/gnu/egcs/gcc/config/i386/djgpp.h
@@ -70,15 +70,7 @@ Boston, MA 02111-1307, USA. */
\t%{!A:%{!nostdlib:%{!nostartfiles:%E}}}\
\t-Tdjgpp.djl %{T*}}}}}}}\n\
%{!c:%{!M:%{!MM:%{!E:%{!S:stubify %{v} %{o*:%*} %{!o*:a.out} }}}}}"
-
-/* Always just link in 'libc.a'. */
-#undef LIB_SPEC
-#define LIB_SPEC "-lc"
-
-/* Pick the right startup code depending on the -pg flag. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:crt0.o%s}"
-
+
/* Make sure that gcc will not look for .h files in /usr/local/include
unless user explicitly requests it. */
#undef LOCAL_INCLUDE_DIR
diff --git a/gnu/egcs/gcc/config/i386/freebsd-elf.h b/gnu/egcs/gcc/config/i386/freebsd-elf.h
index e97d4ca07bb..988f6a9842f 100644
--- a/gnu/egcs/gcc/config/i386/freebsd-elf.h
+++ b/gnu/egcs/gcc/config/i386/freebsd-elf.h
@@ -3,7 +3,6 @@
Contributed by Eric Youngdale.
Modified for stabs-in-ELF by H.J. Lu.
Adapted from GNU/Linux version by John Polstra.
- Continued development by David O'Brien <obrien@freebsd.org>
This file is part of GNU CC.
@@ -35,23 +34,6 @@ Boston, MA 02111-1307, USA. */
libraries compiled with the native cc, so undef it. */
#undef NO_DOLLAR_IN_LABEL
-/* Use more efficient ``thunks'' to implement C++ vtables. */
-#undef DEFAULT_VTABLE_THUNKS
-#define DEFAULT_VTABLE_THUNKS 1
-
-/* Override the default comment-starter of "/". */
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START "#"
-
-#undef ASM_APP_ON
-#define ASM_APP_ON "#APP\n"
-
-#undef ASM_APP_OFF
-#define ASM_APP_OFF "#NO_APP\n"
-
-#undef SET_ASM_OP
-#define SET_ASM_OP ".set"
-
/* This is how to output an element of a case-vector that is relative.
This is only used for PIC code. See comments by the `casesi' insn in
i386.md for an explanation of the expression this outputs. */
@@ -63,10 +45,6 @@ Boston, MA 02111-1307, USA. */
necessary when compiling PIC code. */
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
-/* Use stabs instead of DWARF debug format. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
/* Copy this from the svr4 specifications... */
/* Define the register numbers to be used in Dwarf debugging information.
The SVR4 reference port C compiler uses the following register numbers
@@ -135,15 +113,23 @@ Boston, MA 02111-1307, USA. */
: ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
: (-1))
-/* Tell final.c that we don't need a label passed to mcount. */
+/* Output assembler code to FILE to increment profiler label # LABELNO
+ for profiling a function entry. */
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \
{ \
if (flag_pic) \
- fprintf (FILE, "\tcall *.mcount@GOT(%%ebx)\n"); \
+ { \
+ fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \
+ LPREFIX, (LABELNO)); \
+ fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
+ } \
else \
- fprintf (FILE, "\tcall .mcount\n"); \
+ { \
+ fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \
+ fprintf (FILE, "\tcall mcount\n"); \
+ } \
}
#undef SIZE_TYPE
@@ -154,9 +140,6 @@ Boston, MA 02111-1307, USA. */
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
-
-#undef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE BITS_PER_WORD
@@ -167,53 +150,21 @@ Boston, MA 02111-1307, USA. */
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
-/* This defines which switch letters take arguments. On FreeBSD, most of
- the normal cases (defined in gcc.c) apply, and we also have -h* and
- -z* options (for the linker) (comming from svr4).
- We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
-
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
- || (CHAR) == 'h' \
- || (CHAR) == 'z' \
- || (CHAR) == 'R')
-
-/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
- the magical crtbegin.o file (see crtstuff.c) which provides part
- of the support for getting C++ file-scope static object constructed
- before entering `main'. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
+#undef LIB_SPEC
+#if 1
+/* We no longer link with libc_p.a or libg.a by default. If you
+ * want to profile or debug the C library, please add
+ * -lc_p or -ggdb to LDFLAGS at the link time, respectively.
+ */
+#define LIB_SPEC \
+ "%{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \
+ %{!ggdb:-lc} %{ggdb:-lg}}"
+#else
+#define LIB_SPEC \
"%{!shared: \
- %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
- %{!p:%{profile:gcrt1.o%s} \
- %{!profile:crt1.o%s}}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
-/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
- the magical crtend.o file (see crtstuff.c) which provides part of
- the support for getting C++ file-scope static object constructed
- before entering `main', followed by a normal "finalizer" file,
- `crtn.o'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
-
-/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate
- libc, depending on whether we're doing profiling or need threads support.
- (simular to the default, except no -lg, and no -p. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!shared: \
- %{!pg:%{!pthread:%{!kthread:-lc} \
- %{kthread:-lpthread -lc}} \
- %{pthread:-lc_r}} \
- %{pg:%{!pthread:%{!kthread:-lc_p} \
- %{kthread:-lpthread_p -lc_p}} \
- %{pthread:-lc_r_p}}}"
+ %{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} \
+ %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}}"
+#endif
/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
for the special GCC options -static and -shared, which allow us to
@@ -230,17 +181,15 @@ Boston, MA 02111-1307, USA. */
done. */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf_i386 \
- %{Wl,*:%*} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*} \
- %{shared:-Bshareable %{h*} %{soname*}} \
- %{!shared: \
+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
+ %{!shared: \
+ %{!ibcs: \
%{!static: \
- %{rdynamic:-export-dynamic} \
+ %{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
- %{static:-Bstatic}} \
- %{symbolic:-Bsymbolic}"
+ %{static:-static}}}"
+
+/* Get perform_* macros to build libgcc.a. */
/* A C statement to output to the stdio stream FILE an assembler
command to advance the location counter to a multiple of 1<<LOG
diff --git a/gnu/egcs/gcc/config/i386/freebsd.h b/gnu/egcs/gcc/config/i386/freebsd.h
index 89fe21623a9..52302222ae3 100644
--- a/gnu/egcs/gcc/config/i386/freebsd.h
+++ b/gnu/egcs/gcc/config/i386/freebsd.h
@@ -245,3 +245,30 @@ do { \
#define STARTFILE_SPEC \
"%{shared:c++rt0.o%s} \
%{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
+
+/* This is defined when gcc is compiled in the BSD-directory-tree, and must
+ * make up for the gap to all the stuff done in the GNU-makefiles.
+ */
+
+#ifdef FREEBSD_NATIVE
+
+#define INCLUDE_DEFAULTS { \
+ { "/usr/include", 0, 0, 0 }, \
+ { "/usr/include/g++", "G++", 1, 1 }, \
+ { 0, 0, 0, 0} \
+ }
+
+#undef MD_EXEC_PREFIX
+#define MD_EXEC_PREFIX "/usr/libexec/"
+
+#undef STANDARD_STARTFILE_PREFIX
+#define STANDARD_STARTFILE_PREFIX "/usr/lib"
+
+#if 0 /* This is very wrong!!! */
+#define DEFAULT_TARGET_MACHINE "i386-unknown-freebsd_1.0"
+#define GPLUSPLUS_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include"
+#define TOOL_INCLUDE_DIR "/usr/local/i386-unknown-freebsd_1.0/include"
+#define GCC_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include"
+#endif
+
+#endif /* FREEBSD_NATIVE */
diff --git a/gnu/egcs/gcc/config/i386/gnu.h b/gnu/egcs/gcc/config/i386/gnu.h
index cd32b928f66..971a5f880c2 100644
--- a/gnu/egcs/gcc/config/i386/gnu.h
+++ b/gnu/egcs/gcc/config/i386/gnu.h
@@ -3,24 +3,13 @@
/* This does it mostly for us. */
#include <i386/linux.h>
-/* Get machine-independent configuration parameters for the GNU system. */
-#include <gnu.h>
+#undef CPP_PREDEFINES
+#define CPP_PREDEFINES "-Di386 -Acpu(i386) -Amachine(i386) \
+-Dunix -Asystem(unix) -DMACH -Asystem(mach) -D__GNU__ -Asystem(gnu)"
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (i386 GNU)");
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-D__ELF__ -D__i386__ -DMACH -Asystem(mach) \
- -Dunix -Asystem(unix) -Asystem(posix) -D__GNU__ -Asystem(gnu)"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) \
- %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \
- %{posix:-D_POSIX_SOURCE} %{bsd:-D_BSD_SOURCE}"
-
-#undef CC1_SPEC
-#define CC1_SPEC "%(cc1_cpu)"
-
#undef LINK_SPEC
#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
%{!shared: \
@@ -29,10 +18,6 @@
%{!dynamic-linker:-dynamic-linker /lib/ld.so}} \
%{static:-static}}"
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!shared: \
- %{!static: \
- %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \
- %{static:crt0.o%s}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
+
+/* Get machine-independent configuration parameters for the GNU system. */
+#include <gnu.h>
diff --git a/gnu/egcs/gcc/config/i386/sol2.h b/gnu/egcs/gcc/config/i386/sol2.h
index b254a10f2ea..cc5a089229f 100644
--- a/gnu/egcs/gcc/config/i386/sol2.h
+++ b/gnu/egcs/gcc/config/i386/sol2.h
@@ -21,33 +21,6 @@ Boston, MA 02111-1307, USA. */
#include "i386/sysv4.h"
-/* We use stabs-in-elf for debugging, because that is what the native
- toolchain uses. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-#if ! GAS_REJECTS_MINUS_S
-
-/*
- Changed from config/svr4.h in the following ways:
-
- - Removed -Yd (neither the sun bundled assembler nor gas accept it).
- - Added "-s" so that stabs are not discarded.
-*/
-
-#undef ASM_SPEC
-#define ASM_SPEC \
- "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s"
-
-#else /* GAS_REJECTS_MINUS_S */
-
-/* Same as above, except for -s, unsupported by GNU as. */
-#undef ASM_SPEC
-#define ASM_SPEC \
- "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*}"
-
-#endif /* GAS_REJECTS_MINUS_S */
-
/* The Solaris 2.0 x86 linker botches alignment of code sections.
It tries to align to a 16 byte boundary by padding with 0x00000090
ints, rather than 0x90 bytes (nop). This generates trash in the
diff --git a/gnu/egcs/gcc/config/i386/t-dgux b/gnu/egcs/gcc/config/i386/t-dgux
index 1bf024a4c19..292331f22a9 100644
--- a/gnu/egcs/gcc/config/i386/t-dgux
+++ b/gnu/egcs/gcc/config/i386/t-dgux
@@ -1,8 +1,4 @@
#
# target makefile for dgux
#
-EXTRA_PARTS=crti.o crtbegin.o crtend.o
-
-crti.o: $(srcdir)/config/i386/sol2-ci.asm $(GCC_PASSES)
- sed -e '/^!/d' <$(srcdir)/config/i386/sol2-ci.asm >crti.s
- $(GCC_FOR_TARGET) -c -o crti.o crti.s
+EXTRA_PARTS=crtbegin.o crtend.o
diff --git a/gnu/egcs/gcc/config/i386/udk.h b/gnu/egcs/gcc/config/i386/udk.h
index 8e03abf5227..2714e6da1be 100644
--- a/gnu/egcs/gcc/config/i386/udk.h
+++ b/gnu/egcs/gcc/config/i386/udk.h
@@ -25,6 +25,6 @@
%{G:-G} \
%{YP,*} \
%{!YP,*:%{p:-Y P,/udk/usr/ccs/lib/libp:/udk/usr/lib/libp:/udk/usr/ccs/lib:/udk/usr/lib} \
- %{!p:-Y P,/udk/usr/ccs/lib:/udk/usr/lib}} \
+ %{!p:-Y P,/udk/usr/ccs/lib:/usr/lib}} \
%{Qy:} %{!Qn:-Qy}"
diff --git a/gnu/egcs/gcc/config/i386/uwin.h b/gnu/egcs/gcc/config/i386/uwin.h
index 73e04add2e9..0d5019d5b04 100644
--- a/gnu/egcs/gcc/config/i386/uwin.h
+++ b/gnu/egcs/gcc/config/i386/uwin.h
@@ -44,7 +44,7 @@ Boston, MA 02111-1307, USA. */
#undef CPP_SPEC
#define CPP_SPEC "-remap %(cpp_cpu) %{posix:-D_POSIX_SOURCE} \
-include /usr/include/astwin32.h \
- -idirafter /usr/gnu/include/mingw32"
+ -iprefix /usr/gnu/include -iwithprefix /mingw32"
/* For Windows applications, include more libraries, but always include
kernel32. */
diff --git a/gnu/egcs/gcc/config/i386/winnt.c b/gnu/egcs/gcc/config/i386/winnt.c
index 24d8617f8df..f1a2d4b83be 100644
--- a/gnu/egcs/gcc/config/i386/winnt.c
+++ b/gnu/egcs/gcc/config/i386/winnt.c
@@ -545,29 +545,8 @@ i386_pe_record_external_function (name)
extern_head = p;
}
-static struct extern_list *exports_head;
-
-/* Assemble an export symbol entry. We need to keep a list of
- these, so that we can output the export list at the end of the
- assembly. We used to output these export symbols in each function,
- but that causes problems with GNU ld when the sections are
- linkonce. */
-
-void
-i386_pe_record_exported_symbol (name)
- char *name;
-{
- struct extern_list *p;
-
- p = (struct extern_list *) permalloc (sizeof *p);
- p->next = exports_head;
- p->name = name;
- exports_head = p;
-}
-
/* This is called at the end of assembly. For each external function
- which has not been defined, we output a declaration now. We also
- output the .drectve section. */
+ which has not been defined, we output a declaration now. */
void
i386_pe_asm_file_end (file)
@@ -588,13 +567,4 @@ i386_pe_asm_file_end (file)
i386_pe_declare_function_type (file, p->name, TREE_PUBLIC (decl));
}
}
-
- if (exports_head)
- drectve_section ();
- for (p = exports_head; p != NULL; p = p->next)
- {
- fprintf (file, "\t.ascii \" -export:%s\"\n",
- I386_PE_STRIP_ENCODING (p->name));
- }
}
-
diff --git a/gnu/egcs/gcc/config/i386/xm-djgpp.h b/gnu/egcs/gcc/config/i386/xm-djgpp.h
index ccf6e3cedf6..50034fd071d 100644
--- a/gnu/egcs/gcc/config/i386/xm-djgpp.h
+++ b/gnu/egcs/gcc/config/i386/xm-djgpp.h
@@ -34,6 +34,8 @@ Boston, MA 02111-1307, USA. */
/* Allow test for DOS drive names. */
#define HAVE_DOS_BASED_FILESYSTEM
+#define NO_SYS_SIGLIST 1
+
#define LIBSTDCXX "-lstdcxx"
/* System dependant initialization for collect2
diff --git a/gnu/egcs/gcc/config/i386/xm-uwin.h b/gnu/egcs/gcc/config/i386/xm-uwin.h
index e69de29bb2d..2e1ecde0fa7 100644
--- a/gnu/egcs/gcc/config/i386/xm-uwin.h
+++ b/gnu/egcs/gcc/config/i386/xm-uwin.h
@@ -0,0 +1,39 @@
+/* Configuration for GNU C-compiler for hosting on Windows32.
+ using GNU tools and the Windows32 API Library.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ Contributed by Mumit Khan <khan@xraylith.wisc.edu>.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifndef ONLY_INT_FIELD
+#define ONLY_INT_FIELDS 1
+#endif
+
+#ifndef USE_PROTOTYPES
+#define USE_PROTOTYPES 1
+#endif
+
+/* U/WIN system calls only support '/' */
+#undef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#undef EXECUTABLE_SUFFIX
+#define EXECUTABLE_SUFFIX ".exe"
+
+#undef PATH_SEPARATOR
+#define PATH_SEPARATOR ':'
+
diff --git a/gnu/egcs/gcc/config/m68k/m68k.md b/gnu/egcs/gcc/config/m68k/m68k.md
index 59a509cadaa..a8dac721d99 100644
--- a/gnu/egcs/gcc/config/m68k/m68k.md
+++ b/gnu/egcs/gcc/config/m68k/m68k.md
@@ -3599,7 +3599,7 @@
[(set (match_operand:DI 0 "general_operand" "=o,d")
(and:DI (match_operand:DI 1 "general_operand" "%0,0")
(match_operand:DI 2 "general_operand" "dn,don")))]
- "!TARGET_5200"
+ ""
"*
{
CC_STATUS_INIT;
@@ -3959,7 +3959,7 @@
[(set (match_operand:DI 0 "general_operand" "=od")
(xor:DI (match_operand:DI 1 "general_operand" "%0")
(match_operand:DI 2 "general_operand" "dn")))]
- "!TARGET_5200"
+ ""
"*
{
CC_STATUS_INIT;
diff --git a/gnu/egcs/gcc/config/m68k/mot3300-crt0.S b/gnu/egcs/gcc/config/m68k/mot3300-crt0.S
index 324115b534a..a47353c1e53 100644
--- a/gnu/egcs/gcc/config/m68k/mot3300-crt0.S
+++ b/gnu/egcs/gcc/config/m68k/mot3300-crt0.S
@@ -93,6 +93,6 @@ __stop_monitor:
COMM splimit%,4
COMM environ,4
- IDENT ("$Id: mot3300-crt0.S,v 1.1.1.5 2001/01/29 15:15:45 espie Exp $")
+ IDENT ("$Id: mot3300-crt0.S,v 1.1 1999/05/26 13:35:41 espie Exp $")
IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)")
IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)")
diff --git a/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S b/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S
index b3e52bd2335..9f3ba6211b4 100644
--- a/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S
+++ b/gnu/egcs/gcc/config/m68k/mot3300Mcrt0.S
@@ -137,6 +137,6 @@ LOCAL_LABEL(endofstart):
COMM environ,4
COMM _countbase,4
- IDENT ("$Id: mot3300Mcrt0.S,v 1.1.1.5 2001/01/29 15:15:46 espie Exp $")
+ IDENT ("$Id: mot3300Mcrt0.S,v 1.1 1999/05/26 13:35:41 espie Exp $")
IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)")
IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)")
diff --git a/gnu/egcs/gcc/config/m68k/x-mot3300 b/gnu/egcs/gcc/config/m68k/x-mot3300
index 14d86d180e3..3d7e3c315a9 100644
--- a/gnu/egcs/gcc/config/m68k/x-mot3300
+++ b/gnu/egcs/gcc/config/m68k/x-mot3300
@@ -5,13 +5,11 @@ ALLOCA=alloca.o
# Since ss-950318, with jump optimization enabled, "as" issues a warning
# when assembling combine.s :
# aline nnnnn : Warning: Table overflow: some optimizations lost (SDIs)
-# but later "/bin/ld" complains with
+# but later "ld" complains with
# ld: relocation entry found for non-relocatable symbol in combine.o
# and the produced "cc1" fails with SIGSEGV
-# and "/usr/local/bin/ld" merely fails with
-# collect2: ld terminated with signal 11, core dumped
# Another possible fix would be to split combine.c.
# Since ss-961013, the same happens for expr.c compiled by gcc, but not by cc;
# and for cp/decl.c; aren't those files too big ?
-# With egcs-1.1.2, this also happens for f/expr.o and f/stb.o
-XCFLAGS=`case $@ in combine.o|expr.o|decl.o|stb.o|cse.o) echo -Wa,-j;;esac`
+# With egcs-970910, this also happens for f/expr.o and f/stb.o
+XCFLAGS=`case $@ in combine.o|expr.o|decl.o|f/expr.o|f/stb.o) echo -Wa,-j;;esac`
diff --git a/gnu/egcs/gcc/config/m88k/dgux.h b/gnu/egcs/gcc/config/m88k/dgux.h
index 33234c8182c..bdb4819c4ef 100644
--- a/gnu/egcs/gcc/config/m88k/dgux.h
+++ b/gnu/egcs/gcc/config/m88k/dgux.h
@@ -30,7 +30,7 @@ Boston, MA 02111-1307, USA. */
(TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG)
#ifndef VERSION_INFO2
-#define VERSION_INFO2 "$Revision: 1.1.1.5 $"
+#define VERSION_INFO2 "$Revision: 1.1 $"
#endif
#ifndef NO_BUGS
#define AS_BUG_IMMEDIATE_LABEL
diff --git a/gnu/egcs/gcc/config/m88k/dguxbcs.h b/gnu/egcs/gcc/config/m88k/dguxbcs.h
index 17cf6744e07..00ef9b3a289 100644
--- a/gnu/egcs/gcc/config/m88k/dguxbcs.h
+++ b/gnu/egcs/gcc/config/m88k/dguxbcs.h
@@ -45,7 +45,7 @@ Boston, MA 02111-1307, USA. */
-traditional, or restricting include files to one specific source
target, specify full DG/UX features. */
#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) \
+#define CPP_SPEC "%(cpp_cpu)
%{!msvr4:-D_M88KBCS_TARGET} %{msvr4:-D_DGUX_TARGET}"
/* Linker and library spec's.
diff --git a/gnu/egcs/gcc/config/mips/mips.h b/gnu/egcs/gcc/config/mips/mips.h
index 7360e1b5d64..46f1165d188 100644
--- a/gnu/egcs/gcc/config/mips/mips.h
+++ b/gnu/egcs/gcc/config/mips/mips.h
@@ -3224,11 +3224,7 @@ do \
SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)) = 1; \
} \
\
- /* We can not perform GP optimizations on variables which are in \
- specific sections, except for .sdata and .sbss which are \
- handled above. */ \
- else if (TARGET_GP_OPT && TREE_CODE (DECL) == VAR_DECL \
- && DECL_SECTION_NAME (DECL) == NULL_TREE) \
+ else if (TARGET_GP_OPT && TREE_CODE (DECL) == VAR_DECL) \
{ \
int size = int_size_in_bytes (TREE_TYPE (DECL)); \
\
diff --git a/gnu/egcs/gcc/config/mips/mips.md b/gnu/egcs/gcc/config/mips/mips.md
index 81c5cd38e38..6dde18bf372 100644
--- a/gnu/egcs/gcc/config/mips/mips.md
+++ b/gnu/egcs/gcc/config/mips/mips.md
@@ -10416,27 +10416,3 @@ move\\t%0,%z4\\n\\
[(set_attr "type" "branch")
(set_attr "mode" "none")
(set_attr "length" "2")])
-
-;; For the rare case where we need to load an address into a register
-;; that can not be recognized by the normal movsi/addsi instructions.
-;; I have no idea how many insns this can actually generate. It should
-;; be rare, so over-estimating as 10 instructions should not have any
-;; real performance impact.
-(define_insn "leasi"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (match_operand:SI 1 "address_operand" "p"))]
- "Pmode == SImode"
- "la %0,%a1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")
- (set_attr "length" "10")])
-
-;; Similarly for targets where we have 64bit pointers.
-(define_insn "leadi"
- [(set (match_operand:DI 0 "register_operand" "=d")
- (match_operand:DI 1 "address_operand" "p"))]
- "Pmode == DImode"
- "la %0,%a1"
- [(set_attr "type" "arith")
- (set_attr "mode" "DI")
- (set_attr "length" "10")])
diff --git a/gnu/egcs/gcc/config/mips/vxworks.h b/gnu/egcs/gcc/config/mips/vxworks.h
index 54f6490be1c..0856c37343a 100644
--- a/gnu/egcs/gcc/config/mips/vxworks.h
+++ b/gnu/egcs/gcc/config/mips/vxworks.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999 Free Software Foundation, Inc. */
This file is part of GNU CC.
diff --git a/gnu/egcs/gcc/config/pa/pa.c b/gnu/egcs/gcc/config/pa/pa.c
index 66ea980492d..fa1287e55e5 100644
--- a/gnu/egcs/gcc/config/pa/pa.c
+++ b/gnu/egcs/gcc/config/pa/pa.c
@@ -1129,12 +1129,8 @@ emit_move_sequence (operands, mode, scratch_reg)
&& GET_CODE (SUBREG_REG (operand0)) == REG
&& REGNO (SUBREG_REG (operand0)) >= FIRST_PSEUDO_REGISTER)
{
- /* We must not alter SUBREG_WORD (operand0) since that would confuse
- the code which tracks sets/uses for delete_output_reload. */
- rtx temp = gen_rtx_SUBREG (GET_MODE (operand0),
- reg_equiv_mem [REGNO (SUBREG_REG (operand0))],
- SUBREG_WORD (operand0));
- operand0 = alter_subreg (temp);
+ SUBREG_REG (operand0) = reg_equiv_mem[REGNO (SUBREG_REG (operand0))];
+ operand0 = alter_subreg (operand0);
}
if (scratch_reg
@@ -1146,12 +1142,8 @@ emit_move_sequence (operands, mode, scratch_reg)
&& GET_CODE (SUBREG_REG (operand1)) == REG
&& REGNO (SUBREG_REG (operand1)) >= FIRST_PSEUDO_REGISTER)
{
- /* We must not alter SUBREG_WORD (operand0) since that would confuse
- the code which tracks sets/uses for delete_output_reload. */
- rtx temp = gen_rtx_SUBREG (GET_MODE (operand1),
- reg_equiv_mem [REGNO (SUBREG_REG (operand1))],
- SUBREG_WORD (operand1));
- operand1 = alter_subreg (temp);
+ SUBREG_REG (operand1) = reg_equiv_mem[REGNO (SUBREG_REG (operand1))];
+ operand1 = alter_subreg (operand1);
}
if (scratch_reg && reload_in_progress && GET_CODE (operand0) == MEM
diff --git a/gnu/egcs/gcc/config/rs6000/eabi-ctors.c b/gnu/egcs/gcc/config/rs6000/eabi-ctors.c
index 2ff3c1abc61..ebc23ded35c 100644
--- a/gnu/egcs/gcc/config/rs6000/eabi-ctors.c
+++ b/gnu/egcs/gcc/config/rs6000/eabi-ctors.c
@@ -58,14 +58,14 @@ void (*__atexit)(func_ptr);
void
__do_global_ctors (void)
{
- func_ptr *ptr = &__CTOR_END__[0] - 1;
- func_ptr *start = &__CTOR_LIST__[0];
+ func_ptr *ptr = &__CTOR_LIST__[0];
+ func_ptr *end = &__CTOR_END__[0];
if (__atexit)
__atexit (__do_global_dtors);
/* Call the constructors collected in the .ctors section. */
- for ( ; ptr >= start; ptr--)
+ for ( ; ptr != end; ptr++)
if (*ptr)
(*ptr)();
@@ -77,15 +77,15 @@ __do_global_ctors (void)
void
__do_global_dtors (void)
{
- func_ptr *ptr = &__DTOR_LIST__[0];
- func_ptr *end = &__DTOR_END__[0];
+ func_ptr *ptr = &__DTOR_END__[0] - 1;
+ func_ptr *start = &__DTOR_LIST__[0];
/* Call the termination function in the .fini section. */
(*fini_ptr) ();
/* Call the destructors collected in the .dtors section. Run
the destructors in reverse order. */
- for ( ; ptr < end; ptr++)
+ for ( ; ptr >= start; ptr--)
if (*ptr)
(*ptr)();
}
diff --git a/gnu/egcs/gcc/config/rs6000/linux.h b/gnu/egcs/gcc/config/rs6000/linux.h
index c2a04fa85b1..13e3df2b44c 100644
--- a/gnu/egcs/gcc/config/rs6000/linux.h
+++ b/gnu/egcs/gcc/config/rs6000/linux.h
@@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA. */
#define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
#undef LINK_SPEC
-#define LINK_SPEC "-m elf32ppclinux %{G*} %{shared:-shared} \
+#define LINK_SPEC "-m elf32ppc %{G*} %{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
diff --git a/gnu/egcs/gcc/config/rs6000/rs6000.md b/gnu/egcs/gcc/config/rs6000/rs6000.md
index 23a9715f9be..34ccacf9c2d 100644
--- a/gnu/egcs/gcc/config/rs6000/rs6000.md
+++ b/gnu/egcs/gcc/config/rs6000/rs6000.md
@@ -1,6 +1,5 @@
;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
-;; Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 91-98, 1999 Free Software Foundation, Inc.
;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
;; This file is part of GNU CC.
@@ -28,14 +27,12 @@
(const_string "integer"))
;; Length (in bytes).
-; '(pc)' in the following doesn't include the instruction itself; it is
-; calculated as if the instruction had zero size.
(define_attr "length" ""
(if_then_else (eq_attr "type" "branch")
- (if_then_else (and (ge (minus (match_dup 0) (pc))
+ (if_then_else (and (ge (minus (pc) (match_dup 0))
(const_int -32768))
- (lt (minus (match_dup 0) (pc))
- (const_int 32764)))
+ (lt (minus (pc) (match_dup 0))
+ (const_int 32767)))
(const_int 8)
(const_int 12))
(const_int 4)))
@@ -934,7 +931,7 @@
(match_operand:SI 2 "reg_or_short_operand" "r,I,r,I"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r,r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{cax.|add.} %3,%1,%2
{ai.|addic.} %3,%1,%2
@@ -949,7 +946,7 @@
(match_operand:SI 2 "reg_or_short_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(plus:SI (match_dup 1)
(match_dup 2)))
@@ -966,7 +963,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
(plus:SI (match_dup 1)
(match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
{cax.|add.} %0,%1,%2
{ai.|addic.} %0,%1,%2
@@ -982,7 +979,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(plus:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(plus:SI (match_dup 1)
(match_dup 2)))
@@ -1025,7 +1022,7 @@
(compare:CC (not:SI (match_operand:SI 1 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 2 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
nor. %2,%1,%1
#"
@@ -1037,7 +1034,7 @@
(compare:CC (not:SI (match_operand:SI 1 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 2 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 2)
(not:SI (match_dup 1)))
(set (match_dup 0)
@@ -1051,7 +1048,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(not:SI (match_dup 1)))]
- "! TARGET_POWERPC64"
+ ""
"@
nor. %0,%1,%1
#"
@@ -1064,7 +1061,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(not:SI (match_dup 1)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(not:SI (match_dup 1)))
(set (match_dup 2)
@@ -1107,7 +1104,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "TARGET_POWERPC && ! TARGET_POWERPC64"
+ "TARGET_POWERPC"
"@
subf. %3,%2,%1
#"
@@ -1120,7 +1117,7 @@
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(minus:SI (match_dup 1)
(match_dup 2)))
@@ -1151,7 +1148,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(minus:SI (match_dup 1)
(match_dup 2)))]
- "TARGET_POWERPC && ! TARGET_POWERPC64"
+ "TARGET_POWERPC"
"@
subf. %0,%2,%1
#"
@@ -1166,7 +1163,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "")
(minus:SI (match_dup 1)
(match_dup 2)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(minus:SI (match_dup 1)
(match_dup 2)))
@@ -1327,7 +1324,7 @@
""
"
{
- if (! TARGET_POWER)
+ if (!TARGET_POWER)
{
emit_insn (gen_abssi2_nopower (operands[0], operands[1]));
DONE;
@@ -1344,7 +1341,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=&r,r")
(abs:SI (match_operand:SI 1 "gpc_reg_operand" "r,0")))
(clobber (match_scratch:SI 2 "=&r,&r"))]
- "! TARGET_POWER"
+ "!TARGET_POWER"
"*
{
return (TARGET_POWERPC)
@@ -1357,7 +1354,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=&r,r")
(abs:SI (match_operand:SI 1 "gpc_reg_operand" "r,0")))
(clobber (match_scratch:SI 2 "=&r,&r"))]
- "! TARGET_POWER && reload_completed"
+ "!TARGET_POWER && reload_completed"
[(set (match_dup 2) (ashiftrt:SI (match_dup 1) (const_int 31)))
(set (match_dup 0) (xor:SI (match_dup 2) (match_dup 1)))
(set (match_dup 0) (minus:SI (match_dup 0) (match_dup 2)))]
@@ -1373,7 +1370,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=&r,r")
(neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r,0"))))
(clobber (match_scratch:SI 2 "=&r,&r"))]
- "! TARGET_POWER"
+ "!TARGET_POWER"
"*
{
return (TARGET_POWERPC)
@@ -1386,7 +1383,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=&r,r")
(neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r,0"))))
(clobber (match_scratch:SI 2 "=&r,&r"))]
- "! TARGET_POWER && reload_completed"
+ "!TARGET_POWER && reload_completed"
[(set (match_dup 2) (ashiftrt:SI (match_dup 1) (const_int 31)))
(set (match_dup 0) (xor:SI (match_dup 2) (match_dup 1)))
(set (match_dup 0) (minus:SI (match_dup 2) (match_dup 0)))]
@@ -1403,7 +1400,7 @@
(compare:CC (neg:SI (match_operand:SI 1 "gpc_reg_operand" "r"))
(const_int 0)))
(clobber (match_scratch:SI 2 "=r"))]
- "! TARGET_POWERPC64"
+ ""
"neg. %2,%1"
[(set_attr "type" "compare")])
@@ -1413,7 +1410,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(neg:SI (match_dup 1)))]
- "! TARGET_POWERPC64"
+ ""
"neg. %0,%1"
[(set_attr "type" "compare")])
@@ -1877,7 +1874,7 @@
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r,r,r,r,r,r,r"))
(clobber (match_scratch:CC 4 "=X,X,X,X,X,x,x,X"))]
- "! TARGET_POWERPC64"
+ ""
"@
and. %3,%1,%2
{andil.|andi.} %3,%1,%b2
@@ -1897,7 +1894,7 @@
(const_int 0)))
(clobber (match_scratch:SI 3 ""))
(clobber (match_scratch:CC 4 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(parallel [(set (match_dup 3)
(and:SI (match_dup 1)
(match_dup 2)))
@@ -1916,7 +1913,7 @@
(and:SI (match_dup 1)
(match_dup 2)))
(clobber (match_scratch:CC 4 "=X,X,X,X,X,x,x,X"))]
- "! TARGET_POWERPC64"
+ ""
"@
and. %0,%1,%2
{andil.|andi.} %0,%1,%b2
@@ -1938,7 +1935,7 @@
(and:SI (match_dup 1)
(match_dup 2)))
(clobber (match_scratch:CC 4 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(parallel [(set (match_dup 0)
(and:SI (match_dup 1)
(match_dup 2)))
@@ -1986,7 +1983,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
or. %3,%1,%2
#"
@@ -1999,7 +1996,7 @@
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(ior:SI (match_dup 1)
(match_dup 2)))
@@ -2016,7 +2013,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ior:SI (match_dup 1)
(match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
or. %0,%1,%2
#"
@@ -2030,7 +2027,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(ior:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(ior:SI (match_dup 1)
(match_dup 2)))
@@ -2093,7 +2090,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
xor. %3,%1,%2
#"
@@ -2106,7 +2103,7 @@
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(xor:SI (match_dup 1)
(match_dup 2)))
@@ -2123,7 +2120,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(xor:SI (match_dup 1)
(match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
xor. %0,%1,%2
#"
@@ -2137,7 +2134,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
(xor:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(xor:SI (match_dup 1)
(match_dup 2)))
@@ -2175,7 +2172,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r,r")))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
eqv. %3,%1,%2
#"
@@ -2188,7 +2185,7 @@
(match_operand:SI 2 "gpc_reg_operand" "")))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(not:SI (xor:SI (match_dup 1)
(match_dup 2))))
@@ -2204,7 +2201,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(not:SI (xor:SI (match_dup 1) (match_dup 2))))]
- "! TARGET_POWERPC64"
+ ""
"@
eqv. %0,%1,%2
#"
@@ -2219,7 +2216,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "")
(not:SI (xor:SI (match_dup 1)
(match_dup 2))))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(not:SI (xor:SI (match_dup 1)
(match_dup 2))))
@@ -2241,7 +2238,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
andc. %3,%2,%1
#"
@@ -2254,7 +2251,7 @@
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(and:SI (not:SI (match_dup 1))
(match_dup 2)))
@@ -2271,7 +2268,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(and:SI (not:SI (match_dup 1))
(match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
andc. %0,%2,%1
#"
@@ -2286,7 +2283,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "")
(and:SI (not:SI (match_dup 1))
(match_dup 2)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(and:SI (not:SI (match_dup 1))
(match_dup 2)))
@@ -2308,7 +2305,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
orc. %3,%2,%1
#"
@@ -2321,7 +2318,7 @@
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(ior:SI (not:SI (match_dup 1))
(match_dup 2)))
@@ -2337,7 +2334,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ior:SI (not:SI (match_dup 1)) (match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
orc. %0,%2,%1
#"
@@ -2351,7 +2348,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "")
(ior:SI (not:SI (match_dup 1))
(match_dup 2)))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(ior:SI (not:SI (match_dup 1))
(match_dup 2)))
@@ -2373,7 +2370,7 @@
(not:SI (match_operand:SI 2 "gpc_reg_operand" "r,r")))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
nand. %3,%1,%2
#"
@@ -2386,7 +2383,7 @@
(not:SI (match_operand:SI 2 "gpc_reg_operand" "")))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(ior:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))
@@ -2403,7 +2400,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ior:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))]
- "! TARGET_POWERPC64"
+ ""
"@
nand. %0,%1,%2
#"
@@ -2418,7 +2415,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "")
(ior:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(ior:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))
@@ -2440,7 +2437,7 @@
(not:SI (match_operand:SI 2 "gpc_reg_operand" "r,r")))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
nor. %3,%1,%2
#"
@@ -2453,7 +2450,7 @@
(not:SI (match_operand:SI 2 "gpc_reg_operand" "")))
(const_int 0)))
(clobber (match_scratch:SI 3 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 3)
(and:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))
@@ -2470,7 +2467,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(and:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))]
- "! TARGET_POWERPC64"
+ ""
"@
nor. %0,%1,%2
#"
@@ -2485,7 +2482,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "")
(and:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(set (match_dup 0)
(and:SI (not:SI (match_dup 1))
(not:SI (match_dup 2))))
@@ -2597,10 +2594,10 @@
;; Rotate and shift insns, in all their variants. These support shifts,
;; field inserts and extracts, and various combinations thereof.
(define_expand "insv"
- [(set (zero_extract (match_operand 0 "gpc_reg_operand" "")
- (match_operand:SI 1 "const_int_operand" "")
- (match_operand:SI 2 "const_int_operand" ""))
- (match_operand 3 "gpc_reg_operand" ""))]
+ [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
+ (match_operand:SI 1 "const_int_operand" "i")
+ (match_operand:SI 2 "const_int_operand" "i"))
+ (match_operand:SI 3 "gpc_reg_operand" "r"))]
""
"
{
@@ -2610,15 +2607,9 @@
if (GET_CODE (operands[0]) == SUBREG
&& (GET_MODE_SIZE (GET_MODE (SUBREG_REG (operands[0]))) < UNITS_PER_WORD))
FAIL;
-
- if (TARGET_POWERPC64 && GET_MODE (operands[0]) == DImode)
- emit_insn (gen_insvdi (operands[0], operands[1], operands[2], operands[3]));
- else
- emit_insn (gen_insvsi (operands[0], operands[1], operands[2], operands[3]));
- DONE;
}")
-(define_insn "insvsi"
+(define_insn ""
[(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
(match_operand:SI 1 "const_int_operand" "i")
(match_operand:SI 2 "const_int_operand" "i"))
@@ -2634,7 +2625,7 @@
return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
}")
-(define_insn "*insvsi_internal1"
+(define_insn ""
[(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
(match_operand:SI 1 "const_int_operand" "i")
(match_operand:SI 2 "const_int_operand" "i"))
@@ -2652,7 +2643,7 @@
return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
}")
-(define_insn "*insvsi_internal2"
+(define_insn ""
[(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
(match_operand:SI 1 "const_int_operand" "i")
(match_operand:SI 2 "const_int_operand" "i"))
@@ -2670,7 +2661,7 @@
return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
}")
-(define_insn "*insvsi_internal3"
+(define_insn ""
[(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
(match_operand:SI 1 "const_int_operand" "i")
(match_operand:SI 2 "const_int_operand" "i"))
@@ -2688,7 +2679,7 @@
return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
}")
-(define_insn "*insvsi_internal4"
+(define_insn ""
[(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
(match_operand:SI 1 "const_int_operand" "i")
(match_operand:SI 2 "const_int_operand" "i"))
@@ -2709,10 +2700,10 @@
return \"{rlimi|rlwimi} %0,%3,%h5,%h2,%h1\";
}")
-(define_insn "insvdi"
+(define_insn ""
[(set (zero_extract:DI (match_operand:DI 0 "gpc_reg_operand" "+r")
- (match_operand:SI 1 "const_int_operand" "i")
- (match_operand:SI 2 "const_int_operand" "i"))
+ (match_operand:DI 1 "const_int_operand" "i")
+ (match_operand:DI 2 "const_int_operand" "i"))
(match_operand:DI 3 "gpc_reg_operand" "r"))]
"TARGET_POWERPC64"
"*
@@ -2720,15 +2711,15 @@
int start = INTVAL (operands[2]) & 63;
int size = INTVAL (operands[1]) & 63;
- operands[1] = GEN_INT (64 - start - size);
- return \"rldimi %0,%3,%H1,%H2\";
+ operands[2] = GEN_INT (64 - start - size);
+ return \"rldimi %0,%3,%H2,%H1\";
}")
(define_expand "extzv"
- [(set (match_operand 0 "gpc_reg_operand" "")
- (zero_extract (match_operand 1 "gpc_reg_operand" "")
- (match_operand:SI 2 "const_int_operand" "")
- (match_operand:SI 3 "const_int_operand" "")))]
+ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ (zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")
+ (match_operand:SI 2 "const_int_operand" "i")
+ (match_operand:SI 3 "const_int_operand" "i")))]
""
"
{
@@ -2738,15 +2729,9 @@
if (GET_CODE (operands[0]) == SUBREG
&& (GET_MODE_SIZE (GET_MODE (SUBREG_REG (operands[0]))) < UNITS_PER_WORD))
FAIL;
-
- if (TARGET_POWERPC64 && GET_MODE (operands[1]) == DImode)
- emit_insn (gen_extzvdi (operands[0], operands[1], operands[2], operands[3]));
- else
- emit_insn (gen_extzvsi (operands[0], operands[1], operands[2], operands[3]));
- DONE;
}")
-(define_insn "extzvsi"
+(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "const_int_operand" "i")
@@ -2764,14 +2749,14 @@
return \"{rlinm|rlwinm} %0,%1,%3,%s2,31\";
}")
-(define_insn "*extzvsi_internal1"
+(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x")
(compare:CC (zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "const_int_operand" "i")
(match_operand:SI 3 "const_int_operand" "i"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=r"))]
- "! TARGET_POWERPC64"
+ ""
"*
{
int start = INTVAL (operands[3]) & 31;
@@ -2801,7 +2786,7 @@
}"
[(set_attr "type" "compare")])
-(define_insn "*extzvsi_internal2"
+(define_insn ""
[(set (match_operand:CC 4 "cc_reg_operand" "=x")
(compare:CC (zero_extract:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "const_int_operand" "i")
@@ -2809,7 +2794,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(zero_extract:SI (match_dup 1) (match_dup 2) (match_dup 3)))]
- "! TARGET_POWERPC64"
+ ""
"*
{
int start = INTVAL (operands[3]) & 31;
@@ -2829,11 +2814,11 @@
}"
[(set_attr "type" "delayed_compare")])
-(define_insn "extzvdi"
+(define_insn ""
[(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(zero_extract:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "const_int_operand" "i")
- (match_operand:SI 3 "const_int_operand" "i")))]
+ (match_operand:DI 2 "const_int_operand" "i")
+ (match_operand:DI 3 "const_int_operand" "i")))]
"TARGET_POWERPC64"
"*
{
@@ -2848,11 +2833,11 @@
return \"rldicl %0,%1,%3,%2\";
}")
-(define_insn "*extzvdi_internal1"
+(define_insn ""
[(set (match_operand:CC 0 "gpc_reg_operand" "=x")
(compare:CC (zero_extract:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "const_int_operand" "i")
- (match_operand:SI 3 "const_int_operand" "i"))
+ (match_operand:DI 2 "const_int_operand" "i")
+ (match_operand:DI 3 "const_int_operand" "i"))
(const_int 0)))
(clobber (match_scratch:DI 4 "=r"))]
"TARGET_POWERPC64"
@@ -2869,11 +2854,11 @@
return \"rldicl. %4,%1,%3,%2\";
}")
-(define_insn "*extzvdi_internal2"
+(define_insn ""
[(set (match_operand:CC 4 "gpc_reg_operand" "=x")
(compare:CC (zero_extract:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "const_int_operand" "i")
- (match_operand:SI 3 "const_int_operand" "i"))
+ (match_operand:DI 2 "const_int_operand" "i")
+ (match_operand:DI 3 "const_int_operand" "i"))
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(zero_extract:DI (match_dup 1) (match_dup 2) (match_dup 3)))]
@@ -2904,7 +2889,7 @@
(match_operand:SI 2 "reg_or_cint_operand" "ri"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r"))]
- "! TARGET_POWERPC64"
+ ""
"{rl%I2nm.|rlw%I2nm.} %3,%1,%h2,0xffffffff"
[(set_attr "type" "delayed_compare")])
@@ -2915,7 +2900,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(rotate:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"{rl%I2nm.|rlw%I2nm.} %0,%1,%h2,0xffffffff"
[(set_attr "type" "delayed_compare")])
@@ -2935,7 +2920,7 @@
(match_operand:SI 3 "mask_operand" "T"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=r"))]
- "! TARGET_POWERPC64"
+ ""
"{rl%I2nm.|rlw%I2nm.} %4,%1,%h2,%m3,%M3"
[(set_attr "type" "delayed_compare")])
@@ -2948,7 +2933,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(and:SI (rotate:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "! TARGET_POWERPC64"
+ ""
"{rl%I2nm.|rlw%I2nm.} %0,%1,%h2,%m3,%M3"
[(set_attr "type" "delayed_compare")])
@@ -3045,14 +3030,16 @@
"TARGET_POWER"
"@
sle %0,%1,%2
- {sli|slwi} %0,%1,%h2")
+ {sli|slwi} %0,%1,%h2"
+ [(set_attr "length" "8")])
(define_insn "ashlsi3_no_power"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(ashift:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_cint_operand" "ri")))]
"! TARGET_POWER"
- "{sl|slw}%I2 %0,%1,%h2")
+ "{sl|slw}%I2 %0,%1,%h2"
+ [(set_attr "length" "8")])
(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
@@ -3073,7 +3060,7 @@
(match_operand:SI 2 "reg_or_cint_operand" "ri"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=r"))]
- "! TARGET_POWER && ! TARGET_POWERPC64"
+ "! TARGET_POWER"
"{sl|slw}%I2. %3,%1,%h2"
[(set_attr "type" "delayed_compare")])
@@ -3098,7 +3085,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(ashift:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && ! TARGET_POWERPC64"
+ "! TARGET_POWER"
"{sl|slw}%I2. %0,%1,%h2"
[(set_attr "type" "delayed_compare")])
@@ -3118,7 +3105,7 @@
(match_operand:SI 3 "mask_operand" "T"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=r"))]
- "! TARGET_POWERPC64 && includes_lshift_p (operands[2], operands[3])"
+ "includes_lshift_p (operands[2], operands[3])"
"{rlinm.|rlwinm.} %4,%1,%h2,%m3,%M3"
[(set_attr "type" "delayed_compare")])
@@ -3131,7 +3118,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(and:SI (ashift:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "! TARGET_POWERPC64 && includes_lshift_p (operands[2], operands[3])"
+ "includes_lshift_p (operands[2], operands[3])"
"{rlinm.|rlwinm.} %0,%1,%h2,%m3,%M3"
[(set_attr "type" "delayed_compare")])
@@ -3191,7 +3178,7 @@
(match_operand:SI 2 "reg_or_cint_operand" "O,ri"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=X,r"))]
- "! TARGET_POWER && ! TARGET_POWERPC64"
+ "! TARGET_POWER"
"@
mr. %1,%1
{sr|srw}%I2. %3,%1,%h2"
@@ -3219,7 +3206,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(lshiftrt:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWER && ! TARGET_POWERPC64"
+ "! TARGET_POWER"
"@
mr. %0,%1
{sr|srw}%I2. %0,%1,%h2"
@@ -3241,7 +3228,7 @@
(match_operand:SI 3 "mask_operand" "T"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=r"))]
- "! TARGET_POWERPC64 && includes_rshift_p (operands[2], operands[3])"
+ "includes_rshift_p (operands[2], operands[3])"
"{rlinm.|rlwinm.} %4,%1,%s2,%m3,%M3"
[(set_attr "type" "delayed_compare")])
@@ -3254,7 +3241,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(and:SI (lshiftrt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
- "! TARGET_POWERPC64 && includes_rshift_p (operands[2], operands[3])"
+ "includes_rshift_p (operands[2], operands[3])"
"{rlinm.|rlwinm.} %0,%1,%s2,%m3,%M3"
[(set_attr "type" "delayed_compare")])
@@ -3746,10 +3733,10 @@
"")
(define_expand "movsfcc"
- [(set (match_operand:SF 0 "gpc_reg_operand" "")
+ [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
(if_then_else:SF (match_operand 1 "comparison_operator" "")
- (match_operand:SF 2 "gpc_reg_operand" "")
- (match_operand:SF 3 "gpc_reg_operand" "")))]
+ (match_operand:SF 2 "gpc_reg_operand" "f")
+ (match_operand:SF 3 "gpc_reg_operand" "f")))]
"TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT"
"
{
@@ -3993,10 +3980,10 @@
"")
(define_expand "movdfcc"
- [(set (match_operand:DF 0 "gpc_reg_operand" "")
+ [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
(if_then_else:DF (match_operand 1 "comparison_operator" "")
- (match_operand:DF 2 "gpc_reg_operand" "")
- (match_operand:DF 3 "gpc_reg_operand" "")))]
+ (match_operand:DF 2 "gpc_reg_operand" "f")
+ (match_operand:DF 3 "gpc_reg_operand" "f")))]
"TARGET_PPC_GFXOPT && TARGET_HARD_FLOAT"
"
{
@@ -4092,7 +4079,7 @@
(clobber (match_dup 4))
(clobber (match_dup 5))
(clobber (reg:DF 76))])]
- "! TARGET_POWERPC64 && TARGET_HARD_FLOAT"
+ "TARGET_HARD_FLOAT"
"
{
operands[2] = force_reg (SImode, GEN_INT (0x43300000));
@@ -4109,7 +4096,7 @@
(clobber (match_operand:SI 4 "gpc_reg_operand" "=r"))
(clobber (match_operand 5 "gpc_reg_operand" "=b"))
(clobber (reg:DF 76))]
- "! TARGET_POWERPC64 && TARGET_HARD_FLOAT"
+ "TARGET_HARD_FLOAT"
"#"
[(set_attr "length" "24")])
@@ -4121,7 +4108,7 @@
(clobber (match_operand:SI 4 "gpc_reg_operand" ""))
(clobber (match_operand 5 "gpc_reg_operand" ""))
(clobber (reg:DF 76))]
- "! TARGET_POWERPC64 && TARGET_HARD_FLOAT"
+ "TARGET_HARD_FLOAT"
[(set (match_dup 4)
(xor:SI (match_dup 1)
(match_dup 6)))
@@ -4153,7 +4140,7 @@
(use (match_dup 3))
(clobber (match_dup 4))
(clobber (reg:DF 76))])]
- "! TARGET_POWERPC64 && TARGET_HARD_FLOAT"
+ "TARGET_HARD_FLOAT"
"
{
operands[2] = force_reg (SImode, GEN_INT (0x43300000));
@@ -4168,7 +4155,7 @@
(use (match_operand:DF 3 "gpc_reg_operand" "f"))
(clobber (match_operand 4 "gpc_reg_operand" "=b"))
(clobber (reg:DF 76))]
- "! TARGET_POWERPC64 && TARGET_HARD_FLOAT"
+ "TARGET_HARD_FLOAT"
"#"
[(set_attr "length" "20")])
@@ -4179,7 +4166,7 @@
(use (match_operand:DF 3 "gpc_reg_operand" ""))
(clobber (match_operand 4 "gpc_reg_operand" ""))
(clobber (reg:DF 76))]
- "! TARGET_POWERPC64 && TARGET_HARD_FLOAT"
+ "TARGET_HARD_FLOAT"
[(set (match_dup 4)
(unspec [(const_int 0)] 11))
(set (match_dup 5)
@@ -4307,7 +4294,7 @@
"TARGET_HARD_FLOAT"
"
{
- if (! TARGET_POWER2 && ! TARGET_POWERPC)
+ if (!TARGET_POWER2 && !TARGET_POWERPC)
{
emit_insn (gen_trunc_call (operands[0], operands[1],
gen_rtx_SYMBOL_REF (Pmode, RS6000_ITRUNC)));
@@ -4336,9 +4323,8 @@
(clobber (match_operand 3 "gpc_reg_operand" ""))
(clobber (reg:DI 76))]
"TARGET_HARD_FLOAT"
- [(clobber (match_dup 2))
- (set (subreg:SI (match_dup 2) 0)
- (fix:SI (match_operand:DF 1 "gpc_reg_operand" "")))
+ [(set (match_dup 2)
+ (sign_extend:DI (fix:SI (match_operand:DF 1 "gpc_reg_operand" ""))))
(set (match_dup 3)
(unspec [(const_int 0)] 11))
(set (match_dup 4)
@@ -4447,8 +4433,8 @@
}")
(define_insn "*fctiwz"
- [(set (subreg:SI (match_operand:DI 0 "gpc_reg_operand" "=f") 0)
- (fix:SI (match_operand:DF 1 "gpc_reg_operand" "f")))]
+ [(set (match_operand:DI 0 "gpc_reg_operand" "=f")
+ (sign_extend:DI (fix:SI (match_operand:DF 1 "gpc_reg_operand" "f"))))]
"(TARGET_POWER2 || TARGET_POWERPC) && TARGET_HARD_FLOAT"
"{fcirz|fctiwz} %0,%1"
[(set_attr "type" "fp")])
@@ -5466,41 +5452,41 @@
(define_insn "*anddi3_internal2"
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x,x,x")
(compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r")
- (match_operand:DI 2 "and64_operand" "r,S,K,J"))
+ (match_operand:DI 2 "and64_operand" "r,K,J,S"))
(const_int 0)))
(clobber (match_scratch:DI 3 "=r,r,r,r"))]
"TARGET_POWERPC64"
"@
and. %3,%1,%2
- rldic%B2. %3,%1,0,%S2
andi. %3,%1,%b2
- andis. %3,%1,%u2"
- [(set_attr "type" "compare,delayed_compare,compare,compare")])
+ andis. %3,%1,%u2
+ rldic%B2. %3,%1,0,%S2"
+ [(set_attr "type" "compare,compare,compare,delayed_compare")])
(define_insn "*anddi3_internal3"
[(set (match_operand:CC 3 "cc_reg_operand" "=x,x,x,x")
(compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r")
- (match_operand:DI 2 "and64_operand" "r,S,K,J"))
+ (match_operand:DI 2 "and64_operand" "r,K,J,S"))
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,r")
(and:DI (match_dup 1) (match_dup 2)))]
"TARGET_POWERPC64"
"@
and. %0,%1,%2
- rldic%B2. %0,%1,0,%S2
andi. %0,%1,%b2
- andis. %0,%1,%u2"
- [(set_attr "type" "compare,delayed_compare,compare,compare")])
+ andis. %0,%1,%u2
+ rldic%B2. %0,%1,0,%S2"
+ [(set_attr "type" "compare,compare,compare,delayed_compare")])
(define_expand "iordi3"
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(ior:DI (match_operand:DI 1 "gpc_reg_operand" "")
- (match_operand:DI 2 "reg_or_u_cint_operand" "")))]
+ (match_operand:DI 2 "reg_or_cint_operand" "")))]
"TARGET_POWERPC64"
"
{
if (GET_CODE (operands[2]) == CONST_INT
- && ! logical_u_operand (operands[2], DImode))
+ && ! logical_operand (operands[2], DImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
@@ -5511,26 +5497,12 @@
emit_insn (gen_iordi3 (operands[0], tmp, GEN_INT (value & 0xffff)));
DONE;
}
- else if (GET_CODE (operands[2]) == CONST_DOUBLE
- && ! logical_u_operand (operands[2], DImode))
- {
- HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]);
- rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
- ? operands[0] : gen_reg_rtx (DImode));
-
- emit_insn (gen_iordi3 (tmp, operands[1],
- immed_double_const (value
- & (~ (HOST_WIDE_INT) 0xffff),
- 0, DImode)));
- emit_insn (gen_iordi3 (operands[0], tmp, GEN_INT (value & 0xffff)));
- DONE;
- }
}")
(define_insn "*iordi3_internal1"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r")
(ior:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r")
- (match_operand:DI 2 "logical_u_operand" "r,K,JF")))]
+ (match_operand:DI 2 "logical_operand" "r,K,J")))]
"TARGET_POWERPC64"
"@
or %0,%1,%2
@@ -5564,36 +5536,25 @@
(define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(ior:DI (match_operand:DI 1 "gpc_reg_operand" "")
- (match_operand:DI 2 "non_logical_u_cint_operand" "")))]
+ (match_operand:DI 2 "non_logical_cint_operand" "")))]
"TARGET_POWERPC64"
[(set (match_dup 0) (ior:DI (match_dup 1) (match_dup 3)))
(set (match_dup 0) (ior:DI (match_dup 0) (match_dup 4)))]
"
{
- if (GET_CODE (operands[2]) == CONST_DOUBLE)
- {
- HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]);
- operands[3] = immed_double_const (value & (~ (HOST_WIDE_INT) 0xffff),
- 0, DImode);
- operands[4] = GEN_INT (value & 0xffff);
- }
- else
- {
- operands[3] = GEN_INT (INTVAL (operands[2])
- & (~ (HOST_WIDE_INT) 0xffff));
- operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff);
- }
+ operands[3] = GEN_INT (INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff));
+ operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff);
}")
(define_expand "xordi3"
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(xor:DI (match_operand:DI 1 "gpc_reg_operand" "")
- (match_operand:DI 2 "reg_or_u_cint_operand" "")))]
+ (match_operand:DI 2 "reg_or_cint_operand" "")))]
"TARGET_POWERPC64"
"
{
if (GET_CODE (operands[2]) == CONST_INT
- && ! logical_u_operand (operands[2], DImode))
+ && ! logical_operand (operands[2], DImode))
{
HOST_WIDE_INT value = INTVAL (operands[2]);
rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
@@ -5604,26 +5565,12 @@
emit_insn (gen_xordi3 (operands[0], tmp, GEN_INT (value & 0xffff)));
DONE;
}
- else if (GET_CODE (operands[2]) == CONST_DOUBLE
- && ! logical_u_operand (operands[2], DImode))
- {
- HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]);
- rtx tmp = ((no_new_pseudos || rtx_equal_p (operands[0], operands[1]))
- ? operands[0] : gen_reg_rtx (DImode));
-
- emit_insn (gen_xordi3 (tmp, operands[1],
- immed_double_const (value
- & (~ (HOST_WIDE_INT) 0xffff),
- 0, DImode)));
- emit_insn (gen_xordi3 (operands[0], tmp, GEN_INT (value & 0xffff)));
- DONE;
- }
}")
(define_insn "*xordi3_internal1"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r")
(xor:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r")
- (match_operand:DI 2 "logical_u_operand" "r,K,JF")))]
+ (match_operand:DI 2 "logical_operand" "r,K,J")))]
"TARGET_POWERPC64"
"@
xor %0,%1,%2
@@ -5657,25 +5604,14 @@
(define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(xor:DI (match_operand:DI 1 "gpc_reg_operand" "")
- (match_operand:DI 2 "non_logical_u_cint_operand" "")))]
+ (match_operand:DI 2 "non_logical_cint_operand" "")))]
"TARGET_POWERPC64"
[(set (match_dup 0) (xor:DI (match_dup 1) (match_dup 3)))
(set (match_dup 0) (xor:DI (match_dup 0) (match_dup 4)))]
"
{
- if (GET_CODE (operands[2]) == CONST_DOUBLE)
- {
- HOST_WIDE_INT value = CONST_DOUBLE_LOW (operands[2]);
- operands[3] = immed_double_const (value & (~ (HOST_WIDE_INT) 0xffff),
- 0, DImode);
- operands[4] = GEN_INT (value & 0xffff);
- }
- else
- {
- operands[3] = GEN_INT (INTVAL (operands[2])
- & (~ (HOST_WIDE_INT) 0xffff));
- operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff);
- }
+ operands[3] = GEN_INT (INTVAL (operands[2]) & (~ (HOST_WIDE_INT) 0xffff));
+ operands[4] = GEN_INT (INTVAL (operands[2]) & 0xffff);
}")
(define_insn "*eqvdi3_internal1"
@@ -5827,14 +5763,14 @@
(define_insn "elf_high"
[(set (match_operand:SI 0 "gpc_reg_operand" "=b")
(high:SI (match_operand 1 "" "")))]
- "TARGET_ELF && ! TARGET_64BIT"
+ "TARGET_ELF && !TARGET_64BIT"
"{liu|lis} %0,%1@ha")
(define_insn "elf_low"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
(match_operand 2 "" "")))]
- "TARGET_ELF && ! TARGET_64BIT"
+ "TARGET_ELF && !TARGET_64BIT"
"{cal|la} %0,%2@l(%1)")
;; Set up a register with a value from the GOT table
@@ -5873,6 +5809,21 @@
"{l|lwz} %0,%a1@got(%2)"
[(set_attr "type" "load")])
+;; Sometimes, though, the GOT `register' will be on the stack. Deal with
+;; this case specially.
+;; Force final to split this insn (if it hasn't been split already) to
+;; avoid having to create a suitable output template.
+(define_insn "*movsi_got_internal_mem"
+ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+ (unspec [(match_operand:SI 1 "got_no_const_operand" "")
+ (match_operand:SI 2 "memory_operand" "m")] 8))]
+ "(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+ && flag_pic == 1
+ && (reload_in_progress || reload_completed)"
+ "#"
+ [(set_attr "type" "load")
+ (set_attr "length" "8")])
+
;; Used by sched, shorten_branches and final when the GOT pseudo reg
;; didn't get allocated to a hard register.
(define_split
@@ -6067,7 +6018,7 @@
(compare:CC (match_operand:SI 1 "gpc_reg_operand" "r")
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r") (match_dup 1))]
- "! TARGET_POWERPC64"
+ ""
"mr. %0,%1"
[(set_attr "type" "compare")])
@@ -6209,8 +6160,7 @@
operands[1] = force_reg (SFmode, operands[1]);
}
- if (CONSTANT_P (operands[1]) && TARGET_HARD_FLOAT
- && ! easy_fp_constant (operands[1], SFmode))
+ if (CONSTANT_P (operands[1]) && TARGET_HARD_FLOAT)
{
operands[1] = force_const_mem (SFmode, operands[1]);
if (! memory_address_p (SFmode, XEXP (operands[1], 0))
@@ -6372,8 +6322,8 @@
;; The "??" is a kludge until we can figure out a more reasonable way
;; of handling these non-offsettable values.
(define_insn "*movdf_hardfloat32"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,m,!r,!r,!r,f,f,m")
- (match_operand:DF 1 "input_operand" "r,m,r,G,H,F,f,m,f"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,o,!r,!r,!r,f,f,m")
+ (match_operand:DF 1 "input_operand" "r,o,r,G,H,F,f,m,f"))]
"! TARGET_POWERPC64 && TARGET_HARD_FLOAT
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
@@ -6385,70 +6335,24 @@
abort ();
case 0:
/* We normally copy the low-numbered register first. However, if
- the first register operand 0 is the same as the second register
- of operand 1, we must copy in the opposite order. */
+ the first register operand 0 is the same as the second register of
+ operand 1, we must copy in the opposite order. */
if (REGNO (operands[0]) == REGNO (operands[1]) + 1)
return \"mr %L0,%L1\;mr %0,%1\";
else
return \"mr %0,%1\;mr %L0,%L1\";
case 1:
- if (offsettable_memref_p (operands[1])
- || (GET_CODE (operands[1]) == MEM
- && (GET_CODE (XEXP (operands[1], 0)) == LO_SUM
- || GET_CODE (XEXP (operands[1], 0)) == PRE_INC
- || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)))
- {
- /* If the low-address word is used in the address, we must load
- it last. Otherwise, load it first. Note that we cannot have
- auto-increment in that case since the address register is
- known to be dead. */
- if (refers_to_regno_p (REGNO (operands[0]), REGNO (operands[0]) + 1,
- operands[1], 0))
- return \"{l|lwz} %L0,%L1\;{l|lwz} %0,%1\";
- else
- return \"{l%U1|lwz%U1} %0,%1\;{l|lwz} %L0,%L1\";
- }
+ /* If the low-address word is used in the address, we must load it
+ last. Otherwise, load it first. Note that we cannot have
+ auto-increment in that case since the address register is known to be
+ dead. */
+ if (refers_to_regno_p (REGNO (operands[0]), REGNO (operands[0]) + 1,
+ operands [1], 0))
+ return \"{l|lwz} %L0,%L1\;{l|lwz} %0,%1\";
else
- {
- rtx addreg;
-
- addreg = find_addr_reg (XEXP (operands[1], 0));
- if (refers_to_regno_p (REGNO (operands[0]),
- REGNO (operands[0]) + 1,
- operands[1], 0))
- {
- output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);
- output_asm_insn (\"{lx|lwzx} %L0,%1\", operands);
- output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg);
- return \"{lx|lwzx} %0,%1\";
- }
- else
- {
- output_asm_insn (\"{lx|lwzx} %0,%1\", operands);
- output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);
- output_asm_insn (\"{lx|lwzx} %L0,%1\", operands);
- output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg);
- return \"\";
- }
- }
+ return \"{l%U1|lwz%U1} %0,%1\;{l|lwz} %L0,%L1\";
case 2:
- if (offsettable_memref_p (operands[0])
- || (GET_CODE (operands[0]) == MEM
- && (GET_CODE (XEXP (operands[0], 0)) == LO_SUM
- || GET_CODE (XEXP (operands[0], 0)) == PRE_INC
- || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)))
- return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\";
- else
- {
- rtx addreg;
-
- addreg = find_addr_reg (XEXP (operands[0], 0));
- output_asm_insn (\"{stx|stwx} %1,%0\", operands);
- output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);
- output_asm_insn (\"{stx|stwx} %L1,%0\", operands);
- output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg);
- return \"\";
- }
+ return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\";
case 3:
case 4:
case 5:
@@ -6462,7 +6366,7 @@
}
}"
[(set_attr "type" "*,load,store,*,*,*,fp,fpload,fpstore")
- (set_attr "length" "8,16,16,8,12,16,*,*,*")])
+ (set_attr "length" "8,8,8,8,12,16,*,*,*")])
(define_insn "*movdf_softfloat32"
[(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r")
@@ -6671,14 +6575,13 @@
(set (match_dup 3) (match_dup 1))]
"
{
- HOST_WIDE_INT value = INTVAL (operands[1]);
operands[2] = gen_rtx_SUBREG (SImode, operands[0], WORDS_BIG_ENDIAN == 0);
operands[3] = gen_rtx_SUBREG (SImode, operands[0], WORDS_BIG_ENDIAN != 0);
#if HOST_BITS_PER_WIDE_INT == 32
- operands[4] = (value & 0x80000000) ? constm1_rtx : const0_rtx;
+ operands[4] = (INTVAL (operands[1]) & 0x80000000) ? constm1_rtx : const0_rtx;
#else
- operands[4] = GEN_INT (value >> 32);
- operands[1] = GEN_INT ((value & 0x7fffffff) - (value & 0x80000000));
+ operands[4] = (HOST_WIDE_INT) INTVAL (operands[1]) >> 32;
+ operands[1] = INTVAL (operands[1]) & 0xffffffff;
#endif
}")
@@ -6777,12 +6680,9 @@
[(set (match_dup 0)
(match_dup 2))
(set (match_dup 0)
- (zero_extend:DI (match_dup 3)))]
+ (zero_extend:DI (subreg:SI (match_dup 0) 0)))]
"
-{
- operands[2] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
- operands[3] = gen_lowpart_common (SImode, operands[0]);
-}")
+{ operands[2] = GEN_INT (CONST_DOUBLE_LOW (operands[1])); }")
(define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "")
@@ -6818,8 +6718,7 @@
(define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "")
(match_operand:DI 1 "const_double_operand" ""))]
- "HOST_BITS_PER_WIDE_INT == 32 && TARGET_POWERPC64
- && num_insns_constant (operands[1], DImode) > 1"
+ "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
[(set (match_dup 0)
(match_dup 2))
(set (match_dup 0)
@@ -6830,40 +6729,29 @@
(match_dup 3)))]
"
{
+ HOST_WIDE_INT low;
+ HOST_WIDE_INT high;
+
if (GET_CODE (operands[1]) == CONST_DOUBLE)
{
- operands[2] = GEN_INT (CONST_DOUBLE_HIGH (operands[1]));
- operands[3] = immed_double_const (CONST_DOUBLE_LOW (operands[1]),
- 0, DImode);
+ low = CONST_DOUBLE_LOW (operands[1]);
+ high = CONST_DOUBLE_HIGH (operands[1]);
}
else
+#if HOST_BITS_PER_WIDE_INT == 32
{
- HOST_WIDE_INT value = INTVAL (operands[1]);
- operands[2] = (value & 0x80000000) ? constm1_rtx : const0_rtx;
- operands[3] = immed_double_const (value, 0, DImode);
+ low = INTVAL (operands[1]);
+ high = (low < 0) ? ~0 : 0;
+ }
+#else
+ {
+ low = INTVAL (operands[1]) & 0xffffffff;
+ high = (HOST_WIDE_INT) INTVAL (operands[1]) >> 32;
}
-}")
-
-(define_split
- [(set (match_operand:DI 0 "gpc_reg_operand" "")
- (match_operand:DI 1 "const_int_operand" ""))]
- "HOST_BITS_PER_WIDE_INT != 32 && TARGET_POWERPC64
- && num_insns_constant (operands[1], DImode) > 1"
- [(set (match_dup 0)
- (match_dup 2))
- (set (match_dup 0)
- (ashift:DI (match_dup 0)
- (const_int 32)))
- (set (match_dup 0)
- (ior:DI (match_dup 0)
- (match_dup 3)))]
- "
-{
-#if HOST_BITS_PER_WIDE_INT != 32
- HOST_WIDE_INT value = INTVAL (operands[1]);
- operands[2] = GEN_INT (value >> 32);
- operands[3] = GEN_INT ((value & 0x7fffffff) - (value & 0x80000000));
#endif
+
+ operands[2] = GEN_INT (high);
+ operands[3] = GEN_INT (low);
}")
(define_insn ""
@@ -6964,7 +6852,7 @@
[(set (match_operand:TI 0 "reg_or_mem_operand" "=m,????r,????r")
(match_operand:TI 1 "reg_or_mem_operand" "r,r,m"))
(clobber (match_scratch:SI 2 "=X,X,X"))]
- "TARGET_STRING && ! TARGET_POWER && ! TARGET_POWERPC64
+ "TARGET_STRING && !TARGET_POWER && ! TARGET_POWERPC64
&& (gpc_reg_operand (operands[0], TImode) || gpc_reg_operand (operands[1], TImode))"
"*
{
@@ -7194,7 +7082,7 @@
[(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
(match_operand:SI 2 "gpc_reg_operand" "r"))
(clobber (match_scratch:SI 3 "X"))])]
- "TARGET_STRING && ! TARGET_POWER"
+ "TARGET_STRING && !TARGET_POWER"
"{stsi|stswi} %2,%1,%O0"
[(set_attr "type" "store")])
@@ -7275,7 +7163,7 @@
(clobber (reg:SI 11))
(clobber (reg:SI 12))
(clobber (match_scratch:SI 5 "X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING && !TARGET_POWER
&& ((INTVAL (operands[2]) > 24 && INTVAL (operands[2]) < 32) || INTVAL (operands[2]) == 0)
&& (REGNO (operands[0]) < 5 || REGNO (operands[0]) > 12)
&& (REGNO (operands[1]) < 5 || REGNO (operands[1]) > 12)
@@ -7334,7 +7222,7 @@
(clobber (reg:SI 11))
(clobber (reg:SI 12))
(clobber (match_scratch:SI 5 "X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING && !TARGET_POWER
&& INTVAL (operands[2]) > 16 && INTVAL (operands[2]) <= 32
&& (REGNO (operands[0]) < 7 || REGNO (operands[0]) > 12)
&& (REGNO (operands[1]) < 7 || REGNO (operands[1]) > 12)
@@ -7387,7 +7275,7 @@
(clobber (reg:SI 11))
(clobber (reg:SI 12))
(clobber (match_scratch:SI 5 "X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING && !TARGET_POWER
&& INTVAL (operands[2]) > 8 && INTVAL (operands[2]) <= 16
&& (REGNO (operands[0]) < 9 || REGNO (operands[0]) > 12)
&& (REGNO (operands[1]) < 9 || REGNO (operands[1]) > 12)
@@ -7404,7 +7292,7 @@
(use (match_operand 3 "" ""))
(clobber (match_scratch:DI 4 ""))
(clobber (match_scratch:SI 5 ""))])]
- "TARGET_STRING && ! TARGET_64BIT"
+ "TARGET_STRING && !TARGET_64BIT"
"")
(define_insn ""
@@ -7414,7 +7302,7 @@
(use (match_operand:SI 3 "immediate_operand" "i"))
(clobber (match_scratch:DI 4 "=&r"))
(clobber (match_scratch:SI 5 "=q"))]
- "TARGET_STRING && TARGET_POWER && ! TARGET_64BIT
+ "TARGET_STRING && TARGET_POWER && !TARGET_64BIT
&& INTVAL (operands[2]) > 4 && INTVAL (operands[2]) <= 8"
"{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
[(set_attr "type" "load")
@@ -7427,7 +7315,7 @@
(use (match_operand:SI 3 "immediate_operand" "i"))
(clobber (match_scratch:DI 4 "=&r"))
(clobber (match_scratch:SI 5 "X"))]
- "TARGET_STRING && ! TARGET_POWER && ! TARGET_64BIT
+ "TARGET_STRING && !TARGET_POWER && !TARGET_64BIT
&& INTVAL (operands[2]) > 4 && INTVAL (operands[2]) <= 8"
"{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
[(set_attr "type" "load")
@@ -7464,7 +7352,7 @@
(use (match_operand:SI 3 "immediate_operand" "i"))
(clobber (match_scratch:SI 4 "=&r"))
(clobber (match_scratch:SI 5 "X"))]
- "TARGET_STRING && ! TARGET_POWER
+ "TARGET_STRING && !TARGET_POWER
&& INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 4"
"{lsi|lswi} %4,%1,%2\;{stsi|stswi} %4,%0,%2"
[(set_attr "type" "load")
@@ -7871,8 +7759,7 @@
rs6000_output_load_toc_table (asm_out_file, 30);
return \"\";
}"
- [(set_attr "type" "load")
- (set_attr "length" "24")])
+ [(set_attr "type" "load")])
;; A function pointer under AIX is a pointer to a data area whose first word
;; contains the actual address of the function, whose second word contains a
@@ -8852,7 +8739,7 @@
(define_insn ""
[(set (match_operand:CCUNS 0 "cc_reg_operand" "=y")
(compare:CCUNS (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "reg_or_u_short_operand" "rK")))]
+ (match_operand:SI 2 "reg_or_u_short_operand" "rI")))]
""
"{cmpl%I2|cmplw%I2} %0,%1,%W2"
[(set_attr "type" "compare")])
@@ -8860,7 +8747,7 @@
(define_insn ""
[(set (match_operand:CCUNS 0 "cc_reg_operand" "=y")
(compare:CCUNS (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_u_short_operand" "rK")))]
+ (match_operand:DI 2 "reg_or_u_short_operand" "rI")))]
""
"cmpld%I2 %0,%1,%W2"
[(set_attr "type" "compare")])
@@ -8950,7 +8837,7 @@
(const_int 0)))
(set (match_operand:SI 3 "gpc_reg_operand" "=r")
(match_op_dup 1 [(match_dup 2) (const_int 0)]))]
- "! TARGET_POWERPC64"
+ ""
"%D1mfcr %3\;{rlinm.|rlwinm.} %3,%3,%J1,1"
[(set_attr "type" "delayed_compare")
(set_attr "length" "12")])
@@ -9078,7 +8965,7 @@
(eq:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r,r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "r,O,K,J,I")))
(clobber (match_scratch:SI 3 "=r,&r,r,r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
xor %0,%1,%2\;{sfi|subfic} %3,%0,0\;{ae|adde} %0,%3,%0
{sfi|subfic} %3,%1,0\;{ae|adde} %0,%3,%1
@@ -9110,7 +8997,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r")
(eq:SI (match_dup 1) (match_dup 2)))
(clobber (match_scratch:SI 3 "=r,&r,r,r,r"))]
- "! TARGET_POWERPC64"
+ ""
"@
xor %0,%1,%2\;{sfi|subfic} %3,%0,0\;{ae.|adde.} %0,%3,%0
{sfi|subfic} %3,%1,0\;{ae.|adde.} %0,%3,%1
@@ -9160,7 +9047,7 @@
(match_operand:SI 2 "reg_or_cint_operand" "r,O,K,J,I"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r,r")))
(clobber (match_scratch:SI 4 "=&r,&r,&r,&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
xor %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3
{sfi|subfic} %4,%1,0\;{aze|addze} %0,%3
@@ -9178,7 +9065,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,&r,&r,&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
xor %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %4,%3
{sfi|subfic} %4,%1,0\;{aze.|addze.} %4,%3
@@ -9199,7 +9086,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r")
(plus:SI (eq:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,&r,&r,&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
xor %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %0,%3
{sfi|subfic} %4,%1,0\;{aze.|addze.} %0,%3
@@ -9213,7 +9100,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r")
(neg:SI (eq:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r,r,r,r")
(match_operand:SI 2 "reg_or_cint_operand" "r,O,K,J,I"))))]
- "! TARGET_POWERPC64"
+ ""
"@
xor %0,%1,%2\;{ai|addic} %0,%0,-1\;{sfe|subfe} %0,%0,%0
{ai|addic} %0,%1,-1\;{sfe|subfe} %0,%0,%0
@@ -9229,7 +9116,7 @@
(lshiftrt:SI (neg:SI (abs:SI (match_operand:SI 1 "gpc_reg_operand" "r")))
(const_int 31)))
(clobber (match_scratch:SI 2 "=&r"))]
- "! TARGET_POWER && ! TARGET_POWERPC64"
+ "!TARGET_POWER"
"{ai|addic} %2,%1,-1\;{sfe|subfe} %0,%2,%1"
[(set_attr "length" "8")])
@@ -9250,7 +9137,7 @@
(const_int 31))
(match_operand:SI 2 "gpc_reg_operand" "r")))
(clobber (match_scratch:SI 3 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{ai|addic} %3,%1,-1\;{aze|addze} %0,%2"
[(set_attr "length" "8")])
@@ -9274,7 +9161,7 @@
(match_operand:SI 2 "gpc_reg_operand" "r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{ai|addic} %3,%1,-1\;{aze.|addze.} %3,%2"
[(set_attr "type" "compare")
(set_attr "length" "8")])
@@ -9305,7 +9192,7 @@
(plus:SI (lshiftrt:SI (neg:SI (abs:SI (match_dup 1))) (const_int 31))
(match_dup 2)))
(clobber (match_scratch:SI 3 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{ai|addic} %3,%1,-1\;{aze.|addze.} %0,%2"
[(set_attr "type" "compare")
(set_attr "length" "8")])
@@ -9412,32 +9299,11 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI")))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %0,%1,%2\;{cal %0,0(0)|li %0,0}\;{ae|adde} %0,%0,%0"
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (leu:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_short_operand" "rI")))]
- "TARGET_POWERPC64"
- "subf%I2c %0,%1,%2\;li %0,0\;adde %0,%0,%0"
- [(set_attr "length" "12")])
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x")
- (compare:CC
- (leu:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_short_operand" "rI"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (leu:DI (match_dup 1) (match_dup 2)))]
- "TARGET_POWERPC64"
- "subf%I2c %0,%1,%2\;li %0,0\;adde. %0,%0,%0"
- [(set_attr "type" "compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:CC 3 "cc_reg_operand" "=x")
(compare:CC
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
@@ -9445,31 +9311,18 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(leu:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %0,%1,%2\;{cal %0,0(0)|li %0,0}\;{ae.|adde.} %0,%0,%0"
[(set_attr "type" "compare")
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x")
- (compare:CC
- (leu:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_short_operand" "rI"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (leu:DI (match_dup 1) (match_dup 2)))]
- "TARGET_POWERPC64"
- "subf%I2c %0,%1,%2\;li %0,0\;adde. %0,%0,%0"
- [(set_attr "type" "compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))
(match_operand:SI 3 "gpc_reg_operand" "r")))
(clobber (match_scratch:SI 4 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %4,%1,%2\;{aze|addze} %0,%3"
[(set_attr "length" "8")])
@@ -9481,7 +9334,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %4,%1,%2\;{aze.|addze.} %4,%3"
[(set_attr "type" "compare")
(set_attr "length" "8")])
@@ -9496,7 +9349,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %4,%1,%2\;{aze.|addze.} %0,%3"
[(set_attr "type" "compare")
(set_attr "length" "8")])
@@ -9505,7 +9358,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(neg:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;nand %0,%0,%0"
[(set_attr "length" "12")])
@@ -9516,7 +9369,7 @@
(match_operand:SI 2 "reg_or_short_operand" "rI")))
(match_operand:SI 3 "gpc_reg_operand" "r")))
(clobber (match_scratch:SI 4 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4"
[(set_attr "length" "12")])
@@ -9529,7 +9382,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc. %4,%3,%4"
[(set_attr "type" "compare")
(set_attr "length" "12")])
@@ -9545,7 +9398,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4"
[(set_attr "type" "compare")
(set_attr "length" "12")])
@@ -9621,7 +9474,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P")))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;neg %0,%0
{ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;neg %0,%0"
@@ -9635,7 +9488,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(ltu:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;neg. %0,%0
{ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;neg. %0,%0"
@@ -9648,7 +9501,7 @@
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))
(match_operand:SI 3 "reg_or_short_operand" "rI,rI")))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;{sf%I3|subf%I3c} %0,%4,%3
{ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;{sf%I3|subf%I3c} %0,%4,%3"
@@ -9662,7 +9515,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %4,%4,%3
{ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %4,%4,%3"
@@ -9679,7 +9532,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3
{ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3"
@@ -9690,7 +9543,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(neg:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0
{ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0"
@@ -9766,7 +9619,6 @@
[(set_attr "length" "12")])
;; This is (and (neg (ge X (const_int 0))) Y).
-;; srawi sign-extends, so these patterrns are 64-bit safe.
(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(and:SI (neg:SI
@@ -9780,18 +9632,6 @@
[(set_attr "length" "8")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (and:DI (neg:DI
- (lshiftrt:DI
- (not:DI (match_operand:DI 1 "gpc_reg_operand" "r"))
- (const_int 63)))
- (match_operand:DI 2 "gpc_reg_operand" "r")))
- (clobber (match_scratch:DI 3 "=&r"))]
- "TARGET_POWERPC64"
- "sradi %3,%1,63\;andc %0,%2,%3"
- [(set_attr "length" "8")])
-
-(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x")
(compare:CC
(and:SI (neg:SI
@@ -9807,21 +9647,6 @@
(set_attr "length" "8")])
(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x")
- (compare:CC
- (and:DI (neg:DI
- (lshiftrt:DI
- (not:DI (match_operand:DI 1 "gpc_reg_operand" "r"))
- (const_int 63)))
- (match_operand:DI 2 "gpc_reg_operand" "r"))
- (const_int 0)))
- (clobber (match_scratch:DI 3 "=&r"))]
- "TARGET_POWERPC64"
- "sradi %3,%1,63\;andc. %3,%2,%3"
- [(set_attr "type" "compare")
- (set_attr "length" "8")])
-
-(define_insn ""
[(set (match_operand:CC 4 "cc_reg_operand" "=x")
(compare:CC
(and:SI (neg:SI
@@ -9841,45 +9666,16 @@
(set_attr "length" "8")])
(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x")
- (compare:CC
- (and:DI (neg:DI
- (lshiftrt:DI
- (not:DI (match_operand:DI 1 "gpc_reg_operand" "r"))
- (const_int 63)))
- (match_operand:DI 2 "gpc_reg_operand" "r"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (and:DI (neg:DI (lshiftrt:SI (not:DI (match_dup 1))
- (const_int 63)))
- (match_dup 2)))
- (clobber (match_scratch:SI 3 "=&r"))]
- "TARGET_POWERPC64"
- "sradi %3,%1,63\;andc. %0,%2,%3"
- [(set_attr "type" "compare")
- (set_attr "length" "8")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P")))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %0,%2,%1\;{cal %0,0(0)|li %0,0}\;{ae|adde} %0,%0,%0
{ai|addic} %0,%1,%n2\;{cal %0,0(0)|li %0,0}\;{ae|adde} %0,%0,%0"
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
- (geu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
- (match_operand:DI 2 "reg_or_neg_short_operand" "r,P")))]
- "TARGET_POWERPC64"
- "@
- subfc %0,%2,%1\;li %0,0\;adde %0,%0,%0
- addic %0,%1,%n2\;li %0,0\;adde %0,%0,%0"
- [(set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:CC 3 "cc_reg_operand" "=x,x")
(compare:CC
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
@@ -9887,7 +9683,7 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(geu:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %0,%2,%1\;{cal %0,0(0)|li %0,0}\;{ae.|adde.} %0,%0,%0
{ai|addic} %0,%1,%n2\;{cal %0,0(0)|li %0,0}\;{ae.|adde.} %0,%0,%0"
@@ -9895,27 +9691,12 @@
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,x")
- (compare:CC
- (geu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
- (match_operand:DI 2 "reg_or_neg_short_operand" "r,P"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
- (geu:DI (match_dup 1) (match_dup 2)))]
- "TARGET_POWERPC64"
- "@
- subfc %0,%2,%1\;li %0,0\;adde. %0,%0,%0
- addic %0,%1,%n2\;li %0,0\;adde. %0,%0,%0"
- [(set_attr "type" "compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r")))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{aze|addze} %0,%3
{ai|addic} %4,%1,%n2\;{aze|addze} %0,%3"
@@ -9929,7 +9710,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{aze.|addze.} %4,%3
{ai|addic} %4,%1,%n2\;{aze.|addze.} %4,%3"
@@ -9946,7 +9727,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{aze.|addze.} %0,%3
{ai|addic} %4,%1,%n2\;{aze.|addze.} %0,%3"
@@ -9957,7 +9738,7 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(neg:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,I"))))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;nand %0,%0,%0
{sfi|subfic} %0,%1,-1\;{a%I2|add%I2c} %0,%0,%2\;{sfe|subfe} %0,%0,%0"
@@ -9970,7 +9751,7 @@
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P")))
(match_operand:SI 3 "gpc_reg_operand" "r,r")))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4
{ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4"
@@ -9985,7 +9766,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc. %4,%3,%4
{ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc. %4,%3,%4"
@@ -10003,7 +9784,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4
{ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4"
@@ -10014,19 +9795,11 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(const_int 0)))]
- "! TARGET_POWERPC64"
+ ""
"{sfi|subfic} %0,%1,0\;{ame|addme} %0,%0\;{sri|srwi} %0,%0,31"
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (const_int 0)))]
- "TARGET_POWERPC64"
- "subfic %0,%1,0\;addme %0,%0\;srdi %0,%0,63"
- [(set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:CC 2 "cc_reg_operand" "=x")
(compare:CC
(gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
@@ -10034,25 +9807,12 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(gt:SI (match_dup 1) (const_int 0)))]
- "! TARGET_POWERPC64"
+ ""
"{sfi|subfic} %0,%1,0\;{ame|addme} %0,%0\;{sri.|srwi.} %0,%0,31"
[(set_attr "type" "delayed_compare")
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 2 "cc_reg_operand" "=x")
- (compare:CC
- (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (const_int 0))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (gt:DI (match_dup 1) (const_int 0)))]
- "TARGET_POWERPC64"
- "subfic %0,%1,0\;addme %0,%0\;srdi. %0,%0,63"
- [(set_attr "type" "delayed_compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "r")))]
@@ -10079,21 +9839,11 @@
(const_int 0))
(match_operand:SI 2 "gpc_reg_operand" "r")))
(clobber (match_scratch:SI 3 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{a|addc} %3,%1,%1\;{sfe|subfe} %3,%1,%3\;{aze|addze} %0,%2"
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (const_int 0))
- (match_operand:DI 2 "gpc_reg_operand" "r")))
- (clobber (match_scratch:DI 3 "=&r"))]
- "TARGET_POWERPC64"
- "addc %3,%1,%1\;subfe %3,%1,%3\;addze %0,%2"
- [(set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
@@ -10101,25 +9851,12 @@
(match_operand:SI 2 "gpc_reg_operand" "r"))
(const_int 0)))
(clobber (match_scratch:SI 3 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{a|addc} %3,%1,%1\;{sfe|subfe} %3,%1,%3\;{aze.|addze.} %3,%2"
[(set_attr "type" "compare")
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x")
- (compare:CC
- (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (const_int 0))
- (match_operand:DI 2 "gpc_reg_operand" "r"))
- (const_int 0)))
- (clobber (match_scratch:DI 3 "=&r"))]
- "TARGET_POWERPC64"
- "addc %3,%1,%1\;subfe %3,%1,%3\;addze. %3,%2"
- [(set_attr "type" "compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:CC 4 "cc_reg_operand" "=x")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
@@ -10129,27 +9866,12 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))
(clobber (match_scratch:SI 3 "=&r"))]
- "! TARGET_POWERPC64"
+ ""
"{a|addc} %3,%1,%1\;{sfe|subfe} %3,%1,%3\;{aze.|addze.} %0,%2"
[(set_attr "type" "compare")
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 4 "cc_reg_operand" "=x")
- (compare:CC
- (plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (const_int 0))
- (match_operand:DI 2 "gpc_reg_operand" "r"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))
- (clobber (match_scratch:DI 3 "=&r"))]
- "TARGET_POWERPC64"
- "addc %3,%1,%1\;subfe %3,%1,%3\;addze. %0,%2"
- [(set_attr "type" "compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "r"))
@@ -10191,19 +9913,11 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(neg:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(const_int 0))))]
- "! TARGET_POWERPC64"
+ ""
"{sfi|subfic} %0,%1,0\;{ame|addme} %0,%0\;{srai|srawi} %0,%0,31"
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (neg:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (const_int 0))))]
- "TARGET_POWERPC64"
- "subfic %0,%1,0\;addme %0,%0\;sradi} %0,%0,63"
- [(set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(neg:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "r"))))]
@@ -10215,19 +9929,11 @@
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI")))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;neg %0,%0"
[(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_short_operand" "rI")))]
- "TARGET_POWERPC64"
- "subf%I2c %0,%1,%2\;subfe %0,%0,%0\;neg %0,%0"
- [(set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:CC 3 "cc_reg_operand" "=x")
(compare:CC
(gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
@@ -10235,49 +9941,24 @@
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(gtu:SI (match_dup 1) (match_dup 2)))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;neg. %0,%0"
[(set_attr "type" "compare")
(set_attr "length" "12")])
(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=x")
- (compare:CC
- (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_short_operand" "rI"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (gtu:DI (match_dup 1) (match_dup 2)))]
- "TARGET_POWERPC64"
- "subf%I2c %0,%1,%2\;subfe %0,%0,%0\;neg. %0,%0"
- [(set_attr "type" "compare")
- (set_attr "length" "12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,rI"))
(match_operand:SI 3 "reg_or_short_operand" "r,rI")))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{ai|addic} %4,%1,%k2\;{aze|addze} %0,%3
{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;{sf%I3|subf%I3c} %0,%4,%3"
[(set_attr "length" "8,12")])
(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
- (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
- (match_operand:DI 2 "reg_or_short_operand" "I,rI"))
- (match_operand:DI 3 "reg_or_short_operand" "r,rI")))
- (clobber (match_scratch:DI 4 "=&r,&r"))]
- "TARGET_POWERPC64"
- "@
- addic %4,%1,%k2\;addze %0,%3
- subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subf%I3c %0,%4,%3"
- [(set_attr "length" "8,12")])
-
-(define_insn ""
[(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
@@ -10285,7 +9966,7 @@
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{ai|addic} %4,%1,%k2\;{aze.|addze.} %4,%3
{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %4,%4,%3"
@@ -10293,21 +9974,6 @@
(set_attr "length" "8,12")])
(define_insn ""
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,x")
- (compare:CC
- (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
- (match_operand:DI 2 "reg_or_short_operand" "I,r"))
- (match_operand:DI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (clobber (match_scratch:DI 4 "=&r,&r"))]
- "TARGET_POWERPC64"
- "@
- addic %4,%1,%k2\;addze. %4,%3
- subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subfc. %4,%4,%3"
- [(set_attr "type" "compare")
- (set_attr "length" "8,12")])
-
-(define_insn ""
[(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
@@ -10317,7 +9983,7 @@
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(clobber (match_scratch:SI 4 "=&r,&r"))]
- "! TARGET_POWERPC64"
+ ""
"@
{ai|addic} %4,%1,%k2\;{aze.|addze.} %0,%3
{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3"
@@ -10325,37 +9991,12 @@
(set_attr "length" "8,12")])
(define_insn ""
- [(set (match_operand:CC 5 "cc_reg_operand" "=x,x")
- (compare:CC
- (plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
- (match_operand:DI 2 "reg_or_short_operand" "I,r"))
- (match_operand:DI 3 "gpc_reg_operand" "r,r"))
- (const_int 0)))
- (set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
- (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
- (clobber (match_scratch:DI 4 "=&r,&r"))]
- "TARGET_POWERPC64"
- "@
- addic %4,%1,%k2\;addze. %0,%3
- subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subfc. %0,%4,%3"
- [(set_attr "type" "compare")
- (set_attr "length" "8,12")])
-
-(define_insn ""
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(neg:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))))]
- "! TARGET_POWERPC64"
+ ""
"{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0"
[(set_attr "length" "8")])
-
-(define_insn ""
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (neg:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r")
- (match_operand:DI 2 "reg_or_short_operand" "rI"))))]
- "TARGET_POWERPC64"
- "subf%I2c %0,%1,%2\;subfe %0,%0,%0"
- [(set_attr "length" "8")])
;; Define both directions of branch and return. If we need a reload
;; register, we'd rather use CR0 since it is much easier to copy a
@@ -10439,29 +10080,17 @@
"{br|blr}"
[(set_attr "type" "jmpreg")])
-(define_expand "indirect_jump"
- [(set (pc) (match_operand 0 "register_operand" ""))]
- ""
- "
-{
- if (TARGET_32BIT)
- emit_jump_insn (gen_indirect_jumpsi (operands[0]));
- else
- emit_jump_insn (gen_indirect_jumpdi (operands[0]));
- DONE;
-}")
-
-(define_insn "indirect_jumpsi"
+(define_insn "indirect_jump"
[(set (pc) (match_operand:SI 0 "register_operand" "c,l"))]
- "TARGET_32BIT"
+ ""
"@
bctr
{br|blr}"
[(set_attr "type" "jmpreg")])
-(define_insn "indirect_jumpdi"
+(define_insn ""
[(set (pc) (match_operand:DI 0 "register_operand" "c,l"))]
- "TARGET_64BIT"
+ "TARGET_POWERPC64"
"@
bctr
{br|blr}"
@@ -10487,7 +10116,7 @@
(match_dup 2)))
(parallel [(set (pc) (match_dup 3))
(use (label_ref (match_operand 1 "" "")))])]
- "TARGET_32BIT"
+ ""
"
{ operands[0] = force_reg (SImode, operands[0]);
operands[2] = force_reg (SImode, gen_rtx_LABEL_REF (VOIDmode, operands[1]));
@@ -10500,7 +10129,7 @@
(match_dup 2)))
(parallel [(set (pc) (match_dup 3))
(use (label_ref (match_operand 1 "" "")))])]
- "TARGET_64BIT"
+ ""
"
{ operands[0] = force_reg (DImode, operands[0]);
operands[2] = force_reg (DImode, gen_rtx_LABEL_REF (VOIDmode, operands[1]));
@@ -10511,7 +10140,7 @@
[(set (pc)
(match_operand:SI 0 "register_operand" "c,l"))
(use (label_ref (match_operand 1 "" "")))]
- "TARGET_32BIT"
+ ""
"@
bctr
{br|blr}"
@@ -10521,7 +10150,7 @@
[(set (pc)
(match_operand:DI 0 "register_operand" "c,l"))
(use (label_ref (match_operand 1 "" "")))]
- "TARGET_64BIT"
+ "TARGET_POWERPC64"
"@
bctr
{br|blr}"
@@ -10536,19 +10165,6 @@
;; so loop.c knows what to generate.
(define_expand "decrement_and_branch_on_count"
- [(use (match_operand 0 "register_operand" ""))
- (use (label_ref (match_operand 1 "" "")))]
- ""
- "
-{
- if (TARGET_POWERPC64)
- emit_jump_insn (gen_ctrdi (operands[0], operands[1]));
- else
- emit_jump_insn (gen_ctrsi (operands[0], operands[1]));
- DONE;
-}")
-
-(define_expand "ctrsi"
[(parallel [(set (pc) (if_then_else (ne (match_operand:SI 0 "register_operand" "")
(const_int 1))
(label_ref (match_operand 1 "" ""))
@@ -10558,29 +10174,16 @@
(const_int -1)))
(clobber (match_scratch:CC 2 ""))
(clobber (match_scratch:SI 3 ""))])]
- "! TARGET_POWERPC64"
- "")
-
-(define_expand "ctrdi"
- [(parallel [(set (pc) (if_then_else (ne (match_operand:DI 0 "register_operand" "")
- (const_int 1))
- (label_ref (match_operand 1 "" ""))
- (pc)))
- (set (match_dup 0)
- (plus:DI (match_dup 0)
- (const_int -1)))
- (clobber (match_scratch:CC 2 ""))
- (clobber (match_scratch:DI 3 ""))])]
- "TARGET_POWERPC64"
+ ""
"")
;; We need to be able to do this for any operand, including MEM, or we
;; will cause reload to blow up since we don't allow output reloads on
;; JUMP_INSNs.
-;; For the length attribute to be calculated correctly, the
+;; In order that the length attribute is calculated correctly, the
;; label MUST be operand 0.
-(define_insn "*ctrsi_internal1"
+(define_insn ""
[(set (pc)
(if_then_else (ne (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 1))
@@ -10591,7 +10194,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x"))
(clobber (match_scratch:SI 4 "=X,X,r"))]
- "! TARGET_POWERPC64"
+ ""
"*
{
if (which_alternative != 0)
@@ -10604,7 +10207,7 @@
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
-(define_insn "*ctrsi_internal2"
+(define_insn ""
[(set (pc)
(if_then_else (ne (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 1))
@@ -10615,55 +10218,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x"))
(clobber (match_scratch:SI 4 "=X,X,r"))]
- "! TARGET_POWERPC64"
- "*
-{
- if (which_alternative != 0)
- return \"#\";
- else if (get_attr_length (insn) == 8)
- return \"bdz %l0\";
- else
- return \"{bdn|bdnz} %$+8\;b %l0\";
-}"
- [(set_attr "type" "branch")
- (set_attr "length" "*,12,16")])
-
-(define_insn "*ctrdi_internal1"
- [(set (pc)
- (if_then_else (ne (match_operand:DI 1 "register_operand" "c,*r,*r")
- (const_int 1))
- (label_ref (match_operand 0 "" ""))
- (pc)))
- (set (match_operand:DI 2 "register_operand" "=1,*r,m*q*c*l")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 "=X,&x,&x"))
- (clobber (match_scratch:DI 4 "=X,X,r"))]
- "TARGET_POWERPC64"
- "*
-{
- if (which_alternative != 0)
- return \"#\";
- else if (get_attr_length (insn) == 8)
- return \"{bdn|bdnz} %l0\";
- else
- return \"bdz %$+8\;b %l0\";
-}"
- [(set_attr "type" "branch")
- (set_attr "length" "*,12,16")])
-
-(define_insn "*ctrdi_internal2"
- [(set (pc)
- (if_then_else (ne (match_operand:DI 1 "register_operand" "c,*r,*r")
- (const_int 1))
- (pc)
- (label_ref (match_operand 0 "" ""))))
- (set (match_operand:DI 2 "register_operand" "=1,*r,m*q*c*l")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 "=X,&x,&x"))
- (clobber (match_scratch:DI 4 "=X,X,r"))]
- "TARGET_POWERPC64"
+ ""
"*
{
if (which_alternative != 0)
@@ -10677,8 +10232,7 @@
(set_attr "length" "*,12,16")])
;; Similar, but we can use GE since we have a REG_NONNEG.
-
-(define_insn "*ctrsi_internal3"
+(define_insn ""
[(set (pc)
(if_then_else (ge (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 0))
@@ -10689,7 +10243,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&X"))
(clobber (match_scratch:SI 4 "=X,X,r"))]
- "! TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)"
+ "find_reg_note (insn, REG_NONNEG, 0)"
"*
{
if (which_alternative != 0)
@@ -10702,7 +10256,7 @@
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
-(define_insn "*ctrsi_internal4"
+(define_insn ""
[(set (pc)
(if_then_else (ge (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 0))
@@ -10713,7 +10267,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&X"))
(clobber (match_scratch:SI 4 "=X,X,r"))]
- "! TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)"
+ "find_reg_note (insn, REG_NONNEG, 0)"
"*
{
if (which_alternative != 0)
@@ -10726,57 +10280,7 @@
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
-(define_insn "*ctrdi_internal3"
- [(set (pc)
- (if_then_else (ge (match_operand:DI 1 "register_operand" "c,*r,*r")
- (const_int 0))
- (label_ref (match_operand 0 "" ""))
- (pc)))
- (set (match_operand:DI 2 "register_operand" "=1,*r,m*q*c*l")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 "=X,&x,&X"))
- (clobber (match_scratch:DI 4 "=X,X,r"))]
- "TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)"
- "*
-{
- if (which_alternative != 0)
- return \"#\";
- else if (get_attr_length (insn) == 8)
- return \"{bdn|bdnz} %l0\";
- else
- return \"bdz %$+8\;b %l0\";
-}"
- [(set_attr "type" "branch")
- (set_attr "length" "*,12,16")])
-
-(define_insn "*ctrdi_internal4"
- [(set (pc)
- (if_then_else (ge (match_operand:DI 1 "register_operand" "c,*r,*r")
- (const_int 0))
- (pc)
- (label_ref (match_operand 0 "" ""))))
- (set (match_operand:DI 2 "register_operand" "=1,*r,m*q*c*l")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 "=X,&x,&X"))
- (clobber (match_scratch:DI 4 "=X,X,r"))]
- "TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)"
- "*
-{
- if (which_alternative != 0)
- return \"#\";
- else if (get_attr_length (insn) == 8)
- return \"bdz %l0\";
- else
- return \"{bdn|bdnz} %$+8\;b %l0\";
-}"
- [(set_attr "type" "branch")
- (set_attr "length" "*,12,16")])
-
-;; Similar but use EQ
-
-(define_insn "*ctrsi_internal5"
+(define_insn ""
[(set (pc)
(if_then_else (eq (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 1))
@@ -10787,7 +10291,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x"))
(clobber (match_scratch:SI 4 "=X,X,r"))]
- "! TARGET_POWERPC64"
+ ""
"*
{
if (which_alternative != 0)
@@ -10800,7 +10304,7 @@
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
-(define_insn "*ctrsi_internal6"
+(define_insn ""
[(set (pc)
(if_then_else (eq (match_operand:SI 1 "register_operand" "c,*r,*r")
(const_int 1))
@@ -10811,55 +10315,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 "=X,&x,&x"))
(clobber (match_scratch:SI 4 "=X,X,r"))]
- "! TARGET_POWERPC64"
- "*
-{
- if (which_alternative != 0)
- return \"#\";
- else if (get_attr_length (insn) == 8)
- return \"{bdn|bdnz} %l0\";
- else
- return \"bdz %$+8\;b %l0\";
-}"
- [(set_attr "type" "branch")
- (set_attr "length" "*,12,16")])
-
-(define_insn "*ctrdi_internal5"
- [(set (pc)
- (if_then_else (eq (match_operand:DI 1 "register_operand" "c,*r,*r")
- (const_int 1))
- (label_ref (match_operand 0 "" ""))
- (pc)))
- (set (match_operand:DI 2 "register_operand" "=1,*r,m*q*c*l")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 "=X,&x,&x"))
- (clobber (match_scratch:DI 4 "=X,X,r"))]
- "TARGET_POWERPC64"
- "*
-{
- if (which_alternative != 0)
- return \"#\";
- else if (get_attr_length (insn) == 8)
- return \"bdz %l0\";
- else
- return \"{bdn|bdnz} %$+8\;b %l0\";
-}"
- [(set_attr "type" "branch")
- (set_attr "length" "*,12,16")])
-
-(define_insn "*ctrdi_internal6"
- [(set (pc)
- (if_then_else (eq (match_operand:DI 1 "register_operand" "c,*r,*r")
- (const_int 1))
- (pc)
- (label_ref (match_operand 0 "" ""))))
- (set (match_operand:DI 2 "register_operand" "=1,*r,m*q*c*l")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 "=X,&x,&x"))
- (clobber (match_scratch:DI 4 "=X,X,r"))]
- "TARGET_POWERPC64"
+ ""
"*
{
if (which_alternative != 0)
@@ -10872,8 +10328,6 @@
[(set_attr "type" "branch")
(set_attr "length" "*,12,16")])
-;; Now the splitters if we could not allocate the CTR register
-
(define_split
[(set (pc)
(if_then_else (match_operator 2 "comparison_operator"
@@ -10886,7 +10340,7 @@
(const_int -1)))
(clobber (match_scratch:CC 3 ""))
(clobber (match_scratch:SI 4 ""))]
- "! TARGET_POWERPC64 && reload_completed"
+ "reload_completed"
[(parallel [(set (match_dup 3)
(compare:CC (plus:SI (match_dup 1)
(const_int -1))
@@ -10912,8 +10366,7 @@
(plus:SI (match_dup 1) (const_int -1)))
(clobber (match_scratch:CC 3 ""))
(clobber (match_scratch:SI 4 ""))]
- "! TARGET_POWERPC64 && reload_completed
- && ! gpc_reg_operand (operands[0], SImode)"
+ "reload_completed && ! gpc_reg_operand (operands[0], SImode)"
[(parallel [(set (match_dup 3)
(compare:CC (plus:SI (match_dup 1)
(const_int -1))
@@ -10929,61 +10382,6 @@
"
{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
const0_rtx); }")
-(define_split
- [(set (pc)
- (if_then_else (match_operator 2 "comparison_operator"
- [(match_operand:DI 1 "gpc_reg_operand" "")
- (const_int 1)])
- (match_operand 5 "" "")
- (match_operand 6 "" "")))
- (set (match_operand:DI 0 "gpc_reg_operand" "")
- (plus:DI (match_dup 1)
- (const_int -1)))
- (clobber (match_scratch:CC 3 ""))
- (clobber (match_scratch:DI 4 ""))]
- "TARGET_POWERPC64 && reload_completed"
- [(parallel [(set (match_dup 3)
- (compare:CC (plus:DI (match_dup 1)
- (const_int -1))
- (const_int 0)))
- (set (match_dup 0)
- (plus:DI (match_dup 1)
- (const_int -1)))])
- (set (pc) (if_then_else (match_dup 7)
- (match_dup 5)
- (match_dup 6)))]
- "
-{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
- const0_rtx); }")
-
-(define_split
- [(set (pc)
- (if_then_else (match_operator 2 "comparison_operator"
- [(match_operand:DI 1 "gpc_reg_operand" "")
- (const_int 1)])
- (match_operand 5 "" "")
- (match_operand 6 "" "")))
- (set (match_operand:DI 0 "general_operand" "")
- (plus:DI (match_dup 1) (const_int -1)))
- (clobber (match_scratch:CC 3 ""))
- (clobber (match_scratch:DI 4 ""))]
- "TARGET_POWERPC64 && reload_completed
- && ! gpc_reg_operand (operands[0], DImode)"
- [(parallel [(set (match_dup 3)
- (compare:CC (plus:DI (match_dup 1)
- (const_int -1))
- (const_int 0)))
- (set (match_dup 4)
- (plus:DI (match_dup 1)
- (const_int -1)))])
- (set (match_dup 0)
- (match_dup 4))
- (set (pc) (if_then_else (match_dup 7)
- (match_dup 5)
- (match_dup 6)))]
- "
-{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3],
- const0_rtx); }")
(define_insn "trap"
[(trap_if (const_int 1) (const_int 0))]
diff --git a/gnu/egcs/gcc/config/sh/lib1funcs.asm b/gnu/egcs/gcc/config/sh/lib1funcs.asm
index 4db8ddc6c43..bf9ea9a3efa 100644
--- a/gnu/egcs/gcc/config/sh/lib1funcs.asm
+++ b/gnu/egcs/gcc/config/sh/lib1funcs.asm
@@ -707,7 +707,7 @@ ___movstrSI4:
mov.l r0,@(0,r4)
___movstrSI0:
rts
- nop
+ or r0,r0,r0
.align 4
@@ -855,9 +855,9 @@ ___mulsi3:
sts macl,r0
hiset: sts macl,r0 ! r0 = bb*dd
- mulu r2,r5 ! brewing macl = aa*dd
+ mulu r2,r5 | brewing macl = aa*dd
sts macl,r1
- mulu r3,r4 ! brewing macl = cc*bb
+ mulu r3,r4 | brewing macl = cc*bb
sts macl,r2
add r1,r2
shll16 r2
diff --git a/gnu/egcs/gcc/config/sh/sh.c b/gnu/egcs/gcc/config/sh/sh.c
index feca33e1b22..41c5ac5ecac 100644
--- a/gnu/egcs/gcc/config/sh/sh.c
+++ b/gnu/egcs/gcc/config/sh/sh.c
@@ -2641,7 +2641,7 @@ fixup_addr_diff_vecs (first)
for (insn = first; insn; insn = NEXT_INSN (insn))
{
- rtx vec_lab, pat, prev, prevpat, x, braf_label;
+ rtx vec_lab, pat, prev, prevpat, x;
if (GET_CODE (insn) != JUMP_INSN
|| GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC)
@@ -2664,15 +2664,10 @@ fixup_addr_diff_vecs (first)
if (GET_CODE (x) == LABEL_REF && XEXP (x, 0) == vec_lab)
break;
}
-
- /* Emit the reference label of the braf where it belongs, right after
- the casesi_jump_2 (i.e. braf). */
- braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0);
- emit_label_after (braf_label, prev);
-
/* Fix up the ADDR_DIF_VEC to be relative
to the reference address of the braf. */
- XEXP (XEXP (pat, 0), 0) = braf_label;
+ XEXP (XEXP (pat, 0), 0)
+ = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0);
}
}
@@ -4309,6 +4304,29 @@ fp_one_operand (op)
}
int
+braf_label_ref_operand(op, mode)
+ rtx op;
+ enum machine_mode mode;
+{
+ rtx prev;
+
+ if (GET_CODE (op) != LABEL_REF)
+ return 0;
+ prev = prev_real_insn (XEXP (op, 0));
+ if (GET_CODE (prev) != JUMP_INSN)
+ return 0;
+ prev = PATTERN (prev);
+ if (GET_CODE (prev) != PARALLEL || XVECLEN (prev, 0) != 2)
+ return 0;
+ prev = XVECEXP (prev, 0, 0);
+ if (GET_CODE (prev) != SET)
+ return 0;
+ prev = SET_SRC (prev);
+ if (GET_CODE (prev) != PLUS || XEXP (prev, 1) != op)
+ return 0;
+}
+
+int
tertiary_reload_operand (op, mode)
rtx op;
enum machine_mode mode;
diff --git a/gnu/egcs/gcc/config/sh/sh.h b/gnu/egcs/gcc/config/sh/sh.h
index 40b79363b6f..2f2a000b89d 100644
--- a/gnu/egcs/gcc/config/sh/sh.h
+++ b/gnu/egcs/gcc/config/sh/sh.h
@@ -2120,6 +2120,7 @@ extern struct rtx_def *get_fpscr_rtx ();
{"arith_reg_operand", {SUBREG, REG}}, \
{"arith_reg_or_0_operand", {SUBREG, REG, CONST_INT}}, \
{"binary_float_operator", {PLUS, MULT}}, \
+ {"braf_label_ref_operand", {LABEL_REF}}, \
{"commutative_float_operator", {PLUS, MULT}}, \
{"fp_arith_reg_operand", {SUBREG, REG}}, \
{"fp_extended_operand", {SUBREG, REG, FLOAT_EXTEND}}, \
diff --git a/gnu/egcs/gcc/config/sh/sh.md b/gnu/egcs/gcc/config/sh/sh.md
index e4648bb325f..04992a18773 100644
--- a/gnu/egcs/gcc/config/sh/sh.md
+++ b/gnu/egcs/gcc/config/sh/sh.md
@@ -3203,13 +3203,19 @@
;; For all later processors.
(define_insn "casesi_jump_2"
[(set (pc) (plus:SI (match_operand:SI 0 "register_operand" "r")
- (label_ref (match_operand 1 "" ""))))
+ (match_operand 1 "braf_label_ref_operand" "")))
(use (label_ref (match_operand 2 "" "")))]
- "! INSN_UID (operands[1]) || prev_real_insn (operands[1]) == insn"
+ ""
"braf %0%#"
[(set_attr "needs_delay_slot" "yes")
(set_attr "type" "jump_ind")])
+(define_insn "dummy_jump"
+ [(set (pc) (const_int 0))]
+ ""
+ ""
+ [(set_attr "length" "0")])
+
;; Call subroutine returning any type.
;; ??? This probably doesn't work.
@@ -3296,9 +3302,20 @@
reg));
emit_insn (gen_casesi_worker_0 (reg2, reg, operands[3]));
if (TARGET_SH2)
- emit_jump_insn (gen_casesi_jump_2 (reg2, gen_label_rtx (), operands[3]));
+ {
+ rtx lab = gen_label_rtx ();
+ emit_jump_insn (gen_casesi_jump_2 (reg2,
+ gen_rtx (LABEL_REF, VOIDmode, lab),
+ operands[3]));
+ emit_label (lab);
+ /* Put a fake jump after the label, lest some optimization might
+ delete the barrier and LAB. */
+ emit_jump_insn (gen_dummy_jump ());
+ }
else
- emit_jump_insn (gen_casesi_jump_1 (reg2, operands[3]));
+ {
+ emit_jump_insn (gen_casesi_jump_1 (reg2, operands[3]));
+ }
/* For SH2 and newer, the ADDR_DIFF_VEC is not actually relative to
operands[3], but to lab. We will fix this up in
machine_dependent_reorg. */
diff --git a/gnu/egcs/gcc/config/sparc/pbd.h b/gnu/egcs/gcc/config/sparc/pbd.h
index b70fdcb259b..459bffd901b 100644
--- a/gnu/egcs/gcc/config/sparc/pbd.h
+++ b/gnu/egcs/gcc/config/sparc/pbd.h
@@ -144,7 +144,35 @@ Boston, MA 02111-1307, USA. */
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
fprintf (FILE, "\t.word .L%d\n", VALUE)
-/* This is needed for SunOS 4.0, and should not hurt for 3.2
+/* Output assembler code to FILE to increment profiler label # LABELNO
+ for profiling a function entry. */
+
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+ fprintf (FILE, "\tsethi %%hi(.LP%d),%%o0\n\tcall mcount\n\tor %%lo(.LP%d),%%o0,%%o0\n", \
+ (LABELNO), (LABELNO))
+
+/* Output assembler code to FILE to initialize this source file's
+ basic block profiling info, if that has not already been done. */
+
+#undef FUNCTION_BLOCK_PROFILER
+#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
+ fprintf (FILE, "\tsethi %%hi(.LPBX0),%%o0\n\tld [%%lo(.LPBX0)+%%o0],%%o1\n\ttst %%o1\n\tbne .LPY%d\n\tnop\n\tcall ___bb_init_func\n\tnop\n.LPY%d:\n", \
+ (LABELNO), (LABELNO))
+
+/* Output assembler code to FILE to increment the entry-count for
+ the BLOCKNO'th basic block in this source file. */
+
+#undef BLOCK_PROFILER
+#define BLOCK_PROFILER(FILE, BLOCKNO) \
+{ \
+ int blockn = (BLOCKNO); \
+ fprintf (FILE, "\tsethi %%hi(.LPBX2+%d),%%g1\n\tld [%%lo(.LPBX2+%d)+%%g1],%%g2\n\
+\tadd %%g2,1,%%g2\n\tst %%g2,[%%lo(.LPBX2+%d)+%%g1]\n", \
+ 4 * blockn, 4 * blockn, 4 * blockn); \
+ CC_STATUS_INIT; /* We have clobbered %g1. Also %g2. */ \
+}
+/* This is needed for SunOS 4.0, and should not hurt for 3.2
versions either. */
#undef ASM_OUTPUT_SOURCE_LINE(file, line)
#define ASM_OUTPUT_SOURCE_LINE(file, line) \
diff --git a/gnu/egcs/gcc/config/sparc/sparc.md b/gnu/egcs/gcc/config/sparc/sparc.md
index 58e882c5ac7..025992a354c 100644
--- a/gnu/egcs/gcc/config/sparc/sparc.md
+++ b/gnu/egcs/gcc/config/sparc/sparc.md
@@ -1,6 +1,5 @@
;;- Machine description for SPARC chip for GNU C compiler
-;; Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 88, 89, 92-98, 1999 Free Software Foundation, Inc.
;; Contributed by Michael Tiemann (tiemann@cygnus.com)
;; 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
;; at Cygnus Support.
@@ -2839,7 +2838,7 @@
return \"#\";
}"
[(set_attr "type" "move")
- (set_attr "length" "1,2")])
+ (set_attr "length" "1")])
;; There isn't much I can do about this, if I change the
;; mode then flow info gets really confused because the
@@ -3014,7 +3013,7 @@
return \"#\";
}"
[(set_attr "type" "move")
- (set_attr "length" "1,2,2")])
+ (set_attr "length" "1")])
(define_split
[(set (match_operand:DF 0 "register_operand" "")
@@ -6790,7 +6789,7 @@
[(set_attr "type" "fpmove")
(set_attr "length" "1")])
-(define_expand "abstf2"
+(define_insn "abstf2"
[(set (match_operand:TF 0 "register_operand" "")
(abs:TF (match_operand:TF 1 "register_operand" "")))]
"TARGET_FPU"
@@ -6825,23 +6824,14 @@
operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);
- operands[6] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
- operands[7] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);")
-
-(define_insn "*abstf2_hq_v9"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
- "TARGET_FPU && TARGET_V9 && TARGET_HARD_QUAD"
- "@
- fabsd\\t%0, %0
- fabsq\\t%1, %0"
- [(set_attr "type" "fpmove")
- (set_attr "length" "1")])
+ operands[6] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 2);
+ operands[7] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 2);")
(define_insn "*abstf2_v9"
[(set (match_operand:TF 0 "register_operand" "=e,e")
(abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
- "TARGET_FPU && TARGET_V9 && !TARGET_HARD_QUAD"
+ ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
+ "TARGET_FPU && TARGET_V9"
"@
fabsd\\t%0, %0
#"
@@ -6904,7 +6894,7 @@
[(set (match_operand:DF 0 "register_operand" "=e")
(abs:DF (match_operand:DF 1 "register_operand" "e")))]
"TARGET_FPU && TARGET_V9"
- "fabsd\\t%1, %0"
+ "fabsd\\t%0, %0"
[(set_attr "type" "fpmove")
(set_attr "length" "1")])
@@ -7078,7 +7068,7 @@
(set_attr "length" "1")])
(define_insn "*ashrsi3_extend"
- [(set (match_operand:DI 0 "register_operand" "=r")
+ [(set (match_operand:DI 0 "register_operand" "")
(sign_extend:DI (ashiftrt:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "r"))))]
"TARGET_ARCH64"
@@ -7089,7 +7079,7 @@
;; This handles the case as above, but with constant shift instead of
;; register. Combiner "simplifies" it for us a little bit though.
(define_insn "*ashrsi3_extend2"
- [(set (match_operand:DI 0 "register_operand" "=r")
+ [(set (match_operand:DI 0 "register_operand" "")
(ashiftrt:DI (ashift:DI (subreg:DI (match_operand:SI 1 "register_operand" "r") 0)
(const_int 32))
(match_operand:SI 2 "small_int_or_double" "n")))]
@@ -7171,7 +7161,7 @@
;; (zero_extend:DI (lshiftrt:SI (match_operand:SI) (match_operand:SI))),
;; but combiner "simplifies" it for us.
(define_insn "*lshrsi3_extend"
- [(set (match_operand:DI 0 "register_operand" "=r")
+ [(set (match_operand:DI 0 "register_operand" "")
(and:DI (subreg:DI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "arith_operand" "r")) 0)
(match_operand 3 "" "")))]
@@ -7192,7 +7182,7 @@
;; (lshiftrt:DI (zero_extend:DI (match_operand:SI)) (const_int >=0 < 32))
;; but combiner "simplifies" it for us.
(define_insn "*lshrsi3_extend2"
- [(set (match_operand:DI 0 "register_operand" "=r")
+ [(set (match_operand:DI 0 "register_operand" "")
(zero_extract:DI (subreg:DI (match_operand:SI 1 "register_operand" "r") 0)
(match_operand 2 "small_int_or_double" "n")
(const_int 32)))]
@@ -7356,7 +7346,7 @@
gen_rtvec (3,
gen_rtx_SET (VOIDmode, pc_rtx,
XEXP (operands[0], 0)),
- operands[3],
+ GEN_INT (INTVAL (operands[3]) & 0xfff),
gen_rtx_CLOBBER (VOIDmode,
gen_rtx_REG (Pmode, 15)))));
else
@@ -7388,7 +7378,7 @@
emit_call_insn
(gen_rtx_PARALLEL (VOIDmode,
gen_rtvec (3, gen_rtx_CALL (VOIDmode, fn_rtx, nregs_rtx),
- operands[3],
+ GEN_INT (INTVAL (operands[3]) & 0xfff),
gen_rtx_CLOBBER (VOIDmode,
gen_rtx_REG (Pmode, 15)))));
else
diff --git a/gnu/egcs/gcc/config/sparc/sun4o3.h b/gnu/egcs/gcc/config/sparc/sun4o3.h
index d2a53c1f237..10c73916b60 100644
--- a/gnu/egcs/gcc/config/sparc/sun4o3.h
+++ b/gnu/egcs/gcc/config/sparc/sun4o3.h
@@ -1,9 +1,9 @@
#include "sparc/sparc.h"
-/* Override the name of the mcount profiling function. */
-
-#undef MCOUNT_FUNCTION
-#define MCOUNT_FUNCTION "*.mcount"
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+ fprintf (FILE, "\tsethi %%hi(LP%d),%%o0\n\tcall .mcount\n\tor %%lo(LP%d),%%o0,%%o0\n", \
+ (LABELNO), (LABELNO))
/* LINK_SPEC is needed only for SunOS 4. */
diff --git a/gnu/egcs/gcc/config/sparc/sysv4.h b/gnu/egcs/gcc/config/sparc/sysv4.h
index 5f9bba9e594..572b9dcde73 100644
--- a/gnu/egcs/gcc/config/sparc/sysv4.h
+++ b/gnu/egcs/gcc/config/sparc/sysv4.h
@@ -200,6 +200,28 @@ do { \
else \
fprintf (FILE, ".section\t\"%s\",#alloc,#write\n", (NAME)); \
} while (0)
+
+/* Output assembler code to FILE to initialize this source file's
+ basic block profiling info, if that has not already been done. */
+
+#undef FUNCTION_BLOCK_PROFILER
+#define FUNCTION_BLOCK_PROFILER(FILE, LABELNO) \
+ do { \
+ fprintf (FILE, "\tsethi %%hi(.LLPBX0),%%o0\n\tld [%%lo(.LLPBX0)+%%o0],%%o1\n\ttst %%o1\n\tbne LPY%d\n\tadd %%o0,%%lo(.LLPBX0),%%o0\n\tcall __bb_init_func\n\tnop\nLPY%d:\n", \
+ (LABELNO), (LABELNO)); \
+ } while (0)
+
+/* Output assembler code to FILE to increment the entry-count for
+ the BLOCKNO'th basic block in this source file. */
+
+#undef BLOCK_PROFILER
+#define BLOCK_PROFILER(FILE, BLOCKNO) \
+{ \
+ int blockn = (BLOCKNO); \
+ fprintf (FILE, "\tsethi %%hi(.LLPBX2+%d),%%g1\n\tld [%%lo(.LLPBX2+%d)+%%g1],%%g2\n\
+\tadd %%g2,1,%%g2\n\tst %%g2,[%%lo(.LLPBX2+%d)+%%g1]\n", \
+ 4 * blockn, 4 * blockn, 4 * blockn); \
+}
/* A C statement (sans semicolon) to output to the stdio stream
FILE the assembler definition of uninitialized global DECL named
@@ -209,8 +231,3 @@ do { \
#undef ASM_OUTPUT_ALIGNED_BSS
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-
-/* Override the name of the mcount profiling function. */
-
-#undef MCOUNT_FUNCTION
-#define MCOUNT_FUNCTION "*_mcount"
diff --git a/gnu/egcs/gcc/config/svr4.h b/gnu/egcs/gcc/config/svr4.h
index 7fa30e8ac26..1c8482fd11d 100644
--- a/gnu/egcs/gcc/config/svr4.h
+++ b/gnu/egcs/gcc/config/svr4.h
@@ -247,9 +247,8 @@ do { \
#define DWARF_DEBUGGING_INFO
/* All ELF targets can support DWARF-2. */
-#ifndef DWARF2_DEBUGGING_INFO
+
#define DWARF2_DEBUGGING_INFO
-#endif
/* The numbers used to denote specific machine registers in the System V
Release 4 DWARF debugging information are quite likely to be totally
diff --git a/gnu/egcs/gcc/config/v850/v850.c b/gnu/egcs/gcc/config/v850/v850.c
index dc984cf4c67..15867ac4892 100644
--- a/gnu/egcs/gcc/config/v850/v850.c
+++ b/gnu/egcs/gcc/config/v850/v850.c
@@ -1,5 +1,5 @@
/* Subroutines for insn-output.c for NEC V850 series
- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
This file is part of GNU CC.
@@ -1864,8 +1864,10 @@ Saved %d bytes via epilogue function (%d vs. %d) in function %s\n",
else
init_stack_free = actual_fsize;
- /* Deallocate the rest of the stack if it is > 32K. */
- if (actual_fsize > init_stack_free)
+ /* Deallocate the rest of the stack if it is > 32K or if extra stack
+ was allocated for an interrupt handler that makes a call. */
+ if (actual_fsize > init_stack_free
+ || (interrupt_handler && actual_fsize))
{
int diff;
diff --git a/gnu/egcs/gcc/cp/ChangeLog b/gnu/egcs/gcc/cp/ChangeLog
index 59383dc9a95..51479528fd9 100644
--- a/gnu/egcs/gcc/cp/ChangeLog
+++ b/gnu/egcs/gcc/cp/ChangeLog
@@ -1,443 +1,3 @@
-Fri Jun 9 17:55:08 2000 Jeffrey A Law (law@cygnus.com)
-
- 2000-02-07 <loewis@informatik.hu-berlin.de>
- * decl2.c (import_export_decl): vlist ctor wrappers follow virtual
- methods in their interface.
- (vlist_ctor_wrapper_p): new function.
- (finish_vlist_ctor_wrapper): likewise.
-
- 2000-02-06 <loewis@informatik.hu-berlin.de>
- * decl2.c (maybe_retrofit_in_chrg): Move call to
- make_vlist_ctor_wrapper from here ...
- * decl.c (grok_ctor_properties): ... to here.
- * decl.c (grokfndecl): ... and here.
- * init.c (no_vlist_base_init): Declare unseen Vlist ctor weak.
- * decl2.c (maybe_retrofit_in_chrg): Be sorry about varargs ctors.
-
-2000-03-08 Nathan Sidwell <nathan@codesourcery.com>
-
- * exception.cc (__cp_pop_exception): Cleanup the original object.
-
-1999-11-13 Jason Merrill <jason@yorick.cygnus.com>
-
- * rtti.c (get_tinfo_fn_unused): Split out from get_tinfo_fn.
- * class.c (set_rtti_entry): Use it.
-
-Wed Apr 12 00:45:49 2000 Jeffrey A Law (law@cygnus.com)
-
- 2000-02-03 <loewis@informatik.hu-berlin.de>
- * call.c (add_function_candidate): Do not add vlist ctor into
- candidates in compatibility mode.
- (build_user_type_conversion_1): Add LOOKUP_HAS_VLIST when adding
- vlist.
- (convert_like): Likewise.
- (build_over_call): Skip vlist only if it is mentioned in flags.
- (build_new_method_call): Do not add vlist in compatibility mode,
- except for dtors.
- * cp-tree.h (flag_vtable_thunks): Has now four possible values.
- (DECL_VLIST_CTOR_WRAPPER_P, DECL_VLIST_CTOR_WRAPPED): New macros.
- (in_charge_identifier): Declare external.
- * decl.c (xref_basetypes): Check for vtable_thunks >=2.
- (finish_dtor): Use bit 2 of in_chrg.
- (finish_function): Do not finish vlist ctor wrappers.
- * decl2.c (flag_vtable_thunks_compat): New variable.
- (lang_decode_option): Set it accordingly.
- (maybe_retrofit_in_chrg): Call make_vlist_ctor_wrapper.
- * init.c (build_base_dtor_call): Pass 4 in in_chrg.
- (no_vlist_base_init): New function.
- (expand_default_init): Do not pass vlist in compatibility mode.
- Try to call old base ctor if new one was not generated.
- (build_new_1): Do not pass vlist in compatibility mode.
- * method.c (get_id_2): Do not put _Vlist into dtor name in
- compatibility mode.
- (make_vlist_ctor_wrapper, emit_vlist_ctor_wrapper): New functions.
- (synthesize_method): Call emit_vlist_ctor_wrapper.
- * pt.c (instantiate_class_template): Check for vtable_thunks >=2.
-
- Sat Nov 13 15:48:59 1999 H.J. Lu <hjl@gnu.org>
- * init.c (finish_dtor): Call mark_all_temps_used () before
- declaring vlist.
-
- Tue Nov 9 15:01:57 1999 H.J. Lu <hjl@gnu.org>
- * init.c (construct_virtual_bases): Update.
- (expand_cleanup_for_base): Update.
-
- Tue Nov 9 08:25:04 1999 H.J. Lu <hjl@gnu.org>
- * init.c (construct_virtual_bases): Update.
- (expand_cleanup_for_base): Take vlist parameter.
- (emit_base_init): Pass vlist to expand_cleanup_for_base.
- (construct_virtual_bases): Likewise.
-
- 1999-05-02 Martin von Löwis <loewis@informatik.hu-berlin.de>
- * class.c (prepare_ctor_vtable, finish_one_ctor_vtable,
- prepend_ctor_vfields_for_vbase, finish_ctor_vtables_for_vbases,
- finish_ctor_vtables_1, prepend_vbase_vfields,
- finish_ctor_vtables): New functions.
- (finish_struct_1): Call finish_ctor_vtables.
- * cp-tree.h (TYPE_USES_PVBASES): New macro.
- (constructor_for_vbase_attr): Widen to two bits.
- (CONSTRUCTOR_FOR_VBASE, CONSTRUCTOR_FOR_PVBASE,
- DESTRUCTOR_FOR_PVBASE): New macros.
- (DECL_CONSTRUCTOR_FOR_VBASE_P): Adopt to new enumeration.
- (DECL_CONSTRUCTOR_FOR_VBASE): New macro.
- (DECL_CONSTRUCTOR_FOR_PVBASE_P, DECL_DESTRUCTOR_FOR_PVBASE_P): New
- macros.
- (vlist_identifier, vlist_type_node, vlist_zero_node): Declare.
- (VCTABLE_NAME, VLIST_NAME_FORMAT, VLIST_NAME, VLIST1_NAME,
- VLIST_TYPE_NAME): New macros.
- (LOOKUP_HAS_VLIST): New macro.
- (build_base_dtor_call, init_vlist): Declare.
- (build_destructor_name): Add int argument.
- * decl.c (vlist_identifier, vlist_type_node, vlist_zero_node):
- Define.
- (init_decl_processing): Initialize them.
- (grokdeclarator): Handle vlist argument.
- (copy_args_p): Likewise.
- (grok_ctor_properties): Don't try to skip initial int for
- templates. Skip vlist if available.
- (xref_basetypes): Set TYPE_USES_PVBASES.
- (finish_dtor, finish_ctor): New functions, moved out of ...
- (finish_function): ... here.
- * decl2.c (lang_decode_option): Set flag_vtable_thunks explicitly.
- (maybe_retrofit_in_chrg): Retrofit __vlist parameter.
- (grokclassfn): Pass pvbase flag into mangled name.
- * init.c (build_base_dtor_call): New function.
- (build_partial_cleanup_for): Call it.
- (pvbasecount, init_vlist, ): New functions.
- (emit_base_init): Process vlist argument.
- (expand_aggr_vbase_init_1): Likewise.
- (expand_aggr_vbase_init): Likewise.
- (expand_default_init): Likewise.
- (build_new_1): Pass null vlist argument.
- (build_delete): Likewise. Call build_base_dtor_call.
- * method.c (process_overload_item): Mangle _Vlist specially.
- (build_base_path, get_vlist_vtable_id): New functions.
- (build_destructor_name): Potentially mangle _Vlist into it.
- (do_build_copy_constructor): Skip vlist argument.
- (synthesize_method): Likewise.
- * pt.c (has_pvbases_p): New function.
- (instantiate_class_template): Call it.
- (tsubst_decl): Retrofit before mangling. Pass pvbase_p to
- destructor mangling.
- * search.c (expand_direct_vtbls_init_thunks): New function.
- (expand_indirect_vtbls_init_thunks): New function.
- (expand_indirect_vtbls_init): Call it.
- * call.c (add_function_candidate): Process vlist argument.
- (build_user_type_conversion_1): Add vlist argument.
- (convert_like): Likewise.
- (build_over_call): Likewise.
- (build_new_method_call): Likewise.
-
-2000-02-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
-
- * typeck2.c (my_friendly_abort): Use GCCBUGURL.
-
-1999-11-01 Jason Merrill <jason@yorick.cygnus.com>
-
- * decl2.c (maybe_make_one_only): Always make things comdat on
- ELF targets, too.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-1999-09-06 Mark Mitchell <mark@codesourcery.com>
-
- * pt.c (tsubst): Back out 1999-08-06 patch. Use fold and
- decl_constant_value to simplify array bounds.
-
-1999-08-19 Jason Merrill <jason@yorick.cygnus.com>
-
- * cp-tree.h: Declare flag_use_repository.
- * pt.c (do_decl_instantiation): Don't complain about duplicate
- instantiation with -frepo.
- (do_type_instantiation): Likewise.
-
-1999-08-14 Jason Merrill <jason@yorick.cygnus.com>
-
- * decl2.c (lookup_arg_dependent): Note that we've already checked
- the current namespace.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-1999-08-12 Mark Mitchell <mark@codesourcery.com>
-
- * decl2.c (lang_decode_option): Deprecate signatures.
-
-1999-08-11 Martin v. Loewis <martin@mira.isdn.cs.tu-berlin.de>
-
- * lex.c (do_identifier): If we find a hidden type after a global
- was selected already, continue using the global.
-
-1999-08-10 Martin v. Loewis <martin@mira.isdn.cs.tu-berlin.de>
-
- * decl2.c (set_decl_namespace): Do not complain about non-matching
- decls if processing a template.
-
-1999-08-09 Jason Merrill <jason@yorick.cygnus.com>
-
- * parse.y (function_try_block): Call end_protect_partials
- before expand_start_all_catch.
-
-1999-08-06 Jason Merrill <jason@yorick.cygnus.com>
-
- * pt.c (maybe_get_template_decl_from_type_decl): Make sure that
- we're looking at a class.
-
- * decl.c (lookup_name_real): Set the complain flag if we're
- looking for a namespace member.
-
- * decl.c (pushdecl): Only give an error for shadowing a parm
- from *this* function.
-
- * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Only
- build_expr_from_tree on the args of a TEMPLATE_ID_EXPR.
-
- * class.c (mark_overriders): Fix order of args to overrides.
- (warn_hidden): Likewise. Fix for having virtual and non-virtual
- functions with the same name.
-
- * cp-tree.h (DECL_VIRTUAL_CONTEXT): New macro.
- * typeck.c (expand_ptrmemfunc_cst): Calculate delta correctly for
- virtual functions and MI. Simplify.
-
- * typeck.c (c_expand_return): Downgrade pedwarn about returning NULL
- from op new to warning.
-
- * decl2.c (reparse_absdcl_as_casts): Don't warn about old-style
- casts in system headers or extern "C" blocks.
-
- * pt.c (do_decl_instantiation): Downgrade duplicate instantiation
- errors to pedwarn.
-
- * error.c (dump_type_real): Handle TREE_LIST again.
-
- * typeck.c (comp_target_parms): Don't complain about
- converting from () to (...) if !flag_strict_prototype.
-
- * class.c (instantiate_type): Downgrade errors for object-dependent
- memfn refs to pedwarn.
-
-1999-08-06 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * pt.c (tsubst): Use build_index_type to build in-template array
- index type. Fixes g++.oliva/dwarf1.C.
- * decl.c (grokdeclarator): Likewise, just for consistency, as it
- doesn't seem to trigger the bug without it.
-
-Thu Aug 5 02:40:42 1999 Jeffrey A Law (law@cygnus.com)
-
- * typeck2.c: Update URLs and mail addresses.
-
-1999-08-03 Mumit Khan <khan@xraylith.wisc.edu>
-
- * decl.c (start_decl): Set attributes before duplicate_decls call.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 15:24:21 1999 Jeffrey A Law (law@cygnus.com)
-
- * g++FAQ.texi: Deleted per Joe Buck's request.
- * Makefile.in: Corresponding changes.
-
-Sat Jul 17 23:50:47 1999 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (INTERFACE): Bump to 2.
-
-1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * typeck2.c (my_friendly_abort): Updated URL with bug reporting
- instructions to gcc.gnu.org. Removed e-mail address.
-
-1999-07-15 Mark Mitchell <mark@codesourcery.com>
-
- * pt.c (check_default_tmpl_args): Handle friends defined in the
- class just like member functions defined in the class.
-
-Thu Jul 15 01:26:49 1999 H.J. Lu <hjl@gnu.org>
-
- * decl.c (duplicate_decls): Relax restriction for exception
- checks on duplicate symbols.
-
-1999-07-07 Jason Merrill <jason@yorick.cygnus.com>
-
- * decl.c (grokdeclarator): Update the names of all variants when
- de-anonymizing.
-
-Wed Jul 7 01:26:47 1999 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * decl2.c (mark_vtable_entries): Fix check for rtti offset.
-
-1999-06-26 Richard Henderson <rth@cygnus.com>
-
- * decl.c (cp_finish_decl): Fix typo in cp_warning_at call.
-
-1999-06-21 Mark Mitchell <mark@codesourcery.com>
-
- * init.c (expand_aggr_vbase_init): Rename to
- construct_virtual_bases. Conditionalize construction here,
- rather than ...
- (emit_base_init): Here.
-
-1999-06-19 Mark Mitchell <mark@codesourcery.com>
-
- * semantics.c (finish_asm_statement): Apply decay conversions to
- input operands.
-
- * decl.c (expand_static_init): When building an anonymous function
- for use with atexit, compute its body before and after entering
- the function.
-
-1999-06-18 Mark Mitchell <mark@codesourcery.com>
-
- * init.c (expand_aggr_vbase_init): Add flag parameter.
- (build_partial_cleanup_for): Remove, inlining into ..
- (expand_cleanup_for_base): ... here. Take flag parameter.
- (emit_base_init): Pass the in_chrg parameter to
- emit_aggr_vbase_init.
- (emit_aggr_vbase_init): Pass it to expand_cleanup_for_base.
-
-1999-06-16 Mark Mitchell <mark@codesourcery.com>
-
- * decl2.c (import_export_decl): Use same_type_p, rather than
- relying on pointer-equality for types.
-
- * method.c (do_build_copy_constructor): Simplify.
-
- * call.c (build_method_call): Remove bogus code for two-argument
- delete.
- * init.c (build_new_1): Expand on comment, and remove dead code.
-
- * init.c (expand_cleanup_for_base): New function, split out
- from ...
- (emit_base_init): Here.
- (expand_aggr_vbase_init): Use it.
-
-1999-06-15 Mark Mitchell <mark@codesourcery.com>
-
- * cp-tree.h (class_cache_firstobj): Declare.
- (maybe_push_cache_obstack): Rename to push_cache_obstack.
- * class.c (permanent_obstack): Remove declaration.
- (class_cache_firstobj): Make it global.
- (add_method): Don't use permanent_obstack directly.
- (pushclass): Only free the class_cache_obstack if we know how far
- back to free it.
- (maybe_push_cache_obstack): Rename to push_cache_obstack.
- * decl.c: Remove dead comment.
- (saved_scope): Add class_cache_firstobj.
- (push_to_top_level): Save it.
- (pop_from_top_level): Restore it.
- (push_class_level_binding): Use push_cache_obstack, not
- maybe_push_cache_obstack.
- * search.c (push_class_decls): Likewise.
-
-1999-06-14 Nathan Sidwell <nathan@acm.org>
-
- * call.c (build_new_op): Remove REF_BIND from all operands.
-
-1999-06-07 Mark Mitchell <mark@codesourcery.com>
-
- * search.c (convert_pointer_to_single_level): Reimplement without
- using get_binfo.
-
-1999-06-06 Mark Mitchell <mark@codesourcery.com>
-
- * method.c (is_back_referenceable_type): Back-reference bools when
- not squangling.
-
-1999-06-04 Jason Merrill <jason@yorick.cygnus.com>
-
- * semantics.c (finish_if_stmt_cond): Copy cond to permanent_obstack.
- (finish_while_stmt_cond, finish_do_stmt, finish_for_cond): Likewise.
-
-1999-05-30 Mark Mitchell <mark@codesourcery.com>
-
- * lex.c (make_lang_type): Create TYPE_BINFO for
- TEMPLATE_TYPE_PARMs just like for non-template types.
-
-1999-05-28 Nathan Sidwell <nathan@acm.org>
-
- * decl.c (complete_array_type): Allocate off same obstack. Fix
- DO_DEFAULT comment to match reality.
-
-1999-05-22 Mark Mitchell <mark@codesourcery.com>
-
- * tree.c (mapcar): Handle NON_LVALUE_EXPR.
-
-1999-05-21 Mark Mitchell <mark@codesourcery.com>
-
- * typeck.c (build_ptrmemfunc): Handle PTRMEM_CSTs carefully to
- reveal optimization opportunities.
-
-1999-05-20 Mark Mitchell <mark@codesourcery.com>
-
- * decl.c (grokdeclarator): Don't treat [] as indicating a
- zero-sized array in a typedef.
-
- * call.c (build_object_call): Don't look at DECL_NAME for a type.
- (pt.c): Or CP_TYPE_QUALS for an ERROR_MARK.
- (typeck.c): Or TYPE_MAIN_VARIANT for a type.
-
-1999-05-20 Jason Merrill <jason@yorick.cygnus.com>
-
- * tree.c (lvalue_p_1): A NOP_EXPR can be an lvalue.
- (build_cplus_new): Make sure that what we return is of the right type.
-
-1999-05-20 Mark Mitchell <mark@codesourcery.com>
-
- * cp-tree.h (make_ptrmem_cst): New function.
- * expr.c (cplus_expand_constant): Split out from ...
- (cplus_expand_expr): Here. Use cplus_expand_constant.
- (init_cplus_expand): Set lang_expand_constant.
- * pt.c (convert_nontype_argument): Use make_ptrmem_cst.
- * tree.c (make_ptrmem_cst): Define.
- * typeck.c (unary_complex_lvalue): Use make_ptrmem_cst.
- * typeck2.c (initializer_constant_valid_p): Use make_ptrmem_cst.
-
-1999-05-19 Mark Mitchell <mark@codesourcery.com>
-
- * decl2.c (start_static_storage_duration_function): Fix comment.
- (finish_file): Create static storage duration functions lazily.
-
-Wed May 19 02:50:53 1999 Arvind Sankar <arvinds@mit.edu>
-
- * gxxint.texi: Fix typo.
-
-1999-05-18 Jason Merrill <jason@yorick.cygnus.com>
-
- * call.c (joust): Compare the types of the conv ops, not the
- target types of the conversions.
-
-Tue May 18 00:21:34 1999 Zack Weinberg <zack@rabi.phys.columbia.edu>
-
- * lang-specs.h: Define __GNUC__ and __GNUC_MINOR__ only if -no-gcc
- was not given.
-
-1999-05-17 Mark Mitchell <mark@codesourcery.com>
-
- * cp-tree.def (TEMPLATE_ID_EXPR): Update documentation.
- * decl.c (grokfndecl): Don't allow inline declarations of friend
- template specializations, or friend template specializations with
- default arguments.
- * pt.c (tsubst): Handle substitution into array types that does
- not yield a fixed upper bound, even when not processing a
- template.
- (tsubst_copy): Deal with the fact that the second operand to a
- TEMPLATE_ID_EXPR may be NULL_TREE, a TREE_LIST, or a TREE_VEC.
- * search.c (marked_pushdecls_p): Don't descend into
- TEMPLATE_TYPE_PARMs and the like.
- (unmarked_pushdecls_p): Likewise.
-
- * call.c (build_over_call): Don't throw away
- initializations/copies of empty classes; use MODIFY_EXPR and
- INIT_EXPR as for non-empty classes.
- * class.c (finish_struct_1): Put the padding byte for an empty
- class on the TYPE_NONCOPIED_PARTS list for the class.
-
1999-05-16 Mark Mitchell <mark@codesourcery.com>
* decl2.c (build_expr_from_tree): Handle COMPONENT_REFs that
diff --git a/gnu/egcs/gcc/cp/NEWS b/gnu/egcs/gcc/cp/NEWS
index 1a242abcf41..0cdcc229a4e 100644
--- a/gnu/egcs/gcc/cp/NEWS
+++ b/gnu/egcs/gcc/cp/NEWS
@@ -1,39 +1,9 @@
-*** Changes in GCC 2.95:
+*** Changes since EGCS 1.1:
* Messages about non-conformant code that we can still handle ("pedwarns")
are now errors by default, rather than warnings. This can be reverted
with -fpermissive, and is overridden by -pedantic or -pedantic-errors.
-* String constants are now of type `const char[n]', rather than `char[n]'.
- This can be reverted with -fno-const-strings.
-
-* References to functions are now supported.
-
-* Lookup of class members during class definition now works in all cases.
-
-* In overload resolution, type conversion operators are now properly
- treated as always coming from the most derived class.
-
-* C9x-style restricted pointers are supported, using the `__restrict'
- keyword.
-
-* You can now use -fno-implicit-inline-templates to suppress writing out
- implicit instantiations of inline templates. Normally we do write them
- out, even with -fno-implicit-templates, so that optimization doesn't
- affect which instantiations are needed.
-
-* -fstrict-prototype now also suppresses implicit declarations.
-
-* Many obsolete options have been removed: -fall-virtual, -fmemoize-lookups,
- -fsave-memoized, +e?, -fenum-int-equivalence, -fno-nonnull-objects.
-
-* Unused virtual functions can be discarded on some targets by specifying
- -ffunction-sections -fvtable-gc to the compiler and --gc-sections to the
- linker. Unfortunately, this only works on Linux if you're linking
- statically.
-
-* Lots of bugs stomped.
-
*** Changes in EGCS 1.1:
* Namespaces are fully supported. The library has not yet been converted
diff --git a/gnu/egcs/gcc/cp/class.c b/gnu/egcs/gcc/cp/class.c
index 74808c56f35..1466e949771 100644
--- a/gnu/egcs/gcc/cp/class.c
+++ b/gnu/egcs/gcc/cp/class.c
@@ -36,6 +36,8 @@ Boston, MA 02111-1307, USA. */
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free
+extern struct obstack permanent_obstack;
+
/* This is how we tell when two virtual member functions are really the
same. */
#define SAME_FN(FN1DECL, FN2DECL) (DECL_ASSEMBLER_NAME (FN1DECL) == DECL_ASSEMBLER_NAME (FN2DECL))
@@ -88,7 +90,7 @@ tree previous_class_values; /* TREE_LIST: copy of the class_shadowed list
static struct obstack class_cache_obstack;
/* The first object allocated on that obstack. We can use
obstack_free with tis value to free the entire obstack. */
-char *class_cache_firstobj;
+static char *class_cache_firstobj;
struct base_info;
@@ -102,15 +104,8 @@ static tree get_basefndecls PROTO((tree, tree));
static void set_rtti_entry PROTO((tree, tree, tree));
static tree build_vtable PROTO((tree, tree));
static void prepare_fresh_vtable PROTO((tree, tree));
-static tree prepare_ctor_vtable PROTO((tree, tree, tree));
static void fixup_vtable_deltas1 PROTO((tree, tree));
static void fixup_vtable_deltas PROTO((tree, int, tree));
-static tree finish_one_ctor_vtable PROTO((tree, tree, tree, tree));
-static tree prepend_ctor_vfields_for_vbase PROTO((tree, tree, tree, tree, int, tree));
-static tree finish_ctor_vtables_for_vbases PROTO((tree, tree, tree));
-static tree finish_ctor_vtables_1 PROTO((tree, tree));
-static tree prepend_vbase_vfields PROTO((tree, int, tree));
-static void finish_ctor_vtables PROTO((tree));
static void finish_vtbls PROTO((tree, int, tree));
static void modify_vtable_entry PROTO((tree, tree, tree));
static tree get_vtable_entry_n PROTO((tree, unsigned HOST_WIDE_INT));
@@ -680,7 +675,7 @@ set_rtti_entry (virtuals, offset, type)
return;
if (flag_rtti)
- vfn = build1 (ADDR_EXPR, vfunc_ptr_type_node, get_tinfo_fn_unused (type));
+ vfn = build1 (ADDR_EXPR, vfunc_ptr_type_node, get_tinfo_fn (type));
else
vfn = build1 (NOP_EXPR, vfunc_ptr_type_node, size_zero_node);
TREE_CONSTANT (vfn) = 1;
@@ -929,43 +924,6 @@ prepare_fresh_vtable (binfo, for_type)
SET_BINFO_NEW_VTABLE_MARKED (binfo);
}
-/* Return a new vtable for use in initialization of the BASE subobject
- of COMPLETE_TYPE. The vtable there goes into the vfield of the
- VBASEBASE virtual subobject. */
-
-static tree
-prepare_ctor_vtable (complete_type, base, vbasebase)
- tree complete_type, base, vbasebase;
-{
- tree orig_decl = BINFO_VTABLE (vbasebase);
- tree name = get_vlist_vtable_id (base, vbasebase);
- tree new_decl;
-
- new_decl = build_lang_decl (VAR_DECL, name, TREE_TYPE (orig_decl));
- /* Remember which class this vtable is really for. */
- DECL_CONTEXT (new_decl) = complete_type;
-
- DECL_ARTIFICIAL (new_decl) = 1;
- TREE_STATIC (new_decl) = 1;
- new_decl = pushdecl_top_level (new_decl);
- DECL_VIRTUAL_P (new_decl) = 1;
-#ifndef WRITABLE_VTABLES
- /* Make them READONLY by default. (mrs) */
- TREE_READONLY (new_decl) = 1;
-#endif
- DECL_ALIGN (new_decl) = DECL_ALIGN (orig_decl);
-
-#ifdef GATHER_STATISTICS
- n_vtables += 1;
- n_vtable_elems += list_length (BINFO_VIRTUALS (binfo));
-#endif
-
- /* Set TREE_PUBLIC and TREE_EXTERN as appropriate. */
- import_export_vtable (new_decl, complete_type, 0);
-
- return new_decl;
-}
-
#if 0
/* Access the virtual function table entry that logically
contains BASE_FNDECL. VIRTUALS is the virtual function table's
@@ -1178,8 +1136,7 @@ void
add_method (type, fields, method)
tree type, *fields, method;
{
- push_obstacks_nochange ();
- end_temporary_allocation ();
+ push_obstacks (&permanent_obstack, &permanent_obstack);
/* Setting the DECL_CONTEXT and DECL_CLASS_CONTEXT here is probably
redundant. */
@@ -1842,7 +1799,6 @@ finish_struct_bits (t, max_has_virtual)
TYPE_USES_COMPLEX_INHERITANCE (variants) = TYPE_USES_COMPLEX_INHERITANCE (t);
TYPE_VIRTUAL_P (variants) = TYPE_VIRTUAL_P (t);
TYPE_USES_VIRTUAL_BASECLASSES (variants) = TYPE_USES_VIRTUAL_BASECLASSES (t);
- TYPE_USES_PVBASES (variants) = TYPE_USES_PVBASES (t);
/* Copy whatever these are holding today. */
TYPE_MIN_VALUE (variants) = TYPE_MIN_VALUE (t);
TYPE_MAX_VALUE (variants) = TYPE_MAX_VALUE (t);
@@ -2830,18 +2786,18 @@ get_basefndecls (fndecl, t)
/* Mark the functions that have been hidden with their overriders.
Since we start out with all functions already marked with a hider,
- no need to mark functions that are just hidden.
-
- Subroutine of warn_hidden. */
+ no need to mark functions that are just hidden. */
static void
mark_overriders (fndecl, base_fndecls)
tree fndecl, base_fndecls;
{
- for (; base_fndecls; base_fndecls = TREE_CHAIN (base_fndecls))
+ while (base_fndecls)
{
- if (overrides (fndecl, TREE_VALUE (base_fndecls)))
+ if (overrides (TREE_VALUE (base_fndecls), fndecl))
TREE_PURPOSE (base_fndecls) = fndecl;
+
+ base_fndecls = TREE_CHAIN (base_fndecls);
}
}
@@ -2929,15 +2885,8 @@ warn_hidden (t)
tree binfos = BINFO_BASETYPES (TYPE_BINFO (t));
int i, n_baseclasses = binfos ? TREE_VEC_LENGTH (binfos) : 0;
- /* First see if we have any virtual functions in this batch. */
- for (; fns; fns = OVL_NEXT (fns))
- {
- fndecl = OVL_CURRENT (fns);
- if (DECL_VINDEX (fndecl))
- break;
- }
-
- if (fns == NULL_TREE)
+ fndecl = OVL_CURRENT (fns);
+ if (DECL_VINDEX (fndecl) == NULL_TREE)
continue;
/* First we get a list of all possible functions that might be
@@ -2952,335 +2901,42 @@ warn_hidden (t)
}
fns = OVL_NEXT (fns);
+ if (fns)
+ fndecl = OVL_CURRENT (fns);
+ else
+ fndecl = NULL_TREE;
/* ...then mark up all the base functions with overriders, preferring
overriders to hiders. */
if (base_fndecls)
- for (; fns; fns = OVL_NEXT (fns))
+ while (fndecl)
{
- fndecl = OVL_CURRENT (fns);
- if (DECL_VINDEX (fndecl))
- mark_overriders (fndecl, base_fndecls);
+ mark_overriders (fndecl, base_fndecls);
+
+ fns = OVL_NEXT (fns);
+ if (fns)
+ fndecl = OVL_CURRENT (fns);
+ else
+ fndecl = NULL_TREE;
}
/* Now give a warning for all base functions without overriders,
as they are hidden. */
- for (; base_fndecls; base_fndecls = TREE_CHAIN (base_fndecls))
+ while (base_fndecls)
{
- if (! overrides (TREE_PURPOSE (base_fndecls),
- TREE_VALUE (base_fndecls)))
+ if (! overrides (TREE_VALUE (base_fndecls),
+ TREE_PURPOSE (base_fndecls)))
{
/* Here we know it is a hider, and no overrider exists. */
cp_warning_at ("`%D' was hidden", TREE_VALUE (base_fndecls));
cp_warning_at (" by `%D'", TREE_PURPOSE (base_fndecls));
}
- }
- }
-}
-
-/* Generate one vtable for use in constructors or destructors of BASE
- subobjects of COMPLETE_TYPE objects. The vtable belongs to the
- vfield of the VBASEVASE subobject of the VBASE virtual base of
- COMPLETE_TYPE (and BASE). */
-
-static tree
-finish_one_ctor_vtable (complete_type, base, vbase, vbasebase)
- tree complete_type, base, vbase, vbasebase;
-{
- tree virtuals;
- tree newtable;
- tree newvirtuals;
- tree offset;
- tree newvbase = binfo_member (BINFO_TYPE (vbase),
- CLASSTYPE_VBASECLASSES (complete_type));
-
- newtable = prepare_ctor_vtable (complete_type, base, vbasebase);
- newvirtuals = copy_list (BINFO_VIRTUALS (vbasebase));
-
- virtuals = newvirtuals;
- /* Change the offset entry. First, delta between base an vbase. */
- offset = ssize_binop (MINUS_EXPR, BINFO_OFFSET (newvbase),
- BINFO_OFFSET (base));
- /* Add delta between vbase and vbasebase. */
- offset = ssize_binop (PLUS_EXPR, offset, BINFO_OFFSET (vbasebase));
- offset = ssize_binop (MINUS_EXPR, offset, BINFO_OFFSET (vbase));
- /* Finally, negate. */
- offset = ssize_binop (MINUS_EXPR, integer_zero_node, offset);
- offset = build1 (NOP_EXPR, vfunc_ptr_type_node, offset);
- TREE_CONSTANT (offset) = 1;
- TREE_VALUE (virtuals) = build_vtable_entry (integer_zero_node, offset);
- virtuals = TREE_CHAIN (virtuals);
-
- /* Skip the typeinfo function. */
- virtuals = TREE_CHAIN (virtuals);
-
- /* Iterate over all methods of this virtual base. */
- for (; virtuals; virtuals = TREE_CHAIN (virtuals))
- {
- tree fndecl = TREE_VALUE (virtuals);
- tree pfn = FNADDR_FROM_VTABLE_ENTRY (fndecl);
- fndecl = TREE_OPERAND (pfn, 0);
- if (fndecl)
- {
- tree delta, newdelta, binfo_context;
- tree context = DECL_CLASS_CONTEXT (fndecl);
- /* If this method is implemented in a base of the vbase, the
- thunk we have is correct. */
- if (DERIVED_FROM_P (context, vbase))
- continue;
-
- binfo_context = binfo_value (context, base);
- if (TREE_VIA_VIRTUAL (binfo_context))
- binfo_context = binfo_member
- (context, CLASSTYPE_VBASECLASSES (complete_type));
- /* This is the delta from a complete C to a B subobject, or
- more generally to the base subobject that implements the
- virtual function for B. BASE already has the offset to
- the complete type. */
- delta = BINFO_OFFSET (binfo_context);
- /* This is the delta from the A to the complete C. */
- newdelta = BINFO_OFFSET (newvbase);
- /* This is the delta from the A to the B subobject. */
- newdelta = size_binop (MINUS_EXPR, newdelta, delta);
- newdelta = ssize_binop (MINUS_EXPR, integer_zero_node,
- newdelta);
-
- modify_vtable_entry (virtuals,
- build_vtable_entry (newdelta, pfn),
- fndecl);
+ base_fndecls = TREE_CHAIN (base_fndecls);
}
}
- DECL_INITIAL (newtable) = build_nt (CONSTRUCTOR, NULL_TREE,
- newvirtuals);
- DECL_CONTEXT (newtable) = NULL_TREE;
- cp_finish_decl (newtable, DECL_INITIAL (newtable), NULL_TREE, 0, 0);
- DECL_CONTEXT (newtable) = complete_type;
- return newtable;
-}
-
-/* Add all vtables into LIST for the VBASEBASE subobject and its bases
- of VBASE virtual BASE of COMPLETE_TYPE for use in BASE
- constructors. DO_SELF indicates whether this is the VBASEBASE that
- has 'primary' vfield. Return the new LIST. */
-
-static tree
-prepend_ctor_vfields_for_vbase (complete_type, base, vbase, vbasebase,
- do_self, list)
- tree complete_type, base, vbase, vbasebase;
- int do_self;
- tree list;
-{
- int i;
- tree vtbl;
- tree bases = BINFO_BASETYPES (vbasebase);
- int vfp = CLASSTYPE_VFIELD_PARENT (BINFO_TYPE (vbasebase));
-
- if (do_self && CLASSTYPE_VFIELDS (BINFO_TYPE (vbasebase)))
- {
- vtbl = finish_one_ctor_vtable (complete_type, base, vbase, vbasebase);
- vtbl = build1 (ADDR_EXPR, vtbl_ptr_type_node, vtbl);
- TREE_READONLY (vtbl) = 1;
- TREE_CONSTANT (vtbl) = 1;
- list = tree_cons (NULL_TREE, vtbl, list);
- }
-
- if (!bases)
- return list;
-
- for (i = 0; i < TREE_VEC_LENGTH (bases); i++)
- {
- tree vbasebase = TREE_VEC_ELT (bases, i);
- if (TREE_VIA_VIRTUAL (vbasebase))
- continue;
- list = prepend_ctor_vfields_for_vbase
- (complete_type, base, vbase, vbasebase, (i != vfp), list);
- }
-
- return list;
}
-/* Iterate over all virtual bases of the BASE subobject of
- COMPLETE_TYPE. This list is given in VBASES. Return the list of
- vtables generated in the process. */
-
-static tree
-finish_ctor_vtables_for_vbases (vbases, base, complete_type)
- tree vbases, base, complete_type;
-{
- tree result = NULL_TREE;
-
- for (; vbases; vbases = TREE_CHAIN (vbases))
- result = prepend_ctor_vfields_for_vbase
- (complete_type, base, vbases, vbases, 1, result);
- return result;
-}
-
-/* Generate special vtables for virtual bases for use inside base
- class ctors and dtors. Inside this function, we assume the
- following scenario:
- class A{virtual void foo();};
- class B:virtual A{int member1;}
- class C:B{int member2;}
-
- BINFO is a base subject (e.g. B) of COMPLETE_TYPE. Returns the list
- of virtual tables. */
-
-static tree
-finish_ctor_vtables_1 (binfo, complete_type)
- tree binfo;
- tree complete_type;
-{
- int i;
- tree binfos;
- tree result = NULL_TREE;
-
- binfos = BINFO_BASETYPES (binfo);
- if (!binfos)
- return result;
-
- /* Iterate over all bases (i.e. B). */
- for (i = 0; i < TREE_VEC_LENGTH (binfos); i++)
- {
- tree base = TREE_VEC_ELT (binfos, i);
- tree vbases = CLASSTYPE_VBASECLASSES (BINFO_TYPE (base));
- if (!vbases)
- /* This base class does not have virtual bases. */
- continue;
- if (TREE_VIA_VIRTUAL (base))
- /* A virtual base class is initialized on in the most-derived
- constructor. */
- continue;
- if (!TYPE_USES_PVBASES (BINFO_TYPE (base)))
- /* Class has no polymorphic vbases. */
- continue;
- /* Prepend vtable list for base class. */
- result = chainon (finish_ctor_vtables_1 (base, complete_type),
- result);
- /* Prepend our own vtable list. */
- result = chainon
- (finish_ctor_vtables_for_vbases (vbases, base, complete_type),
- result);
- }
- return result;
-}
-
-/* Add the vtables of a virtual base BINFO in front of LIST, returning
- the new list. DO_SELF indicates whether we have to return the
- vtable of a vfield borrowed in a derived class. */
-
-static tree
-prepend_vbase_vfields (binfo, do_self, list)
- tree binfo;
- int do_self;
- tree list;
-{
- int i;
- tree vtbl;
- tree bases = BINFO_BASETYPES (binfo);
- int vfp = CLASSTYPE_VFIELD_PARENT (BINFO_TYPE (binfo));
-
- if (do_self && CLASSTYPE_VFIELDS (BINFO_TYPE (binfo)))
- {
- vtbl = BINFO_VTABLE (binfo);
- vtbl = build1 (ADDR_EXPR, vtbl_ptr_type_node, vtbl);
- TREE_READONLY (vtbl) = 1;
- TREE_CONSTANT (vtbl) = 1;
- list = tree_cons (NULL_TREE, vtbl, list);
- }
-
- if (!bases)
- return list;
-
- for (i = 0; i < TREE_VEC_LENGTH (bases); i++)
- {
- tree base = TREE_VEC_ELT (bases, i);
- if (TREE_VIA_VIRTUAL (base))
- continue;
- list = prepend_vbase_vfields (base, (i != vfp), list);
- }
-
- return list;
-}
-
-/* Wrapper around finish_ctor_vtables_1. Compute the vtable list for
- type T. */
-
-static void
-finish_ctor_vtables (t)
- tree t;
-{
- tree veclist = NULL_TREE;
- tree decl, type;
- char *name;
- tree vbase;
- int len;
-
- /* This is only good for vtable thunks. */
- my_friendly_assert (flag_vtable_thunks, 990307);
-
- /* Start with the list of most-derived vtables. */
-
- for (vbase = CLASSTYPE_VBASECLASSES (t); vbase;
- vbase = TREE_CHAIN (vbase))
- veclist = prepend_vbase_vfields (vbase, 1, veclist);
-
- /* Compute the list of vtables for the bases. */
- veclist = chainon (veclist, finish_ctor_vtables_1 (TYPE_BINFO (t), t));
-
- /* Finally, we initialize the virtual bases first. */
- for (vbase = CLASSTYPE_VBASECLASSES (t); vbase;
- vbase = TREE_CHAIN (vbase))
- {
- tree vbases = CLASSTYPE_VBASECLASSES (BINFO_TYPE (vbase));
- if (!vbases)
- continue;
- veclist = chainon (veclist,
- finish_ctor_vtables_for_vbases (vbases, vbase, t));
- veclist = chainon (veclist,
- finish_ctor_vtables_1 (vbase, t));
- }
-
- veclist = nreverse (veclist);
-
- /* Generate the name for the vtable list. */
- name = alloca (strlen (VLIST_NAME_FORMAT)
- + TYPE_ASSEMBLER_NAME_LENGTH (t) + 2);
- sprintf (name, VLIST_NAME_FORMAT, TYPE_ASSEMBLER_NAME_STRING (t));
-
- /* Build the type of the list. */
- len = list_length (veclist) - 1;
- if (len < 0)
- /* If this class has virtual bases without virtual methods, make a
- single zero-entry in the array. This avoids zero-sized objects. */
- len++;
- type = build_cplus_array_type (vtbl_ptr_type_node,
- build_index_type (size_int (len)));
-
-
- /* Produce a new decl holding the list. */
- decl = build_lang_decl (VAR_DECL, get_identifier (name), type);
- TREE_STATIC (decl) = 1;
- TREE_READONLY (decl) = 1;
- decl = pushdecl_top_level (decl);
- import_export_vtable (decl, t, 0);
- DECL_INITIAL (decl) = build_nt (CONSTRUCTOR, NULL_TREE, veclist);
-
- DECL_ARTIFICIAL (decl) = 1;
- /* This tells finish_file et.al. that this is related to virtual
- tables. There is currently no way to distinguish between vtables
- and vlists, other than the name of the decl. */
- DECL_VIRTUAL_P (decl) = 1;
-
- /* Output the array. */
- cp_finish_decl (decl, DECL_INITIAL (decl), NULL_TREE, 0, 0);
-
- /* Set the class context after finishing, so that finish thinks this
- is an unrelated global, and then finish_vtable_vardecl knows what
- class this is related to. */
- DECL_CONTEXT (decl) = t;
-}
-
/* Check for things that are invalid. There are probably plenty of other
things we should check for also. */
@@ -3477,7 +3133,6 @@ finish_struct_1 (t, warn_anon)
int aggregate = 1;
int empty = 1;
int has_pointers = 0;
- tree inline_friends;
if (warn_anon && code != UNION_TYPE && ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
pedwarn ("anonymous class type not used to declare any objects");
@@ -4085,13 +3740,6 @@ finish_struct_1 (t, warn_anon)
if (DECL_SIZE (x) != integer_zero_node)
empty = 0;
}
-
- /* CLASSTYPE_INLINE_FRIENDS is really TYPE_NONCOPIED_PARTS. Thus,
- we have to save this before we start modifying
- TYPE_NONCOPIED_PARTS. */
- inline_friends = CLASSTYPE_INLINE_FRIENDS (t);
- CLASSTYPE_INLINE_FRIENDS (t) = NULL_TREE;
-
if (empty)
{
/* C++: do not let empty structures exist. */
@@ -4099,11 +3747,7 @@ finish_struct_1 (t, warn_anon)
(FIELD_DECL, NULL_TREE, char_type_node);
TREE_CHAIN (decl) = fields;
TYPE_FIELDS (t) = decl;
- TYPE_NONCOPIED_PARTS (t)
- = tree_cons (NULL_TREE, decl, TYPE_NONCOPIED_PARTS (t));
- TREE_STATIC (TYPE_NONCOPIED_PARTS (t)) = 1;
}
-
if (n_baseclasses)
TYPE_FIELDS (t) = chainon (last_x, TYPE_FIELDS (t));
@@ -4377,7 +4021,8 @@ finish_struct_1 (t, warn_anon)
}
/* Write out inline function definitions. */
- do_inline_function_hair (t, inline_friends);
+ do_inline_function_hair (t, CLASSTYPE_INLINE_FRIENDS (t));
+ CLASSTYPE_INLINE_FRIENDS (t) = 0;
if (CLASSTYPE_VSIZE (t) != 0)
{
@@ -4404,9 +4049,7 @@ finish_struct_1 (t, warn_anon)
/* In addition to this one, all the other vfields should be listed. */
/* Before that can be done, we have to have FIELD_DECLs for them, and
a place to find them. */
- TYPE_NONCOPIED_PARTS (t)
- = tree_cons (default_conversion (TYPE_BINFO_VTABLE (t)),
- vfield, TYPE_NONCOPIED_PARTS (t));
+ TYPE_NONCOPIED_PARTS (t) = build_tree_list (default_conversion (TYPE_BINFO_VTABLE (t)), vfield);
if (warn_nonvdtor && TYPE_HAS_DESTRUCTOR (t)
&& DECL_VINDEX (TREE_VEC_ELT (method_vec, 1)) == NULL_TREE)
@@ -4417,10 +4060,6 @@ finish_struct_1 (t, warn_anon)
/* Make the rtl for any new vtables we have created, and unmark
the base types we marked. */
finish_vtbls (TYPE_BINFO (t), 1, t);
- /* If we use thunks, and have virtual bases, we might need to emit
- additional vtables. */
- if (flag_vtable_thunks && TYPE_USES_PVBASES (t))
- finish_ctor_vtables (t);
hack_incomplete_structures (t);
#if 0
@@ -4822,8 +4461,7 @@ pushclass (type, modify)
invalidate_class_lookup_cache ();
/* Now, free the obstack on which we cached all the values. */
- if (class_cache_firstobj)
- obstack_free (&class_cache_obstack, class_cache_firstobj);
+ obstack_free (&class_cache_obstack, class_cache_firstobj);
class_cache_firstobj
= (char*) obstack_finish (&class_cache_obstack);
}
@@ -5368,15 +5006,15 @@ instantiate_type (lhstype, rhs, flags)
field = OVL_FUNCTION (field);
if (TREE_CODE (field) == FUNCTION_DECL)
{
- cp_pedwarn ("object-dependent reference `%E' can only be used in a call",
+ cp_error ("object-dependent reference `%E' can only be used in a call",
DECL_NAME (field));
- cp_pedwarn (" to form a pointer to member function, say `&%T::%E'",
+ cp_error (" to form a pointer to member function, say `&%T::%E'",
t, DECL_NAME (field));
}
else
- cp_pedwarn ("object-dependent reference can only be used in a call");
+ cp_error ("object-dependent reference can only be used in a call");
}
- return r;
+ return error_mark_node;
}
return r;
@@ -5580,7 +5218,7 @@ print_class_statistics ()
effect is undone by pop_obstacks. */
void
-push_cache_obstack ()
+maybe_push_cache_obstack ()
{
static int cache_obstack_initialized;
diff --git a/gnu/egcs/gcc/cp/cp-tree.def b/gnu/egcs/gcc/cp/cp-tree.def
index 70801fc9563..da0f1642fd8 100644
--- a/gnu/egcs/gcc/cp/cp-tree.def
+++ b/gnu/egcs/gcc/cp/cp-tree.def
@@ -173,10 +173,10 @@ DEFTREECODE (USING_DECL, "using_decl", 'd', 0)
DEFTREECODE (DEFAULT_ARG, "default_arg", 'c', 2)
/* A template-id, like foo<int>. The first operand is the template.
- The second is the TREE_LIST or TREE_VEC of explicitly specified
- arguments. The template will be a FUNCTION_DECL, TEMPLATE_DECL, or
- an OVERLOAD. If the template-id refers to a member template, the
- template may be an IDENTIFIER_NODE. */
+ The second is the list of explicitly specified arguments. The
+ template will be a FUNCTION_DECL, TEMPLATE_DECL, or an OVERLOAD.
+ If the template-id refers to a member template, the template may be
+ an IDENTIFIER_NODE. */
DEFTREECODE (TEMPLATE_ID_EXPR, "template_id_expr", 'e', 2)
/* An association between name and entity. Parameters are the scope
diff --git a/gnu/egcs/gcc/cp/error.c b/gnu/egcs/gcc/cp/error.c
index 4da1d2f3b87..ed316e1dafc 100644
--- a/gnu/egcs/gcc/cp/error.c
+++ b/gnu/egcs/gcc/cp/error.c
@@ -211,11 +211,6 @@ dump_type_real (t, v, canonical_name)
OB_PUTS ("{unknown type}");
break;
- case TREE_LIST:
- /* A list of function parms. */
- dump_parameters (t, 0, canonical_name);
- break;
-
case IDENTIFIER_NODE:
OB_PUTID (t);
break;
diff --git a/gnu/egcs/gcc/cp/exception.cc b/gnu/egcs/gcc/cp/exception.cc
index 59342c6423e..8e8f35f50db 100644
--- a/gnu/egcs/gcc/cp/exception.cc
+++ b/gnu/egcs/gcc/cp/exception.cc
@@ -247,10 +247,10 @@ __cp_pop_exception (cp_eh_info *p)
if (p->cleanup)
/* 2 is a magic value for destructors; see build_delete(). */
- p->cleanup (p->original_value, 2); // value may have been adjusted.
+ p->cleanup (p->value, 2);
if (! __is_pointer (p->type))
- __eh_free (p->original_value); // value may have been adjusted.
+ __eh_free (p->original_value); // value may have been co-erced.
__eh_free (p);
}
diff --git a/gnu/egcs/gcc/cp/expr.c b/gnu/egcs/gcc/cp/expr.c
index 83bdff9eba7..bc745ff0a00 100644
--- a/gnu/egcs/gcc/cp/expr.c
+++ b/gnu/egcs/gcc/cp/expr.c
@@ -36,62 +36,6 @@ static tree extract_scalar_init PROTO((tree, tree));
static rtx cplus_expand_expr PROTO((tree, rtx, enum machine_mode,
enum expand_modifier));
-/* Hook used by output_constant to expand language-specific
- constants. */
-
-static tree
-cplus_expand_constant (cst)
- tree cst;
-{
- switch (TREE_CODE (cst))
- {
- case PTRMEM_CST:
- {
- tree type = TREE_TYPE (cst);
- tree member;
- tree offset;
-
- /* Find the member. */
- member = PTRMEM_CST_MEMBER (cst);
-
- if (TREE_CODE (member) == FIELD_DECL)
- {
- /* Find the offset for the field. */
- offset = convert (sizetype,
- size_binop (EASY_DIV_EXPR,
- DECL_FIELD_BITPOS (member),
- size_int (BITS_PER_UNIT)));
-
- /* We offset all pointer to data members by 1 so that we
- can distinguish between a null pointer to data member
- and the first data member of a structure. */
- offset = size_binop (PLUS_EXPR, offset, size_int (1));
-
- cst = cp_convert (type, offset);
- }
- else
- {
- tree delta;
- tree idx;
- tree pfn;
- tree delta2;
-
- expand_ptrmemfunc_cst (cst, &delta, &idx, &pfn, &delta2);
-
- cst = build_ptrmemfunc1 (type, delta, idx,
- pfn, delta2);
- }
- }
- break;
-
- default:
- /* There's nothing to do. */
- break;
- }
-
- return cst;
-}
-
/* Hook used by expand_expr to expand language-specific tree codes. */
static rtx
@@ -219,8 +163,43 @@ cplus_expand_expr (exp, target, tmode, modifier)
}
case PTRMEM_CST:
- return expand_expr (cplus_expand_constant (exp),
- target, tmode, modifier);
+ {
+ tree member;
+ tree offset;
+
+ /* Find the member. */
+ member = PTRMEM_CST_MEMBER (exp);
+
+ if (TREE_CODE (member) == FIELD_DECL)
+ {
+ /* Find the offset for the field. */
+ offset = convert (sizetype,
+ size_binop (EASY_DIV_EXPR,
+ DECL_FIELD_BITPOS (member),
+ size_int (BITS_PER_UNIT)));
+
+ /* We offset all pointer to data members by 1 so that we
+ can distinguish between a null pointer to data member
+ and the first data member of a structure. */
+ offset = size_binop (PLUS_EXPR, offset, size_int (1));
+
+ return expand_expr (cp_convert (type, offset), target, tmode,
+ modifier);
+ }
+ else
+ {
+ tree delta;
+ tree idx;
+ tree pfn;
+ tree delta2;
+
+ expand_ptrmemfunc_cst (exp, &delta, &idx, &pfn, &delta2);
+
+ return expand_expr (build_ptrmemfunc1 (type, delta, idx,
+ pfn, delta2),
+ target, tmode, modifier);
+ }
+ }
case OFFSET_REF:
{
@@ -258,7 +237,6 @@ void
init_cplus_expand ()
{
lang_expand_expr = cplus_expand_expr;
- lang_expand_constant = cplus_expand_constant;
}
/* If DECL had its rtl moved from where callers expect it
diff --git a/gnu/egcs/gcc/cp/gxxint.texi b/gnu/egcs/gcc/cp/gxxint.texi
index 81bcab86425..c63b672959b 100644
--- a/gnu/egcs/gcc/cp/gxxint.texi
+++ b/gnu/egcs/gcc/cp/gxxint.texi
@@ -26,7 +26,6 @@ Questions and comments to Benjamin Kosnik @code{<bkoz@@cygnus.com>}.
* Exception Handling::
* Free Store::
* Mangling:: Function name mangling for C++ and Java
-* Vtables:: Two ways to do virtual functions
* Concept Index::
@end menu
@@ -191,9 +190,7 @@ accessed by the BINFO_ accessor macros.
The virtual function table holds information used in virtual function
dispatching. In the compiler, they are usually referred to as vtables,
or vtbls. The first index is not used in the normal way, I believe it
-is probably used for the virtual destructor. There are two forms of
-virtual tables, one that has offsets in addition to pointers, and one
-using thunks. @xref{Vtables}.
+is probably used for the virtual destructor.
@item vfield
@@ -1458,7 +1455,7 @@ To meet the first goal, we defer emission of inlines and vtables until
the end of the translation unit, where we can decide whether or not they
are needed, and how to emit them if they are.
-@node Mangling, Vtables, Free Store, Top
+@node Mangling, Concept Index, Free Store, Top
@section Function name mangling for C++ and Java
Both C++ and Jave provide overloaded function and methods,
@@ -1751,7 +1748,7 @@ Used to indicate a template function.
Encodes the C++ and Java @code{int} types.
@item I
-Encodes typedef names of the form @code{int@var{n}_t}, where @var{n} is a
+Encodes typedef names of the form @code{int@var{n}_t, where @var{n} is a
positive decimal number. The @samp{I} is followed by either two
hexidecimal digits, which encode the value of @var{n}, or by an
arbitrary number of hexidecimal digits between underscores. For
@@ -1842,231 +1839,7 @@ Used for template type parameters.
The letters @samp{G}, @samp{M}, @samp{O}, and @samp{p}
also seem to be used for obscure purposes ...
-@node Vtables, Concept Index, Mangling, Top
-@section Virtual Tables
-
-In order to invoke virtual functions, GNU C++ uses virtual tables. Each
-virtual function gets an index, and the table entry points to the
-overridden function to call. Sometimes, and adjustment to the this
-pointer has to be made before calling a virtual function:
-
-@example
-struct A@{
- int i;
- virtual void foo();
-@};
-
-struct B@{
- int j;
- virtual void bar();
-@};
-
-struct C:A,B@{
- virtual void bar();
-@};
-
-void C::bar()
-@{
- i++;
-@}
-
-int main()
-@{
- C *c = new C;
- B *b = c;
- c->bar();
-@}
-@end example
-
-Here, casting from @samp{c} to @samp{b} adds an offset. When @samp{bar}
-is called, this offset needs to be subtracted, so that @samp{C::bar} can
-properly access @samp{i}. One approach of achieving this is to use
-@emph{thunks}, which are small half-functions put into the virtual
-table. The modify the first argument (the @samp{this} pointer), and then
-jump into the real function.
-
-The other (traditional) approach is to have an additional integer in the
-virtual table which is added to this. This is an additional overhead
-both at the function call, and in the size of virtual tables: In the
-case of single inheritance (or for the first base class), these integers
-will always be zero.
-
-@subsection Virtual Base Classes with Virtual Tables
-
-In case of virtual bases, the code is even more
-complicated. Constructors and destructors need to know whether they are
-"in charge" of the virtual bases, and an implicit integer
-@samp{__in_chrg} for that purpose.
-
-@example
-struct A@{
- int i;
- virtual void bar();
- void call_bar()@{bar();@}
-@};
-
-struct B:virtual A@{
- B();
- int j;
- virtual void bar();
-@};
-
-B::B()@{
- call_bar();
-@}
-
-struct C@{
- int k;
-@};
-
-struct D:C,B@{
- int l;
- virtual void bar();
-@};
-
-@end example
-
-When constructing an instance of B, it will have the following layout:
-@samp{vbase pointer to A}, @samp{j}, @samp{A virtual table}, @samp{i}.
-On a 32-bit machine, downcasting from @samp{A*} to @samp{B*} would need
-to subtract 8, which would be the thunk executed when calling
-@samp{B::bar} inside @samp{call_bar}.
-
-When constructing an instance of D, it will have a different layout:
-@samp{k}, @samp{vbase pointer to A}, @samp{j}, @samp{l}, @samp{A virtual
-table}, @samp{i}. So, when downcasting from @samp{A*} to @samp{B*} in a
-@samp{D} object, the offset would be @samp{12}.
-
-This means that during construction of the @samp{B} base of a @samp{D}
-object, a virtual table is needed which has a @samp{-12} thunk to
-@samp{B::bar}. This is @emph{only} needed during construction and
-destruction, as the full object will use a @samp{-16} thunk to
-@samp{D::bar}.
-
-In order to implement this, the compiler generates an implicit argument
-(in addition to @code{__in_chrg}): the virtual list argument
-@code{__vlist}. This is a list of virtual tables needed during
-construction and destruction. The virtual pointers are ordered in the
-way they are used during construction; the destructors will process the
-array in reverse order. The ordering is as follows:
-@itemize @bullet
-@item
-If the class is in charge, the vlist starts with virtual table pointers
-for the virtual bases that have virtual bases themselves. Here, only
-@emph{polymorphic} virtual bases (pvbases) are interesting: if a vbase
-has no virtual functions, it doesn't have a virtual table.
-
-@item
-Next, the vlist has virtual tables for the initialization of the
-non-virtual bases. These bases are not in charge, so the layout is
-recursive, but ignores virtual bases during recursion.
-
-@item
-Next, there is a number of virtual tables for each virtual base. These
-are sorted in the order in which virtual bases are constructed. Each
-virtual base may have more than one @code{vfield}, and therefore require
-more than one @code{vtable}. The order of vtables is the same as used
-when initializing vfields of non-virtual bases in a constructor.
-@end itemize
-
-The compiler emits a virtual table list in a variable mangled as
-@code{__vl.classname}.
-
-Class with virtual bases, but without pvbases, only have the
-@code{__in_chrg} argument to their ctors and dtors: they don't have any
-vfields in the vbases to initialize.
-
-A further problem arises with virtual destructors: A destructor
-typically has only the @code{__in_chrg} argument, which also indicates
-whether the destructor should call @code{operator delete}. A dtor of a
-class with pvbases has an additional argument. Unfortunately, a caller
-of a virtual dtor might not know whether to pass that argument or not.
-Therefore, the dtor processes the @code{__vlist} argument in an
-automatic variable, which is initialized from the class' vlist if the
-__in_chrg flag has a zero value in bit 2 (bit mask 4), or from the
-argument @code{__vlist1} if bit 2 of the __in_chrg parameter is set to
-one.
-
-@subsection Specification of non-thunked vtables
-
-In the traditional implementation of vtables, each slot contains three
-fields: The offset to be added to the this pointer before invoking a
-virtual function, an unused field that is always zero, and the pointer
-to the virtual function. The first two fields are typically 16 bits
-wide. The unused field is called `index'; it may be non-zero in
-pointer-to-member-functions, which use the same layout.
-
-The virtual table then is an array of vtable slots. The first slot is
-always the virtual type info function, the other slots are in the order
-in which the virtual functions appear in the class declaration.
-
-If a class has base classes, it may inherit other bases' vfields. Each
-class may have a primary vfield; the primary vfield of the derived class
-is the primary vfield of the left-most non-virtual base class. If a
-class inherits a primary vfield, any new virtual functions in the
-derived class are appended to the virtual table of the primary
-vfield. If there are new virtual functions in the derived class, and no
-primary vfield is inherited, a new vfield is introduced which becomes
-primary. The redefined virtual functions fill the vtable slots inherited
-from the base; new virtual functions are put into the primary vtable in
-the order of declaration. If no new virtual functions are introduced, no
-primary vfield is allocated.
-
-In a base class that has pvbases, virtual tables are needed which are
-used only in the constructor (see example above). At run-time, the
-virtual tables of the base class are adjusted, to reflect the new offset
-of the pvbase. The compiler knows statically what offset the pvbase has
-for a complete object. At run-time, the offset of the pvbase can be
-extracted from the vbase pointer, which is set in the constructor of the
-complete object. These two offsets result in a delta, which is used to
-adjust the deltas in the vtable (the adjustment might be different for
-different vtable slots). To adjust the vtables, the compiler emits code
-that creates a vtable on the stack. This vtable is initialized with the
-vtable for the complete base type, and then adjusted.
-
-In order to call a virtual function, the compiler gets the offset field
-from the vtable entry, and adds it to the this pointer. It then
-indirectly calls the virtual function pointer, passing the adjusted this
-pointer, and any arguments the virtual function may have.
-
-To implement dynamic casting, the dynamic_cast function needs typeinfos
-for the complete type, and the pointer to the complete type. The
-typeinfo pointer is obtained by calling the virtual typeinfo function
-(which doesn't take a this parameter). The pointer to the complete
-object is obtained by adding the offset of the virtual typeinfo vtable
-slot, since this virtual function is always implemented in the complete
-object.
-
-@subsection Specification of thunked vtables
-
-For vtable thunks, each slot only consists of a pointer to the virtual
-function, which might be a thunk function. The first slot in the vtable
-is an offset of the this pointer to the complete object, which is needed
-as a parameter to __dynamic_cast. The second slot is the virtual
-typeinfo function. All other slots are allocated with the same procedure
-as in the non-thunked case. Allocation of vfields also uses the same
-procedure as described above.
-
-If the virtual function needs an adjusted this pointer, a thunk function
-is emitted. If supported by the target architecture, this is only a
-half-function. Such a thunk has no stack frame; it merely adjusts the
-first argument of the function, and then directly branches into the
-implementation of the virtual function. If the architecture does not
-support half-functions (i.e. if ASM_OUTPUT_MI_THUNK is not defined), the
-compiler emits a wrapper function, which copies all arguments, adjust
-the this pointer, and then calls the original function. Since objects of
-non-aggregate type are passed by invisible reference, this copies only
-POD arguments. The approach fails for virtual functions with a variable
-number of arguments.
-
-In order to support the vtables needed in base constructors with
-pvbases, the compiler passes an implicit __vlist argument as described
-above, if the version 2 thunks are used. For version 1 thunks, the base
-class constructor will fill in the vtables for the complete base class,
-which will incorrectly adjust the this pointer, leading to a dynamic
-error.
-
-@node Concept Index, , Vtables, Top
+@node Concept Index, , Mangling, Top
@section Concept Index
diff --git a/gnu/egcs/gcc/cp/init.c b/gnu/egcs/gcc/cp/init.c
index d70fc3298b9..7fb203007de 100644
--- a/gnu/egcs/gcc/cp/init.c
+++ b/gnu/egcs/gcc/cp/init.c
@@ -44,7 +44,7 @@ Boston, MA 02111-1307, USA. */
tree current_base_init_list, current_member_init_list;
static void expand_aggr_vbase_init_1 PROTO((tree, tree, tree, tree));
-static void construct_virtual_bases PROTO((tree, tree, tree, tree, tree));
+static void expand_aggr_vbase_init PROTO((tree, tree, tree, tree));
static void expand_aggr_init_1 PROTO((tree, tree, tree, tree, int));
static void expand_default_init PROTO((tree, tree, tree, tree, int));
static tree build_vec_delete_1 PROTO((tree, tree, tree, tree, tree,
@@ -55,12 +55,11 @@ static tree build_builtin_delete_call PROTO((tree));
static int member_init_ok_or_else PROTO((tree, tree, const char *));
static void expand_virtual_init PROTO((tree, tree));
static tree sort_member_init PROTO((tree));
+static tree build_partial_cleanup_for PROTO((tree));
static tree initializing_context PROTO((tree));
static void expand_vec_init_try_block PROTO((tree));
static void expand_vec_init_catch_clause PROTO((tree, tree, tree, tree));
static tree build_java_class_ref PROTO((tree));
-static void expand_cleanup_for_base PROTO((tree, tree, tree));
-static int pvbasecount PROTO((tree, int));
/* Cache the identifier nodes for the magic field of a new cookie. */
static tree nc_nelts_field_id;
@@ -479,91 +478,15 @@ sort_base_init (t, rbase_ptr, vbase_ptr)
*vbase_ptr = vbases;
}
-/* Invoke a base-class destructor. REF is the object being destroyed,
- BINFO is the base class, and DTOR_ARG indicates whether the base
- class should invoke delete. */
+/* Perform partial cleanups for a base for exception handling. */
-tree
-build_base_dtor_call (ref, binfo, dtor_arg)
- tree ref, binfo, dtor_arg;
-{
- tree args = NULL_TREE;
- tree vlist = lookup_name (vlist_identifier, 0);
- tree call, decr;
-
- if (TYPE_USES_PVBASES (BINFO_TYPE (binfo)))
- {
- args = expr_tree_cons (NULL_TREE, vlist, args);
- dtor_arg = build (BIT_IOR_EXPR, integer_type_node,
- dtor_arg, build_int_2 (4, 0));
- dtor_arg = fold (dtor_arg);
- }
- args = expr_tree_cons (NULL_TREE, dtor_arg, args);
- call = build_scoped_method_call (ref, binfo, dtor_identifier, args);
-
- if (!TYPE_USES_PVBASES (BINFO_TYPE (binfo)))
- /* For plain inheritance, do not try to adjust __vlist. */
- return call;
-
- /* Now decrement __vlist by the number of slots consumed by the base
- dtor. */
- decr = build_int_2 (pvbasecount (BINFO_TYPE (binfo), 0), 0);
- decr = build_binary_op (MINUS_EXPR, vlist, decr);
- decr = build_modify_expr (vlist, NOP_EXPR, decr);
-
- return build (COMPOUND_EXPR, void_type_node, call, decr);
-}
-
-/* Return the number of vlist entries needed to initialize TYPE,
- depending on whether it is IN_CHARGE. */
-
-static int
-pvbasecount (type, in_charge)
- tree type;
- int in_charge;
-{
- int i;
- int result = 0;
- tree vbase;
-
- for (vbase = (CLASSTYPE_VBASECLASSES (type)); vbase;
- vbase = TREE_CHAIN (vbase))
- {
- result += list_length (CLASSTYPE_VFIELDS (BINFO_TYPE (vbase)));
- if (in_charge)
- result += pvbasecount (BINFO_TYPE (vbase), 0);
- }
-
- for (i=0; i < CLASSTYPE_N_BASECLASSES (type); i++)
- {
- tree base = TREE_VEC_ELT (TYPE_BINFO_BASETYPES (type), i);
- if (TREE_VIA_VIRTUAL (base))
- continue;
- result += pvbasecount (BINFO_TYPE (base), 0);
- }
- return result;
-}
-
-void
-init_vlist (t)
- tree t;
+static tree
+build_partial_cleanup_for (binfo)
+ tree binfo;
{
- char *name;
- tree expr;
- tree vlist = lookup_name (vlist_identifier, 0);
-
- name = alloca (strlen (VLIST_NAME_FORMAT)
- + TYPE_ASSEMBLER_NAME_LENGTH (t) + 2);
- sprintf (name, VLIST_NAME_FORMAT, TYPE_ASSEMBLER_NAME_STRING (t));
-
- expr = get_identifier (name);
- expr = lookup_name (expr, 0);
- expr = build1 (ADDR_EXPR, TREE_TYPE (vlist), expr);
- if (DECL_DESTRUCTOR_FOR_PVBASE_P (current_function_decl))
- /* Move to the end of the vlist. */
- expr = build_binary_op (PLUS_EXPR, expr,
- build_int_2 (pvbasecount (t, 1), 0));
- expand_expr_stmt (build_modify_expr (vlist, NOP_EXPR, expr));
+ return build_scoped_method_call
+ (current_class_ref, binfo, dtor_identifier,
+ build_expr_list (NULL_TREE, integer_zero_node));
}
/* Perform whatever initializations have yet to be done on the base
@@ -598,7 +521,6 @@ emit_base_init (t, immediately)
tree binfos = BINFO_BASETYPES (t_binfo);
int i, n_baseclasses = binfos ? TREE_VEC_LENGTH (binfos) : 0;
tree expr = NULL_TREE;
- tree vlist = lookup_name (vlist_identifier, 0);
if (! immediately)
{
@@ -626,13 +548,14 @@ emit_base_init (t, immediately)
sort_base_init (t, &rbase_init_list, &vbase_init_list);
current_base_init_list = NULL_TREE;
- /* First, initialize the virtual base classes, if we are
- constructing the most-derived object. */
if (TYPE_USES_VIRTUAL_BASECLASSES (t))
{
tree first_arg = TREE_CHAIN (DECL_ARGUMENTS (current_function_decl));
- construct_virtual_bases (t, current_class_ref, current_class_ptr,
- vbase_init_list, first_arg);
+
+ expand_start_cond (first_arg, 0);
+ expand_aggr_vbase_init (t_binfo, current_class_ref, current_class_ptr,
+ vbase_init_list);
+ expand_end_cond ();
}
/* Now, perform initialization of non-virtual base classes. */
@@ -670,7 +593,18 @@ emit_base_init (t, immediately)
free_temp_slots ();
}
- expand_cleanup_for_base (base_binfo, vlist, NULL_TREE);
+ if (TYPE_NEEDS_DESTRUCTOR (BINFO_TYPE (base_binfo)))
+ {
+ tree expr;
+
+ /* All cleanups must be on the function_obstack. */
+ push_obstacks_nochange ();
+ resume_temporary_allocation ();
+ expr = build_partial_cleanup_for (base_binfo);
+ pop_obstacks ();
+ add_partial_entry (expr);
+ }
+
rbase_init_list = TREE_CHAIN (rbase_init_list);
}
@@ -832,48 +766,6 @@ expand_virtual_init (binfo, decl)
expand_expr_stmt (build_modify_expr (vtbl_ptr, NOP_EXPR, vtbl));
}
-/* If an exception is thrown in a constructor, those base classes already
- constructed must be destroyed. This function creates the cleanup
- for BINFO, which has just been constructed. If FLAG is non-NULL,
- it is a DECL which is non-zero when this base needs to be
- destroyed. */
-
-static void
-expand_cleanup_for_base (binfo, vlist, flag)
- tree binfo;
- tree vlist;
- tree flag;
-{
- tree expr;
-
- if (TYPE_NEEDS_DESTRUCTOR (BINFO_TYPE (binfo)))
- {
- /* All cleanups must be on the function_obstack. */
- push_obstacks_nochange ();
- resume_temporary_allocation ();
-
- /* Call the destructor. */
- expr = build_base_dtor_call (current_class_ref, binfo,
- integer_zero_node);
- if (flag)
- expr = fold (build (COND_EXPR, void_type_node,
- truthvalue_conversion (flag),
- expr, integer_zero_node));
-
- pop_obstacks ();
- add_partial_entry (expr);
- }
-
- if (TYPE_USES_PVBASES (BINFO_TYPE (binfo)))
- {
- /* Increment vlist by number of base's vbase classes. */
- expr = build_int_2 (pvbasecount (BINFO_TYPE (binfo), 0), 0);
- expr = build_binary_op (PLUS_EXPR, vlist, expr);
- expr = build_modify_expr (vlist, NOP_EXPR, expr);
- expand_expr_stmt (expr);
- }
-}
-
/* Subroutine of `expand_aggr_vbase_init'.
BINFO is the binfo of the type that is being initialized.
INIT_LIST is the list of initializers for the virtual baseclass. */
@@ -896,66 +788,36 @@ expand_aggr_vbase_init_1 (binfo, exp, addr, init_list)
free_temp_slots ();
}
-/* Construct the virtual base-classes of THIS_REF (whose address is
- THIS_PTR). The object has the indicated TYPE. The construction
- actually takes place only if FLAG is non-zero. INIT_LIST is list
- of initialization for constructor to perform. */
+/* Initialize this object's virtual base class pointers. This must be
+ done only at the top-level of the object being constructed.
+
+ INIT_LIST is list of initialization for constructor to perform. */
static void
-construct_virtual_bases (type, this_ref, this_ptr, init_list, flag)
- tree type;
- tree this_ref;
- tree this_ptr;
+expand_aggr_vbase_init (binfo, exp, addr, init_list)
+ tree binfo;
+ tree exp;
+ tree addr;
tree init_list;
- tree flag;
{
- tree vbases;
- tree result;
- tree vlist = NULL_TREE;
-
- /* If there are no virtual baseclasses, we shouldn't even be here. */
- my_friendly_assert (TYPE_USES_VIRTUAL_BASECLASSES (type), 19990621);
+ tree type = BINFO_TYPE (binfo);
- /* First set the pointers in our object that tell us where to find
- our virtual baseclasses. */
- expand_start_cond (flag, 0);
- if (TYPE_USES_PVBASES (type))
+ if (TYPE_USES_VIRTUAL_BASECLASSES (type))
{
- init_vlist (type);
- vlist = lookup_name (vlist_identifier, 0);
- }
- result = init_vbase_pointers (type, this_ptr);
- if (result)
- expand_expr_stmt (build_compound_expr (result));
- expand_end_cond ();
+ tree result = init_vbase_pointers (type, addr);
+ tree vbases;
- /* Now, run through the baseclasses, initializing each. */
- for (vbases = CLASSTYPE_VBASECLASSES (type); vbases;
- vbases = TREE_CHAIN (vbases))
- {
- tree tmp = purpose_member (vbases, result);
-
- /* If there are virtual base classes with destructors, we need to
- emit cleanups to destroy them if an exception is thrown during
- the construction process. These exception regions (i.e., the
- period during which the cleanups must occur) begin from the time
- the construction is complete to the end of the function. If we
- create a conditional block in which to initialize the
- base-classes, then the cleanup region for the virtual base begins
- inside a block, and ends outside of that block. This situation
- confuses the sjlj exception-handling code. Therefore, we do not
- create a single conditional block, but one for each
- initialization. (That way the cleanup regions always begin
- in the outer block.) We trust the back-end to figure out
- that the FLAG will not change across initializations, and
- avoid doing multiple tests. */
- expand_start_cond (flag, 0);
- expand_aggr_vbase_init_1 (vbases, this_ref,
- TREE_OPERAND (TREE_VALUE (tmp), 0),
- init_list);
- expand_end_cond ();
-
- expand_cleanup_for_base (vbases, vlist, flag);
+ if (result)
+ expand_expr_stmt (build_compound_expr (result));
+
+ for (vbases = CLASSTYPE_VBASECLASSES (type); vbases;
+ vbases = TREE_CHAIN (vbases))
+ {
+ tree tmp = purpose_member (vbases, result);
+ expand_aggr_vbase_init_1 (vbases, exp,
+ TREE_OPERAND (TREE_VALUE (tmp), 0),
+ init_list);
+ }
}
}
@@ -1250,52 +1112,6 @@ expand_aggr_init (exp, init, flags)
TREE_THIS_VOLATILE (exp) = was_volatile;
}
-static tree
-no_vlist_base_init (rval, exp, init, binfo, flags)
- tree rval, exp, init, binfo;
- int flags;
-{
- tree nrval, func, parms;
-
- /* Obtain the vlist-expecting ctor. */
- func = rval;
- my_friendly_assert (TREE_CODE (func) == CALL_EXPR, 20000131);
- func = TREE_OPERAND (func, 0);
- my_friendly_assert (TREE_CODE (func) == ADDR_EXPR, 20000132);
- func = TREE_OPERAND (func, 0);
- my_friendly_assert (TREE_CODE (func) == FUNCTION_DECL, 20000133);
-
- /* If we have already seen a definition for the wrapped function,
- we don't need to declare it weak. Also, declare_weak will complain
- if we do. */
- if (!TREE_ASM_WRITTEN (func))
- declare_weak (func);
-
- if (init == NULL_TREE
- || (TREE_CODE (init) == TREE_LIST && ! TREE_TYPE (init)))
- {
- parms = init;
- if (parms)
- init = TREE_VALUE (parms);
- }
- else
- parms = build_expr_list (NULL_TREE, init);
-
- flags &= ~LOOKUP_HAS_VLIST;
-
- parms = expr_tree_cons (NULL_TREE, integer_zero_node, parms);
- flags |= LOOKUP_HAS_IN_CHARGE;
-
- nrval = build_method_call (exp, ctor_identifier,
- parms, binfo, flags);
-
- func = build (NE_EXPR, boolean_type_node,
- func, null_pointer_node);
- nrval = build (COND_EXPR, void_type_node,
- func, rval, nrval);
- return nrval;
-}
-
static void
expand_default_init (binfo, true_exp, exp, init, flags)
tree binfo;
@@ -1313,8 +1129,6 @@ expand_default_init (binfo, true_exp, exp, init, flags)
out, then look hard. */
tree rval;
tree parms;
- tree vlist = NULL_TREE;
- tree orig_init = init;
if (init && TREE_CODE (init) != TREE_LIST
&& (flags & LOOKUP_ONLYCONVERTING))
@@ -1358,21 +1172,6 @@ expand_default_init (binfo, true_exp, exp, init, flags)
if (TYPE_USES_VIRTUAL_BASECLASSES (type))
{
- if (TYPE_USES_PVBASES (type))
- {
- /* In compatibility mode, when not calling a base ctor,
- we do not pass the vlist argument. */
- if (true_exp == exp)
- vlist = flag_vtable_thunks_compat? NULL_TREE : vlist_zero_node;
- else
- vlist = lookup_name (vlist_identifier, 0);
-
- if (vlist)
- {
- parms = expr_tree_cons (NULL_TREE, vlist, parms);
- flags |= LOOKUP_HAS_VLIST;
- }
- }
if (true_exp == exp)
parms = expr_tree_cons (NULL_TREE, integer_one_node, parms);
else
@@ -1382,10 +1181,6 @@ expand_default_init (binfo, true_exp, exp, init, flags)
rval = build_method_call (exp, ctor_identifier,
parms, binfo, flags);
- if (vlist && true_exp != exp && flag_vtable_thunks_compat)
- {
- rval = no_vlist_base_init (rval, exp, orig_init, binfo, flags);
- }
if (TREE_SIDE_EFFECTS (rval))
expand_expr_stmt (rval);
}
@@ -2385,21 +2180,21 @@ build_new_1 (exp)
signature_error (NULL_TREE, true_type);
return error_mark_node;
}
-
- /* When we allocate an array, and the corresponding deallocation
- function takes a second argument of type size_t, and that's the
- "usual deallocation function", we allocate some extra space at
- the beginning of the array to store the size of the array.
- Well, that's what we should do. For backwards compatibility, we
- have to do this whenever there's a two-argument array-delete
- operator.
+#if 1
+ /* Get a little extra space to store a couple of things before the new'ed
+ array, if this isn't the default placement new. */
- FIXME: For -fnew-abi, we don't have to maintain backwards
- compatibility and we should fix this. */
use_cookie = (has_array && TYPE_VEC_NEW_USES_COOKIE (true_type)
&& ! (placement && ! TREE_CHAIN (placement)
&& TREE_TYPE (TREE_VALUE (placement)) == ptr_type_node));
+#else
+ /* Get a little extra space to store a couple of things before the new'ed
+ array, if this is either non-placement new or new (nothrow). */
+
+ use_cookie = (has_array && TYPE_VEC_NEW_USES_COOKIE (true_type)
+ && (! placement || nothrow));
+#endif
if (use_cookie)
{
@@ -2579,12 +2374,6 @@ build_new_1 (exp)
if (rval && TYPE_USES_VIRTUAL_BASECLASSES (true_type))
{
- if (TYPE_USES_PVBASES (true_type)
- && !flag_vtable_thunks_compat)
- {
- init = expr_tree_cons (NULL_TREE, vlist_zero_node, init);
- flags |= LOOKUP_HAS_VLIST;
- }
init = expr_tree_cons (NULL_TREE, integer_one_node, init);
flags |= LOOKUP_HAS_IN_CHARGE;
}
@@ -3300,21 +3089,9 @@ build_delete (type, addr, auto_delete, flags, use_global_delete)
else
passed_auto_delete = auto_delete;
- /* Maybe pass vlist pointer to destructor. */
- if (TYPE_USES_PVBASES (type))
- {
- /* Pass vlist_zero even if in backwards compatibility mode,
- as the extra argument should not hurt if it is not used. */
- expr = build_expr_list (NULL_TREE, vlist_zero_node);
- flags |= LOOKUP_HAS_VLIST;
- }
- else
- expr = NULL_TREE;
-
- expr = expr_tree_cons (NULL_TREE, passed_auto_delete, expr);
-
- expr = build_method_call (ref, dtor_identifier, expr,
- NULL_TREE, flags);
+ expr = build_method_call
+ (ref, dtor_identifier, build_expr_list (NULL_TREE, passed_auto_delete),
+ NULL_TREE, flags);
if (do_delete)
expr = build (COMPOUND_EXPR, void_type_node, expr, do_delete);
@@ -3370,13 +3147,14 @@ build_delete (type, addr, auto_delete, flags, use_global_delete)
{
tree this_auto_delete;
- /* Should the base invoke delete? */
if (BINFO_OFFSET_ZEROP (base_binfo))
this_auto_delete = parent_auto_delete;
else
this_auto_delete = integer_zero_node;
- expr = build_base_dtor_call (ref, base_binfo, this_auto_delete);
+ expr = build_scoped_method_call
+ (ref, base_binfo, dtor_identifier,
+ build_expr_list (NULL_TREE, this_auto_delete));
exprstmt = expr_tree_cons (NULL_TREE, expr, exprstmt);
}
@@ -3388,7 +3166,9 @@ build_delete (type, addr, auto_delete, flags, use_global_delete)
|| TREE_VIA_VIRTUAL (base_binfo))
continue;
- expr = build_base_dtor_call (ref, base_binfo, integer_zero_node);
+ expr = build_scoped_method_call
+ (ref, base_binfo, dtor_identifier,
+ build_expr_list (NULL_TREE, integer_zero_node));
exprstmt = expr_tree_cons (NULL_TREE, expr, exprstmt);
}
diff --git a/gnu/egcs/gcc/cp/lang-specs.h b/gnu/egcs/gcc/cp/lang-specs.h
index 92cdf3a67da..5f3d9f9e203 100644
--- a/gnu/egcs/gcc/cp/lang-specs.h
+++ b/gnu/egcs/gcc/cp/lang-specs.h
@@ -1,5 +1,5 @@
/* Definitions for specs for C++.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1995, 96-98, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -30,11 +30,10 @@ Boston, MA 02111-1307, USA. */
{"@c++",
#if USE_CPPLIB
{
- "%{E|M|MM:cpp0 -lang-c++ %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
+ "%{E|M|MM:cpp -lang-c++ %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
%{C:%{!E:%eGNU C++ does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- %{!no-gcc:-D__GNUC__=%v1 -D__GNUG__=%v1 -D__GNUC_MINOR__=%v2}\
- -D__cplusplus\
+ -D__GNUC__=%v1 -D__GNUG__=%v1 -D__GNUC_MINOR__=%v2 -D__cplusplus\
%{ansi:-trigraphs -D__STRICT_ANSI__} %{!undef:%{!ansi:%p} %P}\
%{!fno-exceptions:-D__EXCEPTIONS}\
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}} %{trigraphs}\
@@ -44,8 +43,8 @@ Boston, MA 02111-1307, USA. */
%{!E:%{!M:%{!MM:cc1plus %i %1 %2\
-lang-c++ %{nostdinc*} %{C} %{A*} %{I*} %{P} %{$} %I\
%{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- %{!no-gcc:-D__GNUC__=%v1 -D__GNUG__=%v1\
- -D__GNUC_MINOR__=%v2} -D__cplusplus\
+ -D__GNUC__=%v1 -D__GNUG__=%v1\
+ -D__GNUC_MINOR__=%v2 -D__cplusplus\
%{ansi:-trigraphs -D__STRICT_ANSI__} %{!undef:%{!ansi:%p} %P}\
%{!fno-exceptions:-D__EXCEPTIONS}\
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
@@ -62,11 +61,10 @@ Boston, MA 02111-1307, USA. */
%{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}\
%{!pipe:%g.s} %A\n }}}}"}},
#else /* ! USE_CPPLIB */
- {"cpp0 -lang-c++ %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
+ {"cpp -lang-c++ %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
%{C:%{!E:%eGNU C++ does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- %{!no-gcc:-D__GNUC__=%v1 -D__GNUG__=%v1 -D__GNUC_MINOR__=%v2}\
- -D__cplusplus\
+ -D__GNUC__=%v1 -D__GNUG__=%v1 -D__GNUC_MINOR__=%v2 -D__cplusplus\
%{ansi:-trigraphs -D__STRICT_ANSI__} %{!undef:%{!ansi:%p} %P}\
%{!fno-exceptions:-D__EXCEPTIONS}\
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}} %{trigraphs}\
diff --git a/gnu/egcs/gcc/cp/method.c b/gnu/egcs/gcc/cp/method.c
index 79a9692fc7a..39f7f041937 100644
--- a/gnu/egcs/gcc/cp/method.c
+++ b/gnu/egcs/gcc/cp/method.c
@@ -41,7 +41,6 @@ Boston, MA 02111-1307, USA. */
#include "hard-reg-set.h"
#include "flags.h"
#include "toplev.h"
-#include "decl.h"
/* TREE_LIST of the current inline functions that need to be
processed. */
@@ -89,8 +88,6 @@ static int is_back_referenceable_type PROTO((tree));
static int check_btype PROTO((tree));
static void build_mangled_name_for_type PROTO((tree));
static void build_mangled_name_for_type_with_Gcode PROTO((tree, int));
-static tree build_base_path PROTO((tree, int));
-
# define OB_INIT() (scratch_firstobj ? (obstack_free (&scratch_obstack, scratch_firstobj), 0) : 0)
# define OB_PUTC(C) (obstack_1grow (&scratch_obstack, (C)))
@@ -375,16 +372,10 @@ is_back_referenceable_type (type)
switch (TREE_CODE (type))
{
- case BOOLEAN_TYPE:
- if (!flag_do_squangling)
- /* Even though the mangling of this is just `b', we did
- historically generate back-references for it. */
- return 1;
- /* Fall through. */
-
case INTEGER_TYPE:
case REAL_TYPE:
case VOID_TYPE:
+ case BOOLEAN_TYPE:
/* These types have single-character manglings, so there's no
point in generating back-references. */
return 0;
@@ -1352,15 +1343,6 @@ process_overload_item (parmtype, extra_Gcode)
#endif
case POINTER_TYPE:
- /* Even though the vlist_type_node is PPPFe (i.e. `int
- (***)(...)'), it is different from the any other occurence of
- the pointer type, because the underlying function type is
- different. */
- if (parmtype == vlist_type_node)
- {
- OB_PUTS (VLIST_TYPE_NAME);
- return;
- }
OB_PUTC ('P');
more:
build_mangled_name_for_type (TREE_TYPE (parmtype));
@@ -1821,64 +1803,14 @@ get_id_2 (name, name2)
return get_identifier (obstack_base (&scratch_obstack));
}
-/* Print a binfo path T, starting with the most derived class. If
- OMIT_LAST is set, drop and return the most derived class. */
-
-static tree
-build_base_path (t, omit_last)
- tree t;
- int omit_last;
-{
- tree ret = NULL_TREE;
- if (BINFO_INHERITANCE_CHAIN (t))
- ret = build_base_path (BINFO_INHERITANCE_CHAIN (t), omit_last);
- else if (omit_last)
- return t;
- process_overload_item (BINFO_TYPE (t), 0);
- return ret;
-}
-
-/* Return a mangled name for a vlist vtable, using the path of both
- BASE and VBASE. */
-
-tree
-get_vlist_vtable_id (base, vbase)
- tree base, vbase;
-{
- tree last;
- OB_INIT ();
- OB_PUTS (VCTABLE_NAME);
- build_base_path (base, 0);
- OB_PUTC ('_');
- /* Since the base path should end where the vbase path starts, we
- can omit the most-derived class in the vbase path. Check below
- that this really happens. */
- last = build_base_path (vbase, 1);
- my_friendly_assert (BINFO_TYPE (last) == BINFO_TYPE (base), 990402);
- OB_FINISH ();
- return get_identifier (obstack_base (&scratch_obstack));
-}
-
-/* Returns a DECL_ASSEMBLER_NAME for the destructor of type TYPE. If
- HAS_VLIST is set, also add the vlist argument. */
+/* Returns a DECL_ASSEMBLER_NAME for the destructor of type TYPE. */
tree
-build_destructor_name (type, has_vlist)
+build_destructor_name (type)
tree type;
- int has_vlist;
{
- OB_INIT ();
- OB_PUTS (DESTRUCTOR_DECL_PREFIX);
- start_squangling ();
- build_mangled_name_for_type (type);
- /* If we need backwards compatibility, we can get aways by
- not linking type-safely, as the dtor will check whether
- the argument was provided. */
- if (has_vlist && !flag_vtable_thunks_compat)
- OB_PUTS (VLIST_TYPE_NAME);
- OB_FINISH ();
- end_squangling ();
- return get_identifier (obstack_base (&scratch_obstack));
+ return build_overload_with_type (get_identifier (DESTRUCTOR_DECL_PREFIX),
+ type);
}
/* Given a tree_code CODE, and some arguments (at least one),
@@ -2240,149 +2172,6 @@ emit_thunk (thunk_fndecl)
TREE_SET_CODE (thunk_fndecl, THUNK_DECL);
}
-void
-maybe_vlist_ctor_wrapper (fn, definep)
- tree fn;
- int definep;
-{
- tree fntype, decl;
- tree arg_types, parms, parm, basetype, pbasetype;
- tree t, ctors;
-
- if (!flag_vtable_thunks_compat
- || !DECL_CONSTRUCTOR_FOR_PVBASE_P (fn))
- return;
-
- arg_types = TYPE_ARG_TYPES (TREE_TYPE (fn));
- pbasetype = TREE_VALUE (arg_types);
- basetype = TREE_TYPE (pbasetype);
- parms = DECL_ARGUMENTS (fn);
-
- /* Skip this, __in_chrg, and _vlist */
- arg_types = TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arg_types)));
-
-
- /* Add __in_charge. */
- arg_types = hash_tree_chain (integer_type_node, arg_types);
-
- /* Don't add this to arg_types, as build_cplus_method_type does so. */
-
- fntype = build_cplus_method_type (basetype, TREE_TYPE (TREE_TYPE (fn)),
- arg_types);
-
- decl = build_lang_decl (FUNCTION_DECL, DECL_NAME (fn), fntype);
- DECL_LANG_SPECIFIC (decl)->decl_flags = DECL_LANG_SPECIFIC (fn)->decl_flags;
- DECL_EXTERNAL (decl) = 0;
- TREE_PUBLIC (decl) = 1;
- DECL_ARTIFICIAL (decl) = 1;
- DECL_CONSTRUCTOR_P (decl) = 1;
- DECL_CONSTRUCTOR_FOR_VBASE (decl) = CONSTRUCTOR_FOR_VBASE;
- /* Claim that this is never a template instantiation. */
- DECL_USE_TEMPLATE (decl) = 0;
- DECL_TEMPLATE_INFO (decl) = NULL_TREE;
-
- /* Set up clone argument trees for the thunk. */
- parms = TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (parms)));
- /* Add this */
- t = build_decl (PARM_DECL, this_identifier, pbasetype);
- SET_DECL_ARTIFICIAL (t);
- DECL_ARG_TYPE (t) = pbasetype;
- DECL_REGISTER (t) = 1;
- /* Add __in_charge. */
- parm = build_decl (PARM_DECL, in_charge_identifier, integer_type_node);
- SET_DECL_ARTIFICIAL (parm);
- DECL_ARG_TYPE (parm) = integer_type_node;
- TREE_CHAIN (parm) = t;
- t = parm;
-
- while (parms)
- {
- tree x = copy_node (parms);
- TREE_CHAIN (x) = t;
- DECL_CONTEXT (x) = decl;
- t = x;
- parms = TREE_CHAIN (parms);
- }
- parms = nreverse (t);
- DECL_ARGUMENTS (decl) = parms;
-
- DECL_ASSEMBLER_NAME (decl)
- = build_decl_overload (DECL_NAME (decl),
- TYPE_ARG_TYPES (TREE_TYPE (decl)), 2);
-
- ctors = CLASSTYPE_METHOD_VEC (basetype);
- if (ctors)
- ctors = TREE_VEC_ELT (ctors, 0);
- for ( ; ctors; ctors = OVL_NEXT (ctors))
- if (DECL_ASSEMBLER_NAME (OVL_CURRENT (ctors))
- == DECL_ASSEMBLER_NAME (decl))
- break;
-
- if (!ctors)
- {
- add_method (basetype, 0, decl);
- cp_finish_decl (decl, NULL_TREE, NULL_TREE, 0, 0);
- }
- else
- decl = OVL_CURRENT (ctors);
-
- /* Remember the original function. */
- DECL_VLIST_CTOR_WRAPPED (decl) = fn;
-
- /* If this is called from start_method, definep is -1. Then we
- are inside the class, and fn is inline by default. */
- if (definep)
- {
- /* Record that the ctor is being defined, so we also emit the
- wrapper later. */
- if (DECL_THIS_INLINE (fn) || (definep == -1))
- {
- DECL_THIS_INLINE (decl) = 1;
- DECL_INLINE (decl) = 1;
- pushdecl_top_level (decl);
- }
- else
- {
- TREE_USED (decl) = 1;
- TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) = 1;
- }
- mark_inline_for_output (decl);
- }
-}
-
-static void
-emit_vlist_ctor_wrapper (decl)
- tree decl;
-{
- tree t, parms, fn;
-
- current_function_is_thunk = 1;
-
- parms = DECL_ARGUMENTS (decl);
- fn = DECL_VLIST_CTOR_WRAPPED (decl);
- mark_used (fn);
-
- /* Build up the call to the real function. */
- t = NULL_TREE;
- /* Push this, __in_charge. */
- t = expr_tree_cons (NULL_TREE, parms, t);
- parms = TREE_CHAIN (parms);
- t = expr_tree_cons (NULL_TREE, parms, t);
- parms = TREE_CHAIN (parms);
- /* Push 0 as __vlist. */
- t = expr_tree_cons (NULL_TREE, vlist_zero_node, t);
- /* Push rest of arguments. */
- while (parms)
- {
- t = expr_tree_cons (NULL_TREE, parms, t);
- parms = TREE_CHAIN (parms);
- }
- t = nreverse (t);
- t = build_call (fn, TREE_TYPE (TREE_TYPE (fn)), t);
- expand_expr_stmt (t);
-}
-
-
/* Code for synthesizing methods which have default semantics defined. */
/* For the anonymous union in TYPE, return the member that is at least as
@@ -2417,8 +2206,6 @@ do_build_copy_constructor (fndecl)
if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
parm = TREE_CHAIN (parm);
- if (TYPE_USES_PVBASES (current_class_type))
- parm = TREE_CHAIN (parm);
parm = convert_from_reference (parm);
if (TYPE_HAS_TRIVIAL_INIT_REF (current_class_type)
@@ -2438,21 +2225,42 @@ do_build_copy_constructor (fndecl)
tree binfos = TYPE_BINFO_BASETYPES (current_class_type);
int i;
- /* Initialize all the base-classes. */
for (t = CLASSTYPE_VBASECLASSES (current_class_type); t;
t = TREE_CHAIN (t))
- current_base_init_list
- = tree_cons (BINFO_TYPE (t), parm, current_base_init_list);
+ {
+ tree basetype = BINFO_TYPE (t);
+ tree p = convert_to_reference
+ (build_reference_type (basetype), parm,
+ CONV_IMPLICIT|CONV_CONST, LOOKUP_COMPLAIN, NULL_TREE);
+ p = convert_from_reference (p);
+
+ if (p == error_mark_node)
+ cp_error ("in default copy constructor");
+ else
+ current_base_init_list = tree_cons (basetype,
+ p, current_base_init_list);
+ }
+
for (i = 0; i < n_bases; ++i)
{
- t = TREE_VEC_ELT (binfos, i);
- if (TREE_VIA_VIRTUAL (t))
+ tree p, basetype = TREE_VEC_ELT (binfos, i);
+ if (TREE_VIA_VIRTUAL (basetype))
continue;
- current_base_init_list
- = tree_cons (BINFO_TYPE (t), parm, current_base_init_list);
- }
+ basetype = BINFO_TYPE (basetype);
+ p = convert_to_reference
+ (build_reference_type (basetype), parm,
+ CONV_IMPLICIT|CONV_CONST, LOOKUP_COMPLAIN, NULL_TREE);
+ if (p == error_mark_node)
+ cp_error ("in default copy constructor");
+ else
+ {
+ p = convert_from_reference (p);
+ current_base_init_list = tree_cons (basetype,
+ p, current_base_init_list);
+ }
+ }
for (; fields; fields = TREE_CHAIN (fields))
{
tree init, t;
@@ -2615,16 +2423,6 @@ synthesize_method (fndecl)
int nested = (current_function_decl != NULL_TREE);
tree context = hack_decl_function_context (fndecl);
- /* If this is a wrapper around a undefined vlist ctor, don't emit it
- even if it is used. */
- if (DECL_VLIST_CTOR_WRAPPER_P (fndecl))
- {
- tree orig_fn = DECL_VLIST_CTOR_WRAPPED (fndecl);
- mark_used (orig_fn);
- if (DECL_INITIAL (orig_fn) == NULL_TREE)
- return;
- }
-
if (at_eof)
import_export_decl (fndecl);
@@ -2646,11 +2444,7 @@ synthesize_method (fndecl)
tree arg_chain = FUNCTION_ARG_CHAIN (fndecl);
if (DECL_CONSTRUCTOR_FOR_VBASE_P (fndecl))
arg_chain = TREE_CHAIN (arg_chain);
- else if (DECL_CONSTRUCTOR_FOR_PVBASE_P (fndecl))
- arg_chain = TREE_CHAIN (TREE_CHAIN (arg_chain));
- if (DECL_VLIST_CTOR_WRAPPER_P (fndecl))
- emit_vlist_ctor_wrapper (fndecl);
- else if (arg_chain != void_list_node)
+ if (arg_chain != void_list_node)
do_build_copy_constructor (fndecl);
else if (TYPE_NEEDS_CONSTRUCTING (current_class_type))
setup_vtbl_ptr ();
diff --git a/gnu/egcs/gcc/cp/parse.y b/gnu/egcs/gcc/cp/parse.y
index 7b5d3bdede9..677730ca336 100644
--- a/gnu/egcs/gcc/cp/parse.y
+++ b/gnu/egcs/gcc/cp/parse.y
@@ -3390,7 +3390,6 @@ function_try_block:
}
ctor_initializer_opt compstmt
{
- end_protect_partials ();
expand_start_all_catch ();
}
handler_seq
diff --git a/gnu/egcs/gcc/cp/rtti.c b/gnu/egcs/gcc/cp/rtti.c
index c8c1ba95255..e0ce5cd8666 100644
--- a/gnu/egcs/gcc/cp/rtti.c
+++ b/gnu/egcs/gcc/cp/rtti.c
@@ -363,19 +363,8 @@ get_tinfo_var (type)
return tdecl;
}
-/* Returns the decl for a function which will return a type_info node for
- TYPE. This version does not mark the function used, for use in
- set_rtti_entry; for the vtable case, we'll get marked in
- finish_vtable_vardecl, when we know that we want to be emitted.
-
- We do this to avoid emitting the tinfo node itself, since we don't
- currently support DECL_DEFER_OUTPUT for variables. Also, we don't
- associate constant pools with their functions properly, so we would
- emit string constants and such even though we don't emit the actual
- function. When those bugs are fixed, this function should go away. */
-
tree
-get_tinfo_fn_unused (type)
+get_tinfo_fn (type)
tree type;
{
tree name;
@@ -404,23 +393,13 @@ get_tinfo_fn_unused (type)
pushdecl_top_level (d);
make_function_rtl (d);
+ mark_used (d);
mark_inline_for_output (d);
pop_obstacks ();
return d;
}
-/* Likewise, but also mark it used. Called by various EH and RTTI code. */
-
-tree
-get_tinfo_fn (type)
- tree type;
-{
- tree d = get_tinfo_fn_unused (type);
- mark_used (d);
- return d;
-}
-
tree
get_typeid_1 (type)
tree type;
diff --git a/gnu/egcs/gcc/cp/search.c b/gnu/egcs/gcc/cp/search.c
index fb99f8f8eef..33873a0a305 100644
--- a/gnu/egcs/gcc/cp/search.c
+++ b/gnu/egcs/gcc/cp/search.c
@@ -151,9 +151,6 @@ static int protected_accessible_p PROTO ((tree, tree, tree, tree));
static int friend_accessible_p PROTO ((tree, tree, tree, tree));
static void setup_class_bindings PROTO ((tree, int));
static int template_self_reference_p PROTO ((tree, tree));
-static void expand_direct_vtbls_init_thunks PROTO((tree, tree, int));
-static void expand_indirect_vtbls_init_thunks PROTO((tree, tree, tree));
-
/* Allocate a level of searching. */
@@ -2060,29 +2057,17 @@ static tree
convert_pointer_to_single_level (to_type, expr)
tree to_type, expr;
{
- tree derived;
tree binfo_of_derived;
- int i;
+ tree last;
- derived = TREE_TYPE (TREE_TYPE (expr));
- binfo_of_derived = TYPE_BINFO (derived);
+ binfo_of_derived = TYPE_BINFO (TREE_TYPE (TREE_TYPE (expr)));
+ last = get_binfo (to_type, TREE_TYPE (TREE_TYPE (expr)), 0);
+ my_friendly_assert (BINFO_INHERITANCE_CHAIN (last) == binfo_of_derived,
+ 980827);
my_friendly_assert (BINFO_INHERITANCE_CHAIN (binfo_of_derived) == NULL_TREE,
980827);
- for (i = CLASSTYPE_N_BASECLASSES (derived) - 1; i >= 0; --i)
- {
- tree binfo = BINFO_BASETYPE (binfo_of_derived, i);
- my_friendly_assert (BINFO_INHERITANCE_CHAIN (binfo) == binfo_of_derived,
- 980827);
- if (same_type_p (BINFO_TYPE (binfo), to_type))
- return build_vbase_path (PLUS_EXPR,
- build_pointer_type (to_type),
- expr, binfo, 1);
- }
-
- my_friendly_abort (19990607);
-
- /* NOTREACHED */
- return NULL_TREE;
+ return build_vbase_path (PLUS_EXPR, build_pointer_type (to_type), expr,
+ last, 1);
}
tree markedp (binfo, data)
@@ -2137,8 +2122,7 @@ marked_pushdecls_p (binfo, data)
tree binfo;
void *data ATTRIBUTE_UNUSED;
{
- return (CLASS_TYPE_P (BINFO_TYPE (binfo))
- && BINFO_PUSHDECLS_MARKED (binfo)) ? binfo : NULL_TREE;
+ return BINFO_PUSHDECLS_MARKED (binfo) ? binfo : NULL_TREE;
}
static tree
@@ -2146,8 +2130,7 @@ unmarked_pushdecls_p (binfo, data)
tree binfo;
void *data ATTRIBUTE_UNUSED;
{
- return (CLASS_TYPE_P (BINFO_TYPE (binfo))
- && !BINFO_PUSHDECLS_MARKED (binfo)) ? binfo : NULL_TREE;
+ return !BINFO_PUSHDECLS_MARKED (binfo) ? binfo : NULL_TREE;
}
#if 0
@@ -2629,117 +2612,6 @@ fixup_virtual_upcast_offsets (real_binfo, binfo, init_self, can_elide, addr, ori
}
}
-/* Emit initialization of vfields of BASE, where the complete object
- is pointed to by decl_ptr. DO_SELF indicates we have to do our own
- vfield, otherwise only proceed to our own direct non-virtual bases. */
-
-static void
-expand_direct_vtbls_init_thunks (base, decl_ptr, do_self)
- tree base, decl_ptr;
- int do_self;
-{
- tree addr, expr;
- tree type = BINFO_TYPE (base);
- tree binfos = BINFO_BASETYPES (base);
- int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0;
- tree vlist = lookup_name (vlist_identifier, 0);
- int in_dtor = DECL_DESTRUCTOR_FOR_PVBASE_P (current_function_decl);
-
- my_friendly_assert (vlist != NULL_TREE, 990320);
-
- if (in_dtor)
- /* In the destructor, we find the vfield pointers for the bases in
- reverse order, before we find our own vfield pointer. */
- for (i = n_baselinks - 1; i >= 0; i--)
- {
- tree base_binfo = TREE_VEC_ELT (binfos, i);
- int is_not_base_vtable
- = i != CLASSTYPE_VFIELD_PARENT (type);
- if (! TREE_VIA_VIRTUAL (base_binfo))
- expand_direct_vtbls_init_thunks (base_binfo, decl_ptr,
- is_not_base_vtable);
- }
-
- if (do_self && CLASSTYPE_VFIELDS (type))
- {
- addr = build_vbase_path (PLUS_EXPR, build_pointer_type (type),
- decl_ptr, base, 1);
- addr = build_indirect_ref (addr, "vptr");
- addr = build_vfield_ref (addr, type);
-
- /* In a destructor, we decrease the vlist before we retrieve the
- value. In a constructor, we increase the vlist after we
- retrieve the value. */
- if (in_dtor)
- {
- expr = build_binary_op (MINUS_EXPR, vlist, integer_one_node);
- expr = build_modify_expr (vlist, NOP_EXPR, expr);
- expand_expr_stmt (expr);
- }
-
- /* Store the next vptr into the vbase's vptr. */
- expr = build_indirect_ref (vlist, "__vlist");
- expr = convert_force (TREE_TYPE (addr), expr, 0);
- expr = build_modify_expr (addr, NOP_EXPR, expr);
- expand_expr_stmt (expr);
-
- /* Advance the vlist. */
- if (!in_dtor)
- {
- expr = build_binary_op (PLUS_EXPR, vlist, integer_one_node);
- expr = build_modify_expr (vlist, NOP_EXPR, expr);
- expand_expr_stmt (expr);
- }
- }
-
- if (!in_dtor)
- for (i = 0; i < n_baselinks; i++)
- {
- tree base_binfo = TREE_VEC_ELT (binfos, i);
- int is_not_base_vtable = i != CLASSTYPE_VFIELD_PARENT (type);
- if (! TREE_VIA_VIRTUAL (base_binfo))
- expand_direct_vtbls_init_thunks (base_binfo, decl_ptr,
- is_not_base_vtable);
- }
-}
-
-/* Like expand_indirect_vtbls_init below, but based on the vtable list
- passed to the constructor. */
-
-static void
-expand_indirect_vtbls_init_thunks (binfo, true_exp, decl_ptr)
- tree binfo;
- tree true_exp, decl_ptr;
-{
- tree type = BINFO_TYPE (binfo);
- tree vbases = CLASSTYPE_VBASECLASSES (type);
- struct vbase_info vi;
-
- vi.decl_ptr = (true_exp ? build_unary_op (ADDR_EXPR, true_exp, 0)
- : decl_ptr);
- vi.vbase_types = vbases;
-
- dfs_walk (binfo, dfs_find_vbases, unmarked_new_vtablep, &vi);
-
- /* Initialized with vtables of type TYPE. */
- for (; vbases; vbases = TREE_CHAIN (vbases))
- {
- tree addr;
-
- if (!CLASSTYPE_VFIELD (BINFO_TYPE (vbases)))
- /* This vbase doesn't have a vptr of its own. */
- /* FIXME: check */
- continue;
-
- addr = convert_pointer_to_vbase (TREE_TYPE (vbases), decl_ptr);
- expand_direct_vtbls_init_thunks (TYPE_BINFO (BINFO_TYPE (vbases)),
- addr, 1);
-
- }
-
- dfs_walk (binfo, dfs_clear_vbase_slots, marked_new_vtablep, 0);
-}
-
/* Build a COMPOUND_EXPR which when expanded will generate the code
needed to initialize all the virtual function table slots of all
the virtual baseclasses. MAIN_BINFO is the binfo which determines
@@ -2771,12 +2643,6 @@ expand_indirect_vtbls_init (binfo, true_exp, decl_ptr)
mark_all_temps_used();
- if (TYPE_USES_PVBASES (type))
- {
- expand_indirect_vtbls_init_thunks (binfo, true_exp, decl_ptr);
- return;
- }
-
if (TYPE_USES_VIRTUAL_BASECLASSES (type))
{
rtx fixup_insns = NULL_RTX;
@@ -3102,7 +2968,7 @@ push_class_decls (type)
/* Build up all the relevant bindings and such on the cache
obstack. That way no memory is wasted when we throw away the
cache later. */
- push_cache_obstack ();
+ maybe_push_cache_obstack ();
/* Enter type declarations and mark. */
dfs_walk (TYPE_BINFO (type), dfs_push_type_decls, unmarked_pushdecls_p, 0);
@@ -3110,7 +2976,7 @@ push_class_decls (type)
/* Enter non-type declarations and unmark. */
dfs_walk (TYPE_BINFO (type), dfs_push_decls, marked_pushdecls_p, 0);
- /* Undo the call to push_cache_obstack above. */
+ /* Undo the call to maybe_push_cache_obstack above. */
pop_obstacks ();
current_obstack = ambient_obstack;
diff --git a/gnu/egcs/gcc/cp/semantics.c b/gnu/egcs/gcc/cp/semantics.c
index 7267f46aaf3..847a982e260 100644
--- a/gnu/egcs/gcc/cp/semantics.c
+++ b/gnu/egcs/gcc/cp/semantics.c
@@ -120,7 +120,7 @@ finish_if_stmt_cond (cond, if_stmt)
if (last_tree != if_stmt)
RECHAIN_STMTS_FROM_LAST (if_stmt, IF_COND (if_stmt));
else
- IF_COND (if_stmt) = copy_to_permanent (cond);
+ IF_COND (if_stmt) = cond;
}
else
{
@@ -219,7 +219,7 @@ finish_while_stmt_cond (cond, while_stmt)
RECHAIN_STMTS_FROM_LAST (while_stmt,
WHILE_COND (while_stmt));
else
- TREE_OPERAND (while_stmt, 0) = copy_to_permanent (cond);
+ TREE_OPERAND (while_stmt, 0) = cond;
}
else
{
@@ -294,7 +294,7 @@ finish_do_stmt (cond, do_stmt)
tree do_stmt;
{
if (processing_template_decl)
- DO_COND (do_stmt) = copy_to_permanent (cond);
+ DO_COND (do_stmt) = cond;
else
{
emit_line_note (input_filename, lineno);
@@ -378,7 +378,7 @@ finish_for_cond (cond, for_stmt)
if (last_tree != for_stmt)
RECHAIN_STMTS_FROM_LAST (for_stmt, FOR_COND (for_stmt));
else
- FOR_COND (for_stmt) = copy_to_permanent (cond);
+ FOR_COND (for_stmt) = cond;
}
else
{
@@ -741,16 +741,11 @@ finish_asm_stmt (cv_qualifier, string, output_operands,
if (output_operands != NULL_TREE || input_operands != NULL_TREE
|| clobbers != NULL_TREE)
{
- tree t;
-
if (cv_qualifier != NULL_TREE
&& cv_qualifier != ridpointers[(int) RID_VOLATILE])
cp_warning ("%s qualifier ignored on asm",
IDENTIFIER_POINTER (cv_qualifier));
-
- for (t = input_operands; t; t = TREE_CHAIN (t))
- TREE_VALUE (t) = decay_conversion (TREE_VALUE (t));
-
+
c_expand_asm_operands (string, output_operands,
input_operands,
clobbers,
diff --git a/gnu/egcs/gcc/cp/typeck2.c b/gnu/egcs/gcc/cp/typeck2.c
index da98203bdc0..76a30b202d6 100644
--- a/gnu/egcs/gcc/cp/typeck2.c
+++ b/gnu/egcs/gcc/cp/typeck2.c
@@ -343,8 +343,8 @@ my_friendly_abort (i)
ack ("Internal compiler error.");
else
ack ("Internal compiler error %d.", i);
- ack ("Please submit a full bug report.");
- ack ("See %s for instructions.", GCCBUGURL);
+ ack ("Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.");
+ ack ("See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details.");
}
else
error ("confused by earlier errors, bailing out");
@@ -358,8 +358,8 @@ my_friendly_abort (i)
else
error ("Internal compiler error %d.", i);
- error ("Please submit a full bug report.");
- fatal ("See %s for instructions.", GCCBUGURL);
+ error ("Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.");
+ fatal ("See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details.");
}
void
@@ -400,7 +400,6 @@ initializer_constant_valid_p (value, endtype)
case REAL_CST:
case STRING_CST:
case COMPLEX_CST:
- case PTRMEM_CST:
return null_pointer_node;
case ADDR_EXPR:
diff --git a/gnu/egcs/gcc/cpp.texi b/gnu/egcs/gcc/cpp.texi
index ca501379577..7552cf97d61 100644
--- a/gnu/egcs/gcc/cpp.texi
+++ b/gnu/egcs/gcc/cpp.texi
@@ -2658,9 +2658,7 @@ warnings.
@item -Wtrigraphs
@findex -Wtrigraphs
-Warn if any trigraphs are encountered. Currently this only works if you
-have turned trigraphs on with @samp{-trigraphs} or @samp{-ansi}; in the
-future this restriction will be removed.
+Warn if any trigraphs are encountered (assuming they are enabled).
@item -Wcomment
@findex -Wcomment
@@ -2758,12 +2756,6 @@ is not predefined.
@findex -undef
Do not predefine any nonstandard macros.
-@item -gcc
-@findex -gcc
-Define the macros @var{__GNUC__} and @var{__GNUC_MINOR__}. These are
-defined automatically when you use @samp{gcc -E}; you can turn them off
-in that case with @samp{-no-gcc}.
-
@item -A @var{predicate}(@var{answer})
@findex -A
Make an assertion with the predicate @var{predicate} and answer
@@ -2771,8 +2763,7 @@ Make an assertion with the predicate @var{predicate} and answer
@noindent
You can use @samp{-A-} to disable all predefined assertions; it also
-undefines all predefined macros and all macros that preceded it on the
-command line.
+undefines all predefined macros that identify the type of target system.
@item -dM
@findex -dM
@@ -2883,75 +2874,48 @@ Add a directory to the beginning of the second include path, marking it
as a system directory, so that it gets the same special treatment as
is applied to the standard system directories.
-@item -x c
-@itemx -x c++
-@itemx -x objective-c
-@itemx -x assembler-with-cpp
-@findex -x c
-@findex -x objective-c
-@findex -x assembler-with-cpp
-Specify the source language: C, C++, Objective-C, or assembly. This has
-nothing to do with standards conformance or extensions; it merely
-selects which base syntax to expect. If you give none of these options,
-cpp will deduce the language from the extension of the source file:
-@samp{.c}, @samp{.cc}, @samp{.m}, or @samp{.S}. Some other common
-extensions for C++ and assembly are also recognized. If cpp does not
-recognize the extension, it will treat the file as C; this is the most
-generic mode.
-
-@strong{Note:} Previous versions of cpp accepted a @samp{-lang} option
-which selected both the language and the standards conformance level.
-This option has been removed, because it conflicts with the @samp{-l}
-option.
-
-@item -std=@var{standard}
-@itemx -ansi
-@findex -std
-@findex -ansi
-Specify the standard to which the code should conform. Currently cpp
-only knows about the standards for C; other language standards will be
-added in the future.
-
-@var{standard}
-may be one of:
-@table @code
-@item iso9899:1990
-The ISO C standard from 1990.
-
-@item iso9899:199409
-@itemx c89
-The 1990 C standard, as amended in 1994. @samp{c89} is the customary
-shorthand for this version of the standard.
-
-The @samp{-ansi} option is equivalent to @samp{-std=c89}.
-
-@item iso9899:199x
-@itemx c9x
-The revised ISO C standard, which is expected to be promulgated some
-time in 1999. It has not been approved yet, hence the @samp{x}.
-
-@item gnu89
-The 1990 C standard plus GNU extensions. This is the default.
-
-@item gnu9x
-The 199x C standard plus GNU extensions.
-@end table
-
-@item -Wp,-lint
-@findex -lint
+@item -lang-c
+@itemx -lang-c89
+@itemx -lang-c++
+@itemx -lang-objc
+@itemx -lang-objc++
+@findex -lang-c
+@findex -lang-c89
+@findex -lang-c++
+@findex -lang-objc
+@findex -lang-objc++
+Specify the source language. @samp{-lang-c} is the default; it
+allows recognition of C++ comments (comments that begin with
+@samp{//} and end at end of line) and hexadecimal floating-point constants,
+since these features will most likely appear in the next C standard.
+@samp{-lang-c89} disables recognition of C++ comments and
+hexadecimal floating-point constants. @samp{-lang-c++}
+handles C++ comment syntax and includes extra default include
+directories for C++. @samp{-lang-objc} enables the Objective C
+@samp{#import} directive. @samp{-lang-objc++} enables both C++ and Objective C
+extensions.
+
+These options are generated by the compiler driver @code{gcc}, but not
+passed from the @samp{gcc} command line unless you use the driver's
+@samp{-Wp} option.
+
+@item -lint
Look for commands to the program checker @code{lint} embedded in
comments, and emit them preceded by @samp{#pragma lint}. For example,
the comment @samp{/* NOTREACHED */} becomes @samp{#pragma lint
NOTREACHED}.
-Because of the clash with @samp{-l}, you must use the awkward syntax
-above. In a future release, this option will be replaced by
-@samp{-flint} or @samp{-Wlint}; we are not sure which yet.
+This option is available only when you call @code{cpp} directly;
+@code{gcc} will not pass it from its command line.
@item -$
@findex -$
-Forbid the use of @samp{$} in identifiers. The C standard does not
-permit this, but it is a common extension.
+Forbid the use of @samp{$} in identifiers. This was formerly required
+for strict conformance to the C Standard before the standard was
+corrected.
+
+This option is available only when you call @code{cpp} directly;
+@code{gcc} will not pass it from its command line.
@end table
diff --git a/gnu/egcs/gcc/dwarf2.h b/gnu/egcs/gcc/dwarf2.h
index d0ca2451b76..ddbe1b823bb 100644
--- a/gnu/egcs/gcc/dwarf2.h
+++ b/gnu/egcs/gcc/dwarf2.h
@@ -1,7 +1,6 @@
/* Declarations and definitions of codes relating to the DWARF2 symbolic
debugging information format.
- Copyright (C) 1992, 1993, 1995, 1996, 1997, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
Contributed by Gary Funck (gary@intrepid.com). Derived from the
DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com).
@@ -502,8 +501,7 @@ enum dwarf_call_frame_info
/* GNU extensions */
DW_CFA_GNU_window_save = 0x2d,
- DW_CFA_GNU_args_size = 0x2e,
- DW_CFA_GNU_negative_offset_extended = 0x2f
+ DW_CFA_GNU_args_size = 0x2e
};
#define DW_CIE_ID 0xffffffff
diff --git a/gnu/egcs/gcc/dwarf2out.c b/gnu/egcs/gcc/dwarf2out.c
index 7ce80506fdc..659b119f4bd 100644
--- a/gnu/egcs/gcc/dwarf2out.c
+++ b/gnu/egcs/gcc/dwarf2out.c
@@ -1,6 +1,5 @@
/* Output Dwarf2 format symbol table information from the GNU C compiler.
- Copyright (C) 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2000 Free Software
- Foundation, Inc.
+ Copyright (C) 1992, 93, 95-98, 1999 Free Software Foundation, Inc.
Contributed by Gary Funck (gary@intrepid.com).
Derived from DWARF 1 implementation of Ron Guilmette (rfg@monkeys.com).
Extensively modified by Jason Merrill (jason@cygnus.com).
@@ -720,8 +719,6 @@ dwarf_cfi_name (cfi_opc)
return "DW_CFA_GNU_window_save";
case DW_CFA_GNU_args_size:
return "DW_CFA_GNU_args_size";
- case DW_CFA_GNU_negative_offset_extended:
- return "DW_CFA_GNU_negative_offset_extended";
default:
return "DW_CFA_<unknown>";
@@ -951,10 +948,7 @@ reg_save (label, reg, sreg, offset)
offset /= DWARF_CIE_DATA_ALIGNMENT;
if (offset < 0)
- {
- cfi->dw_cfi_opc = DW_CFA_GNU_negative_offset_extended;
- offset = -offset;
- }
+ abort ();
cfi->dw_cfi_oprnd2.dw_cfi_offset = offset;
}
else
@@ -1641,7 +1635,6 @@ output_cfi (cfi, fde)
break;
#endif
case DW_CFA_offset_extended:
- case DW_CFA_GNU_negative_offset_extended:
case DW_CFA_def_cfa:
output_uleb128 (cfi->dw_cfi_oprnd1.dw_cfi_reg_num);
fputc ('\n', asm_out_file);
@@ -2433,22 +2426,6 @@ static unsigned pending_types;
be enough for most typical programs. */
#define PENDING_TYPES_INCREMENT 64
-/* A pointer to the base of a list of incomplete types which might be
- completed at some later time. */
-
-static tree *incomplete_types_list;
-
-/* Number of elements currently allocated for the incomplete_types_list. */
-static unsigned incomplete_types_allocated;
-
-/* Number of elements of incomplete_types_list currently in use. */
-static unsigned incomplete_types;
-
-/* Size (in elements) of increments by which we may expand the incomplete
- types list. Actually, a single hunk of space of this size should
- be enough for most typical programs. */
-#define INCOMPLETE_TYPES_INCREMENT 64
-
/* Record whether the function being analyzed contains inlined functions. */
static int current_function_has_inlines;
#if 0 && defined (MIPS_DEBUGGING_INFO)
@@ -2751,10 +2728,8 @@ static char debug_line_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
dyn_string_append (STR, NAME + 1); \
else \
{ \
- char *newstr; \
- STRIP_NAME_ENCODING (newstr, NAME); \
dyn_string_append (STR, user_label_prefix); \
- dyn_string_append (STR, newstr); \
+ dyn_string_append (STR, NAME); \
} \
} \
while (0)
@@ -5142,11 +5117,6 @@ output_abbrev_section ()
fprintf (asm_out_file, "\t%s\t0,0\n", ASM_BYTE_OP);
}
-
- /* We need to properly terminate the abbrev table for this
- compilation unit, as per the standard, and not rely on
- workarounds in e.g. gdb. */
- fprintf (asm_out_file, "\t%s\t0\n", ASM_BYTE_OP);
}
/* Output location description stack opcode's operands (if any). */
@@ -7195,8 +7165,7 @@ add_location_or_const_value_attribute (die, decl)
rtl = DECL_INCOMING_RTL (decl);
else if (! BYTES_BIG_ENDIAN
&& TREE_CODE (declared_type) == INTEGER_TYPE
- && (GET_MODE_SIZE (TYPE_MODE (declared_type))
- <= GET_MODE_SIZE (TYPE_MODE (passed_type))))
+ && TYPE_SIZE (declared_type) <= TYPE_SIZE (passed_type))
rtl = DECL_INCOMING_RTL (decl);
}
@@ -8064,39 +8033,6 @@ output_pending_types_for_scope (context_die)
}
}
-/* Remember a type in the incomplete_types_list. */
-
-static void
-add_incomplete_type (type)
- tree type;
-{
- if (incomplete_types == incomplete_types_allocated)
- {
- incomplete_types_allocated += INCOMPLETE_TYPES_INCREMENT;
- incomplete_types_list
- = (tree *) xrealloc (incomplete_types_list,
- sizeof (tree) * incomplete_types_allocated);
- }
-
- incomplete_types_list[incomplete_types++] = type;
-}
-
-/* Walk through the list of incomplete types again, trying once more to
- emit full debugging info for them. */
-
-static void
-retry_incomplete_types ()
-{
- register tree type;
-
- while (incomplete_types)
- {
- --incomplete_types;
- type = incomplete_types_list[incomplete_types];
- gen_type_die (type, comp_unit_die);
- }
-}
-
/* Generate a DIE to represent an inlined instance of an enumeration type. */
static void
@@ -9088,13 +9024,7 @@ gen_struct_or_union_type_die (type, context_die)
}
}
else
- {
- add_AT_flag (type_die, DW_AT_declaration, 1);
-
- /* We can't do this for function-local types, and we don't need to. */
- if (TREE_PERMANENT (type))
- add_incomplete_type (type);
- }
+ add_AT_flag (type_die, DW_AT_declaration, 1);
}
/* Generate a DIE for a subroutine _type_. */
@@ -10063,10 +9993,6 @@ dwarf2out_finish ()
free (node);
}
- /* Walk through the list of incomplete types again, trying once more to
- emit full debugging info for them. */
- retry_incomplete_types ();
-
/* Traverse the DIE tree and add sibling attributes to those DIE's
that have children. */
add_sibling_attributes (comp_unit_die);
diff --git a/gnu/egcs/gcc/dwarfout.c b/gnu/egcs/gcc/dwarfout.c
index 8e0d018da49..ac17f7fb196 100644
--- a/gnu/egcs/gcc/dwarfout.c
+++ b/gnu/egcs/gcc/dwarfout.c
@@ -270,22 +270,6 @@ static unsigned pending_types;
#define PENDING_TYPES_INCREMENT 64
-/* A pointer to the base of a list of incomplete types which might be
- completed at some later time. */
-
-static tree *incomplete_types_list;
-
-/* Number of elements currently allocated for the incomplete_types_list. */
-static unsigned incomplete_types_allocated;
-
-/* Number of elements of incomplete_types_list currently in use. */
-static unsigned incomplete_types;
-
-/* Size (in elements) of increments by which we may expand the incomplete
- types list. Actually, a single hunk of space of this size should
- be enough for most typical programs. */
-#define INCOMPLETE_TYPES_INCREMENT 64
-
/* Pointer to an artificial RECORD_TYPE which we create in dwarfout_init.
This is used in a hack to help us get the DIEs describing types of
formal parameters to come *after* all of the DIEs describing the formal
@@ -1413,10 +1397,6 @@ fundamental_type_code (type)
if (TYPE_PRECISION (type) == CHAR_TYPE_SIZE)
return (TREE_UNSIGNED (type) ? FT_unsigned_char : FT_char);
- /* In C++, __java_boolean is an INTEGER_TYPE with precision == 1 */
- if (TYPE_PRECISION (type) == 1)
- return FT_boolean;
-
abort ();
case REAL_TYPE:
@@ -2110,16 +2090,8 @@ field_byte_offset (decl)
negative. Gdb fails when given negative bit offsets. We avoid this
by recomputing using the first bit of the bitfield. This will give
us an object which does not completely contain the bitfield, but it
- will be aligned, and it will contain the first bit of the bitfield.
-
- However, only do this for a BYTES_BIG_ENDIAN target. For a
- ! BYTES_BIG_ENDIAN target, bitpos_int + field_size_in_bits is the first
- first bit of the bitfield. If we recompute using bitpos_int + 1 below,
- then we end up computing the object byte offset for the wrong word of the
- desired bitfield, which in turn causes the field offset to be negative
- in bit_offset_attribute. */
- if (BYTES_BIG_ENDIAN
- && object_offset_in_bits > bitpos_int)
+ will be aligned, and it will contain the first bit of the bitfield. */
+ if (object_offset_in_bits > bitpos_int)
{
deepest_bitpos = bitpos_int + 1;
object_offset_in_bits
@@ -4244,40 +4216,6 @@ output_pending_types_for_scope (containing_scope)
}
}
-/* Remember a type in the incomplete_types_list. */
-
-static void
-add_incomplete_type (type)
- tree type;
-{
- if (incomplete_types == incomplete_types_allocated)
- {
- incomplete_types_allocated += INCOMPLETE_TYPES_INCREMENT;
- incomplete_types_list
- = (tree *) xrealloc (incomplete_types_list,
- sizeof (tree) * incomplete_types_allocated);
- }
-
- incomplete_types_list[incomplete_types++] = type;
-}
-
-/* Walk through the list of incomplete types again, trying once more to
- emit full debugging info for them. */
-
-static void
-retry_incomplete_types ()
-{
- register tree type;
-
- finalizing = 1;
- while (incomplete_types)
- {
- --incomplete_types;
- type = incomplete_types_list[incomplete_types];
- output_type (type, NULL_TREE);
- }
-}
-
static void
output_type (type, containing_scope)
register tree type;
@@ -4442,13 +4380,7 @@ output_type (type, containing_scope)
&& TREE_CODE (TYPE_CONTEXT (type)) != FUNCTION_TYPE
&& TREE_CODE (TYPE_CONTEXT (type)) != METHOD_TYPE))
&& !finalizing)
- {
- /* We can't do this for function-local types, and we don't need
- to. */
- if (TREE_PERMANENT (type))
- add_incomplete_type (type);
- return; /* EARLY EXIT! Avoid setting TREE_ASM_WRITTEN. */
- }
+ return; /* EARLY EXIT! Avoid setting TREE_ASM_WRITTEN. */
/* Prevent infinite recursion in cases where the type of some
member of this type is expressed in terms of this type itself. */
@@ -4503,11 +4435,7 @@ output_type (type, containing_scope)
register int i;
for (i = 0; i < n_bases; i++)
- {
- tree binfo = TREE_VEC_ELT (bases, i);
- output_type (BINFO_TYPE (binfo), containing_scope);
- output_die (output_inheritance_die, binfo);
- }
+ output_die (output_inheritance_die, TREE_VEC_ELT (bases, i));
}
++in_class;
@@ -5916,8 +5844,6 @@ dwarfout_finish ()
{
char label[MAX_ARTIFICIAL_LABEL_BYTES];
- retry_incomplete_types ();
-
fputc ('\n', asm_out_file);
ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SECTION);
diff --git a/gnu/egcs/gcc/except.c b/gnu/egcs/gcc/except.c
index cc6fc291345..fe139fd85c4 100644
--- a/gnu/egcs/gcc/except.c
+++ b/gnu/egcs/gcc/except.c
@@ -406,7 +406,6 @@ Boston, MA 02111-1307, USA. */
#include "recog.h"
#include "output.h"
#include "toplev.h"
-#include "intl.h"
#include "obstack.h"
/* One to use setjmp/longjmp method of generating code for exception
@@ -723,42 +722,22 @@ static void
receive_exception_label (handler_label)
rtx handler_label;
{
- rtx around_label = NULL_RTX;
-
- if (! flag_new_exceptions || exceptions_via_longjmp)
- {
- around_label = gen_label_rtx ();
- emit_jump (around_label);
- emit_barrier ();
- }
-
emit_label (handler_label);
- if (! exceptions_via_longjmp)
- {
#ifdef HAVE_exception_receiver
- if (HAVE_exception_receiver)
- emit_insn (gen_exception_receiver ());
- else
+ if (! exceptions_via_longjmp)
+ if (HAVE_exception_receiver)
+ emit_insn (gen_exception_receiver ());
#endif
+
#ifdef HAVE_nonlocal_goto_receiver
- if (HAVE_nonlocal_goto_receiver)
- emit_insn (gen_nonlocal_goto_receiver ());
- else
-#endif
- { /* Nothing */ }
- }
- else
- {
-#ifndef DONT_USE_BUILTIN_SETJMP
- expand_builtin_setjmp_receiver (handler_label);
+ if (! exceptions_via_longjmp)
+ if (HAVE_nonlocal_goto_receiver)
+ emit_insn (gen_nonlocal_goto_receiver ());
#endif
- }
-
- if (around_label)
- emit_label (around_label);
}
+
struct func_eh_entry
{
int range_number; /* EH region number from EH NOTE insn's */
@@ -1340,7 +1319,7 @@ static void
start_dynamic_handler ()
{
rtx dhc, dcc;
- rtx arg, buf;
+ rtx x, arg, buf;
int size;
#ifndef DONT_USE_BUILTIN_SETJMP
@@ -1382,17 +1361,18 @@ start_dynamic_handler ()
buf = plus_constant (XEXP (arg, 0), GET_MODE_SIZE (Pmode)*2);
#ifdef DONT_USE_BUILTIN_SETJMP
+ x = emit_library_call_value (setjmp_libfunc, NULL_RTX, 1, SImode, 1,
+ buf, Pmode);
+ /* If we come back here for a catch, transfer control to the handler. */
+ jumpif_rtx (x, ehstack.top->entry->exception_handler_label);
+#else
{
- rtx x;
- x = emit_library_call_value (setjmp_libfunc, NULL_RTX, LCT_CONST,
- TYPE_MODE (integer_type_node), 1,
- buf, Pmode);
- /* If we come back here for a catch, transfer control to the handler. */
- jumpif_rtx (x, ehstack.top->entry->exception_handler_label);
+ /* A label to continue execution for the no exception case. */
+ rtx noex = gen_label_rtx();
+ x = expand_builtin_setjmp (buf, NULL_RTX, noex,
+ ehstack.top->entry->exception_handler_label);
+ emit_label (noex);
}
-#else
- expand_builtin_setjmp_setup (buf,
- ehstack.top->entry->exception_handler_label);
#endif
/* We are committed to this, so update the handler chain. */
@@ -2466,7 +2446,6 @@ save_eh_status (p)
p->caught_return_label_stack = caught_return_label_stack;
p->protect_list = protect_list;
p->ehc = current_function_ehc;
- p->eh_return_stub_label = eh_return_stub_label;
init_eh_for_function ();
}
@@ -2490,7 +2469,6 @@ restore_eh_status (p)
ehstack = p->ehstack;
catchstack = p->catchstack;
current_function_ehc = p->ehc;
- eh_return_stub_label = p->eh_return_stub_label;
}
/* This section is for the exception handling specific optimization
@@ -2814,8 +2792,6 @@ expand_eh_return ()
if (!eh_return_context)
return;
- current_function_cannot_inline = N_("function uses __builtin_eh_return");
-
eh_regs (&reg1, &reg2, &reg3, 1);
#ifdef POINTERS_EXTEND_UNSIGNED
eh_return_context = convert_memory_address (Pmode, eh_return_context);
diff --git a/gnu/egcs/gcc/expmed.c b/gnu/egcs/gcc/expmed.c
index 35755c0f63f..dc6382c296d 100644
--- a/gnu/egcs/gcc/expmed.c
+++ b/gnu/egcs/gcc/expmed.c
@@ -1,7 +1,6 @@
/* Medium-level subroutines: convert bit-field store and extract
and shifts, multiplies and divides to rtl instructions.
- Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 89, 92-97, 1998 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -3247,9 +3246,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
insn = get_last_insn ();
if (insn != last
&& (set = single_set (insn)) != 0
- && SET_DEST (set) == quotient
- && abs_d < ((unsigned HOST_WIDE_INT) 1
- << (HOST_BITS_PER_WIDE_INT - 1)))
+ && SET_DEST (set) == quotient)
set_unique_reg_note (insn,
REG_EQUAL,
gen_rtx_DIV (compute_mode,
@@ -4195,11 +4192,9 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep)
comparison and then the scc insn.
compare_from_rtx may call emit_queue, which would be deleted below
- if the scc insn fails. So call it ourselves before setting LAST.
- Likewise for do_pending_stack_adjust. */
+ if the scc insn fails. So call it ourselves before setting LAST. */
emit_queue ();
- do_pending_stack_adjust ();
last = get_last_insn ();
comparison
diff --git a/gnu/egcs/gcc/expr.h b/gnu/egcs/gcc/expr.h
index c279774afe5..1a6008a8f01 100644
--- a/gnu/egcs/gcc/expr.h
+++ b/gnu/egcs/gcc/expr.h
@@ -831,8 +831,7 @@ extern rtx store_expr PROTO((tree, rtx, int));
Useful after calling expand_expr with 1 as sum_ok. */
extern rtx force_operand PROTO((rtx, rtx));
-extern void expand_builtin_setjmp_setup PARAMS ((rtx, rtx));
-extern void expand_builtin_setjmp_receiver PARAMS ((rtx));
+extern rtx expand_builtin_setjmp PROTO((rtx, rtx, rtx, rtx));
#ifdef TREE_CODE
/* Generate code for computing expression EXP.
@@ -1016,14 +1015,6 @@ extern rtx (*lang_expand_expr) PROTO ((union tree_node *, rtx,
enum machine_mode,
enum expand_modifier modifier));
-#ifdef TREE_CODE
-/* Hook called by output_constant for language-specific tree codes.
- It is up to the language front-end to install a hook if it has any
- such codes that output_constant needs to know about. Returns a
- language-independent constant equivalent to its input. */
-extern tree (*lang_expand_constant) PROTO((tree));
-#endif
-
extern void init_all_optabs PROTO ((void));
extern void init_mov_optab PROTO ((void));
extern void do_jump_by_parts_equality_rtx PROTO((rtx, rtx, rtx));
diff --git a/gnu/egcs/gcc/f/BUGS b/gnu/egcs/gcc/f/BUGS
index 6f04b2b08f7..f97b75e3949 100644
--- a/gnu/egcs/gcc/f/BUGS
+++ b/gnu/egcs/gcc/f/BUGS
@@ -2,7 +2,7 @@
`bugs0.texi' and `bugs.texi'. `BUGS' is *not* a source file, although
it is normally included within source distributions.
- This file lists known bugs in the GCC-2.95 version of the GNU
+ This file lists known bugs in the EGCS-1.2 version of the GNU
Fortran compiler. Copyright (C) 1995-1999 Free Software Foundation,
Inc. You may copy, distribute, and modify it freely as long as you
preserve this copyright notice and permission notice.
@@ -11,7 +11,7 @@ Known Bugs In GNU Fortran
*************************
This section identifies bugs that `g77' *users* might run into in
-the GCC-2.95 version of `g77'. This includes bugs that are actually in
+the EGCS-1.2 version of `g77'. This includes bugs that are actually in
the `gcc' back end (GBE) or in `libf2c', because those sets of code are
at least somewhat under the control of (and necessarily intertwined
with) `g77', so it isn't worth separating them out.
@@ -27,20 +27,20 @@ particularly concentrated on any version of this information that is
distributed as part of a *released* `g77'.
In particular, while this information is intended to apply to the
-GCC-2.95 version of `g77', only an official *release* of that version
+EGCS-1.2 version of `g77', only an official *release* of that version
is expected to contain documentation that is most consistent with the
`g77' product in that version.
An online, "live" version of this document (derived directly from
the mainline, development version of `g77' within `egcs') is available
-via `http://www.gnu.org/software/gcc/onlinedocs/g77_bugs.html'. Follow the
+via `http://egcs.cygnus.com/onlinedocs/g77_bugs.html'. Follow the
"Known Bugs" link.
For information on bugs that might afflict people who configure,
port, build, and install `g77', see "Problems Installing" in
`egcs/gcc/f/INSTALL'.
- The following information was last updated on 1999-06-29:
+ The following information was last updated on 1999-05-06:
* `g77' fails to warn about use of a "live" iterative-DO variable as
an implied-DO variable in a `WRITE' or `PRINT' statement (although
diff --git a/gnu/egcs/gcc/f/ChangeLog b/gnu/egcs/gcc/f/ChangeLog
index 47a745e70ff..21c9a360866 100644
--- a/gnu/egcs/gcc/f/ChangeLog
+++ b/gnu/egcs/gcc/f/ChangeLog
@@ -1,156 +1,3 @@
-Mon Mar 13 01:00:55 2000 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * stw.h (struct _ffestw_): Change type of uses_ to int.
-
-Fri Feb 18 13:36:50 2000 Martin von Loewis <loewis@informatik.hu-berlin.de>
-
- * g77spec.c (lang_specific_driver): Use GCCBUGURL.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Thu Aug 5 02:40:42 1999 Jeffrey A Law (law@cygnus.com)
-
- * g77spec.c: Update URLS and mail addresses.
- * root.texi: Update URLS and mail addresses.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
- * version.c: No longer a prerelease.
-
-Sat Jul 17 21:57:07 1999 Jeffrey A Law (law@cygnus.com)
-
- * root.texi: Clear DEVEOPMENT per Craig's instructions.
-
-1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * root.texi: Update e-mail addresses to gcc.gnu.org.
- * g77spec.c (lang_specific_driver): Updated URL with bug reporting
- instructions to gcc.gnu.org. Removed e-mail address.
-
-Sat Jul 17 11:28:43 1999 Craig Burley <craig@jcb-sc.com>
-
- * root.texi, g77install.texi: Switchover to GCC terminology.
- Also, FSF-G77 had been mistakenly set at some point.
-
-Thu Jul 8 15:38:50 1999 Craig Burley <craig@jcb-sc.com>
-
- * news.texi: Describe DATE intrinsic fix.
-
-Tue Jun 29 10:10:25 1999 Craig Burley <craig@jcb-sc.com>
-
- * bugs.texi: Undo Friday's change, as there's now a fix
- available from netlib.
- * news.texi: Document the fix.
-
-Mon Jun 28 10:43:11 1999 Craig Burley <craig@jcb-sc.com>
-
- * com.c (ffecom_prepare_expr_): A COMPLEX intrinsic needs
- a temp even if -fno-f2c.
-
- * version.c: Bump version.
-
-Fri Jun 25 11:06:32 1999 Craig Burley <craig@jcb-sc.com>
-
- * bugs.texi: Describe K(5)=10*3 NAMELIST-read bug.
-
-Mon Jun 21 12:40:17 1999 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
-
- * g77.texi: Update links.
-
-Wed Jun 16 11:43:02 1999 Craig Burley <craig@jcb-sc.com>
-
- * news.texi: Mention BACKSPACE fix to libg2c.
-
-Mon Jun 7 08:42:40 1999 Craig Burley <craig@jcb-sc.com>
-
- * Make-lang.in: Any target using libsubdir must depend
- on installdirs.
-
-Sat Jun 5 23:50:36 1999 Craig Burley <craig@jcb-sc.com>
-
- * g77.texi: Describe a few more missing features people
- have emailed me about.
-
-Sat Jun 5 17:03:23 1999 Craig Burley <craig@jcb-sc.com>
-
- From Dave Love to egcs-patches on 20 May 1999 17:38:38 +0100:
- * g77.texi: Clean up fossil text vis-a-vis Intel CPUs.
-
-Fri Jun 4 13:56:56 1999 Craig Burley <craig@jcb-sc.com>
-
- * Make-lang.in: Use libsubdir, not prefix, to store
- temporary lang-f77 `flag' file.
-
-Fri Jun 4 10:26:04 1999 Craig Burley <craig@jcb-sc.com>
-
- * news.texi (News): Mention GCC 2.95 in favor of EGCS 1.2.
- Mention that libg2c is multilibbed.
-
-Fri Jun 4 10:09:50 1999 Craig Burley <craig@jcb-sc.com>
-
- * g77.texi (Missing Features): Add `Better Warnings'
- item.
-
-Fri May 28 16:51:41 1999 Craig Burley <craig@jcb-sc.com>
-
- * g77.texi: Fix thinko.
-
-Wed May 26 14:43:27 1999 Craig Burley <craig@jcb-sc.com>
-
- * news.texi: Document Tue May 18 03:52:04 1999 patch.
- Fix a grammo.
-
-Wed May 26 14:25:07 1999 Craig Burley <craig@jcb-sc.com>
-
- * g77.texi, news.texi, root.texi, version.c: Start renaming
- EGCS 1.2 to GCC 2.95, and start using 0.5.25 to designate
- the version of g77 within GCC 2.95.
-
-Wed May 26 11:45:21 1999 Craig Burley <craig@jcb-sc.com>
-
- Rename -fsubscript-check to -fbounds-check and
- -ff2c-subscript-check to -ffortran-bounds-check:
- * g77.texi: Rename options in docs, clarify usage.
- * lang-options.h: Rename options, clarify doclets.
- * news.texi: Rename options, don't bother with fortran-specific
- option.
- * top.c (ffe_decode_option): Rename recognized strings.
-
-Tue May 25 18:21:09 1999 Craig Burley <craig@jcb-sc.com>
-
- * com.c (FFECOM_FASTER_ARRAY_REFS): Delete this vestige,
- now that -fflatten-arrays exists.
-
-Tue May 25 17:48:34 1999 Craig Burley <craig@jcb-sc.com>
-
- Fix 19990525-0.f:
- * com.c (ffecom_arg_ptr_to_expr): Strip off parens around
- CHARACTER expression.
- (ffecom_prepare_expr_): Ditto.
-
-Tue May 18 03:52:04 1999 Craig Burley <craig@jcb-sc.com>
-
- Support use of back end's improved open-coding of complex divide:
- * com.c (ffecom_tree_divide_): Use RDIV_EXPR for complex divide,
- instead of run-time call to [cz]_div, if `-Os' option specified.
- (lang_init_options): Tell back end we want support for wide range
- of inputs to complex divide.
-
- * Bump version.
-
-Tue May 18 00:21:34 1999 Zack Weinberg <zack@rabi.phys.columbia.edu>
-
- * lang-specs.h: Define __GNUC__ and __GNUC_MINOR__ only if -no-gcc
- was not given.
-
Thu May 13 12:23:20 1999 Craig Burley <craig@jcb-sc.com>
Fix INTEGER*8 subscripts in array references:
diff --git a/gnu/egcs/gcc/f/INSTALL b/gnu/egcs/gcc/f/INSTALL
index 91858800958..b8c24dbdb8a 100644
--- a/gnu/egcs/gcc/f/INSTALL
+++ b/gnu/egcs/gcc/f/INSTALL
@@ -13,10 +13,9 @@ Installing GNU Fortran
The following information describes how to install `g77'.
- Note that, for users of the GCC-2.95 version of `g77', much of the
-information is obsolete, and is superceded by the GCC installation
-procedures. Such information is accordingly omitted and flagged as
-such.
+ Note that, for `egcs' users, much of the information is obsolete,
+and is superceded by the `egcs' installation procedures. Such
+information is accordingly omitted and flagged as such.
*Warning:* The information below is still under development, and
might not accurately reflect the `g77' code base of which it is a part.
@@ -25,17 +24,17 @@ particularly concentrated on any version of this information that is
distributed as part of a *released* `g77'.
In particular, while this information is intended to apply to the
-GCC-2.95 version of `g77', only an official *release* of that version
+EGCS-1.2 version of `g77', only an official *release* of that version
is expected to contain documentation that is most consistent with the
`g77' product in that version.
- The following information was last updated on 1999-07-17:
+ The following information was last updated on 1999-05-10:
Prerequisites
=============
- For users of the GCC-2.95 version of `g77', this information is
-superceded by the GCC installation instructions.
+ For `egcs' users, this information is superceded by the `egcs'
+installation instructions.
Problems Installing
===================
@@ -84,7 +83,7 @@ not yet established.
Missing strtoul or bsearch
..........................
- This information does not apply to the GCC-2.95 version of `g77',
+ This information does not apply to the `egcs' version of `g77'.
Cleanup Kills Stage Directories
...............................
@@ -335,18 +334,18 @@ support 64-bit systems.
Quick Start
===========
- For users of the GCC-2.95 version of `g77', this information is
-superceded by the GCC installation instructions.
+ For `egcs' users, this information is superceded by the `egcs'
+installation instructions.
Complete Installation
=====================
- For users of the GCC-2.95 version of `g77', this information is
-superceded by the GCC installation instructions.
+ For `egcs' users, this information is superceded by the `egcs'
+installation instructions.
Distributing Binaries
=====================
- For users of the GCC-2.95 version of `g77', this information is
-superceded by the GCC installation instructions.
+ For `egcs' users, this information is superceded by the `egcs'
+installation instructions.
diff --git a/gnu/egcs/gcc/f/Make-lang.in b/gnu/egcs/gcc/f/Make-lang.in
index a531abb5707..39c9cc2087d 100644
--- a/gnu/egcs/gcc/f/Make-lang.in
+++ b/gnu/egcs/gcc/f/Make-lang.in
@@ -308,14 +308,12 @@ f77.install-normal:
# Install the driver program as $(target)-g77
# and also as either g77 (if native) or $(tooldir)/bin/g77.
-# Make sure `installdirs' target (from gcc Makefile) has been
-# run, since we use libsubdir to store our `flag' file, lang-f77.
-f77.install-common: installdirs
+f77.install-common:
case "$(LANGUAGES)" in \
- *[fF]77*) touch $(libsubdir)/lang-f77;; \
- *) rm -f $(libsubdir)/lang-f77;; \
+ *[fF]77*) touch $(prefix)/lang-f77;; \
+ *) rm -f $(prefix)/lang-f77;; \
esac
- -if [ -f $(libsubdir)/lang-f77 -a -f f771$(exeext) ] ; then \
+ -if [ -f $(prefix)/lang-f77 -a -f f771$(exeext) ] ; then \
if [ -f g77-cross$(exeext) ] ; then \
rm -f $(bindir)/$(G77_CROSS_NAME)$(exeext); \
$(INSTALL_PROGRAM) g77-cross$(exeext) $(bindir)/$(G77_CROSS_NAME)$(exeext); \
@@ -335,18 +333,16 @@ f77.install-common: installdirs
echo ' f77-install-ok in the source or build directory.)'; \
echo ''; \
else true; fi
- rm -f $(libsubdir)/lang-f77
+ rm -f $(prefix)/lang-f77
# $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
# to do the install. The sed rule was copied from stmp-int-hdrs.
-# Make sure `installdirs' target (from gcc Makefile) has been
-# run, since we use libsubdir to store our `flag' file, lang-f77.
-f77.install-info: f77.info installdirs
+f77.install-info: f77.info
case "$(LANGUAGES)" in \
- *[fF]77*) touch $(libsubdir)/lang-f77;; \
- *) rm -f $(libsubdir)/lang-f77;; \
+ *[fF]77*) touch $(prefix)/lang-f77;; \
+ *) rm -f $(prefix)/lang-f77;; \
esac
- if [ -f $(libsubdir)/lang-f77 -a -f f/g77.info ] ; then \
+ if [ -f $(prefix)/lang-f77 -a -f f/g77.info ] ; then \
rm -f $(infodir)/g77.info*; \
for f in f/g77.info*; do \
realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
@@ -354,22 +350,20 @@ f77.install-info: f77.info installdirs
done; \
chmod a-x $(infodir)/g77.info*; \
else true; fi
- @if [ -f $(libsubdir)/lang-f77 -a -f $(srcdir)/f/g77.info ] ; then \
+ @if [ -f $(prefix)/lang-f77 -a -f $(srcdir)/f/g77.info ] ; then \
if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
echo " install-info --info-dir=$(infodir) $(infodir)/g77.info"; \
install-info --info-dir=$(infodir) $(infodir)/g77.info || : ; \
else : ; fi; \
else : ; fi
- rm -f $(libsubdir)/lang-f77
+ rm -f $(prefix)/lang-f77
-# Make sure `installdirs' target (from gcc Makefile) has been
-# run, since we use libsubdir to store our `flag' file, lang-f77.
-f77.install-man: $(srcdir)/f/g77.1 installdirs
+f77.install-man: $(srcdir)/f/g77.1
case "$(LANGUAGES)" in \
- *[fF]77*) touch $(libsubdir)/lang-f77;; \
- *) rm -f $(libsubdir)/lang-f77;; \
+ *[fF]77*) touch $(prefix)/lang-f77;; \
+ *) rm -f $(prefix)/lang-f77;; \
esac
- -if [ -f $(libsubdir)/lang-f77 -a -f f771$(exeext) ] ; then \
+ -if [ -f $(prefix)/lang-f77 -a -f f771$(exeext) ] ; then \
if [ -f g77-cross$(exeext) ] ; then \
rm -f $(man1dir)/$(G77_CROSS_NAME)$(manext); \
$(INSTALL_DATA) $(srcdir)/f/g77.1 $(man1dir)/$(G77_CROSS_NAME)$(manext); \
@@ -380,29 +374,27 @@ f77.install-man: $(srcdir)/f/g77.1 installdirs
chmod a-x $(man1dir)/$(G77_INSTALL_NAME)$(manext); \
fi; \
else true; fi
- rm -f $(libsubdir)/lang-f77
+ rm -f $(prefix)/lang-f77
-# Make sure `installdirs' target (from gcc Makefile) has been
-# run, since we use libsubdir to store our `flag' file, lang-f77.
-f77.uninstall: installdirs
+f77.uninstall:
case "$(LANGUAGES)" in \
- *[fF]77*) touch $(libsubdir)/lang-f77;; \
- *) rm -f $(libsubdir)/lang-f77;; \
+ *[fF]77*) touch $(prefix)/lang-f77;; \
+ *) rm -f $(prefix)/lang-f77;; \
esac
- @if [ -f $(libsubdir)/lang-f77 ] ; then \
+ @if [ -f $(prefix)/lang-f77 ] ; then \
if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
echo " install-info --delete --info-dir=$(infodir) $(infodir)/g77.info"; \
install-info --delete --info-dir=$(infodir) $(infodir)/g77.info || : ; \
else : ; fi; \
else : ; fi
- -if [ -f $(libsubdir)/lang-f77 ]; then \
+ -if [ -f $(prefix)/lang-f77 ]; then \
rm -rf $(bindir)/$(G77_INSTALL_NAME)$(exeext); \
rm -rf $(bindir)/$(G77_CROSS_NAME)$(exeext); \
rm -rf $(man1dir)/$(G77_INSTALL_NAME)$(manext); \
rm -rf $(man1dir)/$(G77_CROSS_NAME)$(manext); \
rm -rf $(infodir)/g77.info*; \
fi
- rm -f $(libsubdir)/lang-f77
+ rm -f $(prefix)/lang-f77
#
# Clean hooks:
# A lot of the ancillary files are deleted by the main makefile.
diff --git a/gnu/egcs/gcc/f/NEWS b/gnu/egcs/gcc/f/NEWS
index b8b524309ca..2cde7928341 100644
--- a/gnu/egcs/gcc/f/NEWS
+++ b/gnu/egcs/gcc/f/NEWS
@@ -2,7 +2,7 @@
`news0.texi' and `news.texi'. `NEWS' is *not* a source file, although
it is normally included within source distributions.
- This file lists news about the GCC-2.95 version (and some other
+ This file lists news about the EGCS-1.2 version (and some other
versions) of the GNU Fortran compiler. Copyright (C) 1995-1999 Free
Software Foundation, Inc. You may copy, distribute, and modify it
freely as long as you preserve this copyright notice and permission
@@ -50,7 +50,7 @@ particularly concentrated on any version of this information that is
distributed as part of a *released* `g77'.
In particular, while this information is intended to apply to the
-GCC-2.95 version of `g77', only an official *release* of that version
+EGCS-1.2 version of `g77', only an official *release* of that version
is expected to contain documentation that is most consistent with the
`g77' product in that version.
@@ -64,12 +64,12 @@ about previous `g77' versions up-to-date.
An online, "live" version of this document (derived directly from
the mainline, development version of `g77' within `egcs') is available
-at `http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
+at `http://egcs.cygnus.com/onlinedocs/g77_news.html'.
- The following information was last updated on 1999-07-08:
+ The following information was last updated on 1999-05-13:
-In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
-=======================================================
+In `egcs' 1.2 (versus 1.1.2):
+=============================
1. `g77' no longer generates bad code for assignments, or other
conversions, of `REAL' or `COMPLEX' constant expressions to type
@@ -87,40 +87,30 @@ In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
now assigns through a temporary, in cases where such partial
overlap is deemed possible.
- 4. `libg2c' (`libf2c') no longer loses track of the file being worked
- on during a `BACKSPACE' operation.
+ 4. Automatic arrays now seem to be working on HP-UX systems.
- 5. `libg2c' (`libf2c') fixes a bug whereby input to a `NAMELIST' read
- involving a repeat count, such as `K(5)=10*3', was not properly
- handled by `libf2c'. The first item was written to `K(5)', but
- the remaining nine were written elsewhere (still within the array),
- not necessarily starting at `K(6)'.
-
- 6. Automatic arrays now seem to be working on HP-UX systems.
-
- 7. The `Date' intrinsic now returns the correct result on big-endian
- systems.
-
- 8. Fix `g77' so it no longer crashes when compiling I/O statements
+ 5. Fix `g77' so it no longer crashes when compiling I/O statements
using keywords that define `INTEGER' values, such as `IOSTAT=J',
where J is other than default `INTEGER' (such as `INTEGER*2').
Instead, it issues a diagnostic.
- 9. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
+ 6. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is
not default `INTEGER', such as `INTEGER*2', instead of producing a
spurious diagnostic. Also fix `DATA (A(I),I=1,N)', where `N' is
not default `INTEGER' to work instead of crashing `g77'.
- 10. The `-ax' option is now obeyed when compiling Fortran programs.
+ 7. The `-ax' option is now obeyed when compiling Fortran programs.
(It is passed to the `f771' driver.)
- * The new `-fbounds-check' option causes `g77' to compile run-time
- bounds checks of array subscripts, as well as of substring start
- and end points.
+ * The new `-fsubscript-check' option causes `g77' to compile
+ run-time bounds checks of array subscripts, as well as of
+ substring start and end points.
- * `libg2c' now supports building as multilibbed library, which
- provides better support for systems that require options such as
- `-mieee' to work properly.
+ The current implementation uses the `libf2c' library routine
+ `s_rnge' to print the diagnostic. Since a future version of `g77'
+ might use a different implementation, use the new
+ `-ff2c-subscript-check' option if your application requires use of
+ `s_rnge' or a compile-time diagnostic.
* Source file names with the suffixes `.FOR' and `.FPP' now are
recognized by `g77' as if they ended in `.for' and `.fpp',
@@ -133,12 +123,12 @@ In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
consistent with the other subroutine forms of `libU77' intrinsics.
* `g77' now warns about a reference to an intrinsic that has an
- interface that is not Year 2000 (Y2K) compliant. Also, `libg2c'
- has been changed to increase the likelihood of catching references
- to the implementations of these intrinsics using the `EXTERNAL'
- mechanism (which would avoid the new warnings).
+ interface that is not Year 2000 (Y2K) compliant. Also, the
+ `libg2c' has been changed to increase the likelihood of catching
+ references to the implementations of these intrinsics using the
+ `EXTERNAL' mechanism (which would avoid the new warnings).
- 11. `g77' now warns about a reference to a function when the
+ 8. `g77' now warns about a reference to a function when the
corresponding *subsequent* function program unit disagrees with
the reference concerning the type of the function.
@@ -149,23 +139,19 @@ In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
* The `-malign-double' option now reliably aligns *all*
double-precision variables and arrays on Intel x86 targets.
- 12. Even without the `-malign-double' option, `g77' reliably aligns
+ 9. Even without the `-malign-double' option, `g77' reliably aligns
local double-precision variables that are not in `EQUIVALENCE'
areas and not `SAVE''d.
- 13. `g77' now open-codes ("inlines") division of `COMPLEX' operands
- instead of generating a run-time call to the `libf2c' routines
- `c_div' or `z_div', unless the `-Os' option is specified.
-
* `g77' no longer generates code to maintain `errno', a C-language
concept, when performing operations such as the `SqRt' intrinsic.
- 14. `g77' developers can temporarily use the `-fflatten-arrays' option
+ 10. `g77' developers can temporarily use the `-fflatten-arrays' option
to compare how the compiler handles code generation using C-like
constructs as compared to the Fortran-like method constructs
normally used.
- 15. A substantial portion of the `g77' front end's code-generation
+ 11. A substantial portion of the `g77' front end's code-generation
component was rewritten. It now generates code using facilities
more robustly supported by the `gcc' back end. One effect of this
rewrite is that some codes no longer produce a spurious "label LAB
@@ -173,35 +159,14 @@ In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2:
* Support for the `-fugly' option has been removed.
- 16. Improve documentation and indexing, including information on Year
+ 12. Improve documentation and indexing, including information on Year
2000 (Y2K) compliance, and providing more information on internals
of the front end.
- 17. Upgrade to `libf2c' as of 1999-05-10.
-
-In 0.5.24 versus 0.5.23:
-========================
-
- There is no `g77' version 0.5.24 at this time, or planned. 0.5.24
-is the version number designated for bug fixes and, perhaps, some new
-features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as
-0.5.24 was planned to require.
+ 13. Upgrade to `libf2c' as of 1999-05-10.
- Due to `EGCS' becoming `GCC' (which is now an acronym for "GNU
-Compiler Collection"), and `EGCS' 1.2 becoming officially designated
-`GCC' 2.95, there seems to be no need for an actual 0.5.24 release.
-
- To reduce the confusion already resulting from use of 0.5.24 to
-designate `g77' versions within `EGCS' versions 1.0 and 1.1, as well as
-in versions of `g77' documentation and notices during that period,
-"mainline" `g77' version numbering resumes at 0.5.25 with `GCC' 2.95
-(`EGCS' 1.2), skipping over 0.5.24 as a placeholder version number.
-
- To repeat, there is no `g77' 0.5.24, but there is now a 0.5.25.
-Please remain calm and return to your keypunch units.
-
-In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
-====================================
+In 0.5.24 and `egcs' 1.1.2 (versus 0.5.23 and 1.1.1):
+=====================================================
* Fix the `IDate' intrinsic (VXT) (in `libg2c') so the returned year
is in the documented, non-Y2K-compliant range of 0-99, instead of
@@ -215,8 +180,8 @@ In `EGCS' 1.1.2 versus `EGCS' 1.1.1:
* Improve documentation.
-In `EGCS' 1.1.1 versus `EGCS' 1.1:
-==================================
+In 0.5.24 and `egcs' 1.1.1 (versus 0.5.23 and 1.1):
+===================================================
* Fix `libg2c' so it performs an implicit `ENDFILE' operation (as
appropriate) whenever a `REWIND' is done.
@@ -237,28 +202,51 @@ In `EGCS' 1.1.1 versus `EGCS' 1.1:
some systems (those with shells requiring `else true' clauses on
`if' constructs for the completion code to be set properly).
-In `EGCS' 1.1 versus `EGCS' 1.0.3:
-==================================
+In `egcs' 1.1 (versus 0.5.24):
+==============================
+
+ 14. Fix `g77' crash compiling code containing the construct
+ `CMPLX(0.)' or similar.
+
+ 15. Fix `g77' crash (or apparently infinite run-time) when compiling
+ certain complicated expressions involving `COMPLEX' arithmetic
+ (especially multiplication).
+
+ 16. Fix a code-generation bug that afflicted Intel x86 targets when
+ `-O2' was specified compiling, for example, an old version of the
+ `DNRM2' routine.
+
+ The x87 coprocessor stack was being mismanaged in cases involving
+ assigned `GOTO' and `ASSIGN'.
+
+ * Align static double-precision variables and arrays on Intel x86
+ targets regardless of whether `-malign-double' is specified.
+
+ Generally, this affects only local variables and arrays having the
+ `SAVE' attribute or given initial values via `DATA'.
+
+In `egcs' 1.1 (versus `egcs' 1.0.3):
+====================================
- 18. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
+ 17. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte
beyond the end of its `CHARACTER' argument, and in the `libU77'
intrinsics `GMTime' and `LTime' that overwrote their arguments.
- 19. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
+ 18. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no
longer elicit spurious diagnostics from `g77', even on systems
with pointers having different sizes than integers.
This bug is not known to have existed in any recent version of
`gcc'. It was introduced in an early release of `egcs'.
- 20. Valid combinations of `EXTERNAL', passing that external as a dummy
+ 19. Valid combinations of `EXTERNAL', passing that external as a dummy
argument without explicitly giving it a type, and, in a subsequent
program unit, referencing that external as an external function
with a different type no longer crash `g77'.
- 21. `CASE DEFAULT' no longer crashes `g77'.
+ 20. `CASE DEFAULT' no longer crashes `g77'.
- 22. The `-Wunused' option no longer issues a spurious warning about
+ 21. The `-Wunused' option no longer issues a spurious warning about
the "master" procedure generated by `g77' for procedures
containing `ENTRY' statements.
@@ -283,25 +271,25 @@ In `EGCS' 1.1 versus `EGCS' 1.0.3:
`libf2c' environment, even when `libf2c' (now `libg2c') is a
shared library.
- 23. `g77' no longer installs the `f77' command and `f77.1' man page in
+ 22. `g77' no longer installs the `f77' command and `f77.1' man page in
the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok'
file exists in the source or build directory. See the
installation documentation for more information.
- 24. `g77' no longer installs the `libf2c.a' library and `f2c.h'
+ 23. `g77' no longer installs the `libf2c.a' library and `f2c.h'
include file in the `/usr' or `/usr/local' heirarchy, even if the
`f2c-install-ok' or `f2c-exists-ok' files exist in the source or
build directory. See the installation documentation for more
information.
- 25. The `libf2c.a' library produced by `g77' has been renamed to
+ 24. The `libf2c.a' library produced by `g77' has been renamed to
`libg2c.a'. It is installed only in the `gcc' "private" directory
heirarchy, `gcc-lib'. This allows system administrators and users
to choose which version of the `libf2c' library from `netlib' they
wish to use on a case-by-case basis. See the installation
documentation for more information.
- 26. The `f2c.h' include (header) file produced by `g77' has been
+ 25. The `f2c.h' include (header) file produced by `g77' has been
renamed to `g2c.h'. It is installed only in the `gcc' "private"
directory heirarchy, `gcc-lib'. This allows system administrators
and users to choose which version of the include file from
@@ -313,11 +301,11 @@ In `EGCS' 1.1 versus `EGCS' 1.0.3:
than the one built and installed as part of the same `g77' version
is picked up.
- 27. During the configuration and build process, `g77' creates
+ 26. During the configuration and build process, `g77' creates
subdirectories it needs only as it needs them. Other cleaning up
of the configuration and build process has been performed as well.
- 28. `install-info' now used to update the directory of Info
+ 27. `install-info' now used to update the directory of Info
documentation to contain an entry for `g77' (during installation).
* Some diagnostics have been changed from warnings to errors, to
@@ -326,38 +314,28 @@ In `EGCS' 1.1 versus `EGCS' 1.0.3:
in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and
about truncations of various sorts of constants.
- 29. Improve compilation of `FORMAT' expressions so that a null byte is
+ 28. Improve compilation of `FORMAT' expressions so that a null byte is
appended to the last operand if it is a constant. This provides a
cleaner run-time diagnostic as provided by `libf2c' for statements
like `PRINT '(I1', 42'.
- 30. Improve documentation and indexing.
+ 29. Improve documentation and indexing.
- 31. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
+ 30. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of
problems, including those involving some uses of the `T' format
specifier, and perhaps some build (porting) problems as well.
-In `EGCS' 1.1 versus `g77' 0.5.23:
-==================================
-
- 32. Fix a code-generation bug that afflicted Intel x86 targets when
- `-O2' was specified compiling, for example, an old version of the
- `DNRM2' routine.
-
- The x87 coprocessor stack was being mismanaged in cases involving
- assigned `GOTO' and `ASSIGN'.
+In 0.5.24 and `egcs' 1.1 (versus 0.5.23):
+=========================================
- 33. `g77' no longer produces incorrect code and initial values for
+ 31. `g77' no longer produces incorrect code and initial values for
`EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural"
ordering of members vis-a-vis their types, require initial padding.
- 34. Fix `g77' crash compiling code containing the construct
- `CMPLX(0.)' or similar.
-
- 35. `g77' no longer crashes when compiling code containing
+ 32. `g77' no longer crashes when compiling code containing
specification statements such as `INTEGER(KIND=7) PTR'.
- 36. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
+ 33. `g77' no longer crashes when compiling code such as `J = SIGNAL(1,
2)'.
* `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary"
@@ -368,16 +346,6 @@ In `EGCS' 1.1 versus `g77' 0.5.23:
Previously, `g77' treated these expressions as denoting special
"pointer" arguments for the purposes of filewide analysis.
- 37. Fix `g77' crash (or apparently infinite run-time) when compiling
- certain complicated expressions involving `COMPLEX' arithmetic
- (especially multiplication).
-
- * Align static double-precision variables and arrays on Intel x86
- targets regardless of whether `-malign-double' is specified.
-
- Generally, this affects only local variables and arrays having the
- `SAVE' attribute or given initial values via `DATA'.
-
* The `g77' driver now ensures that `-lg2c' is specified in the link
phase prior to any occurrence of `-lm'. This prevents
accidentally linking to a routine in the SunOS4 `-lm' library when
@@ -398,9 +366,9 @@ In `EGCS' 1.1 versus `g77' 0.5.23:
* The F90 `System_Clock' intrinsic allows the optional arguments
(except for the `Count' argument) to be omitted.
- 38. Upgrade to `libf2c' as of 1998-06-18.
+ 34. Upgrade to `libf2c' as of 1998-06-18.
- 39. Improve documentation and indexing.
+ 35. Improve documentation and indexing.
In previous versions:
=====================
diff --git a/gnu/egcs/gcc/f/bugs.texi b/gnu/egcs/gcc/f/bugs.texi
index 3f4cd903920..643a221c98c 100644
--- a/gnu/egcs/gcc/f/bugs.texi
+++ b/gnu/egcs/gcc/f/bugs.texi
@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. BUGS).
@set copyrights-bugs 1995-1999
-@set last-update-bugs 1999-06-29
+@set last-update-bugs 1999-05-06
@include root.texi
@@ -79,7 +79,7 @@ An online, ``live'' version of this document
(derived directly from the mainline, development version
of @code{g77} within @code{egcs})
is available via
-@uref{http://www.gnu.org/software/gcc/onlinedocs/g77_bugs.html}.
+@uref{http://egcs.cygnus.com/onlinedocs/g77_bugs.html}.
Follow the ``Known Bugs'' link.
@ifset DOC-G77
diff --git a/gnu/egcs/gcc/f/com.c b/gnu/egcs/gcc/f/com.c
index c326fedaae7..a3e0eb1b3a0 100644
--- a/gnu/egcs/gcc/f/com.c
+++ b/gnu/egcs/gcc/f/com.c
@@ -213,6 +213,8 @@ typedef struct { unsigned :16, :16, :16; } vms_ino_t;
/* Externals defined here. */
+#define FFECOM_FASTER_ARRAY_REFS 0 /* Generates faster code? */
+
#if FFECOM_targetCURRENT == FFECOM_targetGCC
/* tree.h declares a bunch of stuff that it expects the front end to
@@ -9376,10 +9378,6 @@ ffecom_tree_divide_ (tree tree_type, tree left, tree right,
right);
case COMPLEX_TYPE:
- if (! optimize_size)
- return ffecom_2 (RDIV_EXPR, tree_type,
- left,
- right);
{
ffecomGfrt ix;
@@ -10598,9 +10596,6 @@ ffecom_arg_ptr_to_expr (ffebld expr, tree *length)
assert (ffeinfo_kindtype (ffebld_info (expr))
== FFEINFO_kindtypeCHARACTER1);
- while (ffebld_op (expr) == FFEBLD_opPAREN)
- expr = ffebld_left (expr);
-
catlist = ffecom_concat_list_new_ (expr, FFETARGET_charactersizeNONE);
switch (ffecom_concat_list_count_ (catlist))
{
@@ -13043,12 +13038,6 @@ ffecom_prepare_expr_ (ffebld expr, ffebld dest UNUSED)
/* Generate whatever temporaries are needed to represent the result
of the expression. */
- if (bt == FFEINFO_basictypeCHARACTER)
- {
- while (ffebld_op (expr) == FFEBLD_opPAREN)
- expr = ffebld_left (expr);
- }
-
switch (ffebld_op (expr))
{
default:
@@ -13068,10 +13057,7 @@ ffecom_prepare_expr_ (ffebld expr, ffebld dest UNUSED)
s = ffebld_symter (ffebld_left (expr));
if (ffesymbol_where (s) == FFEINFO_whereCONSTANT
- || (ffesymbol_where (s) != FFEINFO_whereINTRINSIC
- && ! ffesymbol_is_f2c (s))
- || (ffesymbol_where (s) == FFEINFO_whereINTRINSIC
- && ! ffe_is_f2c_library ()))
+ || ! ffesymbol_is_f2c (s))
break;
}
else if (ffebld_op (expr) == FFEBLD_opPOWER)
@@ -15033,7 +15019,6 @@ lang_init_options ()
flag_reduce_all_givs = 1;
flag_argument_noalias = 2;
flag_errno_math = 0;
- flag_complex_divide_method = 1;
}
void
diff --git a/gnu/egcs/gcc/f/ffe.texi b/gnu/egcs/gcc/f/ffe.texi
index e30333280d1..4108bb850bc 100644
--- a/gnu/egcs/gcc/f/ffe.texi
+++ b/gnu/egcs/gcc/f/ffe.texi
@@ -11,1047 +11,15 @@
This chapter describes some aspects of the design and implementation
of the @code{g77} front end.
-Much of the information below applies not to current
-releases of @code{g77},
-but to the 0.6 rewrite being designed and implemented
-as of late May, 1999.
-
-To find about things that are ``To Be Determined'' or ``To Be Done'',
-search for the string TBD.
-If you want to help by working on one or more of these items,
-email me at @email{@value{email-burley}}.
-If you're planning to do more than just research issues and offer comments,
-see @uref{http://www.gnu.org/software/contribute.html} for steps you might
-need to take first.
@menu
-* Overview of Sources::
-* Overview of Translation Process::
* Philosophy of Code Generation::
* Two-pass Design::
* Challenges Posed::
* Transforming Statements::
* Transforming Expressions::
-* Internal Naming Conventions::
@end menu
-@node Overview of Sources
-@section Overview of Sources
-
-The current directory layout includes the following:
-
-@table @file
-@item @value{srcdir}/gcc/
-Non-g77 files in gcc
-
-@item @value{srcdir}/gcc/f/
-GNU Fortran front end sources
-
-@item @value{srcdir}/libf2c/
-@code{libg2c} configuration and @code{g2c.h} file generation
-
-@item @value{srcdir}/libf2c/libF77/
-General support and math portion of @code{libg2c}
-
-@item @value{srcdir}/libf2c/libI77/
-I/O portion of @code{libg2c}
-
-@item @value{srcdir}/libf2c/libU77/
-Additional interfaces to Unix @code{libc} for @code{libg2c}
-@end table
-
-Components of note in @code{g77} are described below.
-
-@file{f/} as a whole contains the source for @code{g77},
-while @file{libf2c/} contains a portion of the separate program
-@code{f2c}.
-Note that the @code{libf2c} code is not part of the program @code{g77},
-just distributed with it.
-
-@file{f/} contains text files that document the Fortran compiler, source
-files for the GNU Fortran Front End (FFE), and some other stuff.
-The @code{g77} compiler code is placed in @file{f/} because it,
-along with its contents,
-is designed to be a subdirectory of a @code{gcc} source directory,
-@file{gcc/},
-which is structured so that language-specific front ends can be ``dropped
-in'' as subdirectories.
-The C++ front end (@code{g++}), is an example of this---it resides in
-the @file{cp/} subdirectory.
-Note that the C front end (also referred to as @code{gcc})
-is an exception to this, as its source files reside
-in the @file{gcc/} directory itself.
-
-@file{libf2c/} contains the run-time libraries for the @code{f2c} program,
-also used by @code{g77}.
-These libraries normally referred to collectively as @code{libf2c}.
-When built as part of @code{g77},
-@code{libf2c} is installed under the name @code{libg2c} to avoid
-conflict with any existing version of @code{libf2c},
-and thus is often referred to as @code{libg2c} when the
-@code{g77} version is specifically being referred to.
-
-The @code{netlib} version of @code{libf2c/}
-contains two distinct libraries,
-@code{libF77} and @code{libI77},
-each in their own subdirectories.
-In @code{g77}, this distinction is not made,
-beyond maintaining the subdirectory structure in the source-code tree.
-
-@file{libf2c/} is not part of the program @code{g77},
-just distributed with it.
-It contains files not present
-in the official (@code{netlib}) version of @code{libf2c},
-and also contains some minor changes made from @code{libf2c},
-to fix some bugs,
-and to facilitate automatic configuration, building, and installation of
-@code{libf2c} (as @code{libg2c}) for use by @code{g77} users.
-See @file{libf2c/README} for more information,
-including licensing conditions
-governing distribution of programs containing code from @code{libg2c}.
-
-@code{libg2c}, @code{g77}'s version of @code{libf2c},
-adds Dave Love's implementation of @code{libU77},
-in the @file{libf2c/libU77/} directory.
-This library is distributed under the
-GNU Library General Public License (LGPL)---see the
-file @file{libf2c/libU77/COPYING.LIB}
-for more information,
-as this license
-governs distribution conditions for programs containing code
-from this portion of the library.
-
-Files of note in @file{f/} and @file{libf2c/} are described below:
-
-@table @file
-@item f/BUGS
-Lists some important bugs known to be in g77.
-Or use Info (or GNU Emacs Info mode) to read
-the ``Actual Bugs'' node of the @code{g77} documentation:
-
-@smallexample
-info -f f/g77.info -n "Actual Bugs"
-@end smallexample
-
-@item f/ChangeLog
-Lists recent changes to @code{g77} internals.
-
-@item libf2c/ChangeLog
-Lists recent changes to @code{libg2c} internals.
-
-@item f/NEWS
-Contains the per-release changes.
-These include the user-visible
-changes described in the node ``Changes''
-in the @code{g77} documentation, plus internal
-changes of import.
-Or use:
-
-@smallexample
-info -f f/g77.info -n News
-@end smallexample
-
-@item f/g77.info*
-The @code{g77} documentation, in Info format,
-produced by building @code{g77}.
-
-All users of @code{g77} (not just installers) should read this,
-using the @code{more} command if neither the @code{info} command,
-nor GNU Emacs (with its Info mode), are available, or if users
-aren't yet accustomed to using these tools.
-All of these files are readable as ``plain text'' files,
-though they're easier to navigate using Info readers
-such as @code{info} and GNU Emacs Info mode.
-@end table
-
-If you want to explore the FFE code, which lives entirely in @file{f/},
-here are a few clues.
-The file @file{g77spec.c} contains the @code{g77}-specific source code
-for the @code{g77} command only---this just forms a variant of the
-@code{gcc} command, so,
-just as the @code{gcc} command itself does not contain the C front end,
-the @code{g77} command does not contain the Fortran front end (FFE).
-The FFE code ends up in an executable named @file{f771},
-which does the actual compiling,
-so it contains the FFE plus the @code{gcc} back end (GBE),
-the latter to do most of the optimization, and the code generation.
-
-The file @file{parse.c} is the source file for @code{yyparse()},
-which is invoked by the GBE to start the compilation process,
-for @file{f771}.
-
-The file @file{top.c} contains the top-level FFE function @code{ffe_file}
-and it (along with top.h) define all @samp{ffe_[a-z].*}, @samp{ffe[A-Z].*},
-and @samp{FFE_[A-Za-z].*} symbols.
-
-The file @file{fini.c} is a @code{main()} program that is used when building
-the FFE to generate C header and source files for recognizing keywords.
-The files @file{malloc.c} and @file{malloc.h} comprise a memory manager
-that defines all @samp{malloc_[a-z].*}, @samp{malloc[A-Z].*}, and
-@samp{MALLOC_[A-Za-z].*} symbols.
-
-All other modules named @var{xyz}
-are comprised of all files named @samp{@var{xyz}*.@var{ext}}
-and define all @samp{ffe@var{xyz}_[a-z].*}, @samp{ffe@var{xyz}[A-Z].*},
-and @samp{FFE@var{XYZ}_[A-Za-z].*} symbols.
-If you understand all this, congratulations---it's easier for me to remember
-how it works than to type in these regular expressions.
-But it does make it easy to find where a symbol is defined.
-For example, the symbol @samp{ffexyz_set_something} would be defined
-in @file{xyz.h} and implemented there (if it's a macro) or in @file{xyz.c}.
-
-The ``porting'' files of note currently are:
-
-@table @file
-@item proj.c
-@itemx proj.h
-This defines the ``language'' used by all the other source files,
-the language being Standard C plus some useful things
-like @code{ARRAY_SIZE} and such.
-
-@item target.c
-@itemx target.h
-These describe the target machine
-in terms of what data types are supported,
-how they are denoted
-(to what C type does an @code{INTEGER*8} map, for example),
-how to convert between them,
-and so on.
-Over time, versions of @code{g77} rely less on this file
-and more on run-time configuration based on GBE info
-in @file{com.c}.
-
-@item com.c
-@itemx com.h
-These are the primary interface to the GBE.
-
-@item ste.c
-@itemx ste.h
-This contains code for implementing recognized executable statements
-in the GBE.
-
-@item src.c
-@itemx src.h
-These contain information on the format(s) of source files
-(such as whether they are never to be processed as case-insensitive
-with regard to Fortran keywords).
-@end table
-
-If you want to debug the @file{f771} executable,
-for example if it crashes,
-note that the global variables @code{lineno} and @code{input_filename}
-are usually set to reflect the current line being read by the lexer
-during the first-pass analysis of a program unit and to reflect
-the current line being processed during the second-pass compilation
-of a program unit.
-
-If an invocation of the function @code{ffestd_exec_end} is on the stack,
-the compiler is in the second pass, otherwise it is in the first.
-
-(This information might help you reduce a test case and/or work around
-a bug in @code{g77} until a fix is available.)
-
-@node Overview of Translation Process
-@section Overview of Translation Process
-
-The order of phases translating source code to the form accepted
-by the GBE is:
-
-@enumerate
-@item
-Stripping punched-card sources (@file{g77stripcard.c})
-
-@item
-Lexing (@file{lex.c})
-
-@item
-Stand-alone statement identification (@file{sta.c})
-
-@item
-Parsing (@file{stb.c} and @file{expr.c})
-
-@item
-Constructing (@file{stc.c})
-
-@item
-Collecting (@file{std.c})
-
-@item
-Expanding (@file{ste.c})
-@end enumerate
-
-To get a rough idea of how a particularly twisted Fortran statement
-gets treated by the passes, consider:
-
-@smallexample
- FORMAT(I2 4H)=(J/
- & I3)
-@end smallexample
-
-The job of @file{lex.c} is to know enough about Fortran syntax rules
-to break the statement up into distinct lexemes without requiring
-any feedback from subsequent phases:
-
-@smallexample
-`FORMAT'
-`('
-`I24H'
-`)'
-`='
-`('
-`J'
-`/'
-`I3'
-`)'
-@end smallexample
-
-The job of @file{sta.c} is to figure out the kind of statement,
-or, at least, statement form, that sequence of lexemes represent.
-
-The sooner it can do this (in terms of using the smallest number of
-lexemes, starting with the first for each statement), the better,
-because that leaves diagnostics for problems beyond the recognition
-of the statement form to subsequent phases,
-which can usually better describe the nature of the problem.
-
-In this case, the @samp{=} at ``level zero''
-(not nested within parentheses)
-tells @file{sta.c} that this is an @emph{assignment-form},
-not @code{FORMAT}, statement.
-
-An assignment-form statement might be a statement-function
-definition or an executable assignment statement.
-
-To make that determination,
-@file{sta.c} looks at the first two lexemes.
-
-Since the second lexeme is @samp{(},
-the first must represent an array for this to be an assignment statement,
-else it's a statement function.
-
-Either way, @file{sta.c} hands off the statement to @file{stb.c}
-(either its statement-function parser or its assignment-statement parser).
-
-@file{stb.c} forms a
-statement-specific record containing the pertinent information.
-That information includes a source expression and,
-for an assignment statement, a destination expression.
-Expressions are parsed by @file{expr.c}.
-
-This record is passed to @file{stc.c},
-which copes with the implications of the statement
-within the context established by previous statements.
-
-For example, if it's the first statement in the file
-or after an @code{END} statement,
-@file{stc.c} recognizes that, first of all,
-a main program unit is now being lexed
-(and tells that to @file{std.c}
-before telling it about the current statement).
-
-@file{stc.c} attaches whatever information it can,
-usually derived from the context established by the preceding statements,
-and passes the information to @file{std.c}.
-
-@file{std.c} saves this information away,
-since the GBE cannot cope with information
-that might be incomplete at this stage.
-
-For example, @samp{I3} might later be determined
-to be an argument to an alternate @code{ENTRY} point.
-
-When @file{std.c} is told about the end of an external (top-level)
-program unit,
-it passes all the information it has saved away
-on statements in that program unit
-to @file{ste.c}.
-
-@file{ste.c} ``expands'' each statement, in sequence, by
-constructing the appropriate GBE information and calling
-the appropriate GBE routines.
-
-Details on the transformational phases follow.
-Keep in mind that Fortran numbering is used,
-so the first character on a line is column 1,
-decimal numbering is used, and so on.
-
-@menu
-* g77stripcard::
-* lex.c::
-* sta.c::
-* stb.c::
-* expr.c::
-* stc.c::
-* std.c::
-* ste.c::
-
-* Gotchas (Transforming)::
-* TBD (Transforming)::
-@end menu
-
-@node g77stripcard
-@subsection g77stripcard
-
-The @code{g77stripcard} program handles removing content beyond
-column 72 (adjustable via a command-line option),
-optionally warning about that content being something other
-than trailing whitespace or Fortran commentary.
-
-This program is needed because @code{lex.c} doesn't pay attention
-to maximum line lengths at all, to make it easier to maintain,
-as well as faster (for sources that don't depend on the maximum
-column length vis-a-vis trailing non-blank non-commentary content).
-
-Just how this program will be run---whether automatically for
-old source (perhaps as the default for @file{.f} files?)---is not
-yet determined.
-
-In the meantime, it might as well be implemented as a typical UNIX pipe.
-
-It should accept a @samp{-fline-length-@var{n}} option,
-with the default line length set to 72.
-
-When the text it strips off the end of a line is not blank
-(not spaces and tabs),
-it should insert an additional comment line
-(beginning with @samp{!},
-so it works for both fixed-form and free-form files)
-containing the text,
-following the stripped line.
-The inserted comment should have a prefix of some kind,
-TBD, that distinguishes the comment as representing stripped text.
-Users could use that to @code{sed} out such lines, if they wished---it
-seems silly to provide a command-line option to delete information
-when it can be so easily filtered out by another program.
-
-(This inserted comment should be designed to ``fit in'' well
-with whatever the Fortran community is using these days for
-preprocessor, translator, and other such products, like OpenMP.
-What that's all about, and how @code{g77} can elegantly fit its
-special comment conventions into it all, is TBD as well.
-We don't want to reinvent the wheel here, but if there turn out
-to be too many conflicting conventions, we might have to invent
-one that looks nothing like the others, but which offers their
-host products a better infrastructure in which to fit and coexist
-peacefully.)
-
-@code{g77stripcard} probably shouldn't do any tab expansion or other
-fancy stuff.
-People can use @code{expand} or other pre-filtering if they like.
-The idea here is to keep each stage quite simple, while providing
-excellent performance for ``normal'' code.
-
-(Code with junk beyond column 73 is not really ``normal'',
-as it comes from a card-punch heritage,
-and will be increasingly hard for tomorrow's Fortran programmers to read.)
-
-@node lex.c
-@subsection lex.c
-
-To help make the lexer simple, fast, and easy to maintain,
-while also having @code{g77} generally encourage Fortran programmers
-to write simple, maintainable, portable code by maximizing the
-performance of compiling that kind of code:
-
-@itemize @bullet
-@item
-There'll be just one lexer, for both fixed-form and free-form source.
-
-@item
-It'll care about the form only when handling the first 7 columns of
-text, stuff like spaces between strings of alphanumerics, and
-how lines are continued.
-
-Some other distinctions will be handled by subsequent phases,
-so at least one of them will have to know which form is involved.
-
-For example, @samp{I = 2 . 4} is acceptable in fixed form,
-and works in free form as well given the implementation @code{g77}
-presently uses.
-But the standard requires a diagnostic for it in free form,
-so the parser has to be able to recognize that
-the lexemes aren't contiguous
-(information the lexer @emph{does} have to provide)
-and that free-form source is being parsed,
-so it can provide the diagnostic.
-
-The @code{g77} lexer doesn't try to gather @samp{2 . 4} into a single lexeme.
-Otherwise, it'd have to know a whole lot more about how to parse Fortran,
-or subsequent phases (mainly parsing) would have two paths through
-lots of critical code---one to handle the lexeme @samp{2}, @samp{.},
-and @samp{4} in sequence, another to handle the lexeme @samp{2.4}.
-
-@item
-It won't worry about line lengths
-(beyond the first 7 columns for fixed-form source).
-
-That is, once it starts parsing the ``statement'' part of a line
-(column 7 for fixed-form, column 1 for free-form),
-it'll keep going until it finds a newline,
-rather than ignoring everything past a particular column
-(72 or 132).
-
-The implication here is that there shouldn't @emph{be}
-anything past that last column, other than whitespace or
-commentary, because users using typical editors
-(or viewing output as typically printed)
-won't necessarily know just where the last column is.
-
-Code that has ``garbage'' beyond the last column
-(almost certainly only fixed-form code with a punched-card legacy,
-such as code using columns 73-80 for ``sequence numbers'')
-will have to be run through @code{g77stripcard} first.
-
-Also, keeping track of the maximum column position while also watching out
-for the end of a line @emph{and} while reading from a file
-just makes things slower.
-Since a file must be read, and watching for the end of the line
-is necessary (unless the typical input file was preprocessed to
-include the necessary number of trailing spaces),
-dropping the tracking of the maximum column position
-is the only way to reduce the complexity of the pertinent code
-while maintaining high performance.
-
-@item
-ASCII encoding is assumed for the input file.
-
-Code written in other character sets will have to be converted first.
-
-@item
-Tabs (ASCII code 9)
-will be converted to spaces via the straightforward
-approach.
-
-Specifically, a tab is converted to between one and eight spaces
-as necessary to reach column @var{n},
-where dividing @samp{(@var{n} - 1)} by eight
-results in a remainder of zero.
-
-@item
-Linefeeds (ASCII code 10)
-mark the ends of lines.
-
-@item
-A carriage return (ASCII code 13)
-is accept if it immediately precedes a linefeed,
-in which case it is ignored.
-
-Otherwise, it is rejected (with a diagnostic).
-
-@item
-Any other characters other than the above
-that are not part of the GNU Fortran Character Set
-(@pxref{Character Set})
-are rejected with a diagnostic.
-
-This includes backspaces, form feeds, and the like.
-
-(It might make sense to allow a form feed in column 1
-as long as that's the only character on a line.
-It certainly wouldn't seem to cost much in terms of performance.)
-
-@item
-The end of the input stream (EOF)
-ends the current line.
-
-@item
-The distinction between uppercase and lowercase letters
-will be preserved.
-
-It will be up to subsequent phases to decide to fold case.
-
-Current plans are to permit any casing for Fortran (reserved) keywords
-while preserving casing for user-defined names.
-(This might not be made the default for @file{.f} files, though.)
-
-Preserving case seems necessary to provide more direct access
-to facilities outside of @code{g77}, such as to C or Pascal code.
-
-Names of intrinsics will probably be matchable in any case,
-However, there probably won't be any option to require
-a particular mixed-case appearance of intrinsics
-(as there was for @code{g77} prior to version 0.6),
-because that's painful to maintain,
-and probably nobody uses it.
-
-(How @samp{external SiN; r = sin(x)} would be handled is TBD.
-I think old @code{g77} might already handle that pretty elegantly,
-but whether we can cope with allowing the same fragment to reference
-a @emph{different} procedure, even with the same interface,
-via @samp{s = SiN(r)}, needs to be determined.
-If it can't, we need to make sure that when code introduces
-a user-defined name, any intrinsic matching that name
-using a case-insensitive comparison
-is ``turned off''.)
-
-@item
-Backslashes in @code{CHARACTER} and Hollerith constants
-are not allowed.
-
-This avoids the confusion introduced by some Fortran compiler vendors
-providing C-like interpretation of backslashes,
-while others provide straight-through interpretation.
-
-Some kind of lexical construct (TBD) will be provided to allow
-flagging of a @code{CHARACTER}
-(but probably not a Hollerith)
-constant that permits backslashes.
-It'll necessarily be a prefix, such as:
-
-@smallexample
-PRINT *, C'This line has a backspace \b here.'
-PRINT *, F'This line has a straight backslash \ here.'
-@end smallexample
-
-Further, command-line options might be provided to specify that
-one prefix or the other is to be assumed as the default
-for @code{CHARACTER} constants.
-
-However, it seems more helpful for @code{g77} to provide a program
-that converts prefix all constants
-(or just those containing backslashes)
-with the desired designation,
-so printouts of code can be read
-without knowing the compile-time options used when compiling it.
-
-If such a program is provided
-(let's name it @code{g77slash} for now),
-then a command-line option to @code{g77} should not be provided.
-(Though, given that it'll be easy to implement, it might be hard
-to resist user requests for it ``to compile faster than if we
-have to invoke another filter''.)
-
-This program would take a command-line option to specify the
-default interpretation of slashes,
-affecting which prefix it uses for constants.
-
-@code{g77slash} probably should automatically convert Hollerith
-constants that contain slashes
-to the appropriate @code{CHARACTER} constants.
-Then @code{g77} wouldn't have to define a prefix syntax for Hollerith
-constants specifying whether they want C-style or straight-through
-backslashes.
-@end itemize
-
-The above implements nearly exactly what is specified by
-@ref{Character Set},
-and
-@ref{Lines},
-except it also provides automatic conversion of tabs
-and ignoring of newline-related carriage returns.
-
-It also effects the ``pure visual'' model,
-by which is meant that a user viewing his code
-in a typical text editor
-(assuming it's not preprocessed via @code{g77stripcard} or similar)
-doesn't need any special knowledge
-of whether spaces on the screen are really tabs,
-whether lines end immediately after the last visible non-space character
-or after a number of spaces and tabs that follow it,
-or whether the last line in the file is ended by a newline.
-
-Most editors don't make these distinctions,
-the ANSI FORTRAN 77 standard doesn't require them to,
-and it permits a standard-conforming compiler
-to define a method for transforming source code to
-``standard form'' however it wants.
-
-So, GNU Fortran defines it such that users have the best chance
-of having the code be interpreted the way it looks on the screen
-of the typical editor.
-
-(Fancy editors should @emph{never} be required to correctly read code
-written in classic two-dimensional-plaintext form.
-By correct reading I mean ability to read it, book-like, without
-mistaking text ignored by the compiler for program code and vice versa,
-and without having to count beyond the first several columns.
-The vague meaning of ASCII TAB, among other things, complicates
-this somewhat, but as long as ``everyone'', including the editor,
-other tools, and printer, agrees about the every-eighth-column convention,
-the GNU Fortran ``pure visual'' model meets these requirements.
-Any language or user-visible source form
-requiring special tagging of tabs,
-the ends of lines after spaces/tabs,
-and so on, is broken by this definition.
-Fortunately, Fortran @emph{itself} is not broken,
-even if most vendor-supplied defaults for their Fortran compilers @emph{are}
-in this regard.)
-
-Further, this model provides a clean interface
-to whatever preprocessors or code-generators are used
-to produce input to this phase of @code{g77}.
-Mainly, they need not worry about long lines.
-
-@node sta.c
-@subsection sta.c
-
-@node stb.c
-@subsection stb.c
-
-@node expr.c
-@subsection expr.c
-
-@node stc.c
-@subsection stc.c
-
-@node std.c
-@subsection std.c
-
-@node ste.c
-@subsection ste.c
-
-@node Gotchas (Transforming)
-@subsection Gotchas (Transforming)
-
-This section is not about transforming ``gotchas'' into something else.
-It is about the weirder aspects of transforming Fortran,
-however that's defined,
-into a more modern, canonical form.
-
-@subsubsection Multi-character Lexemes
-
-Each lexeme carries with it a pointer to where it appears in the source.
-
-To provide the ability for diagnostics to point to column numbers,
-in addition to line numbers and names,
-lexemes that represent more than one (significant) character
-in the source code need, generally,
-to provide pointers to where each @emph{character} appears in the source.
-
-This provides the ability to properly identify the precise location
-of the problem in code like
-
-@smallexample
-SUBROUTINE X
-END
-BLOCK DATA X
-END
-@end smallexample
-
-which, in fixed-form source, would result in single lexemes
-consisting of the strings @samp{SUBROUTINEX} and @samp{BLOCKDATAX}.
-(The problem is that @samp{X} is defined twice,
-so a pointer to the @samp{X} in the second definition,
-as well as a follow-up pointer to the corresponding pointer in the first,
-would be preferable to pointing to the beginnings of the statements.)
-
-This need also arises when parsing (and diagnosing) @code{FORMAT}
-statements.
-
-Further, it arises when diagnosing
-@code{FMT=} specifiers that contain constants
-(or partial constants, or even propagated constants!)
-in I/O statements, as in:
-
-@smallexample
-PRINT '(I2, 3HAB)', J
-@end smallexample
-
-(A pointer to the beginning of the prematurely-terminated Hollerith
-constant, and/or to the close parenthese, is preferable to a pointer
-to the open-parenthese or the apostrophe that precedes it.)
-
-Multi-character lexemes, which would seem to naturally include
-at least digit strings, alphanumeric strings, @code{CHARACTER}
-constants, and Hollerith constants, therefore need to provide
-location information on each character.
-(Maybe Hollerith constants don't, but it's unnecessary to except them.)
-
-The question then arises, what about @emph{other} multi-character lexemes,
-such as @samp{**} and @samp{//},
-and Fortran 90's @samp{(/}, @samp{/)}, @samp{::}, and so on?
-
-Turns out there's a need to identify the location of the second character
-of these two-character lexemes.
-For example, in @samp{I(/J) = K}, the slash needs to be diagnosed
-as the problem, not the open parenthese.
-Similarly, it is preferable to diagnose the second slash in
-@samp{I = J // K} rather than the first, given the implicit typing
-rules, which would result in the compiler disallowing the attempted
-concatenation of two integers.
-(Though, since that's more of a semantic issue,
-it's not @emph{that} much preferable.)
-
-Even sequences that could be parsed as digit strings could use location info,
-for example, to diagnose the @samp{9} in the octal constant @samp{O'129'}.
-(This probably will be parsed as a character string,
-to be consistent with the parsing of @samp{Z'129A'}.)
-
-To avoid the hassle of recording the location of the second character,
-while also preserving the general rule that each significant character
-is distinctly pointed to by the lexeme that contains it,
-it's best to simply not have any fixed-size lexemes
-larger than one character.
-
-This new design is expected to make checking for two
-@samp{*} lexemes in a row much easier than the old design,
-so this is not much of a sacrifice.
-It probably makes the lexer much easier to implement
-than it makes the parser harder.
-
-@subsubsection Space-padding Lexemes
-
-Certain lexemes need to be padded with virtual spaces when the
-end of the line (or file) is encountered.
-
-This is necessary in fixed form, to handle lines that don't
-extend to column 72, assuming that's the line length in effect.
-
-@subsubsection Bizarre Free-form Hollerith Constants
-
-Last I checked, the Fortran 90 standard actually required the compiler
-to silently accept something like
-
-@smallexample
-FORMAT ( 1 2 Htwelve chars )
-@end smallexample
-
-as a valid @code{FORMAT} statement specifying a twelve-character
-Hollerith constant.
-
-The implication here is that, since the new lexer is a zero-feedback one,
-it won't know that the special case of a @code{FORMAT} statement being parsed
-requires apparently distinct lexemes @samp{1} and @samp{2} to be treated as
-a single lexeme.
-
-(This is a horrible misfeature of the Fortran 90 language.
-It's one of many such misfeatures that almost make me want
-to not support them, and forge ahead with designing a new
-``GNU Fortran'' language that has the features,
-but not the misfeatures, of Fortran 90,
-and provide utility programs to do the conversion automatically.)
-
-So, the lexer must gather distinct chunks of decimal strings into
-a single lexeme in contexts where a single decimal lexeme might
-start a Hollerith constant.
-
-(Which probably means it might as well do that all the time
-for all multi-character lexemes, even in free-form mode,
-leaving it to subsequent phases to pull them apart as they see fit.)
-
-Compare the treatment of this to how
-
-@smallexample
-CHARACTER * 4 5 HEY
-@end smallexample
-
-and
-
-@smallexample
-CHARACTER * 12 HEY
-@end smallexample
-
-must be treated---the former must be diagnosed, due to the separation
-between lexemes, the latter must be accepted as a proper declaration.
-
-@subsubsection Hollerith Constants
-
-Recognizing a Hollerith constant---specifically,
-that an @samp{H} or @samp{h} after a digit string begins
-such a constant---requires some knowledge of context.
-
-Hollerith constants (such as @samp{2HAB}) can appear after:
-
-@itemize @bullet
-@item
-@samp{(}
-
-@item
-@samp{,}
-
-@item
-@samp{=}
-
-@item
-@samp{+}, @samp{-}, @samp{/}
-
-@item
-@samp{*}, except as noted below
-@end itemize
-
-Hollerith constants don't appear after:
-
-@itemize @bullet
-@item
-@samp{CHARACTER*},
-which can be treated generally as
-any @samp{*} that is the second lexeme of a statement
-@end itemize
-
-@subsubsection Confusing Function Keyword
-
-While
-
-@smallexample
-REAL FUNCTION FOO ()
-@end smallexample
-
-must be a @code{FUNCTION} statement and
-
-@smallexample
-REAL FUNCTION FOO (5)
-@end smallexample
-
-must be a type-definition statement,
-
-@smallexample
-REAL FUNCTION FOO (@var{names})
-@end smallexample
-
-where @var{names} is a comma-separated list of names,
-can be one or the other.
-
-The only way to disambiguate that statement
-(short of mandating free-form source or a short maximum
-length for name for external procedures)
-is based on the context of the statement.
-
-In particular, the statement is known to be within an
-already-started program unit
-(but not at the outer level of the @code{CONTAINS} block),
-it is a type-declaration statement.
-
-Otherwise, the statement is a @code{FUNCTION} statement,
-in that it begins a function program unit
-(external, or, within @code{CONTAINS}, nested).
-
-@subsubsection Weird READ
-
-The statement
-
-@smallexample
-READ (N)
-@end smallexample
-
-is equivalent to either
-
-@smallexample
-READ (UNIT=(N))
-@end smallexample
-
-or
-
-@smallexample
-READ (FMT=(N))
-@end smallexample
-
-depending on which would be valid in context.
-
-Specifically, if @samp{N} is type @code{INTEGER},
-@samp{READ (FMT=(N))} would not be valid,
-because parentheses may not be used around @samp{N},
-whereas they may around it in @samp{READ (UNIT=(N))}.
-
-Further, if @samp{N} is type @code{CHARACTER},
-the opposite is true---@samp{READ (UNIT=(N))} is not valid,
-but @samp{READ (FMT=(N))} is.
-
-Strictly speaking, if anything follows
-
-@smallexample
-READ (N)
-@end smallexample
-
-in the statement, whether the first lexeme after the close
-parenthese is a comma could be used to disambiguate the two cases,
-without looking at the type of @samp{N},
-because the comma is required for the @samp{READ (FMT=(N))}
-interpretation and disallowed for the @samp{READ (UNIT=(N))}
-interpretation.
-
-However, in practice, many Fortran compilers allow
-the comma for the @samp{READ (UNIT=(N))}
-interpretation anyway
-(in that they generally allow a leading comma before
-an I/O list in an I/O statement),
-and much code takes advantage of this allowance.
-
-(This is quite a reasonable allowance, since the
-juxtaposition of a comma-separated list immediately
-after an I/O control-specification list, which is also comma-separated,
-without an intervening comma,
-looks sufficiently ``wrong'' to programmers
-that they can't resist the itch to insert the comma.
-@samp{READ (I, J), K, L} simply looks cleaner than
-@samp{READ (I, J) K, L}.)
-
-So, type-based disambiguation is needed unless strict adherence
-to the standard is always assumed, and we're not going to assume that.
-
-@node TBD (Transforming)
-@subsection TBD (Transforming)
-
-Continue researching gotchas, designing the transformational process,
-and implementing it.
-
-Specific issues to resolve:
-
-@itemize @bullet
-@item
-Just where should @code{INCLUDE} processing take place?
-
-Clearly before (or part of) statement identification (@file{sta.c}),
-since determining whether @samp{I(J)=K} is a statement-function
-definition or an assignment statement requires knowing the context,
-which in turn requires having processed @code{INCLUDE} files.
-
-@item
-Just where should (if it was implemented) @code{USE} processing take place?
-
-This gets into the whole issue of how @code{g77} should handle the concept
-of modules.
-I think GNAT already takes on this issue, but don't know more than that.
-Jim Giles has written extensively on @code{comp.lang.fortran}
-about his opinions on module handling, as have others.
-Jim's views should be taken into account.
-
-Actually, Richard M. Stallman (RMS) also has written up
-some guidelines for implementing such things,
-but I'm not sure where I read them.
-Perhaps the old @email{gcc2@@cygnus.com} list.
-
-If someone could dig references to these up and get them to me,
-that would be much appreciated!
-Even though modules are not on the short-term list for implementation,
-it'd be helpful to know @emph{now} how to avoid making them harder to
-implement them @emph{later}.
-
-@item
-Should the @code{g77} command become just a script that invokes
-all the various preprocessing that might be needed,
-thus making it seem slower than necessary for legacy code
-that people are unwilling to convert,
-or should we provide a separate script for that,
-thus encouraging people to convert their code once and for all?
-
-At least, a separate script to behave as old @code{g77} did,
-perhaps named @code{g77old}, might ease the transition,
-as might a corresponding one that converts source codes
-named @code{g77oldnew}.
-
-These scripts would take all the pertinent options @code{g77} used
-to take and run the appropriate filters,
-passing the results to @code{g77} or just making new sources out of them
-(in a subdirectory, leaving the user to do the dirty deed of
-moving or copying them over the old sources).
-
-@item
-Do other Fortran compilers provide a prefix syntax
-to govern the treatment of backslashes in @code{CHARACTER}
-(or Hollerith) constants?
-
-Knowing what other compilers provide would help.
-
-@item
-Is it okay to drop support for the @samp{-fintrin-case-initcap},
-@samp{-fmatch-case-initcap}, @samp{-fsymbol-case-initcap},
-and @samp{-fcase-initcap} options?
-
-I've asked @email{info-gnu-fortran@@gnu.org} for input on this.
-Not having to support these makes it easier to write the new front end,
-and might also avoid complicated its design.
-@end itemize
-
@node Philosophy of Code Generation
@section Philosophy of Code Generation
@@ -1508,7 +476,7 @@ Further, after the @code{SYSTEM_CLOCK} library routine returns,
the compiler must ensure that the temporary variable it wrote
is copied into the appropriate element of the @samp{CLOCKS} array.
(This assumes the compiler doesn't just reject the code,
-which it should if it is compiling under some kind of a ``strict'' option.)
+which it should if it is compiling under some kind of a "strict" option.)
@item
To determine the correct index into the @samp{CLOCKS} array,
@@ -1914,111 +882,6 @@ to hold the value of the expression.
@item
Other stuff???
-@end itemize
-
-@node Internal Naming Conventions
-@section Internal Naming Conventions
-
-Names exported by FFE modules have the following (regular-expression) forms.
-Note that all names beginning @code{ffe@var{mod}} or @code{FFE@var{mod}},
-where @var{mod} is lowercase or uppercase alphanumerics, respectively,
-are exported by the module @code{ffe@var{mod}},
-with the source code doing the exporting in @file{@var{mod}.h}.
-(Usually, the source code for the implementation is in @file{@var{mod}.c}.)
-
-Identifiers that don't fit the following forms
-are not considered exported,
-even if they are according to the C language.
-(For example, they might be made available to other modules
-solely for use within expansions of exported macros,
-not for use within any source code in those other modules.)
-
-@table @code
-@item ffe@var{mod}
-The single typedef exported by the module.
-
-@item FFE@var{umod}_[A-Z][A-Z0-9_]*
-(Where @var{umod} is the uppercase for of @var{mod}.)
-
-A @code{#define} or @code{enum} constant of the type @code{ffe@var{mod}}.
-
-@item ffe@var{mod}[A-Z][A-Z][a-z0-9]*
-A typedef exported by the module.
-
-The portion of the identifier after @code{ffe@var{mod}} is
-referred to as @code{ctype}, a capitalized (mixed-case) form
-of @code{type}.
-
-@item FFE@var{umod}_@var{type}[A-Z][A-Z0-9_]*[A-Z0-9]?
-(Where @var{umod} is the uppercase for of @var{mod}.)
-
-A @code{#define} or @code{enum} constant of the type
-@code{ffe@var{mod}@var{type}},
-where @var{type} is the lowercase form of @var{ctype}
-in an exported typedef.
-
-@item ffe@var{mod}_@var{value}
-A function that does or returns something,
-as described by @var{value} (see below).
-
-@item ffe@var{mod}_@var{value}_@var{input}
-A function that does or returns something based
-primarily on the thing described by @var{input} (see below).
-@end table
-
-Below are names used for @var{value} and @var{input},
-along with their definitions.
-@table @code
-@item col
-A column number within a line (first column is number 1).
-@item file
-An encapsulation of a file's name.
-
-@item find
-Looks up an instance of some type that matches specified criteria,
-and returns that, even if it has to create a new instance or
-crash trying to find it (as appropriate).
-
-@item initialize
-Initializes, usually a module. No type.
-
-@item int
-A generic integer of type @code{int}.
-
-@item is
-A generic integer that contains a true (non-zero) or false (zero) value.
-
-@item len
-A generic integer that contains the length of something.
-
-@item line
-A line number within a source file,
-or a global line number.
-
-@item lookup
-Looks up an instance of some type that matches specified criteria,
-and returns that, or returns nil.
-
-@item name
-A @code{text} that points to a name of something.
-
-@item new
-Makes a new instance of the indicated type.
-Might return an existing one if appropriate---if so,
-similar to @code{find} without crashing.
-
-@item pt
-Pointer to a particular character (line, column pairs)
-in the input file (source code being compiled).
-
-@item run
-Performs some herculean task. No type.
-
-@item terminate
-Terminates, usually a module. No type.
-
-@item text
-A @code{char *} that points to generic text.
-@end table
+@end itemize
diff --git a/gnu/egcs/gcc/f/g77.texi b/gnu/egcs/gcc/f/g77.texi
index eaab2543e6b..25070dbd5f8 100644
--- a/gnu/egcs/gcc/f/g77.texi
+++ b/gnu/egcs/gcc/f/g77.texi
@@ -2,7 +2,7 @@
@c %**start of header
@setfilename g77.info
-@set last-update 1999-06-06
+@set last-update 1999-05-13
@set copyrights-g77 1995-1999
@include root.texi
@@ -1471,7 +1471,7 @@ by type. Explanations are in the following sections.
-falias-check -fargument-alias
-fargument-noalias -fno-argument-noalias-global
-fno-globals -fflatten-arrays
--fbounds-check -ffortran-bounds-check
+-fsubscript-check -ff2c-subscript-check
@end smallexample
@end table
@@ -3386,10 +3386,10 @@ It is intended for use only by @code{g77} developers,
to evaluate code-generation issues.
It might be removed at any time.
-@cindex -fbounds-check option
-@cindex -ffortran-bounds-check option
-@item -fbounds-check
-@itemx -ffortran-bounds-check
+@cindex -fsubscript-check option
+@cindex -ff2c-subscript-check option
+@item -fsubscript-check
+@itemx -ff2c-subscript-check
@cindex bounds checking
@cindex range checking
@cindex array bounds checking
@@ -3414,12 +3414,12 @@ such as references to below the beginning of an assumed-size array.
@code{g77} also generates checks for @code{CHARACTER} substring references,
something @code{f2c} currently does not do.
-Use the new @samp{-ffortran-bounds-check} option
-to specify bounds-checking for only the Fortran code you are compiling,
-not necessarily for code written in other languages.
+Since a future version of @code{g77} might use a different implementation,
+use the new @samp{-ff2c-subscript-check} option
+if your application requires use of @code{s_rnge} or a compile-time diagnostic.
@emph{Note:} To provide more detailed information on the offending subscript,
-@code{g77} provides the @code{libg2c} run-time library routine @code{s_rnge}
+@code{g77} provides @code{s_rnge}
with somewhat differently-formatted information.
Here's a sample diagnostic:
@@ -4243,7 +4243,7 @@ stream-based text file is translated to GNU Fortran lines as follows:
A newline in the file is the character that represents the end of
a line of text to the underlying system.
For example, on ASCII-based systems, a newline is the @key{NL}
-character, which has ASCII value 10 (decimal).
+character, which has ASCII value 12 (decimal).
@item
Each newline in the file serves to end the line of text that precedes
@@ -10774,25 +10774,30 @@ compiler, typically @code{gcc}.)
@node Use Submodel Options
@subsection Use Submodel Options
+@cindex Pentium optimizations
+@cindex optimization, for Pentium
+@cindex 586/686 CPUs
@cindex submodels
Using an appropriate @samp{-m} option to generate specific code for your
CPU may be worthwhile, though it may mean the executable won't run on
other versions of the CPU that don't support the same instruction set.
@xref{Submodel Options,,Hardware Models and Configurations,gcc,Using and
-Porting GNU CC}. For instance on an x86 system the compiler might have
-been built---as shown by @samp{g77 -v}---for the target
-@samp{i386-pc-linux-gnu}, i.e.@: an @samp{i386} CPU@. In that case to
-generate code best optimized for a Pentium you could use the option
-@samp{-march=pentium}.
+Porting GNU CC}.
-For recent CPUs that don't have explicit support in the released version
-of @code{gcc}, it @emph{might} still be possible to get improvements
-with certain @samp{-m} options.
+For recent CPUs that don't have explicit support in
+the released version of @code{gcc}, it may still be possible to get
+improvements.
+For instance, the flags recommended for 586/686
+(Pentium(Pro)) chips for building the Linux kernel are:
-@samp{-fomit-frame-pointer} can help performance on x86 systems and
-others. It will, however, inhibit debugging on the systems on which it
-is not turned on anyway by @samp{-O}.
+@smallexample
+-m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2
+-fomit-frame-pointer
+@end smallexample
+
+@noindent @samp{-fomit-frame-pointer} will, however, inhibit debugging
+on x86 systems.
@node Trouble
@chapter Known Causes of Trouble with GNU Fortran
@@ -10921,7 +10926,7 @@ How to cope with such problems is well beyond the scope
of this manual.
However, users of Linux-based systems (such as GNU/Linux)
-should review @uref{http://www.bitwizard.nl/sig11/}, a source
+should review @uref{http://www.bitwizard.nl/sig11}, a source
of detailed information on diagnosing hardware problems,
by recognizing their common symptoms.
@@ -11173,7 +11178,7 @@ themselves as @emph{visible} problems some time later.
Overflowing the bounds of an array---usually by writing beyond
the end of it---is one of two kinds of bug that often occurs
in Fortran code.
-(Compile your code with the @samp{-fbounds-check} option
+(Compile your code with the @samp{-fsubscript-check} option
to catch many of these kinds of errors at program run time.)
The other kind of bug is a mismatch between the actual arguments
@@ -11335,13 +11340,13 @@ Goldberg, `What Every Computer Scientist Should Know About
Floating-Point Arithmetic', Computing Surveys, 23, March 1991, pp.@:
5-48.
An online version is available at
-@uref{http://docs.sun.com/},
+@uref{http://docs.sun.com},
and there is a supplemented version, in PostScript form, at
@uref{http://www.validgh.com/goldberg/paper.ps}.
Information related to the IEEE 754
floating-point standard by a leading light can be found at
-@uref{http://http.cs.berkeley.edu/%7Ewkahan/ieee754status/};
+@uref{http://http.cs.berkeley.edu/%7Ewkahan/ieee754status};
see also slides from the short course referenced from
@uref{http://http.cs.berkeley.edu/%7Efateman/}.
@uref{http://www.linuxsupportline.com/%7Ebillm/} has a brief
@@ -11413,7 +11418,6 @@ GNU Fortran dialects:
* Suppressing Space Padding::
* Fortran Preprocessor::
* Bit Operations on Floating-point Data::
-* Really Ugly Character Assignments::
New facilities:
* POSIX Standard::
@@ -11422,10 +11426,8 @@ New facilities:
* Large Automatic Arrays::
* Support for Threads::
* Increasing Precision/Range::
-* Enabling Debug Lines::
Better diagnostics:
-* Better Warnings::
* Gracefully Handle Sensible Bad Code::
* Non-standard Conversions::
* Non-standard Intrinsics::
@@ -11442,8 +11444,6 @@ Better diagnostics:
Run-time facilities:
* Uninitialized Variables at Run Time::
* Portable Unformatted Files::
-* Better List-directed I/O::
-* Default to Console I/O::
Debugging:
* Labels Visible to Debugger::
@@ -12094,24 +12094,6 @@ PRINT *, IAND(A, B)
END
@end smallexample
-@node Really Ugly Character Assignments
-@subsection Really Ugly Character Assignments
-
-An option such as @samp{-fugly-char} should be provided
-to allow
-
-@smallexample
-REAL*8 A1
-DATA A1 / '12345678' /
-@end smallexample
-
-and:
-
-@smallexample
-REAL*8 A1
-A1 = 'ABCDEFGH'
-@end smallexample
-
@node POSIX Standard
@subsection @code{POSIX} Standard
@@ -12192,73 +12174,6 @@ are thread-safe, nor does @code{g77} have support for parallel processing
processors).
A package such as PVM might help here.
-@node Enabling Debug Lines
-@subsection Enabling Debug Lines
-@cindex debug line
-@cindex comment line, debug
-
-An option such as @samp{-fdebug-lines} should be provided
-to turn fixed-form lines beginning with @samp{D}
-to be treated as if they began with a space,
-instead of as if they began with a @samp{C}
-(as comment lines).
-
-@node Better Warnings
-@subsection Better Warnings
-
-Because of how @code{g77} generates code via the back end,
-it doesn't always provide warnings the user wants.
-Consider:
-
-@smallexample
-PROGRAM X
-PRINT *, A
-END
-@end smallexample
-
-Currently, the above is not flagged as a case of
-using an uninitialized variable,
-because @code{g77} generates a run-time library call that looks,
-to the GBE, like it might actually @emph{modify} @samp{A} at run time.
-(And, in fact, depending on the previous run-time library call,
-it would!)
-
-Fixing this requires one of the following:
-
-@itemize @bullet
-@item
-Switch to new library, @code{libg77}, that provides
-a more ``clean'' interface,
-vis-a-vis input, output, and modified arguments,
-so the GBE can tell what's going on.
-
-This would provide a pretty big performance improvement,
-at least theoretically, and, ultimately, in practice,
-for some types of code.
-
-@item
-Have @code{g77} pass a pointer to a temporary
-containing a copy of @samp{A},
-instead of to @samp{A} itself.
-The GBE would then complain about the copy operation
-involving a potentially uninitialized variable.
-
-This might also provide a performance boost for some code,
-because @samp{A} might then end up living in a register,
-which could help with inner loops.
-
-@item
-Have @code{g77} use a GBE construct similar to @code{ADDR_EXPR}
-but with extra information on the fact that the
-item pointed to won't be modified
-(a la @code{const} in C).
-
-Probably the best solution for now, but not quite trivial
-to implement in the general case.
-Worth considering after @code{g77} 0.6 is considered
-pretty solid.
-@end itemize
-
@node Gracefully Handle Sensible Bad Code
@subsection Gracefully Handle Sensible Bad Code
@@ -12498,49 +12413,6 @@ only incur overhead when they are read on a system with a different
format.) A future @code{g77} runtime library should use such
techniques.
-@node Better List-directed I/O
-@subsection Better List-directed I/O
-
-Values output using list-directed I/O
-(@samp{PRINT *, R, D})
-should be written with a field width, precision, and so on
-appropriate for the type (precision) of each value.
-
-(Currently, no distinction is made between single-precision
-and double-precision values
-by @code{libf2c}.)
-
-It is likely this item will require the @code{libg77} project
-to be undertaken.
-
-In the meantime, use of formatted I/O is recommended.
-While it might be of little consolation,
-@code{g77} does support @samp{FORMAT(F<WIDTH>.4)}, for example,
-as long as @samp{WIDTH} is defined as a named constant
-(via @code{PARAMETER}).
-That at least allows some compile-time specification
-of the precision of a data type,
-perhaps controlled by preprocessing directives.
-
-@node Default to Console I/O
-@subsection Default to Console I/O
-
-The default I/O units,
-specified by @samp{READ @var{fmt}},
-@samp{READ (UNIT=*)},
-@samp{WRITE (UNIT=*)}, and
-@samp{PRINT @var{fmt}},
-should not be units 5 (input) and 6 (output),
-but, rather, unit numbers not normally available
-for use in statements such as @code{OPEN} and @code{CLOSE}.
-
-Changing this would allow a program to connect units 5 and 6
-to files via @code{OPEN},
-but still use @samp{READ (UNIT=*)} and @samp{PRINT}
-to do I/O to the ``console''.
-
-This change probably requires the @code{libg77} project.
-
@node Labels Visible to Debugger
@subsection Labels Visible to Debugger
@@ -13936,16 +13808,8 @@ the source code of @code{g77} and rebuilding.
How to do this depends on the version of @code{g77}:
@table @code
-@item G77 0.5.24 (EGCS 1.1)
-@itemx G77 0.5.25 (EGCS 1.2)
-Change the @code{lang_init_options} routine in @file{egcs/gcc/f/com.c}.
-
-(Note that these versions of @code{g77}
-perform internal consistency checking automatically
-when the @samp{-fversion} option is specified.)
-
-@item G77 0.5.23
-@itemx G77 0.5.24 (EGCS 1.0)
+@item EGCS-1.0
+@itemx FSF
Change the way @code{f771} handles the @samp{-fset-g77-defaults}
option, which is always provided as the first option when
called by @code{g77} or @code{gcc}.
@@ -13969,6 +13833,14 @@ It is in @file{@value{path-g77}/lang-specs.h} that @samp{-fset-g77-defaults},
even when the user has not explicitly specified them.
Other ``internal'' options such as @samp{-quiet} also
are passed via this mechanism.
+
+@item EGCS-1.1
+@itemx EGCS-1.2
+Change the @code{lang_init_options} routine in @file{egcs/gcc/f/com.c}.
+
+(Note that these versions of @code{g77}
+perform internal consistency checking automatically
+when the @samp{-fversion} option is specified.)
@end table
@node Projects
diff --git a/gnu/egcs/gcc/f/g77install.texi b/gnu/egcs/gcc/f/g77install.texi
index abc63963554..440829736c8 100644
--- a/gnu/egcs/gcc/f/g77install.texi
+++ b/gnu/egcs/gcc/f/g77install.texi
@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. INSTALL).
@set copyrights 1995-1999
-@set last-update-install 1999-07-17
+@set last-update-install 1999-05-10
@include root.texi
@@ -30,6 +30,7 @@ this copyright notice and permission notice.
@chapter Installing GNU Fortran
@end ifset
+@set version-gcc 2.8.1
@set version-autoconf 2.12
@set version-bison 1.25
@set version-gperf 2.5
@@ -49,22 +50,21 @@ this copyright notice and permission notice.
The following information describes how to install @code{g77}.
-@clear OMIT-FSF-G77
-
@ifset EGCS-G77
@set OMIT-FSF-G77
-@end ifset
-
-@ifset GCC-G77
-@set OMIT-FSF-G77
-@end ifset
-
-@ifset OMIT-FSF-G77
-Note that, for users of the @value{which-g77} version of @code{g77},
+Note that, for @code{egcs} users,
much of the information is obsolete,
and is superceded by the
-@value{which-gcc} installation procedures.
+@code{egcs} installation procedures.
Such information is accordingly omitted and flagged as such.
+@ifset DEVELOPMENT
+@ifclear DOC-INSTALL
+@clear OMIT-FSF-G77
+(It is not actually omitted from the development version of this documentation,
+so the @code{g77} developers can easily find all the documentation
+for all versions of @code{g77} in one place.)
+@end ifclear
+@end ifset
@end ifset
@ifclear OMIT-FSF-G77
@@ -112,10 +112,9 @@ The following information was last updated on @value{last-update-install}:
@section Prerequisites
@cindex prerequisites
-@ifset OMIT-FSF-G77
-For users of the @value{which-g77} version of @code{g77},
-this information is superceded by the
-@value{which-gcc} installation instructions.
+@ifset EGCS-G77
+For @code{egcs} users, this information is
+superceded by the @code{egcs} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
@@ -483,9 +482,9 @@ is not yet established.
@cindex @code{ld}, can't find _strtoul
@cindex SunOS4
-@ifset OMIT-FSF-G77
-This information does not apply to
-the @value{which-g77} version of @code{g77},
+@ifset EGCS-G77
+This information does not apply to the
+@code{egcs} version of @code{g77}.
@end ifset
@ifclear OMIT-FSF-G77
@@ -891,10 +890,9 @@ systems.
@section Quick Start
@cindex quick start
-@ifset OMIT-FSF-G77
-For users of the @value{which-g77} version of @code{g77},
-this information is superceded by the
-@value{which-gcc} installation instructions.
+@ifset EGCS-G77
+For @code{egcs} users, this information is
+superceded by the @code{egcs} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
@@ -1180,10 +1178,9 @@ Removing them can free up a lot of disk space.
@node Complete Installation
@section Complete Installation
-@ifset OMIT-FSF-G77
-For users of the @value{which-g77} version of @code{g77},
-this information is superceded by the
-@value{which-gcc} installation instructions.
+@ifset EGCS-G77
+For @code{egcs} users, this information is
+superceded by the @code{egcs} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
@@ -2051,10 +2048,9 @@ sh#
@cindex binaries, distributing
@cindex code, distributing
-@ifset OMIT-FSF-G77
-For users of the @value{which-g77} version of @code{g77},
-this information is superceded by the
-@value{which-gcc} installation instructions.
+@ifset EGCS-G77
+For @code{egcs} users, this information is
+superceded by the @code{egcs} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
diff --git a/gnu/egcs/gcc/f/lang-specs.h b/gnu/egcs/gcc/f/lang-specs.h
index f37d14d648e..9cdc8c48212 100644
--- a/gnu/egcs/gcc/f/lang-specs.h
+++ b/gnu/egcs/gcc/f/lang-specs.h
@@ -1,5 +1,5 @@
/* lang-specs.h file for Fortran
- Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997, 1999 Free Software Foundation, Inc.
Contributed by James Craig Burley.
This file is part of GNU Fortran.
@@ -35,10 +35,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
Sun f77, at least) so you test `__unix' rather than `unix'.
-D_LANGUAGE_FORTRAN is used by some compilers like SGI and
might as well be in there. */
- {"cpp0 -lang-c %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
+ {"cpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2}\
+ -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
%{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
%{!undef:%P} -D_LANGUAGE_FORTRAN %{trigraphs} \
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}} -traditional\
@@ -85,10 +85,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
%{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}\
%{!pipe:%g.s} %A\n }}}}"}},
{"@f77-version",
- {"cpp0 -lang-c %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I \
+ {"cpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I \
%{C:%{!E:%eGNU C does not support -C without using -E}} \
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG} \
- %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2} \
+ -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 \
%{ansi:-trigraphs -$ -D__STRICT_ANSI__} \
%{!undef:%P} -D_LANGUAGE_FORTRAN %{trigraphs} \
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}} -traditional \
diff --git a/gnu/egcs/gcc/f/news.texi b/gnu/egcs/gcc/f/news.texi
index a4b6d6837ad..0a4b8e4e137 100644
--- a/gnu/egcs/gcc/f/news.texi
+++ b/gnu/egcs/gcc/f/news.texi
@@ -9,7 +9,7 @@
@c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995-1999
-@set last-update-news 1999-07-08
+@set last-update-news 1999-05-13
@include root.texi
@@ -146,12 +146,12 @@ An online, ``live'' version of this document
(derived directly from the mainline, development version
of @code{g77} within @code{egcs})
is available at
-@uref{http://www.gnu.org/software/gcc/onlinedocs/g77_news.html}.
+@uref{http://egcs.cygnus.com/onlinedocs/g77_news.html}.
@end ifclear
The following information was last updated on @value{last-update-news}:
-@heading In 0.5.25, @code{GCC} 2.95 (@code{EGCS} 1.2) versus @code{EGCS} 1.1.2:
+@heading In @code{egcs} 1.2 (versus 1.1.2):
@itemize @bullet
@ifclear USERVISONLY
@item
@@ -186,36 +186,12 @@ in cases where such partial overlap is deemed possible.
@ifclear USERVISONLY
@item
-@code{libg2c} (@code{libf2c}) no longer loses track
-of the file being worked on
-during a @code{BACKSPACE} operation.
-@end ifclear
-
-@ifclear USERVISONLY
-@item
-@code{libg2c} (@code{libf2c}) fixes a bug whereby
-input to a @code{NAMELIST} read involving a repeat count,
-such as @samp{K(5)=10*3},
-was not properly handled by @code{libf2c}.
-The first item was written to @samp{K(5)},
-but the remaining nine were written elsewhere (still within the array),
-not necessarily starting at @samp{K(6)}.
-@end ifclear
-
-@ifclear USERVISONLY
-@item
@c Tim Prince reported this, regarding the TEST_FPU benchmark.
Automatic arrays now seem to be working on HP-UX systems.
@end ifclear
@ifclear USERVISONLY
@item
-The @code{Date} intrinsic now returns the correct result
-on big-endian systems.
-@end ifclear
-
-@ifclear USERVISONLY
-@item
Fix @code{g77} so it no longer crashes when compiling
I/O statements using keywords that define @code{INTEGER} values,
such as @samp{IOSTAT=@var{j}},
@@ -241,15 +217,15 @@ The @samp{-ax} option is now obeyed when compiling Fortran programs.
@end ifclear
@item
-The new @samp{-fbounds-check} option
+The new @samp{-fsubscript-check} option
causes @code{g77} to compile run-time bounds checks
of array subscripts, as well as of substring start and end points.
-@item
-@code{libg2c} now supports building as multilibbed library,
-which provides better support for systems
-that require options such as @samp{-mieee}
-to work properly.
+The current implementation uses the @code{libf2c}
+library routine @code{s_rnge} to print the diagnostic.
+Since a future version of @code{g77} might use a different implementation,
+use the new @samp{-ff2c-subscript-check} option
+if your application requires use of @code{s_rnge} or a compile-time diagnostic.
@item
Source file names with the suffixes @samp{.FOR} and @samp{.FPP}
@@ -269,7 +245,7 @@ of @code{libU77} intrinsics.
@item
@code{g77} now warns about a reference to an intrinsic
that has an interface that is not Year 2000 (Y2K) compliant.
-Also, @code{libg2c} has been changed to increase the likelihood
+Also, the @code{libg2c} has been changed to increase the likelihood
of catching references to the implementations of these intrinsics
using the @code{EXTERNAL} mechanism
(which would avoid the new warnings).
@@ -306,14 +282,6 @@ that are not in @code{EQUIVALENCE} areas
and not @code{SAVE}'d.
@end ifclear
-@ifclear USERVISONLY
-@item
-@code{g77} now open-codes (``inlines'') division of @code{COMPLEX} operands
-instead of generating a run-time call to
-the @code{libf2c} routines @code{c_div} or @code{z_div},
-unless the @samp{-Os} option is specified.
-@end ifclear
-
@item
@code{g77} no longer generates code to maintain @code{errno},
a C-language concept,
@@ -355,34 +323,7 @@ Upgrade to @code{libf2c} as of 1999-05-10.
@end ifclear
@end itemize
-@heading In 0.5.24 versus 0.5.23:
-
-There is no @code{g77} version 0.5.24 at this time,
-or planned.
-0.5.24 is the version number designated for bug fixes and,
-perhaps, some new features added,
-to 0.5.23.
-Version 0.5.23 requires @code{gcc} 2.8.1,
-as 0.5.24 was planned to require.
-
-Due to @code{EGCS} becoming @code{GCC}
-(which is now an acronym for ``GNU Compiler Collection''),
-and @code{EGCS} 1.2 becoming officially designated @code{GCC} 2.95,
-there seems to be no need for an actual 0.5.24 release.
-
-To reduce the confusion already resulting from use of 0.5.24
-to designate @code{g77} versions within @code{EGCS} versions 1.0 and 1.1,
-as well as in versions of @code{g77} documentation and notices
-during that period,
-``mainline'' @code{g77} version numbering resumes
-at 0.5.25 with @code{GCC} 2.95 (@code{EGCS} 1.2),
-skipping over 0.5.24 as a placeholder version number.
-
-To repeat, there is no @code{g77} 0.5.24, but there is now a 0.5.25.
-Please remain calm and return to your keypunch units.
-
-@c 1999-03-15: EGCS 1.1.2 released.
-@heading In @code{EGCS} 1.1.2 versus @code{EGCS} 1.1.1:
+@heading In 0.5.24 and @code{egcs} 1.1.2 (versus 0.5.23 and 1.1.1):
@ifclear USERVISONLY
@itemize @bullet
@item
@@ -411,8 +352,7 @@ Improve documentation.
@end itemize
@end ifclear
-@c 1998-12-04: EGCS 1.1.1 released.
-@heading In @code{EGCS} 1.1.1 versus @code{EGCS} 1.1:
+@heading In 0.5.24 and @code{egcs} 1.1.1 (versus 0.5.23 and 1.1):
@ifclear USERVISONLY
@itemize @bullet
@item
@@ -443,8 +383,54 @@ for the completion code to be set properly).
@end itemize
@end ifclear
-@c 1998-09-03: EGCS 1.1 released.
-@heading In @code{EGCS} 1.1 versus @code{EGCS} 1.0.3:
+@heading In @code{egcs} 1.1 (versus 0.5.24):
+@itemize @bullet
+@ifclear USERVISONLY
+@item
+Fix @code{g77} crash compiling code
+containing the construct @samp{CMPLX(0.)} or similar.
+@end ifclear
+
+@ifclear USERVISONLY
+@item
+Fix @code{g77} crash
+(or apparently infinite run-time)
+when compiling certain complicated expressions
+involving @code{COMPLEX} arithmetic
+(especially multiplication).
+@end ifclear
+
+@ifclear USERVISONLY
+@cindex DNRM2
+@cindex stack, 387 coprocessor
+@cindex Intel x86
+@cindex -O2
+@item
+Fix a code-generation bug that afflicted
+Intel x86 targets when @samp{-O2} was specified
+compiling, for example, an old version of
+the @code{DNRM2} routine.
+
+The x87 coprocessor stack was being
+mismanaged in cases involving assigned @code{GOTO}
+and @code{ASSIGN}.
+@end ifclear
+
+@cindex alignment
+@cindex double-precision performance
+@cindex -malign-double
+@item
+Align static double-precision variables and arrays
+on Intel x86 targets
+regardless of whether @samp{-malign-double} is specified.
+
+Generally, this affects only local variables and arrays
+having the @code{SAVE} attribute
+or given initial values via @code{DATA}.
+@end itemize
+
+@c 1998-09-01: egcs-1.1 released.
+@heading In @code{egcs} 1.1 (versus @code{egcs} 1.0.3):
@itemize @bullet
@ifclear USERVISONLY
@item
@@ -622,26 +608,9 @@ as well.
@end ifclear
@end itemize
-@c 1998-09-03: EGCS 1.1 released.
-@heading In @code{EGCS} 1.1 versus @code{g77} 0.5.23:
+@heading In 0.5.24 and @code{egcs} 1.1 (versus 0.5.23):
@itemize @bullet
@ifclear USERVISONLY
-@cindex DNRM2
-@cindex stack, 387 coprocessor
-@cindex Intel x86
-@cindex -O2
-@item
-Fix a code-generation bug that afflicted
-Intel x86 targets when @samp{-O2} was specified
-compiling, for example, an old version of
-the @code{DNRM2} routine.
-
-The x87 coprocessor stack was being
-mismanaged in cases involving assigned @code{GOTO}
-and @code{ASSIGN}.
-@end ifclear
-
-@ifclear USERVISONLY
@item
@code{g77} no longer produces incorrect code
and initial values
@@ -652,12 +621,6 @@ vis-a-vis their types, require initial padding.
@ifclear USERVISONLY
@item
-Fix @code{g77} crash compiling code
-containing the construct @samp{CMPLX(0.)} or similar.
-@end ifclear
-
-@ifclear USERVISONLY
-@item
@code{g77} no longer crashes when compiling code
containing specification statements such as
@samp{INTEGER(KIND=7) PTR}.
@@ -682,27 +645,6 @@ Previously, @code{g77} treated these expressions
as denoting special ``pointer'' arguments
for the purposes of filewide analysis.
-@ifclear USERVISONLY
-@item
-Fix @code{g77} crash
-(or apparently infinite run-time)
-when compiling certain complicated expressions
-involving @code{COMPLEX} arithmetic
-(especially multiplication).
-@end ifclear
-
-@cindex alignment
-@cindex double-precision performance
-@cindex -malign-double
-@item
-Align static double-precision variables and arrays
-on Intel x86 targets
-regardless of whether @samp{-malign-double} is specified.
-
-Generally, this affects only local variables and arrays
-having the @code{SAVE} attribute
-or given initial values via @code{DATA}.
-
@item
The @code{g77} driver now ensures that @samp{-lg2c}
is specified in the link phase prior to any
@@ -760,7 +702,7 @@ for such information.
@ifclear DOC-NEWS
@c 1998-05-20: 0.5.23 released.
-@heading In 0.5.23 versus 0.5.22:
+@heading In 0.5.23 (versus 0.5.22):
@itemize @bullet
@item
This release contains several regressions against
@@ -964,7 +906,7 @@ as well.
@end itemize
@c 1998-03-16: 0.5.22 released.
-@heading In 0.5.22 versus 0.5.21:
+@heading In 0.5.22 (versus 0.5.21):
@itemize @bullet
@ifclear USERVISONLY
@item
@@ -1154,8 +1096,8 @@ This fixes a formatted-I/O bug that afflicted
@end ifclear
@end itemize
-@c 1998-03-18: EGCS 1.0.2 released.
-@heading In @code{EGCS} 1.0.2 versus @code{EGCS} 1.0.1:
+@c 1998-03-15: egcs-1.0.2 released.
+@heading In @code{egcs} 1.0.2 (versus @code{egcs} 1.0.1):
@itemize @bullet
@ifclear USERVISONLY
@item
@@ -1200,8 +1142,8 @@ Fix compiler so it accepts @samp{-fgnu-intrinsics-*} and
@samp{-fbadu77-intrinsics-*} options.
@end itemize
-@c 1998-01-06: EGCS 1.0.1 released.
-@heading In @code{EGCS} 1.0.1 versus @code{EGCS} 1.0:
+@c 1998-01-02: egcs-1.0.1 released.
+@heading In @code{egcs} 1.0.1 (versus @code{egcs} 1.0):
@ifclear USERVISONLY
@itemize @bullet
@item
@@ -1210,8 +1152,8 @@ machines such as Alphas.
@end itemize
@end ifclear
-@c 1997-12-03: EGCS 1.0 released.
-@heading In @code{EGCS} 1.0 versus @code{g77} 0.5.21:
+@c 1997-12-03: egcs-1.0 released.
+@heading In @code{egcs} 1.0 (versus 0.5.21):
@itemize @bullet
@item
Version 1.0 of @code{egcs}
diff --git a/gnu/egcs/gcc/f/root.texi b/gnu/egcs/gcc/f/root.texi
index dce97c07d43..fd21eb76381 100644
--- a/gnu/egcs/gcc/f/root.texi
+++ b/gnu/egcs/gcc/f/root.texi
@@ -2,38 +2,32 @@
@c as compared to a release version. When making a release
@c (e.g. a release branch in the CVS repository for egcs),
@c clear this and set the version information correctly.
-@clear DEVELOPMENT
-@set version-g77 0.5.25
+@set DEVELOPMENT
+@set version-g77 0.5.24
@set version-egcs 1.2
-@set version-gcc 2.95
-@c GCC-G77 indicates this is the GCC (2.95 or later) version of g77.
-@set GCC-G77
+@c EGCS-G77 is set to indicate this is the EGCS version of g77.
+@set EGCS-G77
-@c EGCS-G77 indicates this is the EGCS (1.0 or 1.1) version of g77.
-@clear EGCS-G77
+@ifclear EGCS-G77
+@c FSF-G77 is set to indicate this is the FSF version of g77.
+@set FSF-G77
+@end ifclear
-@c FSF-G77 indicates this is the FSF (0.5.23 or earlier) version of g77.
-@clear FSF-G77
-
-@set email-general gcc@@gcc.gnu.org
-@set email-bugs gcc-bugs@@gcc.gnu.org or bug-gcc@@gnu.org
+@ifset EGCS-G77
+@set email-general egcs@@egcs.cygnus.com
+@set email-bugs egcs-bugs@@egcs.cygnus.com
@set path-g77 egcs/gcc/f
@set path-libf2c egcs/libf2c
-
-@ifset GCC-G77
-@set which-g77 GCC-@value{version-gcc}
-@set which-gcc GCC
-@end ifset
-
-@ifset EGCS-G77
@set which-g77 EGCS-@value{version-egcs}
-@set which-gcc EGCS
@end ifset
@ifset FSF-G77
+@set email-general fortran@@gnu.org
+@set email-bugs fortran@@gnu.org
+@set path-g77 gcc/f
+@set path-libf2c gcc/f/runtime
@set which-g77 FSF-@value{version-g77}
-@set which-gcc GCC
@end ifset
@set email-burley craig@@jcb-sc.com
diff --git a/gnu/egcs/gcc/f/stw.h b/gnu/egcs/gcc/f/stw.h
index 554d047e611..58818a61bf2 100644
--- a/gnu/egcs/gcc/f/stw.h
+++ b/gnu/egcs/gcc/f/stw.h
@@ -70,7 +70,7 @@ struct _ffestw_
ffewhereLine line_; /* Where first token of statement triggering
state */
ffewhereColumn col_; /* was seen in source file. */
- int uses_; /* # uses (new+use-kill calls). */
+ char uses_; /* # uses (new+use-kill calls). */
ffestvState state_;
int substate_; /* Used on a per-block-state basis. */
#if FFECOM_targetCURRENT == FFECOM_targetGCC
diff --git a/gnu/egcs/gcc/f/top.c b/gnu/egcs/gcc/f/top.c
index 07ddd83740c..0d6fb35e214 100644
--- a/gnu/egcs/gcc/f/top.c
+++ b/gnu/egcs/gcc/f/top.c
@@ -323,13 +323,13 @@ ffe_decode_option (argc, argv)
ffe_set_is_globals (TRUE);
else if (strcmp (&opt[2], "no-globals") == 0)
ffe_set_is_globals (FALSE);
- else if (strcmp (&opt[2], "bounds-check") == 0)
+ else if (strcmp (&opt[2], "subscript-check") == 0)
ffe_set_is_subscript_check (TRUE);
- else if (strcmp (&opt[2], "no-bounds-check") == 0)
+ else if (strcmp (&opt[2], "no-subscript-check") == 0)
ffe_set_is_subscript_check (FALSE);
- else if (strcmp (&opt[2], "fortran-bounds-check") == 0)
+ else if (strcmp (&opt[2], "f2c-subscript-check") == 0)
ffe_set_is_subscript_check (TRUE);
- else if (strcmp (&opt[2], "no-fortran-bounds-check") == 0)
+ else if (strcmp (&opt[2], "no-f2c-subscript-check") == 0)
ffe_set_is_subscript_check (FALSE);
else if (strcmp (&opt[2], "typeless-boz") == 0)
ffe_set_is_typeless_boz (TRUE);
diff --git a/gnu/egcs/gcc/f/version.c b/gnu/egcs/gcc/f/version.c
index 1b1cfd2bf96..6705384221d 100644
--- a/gnu/egcs/gcc/f/version.c
+++ b/gnu/egcs/gcc/f/version.c
@@ -1 +1 @@
-const char *ffe_version_string = "0.5.25 19991030 (prerelease)";
+const char *ffe_version_string = "0.5.24-19990513";
diff --git a/gnu/egcs/gcc/final.c b/gnu/egcs/gcc/final.c
index a9ae2804dbd..4695590dc5e 100644
--- a/gnu/egcs/gcc/final.c
+++ b/gnu/egcs/gcc/final.c
@@ -999,9 +999,7 @@ shorten_branches (first)
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
{
rtx old = insn;
- /* Don't split the insn if it has been deleted. */
- if (! INSN_DELETED_P (old))
- insn = try_split (PATTERN (old), old, 1);
+ insn = try_split (PATTERN (old), old, 1);
/* When not optimizing, the old insn will be still left around
with only the 'deleted' bit set. Transform it into a note
to avoid confusion of subsequent processing. */
diff --git a/gnu/egcs/gcc/fix-header.c b/gnu/egcs/gcc/fix-header.c
index 1e6c5c47b8a..dfde8e5c560 100644
--- a/gnu/egcs/gcc/fix-header.c
+++ b/gnu/egcs/gcc/fix-header.c
@@ -1127,7 +1127,7 @@ main (argc, argv)
special_file_handling = stdio_h;
include_entry = std_include_table;
while (include_entry->name != NULL
- && ((strcmp (include_entry->name, CONTINUED) == 0)
+ && (include_entry->name == CONTINUED
|| strcmp (inc_filename, include_entry->name) != 0))
include_entry++;
@@ -1140,7 +1140,7 @@ main (argc, argv)
if (entry->flags)
add_symbols (entry->flags, entry->names);
entry++;
- if (!entry->name || strcmp (entry->name, CONTINUED) != 0)
+ if (entry->name != CONTINUED)
break;
}
}
diff --git a/gnu/egcs/gcc/fixinc/Makefile.in b/gnu/egcs/gcc/fixinc/Makefile.in
index 9182337c76a..2ba932f8c6f 100644
--- a/gnu/egcs/gcc/fixinc/Makefile.in
+++ b/gnu/egcs/gcc/fixinc/Makefile.in
@@ -81,7 +81,7 @@ fixincl: $(OBJ)
chmod 777 $@ ; fi
gnu-regex.o: gnu-regex.c
- -$(CC) $(CFLAGS) $(FIXINC_DEFS) $(INCLUDES) -DREGEX_MALLOC \
+ -$(CC) $(CFLAGS) $(FIXINC_DEFS) -DREGEX_MALLOC -DSTDC_HEADERS=1 \
-c $(srcdir)/gnu-regex.c
fixincl.o : fixincl.x fixincl.c
diff --git a/gnu/egcs/gcc/fixinc/README b/gnu/egcs/gcc/fixinc/README
index bd5a8011f3f..5481fbfe106 100644
--- a/gnu/egcs/gcc/fixinc/README
+++ b/gnu/egcs/gcc/fixinc/README
@@ -56,4 +56,4 @@ please see "POSSIBLE PROBLEMS" above. Thank you.
Regards,
Bruce <fixincludes@autogen.freeservers.com>
Robert <RobertLipe@usa.net>
- Manfred <manfred@s-direktnet.de>
+ Manfred <manfred@s-direktnet.de> \ No newline at end of file
diff --git a/gnu/egcs/gcc/fixinc/fixinc.svr4 b/gnu/egcs/gcc/fixinc/fixinc.svr4
index fbec4bc4abb..dedf4eb7e44 100644
--- a/gnu/egcs/gcc/fixinc/fixinc.svr4
+++ b/gnu/egcs/gcc/fixinc/fixinc.svr4
@@ -1570,40 +1570,9 @@ if [ \! -z "$file_to_fix" ]; then
rm -f /tmp/$base
fi
-# If arpa/inet.h prototypes are incompatible with the ones we just
-# installed in <sys/byteorder.h>, just remove the protos.
-set -x
-file=arpa/inet.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/^extern.*htons.*(in_port_t)/d' \
- -e '/^extern.*ntohs.*(in_port_t)/d' \
- $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- mkdir -p $LIB/`dirname $file`
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
echo 'Removing unneeded directories:'
cd $LIB
-files=`find . -type d \! -name '.' -print | sort -r`
+files=`find . -type d -print | sort -r`
for file in $files; do
rmdir $LIB/$file > /dev/null 2>&1
done
diff --git a/gnu/egcs/gcc/fixinc/fixinc.winnt b/gnu/egcs/gcc/fixinc/fixinc.winnt
index 2e5750c5138..cb7e72f3bf5 100644
--- a/gnu/egcs/gcc/fixinc/fixinc.winnt
+++ b/gnu/egcs/gcc/fixinc/fixinc.winnt
@@ -224,7 +224,7 @@ fi
echo 'Removing unneeded directories:'
cd $LIB
-files=`find . -type d \! -name '.' -print | sort -r`
+files=`find . -type d -print | sort -r`
for file in $files; do
rmdir $LIB/$file > NUL 2>&1
done
diff --git a/gnu/egcs/gcc/fixinc/fixincl.c b/gnu/egcs/gcc/fixinc/fixincl.c
index c1dfcbc580f..47c9ef1344a 100644
--- a/gnu/egcs/gcc/fixinc/fixincl.c
+++ b/gnu/egcs/gcc/fixinc/fixincl.c
@@ -23,9 +23,25 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "auto-host.h"
-#include "gansidecl.h"
-#include "system.h"
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
#include <signal.h>
+#include <stdio.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <ctype.h>
#include "gnu-regex.h"
#include "server.h"
@@ -42,13 +58,6 @@ static const char program_id[] = "fixincl version 1.0";
#endif
#define NAME_TABLE_SIZE (MINIMUM_MAXIMUM_LINES * MAXPATHLEN)
-#ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-#endif
-#ifndef EXIT_FAILURE
-# define EXIT_FAILURE 1
-#endif
-
char *file_name_buf;
#define tSCC static const char
@@ -103,7 +112,6 @@ typedef struct patch_desc tPatchDesc;
*/
#define FD_MACH_ONLY 0x0000
#define FD_MACH_IFNOT 0x0001
-#define FD_SHELL_SCRIPT 0x0002
#define FD_SKIP_TEST 0x8000
typedef struct fix_desc tFixDesc;
@@ -261,9 +269,16 @@ main (argc, argv)
}
}
#else
- /*#*/ error "NON-BOGUS LIMITS NOT SUPPORTED?!?!"
+#error "NON-BOGUS LIMITS NOT SUPPORTED?!?!"
#endif
+ /*
+ Here we are the child of the grandparent process. The parent
+ of all the little fixup processes. We ignore the deaths of
+ our children. */
+
+ signal (SIGCLD, SIG_IGN);
+
/* For every file specified in stdandard in
(except as throttled for bogus reasons)...
*/
@@ -367,9 +382,7 @@ initialize()
`waitpid(2)'. We also ensure that the children exit with success. */
void
-wait_for_pid(child, file_name_ct)
- pid_t child;
- int file_name_ct;
+wait_for_pid( pid_t child, int file_name_ct )
{
for (;;) {
int status;
@@ -910,70 +923,6 @@ extract_quoted_files (pz_data, pz_file_name, p_re_match)
}
-
-/* * * * * * * * * * * * *
-
- This loop should only cycle for 1/2 of one loop.
- "chain_open" starts a process that uses "read_fd" as
- its stdin and returns the new fd this process will use
- for stdout. */
-
-int
-start_fixer (read_fd, p_fixd, pz_file_name)
- int read_fd;
- tFixDesc* p_fixd;
- char* pz_file_name;
-{
- tSCC z_err[] = "Error %d (%s) starting filter process for %s\n";
- tCC* pz_cmd_save;
- char* pz_cmd;
-
- if ((p_fixd->fd_flags & FD_SHELL_SCRIPT) == 0)
- pz_cmd = (char*)NULL;
- else
- {
- tSCC z_cmd_fmt[] = "file='%s'\n%s";
- pz_cmd = (char*)xmalloc (strlen (p_fixd->patch_args[2])
- + sizeof( z_cmd_fmt )
- + strlen( pz_file_name ));
- sprintf (pz_cmd, z_cmd_fmt, pz_file_name, p_fixd->patch_args[2]);
- pz_cmd_save = p_fixd->patch_args[2];
- p_fixd->patch_args[2] = pz_cmd;
- }
-
- for (;;)
- {
- static int failCt = 0;
- int fd;
-
- fd = chain_open (read_fd,
- (t_pchar *) p_fixd->patch_args,
- (process_chain_head == -1)
- ? &process_chain_head : (pid_t *) NULL);
-
- if (fd != -1)
- {
- read_fd = fd;
- break;
- }
-
- fprintf (stderr, z_err, errno, strerror (errno),
- p_fixd->fix_name);
-
- if ((errno != EAGAIN) || (++failCt > 10))
- exit (EXIT_FAILURE);
- sleep (1);
- }
-
- if (pz_cmd != (char*)NULL)
- {
- free ((void*)pz_cmd);
- p_fixd->patch_args[2] = pz_cmd_save;
- }
-
- return read_fd;
-}
-
/* * * * * * * * * * * * *
Process the potential fixes for a particular include file.
@@ -985,12 +934,33 @@ process (pz_data, pz_file_name)
char *pz_data;
const char *pz_file_name;
{
- static char env_current_file[1024];
+ static char env_current_file[1024] = { "file=" };
tFixDesc *p_fixd = fixDescList;
int todo_ct = FIX_COUNT;
- int read_fd = -1;
- int num_children = 0;
+ t_fd_pair fdp = { -1, -1 };
+
+ /* IF this is the first time through,
+ THEN put the 'file' environment variable into the environment.
+ This is used by some of the subject shell scripts and tests. */
+ if (env_current_file[5] == NUL)
+ putenv (env_current_file);
+
+ /*
+ Ghastly as it is, this actually updates the value of the variable:
+
+ putenv(3C) C Library Functions putenv(3C)
+
+ DESCRIPTION
+ putenv() makes the value of the environment variable name
+ equal to value by altering an existing variable or creating
+ a new one. In either case, the string pointed to by string
+ becomes part of the environment, so altering the string will
+ change the environment. string points to a string of the
+ form ``name=value.'' The space used by string is no longer
+ used once a new string-defining name is passed to putenv().
+ */
+ strcpy (env_current_file + 5, pz_file_name);
process_chain_head = NOPROCESS;
fprintf (stderr, "%-50s \r", pz_file_name );
/* For every fix in our fix list, ... */
@@ -1088,10 +1058,10 @@ process (pz_data, pz_file_name)
the first fix. Any subsequent fixes will use the
stdout descriptor of the previous fix as its stdin. */
- if (read_fd == -1)
+ if (fdp.read_fd == -1)
{
- read_fd = open (pz_file_name, O_RDONLY);
- if (read_fd < 0)
+ fdp.read_fd = open (pz_file_name, O_RDONLY);
+ if (fdp.read_fd < 0)
{
fprintf (stderr, "Error %d (%s) opening %s\n", errno,
strerror (errno), pz_file_name);
@@ -1099,8 +1069,33 @@ process (pz_data, pz_file_name)
}
}
- read_fd = start_fixer (read_fd, p_fixd, pz_file_name);
- num_children++;
+ /* This loop should only cycle for 1/2 of one loop.
+ "chain_open" starts a process that uses "fdp.read_fd" as
+ its stdin and returns the new fd this process will use
+ for stdout. */
+
+ for (;;)
+ {
+ tSCC z_err[] = "Error %d (%s) starting filter process for %s\n";
+ static int failCt = 0;
+ int fd = chain_open (fdp.read_fd,
+ (t_pchar *) p_fixd->patch_args,
+ (process_chain_head == -1)
+ ? &process_chain_head : (pid_t *) NULL);
+
+ if (fd != -1)
+ {
+ fdp.read_fd = fd;
+ break;
+ }
+
+ fprintf (stderr, z_err, errno, strerror (errno),
+ p_fixd->fix_name);
+
+ if ((errno != EAGAIN) || (++failCt > 10))
+ exit (EXIT_FAILURE);
+ sleep (1);
+ }
next_fix:
;
@@ -1109,7 +1104,7 @@ process (pz_data, pz_file_name)
/* IF after all the tests we did not start any patch programs,
THEN quit now. */
- if (read_fd < 0)
+ if (fdp.read_fd < 0)
return;
/* OK. We have work to do. Read back in the output
@@ -1120,7 +1115,7 @@ process (pz_data, pz_file_name)
output of the filter chain.
*/
{
- FILE *in_fp = fdopen (read_fd, "r");
+ FILE *in_fp = fdopen (fdp.read_fd, "r");
FILE *out_fp = (FILE *) NULL;
char *pz_cmp = pz_data;
@@ -1176,10 +1171,5 @@ process (pz_data, pz_file_name)
}
fclose (in_fp);
}
- close (read_fd); /* probably redundant, but I'm paranoid */
-
- /* Wait for child processes created by chain_open()
- to avoid creating zombies. */
- while (--num_children >= 0)
- wait ((int *) NULL);
+ close (fdp.read_fd); /* probably redundant, but I'm paranoid */
}
diff --git a/gnu/egcs/gcc/fixinc/fixincl.sh b/gnu/egcs/gcc/fixinc/fixincl.sh
index 05722bdff01..74aafe378d4 100644
--- a/gnu/egcs/gcc/fixinc/fixincl.sh
+++ b/gnu/egcs/gcc/fixinc/fixincl.sh
@@ -6,7 +6,7 @@
# files which are fixed to work correctly with ANSI C and placed in a
# directory that GNU C will search.
#
-# This script contains 103 fixup scripts.
+# This script contains 104 fixup scripts.
#
# See README-fixinc for more information.
#
@@ -125,12 +125,7 @@ for INPUT in ${INPUTLIST} ; do
cd ${ORIGDIR}
-# This originally used cd || continue, however, that does not work with the
-# Solaris2 /bin/sh.
-if [ ! -d ${INPUT} ]; then
- continue
-fi
-cd ${INPUT}
+cd ${INPUT} || continue
INPUT=`${PWDCMD}`
#
@@ -398,9 +393,9 @@ find . -name DONE -exec rm -f '{}' ';'
echo 'Removing unneeded directories:'
cd $LIB
-all_dirs=`find . -type d \! -name '.' -print | sort -r`
+all_dirs=`find . -type d -print | sort -r`
for file in $all_dirs; do
- rmdir $LIB/$file > /dev/null 2>&1
+ rmdir $LIB/$file > /dev/null 2>&1 | :
done
# # # # # # # # # # # # # # # # # # # # #
@@ -411,10 +406,8 @@ done
#
# # # # # # # # # # # # # # # # # # # # #
-if [ x${INSTALL_ASSERT_H} != x ] && [ -f ${srcdir}/assert.h ]
-then
- cd $ORIGDIR
- rm -f include/assert.h
- cp ${srcdir}/assert.h include/assert.h || exit 1
- chmod a+r include/assert.h
-fi
+cd $ORIGDIR
+rm -f include/assert.h
+cp ${srcdir}/assert.h include/assert.h || exit 1
+chmod a+r include/assert.h
+
diff --git a/gnu/egcs/gcc/fixinc/fixincl.tpl b/gnu/egcs/gcc/fixinc/fixincl.tpl
index afdd131c66e..d5d6b6448a7 100644
--- a/gnu/egcs/gcc/fixinc/fixincl.tpl
+++ b/gnu/egcs/gcc/fixinc/fixincl.tpl
@@ -22,14 +22,16 @@ _FOR fix =]
* Description [=_eval _index 1 + "#%3d -" _printf=] [=hackname _Cap=] fix
*/
tSCC z[=hackname _cap=]Name[] =
- [=hackname _cap _krstr=];
+ [=hackname _cap _str=];
/*
* File name selection pattern
*/[=
_IF files _exist=]
-tSCC z[=hackname _cap=]List[] =
- "[=_FOR files =]|[=files=][=/files=]|";[=
+tSCC z[=hackname _cap=]List[] =[=
+ _FOR files=]
+ "|" [=files _str=][=
+ /files=] "|";[=
_ELSE =]
#define z[=hackname _cap=]List (char*)NULL[=
@@ -41,7 +43,7 @@ tSCC z[=hackname _cap=]List[] =
_IF mach _exist=]
tSCC* apz[=hackname _cap=]Machs[] = {[=
_FOR mach =]
- [=mach _krstr=],[=
+ [=mach _str=],[=
/mach=]
(const char*)NULL };[=
@@ -58,7 +60,7 @@ tSCC* apz[=hackname _cap=]Machs[] = {[=
*/[=
_FOR exesel =]
tSCC z[=hackname _cap=]Select[=_eval _index=][] =
- [=exesel _krstr=];[=
+ [=exesel _str=];[=
/exesel =][=
_ELIF select _exist=]
@@ -68,7 +70,7 @@ tSCC z[=hackname _cap=]Select[=_eval _index=][] =
*/[=
_FOR select =]
tSCC z[=hackname _cap=]Select[=_eval _index=][] =
- [=select _krstr=];[=
+ [=select _str=];[=
/select =][=
_ENDIF =][=
@@ -79,7 +81,7 @@ tSCC z[=hackname _cap=]Select[=_eval _index=][] =
*/[=
_FOR bypass =]
tSCC z[=hackname _cap=]Bypass[=_eval _index=][] =
- [=bypass _krstr=];[=
+ [=bypass _str=];[=
/bypass =][=
_ENDIF =][=
@@ -90,7 +92,7 @@ tSCC z[=hackname _cap=]Bypass[=_eval _index=][] =
*/[=
_FOR test =]
tSCC z[=hackname _cap=]Test[=_eval _index=][] =
- [=test _krstr=];[=
+ [=test _str=];[=
/test =][=
_ENDIF =][=
@@ -157,9 +159,9 @@ tTestDesc a[=hackname _cap=]Tests[] = {[=
*/
const char* apz[=hackname _cap=]Patch[] = {[=
_IF sed _exist =] "sed"[=_FOR sed=],
- "-e", [=sed _krstr=][=/sed=][=
+ "-e", [=sed _str=][=/sed=][=
_ELIF shell _exist =] "sh", "-c",
- [=shell _krstr=][=
+ [=shell _str=][=
_ENDIF=],
(char*)NULL };
@@ -179,8 +181,6 @@ _FOR fix ",\n" =]
[=hackname _up=]_TEST_CT, [=
_IF not_machine _exist =]FD_MACH_IFNOT[=
_ELSE =]FD_MACH_ONLY[=
- _ENDIF =][=
- _IF shell _exist =] | FD_SHELL_SCRIPT[=
_ENDIF =],
a[=hackname _cap=]Tests, apz[=hackname _cap=]Patch }[=
diff --git a/gnu/egcs/gcc/fixinc/fixincl.x b/gnu/egcs/gcc/fixinc/fixincl.x
index bbd17eac8e0..736943bbd1b 100644
--- a/gnu/egcs/gcc/fixinc/fixincl.x
+++ b/gnu/egcs/gcc/fixinc/fixincl.x
@@ -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 103 fixup descriptions.
+ * This file contains 104 fixup descriptions.
*
* See README-fixinc for more information.
*
@@ -37,7 +37,7 @@ tSCC zAix_SyswaitName[] =
* File name selection pattern
*/
tSCC zAix_SyswaitList[] =
- "|sys/wait.h|";
+ "|" "sys/wait.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -58,8 +58,8 @@ tTestDesc aAix_SyswaitTests[] = {
* Fix Command Arguments for Aix_Syswait
*/
const char* apzAix_SyswaitPatch[] = { "sed",
- "-e", "/^extern pid_t wait3();$/i\\\n\
-struct rusage;\n",
+ "-e", "/^extern pid_t wait3();$/i\\\n"
+ "struct rusage;\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -72,7 +72,7 @@ tSCC zAix_VolatileName[] =
* File name selection pattern
*/
tSCC zAix_VolatileList[] =
- "|sys/signal.h|";
+ "|" "sys/signal.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -106,7 +106,8 @@ tSCC zAlpha_GetoptName[] =
* File name selection pattern
*/
tSCC zAlpha_GetoptList[] =
- "|stdio.h|stdlib.h|";
+ "|" "stdio.h"
+ "|" "stdlib.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -140,7 +141,7 @@ tSCC zAlpha_ParensName[] =
* File name selection pattern
*/
tSCC zAlpha_ParensList[] =
- "|sym.h|";
+ "|" "sym.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -174,7 +175,7 @@ tSCC zAlpha_SbrkName[] =
* File name selection pattern
*/
tSCC zAlpha_SbrkList[] =
- "|unistd.h|";
+ "|" "unistd.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -208,7 +209,7 @@ tSCC zArm_Norcroft_HintName[] =
* File name selection pattern
*/
tSCC zArm_Norcroft_HintList[] =
- "|X11/Intrinsic.h|";
+ "|" "X11/Intrinsic.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -242,7 +243,7 @@ tSCC zArm_WcharName[] =
* File name selection pattern
*/
tSCC zArm_WcharList[] =
- "|stdlib.h|";
+ "|" "stdlib.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -277,7 +278,7 @@ tSCC zAux_AsmName[] =
* File name selection pattern
*/
tSCC zAux_AsmList[] =
- "|sys/param.h|";
+ "|" "sys/param.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -311,7 +312,10 @@ tSCC zAvoid_BoolName[] =
* File name selection pattern
*/
tSCC zAvoid_BoolList[] =
- "|curses.h|curses_colr/curses.h|term.h|tinfo.h|";
+ "|" "curses.h"
+ "|" "curses_colr/curses.h"
+ "|" "term.h"
+ "|" "tinfo.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -324,26 +328,18 @@ tSCC zAvoid_BoolList[] =
* Fix Command Arguments for Avoid_Bool
*/
const char* apzAvoid_BoolPatch[] = { "sed",
- "-e", "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/i\\\n\
-#ifndef __cplusplus\n",
- "-e", "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/a\\\n\
-#endif\n",
- "-e", "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/i\\\n\
-#ifndef __cplusplus\n",
- "-e", "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/a\\\n\
-#endif\n",
- "-e", "/^[ ]*typedef[ \t][ \t]*unsigned char[ \t][ \t]*bool[ \t]*;/i\\\n\
-#ifndef __cplusplus\n",
- "-e", "/^[ ]*typedef[ \t][ \t]*unsigned char[ \t][ \t]*bool[ \t]*;/a\\\n\
-#endif\n",
- "-e", "/^typedef[ \t][ \t]*int[ \t][ \t]*bool[ \t]*;/i\\\n\
-#ifndef __cplusplus\n",
- "-e", "/^typedef[ \t][ \t]*int[ \t][ \t]*bool[ \t]*;/a\\\n\
-#endif\n",
- "-e", "/^[ ]*typedef[ \t][ \t]*unsigned int[ \t][ \t]*bool[ \t]*;/i\\\n\
-#ifndef __cplusplus\n",
- "-e", "/^[ ]*typedef[ \t][ \t]*unsigned int[ \t][ \t]*bool[ \t]*;/a\\\n\
-#endif\n",
+ "-e", "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/i\\\n"
+ "#ifndef __cplusplus\n",
+ "-e", "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/a\\\n"
+ "#endif\n",
+ "-e", "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/i\\\n"
+ "#ifndef __cplusplus\n",
+ "-e", "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/a\\\n"
+ "#endif\n",
+ "-e", "/^[ ]*typedef[ \t][ \t]*unsigned char[ \t][ \t]*bool[ \t]*;/i\\\n"
+ "#ifndef __cplusplus\n",
+ "-e", "/^[ ]*typedef[ \t][ \t]*unsigned char[ \t][ \t]*bool[ \t]*;/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -356,7 +352,7 @@ tSCC zBad_Struct_TermName[] =
* File name selection pattern
*/
tSCC zBad_Struct_TermList[] =
- "|curses.h|";
+ "|" "curses.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -390,7 +386,7 @@ tSCC zBadquoteName[] =
* File name selection pattern
*/
tSCC zBadquoteList[] =
- "|sundev/vuid_event.h|";
+ "|" "sundev/vuid_event.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -416,14 +412,35 @@ tSCC zBad_LvalName[] =
* File name selection pattern
*/
tSCC zBad_LvalList[] =
- "|libgen.h|dirent.h|ftw.h|grp.h|ndbm.h|pthread.h|pwd.h|signal.h|standards.h|stdlib.h|string.h|stropts.h|time.h|unistd.h|";
+ "|" "libgen.h"
+ "|" "dirent.h"
+ "|" "ftw.h"
+ "|" "grp.h"
+ "|" "ndbm.h"
+ "|" "pthread.h"
+ "|" "pwd.h"
+ "|" "signal.h"
+ "|" "standards.h"
+ "|" "stdlib.h"
+ "|" "string.h"
+ "|" "stropts.h"
+ "|" "time.h"
+ "|" "unistd.h" "|";
/*
* Machine/OS name selection pattern
*/
#define apzBad_LvalMachs (const char**)NULL
-#define BAD_LVAL_TEST_CT 0
-#define BAD_LVAL_RE_CT 0
-#define aBad_LvalTests (tTestDesc*)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zBad_LvalSelect0[] =
+ "^[ \t]*#[ \t]*pragma[ \t]extern_prefix";
+
+#define BAD_LVAL_TEST_CT 1
+#define BAD_LVAL_RE_CT 1
+tTestDesc aBad_LvalTests[] = {
+ { TT_EGREP, zBad_LvalSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Bad_Lval
@@ -442,7 +459,7 @@ tSCC zBroken_Assert_StdioName[] =
* File name selection pattern
*/
tSCC zBroken_Assert_StdioList[] =
- "|assert.h|";
+ "|" "assert.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -470,8 +487,8 @@ tTestDesc aBroken_Assert_StdioTests[] = {
* Fix Command Arguments for Broken_Assert_Stdio
*/
const char* apzBroken_Assert_StdioPatch[] = { "sed",
- "-e", "1i\\\n\
-#include <stdio.h>\n",
+ "-e", "1i\\\n"
+ "#include <stdio.h>\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -484,7 +501,7 @@ tSCC zBroken_Assert_StdlibName[] =
* File name selection pattern
*/
tSCC zBroken_Assert_StdlibList[] =
- "|assert.h|";
+ "|" "assert.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -512,10 +529,10 @@ tTestDesc aBroken_Assert_StdlibTests[] = {
* Fix Command Arguments for Broken_Assert_Stdlib
*/
const char* apzBroken_Assert_StdlibPatch[] = { "sed",
- "-e", "1i\\\n\
-#ifdef __cplusplus\\\n\
-#include <stdlib.h>\\\n\
-#endif\n",
+ "-e", "1i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "#include <stdlib.h>\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -562,7 +579,7 @@ tSCC zDec_Intern_AsmName[] =
* File name selection pattern
*/
tSCC zDec_Intern_AsmList[] =
- "|c_asm.h|";
+ "|" "c_asm.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -575,10 +592,10 @@ tSCC zDec_Intern_AsmList[] =
* Fix Command Arguments for Dec_Intern_Asm
*/
const char* apzDec_Intern_AsmPatch[] = { "sed",
- "-e", "/^[ \t]*float[ \t]*fasm/i\\\n\
-#ifdef __DECC\n",
- "-e", "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n\
-#endif\n",
+ "-e", "/^[ \t]*float[ \t]*fasm/i\\\n"
+ "#ifdef __DECC\n",
+ "-e", "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -606,7 +623,7 @@ tSCC zNo_Double_SlashSelect0[] =
* perform the 'test' shell command - do fix on success
*/
tSCC zNo_Double_SlashTest0[] =
- " -z \"`echo ${file} | egrep '(CC|cxx|\\+\\+)/'`\"";
+ "-z `echo ${file} | egrep '(CC|cxx|\\+\\+)/' `";
#define NO_DOUBLE_SLASH_TEST_CT 2
#define NO_DOUBLE_SLASH_RE_CT 1
@@ -632,7 +649,8 @@ tSCC zEcd_CursorName[] =
* File name selection pattern
*/
tSCC zEcd_CursorList[] =
- "|sunwindow/win_lock.h|sunwindow/win_cursor.h|";
+ "|" "sunwindow/win_lock.h"
+ "|" "sunwindow/win_cursor.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -658,7 +676,7 @@ tSCC zSco5_Stat_WrappersName[] =
* File name selection pattern
*/
tSCC zSco5_Stat_WrappersList[] =
- "|sys/stat.h|";
+ "|" "sys/stat.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -673,62 +691,99 @@ tSCC* apzSco5_Stat_WrappersMachs[] = {
* Fix Command Arguments for Sco5_Stat_Wrappers
*/
const char* apzSco5_Stat_WrappersPatch[] = { "sed",
- "-e", "/^static int[ \t]*[a-z]*stat(/i\\\n\
-#ifdef __cplusplus\\\n\
-extern \"C\"\\\n\
-{\\\n\
-#endif\\\n",
- "-e", "/^}$/a\\\n\
-#ifdef __cplusplus\\\n\
-}\\\n\
-#endif /* __cplusplus */\\\n",
+ "-e", "/^static int[ \t]*[a-z]*stat(/i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "extern \"C\"\\\n"
+ "{\\\n"
+ "#endif\\\n",
+ "-e", "/^}$/a\\\n"
+ "#ifdef __cplusplus\\\n"
+ "}\\\n"
+ "#endif /* __cplusplus */\\\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 20 - End_Else_Label fix
+ * Description 20 - Else_Label fix
*/
-tSCC zEnd_Else_LabelName[] =
- "End_Else_Label";
+tSCC zElse_LabelName[] =
+ "Else_Label";
/*
* File name selection pattern
*/
-#define zEnd_Else_LabelList (char*)NULL
+#define zElse_LabelList (char*)NULL
/*
* Machine/OS name selection pattern
*/
-#define apzEnd_Else_LabelMachs (const char**)NULL
+#define apzElse_LabelMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zEnd_Else_LabelSelect0[] =
- "^[ \t]*#[ \t]*(else|endif)[ \t]+([!-.0-z\\{\\|\\}\\~]|/[^\\*])";
+tSCC zElse_LabelSelect0[] =
+ "^[ \t]*#[ \t]*else[ \t]+[!-.0-~]";
-#define END_ELSE_LABEL_TEST_CT 1
-#define END_ELSE_LABEL_RE_CT 1
-tTestDesc aEnd_Else_LabelTests[] = {
- { TT_EGREP, zEnd_Else_LabelSelect0, (regex_t*)NULL }, };
+#define ELSE_LABEL_TEST_CT 1
+#define ELSE_LABEL_RE_CT 1
+tTestDesc aElse_LabelTests[] = {
+ { TT_EGREP, zElse_LabelSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for End_Else_Label
+ * Fix Command Arguments for Else_Label
*/
-const char* apzEnd_Else_LabelPatch[] = { "sed",
- "-e", ":loop\n\
-/\\\\$/N\n\
-s/\\\\$/\\\\+++fixinc_eol+++/\n\
-/\\\\$/b loop\n\
-s/\\\\+++fixinc_eol+++/\\\\/g\n\
-s%^\\([ \t]*#[ \t]*else\\)[ \t][ \t]*/[^*].*%\\1%\n\
-s%^\\([ \t]*#[ \t]*else\\)[ \t][ \t]*[^/ \t].*%\\1%\n\
-s%^\\([ \t]*#[ \t]*endif\\)[ \t][ \t]*/[^*].*%\\1%\n\
-s%^\\([ \t]*#[ \t]*endif\\)[ \t][ \t]**[^/].*%\\1%\n\
-s%^\\([ \t]*#[ \t]*endif\\)[ \t][ \t]*[^/* \t].*%\\1%",
+const char* apzElse_LabelPatch[] = { "sed",
+ "-e", ":loop\n"
+ "/\\\\$/N\n"
+ "s/\\\\$/\\\\+++fixinc_eol+++/\n"
+ "/\\\\$/b loop\n"
+ "s/\\\\+++fixinc_eol+++/\\\\/g\n"
+ "s%^\\([ \t]*#[ \t]*else\\)[ \t]*/[^*].*%\\1%\n"
+ "s%^\\([ \t]*#[ \t]*else\\)[ \t]*[^/ \t].*%\\1%",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 21 - Hp_Inline fix
+ * Description 21 - Endif_Label fix
+ */
+tSCC zEndif_LabelName[] =
+ "Endif_Label";
+/*
+ * File name selection pattern
+ */
+#define zEndif_LabelList (char*)NULL
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzEndif_LabelMachs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zEndif_LabelSelect0[] =
+ "^[ \t]*#[ \t]*endif[ \t]+[!-.0-z{|}~]";
+
+#define ENDIF_LABEL_TEST_CT 1
+#define ENDIF_LABEL_RE_CT 1
+tTestDesc aEndif_LabelTests[] = {
+ { TT_EGREP, zEndif_LabelSelect0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Endif_Label
+ */
+const char* apzEndif_LabelPatch[] = { "sed",
+ "-e", ":loop\n"
+ "/\\\\$/N\n"
+ "s/\\\\$/\\\\+++fixinc_eol+++/\n"
+ "/\\\\$/b loop\n"
+ "s/\\\\+++fixinc_eol+++/\\\\/g\n"
+ "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*/[^*].*%\\1%\n"
+ "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*\\*[^/].*%\\1%\n"
+ "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*[^/* \t].*%\\1%",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description 22 - Hp_Inline fix
*/
tSCC zHp_InlineName[] =
"Hp_Inline";
@@ -736,7 +791,7 @@ tSCC zHp_InlineName[] =
* File name selection pattern
*/
tSCC zHp_InlineList[] =
- "|sys/spinlock.h|";
+ "|" "sys/spinlock.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -763,7 +818,7 @@ const char* apzHp_InlinePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 22 - Hp_Sysfile fix
+ * Description 23 - Hp_Sysfile fix
*/
tSCC zHp_SysfileName[] =
"Hp_Sysfile";
@@ -771,7 +826,7 @@ tSCC zHp_SysfileName[] =
* File name selection pattern
*/
tSCC zHp_SysfileList[] =
- "|sys/file.h|";
+ "|" "sys/file.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -797,7 +852,7 @@ const char* apzHp_SysfilePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 23 - Cxx_Unready fix
+ * Description 24 - Cxx_Unready fix
*/
tSCC zCxx_UnreadyName[] =
"Cxx_Unready";
@@ -805,7 +860,8 @@ tSCC zCxx_UnreadyName[] =
* File name selection pattern
*/
tSCC zCxx_UnreadyList[] =
- "|sys/mman.h|rpc/types.h|";
+ "|" "sys/mman.h"
+ "|" "rpc/types.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -826,20 +882,20 @@ tTestDesc aCxx_UnreadyTests[] = {
* Fix Command Arguments for Cxx_Unready
*/
const char* apzCxx_UnreadyPatch[] = { "sed",
- "-e", "1i\\\n\
-#ifdef __cplusplus\\\n\
-extern \"C\" {\\\n\
-#endif\\\n\
-\n",
- "-e", "$a\\\n\
-#ifdef __cplusplus\\\n\
-}\\\n\
-#endif\n",
+ "-e", "1i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "extern \"C\" {\\\n"
+ "#endif\\\n"
+ "\n",
+ "-e", "$a\\\n"
+ "#ifdef __cplusplus\\\n"
+ "}\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 24 - Hpux_Maxint fix
+ * Description 25 - Hpux_Maxint fix
*/
tSCC zHpux_MaxintName[] =
"Hpux_Maxint";
@@ -847,7 +903,7 @@ tSCC zHpux_MaxintName[] =
* File name selection pattern
*/
tSCC zHpux_MaxintList[] =
- "|sys/param.h|";
+ "|" "sys/param.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -860,15 +916,15 @@ tSCC zHpux_MaxintList[] =
* Fix Command Arguments for Hpux_Maxint
*/
const char* apzHpux_MaxintPatch[] = { "sed",
- "-e", "/^#[ \t]*define[ \t]*MAXINT[ \t]/i\\\n\
-#ifndef MAXINT\n",
- "-e", "/^#[ \t]*define[ \t]*MAXINT[ \t]/a\\\n\
-#endif\n",
+ "-e", "/^#[ \t]*define[ \t]*MAXINT[ \t]/i\\\n"
+ "#ifndef MAXINT\n",
+ "-e", "/^#[ \t]*define[ \t]*MAXINT[ \t]/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 25 - Hpux_Systime fix
+ * Description 26 - Hpux_Systime fix
*/
tSCC zHpux_SystimeName[] =
"Hpux_Systime";
@@ -876,7 +932,7 @@ tSCC zHpux_SystimeName[] =
* File name selection pattern
*/
tSCC zHpux_SystimeList[] =
- "|sys/time.h|";
+ "|" "sys/time.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -902,7 +958,7 @@ const char* apzHpux_SystimePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 26 - Interactv_Add1 fix
+ * Description 27 - Interactv_Add1 fix
*/
tSCC zInteractv_Add1Name[] =
"Interactv_Add1";
@@ -910,7 +966,12 @@ tSCC zInteractv_Add1Name[] =
* File name selection pattern
*/
tSCC zInteractv_Add1List[] =
- "|stdio.h|math.h|ctype.h|sys/limits.h|sys/fcntl.h|sys/dirent.h|";
+ "|" "stdio.h"
+ "|" "math.h"
+ "|" "ctype.h"
+ "|" "sys/limits.h"
+ "|" "sys/fcntl.h"
+ "|" "sys/dirent.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -939,7 +1000,7 @@ const char* apzInteractv_Add1Patch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 27 - Interactv_Add2 fix
+ * Description 28 - Interactv_Add2 fix
*/
tSCC zInteractv_Add2Name[] =
"Interactv_Add2";
@@ -947,7 +1008,7 @@ tSCC zInteractv_Add2Name[] =
* File name selection pattern
*/
tSCC zInteractv_Add2List[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -976,7 +1037,7 @@ const char* apzInteractv_Add2Patch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 28 - Interactv_Add3 fix
+ * Description 29 - Interactv_Add3 fix
*/
tSCC zInteractv_Add3Name[] =
"Interactv_Add3";
@@ -984,7 +1045,7 @@ tSCC zInteractv_Add3Name[] =
* File name selection pattern
*/
tSCC zInteractv_Add3List[] =
- "|sys/limits.h|";
+ "|" "sys/limits.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1014,7 +1075,7 @@ const char* apzInteractv_Add3Patch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 29 - Io_Def_Quotes fix
+ * Description 30 - Io_Def_Quotes fix
*/
tSCC zIo_Def_QuotesName[] =
"Io_Def_Quotes";
@@ -1042,15 +1103,14 @@ tTestDesc aIo_Def_QuotesTests[] = {
* Fix Command Arguments for Io_Def_Quotes
*/
const char* apzIo_Def_QuotesPatch[] = { "sed",
- "-e", "s/\\([ \t]*[ \t]_IO[A-Z]*[ \t]*(\\)\\([^,']\\),/\\1'\\2',/",
- "-e", "s/\\([ \t]*[ \t]DESIO[A-Z]*[ \t]*(\\)\\([^,']\\),/\\1'\\2',/",
+ "-e", "s/\\([ \t]*[ \t](_|DES)IO[A-Z]*[ \t]*(\\)\\([^,']\\),/\\1'\\2',/",
"-e", "/#[ \t]*define[ \t]*[ \t]_IO/s/'\\([cgxtf]\\)'/\\1/g",
"-e", "/#[ \t]*define[ \t]*[ \t]DESIOC/s/'\\([cdgx]\\)'/\\1/g",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 30 - Ioctl_Fix_Ctrl fix
+ * Description 31 - Ioctl_Fix_Ctrl fix
*/
tSCC zIoctl_Fix_CtrlName[] =
"Ioctl_Fix_Ctrl";
@@ -1067,7 +1127,7 @@ tSCC zIoctl_Fix_CtrlName[] =
* content selection pattern - do fix if pattern found
*/
tSCC zIoctl_Fix_CtrlSelect0[] =
- "CTRL[ \t]*\\(";
+ "CTRL[ \t]";
#define IOCTL_FIX_CTRL_TEST_CT 1
#define IOCTL_FIX_CTRL_RE_CT 1
@@ -1083,12 +1143,11 @@ const char* apzIoctl_Fix_CtrlPatch[] = { "sed",
"-e", "/#[ \t]*define[ \t]*[ \t]CTRL/s/'\\([cgx]\\)'/\\1/g",
"-e", "/#[ \t]*define[ \t]*[ \t]_CTRL/s/'\\([cgx]\\)'/\\1/g",
"-e", "/#[ \t]*define[ \t]*[ \t]BSD43_CTRL/s/'\\([cgx]\\)'/\\1/g",
- "-e", "/#[ \t]*define[ \t]*[ \t]_*ISCTRL/s/'\\([cgx]\\)'/\\1/g",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 31 - Ip_Missing_Semi fix
+ * Description 32 - Ip_Missing_Semi fix
*/
tSCC zIp_Missing_SemiName[] =
"Ip_Missing_Semi";
@@ -1096,7 +1155,7 @@ tSCC zIp_Missing_SemiName[] =
* File name selection pattern
*/
tSCC zIp_Missing_SemiList[] =
- "|netinet/ip.h|";
+ "|" "netinet/ip.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1114,7 +1173,7 @@ const char* apzIp_Missing_SemiPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 32 - Irix_Multiline_Cmnt fix
+ * Description 33 - Irix_Multiline_Cmnt fix
*/
tSCC zIrix_Multiline_CmntName[] =
"Irix_Multiline_Cmnt";
@@ -1122,7 +1181,7 @@ tSCC zIrix_Multiline_CmntName[] =
* File name selection pattern
*/
tSCC zIrix_Multiline_CmntList[] =
- "|sys/types.h|";
+ "|" "sys/types.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1141,7 +1200,7 @@ const char* apzIrix_Multiline_CmntPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 33 - Irix_Sockaddr fix
+ * Description 34 - Irix_Sockaddr fix
*/
tSCC zIrix_SockaddrName[] =
"Irix_Sockaddr";
@@ -1149,7 +1208,7 @@ tSCC zIrix_SockaddrName[] =
* File name selection pattern
*/
tSCC zIrix_SockaddrList[] =
- "|rpc/auth.h|";
+ "|" "rpc/auth.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1170,13 +1229,13 @@ tTestDesc aIrix_SockaddrTests[] = {
* Fix Command Arguments for Irix_Sockaddr
*/
const char* apzIrix_SockaddrPatch[] = { "sed",
- "-e", "/authdes_create.*struct sockaddr/i\\\n\
-struct sockaddr;\n",
+ "-e", "/authdes_create.*struct sockaddr/i\\\n"
+ "struct sockaddr;\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 34 - Irix_Struct__File fix
+ * Description 35 - Irix_Struct__File fix
*/
tSCC zIrix_Struct__FileName[] =
"Irix_Struct__File";
@@ -1184,7 +1243,7 @@ tSCC zIrix_Struct__FileName[] =
* File name selection pattern
*/
tSCC zIrix_Struct__FileList[] =
- "|rpc/xdr.h|";
+ "|" "rpc/xdr.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1197,13 +1256,13 @@ tSCC zIrix_Struct__FileList[] =
* Fix Command Arguments for Irix_Struct__File
*/
const char* apzIrix_Struct__FilePatch[] = { "sed",
- "-e", "/xdrstdio_create.*struct __file_s/i\\\n\
-struct __file_s;\n",
+ "-e", "/xdrstdio_create.*struct __file_s/i\\\n"
+ "struct __file_s;\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 35 - Isc_Fmod fix
+ * Description 36 - Isc_Fmod fix
*/
tSCC zIsc_FmodName[] =
"Isc_Fmod";
@@ -1211,7 +1270,7 @@ tSCC zIsc_FmodName[] =
* File name selection pattern
*/
tSCC zIsc_FmodList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1237,7 +1296,7 @@ const char* apzIsc_FmodPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 36 - Motorola_Nested fix
+ * Description 37 - Motorola_Nested fix
*/
tSCC zMotorola_NestedName[] =
"Motorola_Nested";
@@ -1245,7 +1304,8 @@ tSCC zMotorola_NestedName[] =
* File name selection pattern
*/
tSCC zMotorola_NestedList[] =
- "|limits.h|sys/limits.h|";
+ "|" "limits.h"
+ "|" "sys/limits.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1266,7 +1326,7 @@ const char* apzMotorola_NestedPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 37 - Isc_Sys_Limits fix
+ * Description 38 - Isc_Sys_Limits fix
*/
tSCC zIsc_Sys_LimitsName[] =
"Isc_Sys_Limits";
@@ -1274,7 +1334,7 @@ tSCC zIsc_Sys_LimitsName[] =
* File name selection pattern
*/
tSCC zIsc_Sys_LimitsList[] =
- "|sys/limits.h|";
+ "|" "sys/limits.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1301,7 +1361,7 @@ const char* apzIsc_Sys_LimitsPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 38 - Kandr_Concat fix
+ * Description 39 - Kandr_Concat fix
*/
tSCC zKandr_ConcatName[] =
"Kandr_Concat";
@@ -1309,7 +1369,24 @@ tSCC zKandr_ConcatName[] =
* File name selection pattern
*/
tSCC zKandr_ConcatList[] =
- "|sparc/asm_linkage.h|sun3/asm_linkage.h|sun3x/asm_linkage.h|sun4/asm_linkage.h|sun4c/asm_linkage.h|sun4m/asm_linkage.h|sun4c/debug/asm_linkage.h|sun4m/debug/asm_linkage.h|arm/as_support.h|arm/mc_type.h|arm/xcb.h|dev/chardefmac.h|dev/ps_irq.h|dev/screen.h|dev/scsi.h|sys/tty.h|Xm.acorn/XmP.h|bsd43/bsd43_.h|";
+ "|" "sparc/asm_linkage.h"
+ "|" "sun3/asm_linkage.h"
+ "|" "sun3x/asm_linkage.h"
+ "|" "sun4/asm_linkage.h"
+ "|" "sun4c/asm_linkage.h"
+ "|" "sun4m/asm_linkage.h"
+ "|" "sun4c/debug/asm_linkage.h"
+ "|" "sun4m/debug/asm_linkage.h"
+ "|" "arm/as_support.h"
+ "|" "arm/mc_type.h"
+ "|" "arm/xcb.h"
+ "|" "dev/chardefmac.h"
+ "|" "dev/ps_irq.h"
+ "|" "dev/screen.h"
+ "|" "dev/scsi.h"
+ "|" "sys/tty.h"
+ "|" "Xm.acorn/XmP.h"
+ "|" "bsd43/bsd43_.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1335,7 +1412,7 @@ const char* apzKandr_ConcatPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 39 - Limits_Ifndefs fix
+ * Description 40 - Limits_Ifndefs fix
*/
tSCC zLimits_IfndefsName[] =
"Limits_Ifndefs";
@@ -1343,7 +1420,7 @@ tSCC zLimits_IfndefsName[] =
* File name selection pattern
*/
tSCC zLimits_IfndefsList[] =
- "|limits.h|sys/limits.h|";
+ "|" "limits.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1364,36 +1441,36 @@ tTestDesc aLimits_IfndefsTests[] = {
* Fix Command Arguments for Limits_Ifndefs
*/
const char* apzLimits_IfndefsPatch[] = { "sed",
- "-e", "/[ \t]FLT_MIN[ \t]/i\\\n\
-#ifndef FLT_MIN\n",
- "-e", "/[ \t]FLT_MIN[ \t]/a\\\n\
-#endif\n",
- "-e", "/[ \t]FLT_MAX[ \t]/i\\\n\
-#ifndef FLT_MAX\n",
- "-e", "/[ \t]FLT_MAX[ \t]/a\\\n\
-#endif\n",
- "-e", "/[ \t]FLT_DIG[ \t]/i\\\n\
-#ifndef FLT_DIG\n",
- "-e", "/[ \t]FLT_DIG[ \t]/a\\\n\
-#endif\n",
- "-e", "/[ \t]DBL_MIN[ \t]/i\\\n\
-#ifndef DBL_MIN\n",
- "-e", "/[ \t]DBL_MIN[ \t]/a\\\n\
-#endif\n",
- "-e", "/[ \t]DBL_MAX[ \t]/i\\\n\
-#ifndef DBL_MAX\n",
- "-e", "/[ \t]DBL_MAX[ \t]/a\\\n\
-#endif\n",
- "-e", "/[ \t]DBL_DIG[ \t]/i\\\n\
-#ifndef DBL_DIG\n",
- "-e", "/[ \t]DBL_DIG[ \t]/a\\\n\
-#endif\n",
+ "-e", "/[ \t]FLT_MIN[ \t]/i\\\n"
+ "#ifndef FLT_MIN\n",
+ "-e", "/[ \t]FLT_MIN[ \t]/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]FLT_MAX[ \t]/i\\\n"
+ "#ifndef FLT_MAX\n",
+ "-e", "/[ \t]FLT_MAX[ \t]/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]FLT_DIG[ \t]/i\\\n"
+ "#ifndef FLT_DIG\n",
+ "-e", "/[ \t]FLT_DIG[ \t]/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]DBL_MIN[ \t]/i\\\n"
+ "#ifndef DBL_MIN\n",
+ "-e", "/[ \t]DBL_MIN[ \t]/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]DBL_MAX[ \t]/i\\\n"
+ "#ifndef DBL_MAX\n",
+ "-e", "/[ \t]DBL_MAX[ \t]/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]DBL_DIG[ \t]/i\\\n"
+ "#ifndef DBL_DIG\n",
+ "-e", "/[ \t]DBL_DIG[ \t]/a\\\n"
+ "#endif\n",
"-e", "/^\\(\\/\\*#define\tHUGE_VAL\t3\\.[0-9e+]* *\\)\\/\\*/s//\\1/",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 40 - Lynx_Void_Int fix
+ * Description 41 - Lynx_Void_Int fix
*/
tSCC zLynx_Void_IntName[] =
"Lynx_Void_Int";
@@ -1401,7 +1478,7 @@ tSCC zLynx_Void_IntName[] =
* File name selection pattern
*/
tSCC zLynx_Void_IntList[] =
- "|curses.h|";
+ "|" "curses.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1427,7 +1504,7 @@ const char* apzLynx_Void_IntPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 41 - Lynxos_Fcntl_Proto fix
+ * Description 42 - Lynxos_Fcntl_Proto fix
*/
tSCC zLynxos_Fcntl_ProtoName[] =
"Lynxos_Fcntl_Proto";
@@ -1435,7 +1512,7 @@ tSCC zLynxos_Fcntl_ProtoName[] =
* File name selection pattern
*/
tSCC zLynxos_Fcntl_ProtoList[] =
- "|fcntl.h|";
+ "|" "fcntl.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1461,7 +1538,7 @@ const char* apzLynxos_Fcntl_ProtoPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 42 - M88k_Bad_Hypot_Opt fix
+ * Description 43 - M88k_Bad_Hypot_Opt fix
*/
tSCC zM88k_Bad_Hypot_OptName[] =
"M88k_Bad_Hypot_Opt";
@@ -1469,7 +1546,7 @@ tSCC zM88k_Bad_Hypot_OptName[] =
* File name selection pattern
*/
tSCC zM88k_Bad_Hypot_OptList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1485,24 +1562,24 @@ tSCC* apzM88k_Bad_Hypot_OptMachs[] = {
*/
const char* apzM88k_Bad_Hypot_OptPatch[] = { "sed",
"-e", "s/extern double floor(), ceil(), fmod(), fabs();/extern double floor(), ceil(), fmod(), fabs _PARAMS((double));/",
- "-e", "/^extern double hypot();$/a\\\n\
-\\/* Workaround a stupid Motorola optimization if one\\\n\
- of x or y is 0.0 and the other is negative! *\\/\\\n\
-#ifdef __STDC__\\\n\
-static __inline__ double fake_hypot (double x, double y)\\\n\
-#else\\\n\
-static __inline__ double fake_hypot (x, y)\\\n\
-\tdouble x, y;\\\n\
-#endif\\\n\
-{\\\n\
-\treturn fabs (hypot (x, y));\\\n\
-}\\\n\
-#define hypot\tfake_hypot\n",
+ "-e", "/^extern double hypot();$/a\\\n"
+ "\\/* Workaround a stupid Motorola optimization if one\\\n"
+ " of x or y is 0.0 and the other is negative! *\\/\\\n"
+ "#ifdef __STDC__\\\n"
+ "static __inline__ double fake_hypot (double x, double y)\\\n"
+ "#else\\\n"
+ "static __inline__ double fake_hypot (x, y)\\\n"
+ "\tdouble x, y;\\\n"
+ "#endif\\\n"
+ "{\\\n"
+ "\treturn fabs (hypot (x, y));\\\n"
+ "}\\\n"
+ "#define hypot\tfake_hypot\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 43 - M88k_Bad_S_If fix
+ * Description 44 - M88k_Bad_S_If fix
*/
tSCC zM88k_Bad_S_IfName[] =
"M88k_Bad_S_If";
@@ -1510,7 +1587,7 @@ tSCC zM88k_Bad_S_IfName[] =
* File name selection pattern
*/
tSCC zM88k_Bad_S_IfList[] =
- "|sys/stat.h|";
+ "|" "sys/stat.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1539,7 +1616,7 @@ const char* apzM88k_Bad_S_IfPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 44 - M88k_Multi_Incl fix
+ * Description 45 - M88k_Multi_Incl fix
*/
tSCC zM88k_Multi_InclName[] =
"M88k_Multi_Incl";
@@ -1547,7 +1624,7 @@ tSCC zM88k_Multi_InclName[] =
* File name selection pattern
*/
tSCC zM88k_Multi_InclList[] =
- "|time.h|";
+ "|" "time.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1570,17 +1647,17 @@ tTestDesc aM88k_Multi_InclTests[] = {
* Fix Command Arguments for M88k_Multi_Incl
*/
const char* apzM88k_Multi_InclPatch[] = { "sh", "-c",
- "echo Fixing $file, to protect against multiple inclusion. >&2\n\
- cpp_wrapper=`echo $file | sed -e 's,\\.,_,g' -e 's,/,_,g'`\n\
- echo \"#ifndef __GCC_GOT_${cpp_wrapper}_\"\n\
- echo \"#define __GCC_GOT_${cpp_wrapper}_\"\n\
- cat\n\
- echo \"#endif /* ! __GCC_GOT_${cpp_wrapper}_ */\"",
+ "echo Fixing $file, to protect against multiple inclusion. >&2\n"
+ " cpp_wrapper=`echo $file | sed -e 's,\\.,_,g' -e 's,/,_,g'`\n"
+ " echo \"#ifndef __GCC_GOT_${cpp_wrapper}_\"\n"
+ " echo \"#define __GCC_GOT_${cpp_wrapper}_\"\n"
+ " cat\n"
+ " echo \"#endif /* ! __GCC_GOT_${cpp_wrapper}_ */\"",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 45 - Machine_Name fix
+ * Description 46 - Machine_Name fix
*/
tSCC zMachine_NameName[] =
"Machine_Name";
@@ -1610,46 +1687,46 @@ tTestDesc aMachine_NameTests[] = {
* Fix Command Arguments for Machine_Name
*/
const char* apzMachine_NamePatch[] = { "sed",
- "-e", ":loop\n\
-/\\\\$/N\n\
-s/\\\\$/\\\\+++fixinc_eol+++/\n\
-/\\\\$/b loop\n\
-s/\\\\+++fixinc_eol+++/\\\\/g\n\
-/#[\t ]*[el]*if/ {\n\
-\ts/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g\n\
-\ts/ M32 / __M32__ /g\n\
-\ts/ _*MIPSE\\([LB]\\) / __MIPSE\\1__ /g\n\
-\ts/ _*SYSTYPE_\\([A-Z0-9]*\\) / __SYSTYPE_\\1__ /g\n\
-\ts/ _*\\([Rr][34]\\)000 / __\\1000__ /g\n\
-\ts/ _*host_mips / __host_mips__ /g\n\
-\ts/ _*i386 / __i386__ /g\n\
-\ts/ _*mips / __mips__ /g\n\
-\ts/ bsd4\\([0-9]\\) / __bsd4\\1__ /g\n\
-\ts/ is68k / __is68k__ /g\n\
-\ts/ m68k / __m68k__ /g\n\
-\ts/ m88k / __m88k__ /g\n\
-\ts/ mc680\\([0-9]\\)0 / __mc680\\10__ /g\n\
-\ts/ news\\([0-9]*\\) / __news\\1__ /g\n\
-\ts/ ns32000 / __ns32000__ /g\n\
-\ts/ pdp11 / __pdp11__ /g\n\
-\ts/ pyr / __pyr__ /g\n\
-\ts/ sel / __sel__ /g\n\
-\ts/ sony_news / __sony_news__ /g\n\
-\ts/ sparc / __sparc__ /g\n\
-\ts/ sun\\([a-z0-9]*\\) / __sun\\1__ /g\n\
-\ts/ tahoe / __tahoe__ /g\n\
-\ts/ tower\\([_0-9]*\\) / __tower\\1__ /g\n\
-\ts/ u370 / __u370__ /g\n\
-\ts/ u3b\\([0-9]*\\) / __u3b\\1__ /g\n\
-\ts/ unix / __unix__ /g\n\
-\ts/ vax / __vax__ /g\n\
-\ts/ \\([a-zA-Z0-9_][a-zA-Z0-9_]*\\) /\\1/g\n\
-\t}",
+ "-e", ":loop\n"
+ "/\\\\$/N\n"
+ "s/\\\\$/\\\\+++fixinc_eol+++/\n"
+ "/\\\\$/b loop\n"
+ "s/\\\\+++fixinc_eol+++/\\\\/g\n"
+ "/#[\t ]*[el]*if/ {\n"
+ "\ts/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g\n"
+ "\ts/ M32 / __M32__ /g\n"
+ "\ts/ _*MIPSE\\([LB]\\) / __MIPSE\\1__ /g\n"
+ "\ts/ _*SYSTYPE_\\([A-Z0-9]*\\) / __SYSTYPE_\\1__ /g\n"
+ "\ts/ _*\\([Rr][34]\\)000 / __\\1000__ /g\n"
+ "\ts/ _*host_mips / __host_mips__ /g\n"
+ "\ts/ _*i386 / __i386__ /g\n"
+ "\ts/ _*mips / __mips__ /g\n"
+ "\ts/ bsd4\\([0-9]\\) / __bsd4\\1__ /g\n"
+ "\ts/ is68k / __is68k__ /g\n"
+ "\ts/ m68k / __m68k__ /g\n"
+ "\ts/ m88k / __m88k__ /g\n"
+ "\ts/ mc680\\([0-9]\\)0 / __mc680\\10__ /g\n"
+ "\ts/ news\\([0-9]*\\) / __news\\1__ /g\n"
+ "\ts/ ns32000 / __ns32000__ /g\n"
+ "\ts/ pdp11 / __pdp11__ /g\n"
+ "\ts/ pyr / __pyr__ /g\n"
+ "\ts/ sel / __sel__ /g\n"
+ "\ts/ sony_news / __sony_news__ /g\n"
+ "\ts/ sparc / __sparc__ /g\n"
+ "\ts/ sun\\([a-z0-9]*\\) / __sun\\1__ /g\n"
+ "\ts/ tahoe / __tahoe__ /g\n"
+ "\ts/ tower\\([_0-9]*\\) / __tower\\1__ /g\n"
+ "\ts/ u370 / __u370__ /g\n"
+ "\ts/ u3b\\([0-9]*\\) / __u3b\\1__ /g\n"
+ "\ts/ unix / __unix__ /g\n"
+ "\ts/ vax / __vax__ /g\n"
+ "\ts/ \\([a-zA-Z0-9_][a-zA-Z0-9_]*\\) /\\1/g\n"
+ "\t}",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 46 - Math_Exception fix
+ * Description 47 - Math_Exception fix
*/
tSCC zMath_ExceptionName[] =
"Math_Exception";
@@ -1657,7 +1734,7 @@ tSCC zMath_ExceptionName[] =
* File name selection pattern
*/
tSCC zMath_ExceptionList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1678,27 +1755,27 @@ tTestDesc aMath_ExceptionTests[] = {
* Fix Command Arguments for Math_Exception
*/
const char* apzMath_ExceptionPatch[] = { "sed",
- "-e", "/struct exception/i\\\n\
-#ifdef __cplusplus\\\n\
-#define exception __math_exception\\\n\
-#endif\n",
- "-e", "/struct exception/a\\\n\
-#ifdef __cplusplus\\\n\
-#undef exception\\\n\
-#endif\n",
- "-e", "/matherr/i\\\n\
-#ifdef __cplusplus\\\n\
-#define exception __math_exception\\\n\
-#endif\n",
- "-e", "/matherr/a\\\n\
-#ifdef __cplusplus\\\n\
-#undef exception\\\n\
-#endif\n",
+ "-e", "/struct exception/i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "#define exception __math_exception\\\n"
+ "#endif\n",
+ "-e", "/struct exception/a\\\n"
+ "#ifdef __cplusplus\\\n"
+ "#undef exception\\\n"
+ "#endif\n",
+ "-e", "/matherr/i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "#define exception __math_exception\\\n"
+ "#endif\n",
+ "-e", "/matherr/a\\\n"
+ "#ifdef __cplusplus\\\n"
+ "#undef exception\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 47 - Math_Gcc_Ifndefs fix
+ * Description 48 - Math_Gcc_Ifndefs fix
*/
tSCC zMath_Gcc_IfndefsName[] =
"Math_Gcc_Ifndefs";
@@ -1706,7 +1783,7 @@ tSCC zMath_Gcc_IfndefsName[] =
* File name selection pattern
*/
tSCC zMath_Gcc_IfndefsList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1719,24 +1796,24 @@ tSCC zMath_Gcc_IfndefsList[] =
* Fix Command Arguments for Math_Gcc_Ifndefs
*/
const char* apzMath_Gcc_IfndefsPatch[] = { "sh", "-c",
- "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h 2>/dev/null`\n\
-\n\
-\tif ( test -n \"${dbl_max_def}\" \\\n\
-\t\t-a -n \"`egrep '#define[ \t]*HUGE_VAL[ \t]+DBL_MAX' $file`\" \\\n\
-\t\t-a -z \"`egrep '#define[ \t]+DBL_MAX[ \t]+' $file`\"\n\
-\t ) > /dev/null 2>&1\n\
-\tthen sed -e '/define[ \t]HUGE_VAL[ \t]DBL_MAX/s/DBL_MAX/$dbl_max_def/'\n\
-\telse cat ; fi |\n\
-\tsed -e '/define[ \t]HUGE_VAL[ \t]/i\\\n\
-#ifndef HUGE_VAL\n\
-' -e '/define[ \t]HUGE_VAL[ \t]/a\\\n\
-#endif\n\
-'",
+ "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h 2>/dev/null`\n"
+ "\n"
+ "\tif ( test -n \"${dbl_max_def}\" \\\n"
+ "\t\t-a -n \"`egrep '#define[ \t]*HUGE_VAL[ \t]+DBL_MAX' $file`\" \\\n"
+ "\t\t-a -z \"`egrep '#define[ \t]+DBL_MAX[ \t]+' $file`\"\n"
+ "\t ) > /dev/null 2>&1\n"
+ "\tthen sed -e '/define[ \t]HUGE_VAL[ \t]DBL_MAX/s/DBL_MAX/$dbl_max_def/'\n"
+ "\telse cat ; fi |\n"
+ "\tsed -e'/define[ \t]HUGE_VAL[ \t]/i\\\n"
+ "#ifndef HUGE_VAL\n"
+ "' -e'/define[ \t]HUGE_VAL[ \t]/a\\\n"
+ "#endif\n"
+ "'",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 48 - Nested_Comment fix
+ * Description 49 - Nested_Comment fix
*/
tSCC zNested_CommentName[] =
"Nested_Comment";
@@ -1744,7 +1821,7 @@ tSCC zNested_CommentName[] =
* File name selection pattern
*/
tSCC zNested_CommentList[] =
- "|rpc/rpc.h|";
+ "|" "rpc/rpc.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1762,7 +1839,7 @@ const char* apzNested_CommentPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 49 - News_Os_Recursion fix
+ * Description 50 - News_Os_Recursion fix
*/
tSCC zNews_Os_RecursionName[] =
"News_Os_Recursion";
@@ -1770,7 +1847,7 @@ tSCC zNews_Os_RecursionName[] =
* File name selection pattern
*/
tSCC zNews_Os_RecursionList[] =
- "|stdlib.h|";
+ "|" "stdlib.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1791,15 +1868,15 @@ tTestDesc aNews_Os_RecursionTests[] = {
* Fix Command Arguments for News_Os_Recursion
*/
const char* apzNews_Os_RecursionPatch[] = { "sed",
- "-e", "/^#include <stdlib.h>/i\\\n\
-#ifdef BOGUS_RECURSION\n",
- "-e", "/^#include <stdlib.h>/a\\\n\
-#endif\n",
+ "-e", "/^#include <stdlib.h>/i\\\n"
+ "#ifdef BOGUS_RECURSION\n",
+ "-e", "/^#include <stdlib.h>/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 50 - Next_Math_Prefix fix
+ * Description 51 - Next_Math_Prefix fix
*/
tSCC zNext_Math_PrefixName[] =
"Next_Math_Prefix";
@@ -1807,7 +1884,7 @@ tSCC zNext_Math_PrefixName[] =
* File name selection pattern
*/
tSCC zNext_Math_PrefixList[] =
- "|ansi/math.h|";
+ "|" "ansi/math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1837,7 +1914,7 @@ const char* apzNext_Math_PrefixPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 51 - Next_Template fix
+ * Description 52 - Next_Template fix
*/
tSCC zNext_TemplateName[] =
"Next_Template";
@@ -1845,7 +1922,7 @@ tSCC zNext_TemplateName[] =
* File name selection pattern
*/
tSCC zNext_TemplateList[] =
- "|bsd/libc.h|";
+ "|" "bsd/libc.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1872,7 +1949,7 @@ const char* apzNext_TemplatePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 52 - Next_Volitile fix
+ * Description 53 - Next_Volitile fix
*/
tSCC zNext_VolitileName[] =
"Next_Volitile";
@@ -1880,7 +1957,7 @@ tSCC zNext_VolitileName[] =
* File name selection pattern
*/
tSCC zNext_VolitileList[] =
- "|ansi/stdlib.h|";
+ "|" "ansi/stdlib.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1907,7 +1984,7 @@ const char* apzNext_VolitilePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 53 - Next_Wait_Union fix
+ * Description 54 - Next_Wait_Union fix
*/
tSCC zNext_Wait_UnionName[] =
"Next_Wait_Union";
@@ -1915,7 +1992,7 @@ tSCC zNext_Wait_UnionName[] =
* File name selection pattern
*/
tSCC zNext_Wait_UnionList[] =
- "|sys/wait.h|";
+ "|" "sys/wait.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1941,7 +2018,7 @@ const char* apzNext_Wait_UnionPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 54 - Nodeent_Syntax fix
+ * Description 55 - Nodeent_Syntax fix
*/
tSCC zNodeent_SyntaxName[] =
"Nodeent_Syntax";
@@ -1949,7 +2026,7 @@ tSCC zNodeent_SyntaxName[] =
* File name selection pattern
*/
tSCC zNodeent_SyntaxList[] =
- "|netdnet/dnetdb.h|";
+ "|" "netdnet/dnetdb.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -1967,7 +2044,7 @@ const char* apzNodeent_SyntaxPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 55 - Osf_Namespace_A fix
+ * Description 56 - Osf_Namespace_A fix
*/
tSCC zOsf_Namespace_AName[] =
"Osf_Namespace_A";
@@ -1975,7 +2052,8 @@ tSCC zOsf_Namespace_AName[] =
* File name selection pattern
*/
tSCC zOsf_Namespace_AList[] =
- "|reg_types.h|sys/lc_core.h|";
+ "|" "reg_types.h"
+ "|" "sys/lc_core.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2012,7 +2090,7 @@ const char* apzOsf_Namespace_APatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 56 - Osf_Namespace_B fix
+ * Description 57 - Osf_Namespace_B fix
*/
tSCC zOsf_Namespace_BName[] =
"Osf_Namespace_B";
@@ -2020,7 +2098,7 @@ tSCC zOsf_Namespace_BName[] =
* File name selection pattern
*/
tSCC zOsf_Namespace_BList[] =
- "|regex.h|";
+ "|" "regex.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2050,15 +2128,15 @@ tTestDesc aOsf_Namespace_BTests[] = {
* Fix Command Arguments for Osf_Namespace_B
*/
const char* apzOsf_Namespace_BPatch[] = { "sed",
- "-e", "/#include <reg_types.h>/a\\\n\
-typedef __regex_t\tregex_t;\\\n\
-typedef __regoff_t\tregoff_t;\\\n\
-typedef __regmatch_t\tregmatch_t;\n",
+ "-e", "/#include <reg_types.h>/a\\\n"
+ "typedef __regex_t\tregex_t;\\\n"
+ "typedef __regoff_t\tregoff_t;\\\n"
+ "typedef __regmatch_t\tregmatch_t;\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 57 - Pthread_Page_Size fix
+ * Description 58 - Pthread_Page_Size fix
*/
tSCC zPthread_Page_SizeName[] =
"Pthread_Page_Size";
@@ -2066,7 +2144,7 @@ tSCC zPthread_Page_SizeName[] =
* File name selection pattern
*/
tSCC zPthread_Page_SizeList[] =
- "|pthread.h|";
+ "|" "pthread.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2092,7 +2170,7 @@ const char* apzPthread_Page_SizePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 58 - Rs6000_Double fix
+ * Description 59 - Rs6000_Double fix
*/
tSCC zRs6000_DoubleName[] =
"Rs6000_Double";
@@ -2100,7 +2178,7 @@ tSCC zRs6000_DoubleName[] =
* File name selection pattern
*/
tSCC zRs6000_DoubleList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2121,15 +2199,15 @@ tTestDesc aRs6000_DoubleTests[] = {
* Fix Command Arguments for Rs6000_Double
*/
const char* apzRs6000_DoublePatch[] = { "sed",
- "-e", "/class[(]/i\\\n\
-#ifndef __cplusplus\n",
- "-e", "/class[(]/a\\\n\
-#endif\n",
+ "-e", "/class[(]/i\\\n"
+ "#ifndef __cplusplus\n",
+ "-e", "/class[(]/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 59 - Rs6000_Fchmod fix
+ * Description 60 - Rs6000_Fchmod fix
*/
tSCC zRs6000_FchmodName[] =
"Rs6000_Fchmod";
@@ -2137,7 +2215,7 @@ tSCC zRs6000_FchmodName[] =
* File name selection pattern
*/
tSCC zRs6000_FchmodList[] =
- "|sys/stat.h|";
+ "|" "sys/stat.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2163,7 +2241,7 @@ const char* apzRs6000_FchmodPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 60 - Rs6000_Param fix
+ * Description 61 - Rs6000_Param fix
*/
tSCC zRs6000_ParamName[] =
"Rs6000_Param";
@@ -2171,7 +2249,8 @@ tSCC zRs6000_ParamName[] =
* File name selection pattern
*/
tSCC zRs6000_ParamList[] =
- "|stdio.h|unistd.h|";
+ "|" "stdio.h"
+ "|" "unistd.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2189,7 +2268,7 @@ const char* apzRs6000_ParamPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 61 - Sony_Include fix
+ * Description 62 - Sony_Include fix
*/
tSCC zSony_IncludeName[] =
"Sony_Include";
@@ -2197,7 +2276,7 @@ tSCC zSony_IncludeName[] =
* File name selection pattern
*/
tSCC zSony_IncludeList[] =
- "|machine/machparam.h|";
+ "|" "machine/machparam.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2223,7 +2302,7 @@ const char* apzSony_IncludePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 62 - Statsswtch fix
+ * Description 63 - Statsswtch fix
*/
tSCC zStatsswtchName[] =
"Statsswtch";
@@ -2231,7 +2310,7 @@ tSCC zStatsswtchName[] =
* File name selection pattern
*/
tSCC zStatsswtchList[] =
- "|rpcsvc/rstat.h|";
+ "|" "rpcsvc/rstat.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2257,7 +2336,7 @@ const char* apzStatsswtchPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 63 - Stdio_Va_List fix
+ * Description 64 - Stdio_Va_List fix
*/
tSCC zStdio_Va_ListName[] =
"Stdio_Va_List";
@@ -2265,7 +2344,7 @@ tSCC zStdio_Va_ListName[] =
* File name selection pattern
*/
tSCC zStdio_Va_ListList[] =
- "|stdio.h|";
+ "|" "stdio.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2278,29 +2357,29 @@ tSCC zStdio_Va_ListList[] =
* Fix Command Arguments for Stdio_Va_List
*/
const char* apzStdio_Va_ListPatch[] = { "sh", "-c",
- "if ( egrep \"__need___va_list\" $file ) > /dev/null 2>&1 ; then\n\
- :\n\
- else\n\
- echo \"#define __need___va_list\"\n\
- echo \"#include <stdarg.h>\"\n\
- fi\n\
-\n\
- sed -e 's@ va_list @ __gnuc_va_list @' \\\n\
- -e 's@ va_list)@ __gnuc_va_list)@' \\\n\
- -e 's@ _BSD_VA_LIST_));@ __gnuc_va_list));@' \\\n\
- -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \\\n\
- -e 's@ va_list@ __va_list__@' \\\n\
- -e 's@\\*va_list@*__va_list__@' \\\n\
- -e 's@ __va_list)@ __gnuc_va_list)@' \\\n\
- -e 's@GNUC_VA_LIST@GNUC_Va_LIST@' \\\n\
- -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \\\n\
- -e 's@VA_LIST@DUMMY_VA_LIST@' \\\n\
- -e 's@_Va_LIST@_VA_LIST@'",
+ "if ( egrep \"__need___va_list\" $file ) > /dev/null 2>&1 ; then\n"
+ " :\n"
+ " else\n"
+ " echo \"#define __need___va_list\"\n"
+ " echo \"#include <stdarg.h>\"\n"
+ " fi\n"
+ "\n"
+ " sed -e 's@ va_list @ __gnuc_va_list @' \\\n"
+ " -e 's@ va_list)@ __gnuc_va_list)@' \\\n"
+ " -e 's@ _BSD_VA_LIST_));@ __gnuc_va_list));@' \\\n"
+ " -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \\\n"
+ " -e 's@ va_list@ __va_list__@' \\\n"
+ " -e 's@\\*va_list@*__va_list__@' \\\n"
+ " -e 's@ __va_list)@ __gnuc_va_list)@' \\\n"
+ " -e 's@GNUC_VA_LIST@GNUC_Va_LIST@' \\\n"
+ " -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \\\n"
+ " -e 's@VA_LIST@DUMMY_VA_LIST@' \\\n"
+ " -e 's@_Va_LIST@_VA_LIST@'",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 64 - Sun_Bogus_Ifdef fix
+ * Description 65 - Sun_Bogus_Ifdef fix
*/
tSCC zSun_Bogus_IfdefName[] =
"Sun_Bogus_Ifdef";
@@ -2308,7 +2387,8 @@ tSCC zSun_Bogus_IfdefName[] =
* File name selection pattern
*/
tSCC zSun_Bogus_IfdefList[] =
- "|hsfs/hsfs_spec.h|hsfs/iso_spec.h|";
+ "|" "hsfs/hsfs_spec.h"
+ "|" "hsfs/iso_spec.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2334,7 +2414,7 @@ const char* apzSun_Bogus_IfdefPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 65 - Sun_Bogus_Ifdef_Sun4c fix
+ * Description 66 - Sun_Bogus_Ifdef_Sun4c fix
*/
tSCC zSun_Bogus_Ifdef_Sun4cName[] =
"Sun_Bogus_Ifdef_Sun4c";
@@ -2342,7 +2422,7 @@ tSCC zSun_Bogus_Ifdef_Sun4cName[] =
* File name selection pattern
*/
tSCC zSun_Bogus_Ifdef_Sun4cList[] =
- "|hsfs/hsnode.h|";
+ "|" "hsfs/hsnode.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2368,7 +2448,7 @@ const char* apzSun_Bogus_Ifdef_Sun4cPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 66 - Sun_Catmacro fix
+ * Description 67 - Sun_Catmacro fix
*/
tSCC zSun_CatmacroName[] =
"Sun_Catmacro";
@@ -2376,7 +2456,7 @@ tSCC zSun_CatmacroName[] =
* File name selection pattern
*/
tSCC zSun_CatmacroList[] =
- "|pixrect/memvar.h|";
+ "|" "pixrect/memvar.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2386,7 +2466,7 @@ tSCC zSun_CatmacroList[] =
* content selection pattern - do fix if pattern found
*/
tSCC zSun_CatmacroSelect0[] =
- "^#define[ \t]+CAT\\(a,b\\)";
+ "^#define[ \t]+CAT(a,b)";
#define SUN_CATMACRO_TEST_CT 1
#define SUN_CATMACRO_RE_CT 1
@@ -2397,17 +2477,17 @@ tTestDesc aSun_CatmacroTests[] = {
* Fix Command Arguments for Sun_Catmacro
*/
const char* apzSun_CatmacroPatch[] = { "sed",
- "-e", "/^#define[ \t]CAT(a,b)/ i\\\n\
-#ifdef __STDC__ \\\n\
-#define CAT(a,b) a##b\\\n\
-#else\n",
- "-e", "/^#define[ \t]CAT(a,b)/ a\\\n\
-#endif\n",
+ "-e", "/^#define[ \t]CAT(a,b)/ i\\\n"
+ "#ifdef __STDC__ \\\n"
+ "#define CAT(a,b) a##b\\\n"
+ "#else\n",
+ "-e", "/^#define[ \t]CAT(a,b)/ a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 67 - Sun_Malloc fix
+ * Description 68 - Sun_Malloc fix
*/
tSCC zSun_MallocName[] =
"Sun_Malloc";
@@ -2415,7 +2495,7 @@ tSCC zSun_MallocName[] =
* File name selection pattern
*/
tSCC zSun_MallocList[] =
- "|malloc.h|";
+ "|" "malloc.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2436,7 +2516,7 @@ const char* apzSun_MallocPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 68 - Sun_Memcpy fix
+ * Description 69 - Sun_Memcpy fix
*/
tSCC zSun_MemcpyName[] =
"Sun_Memcpy";
@@ -2444,7 +2524,7 @@ tSCC zSun_MemcpyName[] =
* File name selection pattern
*/
tSCC zSun_MemcpyList[] =
- "|memory.h|";
+ "|" "memory.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2465,32 +2545,32 @@ tTestDesc aSun_MemcpyTests[] = {
* Fix Command Arguments for Sun_Memcpy
*/
const char* apzSun_MemcpyPatch[] = { "sed",
- "-e", "1i\\\n\
-/* This file was generated by fixincludes */\\\n\
-#ifndef __memory_h__\\\n\
-#define __memory_h__\\\n\
-\\\n\
-#ifdef __STDC__\\\n\
-extern void *memccpy();\\\n\
-extern void *memchr();\\\n\
-extern void *memcpy();\\\n\
-extern void *memset();\\\n\
-#else\\\n\
-extern char *memccpy();\\\n\
-extern char *memchr();\\\n\
-extern char *memcpy();\\\n\
-extern char *memset();\\\n\
-#endif /* __STDC__ */\\\n\
-\\\n\
-extern int memcmp();\\\n\
-\\\n\
-#endif /* __memory_h__ */\n",
+ "-e", "1i\\\n"
+ "/* This file was generated by fixincludes */\\\n"
+ "#ifndef __memory_h__\\\n"
+ "#define __memory_h__\\\n"
+ "\\\n"
+ "#ifdef __STDC__\\\n"
+ "extern void *memccpy();\\\n"
+ "extern void *memchr();\\\n"
+ "extern void *memcpy();\\\n"
+ "extern void *memset();\\\n"
+ "#else\\\n"
+ "extern char *memccpy();\\\n"
+ "extern char *memchr();\\\n"
+ "extern char *memcpy();\\\n"
+ "extern char *memset();\\\n"
+ "#endif /* __STDC__ */\\\n"
+ "\\\n"
+ "extern int memcmp();\\\n"
+ "\\\n"
+ "#endif /* __memory_h__ */\n",
"-e", "1,$d",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 69 - Sun_Rusers_Semi fix
+ * Description 70 - Sun_Rusers_Semi fix
*/
tSCC zSun_Rusers_SemiName[] =
"Sun_Rusers_Semi";
@@ -2498,7 +2578,7 @@ tSCC zSun_Rusers_SemiName[] =
* File name selection pattern
*/
tSCC zSun_Rusers_SemiList[] =
- "|rpcsvc/rusers.h|";
+ "|" "rpcsvc/rusers.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2524,7 +2604,7 @@ const char* apzSun_Rusers_SemiPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 70 - Sun_Signal fix
+ * Description 71 - Sun_Signal fix
*/
tSCC zSun_SignalName[] =
"Sun_Signal";
@@ -2532,7 +2612,8 @@ tSCC zSun_SignalName[] =
* File name selection pattern
*/
tSCC zSun_SignalList[] =
- "|sys/signal.h|signal.h|";
+ "|" "sys/signal.h"
+ "|" "signal.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2553,17 +2634,17 @@ tTestDesc aSun_SignalTests[] = {
* Fix Command Arguments for Sun_Signal
*/
const char* apzSun_SignalPatch[] = { "sed",
- "-e", "/^void\t(\\*signal())();$/i\\\n\
-#ifdef __cplusplus\\\n\
-void\t(*signal(...))(...);\\\n\
-#else\n",
- "-e", "/^void\t(\\*signal())();$/a\\\n\
-#endif\n",
+ "-e", "/^void\t(\\*signal())();$/i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "void\t(*signal(...))(...);\\\n"
+ "#else\n",
+ "-e", "/^void\t(\\*signal())();$/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 71 - Sun_Auth_Proto fix
+ * Description 72 - Sun_Auth_Proto fix
*/
tSCC zSun_Auth_ProtoName[] =
"Sun_Auth_Proto";
@@ -2571,7 +2652,10 @@ tSCC zSun_Auth_ProtoName[] =
* File name selection pattern
*/
tSCC zSun_Auth_ProtoList[] =
- "|rpc/auth.h|rpc/clnt.h|rpc/svc.h|rpc/xdr.h|";
+ "|" "rpc/auth.h"
+ "|" "rpc/clnt.h"
+ "|" "rpc/svc.h"
+ "|" "rpc/xdr.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2583,26 +2667,33 @@ tSCC zSun_Auth_ProtoList[] =
tSCC zSun_Auth_ProtoSelect0[] =
"\\(\\*[a-z][a-z_]*\\)\\(\\)";
-#define SUN_AUTH_PROTO_TEST_CT 1
-#define SUN_AUTH_PROTO_RE_CT 1
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSun_Auth_ProtoBypass0[] =
+ "\\(\\*[a-z][a-z_]*\\)\\([ \t]*[a-zA-Z.].*\\)";
+
+#define SUN_AUTH_PROTO_TEST_CT 2
+#define SUN_AUTH_PROTO_RE_CT 2
tTestDesc aSun_Auth_ProtoTests[] = {
+ { TT_NEGREP, zSun_Auth_ProtoBypass0, (regex_t*)NULL },
{ TT_EGREP, zSun_Auth_ProtoSelect0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Sun_Auth_Proto
*/
const char* apzSun_Auth_ProtoPatch[] = { "sed",
- "-e", "s/^\\(.*(\\*[a-z][a-z_]*)(\\)\\();.*\\)/\\\n\
-#ifdef __cplusplus\\\n\
-\\1...\\2\\\n\
-#else\\\n\
-\\1\\2\\\n\
-#endif/",
+ "-e", "s/^\\(.*(\\*[a-z][a-z_]*)(\\)\\();.*\\)/\\\n"
+ "#ifdef __cplusplus\\\n"
+ "\\1...\\2\\\n"
+ "#else\\\n"
+ "\\1\\2\\\n"
+ "#endif/",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 72 - Sunos_Matherr_Decl fix
+ * Description 73 - Sunos_Matherr_Decl fix
*/
tSCC zSunos_Matherr_DeclName[] =
"Sunos_Matherr_Decl";
@@ -2610,7 +2701,7 @@ tSCC zSunos_Matherr_DeclName[] =
* File name selection pattern
*/
tSCC zSunos_Matherr_DeclList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2624,13 +2715,13 @@ tSCC zSunos_Matherr_DeclList[] =
*/
const char* apzSunos_Matherr_DeclPatch[] = { "sed",
"-e", "/^struct exception/,$b",
- "-e", "/matherr/i\\\n\
-struct exception;\n",
+ "-e", "/matherr/i\\\n"
+ "struct exception;\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 73 - Sunos_Strlen fix
+ * Description 74 - Sunos_Strlen fix
*/
tSCC zSunos_StrlenName[] =
"Sunos_Strlen";
@@ -2638,7 +2729,7 @@ tSCC zSunos_StrlenName[] =
* File name selection pattern
*/
tSCC zSunos_StrlenList[] =
- "|strings.h|";
+ "|" "strings.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2656,7 +2747,7 @@ const char* apzSunos_StrlenPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 74 - Systypes fix
+ * Description 75 - Systypes fix
*/
tSCC zSystypesName[] =
"Systypes";
@@ -2664,7 +2755,12 @@ tSCC zSystypesName[] =
* File name selection pattern
*/
tSCC zSystypesList[] =
- "|sys/types.h|stdlib.h|sys/stdtypes.h|stddef.h|memory.h|unistd.h|";
+ "|" "sys/types.h"
+ "|" "stdlib.h"
+ "|" "sys/stdtypes.h"
+ "|" "stddef.h"
+ "|" "memory.h"
+ "|" "unistd.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2686,35 +2782,35 @@ tTestDesc aSystypesTests[] = {
*/
const char* apzSystypesPatch[] = { "sed",
"-e", "/^[ \t]*\\*[ \t]*typedef unsigned int size_t;/N",
- "-e", "s/^\\([ \t]*\\*[ \t]*typedef unsigned int size_t;\\n[ \t]*\\*\\/\\)/\\1\\\n\
-#ifndef __SIZE_TYPE__\\\n\
-#define __SIZE_TYPE__ long unsigned int\\\n\
-#endif\\\n\
-typedef __SIZE_TYPE__ size_t;\\\n\
-/",
- "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]size_t/i\\\n\
-#ifndef __SIZE_TYPE__\\\n\
-#define __SIZE_TYPE__ long unsigned int\\\n\
-#endif\n",
+ "-e", "s/^\\([ \t]*\\*[ \t]*typedef unsigned int size_t;\\n[ \t]*\\*\\/\\)/\\1\\\n"
+ "#ifndef __SIZE_TYPE__\\\n"
+ "#define __SIZE_TYPE__ long unsigned int\\\n"
+ "#endif\\\n"
+ "typedef __SIZE_TYPE__ size_t;\\\n"
+ "/",
+ "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]size_t/i\\\n"
+ "#ifndef __SIZE_TYPE__\\\n"
+ "#define __SIZE_TYPE__ long unsigned int\\\n"
+ "#endif\n",
"-e", "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]size_t/typedef __SIZE_TYPE__ size_t/",
- "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/i\\\n\
-#ifndef __PTRDIFF_TYPE__\\\n\
-#define __PTRDIFF_TYPE__ long int\\\n\
-#endif\n",
+ "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/i\\\n"
+ "#ifndef __PTRDIFF_TYPE__\\\n"
+ "#define __PTRDIFF_TYPE__ long int\\\n"
+ "#endif\n",
"-e", "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/",
- "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/i\\\n\
-#ifndef __WCHAR_TYPE__\\\n\
-#define __WCHAR_TYPE__ int\\\n\
-#endif\\\n\
-#ifndef __cplusplus\n",
- "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/a\\\n\
-#endif\n",
+ "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/i\\\n"
+ "#ifndef __WCHAR_TYPE__\\\n"
+ "#define __WCHAR_TYPE__ int\\\n"
+ "#endif\\\n"
+ "#ifndef __cplusplus\n",
+ "-e", "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/a\\\n"
+ "#endif\n",
"-e", "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/typedef __WCHAR_TYPE__ wchar_t/",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 75 - Systypes_For_Aix fix
+ * Description 76 - Systypes_For_Aix fix
*/
tSCC zSystypes_For_AixName[] =
"Systypes_For_Aix";
@@ -2722,7 +2818,7 @@ tSCC zSystypes_For_AixName[] =
* File name selection pattern
*/
tSCC zSystypes_For_AixList[] =
- "|sys/types.h|";
+ "|" "sys/types.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2750,16 +2846,16 @@ tTestDesc aSystypes_For_AixTests[] = {
* Fix Command Arguments for Systypes_For_Aix
*/
const char* apzSystypes_For_AixPatch[] = { "sed",
- "-e", "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/i\\\n\
-#ifndef _GCC_SIZE_T\\\n\
-#define _GCC_SIZE_T\n",
- "-e", "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/a\\\n\
-#endif\n",
+ "-e", "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/i\\\n"
+ "#ifndef _GCC_SIZE_T\\\n"
+ "#define _GCC_SIZE_T\n",
+ "-e", "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 76 - Sysv68_String fix
+ * Description 77 - Sysv68_String fix
*/
tSCC zSysv68_StringName[] =
"Sysv68_String";
@@ -2767,7 +2863,7 @@ tSCC zSysv68_StringName[] =
* File name selection pattern
*/
tSCC zSysv68_StringList[] =
- "|string.h|";
+ "|" "string.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2786,16 +2882,16 @@ const char* apzSysv68_StringPatch[] = { "sed",
"-e", "/^extern char$/N",
"-e", "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/",
"-e", "/^\tstrncmp(),$/N",
- "-e", "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n\
-extern unsigned int\\\n\
-\\2/",
+ "-e", "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n"
+ "extern unsigned int\\\n"
+ "\\2/",
"-e", "/^extern int$/N",
"-e", "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 77 - Sysz_Stdlib_For_Sun fix
+ * Description 78 - Sysz_Stdlib_For_Sun fix
*/
tSCC zSysz_Stdlib_For_SunName[] =
"Sysz_Stdlib_For_Sun";
@@ -2803,7 +2899,7 @@ tSCC zSysz_Stdlib_For_SunName[] =
* File name selection pattern
*/
tSCC zSysz_Stdlib_For_SunList[] =
- "|stdlib.h|";
+ "|" "stdlib.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2821,18 +2917,17 @@ const char* apzSysz_Stdlib_For_SunPatch[] = { "sed",
"-e", "s/char[ \t]*\\*[ \t]*calloc/void \\*\tcalloc/g",
"-e", "s/char[ \t]*\\*[ \t]*malloc/void \\*\tmalloc/g",
"-e", "s/char[ \t]*\\*[ \t]*realloc/void \\*\trealloc/g",
- "-e", "s/char[ \t]*\\*[ \t]*bsearch/void \\*\tbsearch/g",
"-e", "s/int[ \t][ \t]*exit/void\texit/g",
- "-e", "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/i\\\n\
-#ifndef _GCC_SIZE_T\\\n\
-#define _GCC_SIZE_T\n",
- "-e", "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/a\\\n\
-#endif\n",
+ "-e", "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/i\\\n"
+ "#ifndef _GCC_SIZE_T\\\n"
+ "#define _GCC_SIZE_T\n",
+ "-e", "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 78 - Sysz_Stdtypes_For_Sun fix
+ * Description 79 - Sysz_Stdtypes_For_Sun fix
*/
tSCC zSysz_Stdtypes_For_SunName[] =
"Sysz_Stdtypes_For_Sun";
@@ -2840,7 +2935,7 @@ tSCC zSysz_Stdtypes_For_SunName[] =
* File name selection pattern
*/
tSCC zSysz_Stdtypes_For_SunList[] =
- "|sys/stdtypes.h|";
+ "|" "sys/stdtypes.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2853,26 +2948,26 @@ tSCC zSysz_Stdtypes_For_SunList[] =
* Fix Command Arguments for Sysz_Stdtypes_For_Sun
*/
const char* apzSysz_Stdtypes_For_SunPatch[] = { "sed",
- "-e", "/[\t ]size_t.*;/i\\\n\
-#ifndef _GCC_SIZE_T\\\n\
-#define _GCC_SIZE_T\n",
- "-e", "/[\t ]size_t.*;/a\\\n\
-#endif\n",
- "-e", "/[\t ]ptrdiff_t.*;/i\\\n\
-#ifndef _GCC_PTRDIFF_T\\\n\
-#define _GCC_PTRDIFF_T\n",
- "-e", "/[\t ]ptrdiff_t.*;/a\\\n\
-#endif\n",
- "-e", "/[\t ]wchar_t.*;/i\\\n\
-#ifndef _GCC_WCHAR_T\\\n\
-#define _GCC_WCHAR_T\n",
- "-e", "/[\t ]wchar_t.*;/a\\\n\
-#endif\n",
+ "-e", "/[\t ]size_t.*;/i\\\n"
+ "#ifndef _GCC_SIZE_T\\\n"
+ "#define _GCC_SIZE_T\n",
+ "-e", "/[\t ]size_t.*;/a\\\n"
+ "#endif\n",
+ "-e", "/[\t ]ptrdiff_t.*;/i\\\n"
+ "#ifndef _GCC_PTRDIFF_T\\\n"
+ "#define _GCC_PTRDIFF_T\n",
+ "-e", "/[\t ]ptrdiff_t.*;/a\\\n"
+ "#endif\n",
+ "-e", "/[\t ]wchar_t.*;/i\\\n"
+ "#ifndef _GCC_WCHAR_T\\\n"
+ "#define _GCC_WCHAR_T\n",
+ "-e", "/[\t ]wchar_t.*;/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 79 - Tinfo_Cplusplus fix
+ * Description 80 - Tinfo_Cplusplus fix
*/
tSCC zTinfo_CplusplusName[] =
"Tinfo_Cplusplus";
@@ -2880,7 +2975,7 @@ tSCC zTinfo_CplusplusName[] =
* File name selection pattern
*/
tSCC zTinfo_CplusplusList[] =
- "|tinfo.h|";
+ "|" "tinfo.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2898,7 +2993,7 @@ const char* apzTinfo_CplusplusPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 80 - Ultrix_Ansi_Compat fix
+ * Description 81 - Ultrix_Ansi_Compat fix
*/
tSCC zUltrix_Ansi_CompatName[] =
"Ultrix_Ansi_Compat";
@@ -2906,7 +3001,7 @@ tSCC zUltrix_Ansi_CompatName[] =
* File name selection pattern
*/
tSCC zUltrix_Ansi_CompatList[] =
- "|ansi_compat.h|";
+ "|" "ansi_compat.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2927,14 +3022,14 @@ tTestDesc aUltrix_Ansi_CompatTests[] = {
* Fix Command Arguments for Ultrix_Ansi_Compat
*/
const char* apzUltrix_Ansi_CompatPatch[] = { "sed",
- "-e", "1i\\\n\
-/* This file intentionally left blank. */\n",
+ "-e", "1i\\\n"
+ "/* This file intentionally left blank. */\n",
"-e", "1,$d",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 81 - Ultrix_Fix_Fixproto fix
+ * Description 82 - Ultrix_Fix_Fixproto fix
*/
tSCC zUltrix_Fix_FixprotoName[] =
"Ultrix_Fix_Fixproto";
@@ -2942,7 +3037,7 @@ tSCC zUltrix_Fix_FixprotoName[] =
* File name selection pattern
*/
tSCC zUltrix_Fix_FixprotoList[] =
- "|sys/utsname.h|";
+ "|" "sys/utsname.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2963,13 +3058,13 @@ tTestDesc aUltrix_Fix_FixprotoTests[] = {
* Fix Command Arguments for Ultrix_Fix_Fixproto
*/
const char* apzUltrix_Fix_FixprotoPatch[] = { "sed",
- "-e", "/^[ \t]*extern[ \t]*int[ \t]*uname();$/i\\\n\
-struct utsname;\n",
+ "-e", "/^[ \t]*extern[ \t]*int[ \t]*uname();$/i\\\n"
+ "struct utsname;\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 82 - Ultrix_Atof_Param fix
+ * Description 83 - Ultrix_Atof_Param fix
*/
tSCC zUltrix_Atof_ParamName[] =
"Ultrix_Atof_Param";
@@ -2977,7 +3072,7 @@ tSCC zUltrix_Atof_ParamName[] =
* File name selection pattern
*/
tSCC zUltrix_Atof_ParamList[] =
- "|math.h|";
+ "|" "math.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -2999,7 +3094,7 @@ const char* apzUltrix_Atof_ParamPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 83 - Ultrix_Const fix
+ * Description 84 - Ultrix_Const fix
*/
tSCC zUltrix_ConstName[] =
"Ultrix_Const";
@@ -3007,7 +3102,7 @@ tSCC zUltrix_ConstName[] =
* File name selection pattern
*/
tSCC zUltrix_ConstList[] =
- "|stdio.h|";
+ "|" "stdio.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3033,7 +3128,7 @@ const char* apzUltrix_ConstPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 84 - Ultrix_Ifdef fix
+ * Description 85 - Ultrix_Ifdef fix
*/
tSCC zUltrix_IfdefName[] =
"Ultrix_Ifdef";
@@ -3041,7 +3136,7 @@ tSCC zUltrix_IfdefName[] =
* File name selection pattern
*/
tSCC zUltrix_IfdefList[] =
- "|sys/file.h|";
+ "|" "sys/file.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3067,7 +3162,7 @@ const char* apzUltrix_IfdefPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 85 - Ultrix_Nested_Cmnt fix
+ * Description 86 - Ultrix_Nested_Cmnt fix
*/
tSCC zUltrix_Nested_CmntName[] =
"Ultrix_Nested_Cmnt";
@@ -3075,7 +3170,7 @@ tSCC zUltrix_Nested_CmntName[] =
* File name selection pattern
*/
tSCC zUltrix_Nested_CmntList[] =
- "|rpc/svc.h|";
+ "|" "rpc/svc.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3093,7 +3188,7 @@ const char* apzUltrix_Nested_CmntPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 86 - Ultrix_Static fix
+ * Description 87 - Ultrix_Static fix
*/
tSCC zUltrix_StaticName[] =
"Ultrix_Static";
@@ -3101,7 +3196,7 @@ tSCC zUltrix_StaticName[] =
* File name selection pattern
*/
tSCC zUltrix_StaticList[] =
- "|machine/cpu.h|";
+ "|" "machine/cpu.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3129,7 +3224,7 @@ const char* apzUltrix_StaticPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 87 - Undefine_Null fix
+ * Description 88 - Undefine_Null fix
*/
tSCC zUndefine_NullName[] =
"Undefine_Null";
@@ -3164,13 +3259,13 @@ tTestDesc aUndefine_NullTests[] = {
* Fix Command Arguments for Undefine_Null
*/
const char* apzUndefine_NullPatch[] = { "sed",
- "-e", "/^#[ \t]*define[ \t][ \t]*NULL[ \t]/i\\\n\
-#undef NULL\n",
+ "-e", "/^#[ \t]*define[ \t][ \t]*NULL[ \t]/i\\\n"
+ "#undef NULL\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 88 - Va_I960_Macro fix
+ * Description 89 - Va_I960_Macro fix
*/
tSCC zVa_I960_MacroName[] =
"Va_I960_Macro";
@@ -3178,7 +3273,7 @@ tSCC zVa_I960_MacroName[] =
* File name selection pattern
*/
tSCC zVa_I960_MacroList[] =
- "|arch/i960/archI960.h|";
+ "|" "arch/i960/archI960.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3207,7 +3302,7 @@ const char* apzVa_I960_MacroPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 89 - Void_Null fix
+ * Description 90 - Void_Null fix
*/
tSCC zVoid_NullName[] =
"Void_Null";
@@ -3215,7 +3310,17 @@ tSCC zVoid_NullName[] =
* File name selection pattern
*/
tSCC zVoid_NullList[] =
- "|curses.h|dbm.h|locale.h|stdio.h|stdlib.h|string.h|time.h|unistd.h|sys/dir.h|sys/param.h|sys/types.h|";
+ "|" "curses.h"
+ "|" "dbm.h"
+ "|" "locale.h"
+ "|" "stdio.h"
+ "|" "stdlib.h"
+ "|" "string.h"
+ "|" "time.h"
+ "|" "unistd.h"
+ "|" "sys/dir.h"
+ "|" "sys/param.h"
+ "|" "sys/types.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3241,7 +3346,7 @@ const char* apzVoid_NullPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 90 - Vxworks_Gcc_Problem fix
+ * Description 91 - Vxworks_Gcc_Problem fix
*/
tSCC zVxworks_Gcc_ProblemName[] =
"Vxworks_Gcc_Problem";
@@ -3249,7 +3354,7 @@ tSCC zVxworks_Gcc_ProblemName[] =
* File name selection pattern
*/
tSCC zVxworks_Gcc_ProblemList[] =
- "|types/vxTypesBase.h|";
+ "|" "types/vxTypesBase.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3271,26 +3376,26 @@ tTestDesc aVxworks_Gcc_ProblemTests[] = {
*/
const char* apzVxworks_Gcc_ProblemPatch[] = { "sed",
"-e", "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/#if 1/",
- "-e", "/[ \t]size_t/i\\\n\
-#ifndef _GCC_SIZE_T\\\n\
-#define _GCC_SIZE_T\n",
- "-e", "/[ \t]size_t/a\\\n\
-#endif\n",
- "-e", "/[ \t]ptrdiff_t/i\\\n\
-#ifndef _GCC_PTRDIFF_T\\\n\
-#define _GCC_PTRDIFF_T\n",
- "-e", "/[ \t]ptrdiff_t/a\\\n\
-#endif\n",
- "-e", "/[ \t]wchar_t/i\\\n\
-#ifndef _GCC_WCHAR_T\\\n\
-#define _GCC_WCHAR_T\n",
- "-e", "/[ \t]wchar_t/a\\\n\
-#endif\n",
+ "-e", "/[ \t]size_t/i\\\n"
+ "#ifndef _GCC_SIZE_T\\\n"
+ "#define _GCC_SIZE_T\n",
+ "-e", "/[ \t]size_t/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]ptrdiff_t/i\\\n"
+ "#ifndef _GCC_PTRDIFF_T\\\n"
+ "#define _GCC_PTRDIFF_T\n",
+ "-e", "/[ \t]ptrdiff_t/a\\\n"
+ "#endif\n",
+ "-e", "/[ \t]wchar_t/i\\\n"
+ "#ifndef _GCC_WCHAR_T\\\n"
+ "#define _GCC_WCHAR_T\n",
+ "-e", "/[ \t]wchar_t/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 91 - Vxworks_Needs_Vxtypes fix
+ * Description 92 - Vxworks_Needs_Vxtypes fix
*/
tSCC zVxworks_Needs_VxtypesName[] =
"Vxworks_Needs_Vxtypes";
@@ -3298,7 +3403,7 @@ tSCC zVxworks_Needs_VxtypesName[] =
* File name selection pattern
*/
tSCC zVxworks_Needs_VxtypesList[] =
- "|time.h|";
+ "|" "time.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3324,7 +3429,7 @@ const char* apzVxworks_Needs_VxtypesPatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 92 - Vxworks_Needs_Vxworks fix
+ * Description 93 - Vxworks_Needs_Vxworks fix
*/
tSCC zVxworks_Needs_VxworksName[] =
"Vxworks_Needs_Vxworks";
@@ -3332,7 +3437,7 @@ tSCC zVxworks_Needs_VxworksName[] =
* File name selection pattern
*/
tSCC zVxworks_Needs_VxworksList[] =
- "|sys/stat.h|";
+ "|" "sys/stat.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3366,13 +3471,13 @@ tTestDesc aVxworks_Needs_VxworksTests[] = {
* Fix Command Arguments for Vxworks_Needs_Vxworks
*/
const char* apzVxworks_Needs_VxworksPatch[] = { "sed",
- "-e", "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n\
-#include <types/vxTypesOld.h>\n",
+ "-e", "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
+ "#include <types/vxTypesOld.h>\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 93 - Vxworks_Time fix
+ * Description 94 - Vxworks_Time fix
*/
tSCC zVxworks_TimeName[] =
"Vxworks_Time";
@@ -3380,7 +3485,7 @@ tSCC zVxworks_TimeName[] =
* File name selection pattern
*/
tSCC zVxworks_TimeList[] =
- "|time.h|";
+ "|" "time.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3408,21 +3513,21 @@ tTestDesc aVxworks_TimeTests[] = {
* Fix Command Arguments for Vxworks_Time
*/
const char* apzVxworks_TimePatch[] = { "sed",
- "-e", "/VOIDFUNCPTR/i\\\n\
-#ifndef __gcc_VOIDFUNCPTR_defined\\\n\
-#ifdef __cplusplus\\\n\
-typedef void (*__gcc_VOIDFUNCPTR) (...);\\\n\
-#else\\\n\
-typedef void (*__gcc_VOIDFUNCPTR) ();\\\n\
-#endif\\\n\
-#define __gcc_VOIDFUNCPTR_defined\\\n\
-#endif\n",
+ "-e", "/VOIDFUNCPTR/i\\\n"
+ "#ifndef __gcc_VOIDFUNCPTR_defined\\\n"
+ "#ifdef __cplusplus\\\n"
+ "typedef void (*__gcc_VOIDFUNCPTR) (...);\\\n"
+ "#else\\\n"
+ "typedef void (*__gcc_VOIDFUNCPTR) ();\\\n"
+ "#endif\\\n"
+ "#define __gcc_VOIDFUNCPTR_defined\\\n"
+ "#endif\n",
"-e", "s/VOIDFUNCPTR/__gcc_VOIDFUNCPTR/g",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 94 - X11_Class fix
+ * Description 95 - X11_Class fix
*/
tSCC zX11_ClassName[] =
"X11_Class";
@@ -3430,7 +3535,7 @@ tSCC zX11_ClassName[] =
* File name selection pattern
*/
tSCC zX11_ClassList[] =
- "|X11/ShellP.h|";
+ "|" "X11/ShellP.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3451,17 +3556,17 @@ tTestDesc aX11_ClassTests[] = {
* Fix Command Arguments for X11_Class
*/
const char* apzX11_ClassPatch[] = { "sed",
- "-e", "/char \\*class;/i\\\n\
-#ifdef __cplusplus\\\n\
-\tchar *c_class;\\\n\
-#else\n",
- "-e", "/char \\*class;/a\\\n\
-#endif\n",
+ "-e", "/char \\*class;/i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "\tchar *c_class;\\\n"
+ "#else\n",
+ "-e", "/char \\*class;/a\\\n"
+ "#endif\n",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 95 - X11_Class_Usage fix
+ * Description 96 - X11_Class_Usage fix
*/
tSCC zX11_Class_UsageName[] =
"X11_Class_Usage";
@@ -3469,7 +3574,7 @@ tSCC zX11_Class_UsageName[] =
* File name selection pattern
*/
tSCC zX11_Class_UsageList[] =
- "|Xm/BaseClassI.h|";
+ "|" "Xm/BaseClassI.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3495,7 +3600,7 @@ const char* apzX11_Class_UsagePatch[] = { "sed",
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 96 - X11_New fix
+ * Description 97 - X11_New fix
*/
tSCC zX11_NewName[] =
"X11_New";
@@ -3503,7 +3608,7 @@ tSCC zX11_NewName[] =
* File name selection pattern
*/
tSCC zX11_NewList[] =
- "|Xm/Traversal.h|";
+ "|" "Xm/Traversal.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3524,18 +3629,18 @@ tTestDesc aX11_NewTests[] = {
* Fix Command Arguments for X11_New
*/
const char* apzX11_NewPatch[] = { "sed",
- "-e", "/Widget\told, new;/i\\\n\
-#ifdef __cplusplus\\\n\
-\tWidget\told, c_new;\\\n\
-#else\n",
- "-e", "/Widget\told, new;/a\\\n\
-#endif\n",
+ "-e", "/Widget\told, new;/i\\\n"
+ "#ifdef __cplusplus\\\n"
+ "\tWidget\told, c_new;\\\n"
+ "#else\n",
+ "-e", "/Widget\told, new;/a\\\n"
+ "#endif\n",
"-e", "s/Widget new,/Widget c_new,/g",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 97 - X11_Sprintf fix
+ * Description 98 - X11_Sprintf fix
*/
tSCC zX11_SprintfName[] =
"X11_Sprintf";
@@ -3543,7 +3648,7 @@ tSCC zX11_SprintfName[] =
* File name selection pattern
*/
tSCC zX11_SprintfList[] =
- "|X11*/Xmu.h|";
+ "|" "X11*/Xmu.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3556,14 +3661,14 @@ tSCC zX11_SprintfList[] =
* Fix Command Arguments for X11_Sprintf
*/
const char* apzX11_SprintfPatch[] = { "sed",
- "-e", "s,^extern char \\*\tsprintf();$,#ifndef __STDC__\\\n\
-extern char *\tsprintf();\\\n\
-#endif /* !defined __STDC__ */,",
+ "-e", "s,^extern char \\*\tsprintf();$,#ifndef __STDC__\\\n"
+ "extern char *\tsprintf();\\\n"
+ "#endif /* !defined __STDC__ */,",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 98 - Zzz_Ki_Iface fix
+ * Description 99 - Zzz_Ki_Iface fix
*/
tSCC zZzz_Ki_IfaceName[] =
"Zzz_Ki_Iface";
@@ -3571,7 +3676,7 @@ tSCC zZzz_Ki_IfaceName[] =
* File name selection pattern
*/
tSCC zZzz_Ki_IfaceList[] =
- "|sys/ki_iface.h|";
+ "|" "sys/ki_iface.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3592,14 +3697,14 @@ tTestDesc aZzz_Ki_IfaceTests[] = {
* Fix Command Arguments for Zzz_Ki_Iface
*/
const char* apzZzz_Ki_IfacePatch[] = { "sh", "-c",
- "echo \"Removing incorrect fix to <$file>\" >&2\n\
-rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n\
-cat > /dev/null",
+ "echo \"Removing incorrect fix to <$file>\" >&2\n"
+ "rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n"
+ "cat > /dev/null",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 99 - Zzz_Ki fix
+ * Description 100 - Zzz_Ki fix
*/
tSCC zZzz_KiName[] =
"Zzz_Ki";
@@ -3607,7 +3712,7 @@ tSCC zZzz_KiName[] =
* File name selection pattern
*/
tSCC zZzz_KiList[] =
- "|sys/ki.h|";
+ "|" "sys/ki.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3628,14 +3733,14 @@ tTestDesc aZzz_KiTests[] = {
* Fix Command Arguments for Zzz_Ki
*/
const char* apzZzz_KiPatch[] = { "sh", "-c",
- "echo \"Removing incorrect fix to <$file>\" >&2\n\
-rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n\
-cat > /dev/null",
+ "echo \"Removing incorrect fix to <$file>\" >&2\n"
+ "rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n"
+ "cat > /dev/null",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 100 - Zzz_Ki_Calls fix
+ * Description 101 - Zzz_Ki_Calls fix
*/
tSCC zZzz_Ki_CallsName[] =
"Zzz_Ki_Calls";
@@ -3643,7 +3748,7 @@ tSCC zZzz_Ki_CallsName[] =
* File name selection pattern
*/
tSCC zZzz_Ki_CallsList[] =
- "|sys/ki_calls.h|";
+ "|" "sys/ki_calls.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3664,14 +3769,14 @@ tTestDesc aZzz_Ki_CallsTests[] = {
* Fix Command Arguments for Zzz_Ki_Calls
*/
const char* apzZzz_Ki_CallsPatch[] = { "sh", "-c",
- "echo \"Removing incorrect fix to <$file>\" >&2\n\
-rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n\
-cat > /dev/null",
+ "echo \"Removing incorrect fix to <$file>\" >&2\n"
+ "rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n"
+ "cat > /dev/null",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 101 - Zzz_Ki_Defs fix
+ * Description 102 - Zzz_Ki_Defs fix
*/
tSCC zZzz_Ki_DefsName[] =
"Zzz_Ki_Defs";
@@ -3679,7 +3784,7 @@ tSCC zZzz_Ki_DefsName[] =
* File name selection pattern
*/
tSCC zZzz_Ki_DefsList[] =
- "|sys/ki_defs.h|";
+ "|" "sys/ki_defs.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3700,14 +3805,14 @@ tTestDesc aZzz_Ki_DefsTests[] = {
* Fix Command Arguments for Zzz_Ki_Defs
*/
const char* apzZzz_Ki_DefsPatch[] = { "sh", "-c",
- "echo \"Removing incorrect fix to <$file>\" >&2\n\
-rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n\
-cat > /dev/null",
+ "echo \"Removing incorrect fix to <$file>\" >&2\n"
+ "rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n"
+ "cat > /dev/null",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 102 - Zzz_Bad_Fixes fix
+ * Description 103 - Zzz_Bad_Fixes fix
*/
tSCC zZzz_Bad_FixesName[] =
"Zzz_Bad_Fixes";
@@ -3715,7 +3820,7 @@ tSCC zZzz_Bad_FixesName[] =
* File name selection pattern
*/
tSCC zZzz_Bad_FixesList[] =
- "|sundev/ipi_error.h|";
+ "|" "sundev/ipi_error.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3728,14 +3833,14 @@ tSCC zZzz_Bad_FixesList[] =
* Fix Command Arguments for Zzz_Bad_Fixes
*/
const char* apzZzz_Bad_FixesPatch[] = { "sh", "-c",
- "echo \"Removing incorrect fix to <$file>\" >&2\n\
-rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n\
-cat > /dev/null",
+ "echo \"Removing incorrect fix to <$file>\" >&2\n"
+ "rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n"
+ "cat > /dev/null",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description 103 - Zzz_Time fix
+ * Description 104 - Zzz_Time fix
*/
tSCC zZzz_TimeName[] =
"Zzz_Time";
@@ -3743,7 +3848,7 @@ tSCC zZzz_TimeName[] =
* File name selection pattern
*/
tSCC zZzz_TimeList[] =
- "|sys/time.h|";
+ "|" "sys/time.h" "|";
/*
* Machine/OS name selection pattern
*/
@@ -3764,17 +3869,17 @@ tTestDesc aZzz_TimeTests[] = {
* Fix Command Arguments for Zzz_Time
*/
const char* apzZzz_TimePatch[] = { "sh", "-c",
- "echo \"Removing incorrect fix to <$file>\" >&2\n\
-rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n\
-cat > /dev/null",
+ "echo \"Removing incorrect fix to <$file>\" >&2\n"
+ "rm -f ${DESTDIR}/$file ${DESTDIR}/fixinc.tmp\n"
+ "cat > /dev/null",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* List of all fixes
*/
-#define REGEX_COUNT 73
-#define FIX_COUNT 103
+#define REGEX_COUNT 76
+#define FIX_COUNT 104
tFixDesc fixDescList[ FIX_COUNT ] = {
{ zAix_SyswaitName, zAix_SyswaitList,
apzAix_SyswaitMachs, (regex_t*)NULL,
@@ -3871,10 +3976,15 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
SCO5_STAT_WRAPPERS_TEST_CT, FD_MACH_ONLY,
aSco5_Stat_WrappersTests, apzSco5_Stat_WrappersPatch },
- { zEnd_Else_LabelName, zEnd_Else_LabelList,
- apzEnd_Else_LabelMachs, (regex_t*)NULL,
- END_ELSE_LABEL_TEST_CT, FD_MACH_ONLY,
- aEnd_Else_LabelTests, apzEnd_Else_LabelPatch },
+ { zElse_LabelName, zElse_LabelList,
+ apzElse_LabelMachs, (regex_t*)NULL,
+ ELSE_LABEL_TEST_CT, FD_MACH_ONLY,
+ aElse_LabelTests, apzElse_LabelPatch },
+
+ { zEndif_LabelName, zEndif_LabelList,
+ apzEndif_LabelMachs, (regex_t*)NULL,
+ ENDIF_LABEL_TEST_CT, FD_MACH_ONLY,
+ aEndif_LabelTests, apzEndif_LabelPatch },
{ zHp_InlineName, zHp_InlineList,
apzHp_InlineMachs, (regex_t*)NULL,
@@ -3993,7 +4103,7 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
{ zM88k_Multi_InclName, zM88k_Multi_InclList,
apzM88k_Multi_InclMachs, (regex_t*)NULL,
- M88K_MULTI_INCL_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ M88K_MULTI_INCL_TEST_CT, FD_MACH_ONLY,
aM88k_Multi_InclTests, apzM88k_Multi_InclPatch },
{ zMachine_NameName, zMachine_NameList,
@@ -4008,7 +4118,7 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
{ zMath_Gcc_IfndefsName, zMath_Gcc_IfndefsList,
apzMath_Gcc_IfndefsMachs, (regex_t*)NULL,
- MATH_GCC_IFNDEFS_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ MATH_GCC_IFNDEFS_TEST_CT, FD_MACH_ONLY,
aMath_Gcc_IfndefsTests, apzMath_Gcc_IfndefsPatch },
{ zNested_CommentName, zNested_CommentList,
@@ -4088,7 +4198,7 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
{ zStdio_Va_ListName, zStdio_Va_ListList,
apzStdio_Va_ListMachs, (regex_t*)NULL,
- STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY,
aStdio_Va_ListTests, apzStdio_Va_ListPatch },
{ zSun_Bogus_IfdefName, zSun_Bogus_IfdefList,
@@ -4263,31 +4373,31 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
{ zZzz_Ki_IfaceName, zZzz_Ki_IfaceList,
apzZzz_Ki_IfaceMachs, (regex_t*)NULL,
- ZZZ_KI_IFACE_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ ZZZ_KI_IFACE_TEST_CT, FD_MACH_ONLY,
aZzz_Ki_IfaceTests, apzZzz_Ki_IfacePatch },
{ zZzz_KiName, zZzz_KiList,
apzZzz_KiMachs, (regex_t*)NULL,
- ZZZ_KI_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ ZZZ_KI_TEST_CT, FD_MACH_ONLY,
aZzz_KiTests, apzZzz_KiPatch },
{ zZzz_Ki_CallsName, zZzz_Ki_CallsList,
apzZzz_Ki_CallsMachs, (regex_t*)NULL,
- ZZZ_KI_CALLS_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ ZZZ_KI_CALLS_TEST_CT, FD_MACH_ONLY,
aZzz_Ki_CallsTests, apzZzz_Ki_CallsPatch },
{ zZzz_Ki_DefsName, zZzz_Ki_DefsList,
apzZzz_Ki_DefsMachs, (regex_t*)NULL,
- ZZZ_KI_DEFS_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ ZZZ_KI_DEFS_TEST_CT, FD_MACH_ONLY,
aZzz_Ki_DefsTests, apzZzz_Ki_DefsPatch },
{ zZzz_Bad_FixesName, zZzz_Bad_FixesList,
apzZzz_Bad_FixesMachs, (regex_t*)NULL,
- ZZZ_BAD_FIXES_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ ZZZ_BAD_FIXES_TEST_CT, FD_MACH_ONLY,
aZzz_Bad_FixesTests, apzZzz_Bad_FixesPatch },
{ zZzz_TimeName, zZzz_TimeList,
apzZzz_TimeMachs, (regex_t*)NULL,
- ZZZ_TIME_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT,
+ ZZZ_TIME_TEST_CT, FD_MACH_ONLY,
aZzz_TimeTests, apzZzz_TimePatch }
};
diff --git a/gnu/egcs/gcc/fixinc/gnu-regex.c b/gnu/egcs/gcc/fixinc/gnu-regex.c
index b24845ba431..84db70f7952 100644
--- a/gnu/egcs/gcc/fixinc/gnu-regex.c
+++ b/gnu/egcs/gcc/fixinc/gnu-regex.c
@@ -80,16 +80,6 @@
#else /* not emacs */
-# include "auto-host.h"
-
-# if !defined(const) && !defined(HAVE_CONST)
-# define const
-# endif
-
-# if !defined(volatile) && !defined(HAVE_VOLATILE)
-# define volatile
-# endif
-
/* If we are not linking with Emacs proper,
we can't use the relocating allocator
even if config.h says that we can. */
diff --git a/gnu/egcs/gcc/fixinc/inclhack.def b/gnu/egcs/gcc/fixinc/inclhack.def
index 6872cad61d0..c8dbeda69b5 100644
--- a/gnu/egcs/gcc/fixinc/inclhack.def
+++ b/gnu/egcs/gcc/fixinc/inclhack.def
@@ -136,18 +136,6 @@ fix = {
sed = "/^[ ]*typedef[ \t][ \t]*unsigned char[ \t][ \t]*bool[ \t]*;/a\\\n"
"#endif\n";
-
- sed = "/^typedef[ \t][ \t]*int[ \t][ \t]*bool[ \t]*;/i\\\n"
- "#ifndef __cplusplus\n";
-
- sed = "/^typedef[ \t][ \t]*int[ \t][ \t]*bool[ \t]*;/a\\\n"
- "#endif\n";
-
- sed = "/^[ ]*typedef[ \t][ \t]*unsigned int[ \t][ \t]*bool[ \t]*;/i\\\n"
- "#ifndef __cplusplus\n";
-
- sed = "/^[ ]*typedef[ \t][ \t]*unsigned int[ \t][ \t]*bool[ \t]*;/a\\\n"
- "#endif\n";
};
@@ -185,6 +173,7 @@ fix = {
*/
fix = {
hackname = bad_lval;
+ select = "^[ \t]*#[ \t]*pragma[ \t]extern_prefix";
files = libgen.h;
files = dirent.h;
files = ftw.h;
@@ -350,7 +339,7 @@ fix = {
* Also, only accept double slashes that are not part of URL's
* and are not the end of a quoted string.
*/
- test = ' -z "`echo ${file} | egrep \'(CC|cxx|\+\+)/\'`"';
+ test = '-z `echo ${file} | egrep \'(CC|cxx|\+\+)/\' `';
select = '(^|[^:])//[^"*]';
sed = 's,^//.*$,,';
sed = 's,[^:]//[^"].*$,,';
@@ -391,32 +380,43 @@ fix = {
/*
- * Fix else and endif directives that contain non-commentary text
+ * Fix else directives that contain non-commentary text
+ *
+ * The fixinc_eol stuff is to work around a bug in the sed
*/
fix = {
- hackname = end_else_label;
+ hackname = else_label;
+ select = "^[ \t]*#[ \t]*else[ \t]+[!-.0-~]";
+ sed = ":loop\n"
+ '/\\\\$/' "N\n"
+ 's/\\\\$/\\\\+++fixinc_eol+++/' "\n"
+ '/\\\\$/' "b loop\n"
+ 's/\\\\+++fixinc_eol+++/\\\\/g' "\n"
+
+ "s%^\\([ \t]*#[ \t]*else\\)[ \t]*/[^*].*%\\1%\n"
+ "s%^\\([ \t]*#[ \t]*else\\)[ \t]*[^/ \t].*%\\1%";
+};
+
+/*
+ * Fix endif directives that contain non-commentary text
+ */
+fix = {
+ hackname = endif_label;
/*
- * Select files that contain '#endif' or '#else' directives with
+ * Select files that contain '#endif' directives with
* some sort of following junk. (Between the ascii '.'
* and '0' lies the character '/'. This will *NOT*
* match '#endif / * foo * /', but it also wont match
* '#endif / done' either.
*
- * We have a second regexp in the selector to detect
- * #endif followed by a / followed by anything other
- * than a *. For example "#endif / * foo * /" or
- * "#endif /% blah %/ which appear on OSF4.0A and AIX4.2
- * repsectively.
- *
- * We use the pattern [!-.0-z{|}~] instead of [^/ \t] to match a
- * noncomment following #else or #endif because some buggy egreps
- * think [^/] matches newline, and they thus think `#else ' matches
+ * We use the pattern [!-.0-z{|}~] instead of [^/ \t] to match a noncomment
+ * following #else or #endif because some buggy egreps think [^/] matches
+ * newline, and they thus think `#else ' matches
* `#e[ndiflse]*[ \t]+[^/ \t]'.
* [!-.0-~] does not work properly on AIX 4.1.
*/
- select = "^[ \t]*#[ \t]*(else|endif)[ \t]+"
- "(" '[!-.0-z\{\|\}\~]' "|" '/[^\*]' ")";
+ select = "^[ \t]*#[ \t]*endif[ \t]+[!-.0-z\{\|\}\~]";
/*
* First, join the continued input lines.
@@ -434,11 +434,9 @@ fix = {
'/\\\\$/' "b loop\n"
's/\\\\+++fixinc_eol+++/\\\\/g' "\n"
- "s%^\\([ \t]*#[ \t]*else\\)[ \t][ \t]*/[^*].*%\\1%\n"
- "s%^\\([ \t]*#[ \t]*else\\)[ \t][ \t]*[^/ \t].*%\\1%\n"
- "s%^\\([ \t]*#[ \t]*endif\\)[ \t][ \t]*/[^*].*%\\1%\n"
- "s%^\\([ \t]*#[ \t]*endif\\)[ \t][ \t]*\*[^/].*%\\1%\n"
- "s%^\\([ \t]*#[ \t]*endif\\)[ \t][ \t]*[^/* \t].*%\\1%";
+ "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*/[^*].*%\\1%\n"
+ "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*\\*[^/].*%\\1%\n"
+ "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*[^/* \t].*%\\1%";
};
@@ -569,8 +567,7 @@ fix = {
fix = {
hackname = io_def_quotes;
select = "[ \t]*[ \t](_|DES)IO[A-Z]*[ \t]*\\( *[^,']";
- sed = "s/\\([ \t]*[ \t]_IO[A-Z]*[ \t]*(\\)\\([^,']\\),/\\1'\\2',/";
- sed = "s/\\([ \t]*[ \t]DESIO[A-Z]*[ \t]*(\\)\\([^,']\\),/\\1'\\2',/";
+ sed = "s/\\([ \t]*[ \t](_|DES)IO[A-Z]*[ \t]*(\\)\\([^,']\\),/\\1'\\2',/";
sed = "/#[ \t]*define[ \t]*[ \t]_IO/" "s/'\\([cgxtf]\\)'/\\1/g";
sed = "/#[ \t]*define[ \t]*[ \t]DESIOC/" 's/\'\([cdgx]\)\'/\1/g';
};
@@ -578,20 +575,10 @@ fix = {
/*
* Fix CTRL macros
- *
- * Basically, what is supposed to be happening is that every
- * _invocation_ of the "_CTRL()" or "CTRL()" macros is supposed to have
- * its argument inserted into single quotes. We _must_ do this because
- * ANSI macro substitution rules prohibit looking inside quoted strings
- * for the substitution names. A side effect is that the quotes are
- * inserted in the definitions of those macros as well. So, the last
- * three sed expressions are supposed to clean up the definitions, as
- * long as those definitions are using "c", "g" or "x" as the macro
- * argument :). Yuck.
*/
fix = {
hackname = ioctl_fix_ctrl;
- select = "CTRL[ \t]*\\(";
+ select = "CTRL[ \t]";
sed = "/[^A-Z0-9_]CTRL[ \t]*(/"
"s/\\([^']\\))/'\\1')/";
@@ -607,9 +594,6 @@ fix = {
sed = "/#[ \t]*define[ \t]*[ \t]BSD43_CTRL/"
"s/'\\([cgx]\\)'/\\1/g";
-
- sed = "/#[ \t]*define[ \t]*[ \t]_*ISCTRL/"
- "s/'\\([cgx]\\)'/\\1/g";
};
@@ -740,7 +724,6 @@ fix = {
fix = {
hackname = limits_ifndefs;
files = "limits.h";
- files = "sys/limits.h";
bypass = "ifndef[ \t]+FLT_MIN";
sed = "/[ \t]FLT_MIN[ \t]/i\\\n#ifndef FLT_MIN\n";
@@ -1057,8 +1040,8 @@ fix = {
"\tthen sed -e '/define[ \t]HUGE_VAL[ \t]DBL_MAX/s/DBL_MAX/$dbl_max_def/'"
"\n\telse cat ; fi |\n"
- "\tsed -e '/define[ \t]HUGE_VAL[ \t]/i\\\n#ifndef HUGE_VAL\n' "
- "-e '/define[ \t]HUGE_VAL[ \t]/a\\\n#endif\n'";
+ "\tsed -e'/define[ \t]HUGE_VAL[ \t]/i\\\n#ifndef HUGE_VAL\n' "
+ "-e'/define[ \t]HUGE_VAL[ \t]/a\\\n#endif\n'";
};
@@ -1407,7 +1390,7 @@ fix = {
fix = {
hackname = sun_catmacro;
files = pixrect/memvar.h;
- select = "^#define[ \t]+CAT\\(a,b\\)";
+ select = "^#define[ \t]+CAT(a,b)";
sed = "/^#define[ \t]CAT(a,b)/ i\\\n"
"#ifdef __STDC__ \\\n"
"#define CAT(a,b) a##b\\\n"
@@ -1511,9 +1494,12 @@ fix = {
files = rpc/svc.h;
files = rpc/xdr.h;
/*
- * Select those files containing '(*name)()'.
+ * Select those files containing '(*name)()' but *not*
+ * containing '(*name)(junk)'. The change would be innocuous
+ * but there is no point bothering if the fix is not needed.
*/
select = '\(\*[a-z][a-z_]*\)\(\)';
+ bypass = '\(\*[a-z][a-z_]*\)\(' "[ \t]*[a-zA-Z.].*" '\)';
sed = 's'
'/^\(.*(\*[a-z][a-z_]*)(\)' '\();.*\)'
"/\\\n"
@@ -2000,7 +1986,6 @@ fix = {
sed = "s/char[ \t]*\\*[ \t]*calloc/void \\*\tcalloc/g";
sed = "s/char[ \t]*\\*[ \t]*malloc/void \\*\tmalloc/g";
sed = "s/char[ \t]*\\*[ \t]*realloc/void \\*\trealloc/g";
- sed = "s/char[ \t]*\\*[ \t]*bsearch/void \\*\tbsearch/g";
sed = "s/int[ \t][ \t]*exit/void\texit/g";
sed = "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/i\\\n"
diff --git a/gnu/egcs/gcc/fixinc/inclhack.sh b/gnu/egcs/gcc/fixinc/inclhack.sh
index c2d85b1a4bf..153161bfad9 100644
--- a/gnu/egcs/gcc/fixinc/inclhack.sh
+++ b/gnu/egcs/gcc/fixinc/inclhack.sh
@@ -6,7 +6,7 @@
# files which are fixed to work correctly with ANSI C and placed in a
# directory that GNU C will search.
#
-# This script contains 103 fixup scripts.
+# This script contains 104 fixup scripts.
#
# See README-fixinc for more information.
#
@@ -123,12 +123,7 @@ for INPUT in ${INPUTLIST} ; do
cd ${ORIGDIR}
-# This originally used cd || continue, however, that does not work with the
-# Solaris2 /bin/sh.
-if [ ! -d ${INPUT} ]; then
- continue
-fi
-cd ${INPUT}
+cd ${INPUT} || continue
INPUT=`${PWDCMD}`
#
@@ -568,18 +563,6 @@ struct rusage;
-e '/^[ ]*typedef[ ][ ]*unsigned char[ ][ ]*bool[ ]*;/a\
#endif
' \
- -e '/^typedef[ ][ ]*int[ ][ ]*bool[ ]*;/i\
-#ifndef __cplusplus
-' \
- -e '/^typedef[ ][ ]*int[ ][ ]*bool[ ]*;/a\
-#endif
-' \
- -e '/^[ ]*typedef[ ][ ]*unsigned int[ ][ ]*bool[ ]*;/i\
-#ifndef __cplusplus
-' \
- -e '/^[ ]*typedef[ ][ ]*unsigned int[ ][ ]*bool[ ]*;/a\
-#endif
-' \
< $infile > ${DESTDIR}/fixinc.tmp
rm -f ${DESTFILE}
mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE}
@@ -643,6 +626,8 @@ struct rusage;
./stropts.h | \
./time.h | \
./unistd.h )
+ if ( test -n "`egrep '^[ ]*#[ ]*pragma[ ]extern_prefix' ${file}`"
+ ) > /dev/null 2>&1 ; then
fixlist="${fixlist}
bad_lval"
if [ ! -r ${DESTFILE} ]
@@ -653,6 +638,7 @@ struct rusage;
< $infile > ${DESTDIR}/fixinc.tmp
rm -f ${DESTFILE}
mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE}
+ fi # end of selection 'if'
;; # case end for file name test
esac
@@ -753,7 +739,7 @@ struct rusage;
# Fix 17: No_Double_Slash
#
if ( test -n "`egrep '(^|[^:])//[^\"*]' ${file}`" -a \
- '(' -z "`echo ${file} | egrep '(CC|cxx|\+\+)/'`" ')'
+ '(' -z `echo ${file} | egrep '(CC|cxx|\+\+)/' ` ')'
) > /dev/null 2>&1 ; then
fixlist="${fixlist}
no_double_slash"
@@ -820,12 +806,12 @@ extern "C"\
#
- # Fix 20: End_Else_Label
+ # Fix 20: Else_Label
#
- if ( test -n "`egrep '^[ ]*#[ ]*(else|endif)[ ]+([!-.0-z\\{\\|\\}\\~]|/[^\\*])' ${file}`"
+ if ( test -n "`egrep '^[ ]*#[ ]*else[ ]+[!-.0-~]' ${file}`"
) > /dev/null 2>&1 ; then
fixlist="${fixlist}
- end_else_label"
+ else_label"
if [ ! -r ${DESTFILE} ]
then infile=${file}
else infile=${DESTFILE} ; fi
@@ -835,11 +821,8 @@ extern "C"\
s/\\$/\\+++fixinc_eol+++/
/\\$/b loop
s/\\+++fixinc_eol+++/\\/g
-s%^\([ ]*#[ ]*else\)[ ][ ]*/[^*].*%\1%
-s%^\([ ]*#[ ]*else\)[ ][ ]*[^/ ].*%\1%
-s%^\([ ]*#[ ]*endif\)[ ][ ]*/[^*].*%\1%
-s%^\([ ]*#[ ]*endif\)[ ][ ]**[^/].*%\1%
-s%^\([ ]*#[ ]*endif\)[ ][ ]*[^/* ].*%\1%' \
+s%^\([ ]*#[ ]*else\)[ ]*/[^*].*%\1%
+s%^\([ ]*#[ ]*else\)[ ]*[^/ ].*%\1%' \
< $infile > ${DESTDIR}/fixinc.tmp
rm -f ${DESTFILE}
mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE}
@@ -847,7 +830,32 @@ s%^\([ ]*#[ ]*endif\)[ ][ ]*[^/* ].*%\1%' \
#
- # Fix 21: Hp_Inline
+ # Fix 21: Endif_Label
+ #
+ if ( test -n "`egrep '^[ ]*#[ ]*endif[ ]+[!-.0-z{|}~]' ${file}`"
+ ) > /dev/null 2>&1 ; then
+ fixlist="${fixlist}
+ endif_label"
+ if [ ! -r ${DESTFILE} ]
+ then infile=${file}
+ else infile=${DESTFILE} ; fi
+
+ sed -e ':loop
+/\\$/N
+s/\\$/\\+++fixinc_eol+++/
+/\\$/b loop
+s/\\+++fixinc_eol+++/\\/g
+s%^\([ ]*#[ ]*endif\)[ ]*/[^*].*%\1%
+s%^\([ ]*#[ ]*endif\)[ ]*\*[^/].*%\1%
+s%^\([ ]*#[ ]*endif\)[ ]*[^/* ].*%\1%' \
+ < $infile > ${DESTDIR}/fixinc.tmp
+ rm -f ${DESTFILE}
+ mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE}
+ fi # end of selection 'if'
+
+
+ #
+ # Fix 22: Hp_Inline
#
case "${file}" in ./sys/spinlock.h )
if ( test -n "`egrep 'include.*\"\\.\\./machine/' ${file}`"
@@ -869,7 +877,7 @@ s%^\([ ]*#[ ]*endif\)[ ][ ]*[^/* ].*%\1%' \
#
- # Fix 22: Hp_Sysfile
+ # Fix 23: Hp_Sysfile
#
case "${file}" in ./sys/file.h )
if ( test -n "`egrep 'HPUX_SOURCE' ${file}`"
@@ -890,7 +898,7 @@ s%^\([ ]*#[ ]*endif\)[ ][ ]*[^/* ].*%\1%' \
#
- # Fix 23: Cxx_Unready
+ # Fix 24: Cxx_Unready
#
case "${file}" in ./sys/mman.h | \
./rpc/types.h )
@@ -922,7 +930,7 @@ extern "C" {\
#
- # Fix 24: Hpux_Maxint
+ # Fix 25: Hpux_Maxint
#
case "${file}" in ./sys/param.h )
fixlist="${fixlist}
@@ -945,7 +953,7 @@ extern "C" {\
#
- # Fix 25: Hpux_Systime
+ # Fix 26: Hpux_Systime
#
case "${file}" in ./sys/time.h )
if ( test -n "`egrep '^extern struct sigevent;' ${file}`"
@@ -966,7 +974,7 @@ extern "C" {\
#
- # Fix 26: Interactv_Add1
+ # Fix 27: Interactv_Add1
#
case "${file}" in ./stdio.h | \
./math.h | \
@@ -993,7 +1001,7 @@ extern "C" {\
#
- # Fix 27: Interactv_Add2
+ # Fix 28: Interactv_Add2
#
case "${file}" in ./math.h )
if ( test '(' -d /etc/conf/kconfig.d ')' -a \
@@ -1015,7 +1023,7 @@ extern "C" {\
#
- # Fix 28: Interactv_Add3
+ # Fix 29: Interactv_Add3
#
case "${file}" in ./sys/limits.h )
if ( test '(' -d /etc/conf/kconfig.d ')' -a \
@@ -1038,7 +1046,7 @@ extern "C" {\
#
- # Fix 29: Io_Def_Quotes
+ # Fix 30: Io_Def_Quotes
#
if ( test -n "`egrep '[ ]*[ ](_|DES)IO[A-Z]*[ ]*\\( *[^,'\\'']' ${file}`"
) > /dev/null 2>&1 ; then
@@ -1048,8 +1056,7 @@ extern "C" {\
then infile=${file}
else infile=${DESTFILE} ; fi
- sed -e 's/\([ ]*[ ]_IO[A-Z]*[ ]*(\)\([^,'\'']\),/\1'\''\2'\'',/' \
- -e 's/\([ ]*[ ]DESIO[A-Z]*[ ]*(\)\([^,'\'']\),/\1'\''\2'\'',/' \
+ sed -e 's/\([ ]*[ ](_|DES)IO[A-Z]*[ ]*(\)\([^,'\'']\),/\1'\''\2'\'',/' \
-e '/#[ ]*define[ ]*[ ]_IO/s/'\''\([cgxtf]\)'\''/\1/g' \
-e '/#[ ]*define[ ]*[ ]DESIOC/s/'\''\([cdgx]\)'\''/\1/g' \
< $infile > ${DESTDIR}/fixinc.tmp
@@ -1059,9 +1066,9 @@ extern "C" {\
#
- # Fix 30: Ioctl_Fix_Ctrl
+ # Fix 31: Ioctl_Fix_Ctrl
#
- if ( test -n "`egrep 'CTRL[ ]*\\(' ${file}`"
+ if ( test -n "`egrep 'CTRL[ ]' ${file}`"
) > /dev/null 2>&1 ; then
fixlist="${fixlist}
ioctl_fix_ctrl"
@@ -1074,7 +1081,6 @@ extern "C" {\
-e '/#[ ]*define[ ]*[ ]CTRL/s/'\''\([cgx]\)'\''/\1/g' \
-e '/#[ ]*define[ ]*[ ]_CTRL/s/'\''\([cgx]\)'\''/\1/g' \
-e '/#[ ]*define[ ]*[ ]BSD43_CTRL/s/'\''\([cgx]\)'\''/\1/g' \
- -e '/#[ ]*define[ ]*[ ]_*ISCTRL/s/'\''\([cgx]\)'\''/\1/g' \
< $infile > ${DESTDIR}/fixinc.tmp
rm -f ${DESTFILE}
mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE}
@@ -1082,7 +1088,7 @@ extern "C" {\
#
- # Fix 31: Ip_Missing_Semi
+ # Fix 32: Ip_Missing_Semi
#
case "${file}" in ./netinet/ip.h )
fixlist="${fixlist}
@@ -1100,7 +1106,7 @@ extern "C" {\
#
- # Fix 32: Irix_Multiline_Cmnt
+ # Fix 33: Irix_Multiline_Cmnt
#
case "${file}" in ./sys/types.h )
fixlist="${fixlist}
@@ -1119,7 +1125,7 @@ extern "C" {\
#
- # Fix 33: Irix_Sockaddr
+ # Fix 34: Irix_Sockaddr
#
case "${file}" in ./rpc/auth.h )
if ( test -n "`egrep 'authdes_create.*struct sockaddr' ${file}`"
@@ -1142,7 +1148,7 @@ struct sockaddr;
#
- # Fix 34: Irix_Struct__File
+ # Fix 35: Irix_Struct__File
#
case "${file}" in ./rpc/xdr.h )
fixlist="${fixlist}
@@ -1162,7 +1168,7 @@ struct __file_s;
#
- # Fix 35: Isc_Fmod
+ # Fix 36: Isc_Fmod
#
case "${file}" in ./math.h )
if ( test -n "`egrep 'fmod\\(double\\)' ${file}`"
@@ -1183,7 +1189,7 @@ struct __file_s;
#
- # Fix 36: Motorola_Nested
+ # Fix 37: Motorola_Nested
#
case "${file}" in ./limits.h | \
./sys/limits.h )
@@ -1206,7 +1212,7 @@ struct __file_s;
#
- # Fix 37: Isc_Sys_Limits
+ # Fix 38: Isc_Sys_Limits
#
case "${file}" in ./sys/limits.h )
if ( test -n "`egrep 'CHILD_MAX' ${file}`"
@@ -1228,7 +1234,7 @@ struct __file_s;
#
- # Fix 38: Kandr_Concat
+ # Fix 39: Kandr_Concat
#
case "${file}" in ./sparc/asm_linkage.h | \
./sun3/asm_linkage.h | \
@@ -1266,10 +1272,9 @@ struct __file_s;
#
- # Fix 39: Limits_Ifndefs
+ # Fix 40: Limits_Ifndefs
#
- case "${file}" in ./limits.h | \
- ./sys/limits.h )
+ case "${file}" in ./limits.h )
if ( test -z "`egrep 'ifndef[ ]+FLT_MIN' ${file}`"
) > /dev/null 2>&1 ; then
fixlist="${fixlist}
@@ -1324,7 +1329,7 @@ struct __file_s;
#
- # Fix 40: Lynx_Void_Int
+ # Fix 41: Lynx_Void_Int
#
case "${file}" in ./curses.h )
if ( test -n "`egrep '#[ ]*define[ ]+void[ ]+int' ${file}`"
@@ -1345,7 +1350,7 @@ struct __file_s;
#
- # Fix 41: Lynxos_Fcntl_Proto
+ # Fix 42: Lynxos_Fcntl_Proto
#
case "${file}" in ./fcntl.h )
if ( test -n "`egrep 'fcntl.*\\(int, int, int\\)' ${file}`"
@@ -1366,7 +1371,7 @@ struct __file_s;
#
- # Fix 42: M88k_Bad_Hypot_Opt
+ # Fix 43: M88k_Bad_Hypot_Opt
#
case "${file}" in ./math.h )
case "$target_canonical" in m88k-motorola-sysv3* )
@@ -1401,7 +1406,7 @@ static __inline__ double fake_hypot (x, y)\
#
- # Fix 43: M88k_Bad_S_If
+ # Fix 44: M88k_Bad_S_If
#
case "${file}" in ./sys/stat.h )
case "$target_canonical" in m88k-*-sysv3* )
@@ -1426,7 +1431,7 @@ static __inline__ double fake_hypot (x, y)\
#
- # Fix 44: M88k_Multi_Incl
+ # Fix 45: M88k_Multi_Incl
#
case "${file}" in ./time.h )
case "$target_canonical" in m88k-tektronix-sysv3* )
@@ -1459,7 +1464,7 @@ static __inline__ double fake_hypot (x, y)\
#
- # Fix 45: Machine_Name
+ # Fix 46: Machine_Name
#
if ( test -n "`egrep '^#[ ]*(if|elif).*[^a-zA-Z0-9_](_*[MSRrhim]|[Mbimnpstuv])[a-zA-Z0-9_]' ${file}`"
) > /dev/null 2>&1 ; then
@@ -1511,7 +1516,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 46: Math_Exception
+ # Fix 47: Math_Exception
#
case "${file}" in ./math.h )
if ( test -n "`egrep 'struct exception' ${file}`"
@@ -1551,7 +1556,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 47: Math_Gcc_Ifndefs
+ # Fix 48: Math_Gcc_Ifndefs
#
case "${file}" in ./math.h )
fixlist="${fixlist}
@@ -1567,9 +1572,9 @@ s/\\+++fixinc_eol+++/\\/g
) > /dev/null 2>&1
then sed -e '/define[ ]HUGE_VAL[ ]DBL_MAX/s/DBL_MAX/$dbl_max_def/'
else cat ; fi |
- sed -e '/define[ ]HUGE_VAL[ ]/i\
+ sed -e'/define[ ]HUGE_VAL[ ]/i\
#ifndef HUGE_VAL
-' -e '/define[ ]HUGE_VAL[ ]/a\
+' -e'/define[ ]HUGE_VAL[ ]/a\
#endif
' ) < $infile > ${DESTDIR}/fixinc.tmp
@@ -1585,7 +1590,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 48: Nested_Comment
+ # Fix 49: Nested_Comment
#
case "${file}" in ./rpc/rpc.h )
fixlist="${fixlist}
@@ -1603,7 +1608,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 49: News_Os_Recursion
+ # Fix 50: News_Os_Recursion
#
case "${file}" in ./stdlib.h )
if ( test -n "`egrep '#include <stdlib.h>' ${file}`"
@@ -1629,7 +1634,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 50: Next_Math_Prefix
+ # Fix 51: Next_Math_Prefix
#
case "${file}" in ./ansi/math.h )
if ( test -n "`egrep '^extern.*double.*__const__.*' ${file}`"
@@ -1654,7 +1659,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 51: Next_Template
+ # Fix 52: Next_Template
#
case "${file}" in ./bsd/libc.h )
if ( test -n "`egrep 'template' ${file}`"
@@ -1676,7 +1681,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 52: Next_Volitile
+ # Fix 53: Next_Volitile
#
case "${file}" in ./ansi/stdlib.h )
if ( test -n "`egrep 'volatile' ${file}`"
@@ -1698,7 +1703,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 53: Next_Wait_Union
+ # Fix 54: Next_Wait_Union
#
case "${file}" in ./sys/wait.h )
if ( test -n "`egrep 'wait\\(union wait' ${file}`"
@@ -1719,7 +1724,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 54: Nodeent_Syntax
+ # Fix 55: Nodeent_Syntax
#
case "${file}" in ./netdnet/dnetdb.h )
fixlist="${fixlist}
@@ -1737,7 +1742,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 55: Osf_Namespace_A
+ # Fix 56: Osf_Namespace_A
#
case "${file}" in ./reg_types.h | \
./sys/lc_core.h )
@@ -1764,7 +1769,7 @@ s/\\+++fixinc_eol+++/\\/g
#
- # Fix 56: Osf_Namespace_B
+ # Fix 57: Osf_Namespace_B
#
case "${file}" in ./regex.h )
if ( test '(' -r reg_types.h ')' -a \
@@ -1792,7 +1797,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 57: Pthread_Page_Size
+ # Fix 58: Pthread_Page_Size
#
case "${file}" in ./pthread.h )
if ( test -n "`egrep '^int __page_size' ${file}`"
@@ -1813,7 +1818,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 58: Rs6000_Double
+ # Fix 59: Rs6000_Double
#
case "${file}" in ./math.h )
if ( test -n "`egrep '[^a-zA-Z_]class\\(' ${file}`"
@@ -1839,7 +1844,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 59: Rs6000_Fchmod
+ # Fix 60: Rs6000_Fchmod
#
case "${file}" in ./sys/stat.h )
if ( test -n "`egrep 'fchmod\\(char' ${file}`"
@@ -1860,7 +1865,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 60: Rs6000_Param
+ # Fix 61: Rs6000_Param
#
case "${file}" in ./stdio.h | \
./unistd.h )
@@ -1879,7 +1884,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 61: Sony_Include
+ # Fix 62: Sony_Include
#
case "${file}" in ./machine/machparam.h )
if ( test -n "`egrep '\"\\.\\./machine/endian.h\"' ${file}`"
@@ -1900,7 +1905,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 62: Statsswtch
+ # Fix 63: Statsswtch
#
case "${file}" in ./rpcsvc/rstat.h )
if ( test -n "`egrep 'boottime$' ${file}`"
@@ -1921,7 +1926,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 63: Stdio_Va_List
+ # Fix 64: Stdio_Va_List
#
case "${file}" in ./stdio.h )
fixlist="${fixlist}
@@ -1960,7 +1965,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 64: Sun_Bogus_Ifdef
+ # Fix 65: Sun_Bogus_Ifdef
#
case "${file}" in ./hsfs/hsfs_spec.h | \
./hsfs/iso_spec.h )
@@ -1982,7 +1987,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 65: Sun_Bogus_Ifdef_Sun4c
+ # Fix 66: Sun_Bogus_Ifdef_Sun4c
#
case "${file}" in ./hsfs/hsnode.h )
if ( test -n "`egrep '#ifdef __i386__ || __sun4c__' ${file}`"
@@ -2003,10 +2008,10 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 66: Sun_Catmacro
+ # Fix 67: Sun_Catmacro
#
case "${file}" in ./pixrect/memvar.h )
- if ( test -n "`egrep '^#define[ ]+CAT\\(a,b\\)' ${file}`"
+ if ( test -n "`egrep '^#define[ ]+CAT(a,b)' ${file}`"
) > /dev/null 2>&1 ; then
fixlist="${fixlist}
sun_catmacro"
@@ -2031,7 +2036,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 67: Sun_Malloc
+ # Fix 68: Sun_Malloc
#
case "${file}" in ./malloc.h )
fixlist="${fixlist}
@@ -2052,7 +2057,7 @@ typedef __regmatch_t regmatch_t;
#
- # Fix 68: Sun_Memcpy
+ # Fix 69: Sun_Memcpy
#
case "${file}" in ./memory.h )
if ( test -n "`egrep '/\\* @\\(#\\)(head/memory.h 50.1 |memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2 )\\*/' ${file}`"
@@ -2094,7 +2099,7 @@ extern int memcmp();\
#
- # Fix 69: Sun_Rusers_Semi
+ # Fix 70: Sun_Rusers_Semi
#
case "${file}" in ./rpcsvc/rusers.h )
if ( test -n "`egrep '_cnt$' ${file}`"
@@ -2115,7 +2120,7 @@ extern int memcmp();\
#
- # Fix 70: Sun_Signal
+ # Fix 71: Sun_Signal
#
case "${file}" in ./sys/signal.h | \
./signal.h )
@@ -2144,13 +2149,14 @@ void (*signal(...))(...);\
#
- # Fix 71: Sun_Auth_Proto
+ # Fix 72: Sun_Auth_Proto
#
case "${file}" in ./rpc/auth.h | \
./rpc/clnt.h | \
./rpc/svc.h | \
./rpc/xdr.h )
- if ( test -n "`egrep '\\(\\*[a-z][a-z_]*\\)\\(\\)' ${file}`"
+ if ( test -n "`egrep '\\(\\*[a-z][a-z_]*\\)\\(\\)' ${file}`" -a \
+ -z "`egrep '\\(\\*[a-z][a-z_]*\\)\\([ ]*[a-zA-Z.].*\\)' ${file}`"
) > /dev/null 2>&1 ; then
fixlist="${fixlist}
sun_auth_proto"
@@ -2173,7 +2179,7 @@ void (*signal(...))(...);\
#
- # Fix 72: Sunos_Matherr_Decl
+ # Fix 73: Sunos_Matherr_Decl
#
case "${file}" in ./math.h )
fixlist="${fixlist}
@@ -2194,7 +2200,7 @@ struct exception;
#
- # Fix 73: Sunos_Strlen
+ # Fix 74: Sunos_Strlen
#
case "${file}" in ./strings.h )
fixlist="${fixlist}
@@ -2212,7 +2218,7 @@ struct exception;
#
- # Fix 74: Systypes
+ # Fix 75: Systypes
#
case "${file}" in ./sys/types.h | \
./stdlib.h | \
@@ -2266,7 +2272,7 @@ typedef __SIZE_TYPE__ size_t;\
#
- # Fix 75: Systypes_For_Aix
+ # Fix 76: Systypes_For_Aix
#
case "${file}" in ./sys/types.h )
if ( test -n "`egrep 'typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t' ${file}`" -a \
@@ -2294,7 +2300,7 @@ typedef __SIZE_TYPE__ size_t;\
#
- # Fix 76: Sysv68_String
+ # Fix 77: Sysv68_String
#
case "${file}" in ./string.h )
fixlist="${fixlist}
@@ -2322,7 +2328,7 @@ extern unsigned int\
#
- # Fix 77: Sysz_Stdlib_For_Sun
+ # Fix 78: Sysz_Stdlib_For_Sun
#
case "${file}" in ./stdlib.h )
fixlist="${fixlist}
@@ -2336,7 +2342,6 @@ extern unsigned int\
-e 's/char[ ]*\*[ ]*calloc/void \* calloc/g' \
-e 's/char[ ]*\*[ ]*malloc/void \* malloc/g' \
-e 's/char[ ]*\*[ ]*realloc/void \* realloc/g' \
- -e 's/char[ ]*\*[ ]*bsearch/void \* bsearch/g' \
-e 's/int[ ][ ]*exit/void exit/g' \
-e '/typedef[ a-zA-Z_]*[ ]size_t[ ]*;/i\
#ifndef _GCC_SIZE_T\
@@ -2353,7 +2358,7 @@ extern unsigned int\
#
- # Fix 78: Sysz_Stdtypes_For_Sun
+ # Fix 79: Sysz_Stdtypes_For_Sun
#
case "${file}" in ./sys/stdtypes.h )
fixlist="${fixlist}
@@ -2391,7 +2396,7 @@ extern unsigned int\
#
- # Fix 79: Tinfo_Cplusplus
+ # Fix 80: Tinfo_Cplusplus
#
case "${file}" in ./tinfo.h )
fixlist="${fixlist}
@@ -2409,7 +2414,7 @@ extern unsigned int\
#
- # Fix 80: Ultrix_Ansi_Compat
+ # Fix 81: Ultrix_Ansi_Compat
#
case "${file}" in ./ansi_compat.h )
if ( test -n "`egrep 'ULTRIX' ${file}`"
@@ -2433,7 +2438,7 @@ extern unsigned int\
#
- # Fix 81: Ultrix_Fix_Fixproto
+ # Fix 82: Ultrix_Fix_Fixproto
#
case "${file}" in ./sys/utsname.h )
if ( test -n "`egrep 'ULTRIX' ${file}`"
@@ -2456,7 +2461,7 @@ struct utsname;
#
- # Fix 82: Ultrix_Atof_Param
+ # Fix 83: Ultrix_Atof_Param
#
case "${file}" in ./math.h )
fixlist="${fixlist}
@@ -2478,7 +2483,7 @@ struct utsname;
#
- # Fix 83: Ultrix_Const
+ # Fix 84: Ultrix_Const
#
case "${file}" in ./stdio.h )
fixlist="${fixlist}
@@ -2504,7 +2509,7 @@ struct utsname;
#
- # Fix 84: Ultrix_Ifdef
+ # Fix 85: Ultrix_Ifdef
#
case "${file}" in ./sys/file.h )
if ( test -n "`egrep '#ifdef KERNEL' ${file}`"
@@ -2525,7 +2530,7 @@ struct utsname;
#
- # Fix 85: Ultrix_Nested_Cmnt
+ # Fix 86: Ultrix_Nested_Cmnt
#
case "${file}" in ./rpc/svc.h )
fixlist="${fixlist}
@@ -2543,7 +2548,7 @@ struct utsname;
#
- # Fix 86: Ultrix_Static
+ # Fix 87: Ultrix_Static
#
case "${file}" in ./machine/cpu.h )
if ( test -n "`egrep '#include \"r[34]_cpu' ${file}`"
@@ -2566,7 +2571,7 @@ struct utsname;
#
- # Fix 87: Undefine_Null
+ # Fix 88: Undefine_Null
#
if ( test -n "`egrep '^#[ ]*define[ ]*[ ]NULL[ ]' ${file}`" -a \
-z "`egrep '#[ ]*(ifn|un)def[ ]*[ ]NULL($|[ ])' ${file}`"
@@ -2587,7 +2592,7 @@ struct utsname;
#
- # Fix 88: Va_I960_Macro
+ # Fix 89: Va_I960_Macro
#
case "${file}" in ./arch/i960/archI960.h )
if ( test -n "`egrep '__(vsiz|vali|vpad|alignof__)' ${file}`"
@@ -2611,7 +2616,7 @@ struct utsname;
#
- # Fix 89: Void_Null
+ # Fix 90: Void_Null
#
case "${file}" in ./curses.h | \
./dbm.h | \
@@ -2642,7 +2647,7 @@ struct utsname;
#
- # Fix 90: Vxworks_Gcc_Problem
+ # Fix 91: Vxworks_Gcc_Problem
#
case "${file}" in ./types/vxTypesBase.h )
if ( test -n "`egrep '__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__' ${file}`"
@@ -2684,7 +2689,7 @@ struct utsname;
#
- # Fix 91: Vxworks_Needs_Vxtypes
+ # Fix 92: Vxworks_Needs_Vxtypes
#
case "${file}" in ./time.h )
if ( test -n "`egrep 'uint_t[ ][ ]*_clocks_per_sec' ${file}`"
@@ -2705,7 +2710,7 @@ struct utsname;
#
- # Fix 92: Vxworks_Needs_Vxworks
+ # Fix 93: Vxworks_Needs_Vxworks
#
case "${file}" in ./sys/stat.h )
if ( test -n "`egrep '#[ ]define[ ][ ]*__INCstath' ${file}`" -a \
@@ -2731,7 +2736,7 @@ struct utsname;
#
- # Fix 93: Vxworks_Time
+ # Fix 94: Vxworks_Time
#
case "${file}" in ./time.h )
if ( test -n "`egrep 'VOIDFUNCPTR' ${file}`" -a \
@@ -2763,7 +2768,7 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\
#
- # Fix 94: X11_Class
+ # Fix 95: X11_Class
#
case "${file}" in ./X11/ShellP.h )
if ( test -z "`egrep '__cplusplus' ${file}`"
@@ -2791,7 +2796,7 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\
#
- # Fix 95: X11_Class_Usage
+ # Fix 96: X11_Class_Usage
#
case "${file}" in ./Xm/BaseClassI.h )
if ( test -z "`egrep '__cplusplus' ${file}`"
@@ -2812,7 +2817,7 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\
#
- # Fix 96: X11_New
+ # Fix 97: X11_New
#
case "${file}" in ./Xm/Traversal.h )
if ( test -z "`egrep '__cplusplus' ${file}`"
@@ -2841,7 +2846,7 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\
#
- # Fix 97: X11_Sprintf
+ # Fix 98: X11_Sprintf
#
case "${file}" in ./X11*/Xmu.h )
fixlist="${fixlist}
@@ -2861,7 +2866,7 @@ extern char * sprintf();\
#
- # Fix 98: Zzz_Ki_Iface
+ # Fix 99: Zzz_Ki_Iface
#
case "${file}" in ./sys/ki_iface.h )
if ( test -n "`egrep 'These definitions are for HP Internal developers' ${file}`"
@@ -2888,7 +2893,7 @@ cat > /dev/null ) < $infile > ${DESTDIR}/fixinc.tmp
#
- # Fix 99: Zzz_Ki
+ # Fix 100: Zzz_Ki
#
case "${file}" in ./sys/ki.h )
if ( test -n "`egrep '11.00 HP-UX LP64' ${file}`"
@@ -2915,7 +2920,7 @@ cat > /dev/null ) < $infile > ${DESTDIR}/fixinc.tmp
#
- # Fix 100: Zzz_Ki_Calls
+ # Fix 101: Zzz_Ki_Calls
#
case "${file}" in ./sys/ki_calls.h )
if ( test -n "`egrep 'kthread_create_caller_t' ${file}`"
@@ -2942,7 +2947,7 @@ cat > /dev/null ) < $infile > ${DESTDIR}/fixinc.tmp
#
- # Fix 101: Zzz_Ki_Defs
+ # Fix 102: Zzz_Ki_Defs
#
case "${file}" in ./sys/ki_defs.h )
if ( test -n "`egrep 'Kernel Instrumentation Definitions' ${file}`"
@@ -2969,7 +2974,7 @@ cat > /dev/null ) < $infile > ${DESTDIR}/fixinc.tmp
#
- # Fix 102: Zzz_Bad_Fixes
+ # Fix 103: Zzz_Bad_Fixes
#
case "${file}" in ./sundev/ipi_error.h )
fixlist="${fixlist}
@@ -2993,7 +2998,7 @@ cat > /dev/null ) < $infile > ${DESTDIR}/fixinc.tmp
#
- # Fix 103: Zzz_Time
+ # Fix 104: Zzz_Time
#
case "${file}" in ./sys/time.h )
if ( test -n "`egrep '11.0 and later representation of ki time' ${file}`"
@@ -3086,9 +3091,9 @@ find . -name DONE -exec rm -f '{}' ';'
echo 'Removing unneeded directories:'
cd $LIB
-all_dirs=`find . -type d \! -name '.' -print | sort -r`
+all_dirs=`find . -type d -print | sort -r`
for file in $all_dirs; do
- rmdir $LIB/$file > /dev/null 2>&1
+ rmdir $LIB/$file > /dev/null 2>&1 | :
done
# # # # # # # # # # # # # # # # # # # # #
@@ -3099,10 +3104,8 @@ done
#
# # # # # # # # # # # # # # # # # # # # #
-if [ x${INSTALL_ASSERT_H} != x ] && [ -f ${srcdir}/assert.h ]
-then
- cd $ORIGDIR
- rm -f include/assert.h
- cp ${srcdir}/assert.h include/assert.h || exit 1
- chmod a+r include/assert.h
-fi
+cd $ORIGDIR
+rm -f include/assert.h
+cp ${srcdir}/assert.h include/assert.h || exit 1
+chmod a+r include/assert.h
+
diff --git a/gnu/egcs/gcc/fixinc/inclhack.tpl b/gnu/egcs/gcc/fixinc/inclhack.tpl
index 2c76483ba62..c2b3b513f30 100644
--- a/gnu/egcs/gcc/fixinc/inclhack.tpl
+++ b/gnu/egcs/gcc/fixinc/inclhack.tpl
@@ -118,12 +118,7 @@ for INPUT in ${INPUTLIST} ; do
cd ${ORIGDIR}
-# This originally used cd || continue, however, that does not work with the
-# Solaris2 /bin/sh.
-if [ ! -d ${INPUT} ]; then
- continue
-fi
-cd ${INPUT}
+cd ${INPUT} || continue
INPUT=`${PWDCMD}`
#
@@ -408,9 +403,9 @@ find . -name DONE -exec rm -f '{}' ';'
echo 'Removing unneeded directories:'
cd $LIB
-all_dirs=`find . -type d \! -name '.' -print | sort -r`
+all_dirs=`find . -type d -print | sort -r`
for file in $all_dirs; do
- rmdir $LIB/$file > /dev/null 2>&1
+ rmdir $LIB/$file > /dev/null 2>&1 | :
done
# # # # # # # # # # # # # # # # # # # # #
@@ -421,13 +416,11 @@ done
#
# # # # # # # # # # # # # # # # # # # # #
-if [ x${INSTALL_ASSERT_H} != x ] && [ -f ${srcdir}/assert.h ]
-then
- cd $ORIGDIR
- rm -f include/assert.h
- cp ${srcdir}/assert.h include/assert.h || exit 1
- chmod a+r include/assert.h
-fi[=
+cd $ORIGDIR
+rm -f include/assert.h
+cp ${srcdir}/assert.h include/assert.h || exit 1
+chmod a+r include/assert.h
+[=
# Make the output file executable
# =][=
diff --git a/gnu/egcs/gcc/fixinc/procopen.c b/gnu/egcs/gcc/fixinc/procopen.c
index 086a21e18e4..28004eed8a7 100644
--- a/gnu/egcs/gcc/fixinc/procopen.c
+++ b/gnu/egcs/gcc/fixinc/procopen.c
@@ -46,8 +46,17 @@
* If you do not wish that, delete this exception notice.
*/
#include "auto-host.h"
-#include "gansidecl.h"
-#include "system.h"
+
+#include <sys/types.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/param.h>
#include "server.h"
@@ -95,12 +104,10 @@ chain_open (stdin_fd, pp_args, p_child)
t_pchar *pp_args;
pid_t *p_child;
{
- t_fd_pair stdout_pair;
+ t_fd_pair stdout_pair = {-1, -1};
pid_t ch_id;
char *pz_cmd;
- stdout_pair.read_fd = stdout_pair.write_fd = -1;
-
/*
* Create a pipe it will be the child process' stdout,
* and the parent will read from it.
diff --git a/gnu/egcs/gcc/fixinc/server.c b/gnu/egcs/gcc/fixinc/server.c
index 40662c46572..e803e0a29ce 100644
--- a/gnu/egcs/gcc/fixinc/server.c
+++ b/gnu/egcs/gcc/fixinc/server.c
@@ -46,9 +46,17 @@
* If you do not wish that, delete this exception notice.
*/
#include "auto-host.h"
-#include "gansidecl.h"
-#include "system.h"
+
+#include <sys/types.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <errno.h>
#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/param.h>
#include "server.h"
@@ -78,10 +86,6 @@
#define NUL '\0'
#endif
-#if !defined(volatile) && !defined(HAVE_VOLATILE)
-# define volatile
-#endif
-
STATIC volatile bool read_pipe_timeout;
static t_pchar def_args[] =
diff --git a/gnu/egcs/gcc/fixincludes b/gnu/egcs/gcc/fixincludes
index e5cc1c373b6..c9a65218555 100644
--- a/gnu/egcs/gcc/fixincludes
+++ b/gnu/egcs/gcc/fixincludes
@@ -338,7 +338,6 @@ while [ $# != 0 ]; do
/#[ ]*define[ ]*[ ]CTRL/ s/'\''\([cgx]\)'\''/\1/g
/#[ ]*define[ ]*[ ]_CTRL/ s/'\''\([cgx]\)'\''/\1/g
/#[ ]*define.BSD43_CTRL/ s/'\''\([cgx]\)'\''/\1/g
- /#[ ]*define[ ]*[ ][_]*ISCTRL/ s/'\''\([cgx]\)'\''/\1/g
/#[ ]*[el]*if/{
s/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g
@@ -1002,7 +1001,6 @@ if [ -r ${LIB}/$file ]; then
-e 's/char[ ]*\*[ ]*calloc/void \* calloc/g' \
-e 's/char[ ]*\*[ ]*malloc/void \* malloc/g' \
-e 's/char[ ]*\*[ ]*realloc/void \* realloc/g' \
- -e 's/char[ ]*\*[ ]*bsearch/void \* bsearch/g' \
-e 's/int[ ][ ]*exit/void exit/g' \
-e "/$size_t_pattern/"'i\
#ifndef _GCC_SIZE_T\
@@ -3244,7 +3242,7 @@ find . -name DONE -exec rm -f '{}' ';'
echo 'Removing unneeded directories:'
cd $LIB
-files=`find . -type d \! -name '.' -print | sort -r`
+files=`find . -type d -print | sort -r`
for file in $files; do
rmdir $LIB/$file > /dev/null 2>&1
done
diff --git a/gnu/egcs/gcc/fixproto b/gnu/egcs/gcc/fixproto
index 9e022113ea0..03c8fddb435 100644
--- a/gnu/egcs/gcc/fixproto
+++ b/gnu/egcs/gcc/fixproto
@@ -54,27 +54,12 @@
# Ron Guilmette (rfg@netcom.com) (original idea and code)
# Per Bothner (bothner@cygnus.com) (major re-write)
-dirname=`echo "$0" | sed 's,^[^/]*$,.,;s,//*[^/]*$,,'`
-progname=`echo "$0" | sed 's,.*/,,'`
+progname=$0
+progname=`basename $progname`
original_dir=`pwd`
FIX_HEADER=${FIX_HEADER-$original_dir/fix-header}
DEFINES="-D__STDC__=0 -D__cplusplus ${FIXPROTO_DEFINES}"
-if mkdir -p . 2> /dev/null; then
- # Great, mkdir accepts -p
- mkinstalldirs="mkdir -p"
-else
- # We expect mkinstalldirs to be passed in the environment.
- # If it is not, assume it is in the directory that contains this script.
- mkinstalldirs=${mkinstalldirs-"/bin/sh $dirname/mkinstalldirs"}
- if $mkinstalldirs . 2> /dev/null; then
- :
- else
- # But, in case of failure, fallback to plain mkdir, and hope it works
- mkinstalldirs=mkdir
- fi
-fi
-
if [ `echo $1 | wc -w` = 0 ] ; then
echo $progname\: usage\: $progname target-dir \[ source-dir \.\.\. \]
exit 1
@@ -109,7 +94,7 @@ fi
if [ \! -d $abs_target_dir ] ; then
echo $progname\: creating directory $rel_target_dir
- $mkinstalldirs $abs_target_dir
+ mkdir -p $abs_target_dir
fi
echo $progname\: populating \`$rel_target_dir\'
@@ -190,7 +175,7 @@ for code in ALL STD ; do
abs_target_subdir=${abs_target_dir}/${rel_source_subdir}
if [ \! -d $abs_target_subdir ] ; then
- if $mkinstalldirs $abs_target_subdir ; then
+ if mkdir -p $abs_target_subdir ; then
subdirs_made="$abs_target_subdir $subdirs_made"
fi
fi
@@ -217,7 +202,7 @@ for code in ALL STD ; do
# Create the dir where this file will go when fixed.
xxdir=`echo ./$file | sed -e 's|/[^/]*$||'`
if [ \! -d $abs_target_subdir/$xxdir ] ; then
- if $mkinstalldirs $abs_target_subdir/$xxdir ; then
+ if mkdir -p $abs_target_subdir/$xxdir ; then
subdirs_made="$abs_target_subdir/$xxdir $subdirs_made"
fi
fi
diff --git a/gnu/egcs/gcc/flow.c b/gnu/egcs/gcc/flow.c
index 432a990220a..b46c87ea46a 100644
--- a/gnu/egcs/gcc/flow.c
+++ b/gnu/egcs/gcc/flow.c
@@ -1,6 +1,5 @@
/* Data flow analysis for GNU compiler.
- Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 92-98, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -1563,12 +1562,7 @@ delete_unreachable_blocks ()
check that the edge is not a FALLTHRU edge. */
if ((s = b->succ) != NULL
&& s->succ_next == NULL
- && s->dest == c
- /* If the last insn is not a normal conditional jump
- (or an unconditional jump), then we can not tidy the
- fallthru edge because we can not delete the jump. */
- && GET_CODE (b->end) == JUMP_INSN
- && condjump_p (b->end))
+ && s->dest == c)
tidy_fallthru_edge (s, b, c);
}
@@ -1584,14 +1578,8 @@ delete_unreachable_blocks ()
/* A loop because chains of blocks might be combineable. */
while ((s = b->succ) != NULL
&& s->succ_next == NULL
- && (s->flags & EDGE_EH) == 0
&& (c = s->dest) != EXIT_BLOCK_PTR
&& c->pred->pred_next == NULL
- /* If the last insn is not a normal conditional jump
- (or an unconditional jump), then we can not merge
- the blocks because we can not delete the jump. */
- && GET_CODE (b->end) == JUMP_INSN
- && condjump_p (b->end)
&& merge_blocks (s, b, c))
continue;
@@ -1682,7 +1670,7 @@ delete_block (b)
basic_block b;
{
int deleted_handler = 0;
- rtx insn, end, tmp;
+ rtx insn, end;
/* If the head of this block is a CODE_LABEL, then it might be the
label for an exception handler which can't be reached.
@@ -1729,21 +1717,11 @@ delete_block (b)
}
}
- /* Include any jump table following the basic block. */
- end = b->end;
- if (GET_CODE (end) == JUMP_INSN
- && (tmp = JUMP_LABEL (end)) != NULL_RTX
- && (tmp = NEXT_INSN (tmp)) != NULL_RTX
- && GET_CODE (tmp) == JUMP_INSN
- && (GET_CODE (PATTERN (tmp)) == ADDR_VEC
- || GET_CODE (PATTERN (tmp)) == ADDR_DIFF_VEC))
- end = tmp;
-
- /* Include any barrier that may follow the basic block. */
- tmp = next_nonnote_insn (b->end);
- if (tmp && GET_CODE (tmp) == BARRIER)
- end = tmp;
-
+ /* Selectively unlink the insn chain. Include any BARRIER that may
+ follow the basic block. */
+ end = next_nonnote_insn (b->end);
+ if (!end || GET_CODE (end) != BARRIER)
+ end = b->end;
delete_insn_chain (insn, end);
no_delete_insns:
@@ -1807,7 +1785,6 @@ flow_delete_insn (insn)
{
rtx prev = PREV_INSN (insn);
rtx next = NEXT_INSN (insn);
- rtx note;
PREV_INSN (insn) = NULL_RTX;
NEXT_INSN (insn) = NULL_RTX;
@@ -1827,10 +1804,6 @@ flow_delete_insn (insn)
if (GET_CODE (insn) == JUMP_INSN && JUMP_LABEL (insn))
LABEL_NUSES (JUMP_LABEL (insn))--;
- /* Also if deleting an insn that references a label. */
- else if ((note = find_reg_note (insn, REG_LABEL, NULL_RTX)) != NULL_RTX)
- LABEL_NUSES (XEXP (note, 0))--;
-
return next;
}
@@ -2299,14 +2272,11 @@ mark_regs_live_at_end (set)
we end up eliminating it, it will be removed from the live list
of each basic block by reload. */
- if (! reload_completed || frame_pointer_needed)
- {
- SET_REGNO_REG_SET (set, FRAME_POINTER_REGNUM);
+ SET_REGNO_REG_SET (set, FRAME_POINTER_REGNUM);
#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
- /* If they are different, also mark the hard frame pointer as live */
- SET_REGNO_REG_SET (set, HARD_FRAME_POINTER_REGNUM);
+ /* If they are different, also mark the hard frame pointer as live */
+ SET_REGNO_REG_SET (set, HARD_FRAME_POINTER_REGNUM);
#endif
- }
/* Mark all global registers, and all registers used by the epilogue
as being live at the end of the function since they may be
@@ -2737,39 +2707,6 @@ propagate_block (old, first, last, final, significant, bnum, remove_dead_code)
can cause trouble for first or last insn in a basic block. */
if (final && insn_is_dead)
{
- rtx inote;
- /* If the insn referred to a label, note that the label is
- now less used. */
- for (inote = REG_NOTES (insn); inote; inote = XEXP (inote, 1))
- {
- if (REG_NOTE_KIND (inote) == REG_LABEL)
- {
- rtx label = XEXP (inote, 0);
- rtx next;
- LABEL_NUSES (label)--;
-
- /* If this label was attached to an ADDR_VEC, it's
- safe to delete the ADDR_VEC. In fact, it's pretty much
- mandatory to delete it, because the ADDR_VEC may
- be referencing labels that no longer exist. */
- if (LABEL_NUSES (label) == 0
- && (next = next_nonnote_insn (label)) != NULL
- && GET_CODE (next) == JUMP_INSN
- && (GET_CODE (PATTERN (next)) == ADDR_VEC
- || GET_CODE (PATTERN (next)) == ADDR_DIFF_VEC))
- {
- rtx pat = PATTERN (next);
- int diff_vec_p = GET_CODE (pat) == ADDR_DIFF_VEC;
- int len = XVECLEN (pat, diff_vec_p);
- int i;
- for (i = 0; i < len; i++)
- LABEL_NUSES (XEXP (XVECEXP (pat, diff_vec_p, i), 0))--;
-
- flow_delete_insn (next);
- }
- }
- }
-
PUT_CODE (insn, NOTE);
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
NOTE_SOURCE_FILE (insn) = 0;
@@ -3020,11 +2957,9 @@ insn_dead_p (x, needed, call_ok, notes)
/* Don't delete insns to set global regs. */
if ((regno < FIRST_PSEUDO_REGISTER && global_regs[regno])
/* Make sure insns to set frame pointer aren't deleted. */
- || (regno == FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ || regno == FRAME_POINTER_REGNUM
#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
- || (regno == HARD_FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ || regno == HARD_FRAME_POINTER_REGNUM
#endif
#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
/* Make sure insns to set arg pointer are never deleted
@@ -3323,9 +3258,6 @@ mark_set_1 (needed, dead, x, insn, significant)
invalidate_mems_from_autoinc (insn);
if (GET_CODE (reg) == MEM && ! side_effects_p (reg)
- /* We do not know the size of a BLKmode store, so we do not track
- them for redundant store elimination. */
- && GET_MODE (reg) != BLKmode
/* There are no REG_INC notes for SP, so we can't assume we'll see
everything that invalidates it. To be safe, don't eliminate any
stores though SP; none of them should be redundant anyway. */
@@ -3333,11 +3265,9 @@ mark_set_1 (needed, dead, x, insn, significant)
mem_set_list = gen_rtx_EXPR_LIST (VOIDmode, reg, mem_set_list);
if (GET_CODE (reg) == REG
- && (regno = REGNO (reg), ! (regno == FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed)))
+ && (regno = REGNO (reg), regno != FRAME_POINTER_REGNUM)
#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
- && ! (regno == HARD_FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ && regno != HARD_FRAME_POINTER_REGNUM
#endif
#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
@@ -3795,14 +3725,12 @@ mark_used_regs (needed, live, x, final, insn)
nothing below can be necessary, so waste no more time. */
if (regno == STACK_POINTER_REGNUM
#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
- || (regno == HARD_FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ || regno == HARD_FRAME_POINTER_REGNUM
#endif
#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
|| (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
#endif
- || (regno == FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed)))
+ || regno == FRAME_POINTER_REGNUM)
{
/* If this is a register we are going to try to eliminate,
don't mark it live here. If we are successful in
@@ -3978,11 +3906,9 @@ mark_used_regs (needed, live, x, final, insn)
if ((GET_CODE (testreg) == PARALLEL
&& GET_MODE (testreg) == BLKmode)
|| (GET_CODE (testreg) == REG
- && (regno = REGNO (testreg), ! (regno == FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed)))
+ && (regno = REGNO (testreg), regno != FRAME_POINTER_REGNUM)
#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
- && ! (regno == HARD_FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ && regno != HARD_FRAME_POINTER_REGNUM
#endif
#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
diff --git a/gnu/egcs/gcc/frame.c b/gnu/egcs/gcc/frame.c
index 990a0ac8117..b5f643e7043 100644
--- a/gnu/egcs/gcc/frame.c
+++ b/gnu/egcs/gcc/frame.c
@@ -1,6 +1,6 @@
/* Subroutines needed for unwinding stack frames for exception handling. */
/* Compile this one with gcc. */
-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
Contributed by Jason Merrill <jason@cygnus.com>.
This file is part of GNU CC.
@@ -714,14 +714,6 @@ execute_cfa_insn (void *p, struct frame_state_internal *state,
state->s.args_size = offset;
break;
- case DW_CFA_GNU_negative_offset_extended:
- p = decode_uleb128 (p, &reg);
- p = decode_uleb128 (p, &offset);
- offset *= info->data_align;
- state->s.saved[reg] = REG_SAVED_OFFSET;
- state->s.reg_or_offset[reg] = -offset;
- break;
-
default:
abort ();
}
diff --git a/gnu/egcs/gcc/function.h b/gnu/egcs/gcc/function.h
index c25933ca26e..878de9e950e 100644
--- a/gnu/egcs/gcc/function.h
+++ b/gnu/egcs/gcc/function.h
@@ -146,7 +146,6 @@ struct function
struct label_node *caught_return_label_stack;
tree protect_list;
rtx ehc;
- rtx eh_return_stub_label;
/* For expr.c. */
rtx pending_chain;
@@ -217,40 +216,11 @@ struct function
/* The FUNCTION_DECL for an inline function currently being expanded. */
extern tree inline_function_decl;
-/* Label that will go on parm cleanup code, if any.
- Jumping to this label runs cleanup code for parameters, if
- such code must be run. Following this code is the logical return label. */
-
-extern rtx cleanup_label;
-
/* Label that will go on function epilogue.
Jumping to this label serves as a "return" instruction
on machines which require execution of the epilogue on all returns. */
-
extern rtx return_label;
-/* Offset to end of allocated area of stack frame.
- If stack grows down, this is the address of the last stack slot allocated.
- If stack grows up, this is the address for the next slot. */
-extern HOST_WIDE_INT frame_offset;
-
-/* Label to jump back to for tail recursion, or 0 if we have
- not yet needed one for this function. */
-extern rtx tail_recursion_label;
-
-/* Place after which to insert the tail_recursion_label if we need one. */
-extern rtx tail_recursion_reentry;
-
-/* Location at which to save the argument pointer if it will need to be
- referenced. There are two cases where this is done: if nonlocal gotos
- exist, or if vars whose is an offset from the argument pointer will be
- needed by inner routines. */
-
-extern rtx arg_pointer_save_area;
-
-/* Chain of all RTL_EXPRs that have insns in them. */
-extern tree rtl_expr_chain;
-
/* List (chain of EXPR_LISTs) of all stack slots in this function.
Made for the sake of unshare_all_rtl. */
extern rtx stack_slot_list;
diff --git a/gnu/egcs/gcc/ginclude/va-ppc.h b/gnu/egcs/gcc/ginclude/va-ppc.h
index de299b59cf9..6d81497174d 100644
--- a/gnu/egcs/gcc/ginclude/va-ppc.h
+++ b/gnu/egcs/gcc/ginclude/va-ppc.h
@@ -17,10 +17,10 @@
/* Note that the names in this structure are in the user's namespace, but
that the V.4 abi explicitly states that these names should be used. */
typedef struct __va_list_tag {
- unsigned char gpr; /* index into the array of 8 GPRs stored in the
+ char gpr; /* index into the array of 8 GPRs stored in the
register save area gpr=0 corresponds to r3,
gpr=1 to r4, etc. */
- unsigned char fpr; /* index into the array of 8 FPRs stored in the
+ char fpr; /* index into the array of 8 FPRs stored in the
register save area fpr=0 corresponds to f1,
fpr=1 to f2, etc. */
char *overflow_arg_area; /* location on stack that holds the next
@@ -51,13 +51,13 @@ typedef struct {
/* Macros to access the register save area */
/* We cast to void * and then to TYPE * because this avoids
a warning about increasing the alignment requirement. */
-#define __VA_FP_REGSAVE(AP,OFS,TYPE) \
+#define __VA_FP_REGSAVE(AP,TYPE) \
((TYPE *) (void *) (&(((__va_regsave_t *) \
- (AP)->reg_save_area)->__fp_save[OFS])))
+ (AP)->reg_save_area)->__fp_save[(int)(AP)->fpr])))
-#define __VA_GP_REGSAVE(AP,OFS,TYPE) \
+#define __VA_GP_REGSAVE(AP,TYPE) \
((TYPE *) (void *) (&(((__va_regsave_t *) \
- (AP)->reg_save_area)->__gp_save[OFS])))
+ (AP)->reg_save_area)->__gp_save[(int)(AP)->gpr])))
/* Common code for va_start for both varargs and stdarg. We allow all
the work to be done by __builtin_saveregs. It returns a pointer to
@@ -88,106 +88,60 @@ typedef struct {
#define __va_float_p(TYPE) (__builtin_classify_type(*(TYPE *)0) == 8)
#endif
+#define __va_longlong_p(TYPE) \
+ ((__builtin_classify_type(*(TYPE *)0) == 1) && (sizeof(TYPE) == 8))
+
#define __va_aggregate_p(TYPE) (__builtin_classify_type(*(TYPE *)0) >= 12)
#define __va_size(TYPE) ((sizeof(TYPE) + sizeof (long) - 1) / sizeof (long))
-/* This symbol isn't defined. It is used to flag type promotion violations
- at link time. We can only do this when optimizing. Use __builtin_trap
- instead of abort so that we don't require a prototype for abort.
-
- __builtin_trap stuff is not available on the gcc-2.95 branch, so we just
- avoid calling it for now. */
-
-#ifdef __OPTIMIZE__
-extern void __va_arg_type_violation(void) __attribute__((__noreturn__));
-#else
-#define __va_arg_type_violation()
-#endif
-
-#define va_arg(AP,TYPE) \
-__extension__ (*({ \
- register TYPE *__ptr; \
- \
- if (__va_float_p (TYPE) && sizeof (TYPE) < 16) \
- { \
- unsigned char __fpr = (AP)->fpr; \
- if (__fpr < 8) \
- { \
- __ptr = __VA_FP_REGSAVE (AP, __fpr, TYPE); \
- (AP)->fpr = __fpr + 1; \
- } \
- else if (sizeof (TYPE) == 8) \
- { \
- unsigned long __addr = (unsigned long) (__va_overflow (AP)); \
- __ptr = (TYPE *)((__addr + 7) & -8); \
- __va_overflow (AP) = (char *)(__ptr + 1); \
- } \
- else \
- { \
- /* float is promoted to double. */ \
- __va_arg_type_violation (); \
- } \
- } \
- \
- /* Aggregates and long doubles are passed by reference. */ \
- else if (__va_aggregate_p (TYPE) || __va_float_p (TYPE)) \
- { \
- unsigned char __gpr = (AP)->gpr; \
- if (__gpr < 8) \
- { \
- __ptr = * __VA_GP_REGSAVE (AP, __gpr, TYPE *); \
- (AP)->gpr = __gpr + 1; \
- } \
- else \
- { \
- TYPE **__pptr = (TYPE **) (__va_overflow (AP)); \
- __ptr = * __pptr; \
- __va_overflow (AP) = (char *) (__pptr + 1); \
- } \
- } \
- \
- /* Only integrals remaining. */ \
- else \
- { \
- /* longlong is aligned. */ \
- if (sizeof (TYPE) == 8) \
- { \
- unsigned char __gpr = (AP)->gpr; \
- if (__gpr < 7) \
- { \
- __gpr += __gpr & 1; \
- __ptr = __VA_GP_REGSAVE (AP, __gpr, TYPE); \
- (AP)->gpr = __gpr + 2; \
- } \
- else \
- { \
- unsigned long __addr = (unsigned long) (__va_overflow (AP)); \
- __ptr = (TYPE *)((__addr + 7) & -8); \
- (AP)->gpr = 8; \
- __va_overflow (AP) = (char *)(__ptr + 1); \
- } \
- } \
- else if (sizeof (TYPE) == 4) \
- { \
- unsigned char __gpr = (AP)->gpr; \
- if (__gpr < 8) \
- { \
- __ptr = __VA_GP_REGSAVE (AP, __gpr, TYPE); \
- (AP)->gpr = __gpr + 1; \
- } \
- else \
- { \
- __ptr = (TYPE *) __va_overflow (AP); \
- __va_overflow (AP) = (char *)(__ptr + 1); \
- } \
- } \
- else \
- { \
- /* Everything else was promoted to int. */ \
- __va_arg_type_violation (); \
- } \
- } \
- __ptr; \
+#define va_arg(AP,TYPE) \
+__extension__ (*({ \
+ register TYPE *__ptr; \
+ \
+ if (__va_float_p (TYPE) && (AP)->fpr < 8) \
+ { \
+ __ptr = __VA_FP_REGSAVE (AP, TYPE); \
+ (AP)->fpr++; \
+ } \
+ \
+ else if (__va_aggregate_p (TYPE) && (AP)->gpr < 8) \
+ { \
+ __ptr = * __VA_GP_REGSAVE (AP, TYPE *); \
+ (AP)->gpr++; \
+ } \
+ \
+ else if (!__va_float_p (TYPE) && !__va_aggregate_p (TYPE) \
+ && (AP)->gpr + __va_size(TYPE) <= 8 \
+ && (!__va_longlong_p(TYPE) \
+ || (AP)->gpr + __va_size(TYPE) <= 8)) \
+ { \
+ if (__va_longlong_p(TYPE) && ((AP)->gpr & 1) != 0) \
+ (AP)->gpr++; \
+ \
+ __ptr = __VA_GP_REGSAVE (AP, TYPE); \
+ (AP)->gpr += __va_size (TYPE); \
+ } \
+ \
+ else if (!__va_float_p (TYPE) && !__va_aggregate_p (TYPE) \
+ && (AP)->gpr < 8) \
+ { \
+ (AP)->gpr = 8; \
+ __ptr = (TYPE *) (void *) (__va_overflow(AP)); \
+ __va_overflow(AP) += __va_size (TYPE) * sizeof (long); \
+ } \
+ \
+ else if (__va_aggregate_p (TYPE)) \
+ { \
+ __ptr = * (TYPE **) (void *) (__va_overflow(AP)); \
+ __va_overflow(AP) += sizeof (TYPE *); \
+ } \
+ else \
+ { \
+ __ptr = (TYPE *) (void *) (__va_overflow(AP)); \
+ __va_overflow(AP) += __va_size (TYPE) * sizeof (long); \
+ } \
+ \
+ __ptr; \
}))
#define va_end(AP) ((void)0)
diff --git a/gnu/egcs/gcc/ginclude/varargs.h b/gnu/egcs/gcc/ginclude/varargs.h
index bb9c98a7c30..132d1d13027 100644
--- a/gnu/egcs/gcc/ginclude/varargs.h
+++ b/gnu/egcs/gcc/ginclude/varargs.h
@@ -93,9 +93,7 @@
#define va_alist __builtin_va_alist
/* The ... causes current_function_varargs to be set in cc1. */
-/* ??? We don't process attributes correctly in K&R argument context. */
-typedef int __builtin_va_alist_t __attribute__((__mode__(__word__)));
-#define va_dcl __builtin_va_alist_t __builtin_va_alist; __va_ellipsis
+#define va_dcl int __builtin_va_alist; __va_ellipsis
/* Define __gnuc_va_list, just as in gstdarg.h. */
diff --git a/gnu/egcs/gcc/glimits.h b/gnu/egcs/gcc/glimits.h
index 2878051f625..559e712d726 100644
--- a/gnu/egcs/gcc/glimits.h
+++ b/gnu/egcs/gcc/glimits.h
@@ -64,7 +64,7 @@
/* Minimum and maximum values a `signed long int' can hold.
(Same as `int'). */
#ifndef __LONG_MAX__
-#if defined (__alpha__) || (defined (_ARCH_PPC) && defined (__64BIT__)) || defined (__sparc_v9__) || defined (__sparcv9)
+#if defined (__alpha__) || defined (__sparc_v9__) || defined (__sparcv9)
#define __LONG_MAX__ 9223372036854775807L
#else
#define __LONG_MAX__ 2147483647L
diff --git a/gnu/egcs/gcc/haifa-sched.c b/gnu/egcs/gcc/haifa-sched.c
index 42144769201..a87c98a9444 100644
--- a/gnu/egcs/gcc/haifa-sched.c
+++ b/gnu/egcs/gcc/haifa-sched.c
@@ -2849,7 +2849,7 @@ insn_unit (insn)
range, don't cache it. */
if (FUNCTION_UNITS_SIZE < HOST_BITS_PER_SHORT
|| unit >= 0
- || (unit & ~((1 << (HOST_BITS_PER_SHORT - 1)) - 1)) == 0)
+ || (~unit & ((1 << (HOST_BITS_PER_SHORT - 1)) - 1)) == 0)
INSN_UNIT (insn) = unit;
}
return (unit > 0 ? unit - 1 : unit);
@@ -3952,11 +3952,16 @@ sched_analyze (head, tail)
{
for (u = reg_last_uses[i]; u; u = XEXP (u, 1))
add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
+ reg_last_uses[i] = 0;
for (u = reg_last_sets[i]; u; u = XEXP (u, 1))
add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
- SET_REGNO_REG_SET (reg_pending_clobbers, i);
+ if (global_regs[i])
+ for (u = reg_last_clobbers[i]; u; u = XEXP (u, 1))
+ add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
+
+ SET_REGNO_REG_SET (reg_pending_sets, i);
}
}
@@ -4625,15 +4630,12 @@ attach_deaths (x, insn, set_p)
if (regno >= FIRST_PSEUDO_REGISTER || ! global_regs[regno])
{
- /* Never add REG_DEAD notes for STACK_POINTER_REGNUM
- since it's always considered to be live. Similarly
- for FRAME_POINTER_REGNUM if a frame pointer is needed
- and for ARG_POINTER_REGNUM if it is fixed. */
- if (! (regno == FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ /* Never add REG_DEAD notes for the FRAME_POINTER_REGNUM or the
+ STACK_POINTER_REGNUM, since these are always considered to be
+ live. Similarly for ARG_POINTER_REGNUM if it is fixed. */
+ if (regno != FRAME_POINTER_REGNUM
#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && ! (regno == HARD_FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ && ! (regno == HARD_FRAME_POINTER_REGNUM)
#endif
#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
&& ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
diff --git a/gnu/egcs/gcc/intl/ChangeLog b/gnu/egcs/gcc/intl/ChangeLog
index 3938710c673..198950159da 100644
--- a/gnu/egcs/gcc/intl/ChangeLog
+++ b/gnu/egcs/gcc/intl/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
1998-04-29 Ulrich Drepper <drepper@cygnus.com>
* intl/localealias.c (read_alias_file): Use unsigned char for
diff --git a/gnu/egcs/gcc/java/ChangeLog b/gnu/egcs/gcc/java/ChangeLog
index 8a7265e25b9..61ccfe6b3f9 100644
--- a/gnu/egcs/gcc/java/ChangeLog
+++ b/gnu/egcs/gcc/java/ChangeLog
@@ -1,241 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Sat Oct 16 15:18:42 1999 Jeffrey A Law (law@cygnus.com)
-
- 1999-10-14 Tom Tromey <tromey@cygnus.com>
- * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Tue Aug 10 00:28:31 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * jvgenmain.c (main): NUL-terminate name_obstack.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-1999-06-29 Tom Tromey <tromey@cygnus.com>
-
- * jvspec.c (lang_specific_driver): Recognize --help.
-
-Fri Jun 25 13:35:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.c: Rebuilt.
-
- * parse.y (resolve_package): Fixed bogus return statement.
- (patch_method_invocation): Resolve method invocation beginning with
- a package name qualifier.
-
- * parse.y (java_complete_lhs): When doing cross referencing, don't
- try to keep file location on a WFL expanded as a CALL_EXPR.
-
- * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
- compiling to class file a void method with an empty method body.
- As a side effect, the bytecode backend will generate the
- appropriate `return' instruction.
-
- * parse.y (lookup_package_type_and_set_next): New function prototype.
- (resolve_package): Search current and imported packages.
- (lookup_package_type_and_set_next): New function.
-
-1999-06-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * Make-lang.in (java.stage1): Depend on stage1-start.
- (java.stage2): Likewise for stage2-start.
- (java.stage3): Likewise for stage3-start.
- (java.stage4): Likewise for stage4-start.
-
-1999-06-22 Andrew Haley <aph@cygnus.com>
-
- * verify.c (verify_jvm_instructions): Check for pending blocks
- before invalid PC test and opcode switch, not after.
-
-1999-06-21 Andrew Haley <aph@cygnus.com>
-
- * except.c (find_handler_in_range): The upper limit for exception
- ranges is exclusive, not inclusive: (start <= pc < end).
- (link_handler): find child pointer which points to outer by
- searching sibling list: previous code incorrectly assumed that
- outer->outer->first_child must point to outer.
- * verify.c (verify_jvm_instructions): FIXME added to code for
- `athrow'.
- (verify_jvm_instructions): Do not assume that the last block
- processed in a subroutine is a block which ends with a `ret'
- instruction. With some control flows it is possible that the last
- block ends with an `athrow'.
-
-Mon Jun 14 13:13:39 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (qualify_ambiguous_name): Reorganized the post
- evaluation of non WFL leading expression nodes.
-
-Fri Jun 11 21:37:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
- CONVERT_EXPR.
-
-Thu Jun 10 22:26:17 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (qualify_ambiguous_name): Handle qualified expression
- beginning with a STRING_CST.
-
-Thu Jun 10 20:27:25 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (register_fields): Set DECL_INITIAL on both
- pre-initialized static and public fields.
- (resolve_field_access): Static field access expressions to always
- use pointer types.
- (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
- qualification. CONVERT_EXPR to be resolved as an expression name.
- (java_complete_lhs): Identify and access qualified final
- initialized field in switch statement case expression.
- (fold_constant_for_init): Pre-initialized field decl constant to
- be folded.
-
-Mon Jun 7 16:09:51 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (note_possible_classname): Mark returned node with
- QUALIFIED_P only if the original class name contained a '/'.
-
-Sat Jun 5 11:46:59 1999 Anthony Green <green@cygnus.com>
-
- * Make-lang.in (gcjh): More parallel build fixes.
-
-1999-06-03 Mike Stump <mrs@wrs.com>
-
- * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
-
-Wed Jun 2 10:44:38 1999 Anthony Green <green@cygnus.com>
-
- * except.c (link_handler): Chain exception handlers in order.
-
-Wed Jun 2 10:41:24 1999 Anthony Green <green@cygnus.com>
-
- * expr.c (expand_byte_code): Fill unreachable bytecode regions
- with nops and process as usual in order to always set correct EH
- ranges. Emit detailed warnings about unreachable bytecodes.
-
-Wed Jun 2 10:35:13 1999 Anthony Green <green@cygnus.com>
-
- * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
- constant.
-
-Fri May 28 18:22:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (lookup_field_wrapper): Unified returned value to NULL
- or the searched field decl.
-
-Fri May 28 11:34:05 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (fold_constant_for_init): Convert numerical constant
- values to the type of the assigned field.
-
-Thu May 27 19:57:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * expr.c (lookup_field): Relaxed the test on class loading error
- detection.
- * parse.y (fold_constant_for_init): Enabeled old code.
-
-Wed May 26 18:06:02 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
- decide the validity of the cast of a java.lang.Cloneable reference
- to an array.
- (patch_conditional_expr): Fixed first argument passed to
- binary_numeric_promotion.
-
-Wed May 26 15:33:06 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (qualify_ambiguous_name): Take into account that a
- CONVERT_EXPR might specify a type as a WFL.
-
-Tue May 25 15:06:13 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (patch_assignment): Save the rhs before using it as an
- argument to _Jv_CheckArrayStore.
-
-Tue May 25 11:23:59 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
-
-Mon May 24 13:26:00 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
- floating point litteral only when the exponent indicator has been
- parsed.
-
-Sat May 22 13:54:41 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (formal_parameter:): Construct argument tree list
- element even if a yet unsupported final parameter was encountered.
-
-Tue May 18 00:28:58 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (finish_method_declaration): Issue errors for native or
- abstract methods declared with a method body, as well as for non
- native or non abstract methods with no method body.
-
-1999-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * class.c (build_utf8_ref): Initialize variable `field'.
-
- * decl.c (init_decl_processing): Initialize variable `field'.
-
- * expr.c (build_known_method_ref): Mark parameters `method_type',
- `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
- (process_jvm_instruction): Likewise for parameter `length'.
-
- * jvspec.c (lang_specific_driver): Mark variables `saw_math',
- `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
- ATTRIBUTE_UNUSED.
-
- * parse.y (maybe_generate_clinit): Remove unused variable
- `has_non_primitive_fields'.
- (find_in_imports_on_demand): Initialize variables `node_to_use'
- and `cl'.
- (patch_binop): Likewise for variable `prom_type'.
- (patch_unaryop): Likewise for variable `prom_type'.
-
- * verify.c (verify_jvm_instructions): Likewise for variable `last'.
-
- * xref.c (xref_table): Add missing initializer.
-
-1999-05-14 Tom Tromey <tromey@cygnus.com>
-
- * java-except.h (struct eh_range): Removed unused `next' member.
- * verify.c (verify_jvm_instructions): Call check_nested_ranges
- after adding all exception handlers. Sort exception ranges in
- order of start PC.
- (struct pc_index): New structure.
- (start_pc_cmp): New function.
- * except.c (add_handler): Return `void'. Don't call link_handler;
- instead construct an ordinary linked list and do range
- coalescing.
- (check_nested_ranges): New function.
- (link_handler): Changed interface to allow merging of eh_ranges.
- Split overlapping ranges. Return `void'.
-
-Mon May 17 19:20:24 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (constructor_block_end:): New rule, tagged <node>.
- (constructor_body:): Use `constructor_block_end' instead of
- `block_end'.
-
-Mon May 17 18:01:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * parse.y (statement_nsi:): Pop `for' statement block.
- (java_complete_lhs): Labeled blocks containing no statement are
- marked as completing normally.
-
Fri May 14 12:31:08 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* xref.c (xref_set_current_fp): New function, defined.
@@ -281,13 +43,13 @@ Thu May 13 13:23:38 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* xref.h (xref_get_data): New function, declared.
(XREF_GET_DATA): Use xref_get_data.
-1999-05-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+1999-05-13 Kaveh R. Ghazi <ghazi@snafu.rutgers.edu>
* gjavah.c (print_include): Cast the result of `strlen' to int
when comparing against a signed value.
(add_namelet): Likewise.
-1999-05-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+1999-05-12 Kaveh R. Ghazi <ghazi@snafu.rutgers.edu>
* expr.c (expand_invoke): Mark parameter `nargs' with
ATTRIBUTE_UNUSED.
@@ -1783,7 +1545,7 @@ Sat Dec 12 20:13:19 1998 Per Bothner <bothner@cygnus.com>
* parse.y (java_complete_expand_methods): Call write_classfile
here, and not in java_expand_classes (which only gets first class).
-Sat Dec 12 19:46:04 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
+Sat Dec 12 19:46:04 1998 Alexandre Petit-Bianco <apbianco@sendai.cygnus.com>
* parse.y (<type_declaration>): Do maybe_generate_clinit last.
(register_fields): If a static fields has an initializer, just
@@ -1820,7 +1582,7 @@ Sat Dec 12 19:21:11 1998 Per Bothner <bothner@cygnus.com>
* class.c (make_class_data): Renamed dtable -> vtable, and
dtable_method_count -> vtable_method_count.
-Thu Dec 10 20:00:54 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
+Thu Dec 10 20:00:54 1998 Alexandre Petit-Bianco <apbianco@sendai.cygnus.com>
* decl.c (long_zero_node, float_zero_node, double_zero_node): New
global variables, initialized.
@@ -3571,7 +3333,7 @@ Thu Sep 3 18:04:09 1998 Per Bothner <bothner@cygnus.com>
* gjavah.c: Support new -prepend -add -append flags.
(print_method_info): Method is not virtual if class is final.
-Thu Sep 3 12:03:53 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
+Thu Sep 3 12:03:53 1998 Alexandre Petit-Bianco <apbianco@sendai.cygnus.com>
* jv-scan.c: Fixed copyright assignment.
* keyword.gperf: Likewise.
diff --git a/gnu/egcs/gcc/java/Make-lang.in b/gnu/egcs/gcc/java/Make-lang.in
index 39397f267fc..557001bcc94 100644
--- a/gnu/egcs/gcc/java/Make-lang.in
+++ b/gnu/egcs/gcc/java/Make-lang.in
@@ -97,7 +97,7 @@ $(GCJ)-cross$(exeext): $(GCJ)$(exeext)
# Dependencies here must be kept in sync with dependencies in Makefile.in.
jvgenmain$(exeext): $(srcdir)/java/jvgenmain.c $(srcdir)/java/mangle.c \
- $(OBSTACK) $(LIBDEPS) $(TREE_H)
+ $(OBSTACK) $(LIBDEPS)
cd java && $(MAKE) $(FLAGS_TO_PASS) $(JAVA_FLAGS_TO_PASS) ../jvgenmain$(exeext)
# This must be kept in sync with dependencies in Makefile.in.
@@ -107,7 +107,7 @@ GCJH_SOURCES = $(srcdir)/java/gjavah.c $(srcdir)/java/jcf-io.c \
$(srcdir)/java/javaop.def $(srcdir)/java/jcf-depend.c \
$(srcdir)/java/jcf-path.c
-gcjh$(exeext): $(GCJH_SOURCES) $(LIBDEPS) $(TREE_H)
+gcjh$(exeext): $(GCJH_SOURCES) $(LIBDEPS)
cd java && $(MAKE) $(FLAGS_TO_PASS) $(JAVA_FLAGS_TO_PASS) ../gcjh$(exeext)
# This must be kept in sync with dependencies in Makefile.in.
@@ -119,7 +119,7 @@ jv-scan$(exeext): $(JV_SCAN_SOURCES) stamp-objlist $(LIBDEPS)
# This must be kept in sync with dependencies in Makefile.in.
JCF_DUMP_SOURCES = $(srcdir)/java/jcf-dump.c $(srcdir)/java/jcf-io.c \
- $(srcdir)/java/zextract.c $(srcdir)/../libiberty/memmove.c $(TREE_H)
+ $(srcdir)/java/zextract.c $(srcdir)/../libiberty/memmove.c
jcf-dump$(exeext): $(JCF_DUMP_SOURCES)
cd java && $(MAKE) $(FLAGS_TO_PASS) $(JAVA_FLAGS_TO_PASS) ../jcf-dump$(exeext)
@@ -187,13 +187,13 @@ java.maintainer-clean:
# Stage hooks:
# The main makefile has already created stage?/java.
-java.stage1: stage1-start
+java.stage1:
-mv java/*$(objext) stage1/java
-java.stage2: stage2-start
+java.stage2:
-mv java/*$(objext) stage2/java
-java.stage3: stage3-start
+java.stage3:
-mv java/*$(objext) stage3/java
-java.stage4: stage4-start
+java.stage4:
-mv java/*$(objext) stage4/java
#
# Maintenance hooks:
diff --git a/gnu/egcs/gcc/java/class.c b/gnu/egcs/gcc/java/class.c
index 8217a950768..2e00e74eb47 100644
--- a/gnu/egcs/gcc/java/class.c
+++ b/gnu/egcs/gcc/java/class.c
@@ -559,7 +559,7 @@ build_utf8_ref (name)
int name_len = IDENTIFIER_LENGTH(name);
char buf[60];
char *buf_ptr;
- tree ctype, field = NULL_TREE, str_type, cinit, string;
+ tree ctype, field, str_type, cinit, string;
static int utf8_count = 0;
int name_hash;
tree ref = IDENTIFIER_UTF8_REF (name);
@@ -583,7 +583,6 @@ build_utf8_ref (name)
TREE_TYPE (string) = str_type;
PUSH_FIELD_VALUE (cinit, "data", string);
FINISH_RECORD_CONSTRUCTOR (cinit);
- TREE_CONSTANT (cinit) = 1;
/* Build a unique identifier based on buf. */
sprintf(buf, "_Utf%d", ++utf8_count);
@@ -609,7 +608,6 @@ build_utf8_ref (name)
DECL_ARTIFICIAL (decl) = 1;
DECL_IGNORED_P (decl) = 1;
TREE_READONLY (decl) = 1;
- TREE_THIS_VOLATILE (decl) = 0;
DECL_INITIAL (decl) = cinit;
TREE_CHAIN (decl) = utf8_decl_list;
layout_decl (decl, 0);
diff --git a/gnu/egcs/gcc/java/decl.c b/gnu/egcs/gcc/java/decl.c
index de03e5fd007..625ba8a5bea 100644
--- a/gnu/egcs/gcc/java/decl.c
+++ b/gnu/egcs/gcc/java/decl.c
@@ -432,7 +432,7 @@ void
init_decl_processing ()
{
register tree endlink;
- tree field = NULL_TREE;
+ tree field;
tree t;
current_function_decl = NULL;
diff --git a/gnu/egcs/gcc/java/except.c b/gnu/egcs/gcc/java/except.c
index 920f81a3a42..8fbf0b60e06 100644
--- a/gnu/egcs/gcc/java/except.c
+++ b/gnu/egcs/gcc/java/except.c
@@ -72,7 +72,7 @@ find_handler_in_range (pc, range, child)
{
if (pc < child->start_pc)
break;
- if (pc < child->end_pc)
+ if (pc <= child->end_pc)
return find_handler_in_range (pc, child, child->first_child);
}
cache_range = range;
@@ -108,107 +108,51 @@ find_handler (pc)
return find_handler_in_range (pc, h, cache_next_child);
}
-/* Recursive helper routine for check_nested_ranges. */
+#if 0
+first_child;
+next_sibling;
+outer;
+#endif
-static void
-link_handler (range, outer)
- struct eh_range *range, *outer;
+/* Recursive helper routine for add_handler. */
+
+static int
+link_handler (start_pc, end_pc, handler, type, outer)
+ int start_pc, end_pc;
+ tree handler;
+ tree type;
+ struct eh_range *outer;
{
struct eh_range **ptr;
-
- if (range->start_pc == outer->start_pc && range->end_pc == outer->end_pc)
- {
- outer->handlers = chainon (range->handlers, outer->handlers);
- return;
- }
-
- /* If the new range completely encloses the `outer' range, then insert it
- between the outer range and its parent. */
- if (range->start_pc <= outer->start_pc && range->end_pc >= outer->end_pc)
- {
- range->outer = outer->outer;
- range->next_sibling = NULL;
- range->first_child = outer;
- {
- struct eh_range **pr = &(outer->outer->first_child);
- while (*pr != outer)
- pr = &(*pr)->next_sibling;
- *pr = range;
- }
- outer->outer = range;
- return;
- }
-
- /* Handle overlapping ranges by splitting the new range. */
- if (range->start_pc < outer->start_pc || range->end_pc > outer->end_pc)
+ if (start_pc < outer->start_pc || end_pc > outer->end_pc)
+ return 0; /* invalid or non-nested exception range */
+ if (start_pc == outer->start_pc && end_pc == outer->end_pc)
{
- struct eh_range *h
- = (struct eh_range *) oballoc (sizeof (struct eh_range));
- if (range->start_pc < outer->start_pc)
- {
- h->start_pc = range->start_pc;
- h->end_pc = outer->start_pc;
- range->start_pc = outer->start_pc;
- }
- else
- {
- h->start_pc = outer->end_pc;
- h->end_pc = range->end_pc;
- range->end_pc = outer->end_pc;
- }
- h->first_child = NULL;
- h->outer = NULL;
- h->handlers = build_tree_list (TREE_PURPOSE (range->handlers),
- TREE_VALUE (range->handlers));
- h->next_sibling = NULL;
- /* Restart both from the top to avoid having to make this
- function smart about reentrancy. */
- link_handler (h, &whole_range);
- link_handler (range, &whole_range);
- return;
+ outer->handlers = tree_cons (type, handler, outer->handlers);
+ return 1;
}
-
ptr = &outer->first_child;
for (;; ptr = &(*ptr)->next_sibling)
{
- if (*ptr == NULL || range->end_pc <= (*ptr)->start_pc)
+ if (*ptr == NULL || end_pc <= (*ptr)->start_pc)
{
- range->next_sibling = *ptr;
- range->first_child = NULL;
- range->outer = outer;
- *ptr = range;
- return;
- }
- else if (range->start_pc < (*ptr)->end_pc)
- {
- link_handler (range, *ptr);
- return;
+ struct eh_range *h = (struct eh_range *)
+ oballoc (sizeof (struct eh_range));
+ h->start_pc = start_pc;
+ h->end_pc = end_pc;
+ h->next_sibling = *ptr;
+ h->first_child = NULL;
+ h->outer = outer;
+ h->handlers = build_tree_list (type, handler);
+ *ptr = h;
+ return 1;
}
+ else if (start_pc < (*ptr)->end_pc)
+ return link_handler (start_pc, end_pc, handler, type, *ptr);
/* end_pc > (*ptr)->start_pc && start_pc >= (*ptr)->end_pc. */
}
}
-/* The first pass of exception range processing (calling add_handler)
- constructs a linked list of exception ranges. We turn this into
- the data structure expected by the rest of the code, and also
- ensure that exception ranges are properly nested. */
-
-void
-handle_nested_ranges ()
-{
- struct eh_range *ptr, *next;
-
- ptr = whole_range.first_child;
- whole_range.first_child = NULL;
- for (; ptr; ptr = next)
- {
- next = ptr->next_sibling;
- ptr->next_sibling = NULL;
- link_handler (ptr, &whole_range);
- }
-}
-
-
/* Called to re-initialize the exception machinery for a new method. */
void
@@ -230,54 +174,13 @@ java_set_exception_lang_code ()
set_exception_version_code (1);
}
-/* Add an exception range. If we already have an exception range
- which has the same handler and label, and the new range overlaps
- that one, then we simply extend the existing range. Some bytecode
- obfuscators generate seemingly nonoverlapping exception ranges
- which, when coalesced, do in fact nest correctly.
-
- This constructs an ordinary linked list which check_nested_ranges()
- later turns into the data structure we actually want.
-
- We expect the input to come in order of increasing START_PC. This
- function doesn't attempt to detect the case where two previously
- added disjoint ranges could be coalesced by a new range; that is
- what the sorting counteracts. */
-
-void
+int
add_handler (start_pc, end_pc, handler, type)
int start_pc, end_pc;
tree handler;
tree type;
{
- struct eh_range *ptr, *prev = NULL, *h;
-
- for (ptr = whole_range.first_child; ptr; ptr = ptr->next_sibling)
- {
- if (start_pc >= ptr->start_pc
- && start_pc <= ptr->end_pc
- && TREE_PURPOSE (ptr->handlers) == type
- && TREE_VALUE (ptr->handlers) == handler)
- {
- /* Already found an overlapping range, so coalesce. */
- ptr->end_pc = MAX (ptr->end_pc, end_pc);
- return;
- }
- prev = ptr;
- }
-
- h = (struct eh_range *) oballoc (sizeof (struct eh_range));
- h->start_pc = start_pc;
- h->end_pc = end_pc;
- h->first_child = NULL;
- h->outer = NULL;
- h->handlers = build_tree_list (type, handler);
- h->next_sibling = NULL;
-
- if (prev == NULL)
- whole_range.first_child = h;
- else
- prev->next_sibling = h;
+ return link_handler (start_pc, end_pc, handler, type, &whole_range);
}
diff --git a/gnu/egcs/gcc/java/expr.c b/gnu/egcs/gcc/java/expr.c
index 9beb724ea37..d975c42c5ed 100644
--- a/gnu/egcs/gcc/java/expr.c
+++ b/gnu/egcs/gcc/java/expr.c
@@ -1162,7 +1162,7 @@ lookup_field (typep, name)
if (CLASS_P (*typep) && !CLASS_LOADED_P (*typep))
{
load_class (*typep, 1);
- if (!TYPE_SIZE (*typep) || TREE_CODE (TYPE_SIZE (*typep)) == ERROR_MARK)
+ if (TREE_CODE (TYPE_SIZE (*typep)) == ERROR_MARK)
return error_mark_node;
}
do
@@ -1431,8 +1431,7 @@ tree dtable_ident = NULL_TREE;
tree
build_known_method_ref (method, method_type, self_type, method_signature, arg_list)
- tree method, method_type ATTRIBUTE_UNUSED, self_type,
- method_signature ATTRIBUTE_UNUSED, arg_list ATTRIBUTE_UNUSED;
+ tree method, method_type, self_type, method_signature, arg_list;
{
tree func;
if (is_compiled_class (self_type))
@@ -1986,7 +1985,6 @@ expand_byte_code (jcf, method)
int i;
int saw_index;
unsigned char *linenumber_pointer;
- int dead_code_index = -1;
#undef RET /* Defined by config/i386/i386.h */
#undef AND /* Causes problems with opcodes for iand and land. */
@@ -2165,29 +2163,15 @@ expand_byte_code (jcf, method)
if (! (instruction_bits [PC] & BCODE_VERIFIED))
{
- if (dead_code_index == -1)
- {
- /* This is the start of a region of unreachable bytecodes.
- They still need to be processed in order for EH ranges
- to get handled correctly. However, we can simply
- replace these bytecodes with nops. */
- dead_code_index = PC;
- }
-
- /* Turn this bytecode into a nop. */
- byte_ops[PC] = 0x0;
- }
- else
- {
- if (dead_code_index != -1)
- {
- /* We've just reached the end of a region of dead code. */
- warning ("Unreachable bytecode from %d to before %d.",
- dead_code_index, PC);
- dead_code_index = -1;
- }
+ /* never executed - skip */
+ warning ("Some bytecode operations (starting at pc %d) can never be executed", PC);
+ while (PC < length
+ && ! (instruction_bits [PC] & BCODE_VERIFIED))
+ PC++;
+ continue;
}
+
/* Handle possible line number entry for this PC.
This code handles out-of-order and multiple linenumbers per PC,
@@ -2219,13 +2203,6 @@ expand_byte_code (jcf, method)
maybe_poplevels (PC);
maybe_end_try (PC);
} /* for */
-
- if (dead_code_index != -1)
- {
- /* We've just reached the end of a region of dead code. */
- warning ("Unreachable bytecode from %d to the end of the method.",
- dead_code_index);
- }
}
static void
@@ -2253,7 +2230,7 @@ int
process_jvm_instruction (PC, byte_ops, length)
int PC;
unsigned char* byte_ops;
- long length ATTRIBUTE_UNUSED;
+ long length;
{
const char *opname; /* Temporary ??? */
int oldpc = PC; /* PC at instruction start. */
diff --git a/gnu/egcs/gcc/java/java-except.h b/gnu/egcs/gcc/java/java-except.h
index 07b3feb3046..cdc123d744a 100644
--- a/gnu/egcs/gcc/java/java-except.h
+++ b/gnu/egcs/gcc/java/java-except.h
@@ -47,6 +47,11 @@ struct eh_range
/* The next child of outer, in address order. */
struct eh_range *next_sibling;
+
+#if 0
+ /* Next handler, sorted by ascending start_pc then descending end_pc. */
+ tree next;
+#endif
};
/* A dummy range that represents the entire method. */
@@ -64,8 +69,6 @@ extern void maybe_start_try PROTO ((int));
extern void maybe_end_try PROTO ((int));
-extern void add_handler PROTO ((int, int, tree, tree));
-
-extern void handle_nested_ranges PROTO ((void));
+extern int add_handler PROTO ((int, int, tree, tree));
extern void expand_resume_after_catch PROTO ((void));
diff --git a/gnu/egcs/gcc/java/jvgenmain.c b/gnu/egcs/gcc/java/jvgenmain.c
index 4f82847d043..0f9e6287827 100644
--- a/gnu/egcs/gcc/java/jvgenmain.c
+++ b/gnu/egcs/gcc/java/jvgenmain.c
@@ -96,7 +96,6 @@ main (int argc, const char **argv)
gcc_obstack_init (&name_obstack);
append_gpp_mangled_classtype (&name_obstack, classname);
- obstack_1grow (&name_obstack, '\0');
mangled_classname = obstack_finish (&name_obstack);
if (argc > 2 && strcmp (argv[2], "-") != 0)
diff --git a/gnu/egcs/gcc/java/jvspec.c b/gnu/egcs/gcc/java/jvspec.c
index 61cd89b0d97..95330da332d 100644
--- a/gnu/egcs/gcc/java/jvspec.c
+++ b/gnu/egcs/gcc/java/jvspec.c
@@ -54,15 +54,15 @@ int lang_specific_extra_outfiles = 0;
#define COMBINE_INPUTS 0
char jvgenmain_spec[] =
- "jvgenmain %i %{!pipe:%umain.i} |\n\
- cc1 %{!pipe:%Umain.i} %1 \
+ "jvgenmain %i %{!pipe:%u.i} |\n\
+ cc1 %{!pipe:%U.i} %1 \
%{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a*}\
%{g*} %{O*} \
%{v:-version} %{pg:-p} %{p} %{f*}\
%{aux-info*}\
%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
- %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%Umain.s}} |\n\
- %{!S:as %a %Y -o %d%w%umain%O %{!pipe:%Umain.s} %A\n }";
+ %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%U.s}} |\n\
+ %{!S:as %a %Y -o %d%w%u%O %{!pipe:%U.s} %A\n }";
/* Return full path name of spec file if it is in DIR, or NULL if
not. */
@@ -145,19 +145,19 @@ lang_specific_driver (fn, in_argc, in_argv, in_added_libraries)
int saw_speclang = 0;
/* "-lm" or "-lmath" if it appears on the command line. */
- char *saw_math ATTRIBUTE_UNUSED = 0;
+ char *saw_math = 0;
/* "-lc" if it appears on the command line. */
- char *saw_libc ATTRIBUTE_UNUSED = 0;
+ char *saw_libc = 0;
/* "-lgcjgc" if it appears on the command line. */
- char *saw_gc ATTRIBUTE_UNUSED = 0;
+ char *saw_gc = 0;
/* Saw `-l' option for the thread library. */
- char *saw_threadlib ATTRIBUTE_UNUSED = 0;
+ char *saw_threadlib = 0;
/* Saw `-lgcj' on command line. */
- int saw_libgcj ATTRIBUTE_UNUSED = 0;
+ int saw_libgcj = 0;
/* Saw -C or -o option, respectively. */
int saw_C = 0;
@@ -223,8 +223,6 @@ lang_specific_driver (fn, in_argc, in_argv, in_added_libraries)
main_class_name = argv[i] + 7;
added--;
}
- else if (strcmp (argv[i], "-fhelp") == 0)
- will_link = 0;
else if (strcmp (argv[i], "-v") == 0)
{
saw_verbose_flag = 1;
diff --git a/gnu/egcs/gcc/java/lex.c b/gnu/egcs/gcc/java/lex.c
index fbaa23d80f0..18d873fb135 100644
--- a/gnu/egcs/gcc/java/lex.c
+++ b/gnu/egcs/gcc/java/lex.c
@@ -427,7 +427,7 @@ java_parse_doc_section (c)
/* We're parsing @deprecated */
if (valid_tag && (c == '@'))
{
- char tag [11];
+ char tag [10];
int tag_index = 0;
while (tag_index < 10 && c != UEOF && c != ' ' && c != '\n')
@@ -741,7 +741,7 @@ java_lex (java_lval)
stage = 4; /* So we fall through */
}
- if ((c=='-' || c =='+') && stage == 2)
+ if ((c=='-' || c =='+') && stage < 3)
{
stage = 3;
literal_token [literal_index++] = c;
diff --git a/gnu/egcs/gcc/java/parse-scan.c b/gnu/egcs/gcc/java/parse-scan.c
index 6340ee8795f..fcc19aa63cc 100644
--- a/gnu/egcs/gcc/java/parse-scan.c
+++ b/gnu/egcs/gcc/java/parse-scan.c
@@ -1375,7 +1375,7 @@ static const short yycheck[] = { 3,
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 3 "/x1/java/install/share/bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1568,7 +1568,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif
#endif
-#line 196 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 196 "/x1/java/install/share/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -2156,7 +2156,7 @@ case 337:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 498 "/x1/java/install/share/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
diff --git a/gnu/egcs/gcc/java/parse.c b/gnu/egcs/gcc/java/parse.c
index 69c8789236e..92ed988cf24 100644
--- a/gnu/egcs/gcc/java/parse.c
+++ b/gnu/egcs/gcc/java/parse.c
@@ -1,6 +1,6 @@
/* A Bison parser, made from ./parse.y
- by GNU Bison version 1.27
+ by GNU Bison version 1.25
*/
#define YYBISON 1 /* Identify Bison output. */
@@ -12,113 +12,113 @@
#define yychar java_char
#define yydebug java_debug
#define yynerrs java_nerrs
-#define PLUS_TK 257
-#define MINUS_TK 258
-#define MULT_TK 259
-#define DIV_TK 260
-#define REM_TK 261
-#define LS_TK 262
-#define SRS_TK 263
-#define ZRS_TK 264
-#define AND_TK 265
-#define XOR_TK 266
-#define OR_TK 267
-#define BOOL_AND_TK 268
-#define BOOL_OR_TK 269
-#define EQ_TK 270
-#define NEQ_TK 271
-#define GT_TK 272
-#define GTE_TK 273
-#define LT_TK 274
-#define LTE_TK 275
-#define PLUS_ASSIGN_TK 276
-#define MINUS_ASSIGN_TK 277
-#define MULT_ASSIGN_TK 278
-#define DIV_ASSIGN_TK 279
-#define REM_ASSIGN_TK 280
-#define LS_ASSIGN_TK 281
-#define SRS_ASSIGN_TK 282
-#define ZRS_ASSIGN_TK 283
-#define AND_ASSIGN_TK 284
-#define XOR_ASSIGN_TK 285
-#define OR_ASSIGN_TK 286
-#define PUBLIC_TK 287
-#define PRIVATE_TK 288
-#define PROTECTED_TK 289
-#define STATIC_TK 290
-#define FINAL_TK 291
-#define SYNCHRONIZED_TK 292
-#define VOLATILE_TK 293
-#define TRANSIENT_TK 294
-#define NATIVE_TK 295
-#define PAD_TK 296
-#define ABSTRACT_TK 297
-#define MODIFIER_TK 298
-#define DECR_TK 299
-#define INCR_TK 300
-#define DEFAULT_TK 301
-#define IF_TK 302
-#define THROW_TK 303
-#define BOOLEAN_TK 304
-#define DO_TK 305
-#define IMPLEMENTS_TK 306
-#define THROWS_TK 307
-#define BREAK_TK 308
-#define IMPORT_TK 309
-#define ELSE_TK 310
-#define INSTANCEOF_TK 311
-#define RETURN_TK 312
-#define VOID_TK 313
-#define CATCH_TK 314
-#define INTERFACE_TK 315
-#define CASE_TK 316
-#define EXTENDS_TK 317
-#define FINALLY_TK 318
-#define SUPER_TK 319
-#define WHILE_TK 320
-#define CLASS_TK 321
-#define SWITCH_TK 322
-#define CONST_TK 323
-#define TRY_TK 324
-#define FOR_TK 325
-#define NEW_TK 326
-#define CONTINUE_TK 327
-#define GOTO_TK 328
-#define PACKAGE_TK 329
-#define THIS_TK 330
-#define BYTE_TK 331
-#define SHORT_TK 332
-#define INT_TK 333
-#define LONG_TK 334
-#define CHAR_TK 335
-#define INTEGRAL_TK 336
-#define FLOAT_TK 337
-#define DOUBLE_TK 338
-#define FP_TK 339
-#define ID_TK 340
-#define REL_QM_TK 341
-#define REL_CL_TK 342
-#define NOT_TK 343
-#define NEG_TK 344
-#define ASSIGN_ANY_TK 345
-#define ASSIGN_TK 346
-#define OP_TK 347
-#define CP_TK 348
-#define OCB_TK 349
-#define CCB_TK 350
-#define OSB_TK 351
-#define CSB_TK 352
-#define SC_TK 353
-#define C_TK 354
-#define DOT_TK 355
-#define STRING_LIT_TK 356
-#define CHAR_LIT_TK 357
-#define INT_LIT_TK 358
-#define FP_LIT_TK 359
-#define TRUE_TK 360
-#define FALSE_TK 361
-#define BOOL_LIT_TK 362
-#define NULL_TK 363
+#define PLUS_TK 258
+#define MINUS_TK 259
+#define MULT_TK 260
+#define DIV_TK 261
+#define REM_TK 262
+#define LS_TK 263
+#define SRS_TK 264
+#define ZRS_TK 265
+#define AND_TK 266
+#define XOR_TK 267
+#define OR_TK 268
+#define BOOL_AND_TK 269
+#define BOOL_OR_TK 270
+#define EQ_TK 271
+#define NEQ_TK 272
+#define GT_TK 273
+#define GTE_TK 274
+#define LT_TK 275
+#define LTE_TK 276
+#define PLUS_ASSIGN_TK 277
+#define MINUS_ASSIGN_TK 278
+#define MULT_ASSIGN_TK 279
+#define DIV_ASSIGN_TK 280
+#define REM_ASSIGN_TK 281
+#define LS_ASSIGN_TK 282
+#define SRS_ASSIGN_TK 283
+#define ZRS_ASSIGN_TK 284
+#define AND_ASSIGN_TK 285
+#define XOR_ASSIGN_TK 286
+#define OR_ASSIGN_TK 287
+#define PUBLIC_TK 288
+#define PRIVATE_TK 289
+#define PROTECTED_TK 290
+#define STATIC_TK 291
+#define FINAL_TK 292
+#define SYNCHRONIZED_TK 293
+#define VOLATILE_TK 294
+#define TRANSIENT_TK 295
+#define NATIVE_TK 296
+#define PAD_TK 297
+#define ABSTRACT_TK 298
+#define MODIFIER_TK 299
+#define DECR_TK 300
+#define INCR_TK 301
+#define DEFAULT_TK 302
+#define IF_TK 303
+#define THROW_TK 304
+#define BOOLEAN_TK 305
+#define DO_TK 306
+#define IMPLEMENTS_TK 307
+#define THROWS_TK 308
+#define BREAK_TK 309
+#define IMPORT_TK 310
+#define ELSE_TK 311
+#define INSTANCEOF_TK 312
+#define RETURN_TK 313
+#define VOID_TK 314
+#define CATCH_TK 315
+#define INTERFACE_TK 316
+#define CASE_TK 317
+#define EXTENDS_TK 318
+#define FINALLY_TK 319
+#define SUPER_TK 320
+#define WHILE_TK 321
+#define CLASS_TK 322
+#define SWITCH_TK 323
+#define CONST_TK 324
+#define TRY_TK 325
+#define FOR_TK 326
+#define NEW_TK 327
+#define CONTINUE_TK 328
+#define GOTO_TK 329
+#define PACKAGE_TK 330
+#define THIS_TK 331
+#define BYTE_TK 332
+#define SHORT_TK 333
+#define INT_TK 334
+#define LONG_TK 335
+#define CHAR_TK 336
+#define INTEGRAL_TK 337
+#define FLOAT_TK 338
+#define DOUBLE_TK 339
+#define FP_TK 340
+#define ID_TK 341
+#define REL_QM_TK 342
+#define REL_CL_TK 343
+#define NOT_TK 344
+#define NEG_TK 345
+#define ASSIGN_ANY_TK 346
+#define ASSIGN_TK 347
+#define OP_TK 348
+#define CP_TK 349
+#define OCB_TK 350
+#define CCB_TK 351
+#define OSB_TK 352
+#define CSB_TK 353
+#define SC_TK 354
+#define C_TK 355
+#define DOT_TK 356
+#define STRING_LIT_TK 357
+#define CHAR_LIT_TK 358
+#define INT_LIT_TK 359
+#define FP_LIT_TK 360
+#define TRUE_TK 361
+#define FALSE_TK 362
+#define BOOL_LIT_TK 363
+#define NULL_TK 364
#line 48 "./parse.y"
@@ -176,7 +176,6 @@ static int find_in_imports PROTO ((tree));
static int check_pkg_class_access PROTO ((tree, tree));
static tree resolve_package PROTO ((tree, tree *));
static tree lookup_package_type PROTO ((char *, int));
-static tree lookup_package_type_and_set_next PROTO ((char *, int, tree *));
static tree resolve_class PROTO ((tree, tree, tree));
static void declare_local_variables PROTO ((int, tree, tree));
static void source_start_java_method PROTO ((tree));
@@ -376,7 +375,7 @@ static tree java_lang_cloneable = NULL_TREE;
static tree current_static_block = NULL_TREE;
-#line 304 "./parse.y"
+#line 303 "./parse.y"
typedef union {
tree node;
int sub_token;
@@ -386,7 +385,7 @@ typedef union {
} operator;
int value;
} YYSTYPE;
-#line 314 "./parse.y"
+#line 313 "./parse.y"
#include "lex.c"
#ifndef YYDEBUG
@@ -403,11 +402,11 @@ typedef union {
-#define YYFINAL 777
+#define YYFINAL 775
#define YYFLAG -32768
#define YYNTBASE 110
-#define YYTRANSLATE(x) ((unsigned)(x) <= 363 ? yytranslate[x] : 266)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 364 ? yytranslate[x] : 265)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -435,18 +434,18 @@ static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109
};
#if YYDEBUG != 0
@@ -466,42 +465,41 @@ static const short yyprhs[] = { 0,
363, 365, 369, 373, 376, 380, 383, 387, 388, 391,
394, 396, 400, 404, 406, 409, 411, 414, 418, 420,
421, 425, 428, 432, 436, 441, 444, 448, 452, 457,
- 459, 462, 467, 473, 481, 488, 490, 492, 493, 498,
- 499, 505, 506, 512, 513, 520, 524, 529, 532, 536,
- 539, 543, 546, 550, 552, 555, 557, 559, 561, 563,
- 565, 568, 571, 574, 578, 583, 585, 589, 593, 596,
- 600, 602, 604, 606, 609, 611, 613, 615, 618, 621,
- 625, 627, 629, 631, 633, 635, 637, 639, 641, 643,
- 645, 647, 649, 651, 653, 655, 657, 659, 661, 663,
- 665, 667, 669, 671, 674, 677, 680, 683, 686, 689,
- 692, 695, 699, 704, 709, 715, 720, 726, 733, 741,
- 748, 750, 752, 754, 756, 758, 760, 762, 768, 771,
- 775, 780, 788, 796, 797, 801, 806, 809, 813, 819,
- 822, 826, 830, 835, 837, 840, 843, 845, 848, 852,
- 855, 858, 862, 865, 870, 873, 876, 880, 885, 888,
- 890, 898, 906, 913, 917, 923, 928, 936, 943, 946,
- 949, 953, 956, 957, 959, 961, 964, 965, 967, 969,
- 973, 977, 980, 984, 987, 991, 994, 998, 1001, 1005,
- 1008, 1012, 1015, 1019, 1023, 1026, 1030, 1036, 1042, 1045,
- 1050, 1054, 1056, 1060, 1064, 1069, 1072, 1074, 1077, 1080,
- 1085, 1088, 1092, 1097, 1100, 1103, 1105, 1107, 1109, 1111,
- 1115, 1117, 1119, 1121, 1123, 1127, 1131, 1135, 1139, 1143,
- 1147, 1151, 1155, 1161, 1166, 1173, 1179, 1184, 1190, 1196,
- 1203, 1207, 1211, 1216, 1222, 1225, 1229, 1233, 1237, 1239,
- 1243, 1247, 1251, 1255, 1260, 1265, 1270, 1275, 1279, 1283,
- 1285, 1288, 1292, 1296, 1299, 1302, 1306, 1310, 1314, 1318,
- 1321, 1325, 1330, 1336, 1343, 1349, 1356, 1361, 1366, 1371,
- 1376, 1380, 1385, 1389, 1394, 1396, 1398, 1400, 1402, 1405,
- 1408, 1410, 1412, 1415, 1418, 1420, 1423, 1426, 1429, 1432,
- 1435, 1438, 1440, 1443, 1446, 1448, 1451, 1454, 1460, 1465,
- 1470, 1476, 1481, 1484, 1490, 1495, 1501, 1503, 1507, 1511,
- 1515, 1519, 1523, 1527, 1529, 1533, 1537, 1541, 1545, 1547,
- 1551, 1555, 1559, 1563, 1567, 1571, 1573, 1577, 1581, 1585,
- 1589, 1593, 1597, 1601, 1605, 1609, 1613, 1615, 1619, 1623,
- 1627, 1631, 1633, 1637, 1641, 1643, 1647, 1651, 1653, 1657,
- 1661, 1663, 1667, 1671, 1673, 1677, 1681, 1683, 1689, 1694,
- 1698, 1704, 1706, 1708, 1712, 1716, 1718, 1720, 1722, 1724,
- 1726, 1728
+ 462, 468, 476, 483, 485, 487, 488, 493, 494, 500,
+ 501, 507, 508, 515, 519, 524, 527, 531, 534, 538,
+ 541, 545, 547, 550, 552, 554, 556, 558, 560, 563,
+ 566, 569, 573, 578, 580, 584, 588, 591, 595, 597,
+ 599, 601, 604, 606, 608, 610, 613, 616, 620, 622,
+ 624, 626, 628, 630, 632, 634, 636, 638, 640, 642,
+ 644, 646, 648, 650, 652, 654, 656, 658, 660, 662,
+ 664, 666, 669, 672, 675, 678, 681, 684, 687, 690,
+ 694, 699, 704, 710, 715, 721, 728, 736, 743, 745,
+ 747, 749, 751, 753, 755, 757, 763, 766, 770, 775,
+ 783, 791, 792, 796, 801, 804, 808, 814, 817, 821,
+ 825, 830, 832, 835, 838, 840, 843, 847, 850, 853,
+ 857, 860, 865, 868, 871, 875, 880, 883, 885, 893,
+ 901, 908, 912, 918, 923, 931, 938, 941, 944, 948,
+ 951, 952, 954, 956, 959, 960, 962, 964, 968, 972,
+ 975, 979, 982, 986, 989, 993, 996, 1000, 1003, 1007,
+ 1010, 1014, 1018, 1021, 1025, 1031, 1037, 1040, 1045, 1049,
+ 1051, 1055, 1059, 1064, 1067, 1069, 1072, 1075, 1080, 1083,
+ 1087, 1092, 1095, 1098, 1100, 1102, 1104, 1106, 1110, 1112,
+ 1114, 1116, 1118, 1122, 1126, 1130, 1134, 1138, 1142, 1146,
+ 1150, 1156, 1161, 1168, 1174, 1179, 1185, 1191, 1198, 1202,
+ 1206, 1211, 1217, 1220, 1224, 1228, 1232, 1234, 1238, 1242,
+ 1246, 1250, 1255, 1260, 1265, 1270, 1274, 1278, 1280, 1283,
+ 1287, 1291, 1294, 1297, 1301, 1305, 1309, 1313, 1316, 1320,
+ 1325, 1331, 1338, 1344, 1351, 1356, 1361, 1366, 1371, 1375,
+ 1380, 1384, 1389, 1391, 1393, 1395, 1397, 1400, 1403, 1405,
+ 1407, 1410, 1413, 1415, 1418, 1421, 1424, 1427, 1430, 1433,
+ 1435, 1438, 1441, 1443, 1446, 1449, 1455, 1460, 1465, 1471,
+ 1476, 1479, 1485, 1490, 1496, 1498, 1502, 1506, 1510, 1514,
+ 1518, 1522, 1524, 1528, 1532, 1536, 1540, 1542, 1546, 1550,
+ 1554, 1558, 1562, 1566, 1568, 1572, 1576, 1580, 1584, 1588,
+ 1592, 1596, 1600, 1604, 1608, 1610, 1614, 1618, 1622, 1626,
+ 1628, 1632, 1636, 1638, 1642, 1646, 1648, 1652, 1656, 1658,
+ 1662, 1666, 1668, 1672, 1676, 1678, 1684, 1689, 1693, 1699,
+ 1701, 1703, 1707, 1711, 1713, 1715, 1717, 1719, 1721, 1723
};
static const short yyrhs[] = { 123,
@@ -519,7 +517,7 @@ static const short yyrhs[] = { 123,
55, 119, 99, 0, 55, 1, 0, 55, 119, 1,
0, 55, 119, 101, 5, 99, 0, 55, 119, 101,
1, 0, 55, 119, 101, 5, 1, 0, 132, 0,
- 166, 0, 99, 0, 1, 0, 44, 0, 131, 44,
+ 165, 0, 99, 0, 1, 0, 44, 0, 131, 44,
0, 0, 131, 67, 122, 135, 136, 133, 138, 0,
0, 67, 122, 135, 136, 134, 138, 0, 131, 67,
1, 0, 67, 1, 0, 67, 122, 1, 0, 131,
@@ -528,13 +526,13 @@ static const short yyrhs[] = { 123,
1, 0, 117, 0, 137, 100, 117, 0, 137, 100,
1, 0, 95, 96, 0, 95, 139, 96, 0, 140,
0, 139, 140, 0, 141, 0, 156, 0, 158, 0,
- 179, 0, 142, 0, 142, 99, 0, 147, 0, 132,
- 0, 166, 0, 112, 143, 99, 0, 131, 112, 143,
+ 178, 0, 142, 0, 142, 99, 0, 147, 0, 132,
+ 0, 165, 0, 112, 143, 99, 0, 131, 112, 143,
99, 0, 144, 0, 143, 100, 144, 0, 143, 100,
1, 0, 145, 0, 145, 92, 146, 0, 145, 92,
1, 0, 145, 92, 146, 1, 0, 122, 0, 145,
97, 98, 0, 122, 1, 0, 145, 97, 1, 0,
- 145, 98, 1, 0, 264, 0, 177, 0, 0, 149,
+ 145, 98, 1, 0, 263, 0, 176, 0, 0, 149,
148, 155, 0, 149, 1, 0, 112, 150, 153, 0,
59, 150, 153, 0, 131, 112, 150, 153, 0, 131,
59, 150, 153, 0, 112, 1, 0, 131, 112, 1,
@@ -545,196 +543,195 @@ static const short yyrhs[] = { 123,
1, 0, 112, 145, 0, 131, 112, 145, 0, 112,
1, 0, 131, 112, 1, 0, 0, 53, 154, 0,
53, 1, 0, 116, 0, 154, 100, 116, 0, 154,
- 100, 1, 0, 179, 0, 179, 99, 0, 99, 0,
- 157, 179, 0, 157, 179, 99, 0, 44, 0, 0,
+ 100, 1, 0, 178, 0, 178, 99, 0, 99, 0,
+ 157, 178, 0, 157, 178, 99, 0, 44, 0, 0,
160, 159, 162, 0, 161, 153, 0, 131, 161, 153,
0, 120, 93, 94, 0, 120, 93, 151, 94, 0,
- 180, 163, 0, 180, 164, 163, 0, 180, 182, 163,
- 0, 180, 164, 182, 163, 0, 181, 0, 181, 99,
- 0, 165, 93, 94, 99, 0, 165, 93, 233, 94,
- 99, 0, 119, 101, 65, 93, 233, 94, 99, 0,
- 119, 101, 65, 93, 94, 99, 0, 76, 0, 65,
- 0, 0, 61, 122, 167, 172, 0, 0, 131, 61,
- 122, 168, 172, 0, 0, 61, 122, 171, 169, 172,
- 0, 0, 131, 61, 122, 171, 170, 172, 0, 61,
- 122, 1, 0, 131, 61, 122, 1, 0, 63, 117,
- 0, 171, 100, 117, 0, 63, 1, 0, 171, 100,
- 1, 0, 95, 96, 0, 95, 173, 96, 0, 174,
- 0, 173, 174, 0, 175, 0, 176, 0, 132, 0,
- 166, 0, 142, 0, 149, 99, 0, 149, 1, 0,
- 95, 96, 0, 95, 178, 96, 0, 95, 178, 100,
- 96, 0, 146, 0, 178, 100, 146, 0, 178, 100,
- 1, 0, 95, 96, 0, 180, 182, 181, 0, 95,
- 0, 96, 0, 183, 0, 182, 183, 0, 184, 0,
- 186, 0, 132, 0, 185, 99, 0, 112, 143, 0,
- 131, 112, 143, 0, 188, 0, 191, 0, 195, 0,
- 196, 0, 207, 0, 211, 0, 188, 0, 192, 0,
- 197, 0, 208, 0, 212, 0, 179, 0, 189, 0,
- 193, 0, 198, 0, 210, 0, 218, 0, 219, 0,
- 220, 0, 222, 0, 221, 0, 224, 0, 99, 0,
- 122, 88, 0, 190, 186, 0, 122, 1, 0, 190,
- 187, 0, 194, 99, 0, 1, 99, 0, 1, 95,
- 0, 1, 96, 0, 165, 93, 1, 0, 165, 93,
- 94, 1, 0, 165, 93, 233, 1, 0, 165, 93,
- 233, 94, 1, 0, 119, 101, 65, 1, 0, 119,
- 101, 65, 93, 1, 0, 119, 101, 65, 93, 233,
- 1, 0, 119, 101, 65, 93, 233, 94, 1, 0,
- 119, 101, 65, 93, 94, 1, 0, 261, 0, 245,
- 0, 246, 0, 242, 0, 243, 0, 239, 0, 231,
- 0, 48, 93, 264, 94, 186, 0, 48, 1, 0,
- 48, 93, 1, 0, 48, 93, 264, 1, 0, 48,
- 93, 264, 94, 187, 56, 186, 0, 48, 93, 264,
- 94, 187, 56, 187, 0, 0, 200, 199, 201, 0,
- 68, 93, 264, 94, 0, 68, 1, 0, 68, 93,
- 1, 0, 68, 93, 264, 94, 1, 0, 95, 96,
- 0, 95, 204, 96, 0, 95, 202, 96, 0, 95,
- 202, 204, 96, 0, 203, 0, 202, 203, 0, 204,
- 182, 0, 205, 0, 204, 205, 0, 62, 265, 88,
- 0, 47, 88, 0, 62, 1, 0, 62, 265, 1,
- 0, 47, 1, 0, 66, 93, 264, 94, 0, 206,
- 186, 0, 66, 1, 0, 66, 93, 1, 0, 66,
- 93, 264, 1, 0, 206, 187, 0, 51, 0, 209,
- 186, 66, 93, 264, 94, 99, 0, 214, 99, 264,
- 99, 216, 94, 186, 0, 214, 99, 99, 216, 94,
- 186, 0, 214, 99, 1, 0, 214, 99, 264, 99,
- 1, 0, 214, 99, 99, 1, 0, 214, 99, 264,
- 99, 216, 94, 187, 0, 214, 99, 99, 216, 94,
- 187, 0, 71, 93, 0, 71, 1, 0, 71, 93,
- 1, 0, 213, 215, 0, 0, 217, 0, 185, 0,
- 217, 1, 0, 0, 217, 0, 194, 0, 217, 100,
- 194, 0, 217, 100, 1, 0, 54, 99, 0, 54,
- 122, 99, 0, 54, 1, 0, 54, 122, 1, 0,
- 73, 99, 0, 73, 122, 99, 0, 73, 1, 0,
- 73, 122, 1, 0, 58, 99, 0, 58, 264, 99,
- 0, 58, 1, 0, 58, 264, 1, 0, 49, 264,
- 99, 0, 49, 1, 0, 49, 264, 1, 0, 223,
- 93, 264, 94, 179, 0, 223, 93, 264, 94, 1,
- 0, 223, 1, 0, 223, 93, 1, 94, 0, 223,
- 93, 1, 0, 44, 0, 70, 179, 225, 0, 70,
- 179, 228, 0, 70, 179, 225, 228, 0, 70, 1,
- 0, 226, 0, 225, 226, 0, 227, 179, 0, 60,
- 93, 152, 94, 0, 60, 1, 0, 60, 93, 1,
- 0, 60, 93, 1, 94, 0, 64, 179, 0, 64,
- 1, 0, 230, 0, 234, 0, 111, 0, 76, 0,
- 93, 264, 94, 0, 231, 0, 238, 0, 239, 0,
- 240, 0, 119, 101, 67, 0, 113, 101, 67, 0,
- 59, 101, 67, 0, 119, 101, 76, 0, 93, 264,
- 1, 0, 119, 101, 1, 0, 113, 101, 1, 0,
- 59, 101, 1, 0, 72, 116, 93, 233, 94, 0,
- 72, 116, 93, 94, 0, 72, 116, 93, 233, 94,
- 138, 0, 72, 116, 93, 94, 138, 0, 232, 122,
- 93, 94, 0, 232, 122, 93, 94, 138, 0, 232,
- 122, 93, 233, 94, 0, 232, 122, 93, 233, 94,
- 138, 0, 72, 1, 99, 0, 72, 116, 1, 0,
- 72, 116, 93, 1, 0, 72, 116, 93, 233, 1,
- 0, 232, 1, 0, 232, 122, 1, 0, 119, 101,
- 72, 0, 229, 101, 72, 0, 264, 0, 233, 100,
- 264, 0, 233, 100, 1, 0, 72, 113, 235, 0,
- 72, 115, 235, 0, 72, 113, 235, 237, 0, 72,
- 115, 235, 237, 0, 72, 115, 237, 177, 0, 72,
- 113, 237, 177, 0, 72, 1, 98, 0, 72, 1,
- 97, 0, 236, 0, 235, 236, 0, 97, 264, 98,
- 0, 97, 264, 1, 0, 97, 1, 0, 97, 98,
- 0, 237, 97, 98, 0, 237, 97, 1, 0, 229,
- 101, 122, 0, 65, 101, 122, 0, 65, 1, 0,
- 119, 93, 94, 0, 119, 93, 233, 94, 0, 229,
- 101, 122, 93, 94, 0, 229, 101, 122, 93, 233,
- 94, 0, 65, 101, 122, 93, 94, 0, 65, 101,
- 122, 93, 233, 94, 0, 65, 101, 1, 94, 0,
- 65, 101, 1, 101, 0, 119, 97, 264, 98, 0,
- 230, 97, 264, 98, 0, 119, 97, 1, 0, 119,
- 97, 264, 1, 0, 230, 97, 1, 0, 230, 97,
- 264, 1, 0, 229, 0, 119, 0, 242, 0, 243,
- 0, 241, 46, 0, 241, 45, 0, 245, 0, 246,
- 0, 3, 244, 0, 4, 244, 0, 247, 0, 3,
- 1, 0, 4, 1, 0, 46, 244, 0, 46, 1,
- 0, 45, 244, 0, 45, 1, 0, 241, 0, 89,
- 244, 0, 90, 244, 0, 248, 0, 89, 1, 0,
- 90, 1, 0, 93, 113, 237, 94, 244, 0, 93,
- 113, 94, 244, 0, 93, 264, 94, 247, 0, 93,
- 119, 237, 94, 247, 0, 93, 113, 97, 1, 0,
- 93, 1, 0, 93, 113, 237, 94, 1, 0, 93,
- 113, 94, 1, 0, 93, 119, 237, 94, 1, 0,
- 244, 0, 249, 5, 244, 0, 249, 6, 244, 0,
- 249, 7, 244, 0, 249, 5, 1, 0, 249, 6,
- 1, 0, 249, 7, 1, 0, 249, 0, 250, 3,
- 249, 0, 250, 4, 249, 0, 250, 3, 1, 0,
- 250, 4, 1, 0, 250, 0, 251, 8, 250, 0,
- 251, 9, 250, 0, 251, 10, 250, 0, 251, 8,
- 1, 0, 251, 9, 1, 0, 251, 10, 1, 0,
- 251, 0, 252, 20, 251, 0, 252, 18, 251, 0,
- 252, 21, 251, 0, 252, 19, 251, 0, 252, 57,
- 114, 0, 252, 20, 1, 0, 252, 18, 1, 0,
- 252, 21, 1, 0, 252, 19, 1, 0, 252, 57,
- 1, 0, 252, 0, 253, 16, 252, 0, 253, 17,
- 252, 0, 253, 16, 1, 0, 253, 17, 1, 0,
- 253, 0, 254, 11, 253, 0, 254, 11, 1, 0,
- 254, 0, 255, 12, 254, 0, 255, 12, 1, 0,
- 255, 0, 256, 13, 255, 0, 256, 13, 1, 0,
- 256, 0, 257, 14, 256, 0, 257, 14, 1, 0,
- 257, 0, 258, 15, 257, 0, 258, 15, 1, 0,
- 258, 0, 258, 87, 264, 88, 259, 0, 258, 87,
- 88, 1, 0, 258, 87, 1, 0, 258, 87, 264,
- 88, 1, 0, 259, 0, 261, 0, 262, 263, 260,
- 0, 262, 263, 1, 0, 119, 0, 238, 0, 240,
- 0, 91, 0, 92, 0, 260, 0, 264, 0
+ 179, 180, 0, 179, 163, 180, 0, 179, 181, 180,
+ 0, 179, 163, 181, 180, 0, 164, 93, 94, 99,
+ 0, 164, 93, 232, 94, 99, 0, 119, 101, 65,
+ 93, 232, 94, 99, 0, 119, 101, 65, 93, 94,
+ 99, 0, 76, 0, 65, 0, 0, 61, 122, 166,
+ 171, 0, 0, 131, 61, 122, 167, 171, 0, 0,
+ 61, 122, 170, 168, 171, 0, 0, 131, 61, 122,
+ 170, 169, 171, 0, 61, 122, 1, 0, 131, 61,
+ 122, 1, 0, 63, 117, 0, 170, 100, 117, 0,
+ 63, 1, 0, 170, 100, 1, 0, 95, 96, 0,
+ 95, 172, 96, 0, 173, 0, 172, 173, 0, 174,
+ 0, 175, 0, 132, 0, 165, 0, 142, 0, 149,
+ 99, 0, 149, 1, 0, 95, 96, 0, 95, 177,
+ 96, 0, 95, 177, 100, 96, 0, 146, 0, 177,
+ 100, 146, 0, 177, 100, 1, 0, 95, 96, 0,
+ 179, 181, 180, 0, 95, 0, 96, 0, 182, 0,
+ 181, 182, 0, 183, 0, 185, 0, 132, 0, 184,
+ 99, 0, 112, 143, 0, 131, 112, 143, 0, 187,
+ 0, 190, 0, 194, 0, 195, 0, 206, 0, 210,
+ 0, 187, 0, 191, 0, 196, 0, 207, 0, 211,
+ 0, 178, 0, 188, 0, 192, 0, 197, 0, 209,
+ 0, 217, 0, 218, 0, 219, 0, 221, 0, 220,
+ 0, 223, 0, 99, 0, 122, 88, 0, 189, 185,
+ 0, 122, 1, 0, 189, 186, 0, 193, 99, 0,
+ 1, 99, 0, 1, 95, 0, 1, 96, 0, 164,
+ 93, 1, 0, 164, 93, 94, 1, 0, 164, 93,
+ 232, 1, 0, 164, 93, 232, 94, 1, 0, 119,
+ 101, 65, 1, 0, 119, 101, 65, 93, 1, 0,
+ 119, 101, 65, 93, 232, 1, 0, 119, 101, 65,
+ 93, 232, 94, 1, 0, 119, 101, 65, 93, 94,
+ 1, 0, 260, 0, 244, 0, 245, 0, 241, 0,
+ 242, 0, 238, 0, 230, 0, 48, 93, 263, 94,
+ 185, 0, 48, 1, 0, 48, 93, 1, 0, 48,
+ 93, 263, 1, 0, 48, 93, 263, 94, 186, 56,
+ 185, 0, 48, 93, 263, 94, 186, 56, 186, 0,
+ 0, 199, 198, 200, 0, 68, 93, 263, 94, 0,
+ 68, 1, 0, 68, 93, 1, 0, 68, 93, 263,
+ 94, 1, 0, 95, 96, 0, 95, 203, 96, 0,
+ 95, 201, 96, 0, 95, 201, 203, 96, 0, 202,
+ 0, 201, 202, 0, 203, 181, 0, 204, 0, 203,
+ 204, 0, 62, 264, 88, 0, 47, 88, 0, 62,
+ 1, 0, 62, 264, 1, 0, 47, 1, 0, 66,
+ 93, 263, 94, 0, 205, 185, 0, 66, 1, 0,
+ 66, 93, 1, 0, 66, 93, 263, 1, 0, 205,
+ 186, 0, 51, 0, 208, 185, 66, 93, 263, 94,
+ 99, 0, 213, 99, 263, 99, 215, 94, 185, 0,
+ 213, 99, 99, 215, 94, 185, 0, 213, 99, 1,
+ 0, 213, 99, 263, 99, 1, 0, 213, 99, 99,
+ 1, 0, 213, 99, 263, 99, 215, 94, 186, 0,
+ 213, 99, 99, 215, 94, 186, 0, 71, 93, 0,
+ 71, 1, 0, 71, 93, 1, 0, 212, 214, 0,
+ 0, 216, 0, 184, 0, 216, 1, 0, 0, 216,
+ 0, 193, 0, 216, 100, 193, 0, 216, 100, 1,
+ 0, 54, 99, 0, 54, 122, 99, 0, 54, 1,
+ 0, 54, 122, 1, 0, 73, 99, 0, 73, 122,
+ 99, 0, 73, 1, 0, 73, 122, 1, 0, 58,
+ 99, 0, 58, 263, 99, 0, 58, 1, 0, 58,
+ 263, 1, 0, 49, 263, 99, 0, 49, 1, 0,
+ 49, 263, 1, 0, 222, 93, 263, 94, 178, 0,
+ 222, 93, 263, 94, 1, 0, 222, 1, 0, 222,
+ 93, 1, 94, 0, 222, 93, 1, 0, 44, 0,
+ 70, 178, 224, 0, 70, 178, 227, 0, 70, 178,
+ 224, 227, 0, 70, 1, 0, 225, 0, 224, 225,
+ 0, 226, 178, 0, 60, 93, 152, 94, 0, 60,
+ 1, 0, 60, 93, 1, 0, 60, 93, 1, 94,
+ 0, 64, 178, 0, 64, 1, 0, 229, 0, 233,
+ 0, 111, 0, 76, 0, 93, 263, 94, 0, 230,
+ 0, 237, 0, 238, 0, 239, 0, 119, 101, 67,
+ 0, 113, 101, 67, 0, 59, 101, 67, 0, 119,
+ 101, 76, 0, 93, 263, 1, 0, 119, 101, 1,
+ 0, 113, 101, 1, 0, 59, 101, 1, 0, 72,
+ 116, 93, 232, 94, 0, 72, 116, 93, 94, 0,
+ 72, 116, 93, 232, 94, 138, 0, 72, 116, 93,
+ 94, 138, 0, 231, 122, 93, 94, 0, 231, 122,
+ 93, 94, 138, 0, 231, 122, 93, 232, 94, 0,
+ 231, 122, 93, 232, 94, 138, 0, 72, 1, 99,
+ 0, 72, 116, 1, 0, 72, 116, 93, 1, 0,
+ 72, 116, 93, 232, 1, 0, 231, 1, 0, 231,
+ 122, 1, 0, 119, 101, 72, 0, 228, 101, 72,
+ 0, 263, 0, 232, 100, 263, 0, 232, 100, 1,
+ 0, 72, 113, 234, 0, 72, 115, 234, 0, 72,
+ 113, 234, 236, 0, 72, 115, 234, 236, 0, 72,
+ 115, 236, 176, 0, 72, 113, 236, 176, 0, 72,
+ 1, 98, 0, 72, 1, 97, 0, 235, 0, 234,
+ 235, 0, 97, 263, 98, 0, 97, 263, 1, 0,
+ 97, 1, 0, 97, 98, 0, 236, 97, 98, 0,
+ 236, 97, 1, 0, 228, 101, 122, 0, 65, 101,
+ 122, 0, 65, 1, 0, 119, 93, 94, 0, 119,
+ 93, 232, 94, 0, 228, 101, 122, 93, 94, 0,
+ 228, 101, 122, 93, 232, 94, 0, 65, 101, 122,
+ 93, 94, 0, 65, 101, 122, 93, 232, 94, 0,
+ 65, 101, 1, 94, 0, 65, 101, 1, 101, 0,
+ 119, 97, 263, 98, 0, 229, 97, 263, 98, 0,
+ 119, 97, 1, 0, 119, 97, 263, 1, 0, 229,
+ 97, 1, 0, 229, 97, 263, 1, 0, 228, 0,
+ 119, 0, 241, 0, 242, 0, 240, 46, 0, 240,
+ 45, 0, 244, 0, 245, 0, 3, 243, 0, 4,
+ 243, 0, 246, 0, 3, 1, 0, 4, 1, 0,
+ 46, 243, 0, 46, 1, 0, 45, 243, 0, 45,
+ 1, 0, 240, 0, 89, 243, 0, 90, 243, 0,
+ 247, 0, 89, 1, 0, 90, 1, 0, 93, 113,
+ 236, 94, 243, 0, 93, 113, 94, 243, 0, 93,
+ 263, 94, 246, 0, 93, 119, 236, 94, 246, 0,
+ 93, 113, 97, 1, 0, 93, 1, 0, 93, 113,
+ 236, 94, 1, 0, 93, 113, 94, 1, 0, 93,
+ 119, 236, 94, 1, 0, 243, 0, 248, 5, 243,
+ 0, 248, 6, 243, 0, 248, 7, 243, 0, 248,
+ 5, 1, 0, 248, 6, 1, 0, 248, 7, 1,
+ 0, 248, 0, 249, 3, 248, 0, 249, 4, 248,
+ 0, 249, 3, 1, 0, 249, 4, 1, 0, 249,
+ 0, 250, 8, 249, 0, 250, 9, 249, 0, 250,
+ 10, 249, 0, 250, 8, 1, 0, 250, 9, 1,
+ 0, 250, 10, 1, 0, 250, 0, 251, 20, 250,
+ 0, 251, 18, 250, 0, 251, 21, 250, 0, 251,
+ 19, 250, 0, 251, 57, 114, 0, 251, 20, 1,
+ 0, 251, 18, 1, 0, 251, 21, 1, 0, 251,
+ 19, 1, 0, 251, 57, 1, 0, 251, 0, 252,
+ 16, 251, 0, 252, 17, 251, 0, 252, 16, 1,
+ 0, 252, 17, 1, 0, 252, 0, 253, 11, 252,
+ 0, 253, 11, 1, 0, 253, 0, 254, 12, 253,
+ 0, 254, 12, 1, 0, 254, 0, 255, 13, 254,
+ 0, 255, 13, 1, 0, 255, 0, 256, 14, 255,
+ 0, 256, 14, 1, 0, 256, 0, 257, 15, 256,
+ 0, 257, 15, 1, 0, 257, 0, 257, 87, 263,
+ 88, 258, 0, 257, 87, 88, 1, 0, 257, 87,
+ 1, 0, 257, 87, 263, 88, 1, 0, 258, 0,
+ 260, 0, 261, 262, 259, 0, 261, 262, 1, 0,
+ 119, 0, 237, 0, 239, 0, 91, 0, 92, 0,
+ 259, 0, 263, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 458, 464, 466, 467, 468, 469, 470, 474, 476, 479,
- 481, 482, 485, 487, 490, 494, 498, 502, 508, 510,
- 512, 514, 519, 521, 524, 528, 533, 538, 540, 541,
- 542, 543, 544, 545, 546, 549, 554, 560, 562, 565,
- 568, 570, 574, 576, 579, 606, 608, 612, 625, 627,
- 631, 638, 643, 645, 655, 660, 675, 679, 682, 685,
- 688, 690, 692, 697, 701, 703, 705, 707, 711, 713,
- 715, 722, 728, 733, 737, 746, 756, 758, 761, 763,
- 764, 765, 769, 771, 773, 774, 776, 781, 784, 794,
- 797, 799, 803, 806, 813, 819, 827, 829, 831, 833,
- 835, 839, 841, 845, 852, 853, 857, 860, 862, 864,
- 866, 868, 870, 872, 874, 881, 884, 886, 895, 897,
- 901, 906, 911, 915, 920, 925, 927, 934, 936, 938,
- 942, 945, 947, 951, 953, 954, 959, 965, 972, 980,
- 987, 990, 993, 997, 1000, 1004, 1013, 1015, 1017, 1021,
- 1023, 1026, 1033, 1041, 1043, 1047, 1054, 1064, 1068, 1071,
- 1074, 1077, 1080, 1083, 1086, 1089, 1091, 1095, 1101, 1106,
- 1108, 1112, 1115, 1119, 1121, 1124, 1126, 1127, 1129, 1133,
- 1137, 1143, 1148, 1151, 1153, 1157, 1163, 1167, 1172, 1181,
- 1185, 1190, 1202, 1204, 1207, 1209, 1211, 1215, 1219, 1222,
- 1226, 1228, 1229, 1230, 1231, 1232, 1236, 1238, 1239, 1240,
- 1241, 1245, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
- 1255, 1256, 1259, 1264, 1275, 1278, 1282, 1289, 1299, 1305,
- 1311, 1317, 1319, 1325, 1327, 1333, 1335, 1337, 1339, 1341,
- 1345, 1347, 1348, 1349, 1350, 1351, 1352, 1355, 1361, 1363,
- 1365, 1369, 1374, 1379, 1385, 1395, 1401, 1403, 1405, 1412,
- 1415, 1417, 1419, 1423, 1425, 1428, 1432, 1434, 1437, 1444,
- 1450, 1452, 1454, 1458, 1466, 1469, 1471, 1473, 1477, 1482,
- 1491, 1496, 1499, 1506, 1508, 1510, 1514, 1517, 1526, 1533,
- 1535, 1539, 1552, 1554, 1560, 1566, 1570, 1572, 1576, 1579,
- 1581, 1585, 1588, 1590, 1592, 1596, 1599, 1601, 1603, 1607,
- 1610, 1612, 1614, 1618, 1624, 1626, 1630, 1637, 1639, 1641,
- 1643, 1647, 1655, 1658, 1660, 1665, 1669, 1671, 1678, 1686,
- 1703, 1705, 1707, 1711, 1714, 1719, 1721, 1724, 1726, 1728,
- 1730, 1731, 1732, 1733, 1737, 1739, 1741, 1746, 1748, 1750,
- 1752, 1754, 1758, 1761, 1766, 1768, 1773, 1774, 1775, 1776,
- 1777, 1779, 1781, 1783, 1785, 1787, 1791, 1793, 1796, 1802,
- 1807, 1811, 1814, 1816, 1818, 1822, 1824, 1826, 1828, 1832,
- 1835, 1839, 1845, 1847, 1855, 1882, 1884, 1888, 1893, 1900,
- 1904, 1907, 1909, 1920, 1931, 1936, 1945, 1947, 1951, 1954,
- 1956, 1961, 1966, 1971, 1978, 1980, 1981, 1982, 1985, 1990,
- 1995, 1997, 1998, 2000, 2002, 2003, 2005, 2009, 2012, 2016,
- 2019, 2023, 2025, 2027, 2029, 2030, 2032, 2036, 2045, 2047,
- 2049, 2062, 2064, 2070, 2072, 2074, 2078, 2080, 2085, 2090,
- 2095, 2097, 2099, 2103, 2105, 2110, 2115, 2117, 2121, 2123,
- 2128, 2133, 2138, 2140, 2142, 2146, 2148, 2153, 2158, 2163,
- 2168, 2170, 2172, 2174, 2176, 2178, 2182, 2184, 2189, 2194,
- 2196, 2200, 2202, 2207, 2211, 2213, 2218, 2222, 2224, 2229,
- 2233, 2235, 2240, 2244, 2246, 2251, 2255, 2257, 2262, 2268,
- 2270, 2274, 2276, 2279, 2282, 2290, 2292, 2293, 2296, 2298,
- 2301, 2305
+ 457, 463, 465, 466, 467, 468, 469, 473, 475, 478,
+ 480, 481, 484, 486, 489, 493, 497, 501, 507, 509,
+ 511, 513, 518, 520, 523, 527, 532, 537, 539, 540,
+ 541, 542, 543, 544, 545, 548, 553, 559, 561, 564,
+ 567, 569, 573, 575, 578, 605, 607, 611, 624, 626,
+ 630, 637, 642, 644, 654, 659, 674, 678, 681, 684,
+ 687, 689, 691, 696, 700, 702, 704, 706, 710, 712,
+ 714, 721, 727, 732, 736, 745, 755, 757, 760, 762,
+ 763, 764, 768, 770, 772, 773, 775, 780, 783, 793,
+ 796, 798, 802, 805, 812, 818, 826, 828, 830, 832,
+ 834, 838, 840, 844, 851, 852, 856, 859, 861, 863,
+ 865, 867, 869, 871, 873, 880, 883, 885, 894, 896,
+ 900, 905, 910, 914, 919, 921, 923, 930, 932, 934,
+ 938, 941, 943, 947, 949, 950, 955, 961, 968, 976,
+ 983, 986, 989, 993, 996, 1000, 1009, 1011, 1013, 1018,
+ 1025, 1033, 1035, 1039, 1046, 1056, 1060, 1063, 1066, 1069,
+ 1072, 1075, 1078, 1081, 1083, 1087, 1093, 1098, 1100, 1104,
+ 1107, 1111, 1113, 1116, 1118, 1119, 1121, 1125, 1129, 1135,
+ 1140, 1143, 1145, 1149, 1155, 1159, 1164, 1173, 1177, 1182,
+ 1194, 1196, 1199, 1201, 1203, 1207, 1211, 1214, 1218, 1220,
+ 1221, 1222, 1223, 1224, 1228, 1230, 1231, 1232, 1233, 1236,
+ 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
+ 1250, 1255, 1266, 1269, 1273, 1280, 1290, 1296, 1302, 1308,
+ 1310, 1316, 1318, 1324, 1326, 1328, 1330, 1332, 1336, 1338,
+ 1339, 1340, 1341, 1342, 1343, 1346, 1352, 1354, 1356, 1360,
+ 1365, 1370, 1376, 1386, 1392, 1394, 1396, 1403, 1406, 1408,
+ 1410, 1414, 1416, 1419, 1423, 1425, 1428, 1435, 1441, 1443,
+ 1445, 1449, 1457, 1460, 1462, 1464, 1468, 1473, 1482, 1487,
+ 1490, 1497, 1499, 1501, 1505, 1508, 1517, 1524, 1526, 1530,
+ 1543, 1545, 1551, 1557, 1561, 1563, 1567, 1570, 1572, 1576,
+ 1579, 1581, 1583, 1587, 1590, 1592, 1594, 1598, 1601, 1603,
+ 1605, 1609, 1615, 1617, 1621, 1628, 1630, 1632, 1634, 1638,
+ 1646, 1649, 1651, 1656, 1660, 1662, 1669, 1677, 1694, 1696,
+ 1698, 1702, 1705, 1710, 1712, 1715, 1717, 1719, 1721, 1722,
+ 1723, 1724, 1728, 1730, 1732, 1737, 1739, 1741, 1743, 1745,
+ 1749, 1752, 1757, 1759, 1764, 1765, 1766, 1767, 1768, 1770,
+ 1772, 1774, 1776, 1778, 1782, 1784, 1787, 1793, 1798, 1802,
+ 1805, 1807, 1809, 1813, 1815, 1817, 1819, 1823, 1826, 1830,
+ 1836, 1838, 1846, 1873, 1875, 1879, 1884, 1891, 1895, 1898,
+ 1900, 1911, 1922, 1927, 1936, 1938, 1942, 1945, 1947, 1952,
+ 1957, 1962, 1969, 1971, 1972, 1973, 1976, 1981, 1986, 1988,
+ 1989, 1991, 1993, 1994, 1996, 2000, 2003, 2007, 2010, 2014,
+ 2016, 2018, 2020, 2021, 2023, 2027, 2036, 2038, 2040, 2053,
+ 2055, 2061, 2063, 2065, 2069, 2071, 2076, 2081, 2086, 2088,
+ 2090, 2094, 2096, 2101, 2106, 2108, 2112, 2114, 2119, 2124,
+ 2129, 2131, 2133, 2137, 2139, 2144, 2149, 2154, 2159, 2161,
+ 2163, 2165, 2167, 2169, 2173, 2175, 2180, 2185, 2187, 2191,
+ 2193, 2198, 2202, 2204, 2209, 2213, 2215, 2220, 2224, 2226,
+ 2231, 2235, 2237, 2242, 2246, 2248, 2253, 2259, 2261, 2265,
+ 2267, 2270, 2273, 2281, 2283, 2284, 2287, 2289, 2292, 2296
};
#endif
@@ -767,7 +764,7 @@ static const char * const yytname[] = { "$","error","$undefined.","PLUS_TK",
"variable_declarator_id","variable_initializer","method_declaration","@3","method_header",
"method_declarator","formal_parameter_list","formal_parameter","throws","class_type_list",
"method_body","static_initializer","static","constructor_declaration","@4","constructor_header",
-"constructor_declarator","constructor_body","constructor_block_end","explicit_constructor_invocation",
+"constructor_declarator","constructor_body","explicit_constructor_invocation",
"this_or_super","interface_declaration","@5","@6","@7","@8","extends_interfaces",
"interface_body","interface_member_declarations","interface_member_declaration",
"constant_declaration","abstract_method_declaration","array_initializer","variable_initializers",
@@ -810,42 +807,41 @@ static const short yyr1[] = { 0,
151, 151, 151, 152, 152, 152, 152, 153, 153, 153,
154, 154, 154, 155, 155, 155, 156, 156, 157, 159,
158, 160, 160, 161, 161, 162, 162, 162, 162, 163,
- 163, 164, 164, 164, 164, 165, 165, 167, 166, 168,
- 166, 169, 166, 170, 166, 166, 166, 171, 171, 171,
- 171, 172, 172, 173, 173, 174, 174, 174, 174, 175,
- 176, 176, 177, 177, 177, 178, 178, 178, 179, 179,
- 180, 181, 182, 182, 183, 183, 183, 184, 185, 185,
- 186, 186, 186, 186, 186, 186, 187, 187, 187, 187,
- 187, 188, 188, 188, 188, 188, 188, 188, 188, 188,
- 188, 188, 189, 190, 191, 191, 192, 193, 193, 193,
- 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
- 194, 194, 194, 194, 194, 194, 194, 195, 195, 195,
- 195, 196, 197, 199, 198, 200, 200, 200, 200, 201,
- 201, 201, 201, 202, 202, 203, 204, 204, 205, 205,
- 205, 205, 205, 206, 207, 207, 207, 207, 208, 209,
- 210, 211, 211, 211, 211, 211, 212, 212, 213, 213,
- 213, 214, 215, 215, 215, 215, 216, 216, 217, 217,
- 217, 218, 218, 218, 218, 219, 219, 219, 219, 220,
- 220, 220, 220, 221, 221, 221, 222, 222, 222, 222,
- 222, 223, 224, 224, 224, 224, 225, 225, 226, 227,
- 227, 227, 227, 228, 228, 229, 229, 230, 230, 230,
+ 163, 163, 163, 164, 164, 166, 165, 167, 165, 168,
+ 165, 169, 165, 165, 165, 170, 170, 170, 170, 171,
+ 171, 172, 172, 173, 173, 173, 173, 174, 175, 175,
+ 176, 176, 176, 177, 177, 177, 178, 178, 179, 180,
+ 181, 181, 182, 182, 182, 183, 184, 184, 185, 185,
+ 185, 185, 185, 185, 186, 186, 186, 186, 186, 187,
+ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+ 188, 189, 190, 190, 191, 192, 192, 192, 192, 192,
+ 192, 192, 192, 192, 192, 192, 192, 192, 193, 193,
+ 193, 193, 193, 193, 193, 194, 194, 194, 194, 195,
+ 196, 198, 197, 199, 199, 199, 199, 200, 200, 200,
+ 200, 201, 201, 202, 203, 203, 204, 204, 204, 204,
+ 204, 205, 206, 206, 206, 206, 207, 208, 209, 210,
+ 210, 210, 210, 210, 211, 211, 212, 212, 212, 213,
+ 214, 214, 214, 214, 215, 215, 216, 216, 216, 217,
+ 217, 217, 217, 218, 218, 218, 218, 219, 219, 219,
+ 219, 220, 220, 220, 221, 221, 221, 221, 221, 222,
+ 223, 223, 223, 223, 224, 224, 225, 226, 226, 226,
+ 226, 227, 227, 228, 228, 229, 229, 229, 229, 229,
+ 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
- 230, 230, 231, 231, 231, 231, 231, 231, 231, 231,
- 231, 231, 231, 231, 231, 231, 232, 232, 233, 233,
- 233, 234, 234, 234, 234, 234, 234, 234, 234, 235,
- 235, 236, 236, 236, 237, 237, 237, 238, 238, 238,
- 239, 239, 239, 239, 239, 239, 239, 239, 240, 240,
- 240, 240, 240, 240, 241, 241, 241, 241, 242, 243,
- 244, 244, 244, 244, 244, 244, 244, 245, 245, 246,
- 246, 247, 247, 247, 247, 247, 247, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 249, 249, 249, 249,
- 249, 249, 249, 250, 250, 250, 250, 250, 251, 251,
- 251, 251, 251, 251, 251, 252, 252, 252, 252, 252,
- 252, 252, 252, 252, 252, 252, 253, 253, 253, 253,
- 253, 254, 254, 254, 255, 255, 255, 256, 256, 256,
- 257, 257, 257, 258, 258, 258, 259, 259, 259, 259,
- 259, 260, 260, 261, 261, 262, 262, 262, 263, 263,
- 264, 265
+ 230, 230, 230, 230, 231, 231, 232, 232, 232, 233,
+ 233, 233, 233, 233, 233, 233, 233, 234, 234, 235,
+ 235, 235, 236, 236, 236, 237, 237, 237, 238, 238,
+ 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
+ 239, 239, 240, 240, 240, 240, 241, 242, 243, 243,
+ 243, 243, 243, 243, 243, 244, 244, 245, 245, 246,
+ 246, 246, 246, 246, 246, 247, 247, 247, 247, 247,
+ 247, 247, 247, 247, 248, 248, 248, 248, 248, 248,
+ 248, 249, 249, 249, 249, 249, 250, 250, 250, 250,
+ 250, 250, 250, 251, 251, 251, 251, 251, 251, 251,
+ 251, 251, 251, 251, 252, 252, 252, 252, 252, 253,
+ 253, 253, 254, 254, 254, 255, 255, 255, 256, 256,
+ 256, 257, 257, 257, 258, 258, 258, 258, 258, 259,
+ 259, 260, 260, 261, 261, 261, 262, 262, 263, 264
};
static const short yyr2[] = { 0,
@@ -863,43 +859,42 @@ static const short yyr2[] = { 0,
2, 3, 2, 3, 2, 3, 4, 3, 3, 3,
1, 3, 3, 2, 3, 2, 3, 0, 2, 2,
1, 3, 3, 1, 2, 1, 2, 3, 1, 0,
- 3, 2, 3, 3, 4, 2, 3, 3, 4, 1,
- 2, 4, 5, 7, 6, 1, 1, 0, 4, 0,
- 5, 0, 5, 0, 6, 3, 4, 2, 3, 2,
- 3, 2, 3, 1, 2, 1, 1, 1, 1, 1,
- 2, 2, 2, 3, 4, 1, 3, 3, 2, 3,
- 1, 1, 1, 2, 1, 1, 1, 2, 2, 3,
+ 3, 2, 3, 3, 4, 2, 3, 3, 4, 4,
+ 5, 7, 6, 1, 1, 0, 4, 0, 5, 0,
+ 5, 0, 6, 3, 4, 2, 3, 2, 3, 2,
+ 3, 1, 2, 1, 1, 1, 1, 1, 2, 2,
+ 2, 3, 4, 1, 3, 3, 2, 3, 1, 1,
+ 1, 2, 1, 1, 1, 2, 2, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 4, 4, 5, 4, 5, 6, 7, 6,
- 1, 1, 1, 1, 1, 1, 1, 5, 2, 3,
- 4, 7, 7, 0, 3, 4, 2, 3, 5, 2,
- 3, 3, 4, 1, 2, 2, 1, 2, 3, 2,
- 2, 3, 2, 4, 2, 2, 3, 4, 2, 1,
- 7, 7, 6, 3, 5, 4, 7, 6, 2, 2,
- 3, 2, 0, 1, 1, 2, 0, 1, 1, 3,
+ 1, 2, 2, 2, 2, 2, 2, 2, 2, 3,
+ 4, 4, 5, 4, 5, 6, 7, 6, 1, 1,
+ 1, 1, 1, 1, 1, 5, 2, 3, 4, 7,
+ 7, 0, 3, 4, 2, 3, 5, 2, 3, 3,
+ 4, 1, 2, 2, 1, 2, 3, 2, 2, 3,
+ 2, 4, 2, 2, 3, 4, 2, 1, 7, 7,
+ 6, 3, 5, 4, 7, 6, 2, 2, 3, 2,
+ 0, 1, 1, 2, 0, 1, 1, 3, 3, 2,
3, 2, 3, 2, 3, 2, 3, 2, 3, 2,
- 3, 2, 3, 3, 2, 3, 5, 5, 2, 4,
- 3, 1, 3, 3, 4, 2, 1, 2, 2, 4,
- 2, 3, 4, 2, 2, 1, 1, 1, 1, 3,
- 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
- 3, 3, 5, 4, 6, 5, 4, 5, 5, 6,
- 3, 3, 4, 5, 2, 3, 3, 3, 1, 3,
- 3, 3, 3, 4, 4, 4, 4, 3, 3, 1,
- 2, 3, 3, 2, 2, 3, 3, 3, 3, 2,
- 3, 4, 5, 6, 5, 6, 4, 4, 4, 4,
- 3, 4, 3, 4, 1, 1, 1, 1, 2, 2,
- 1, 1, 2, 2, 1, 2, 2, 2, 2, 2,
- 2, 1, 2, 2, 1, 2, 2, 5, 4, 4,
- 5, 4, 2, 5, 4, 5, 1, 3, 3, 3,
- 3, 3, 3, 1, 3, 3, 3, 3, 1, 3,
- 3, 3, 3, 3, 3, 1, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 1, 3, 3, 1, 3, 3,
- 1, 3, 3, 1, 3, 3, 1, 5, 4, 3,
- 5, 1, 1, 3, 3, 1, 1, 1, 1, 1,
- 1, 1
+ 3, 3, 2, 3, 5, 5, 2, 4, 3, 1,
+ 3, 3, 4, 2, 1, 2, 2, 4, 2, 3,
+ 4, 2, 2, 1, 1, 1, 1, 3, 1, 1,
+ 1, 1, 3, 3, 3, 3, 3, 3, 3, 3,
+ 5, 4, 6, 5, 4, 5, 5, 6, 3, 3,
+ 4, 5, 2, 3, 3, 3, 1, 3, 3, 3,
+ 3, 4, 4, 4, 4, 3, 3, 1, 2, 3,
+ 3, 2, 2, 3, 3, 3, 3, 2, 3, 4,
+ 5, 6, 5, 6, 4, 4, 4, 4, 3, 4,
+ 3, 4, 1, 1, 1, 1, 2, 2, 1, 1,
+ 2, 2, 1, 2, 2, 2, 2, 2, 2, 1,
+ 2, 2, 1, 2, 2, 5, 4, 4, 5, 4,
+ 2, 5, 4, 5, 1, 3, 3, 3, 3, 3,
+ 3, 1, 3, 3, 3, 3, 1, 3, 3, 3,
+ 3, 3, 3, 1, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 1, 3, 3, 3, 3, 1,
+ 3, 3, 1, 3, 3, 1, 3, 3, 1, 3,
+ 3, 1, 3, 3, 1, 5, 4, 3, 5, 1,
+ 1, 3, 3, 1, 1, 1, 1, 1, 1, 1
};
static const short yydefact[] = { 0,
@@ -907,1313 +902,1334 @@ static const short yydefact[] = { 0,
0, 36, 43, 44, 38, 0, 51, 52, 46, 27,
0, 23, 24, 25, 0, 62, 0, 41, 0, 0,
37, 39, 0, 0, 56, 0, 0, 47, 45, 0,
- 166, 0, 0, 162, 63, 0, 69, 42, 40, 0,
- 0, 0, 61, 0, 49, 0, 26, 170, 17, 168,
- 15, 0, 159, 0, 0, 68, 16, 0, 0, 59,
- 167, 0, 164, 64, 69, 50, 48, 12, 0, 10,
- 11, 172, 0, 8, 9, 13, 14, 15, 0, 178,
- 180, 0, 179, 0, 174, 176, 177, 171, 169, 163,
- 67, 71, 72, 70, 0, 161, 0, 57, 113, 0,
+ 164, 0, 0, 160, 63, 0, 69, 42, 40, 0,
+ 0, 0, 61, 0, 49, 0, 26, 168, 17, 166,
+ 15, 0, 157, 0, 0, 68, 16, 0, 0, 59,
+ 165, 0, 162, 64, 69, 50, 48, 12, 0, 10,
+ 11, 170, 0, 8, 9, 13, 14, 15, 0, 176,
+ 178, 0, 177, 0, 172, 174, 175, 169, 167, 161,
+ 67, 71, 72, 70, 0, 159, 0, 57, 113, 0,
128, 111, 0, 0, 90, 93, 128, 0, 0, 0,
- 115, 0, 0, 182, 181, 173, 175, 0, 0, 60,
- 165, 0, 0, 0, 0, 108, 99, 88, 0, 0,
+ 115, 0, 0, 180, 179, 171, 173, 0, 0, 60,
+ 163, 0, 0, 0, 0, 108, 99, 88, 0, 0,
0, 0, 107, 21, 18, 22, 20, 19, 114, 128,
- 112, 0, 128, 74, 73, 55, 191, 75, 23, 0,
+ 112, 0, 128, 74, 73, 55, 189, 75, 23, 0,
86, 0, 77, 79, 83, 85, 0, 80, 0, 81,
140, 128, 87, 82, 0, 58, 119, 116, 0, 0,
0, 121, 130, 131, 129, 120, 118, 92, 0, 91,
- 95, 0, 0, 0, 0, 0, 0, 0, 339, 0,
- 0, 0, 0, 6, 5, 2, 3, 4, 7, 338,
- 0, 406, 0, 103, 405, 336, 341, 0, 337, 342,
- 343, 344, 422, 407, 408, 437, 411, 412, 415, 425,
- 444, 449, 456, 467, 472, 475, 478, 481, 484, 487,
- 492, 501, 493, 0, 102, 100, 98, 101, 110, 89,
- 109, 189, 0, 128, 76, 78, 84, 106, 0, 137,
- 0, 142, 0, 55, 0, 0, 280, 0, 0, 0,
- 0, 0, 0, 0, 0, 339, 0, 223, 0, 8,
- 406, 0, 0, 197, 0, 212, 0, 193, 195, 0,
- 196, 201, 213, 0, 202, 214, 0, 203, 204, 215,
- 254, 0, 205, 0, 216, 206, 293, 0, 217, 218,
- 219, 221, 220, 0, 222, 247, 246, 0, 244, 245,
- 242, 243, 241, 126, 124, 0, 117, 0, 0, 416,
- 406, 342, 344, 413, 417, 414, 421, 420, 419, 418,
- 0, 390, 0, 0, 0, 16, 0, 426, 423, 427,
- 424, 433, 0, 406, 0, 183, 186, 0, 0, 0,
- 0, 0, 96, 0, 0, 365, 0, 410, 409, 0,
+ 95, 0, 0, 0, 0, 0, 0, 0, 337, 0,
+ 0, 0, 0, 6, 5, 2, 3, 4, 7, 336,
+ 0, 404, 0, 103, 403, 334, 339, 0, 335, 340,
+ 341, 342, 420, 405, 406, 435, 409, 410, 413, 423,
+ 442, 447, 454, 465, 470, 473, 476, 479, 482, 485,
+ 490, 499, 491, 0, 102, 100, 98, 101, 110, 89,
+ 109, 187, 0, 128, 76, 78, 84, 106, 0, 137,
+ 0, 142, 0, 55, 0, 0, 278, 0, 0, 0,
+ 0, 0, 0, 0, 0, 337, 0, 221, 0, 8,
+ 404, 0, 0, 195, 0, 210, 0, 191, 193, 0,
+ 194, 199, 211, 0, 200, 212, 0, 201, 202, 213,
+ 252, 0, 203, 0, 214, 204, 291, 0, 215, 216,
+ 217, 219, 218, 0, 220, 245, 244, 0, 242, 243,
+ 240, 241, 239, 126, 124, 0, 117, 0, 0, 414,
+ 404, 340, 342, 411, 415, 412, 419, 418, 417, 416,
+ 0, 388, 0, 0, 0, 16, 0, 424, 421, 425,
+ 422, 431, 0, 404, 0, 181, 184, 0, 0, 0,
+ 0, 0, 96, 0, 0, 363, 0, 408, 407, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 499, 500, 0, 144, 0, 143, 136, 105, 134, 138,
- 191, 141, 0, 230, 231, 229, 249, 0, 315, 0,
- 304, 302, 0, 312, 310, 0, 276, 0, 257, 0,
- 326, 0, 290, 0, 308, 306, 0, 0, 199, 0,
- 0, 226, 224, 0, 0, 192, 190, 194, 198, 322,
- 406, 225, 228, 0, 275, 0, 406, 0, 295, 299,
- 292, 0, 0, 319, 0, 127, 125, 123, 122, 133,
- 132, 352, 347, 0, 389, 379, 378, 361, 0, 372,
- 380, 0, 373, 0, 362, 0, 0, 0, 0, 0,
- 0, 349, 340, 184, 0, 351, 346, 391, 0, 369,
- 401, 0, 350, 345, 367, 348, 368, 388, 403, 0,
- 366, 0, 441, 438, 442, 439, 443, 440, 447, 445,
- 448, 446, 453, 450, 454, 451, 455, 452, 463, 458,
- 465, 460, 462, 457, 464, 459, 466, 0, 461, 470,
- 468, 471, 469, 474, 473, 477, 476, 480, 479, 483,
- 482, 486, 485, 490, 0, 0, 495, 494, 145, 135,
- 406, 146, 0, 0, 150, 0, 250, 0, 316, 314,
- 305, 303, 313, 311, 277, 0, 258, 0, 0, 0,
- 323, 327, 0, 324, 291, 309, 307, 340, 0, 200,
- 232, 0, 0, 0, 255, 0, 296, 0, 284, 0,
- 0, 321, 0, 397, 398, 0, 384, 385, 0, 381,
- 374, 0, 377, 375, 376, 363, 354, 0, 435, 429,
- 432, 0, 0, 430, 188, 185, 187, 392, 0, 402,
- 399, 0, 404, 400, 357, 0, 489, 0, 0, 147,
- 0, 0, 151, 148, 251, 0, 278, 274, 0, 331,
- 0, 335, 334, 328, 325, 329, 236, 0, 233, 234,
- 0, 0, 0, 260, 0, 264, 0, 267, 0, 301,
- 300, 286, 0, 298, 0, 320, 0, 395, 0, 383,
- 382, 387, 386, 356, 364, 353, 434, 428, 436, 431,
- 371, 370, 393, 0, 358, 359, 491, 488, 0, 149,
- 0, 0, 0, 248, 0, 201, 0, 208, 209, 0,
- 210, 211, 0, 259, 332, 0, 237, 0, 0, 235,
- 273, 270, 271, 502, 0, 262, 265, 0, 261, 0,
- 268, 0, 0, 285, 0, 318, 317, 396, 355, 394,
- 360, 0, 152, 0, 0, 0, 227, 279, 0, 333,
- 330, 240, 238, 0, 272, 269, 263, 0, 283, 0,
- 0, 0, 153, 0, 252, 0, 0, 239, 281, 282,
- 155, 0, 0, 0, 0, 154, 0, 0, 0, 0,
- 288, 0, 253, 287, 0, 0, 0
+ 497, 498, 0, 144, 0, 143, 136, 105, 134, 138,
+ 189, 141, 0, 228, 229, 227, 247, 0, 313, 0,
+ 302, 300, 0, 310, 308, 0, 274, 0, 255, 0,
+ 324, 0, 288, 0, 306, 304, 0, 0, 197, 0,
+ 0, 224, 222, 0, 0, 190, 188, 192, 196, 320,
+ 404, 223, 226, 0, 273, 0, 404, 0, 293, 297,
+ 290, 0, 0, 317, 0, 127, 125, 123, 122, 133,
+ 132, 350, 345, 0, 387, 377, 376, 359, 0, 370,
+ 378, 0, 371, 0, 360, 0, 0, 0, 0, 0,
+ 0, 347, 338, 182, 0, 349, 344, 389, 0, 367,
+ 399, 0, 348, 343, 365, 346, 366, 386, 401, 0,
+ 364, 0, 439, 436, 440, 437, 441, 438, 445, 443,
+ 446, 444, 451, 448, 452, 449, 453, 450, 461, 456,
+ 463, 458, 460, 455, 462, 457, 464, 0, 459, 468,
+ 466, 469, 467, 472, 471, 475, 474, 478, 477, 481,
+ 480, 484, 483, 488, 0, 0, 493, 492, 145, 135,
+ 404, 0, 0, 146, 0, 248, 0, 314, 312, 303,
+ 301, 311, 309, 275, 0, 256, 0, 0, 0, 321,
+ 325, 0, 322, 289, 307, 305, 338, 0, 198, 230,
+ 0, 0, 0, 253, 0, 294, 0, 282, 0, 0,
+ 319, 0, 395, 396, 0, 382, 383, 0, 379, 372,
+ 0, 375, 373, 374, 361, 352, 0, 433, 427, 430,
+ 0, 0, 428, 186, 183, 185, 390, 0, 400, 397,
+ 0, 402, 398, 355, 0, 487, 0, 0, 147, 0,
+ 0, 148, 249, 0, 276, 272, 0, 329, 0, 333,
+ 332, 326, 323, 327, 234, 0, 231, 232, 0, 0,
+ 0, 258, 0, 262, 0, 265, 0, 299, 298, 284,
+ 0, 296, 0, 318, 0, 393, 0, 381, 380, 385,
+ 384, 354, 362, 351, 432, 426, 434, 429, 369, 368,
+ 391, 0, 356, 357, 489, 486, 0, 149, 0, 0,
+ 0, 246, 0, 199, 0, 206, 207, 0, 208, 209,
+ 0, 257, 330, 0, 235, 0, 0, 233, 271, 268,
+ 269, 500, 0, 260, 263, 0, 259, 0, 266, 0,
+ 0, 283, 0, 316, 315, 394, 353, 392, 358, 0,
+ 150, 0, 0, 0, 225, 277, 0, 331, 328, 238,
+ 236, 0, 270, 267, 261, 0, 281, 0, 0, 0,
+ 151, 0, 250, 0, 0, 237, 279, 280, 153, 0,
+ 0, 0, 0, 152, 0, 0, 0, 0, 286, 0,
+ 251, 285, 0, 0, 0
};
-static const short yydefgoto[] = { 775,
+static const short yydefgoto[] = { 773,
210, 279, 211, 85, 86, 68, 60, 87, 212, 22,
23, 24, 8, 9, 10, 11, 12, 13, 14, 15,
283, 284, 132, 105, 47, 70, 104, 130, 162, 163,
164, 91, 114, 115, 116, 213, 166, 259, 92, 111,
181, 182, 136, 185, 398, 168, 169, 170, 261, 171,
- 172, 402, 552, 553, 285, 18, 43, 72, 65, 107,
- 44, 63, 94, 95, 96, 97, 214, 358, 286, 175,
- 555, 720, 288, 289, 290, 291, 695, 292, 293, 294,
- 295, 698, 296, 297, 298, 299, 699, 300, 444, 301,
- 585, 655, 656, 657, 658, 302, 303, 701, 304, 305,
- 306, 702, 307, 308, 451, 663, 664, 309, 310, 311,
- 312, 313, 314, 315, 571, 572, 573, 574, 215, 216,
- 217, 218, 489, 219, 470, 471, 472, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 393, 490, 715
+ 172, 402, 552, 285, 18, 43, 72, 65, 107, 44,
+ 63, 94, 95, 96, 97, 214, 358, 286, 175, 437,
+ 718, 288, 289, 290, 291, 693, 292, 293, 294, 295,
+ 696, 296, 297, 298, 299, 697, 300, 444, 301, 584,
+ 653, 654, 655, 656, 302, 303, 699, 304, 305, 306,
+ 700, 307, 308, 451, 661, 662, 309, 310, 311, 312,
+ 313, 314, 315, 570, 571, 572, 573, 215, 216, 217,
+ 218, 489, 219, 470, 471, 472, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 393, 490, 713
};
-static const short yypact[] = { 507,
--32768,-32768, 15, -30, 18, 244,-32768,-32768, 414, 443,
- 556,-32768,-32768,-32768,-32768, 714,-32768,-32768,-32768,-32768,
- 23,-32768,-32768,-32768, 359,-32768, 340,-32768, 49, 601,
--32768,-32768, 585, 603,-32768, -30, 417,-32768,-32768, 92,
--32768, 489, -24, 107,-32768, 529, 295,-32768,-32768, -30,
- 710, 452,-32768, 344,-32768, 40,-32768,-32768,-32768,-32768,
- 192, 1047,-32768, 530, -24,-32768,-32768, 388, 534,-32768,
--32768, -24, 107,-32768, 295,-32768,-32768,-32768, 540,-32768,
--32768,-32768, 548, 258,-32768,-32768, 307, 442, 736,-32768,
--32768, 77,-32768, 1638,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 312, 406,-32768, -24,-32768,-32768, 379,
- -18,-32768, 426, 331,-32768, 693, -18, 120, 210, 429,
--32768, 564, 587,-32768,-32768,-32768,-32768, 593, 951,-32768,
--32768, 406, 607, 617, 214,-32768,-32768,-32768, 618, 1077,
- 219, 531,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -18,
--32768, 361, -18,-32768,-32768, 460, 471,-32768, 494, 736,
--32768, 1204,-32768,-32768, 500,-32768, 180,-32768, 535,-32768,
--32768, 591,-32768,-32768, 1759,-32768,-32768,-32768, 620, 728,
- 377,-32768,-32768,-32768, 613,-32768,-32768,-32768, 157,-32768,
--32768, 2663, 2728, 2779, 2844, 655, 32, 707,-32768, 2895,
- 2960, 3011, 5025,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 673, 881, 56,-32768, 678, 746,-32768, 640,-32768, 671,
--32768, 715, 866,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 899, 921, 1006, 838, 920, 654, 814, 820, 847, 263,
--32768,-32768,-32768, 850,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 963, 591,-32768,-32768,-32768,-32768, 484, 769,
- 775,-32768, -1, 306, 353, 3076,-32768, 232, 1357, 35,
- 392, 419, 228, 424, 234, 779, 5324,-32768, -30, 538,
- 974, 265, 872,-32768, 784,-32768, 1691,-32768,-32768, 789,
--32768,-32768,-32768, 1827,-32768,-32768, 797,-32768,-32768,-32768,
--32768, 1827,-32768, 1827,-32768,-32768, 5375, 802,-32768,-32768,
--32768,-32768,-32768, 427,-32768, 737, 806, 866, 902, 916,
--32768,-32768,-32768,-32768, 891, 642,-32768, 592, 660,-32768,
- 189,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 409,-32768, 666, 964, 793, 793, 428,-32768,-32768,-32768,
--32768,-32768, 777, 1121, 66,-32768,-32768, 622, 432, 5092,
- 3127, 729,-32768, -28, 3192,-32768, 435,-32768,-32768, 3243,
- 3308, 3359, 3424, 3475, 3540, 3591, 3656, 3707, 3772, 3823,
- 3888, 864, 3939, 4004, 4055, 4120, 4171, 4236, 4287, 2032,
--32768,-32768, 4352,-32768, 605,-32768,-32768,-32768, 810,-32768,
--32768,-32768, 1691,-32768,-32768,-32768,-32768, 4403,-32768, 95,
--32768,-32768, 126,-32768,-32768, 174,-32768, 4468,-32768, 4519,
--32768, 785,-32768, 4933,-32768,-32768, 182, 269, 815, 2083,
- 604,-32768,-32768, -30, 2148,-32768,-32768,-32768,-32768,-32768,
- 1158,-32768,-32768, 823,-32768, 861, 1018, 728,-32768,-32768,
--32768, 86, 2199,-32768, 4584,-32768, 891,-32768,-32768,-32768,
--32768,-32768,-32768, 565, 836,-32768,-32768,-32768, 2264, 793,
--32768, 590, 793, 590,-32768, 2315, 4635, 223, -43, 2380,
- 191,-32768, 894,-32768, 1967,-32768,-32768,-32768, 649,-32768,
--32768, 237,-32768,-32768,-32768,-32768,-32768, 839,-32768, 239,
--32768, 5143,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 899,
--32768, 899,-32768, 921,-32768, 921,-32768, 921,-32768, 1006,
--32768, 1006,-32768, 1006,-32768, 1006,-32768, 258,-32768,-32768,
- 838,-32768, 838,-32768, 920,-32768, 654,-32768, 814,-32768,
- 820,-32768, 847,-32768, 933, 857,-32768,-32768,-32768,-32768,
- 1254,-32768, 1691, 859, 856, 1691,-32768, 314,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 348,-32768, 870, 461, 229,
- 785,-32768, 535,-32768,-32768,-32768,-32768,-32768, 467, 815,
--32768, 967, 14, 444,-32768, 878,-32768, 5067,-32768, 4958,
- 876, 887, 892,-32768,-32768, 5208,-32768,-32768, 241,-32768,
- 895, 299,-32768, 895,-32768,-32768, 406, 17,-32768,-32768,
--32768, 4700, 487,-32768,-32768,-32768,-32768,-32768, 4751,-32768,
--32768, 5259,-32768,-32768, 406, 704,-32768, 4816, 662,-32768,
- 1691, 2431,-32768,-32768,-32768, 1893,-32768,-32768, 343,-32768,
- 835,-32768,-32768,-32768,-32768,-32768,-32768, 2496,-32768,-32768,
- 999, 91, 4867,-32768, 674,-32768, 1467,-32768, 5324,-32768,
--32768,-32768, 928, 923, 5000,-32768, 410,-32768, 723,-32768,
--32768,-32768,-32768,-32768,-32768, 406,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 731,-32768, 406,-32768,-32768, 477,-32768,
- 243, 108, 485,-32768, 978, 979, 1893,-32768,-32768, 1893,
--32768,-32768, 942,-32768, 948, 950,-32768, 1053, 128,-32768,
--32768,-32768,-32768,-32768, 328,-32768,-32768, 1540,-32768, 1608,
--32768, 961, 1827,-32768, 970,-32768,-32768,-32768,-32768,-32768,
--32768, 2547,-32768, 262, 4403, 1827,-32768,-32768, 2612,-32768,
--32768,-32768,-32768, 1071,-32768,-32768,-32768, 980,-32768, 1827,
- 296, 202,-32768, 358,-32768, 4958, 983,-32768,-32768,-32768,
--32768, 302, 1893, 990, 5000,-32768, 1021, 1893, 992, 1893,
--32768, 1893,-32768,-32768, 1087, 1089,-32768
+static const short yypact[] = { 538,
+-32768,-32768, 61, -61, 310, 456,-32768,-32768, 245, 513,
+ 578,-32768,-32768,-32768,-32768, 567,-32768,-32768,-32768,-32768,
+ 19,-32768,-32768,-32768, 160,-32768, 296,-32768, 33, 603,
+-32768,-32768, 680, 629,-32768, -61, 486,-32768,-32768, 503,
+-32768, 504, -50, -27,-32768, 510, 130,-32768,-32768, -61,
+ 693, 338,-32768, 356,-32768, 37,-32768,-32768,-32768,-32768,
+ -2, 830,-32768, 520, -50,-32768,-32768, 342, 521,-32768,
+-32768, -50, -27,-32768, 130,-32768,-32768,-32768, 530,-32768,
+-32768,-32768, 539, 156,-32768,-32768, 197, -55, 787,-32768,
+-32768, 53,-32768, 988,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 236, 132,-32768, -50,-32768,-32768, 371,
+ 379,-32768, 122, 550,-32768, 716, 379, 43, 77, 260,
+-32768, 562, 565,-32768,-32768,-32768,-32768, 568, 869,-32768,
+-32768, 132, 421, 574, 95,-32768,-32768,-32768, 580, 1258,
+ 113, 478,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 379,
+-32768, 759, 379,-32768,-32768, 523, 519,-32768, 548, 787,
+-32768, 1021,-32768,-32768, 576,-32768, 203,-32768, 602,-32768,
+-32768, 625,-32768,-32768, 1818,-32768,-32768,-32768, 582, 948,
+ -29,-32768,-32768,-32768, 588,-32768,-32768,-32768, 350,-32768,
+-32768, 2787, 2838, 2903, 2954, 609, 28, 700,-32768, 3019,
+ 3070, 3135, 5134,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 632, 949, 66,-32768, 642, 656,-32768, 583,-32768, 437,
+-32768, 771, 831,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 887, 895, 950, 1007, 889, 745, 762, 758, 777, 268,
+-32768,-32768,-32768, 819,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 896, 625,-32768,-32768,-32768,-32768, 671, 712,
+ 704,-32768, 502, 114, 306, 3186,-32768, 263, 2091, 47,
+ 391, 416, 232, 423, 307, 723, 5433,-32768, -61, 733,
+ 1018, 319, 918,-32768, 728,-32768, 1750,-32768,-32768, 725,
+-32768,-32768,-32768, 1886,-32768,-32768, 788,-32768,-32768,-32768,
+-32768, 1886,-32768, 1886,-32768,-32768, 5484, 791,-32768,-32768,
+-32768,-32768,-32768, 426,-32768, 706, 782, 831, 892, 897,
+-32768,-32768,-32768,-32768, 850, 590,-32768, 711, 593,-32768,
+ 545,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 31,-32768, 622, 908, 739, 739, 430,-32768,-32768,-32768,
+-32768,-32768, 683, 998, 86,-32768,-32768, 694, 468, 5201,
+ 3251, 30,-32768, 474, 3302,-32768, 458,-32768,-32768, 3367,
+ 3418, 3483, 3534, 3599, 3650, 3715, 3766, 3831, 3882, 3947,
+ 3998, 719, 4063, 4114, 4179, 4230, 4295, 4346, 4411, 2142,
+-32768,-32768, 4462,-32768, 188,-32768,-32768,-32768, 797,-32768,
+-32768,-32768, 1750,-32768,-32768,-32768,-32768, 4527,-32768, 59,
+-32768,-32768, 74,-32768,-32768, 127,-32768, 4578,-32768, 4643,
+-32768, 796,-32768, 5042,-32768,-32768, 217, 295, 744, 2207,
+ 775,-32768,-32768, -61, 2258,-32768,-32768,-32768,-32768,-32768,
+ 1087,-32768,-32768, 754,-32768, 804, 1038, 948,-32768,-32768,
+-32768, 69, 2323,-32768, 4694,-32768, 850,-32768,-32768,-32768,
+-32768,-32768,-32768, 494, 808,-32768,-32768,-32768, 2374, 739,
+-32768, 490, 739, 490,-32768, 2439, 4759, 224, 359, 2490,
+ 450,-32768, 1509,-32768, 2026,-32768,-32768,-32768, 617,-32768,
+-32768, 234,-32768,-32768,-32768,-32768,-32768, 810,-32768, 248,
+-32768, 5252,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 887,
+-32768, 887,-32768, 895,-32768, 895,-32768, 895,-32768, 950,
+-32768, 950,-32768, 950,-32768, 950,-32768, 156,-32768,-32768,
+ 1007,-32768, 1007,-32768, 889,-32768, 745,-32768, 762,-32768,
+ 758,-32768, 777,-32768, 880, 820,-32768,-32768,-32768,-32768,
+ 1076, 1750, 827,-32768, 1750,-32768, 352,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 438,-32768, 829, 461, 309, 796,
+-32768, 602,-32768,-32768,-32768,-32768,-32768, 469, 744,-32768,
+ 928, 94, 185,-32768, 838,-32768, 5176,-32768, 5067, 834,
+ 851, 856,-32768,-32768, 5317,-32768,-32768, 262,-32768, 859,
+ 265,-32768, 859,-32768,-32768, 132, 102,-32768,-32768,-32768,
+ 4810, 1388,-32768,-32768,-32768,-32768,-32768, 4875,-32768,-32768,
+ 5368,-32768,-32768, 132, 627,-32768, 4926, 799,-32768, 1750,
+ 2555,-32768,-32768, 1952,-32768,-32768, 396,-32768, 737,-32768,
+-32768,-32768,-32768,-32768,-32768, 2606,-32768,-32768, 952, 355,
+ 4991,-32768, 190,-32768, 1484,-32768, 5433,-32768,-32768,-32768,
+ 867, 863, 5109,-32768, 402,-32768, 648,-32768,-32768,-32768,
+-32768,-32768,-32768, 132,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 726,-32768, 132,-32768,-32768, 471,-32768, 239, 116,
+ 477,-32768, 910, 920, 1952,-32768,-32768, 1952,-32768,-32768,
+ 884,-32768, 893, 901,-32768, 995, 142,-32768,-32768,-32768,
+-32768,-32768, 424,-32768,-32768, 1614,-32768, 1682,-32768, 905,
+ 1886,-32768, 907,-32768,-32768,-32768,-32768,-32768,-32768, 2671,
+-32768, 242, 4527, 1886,-32768,-32768, 2722,-32768,-32768,-32768,
+-32768, 1008,-32768,-32768,-32768, 917,-32768, 1886, 289, 177,
+-32768, 439,-32768, 5067, 919,-32768,-32768,-32768,-32768, 291,
+ 1952, 925, 5109,-32768, 965, 1952, 942, 1952,-32768, 1952,
+-32768,-32768, 1039, 1045,-32768
};
static const short yypgoto[] = {-32768,
--32768, -57, -60, 711, -16, -123, 568,-32768, -3, 552,
--32768, 130,-32768, 1085, 791,-32768, 22,-32768,-32768, 778,
- 12, 154,-32768,-32768, 1044, 1030,-32768, -128,-32768, 945,
--32768, 382, -106, 973, -165, -193,-32768,-32768, 469, -58,
- 865, -327, -40,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 957,-32768, 142,-32768, 718, -10,-32768,-32768,-32768,-32768,
- 1072, 584,-32768, 1031,-32768,-32768, 372,-32768, -122, 867,
- 843, -166, -279,-32768, 819, -234, 197, -551,-32768, -529,
--32768,-32768,-32768, -301,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 476, 486, -619, -496,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, -436,-32768, -603, 832,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 569,-32768, 573,-32768,-32768,
- 119,-32768, -386,-32768, 799, 362, -326, 858, 163, 1120,
- 320, 437, 438, -112, 560, 636, -470,-32768, 632, 724,
- 651, 625, 761, 765, 760, 764, 776,-32768, 526, 771,
- 717,-32768,-32768, 29,-32768
+-32768, -25, -53, 666, -34, -121, 645,-32768, -3, 597,
+-32768, 134,-32768, 1040, 806,-32768, 449,-32768,-32768, 689,
+ 17, 610,-32768,-32768, 999, 981,-32768, -131,-32768, 904,
+-32768, -57, -117, 924, -163, -192,-32768,-32768, 305, -65,
+ 805, -321, -98,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 909,-32768,-32768, 664, -41,-32768,-32768,-32768,-32768, 1016,
+ 429,-32768, 983,-32768,-32768, 393,-32768, -106, 818, -401,
+ -165, -283,-32768, 774, -280, -36, -585,-32768, -492,-32768,
+-32768,-32768, -302,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 432, 434, -615, -447,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, -433,-32768, -630, 785,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 524,-32768, 532,-32768,-32768, -63,
+-32768, -316,-32768, 747, 103, -261, 1023, 223, 1044, 254,
+ 380, 442, -111, 531, 620, -468,-32768, 600, 636, 681,
+ 596, 715, 722, 734, 724, 736,-32768, 495, 720, 750,
+-32768,-32768, 65,-32768
};
-#define YYLAST 5484
+#define YYLAST 5593
static const short yytable[] = { 21,
- 459, 84, 29, 176, 83, 450, 174, 438, 287, 357,
- 184, 16, 614, 325, 650, 19, 152, 675, 26, 474,
- 16, 16, 16, 38, 117, 59, 479, 481, 84, 67,
- 31, 123, 342, 84, 134, 342, 83, 721, 61, 174,
- 76, 16, 61, 497, 16, 16, 260, 59, 583, 48,
- 612, 93, 59, 602, 31, 20, 363, 20, 88, 442,
- 61, 725, 16, 150, 153, 61, 482, 445, 84, 446,
- 62, 83, 84, 89, 347, 179, 143, 124, 135, 334,
- 336, 338, 340, 93, 696, 88, 587, 349, 351, 608,
- 88, 711, 55, 404, 405, 559, 56, 406, 721, 84,
- 20, 84, 123, 20, 83, 89, 697, 651, 650, 249,
- 676, 59, 251, 619, 280, 626, 619, 67, 173, 84,
- 144, 39, 326, 40, 61, 88, 561, -157, 743, 88,
- 61, 262, 343, 25, 27, 343, 399, 345, 77, 700,
- 160, 353, 680, 601, 180, 696, 604, 49, 696, 50,
- 422, 173, 764, 17, -94, -94, 88, 137, 88, 483,
- 457, 769, 17, 17, 17, 52, 54, 697, 245, 57,
- 697, 281, 429, 160, 563, 125, 88, 20, 712, 57,
- 258, 346, 576, 17, -294, 588, 17, 17, 331, 331,
- 331, 331, 84, 560, 61, 179, 331, 331, 354, 703,
- 700, 734, 743, 700, 17, 461, 64, 619, 110, 669,
- 146, 696, 113, 396, 186, 90, 696, 145, 696, 246,
- 696, 744, 84, 611, 562, 434, 280, 619, 421, 642,
- 355, 245, 411, 697, 425, 684, 556, 620, 697, 623,
- 697, 670, 697, 649, 28, 692, 280, 90, -97, 88,
- -97, 110, 113, -97, -97, -97, -97, 504, 506, 508,
- 703, 709, 710, 703, 180, 432, 700, 84, 189, 482,
- 179, 700, 564, 700, -104, 700, 438, 389, -104, 88,
- 577, 360, 161, 281, 613, 361, 661, 602, 450, 362,
- 441, 617, 50, 316, 410, 762, 742, 416, 441, 672,
- 441, 619, 758, 447, 282, 428, -322, 147, 189, -25,
- -25, 187, 67, 706, 635, 161, 247, 20, 448, 20,
- 598, 528, 157, 157, 88, 61, 703, 580, 745, 20,
- 412, 703, 426, 703, 621, 703, 624, 317, 671, 180,
- 45, 733, 280, 704, 74, 752, 69, 367, 637, 390,
- -25, 438, 433, 407, 118, -25, -25, -25, 635, 41,
- 753, -25, 578, 450, 610, -25, 331, 331, 331, 331,
+ 176, 554, 29, 438, 450, 152, 459, 59, 84, 287,
+ 357, 67, 184, 442, 613, 325, 16, 117, 143, 38,
+ 93, 445, 174, 446, 20, 16, 16, 16, 342, 59,
+ 493, 462, 723, 48, 59, 84, 83, 76, 61, 719,
+ 84, 120, 61, 144, 62, 50, 16, 342, 694, 16,
+ 16, 249, 93, 124, 251, 174, 150, 153, 88, 558,
+ 61, 19, 260, 123, 327, 61, 363, 16, 83, 586,
+ 328, 165, 64, 262, 560, 84, 347, 146, 89, 84,
+ 334, 336, 338, 340, 474, 88, 482, 173, 349, 351,
+ 88, 479, 481, 59, 648, 186, 494, 463, 50, 67,
+ 719, 495, 673, 83, 165, 496, 84, 179, 84, 694,
+ 89, 316, 694, 246, -320, 20, 648, 39, 582, 40,
+ 173, 280, 137, 762, 61, 88, 84, 562, 343, 88,
+ 61, 49, 767, 50, 123, 77, 83, 25, 27, -155,
+ 145, 695, 741, 678, 345, 160, 20, 343, 353, 180,
+ 629, 125, 399, 632, 326, 396, 88, 559, 88, 607,
+ 41, 429, 457, 346, -94, -94, 422, -292, 587, 52,
+ 54, 281, 561, 57, 147, 694, 88, 741, 160, 483,
+ 694, 69, 694, 57, 694, 625, 698, 649, 331, 331,
+ 331, 331, 187, 618, 61, 674, 331, 331, 354, 84,
+ 701, 618, 695, 258, 245, 695, -320, 461, 600, 732,
+ 247, 603, 110, -97, 133, 618, 113, 575, -97, -97,
+ -97, -97, 42, 316, 610, 563, 129, 179, 688, 84,
+ 316, 650, 421, 280, 619, 742, 650, 555, 316, 647,
+ 316, 618, 708, 316, -30, 1, 651, 698, 622, 88,
+ 698, 651, 118, 280, -156, 110, 113, 434, 504, 506,
+ 508, 701, 668, 411, 701, 670, 355, 245, 695, 180,
+ 760, 438, 189, 695, 84, 695, 618, 695, 667, 88,
+ 652, 549, 389, 281, 659, 714, 450, 328, 2, 740,
+ 441, 756, 616, 119, 67, 482, 45, -104, 441, 3,
+ 441, -104, 179, 447, 682, 4, 407, 425, 282, 640,
+ 26, 5, 189, 698, 690, 576, 579, 704, 698, 432,
+ 698, 597, 698, 448, 88, 61, 157, 701, 528, 707,
+ 410, 620, 701, 416, 701, 128, 701, 731, 71, 316,
+ 751, 428, 101, 7, 180, 623, 438, -65, 20, 280,
+ 137, 367, 633, 692, 390, 709, 74, 148, 46, 669,
+ 450, 412, 671, -25, -25, 609, 331, 331, 331, 331,
331, 331, 331, 331, 331, 331, 331, 331, 88, 331,
- 331, 331, 331, 331, 331, 331, 631, 84, 101, 492,
- 434, -65, 417, 500, 761, -65, 673, 413, -322, 551,
- 766, 694, 46, 119, 427, 316, 46, 636, 189, 462,
- 726, 128, 316, -30, 1, 746, 282, 53, 546, 419,
- 316, 42, 316, 282, 423, 316, 137, 454, 475, 138,
- 139, 282, 486, 282, -65, 501, 558, -256, -65, -66,
- 438, 638, -31, 1, 88, 408, 566, 643, 568, 317,
- 646, 763, 71, -158, 450, 189, 317, 2, 492, 250,
- 139, 640, 442, 450, 317, 445, 317, 647, 3, 317,
- 327, 133, 465, 331, 4, 463, 328, 647, 674, 331,
- 5, 591, -66, 593, 418, 407, 2, 679, 749, 58,
- 652, 57, 280, 498, 318, 280, 685, 599, 487, 678,
- 129, 755, 20, 4, 157, 653, -28, 1, 492, 5,
- 165, 420, 7, 245, 42, 760, 424, -97, 133, 455,
- 476, 316, -97, -97, -97, -97, 148, 502, 694, 66,
- 98, 248, 282, 749, 102, 755, 78, 760, 120, 654,
- 109, 7, 50, 165, 727, 196, -160, 729, 112, 281,
- 2, 197, 281, 641, -139, -29, 1, 731, 198, 648,
- 57, 3, 199, 189, 149, 317, 252, 4, 80, 732,
- 280, 81, 20, 5, 20, 200, 201, 735, 157, 202,
- 84, 6, 397, 179, -32, 1, 253, 151, 204, 205,
- 206, 207, 458, 154, 208, 209, 280, 167, 257, 2,
- -34, 1, -33, 1, 493, 7, 318, 177, 331, 331,
- 3, 319, 320, 318, 20, 20, 4, 183, 188, 20,
- 324, 318, 5, 318, 331, 20, 318, 281, 2, 157,
- 167, 99, 441, 20, 118, 2, 103, 88, 359, 3,
- 366, 78, 456, 134, 2, 4, 2, 682, 100, 20,
- 2, 5, 180, 281, 7, 106, 78, 280, 594, 280,
- 460, 4, 493, 4, 385, 595, 464, 5, 579, 5,
- 494, 316, 20, 80, 316, 495, 81, 20, 20, 496,
- 159, 714, 282, 7, 203, 282, 602, 722, 80, 20,
- 131, 81, 20, 441, 630, 155, 441, 634, 549, 7,
- 178, 7, 20, 20, 328, 20, 316, 344, 316, -35,
- 1, 159, 329, 159, 281, 317, 281, 484, 317, 441,
- 652, 485, 318, 319, 320, 20, 689, 20, 494, 493,
- 319, 320, 441, 495, 321, 653, 121, 496, 319, 320,
- 319, 320, 618, 319, 320, 20, 441, 20, 619, 316,
- 317, 20, 317, 2, 316, 341, 78, 35, 57, 441,
- 282, -497, -497, 754, 441, 282, 441, 757, 441, 716,
- 4, 35, 690, 359, 36, 316, 5, 78, 364, 35,
- 37, -341, -341, 316, 140, 78, 282, 32, 80, 141,
- 142, 81, 20, 317, 122, 494, 36, 686, 317, 30,
- 495, 34, 37, 619, 496, -498, -498, 32, 7, 80,
- 322, 32, 81, 20, 20, 316, 728, 80, 316, 317,
- 81, 20, 619, 51, 730, 386, 282, 317, 32, 282,
- 619, 600, 387, -341, 600, 705, 316, -341, 316, 319,
- 320, 316, 365, 603, 569, 605, 321, 282, 570, 282,
- -343, -343, 282, 321, 316, 378, 379, 380, 381, 317,
- 388, 321, 317, 321, 527, 282, 321, 400, 316, 401,
- 477, -156, 318, 478, 316, 318, 435, 359, 2, 282,
- 317, 316, 317, 316, 78, 317, 316, 439, 316, 469,
- 316, 323, 282, 737, 382, 443, 738, 282, 317, 282,
- 453, 282, -343, 370, 371, 372, -343, 318, 550, 318,
- 368, 369, 317, 78, 139, 35, 80, 584, 317, 81,
- 20, 78, 322, 373, 374, 317, 586, 317, 596, 322,
- 317, 622, 317, 627, 317, 383, 384, 322, 37, 322,
- 391, 392, 322, 78, 628, 80, -407, -407, 81, 20,
- 318, 632, 196, 80, 633, 318, 81, 20, 197, 767,
- -408, -408, 321, 639, 771, 198, 773, 649, 774, 199,
- 659, -496, -496, 360, 665, 80, 318, 361, 81, 20,
- 666, 362, 200, 201, 318, 667, 202, 141, 142, 319,
- 320, 602, 319, 320, 156, 204, 205, 206, 207, 710,
- 78, 208, 209, 323, 510, 512, 2, 531, 533, 79,
- 323, 4, 78, 375, 376, 377, 318, 5, 323, 318,
- 323, 723, 588, 323, 319, 320, 319, 320, 520, 522,
- 524, 526, 80, 736, -207, 81, 20, 318, 322, 318,
- 739, 740, 318, 741, 80, 157, 158, 81, 20, 332,
- 332, 332, 332, 742, 748, 318, 394, 332, 332, -15,
- 466, 467, 468, 750, -496, -496, 360, 319, 320, 318,
- 430, 758, 319, 320, 431, 318, 770, 191, 759, 192,
- 193, 765, 318, 768, 318, 772, 776, 318, 777, 318,
- 2, 318, 529, 319, 320, 33, 78, 75, 514, 516,
- 518, 319, 320, -15, 108, 79, 256, 4, -496, -496,
- 360, 190, 321, 5, 430, 321, 254, 395, 362, 323,
- 554, 194, 195, 73, 127, 449, 78, 403, 80, 437,
- 717, 81, 20, 319, 320, 196, 319, 320, 452, 644,
- 718, 197, 82, 645, 473, 535, 539, 321, 198, 321,
- 537, 541, 199, 688, 319, 320, 319, 320, 80, 319,
- 320, 81, 20, 548, 543, 200, 201, 0, 0, 202,
- 0, 203, 319, 320, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 319, 320, 322, 0,
- 321, 322, 319, 320, 0, 321, 0, 0, 0, 319,
- 320, 319, 320, 0, 319, 320, 319, 320, 319, 320,
- 0, -496, -496, 360, 0, 0, 321, 480, 0, 0,
- 0, 362, 0, 322, 321, 322, 0, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 0,
- 332, 332, 332, 332, 332, 332, 332, 156, -496, -496,
- 360, 0, 0, 78, 361, 0, 321, 0, 431, 321,
- 0, 0, 79, 0, 4, 0, 322, 0, 0, 323,
- 5, 322, 323, 0, 0, 0, 0, 321, 0, 321,
- 0, 0, 321, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 322, 0, 0, 321, 0, 0, 157, 255,
- 322, 0, 0, 0, 323, 0, 323, 0, 0, 321,
- 0, 333, 333, 333, 333, 321, 0, 0, 0, 333,
- 333, 0, 321, 0, 321, 0, 0, 321, 0, 321,
- 0, 321, 322, 0, 332, 322, 0, 0, 0, -15,
- 332, 0, 0, 0, -496, -496, 360, 323, 0, 0,
- 430, 0, 323, 322, 629, 322, 0, 414, 322, 192,
- 193, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 322, 0, 323, 0, 0, 0, 0, 0, 0,
- 0, 323, 0, 0, 0, 322, 0, 0, 0, 0,
- 0, 322, 0, 0, 0, 0, 0, 0, 322, 0,
- 322, 194, 195, 322, 0, 322, 78, 322, 0, 0,
- 0, 0, 0, 323, 0, 196, 323, 0, 0, 0,
- 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
- 0, 0, 199, 0, 323, 0, 323, 0, 80, 323,
- 0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
- 0, 0, 323, 0, 0, 415, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 323, 263, 0, 332,
- 332, 0, 323, 0, 0, 0, 0, 0, 0, 323,
- 0, 323, 0, 0, 323, 332, 323, 0, 323, 333,
- 333, 333, 333, 333, 333, 333, 333, 333, 333, 333,
- 333, 0, 333, 333, 333, 333, 333, 333, 333, 0,
- 264, 194, 195, 652, 265, 266, 78, 267, 0, 0,
- 268, 0, 0, 0, 269, 196, 0, 0, 653, 0,
- 0, 270, 271, 5, 272, 0, 273, 274, 198, 275,
- 263, 0, 276, 0, 0, 0, 0, 0, 80, 0,
- 0, 81, 20, 0, 0, 0, 0, 0, 0, 277,
- 0, 157, 719, 0, 0, 278, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 0, 0, 0, 0,
- 0, 0, 0, 264, 194, 195, 652, 265, 266, 78,
- 267, 0, 0, 268, 0, 0, 333, 269, 196, 0,
- 0, 653, 333, 0, 270, 271, 5, 272, 263, 273,
+ 331, 331, 331, 331, 331, 331, 630, 759, 577, 764,
+ -65, 417, 20, -66, 84, 20, 702, 317, 408, 551,
+ 42, 413, 724, 157, -25, 426, 433, -65, 427, -25,
+ -25, -25, 189, 750, 442, -25, 419, 445, 46, -25,
+ 282, 177, 434, 423, 743, 492, 454, 282, 318, 500,
+ 475, 134, -158, 167, 438, 282, -66, 282, 635, 633,
+ 747, -97, 710, -97, 88, 634, -97, -97, -97, -97,
+ -65, 450, 611, 753, 546, 601, 28, 31, 501, 189,
+ 450, 638, 641, 133, 2, 644, 167, 758, 486, 645,
+ 78, 645, 557, 331, 672, 135, 465, 407, 248, 331,
+ 692, 31, 565, 418, 567, 747, 53, 753, 316, 758,
+ -254, 316, 683, 100, 492, 57, 157, 498, 280, 676,
+ 106, 280, 80, 55, 58, 81, 20, 56, 420, 317,
+ 66, 744, -31, 1, 178, 424, 317, 590, 455, 592,
+ 98, 102, 476, 316, 317, 316, 317, -495, -495, 317,
+ 109, 636, 761, 598, 487, 131, 282, -28, 1, 112,
+ 318, 20, 727, 612, 492, 497, 601, 318, 281, 245,
+ 502, 281, 729, 639, 319, 318, 2, 318, 725, 20,
+ 318, 646, 149, 730, 57, 151, 316, 189, 154, 733,
+ 316, 20, 599, 4, 183, 599, 280, -29, 1, 5,
+ 188, 2, 324, 366, 203, 84, 601, 593, 20, 20,
+ 456, 316, 3, 460, 594, 20, 404, 405, 4, 316,
+ 406, 280, -34, 1, 5, 20, 20, 331, 331, 17,
+ 35, 7, 6, 179, 252, 20, 320, -139, 17, 17,
+ 17, 2, 464, 331, 20, 317, 281, 36, -33, 1,
+ 441, 316, 3, 37, 316, 88, 7, 360, 4, 17,
+ 253, 361, 17, 17, 5, 362, 2, 20, 138, 139,
+ 20, 281, 316, 20, 316, 180, 318, 316, 735, 20,
+ 17, 736, 280, 4, 280, 20, 319, 20, 20, 5,
+ 316, 90, 2, 319, 257, 20, 7, 134, 20, -32,
+ 1, 319, 680, 319, 316, 282, 319, 329, 282, 4,
+ 316, 441, -35, 1, 441, 5, 157, 316, 32, 316,
+ 344, 7, 316, 90, 316, 321, 316, 20, 99, 341,
+ 617, 458, 281, 103, 281, 712, 618, 441, 32, 527,
+ 684, 720, 32, 2, 765, 159, 618, 7, 320, 769,
+ 441, 771, 359, 772, 3, 320, 2, 703, 161, 32,
+ 4, 726, 364, 320, 441, 320, 5, 618, 320, 78,
+ -339, -339, 365, 4, 2, 385, 159, 441, 159, 5,
+ 78, 57, 441, 282, 441, 157, 441, 282, 78, 397,
+ 387, 161, 155, 386, 317, 493, 477, 317, 7, 478,
+ 2, 80, 319, 359, 81, 20, 78, 121, 282, 484,
+ 388, 7, 80, 485, 322, 81, 20, 752, 401, 493,
+ 80, 755, -339, 81, 20, 318, -339, 140, 318, 317,
+ 400, 317, 141, 142, 30, -154, 34, 321, 80, 728,
+ 435, 81, 20, 439, 321, 618, -341, -341, 282, 118,
+ 35, 282, 321, 359, 321, 469, 78, 321, 51, 578,
+ 318, 494, 318, 139, 320, 122, 495, 36, 583, 282,
+ 496, 282, 317, 37, 282, 568, 317, 250, 139, 569,
+ 20, -496, -496, 687, 602, 494, 604, 282, 80, 585,
+ 495, 81, 20, 2, 496, 368, 369, 317, -341, 78,
+ 626, 282, -341, 318, 20, 317, 443, 318, 79, 453,
+ 4, 370, 371, 372, 282, 550, 5, 373, 374, 282,
+ 595, 282, 621, 282, 383, 384, 322, 627, 318, 391,
+ 392, 80, 156, 322, 81, 20, 318, 317, 78, 631,
+ 317, 322, 637, 322, 323, 82, 322, 79, 647, 4,
+ 657, 319, 663, 321, 319, 5, -405, -405, 317, 2,
+ 317, -406, -406, 317, 664, 78, 141, 142, 318, 665,
+ 80, 318, 708, 81, 20, 601, 317, 375, 376, 377,
+ 721, 35, 587, 157, 158, 734, 319, 78, 319, 318,
+ 317, 318, 510, 512, 318, -205, 317, 80, 531, 533,
+ 81, 20, 737, 317, 37, 317, 738, 318, 317, 394,
+ 317, 35, 317, 320, 739, 740, 320, 78, 746, 80,
+ 748, 318, 81, 20, 466, 467, 468, 318, 756, 319,
+ 514, 516, 518, 319, 318, 757, 318, 763, 766, 318,
+ 768, 318, 322, 318, 378, 379, 380, 381, 320, 80,
+ 320, 2, 81, 20, 319, 770, 323, 78, 774, -494,
+ -494, 360, 319, 323, 775, 361, 79, 529, 4, 362,
+ 33, 323, 75, 323, 5, 108, 323, 395, 520, 522,
+ 524, 526, 190, 382, 156, 256, 553, 73, 254, 80,
+ 78, 320, 81, 20, 319, 320, 127, 319, 403, 79,
+ 449, 4, 321, 126, 715, 321, 716, 5, -494, -494,
+ 360, 452, 473, 642, 480, 319, 320, 319, 362, 535,
+ 319, 643, 80, -15, 320, 81, 20, 537, -494, -494,
+ 360, 541, 548, 319, 430, 157, 255, 321, 431, 321,
+ 539, 686, 0, -15, 543, 0, 0, 319, -494, -494,
+ 360, 0, 0, 319, 430, 0, 320, 0, 362, 320,
+ 319, 0, 319, 0, 0, 319, 0, 319, 0, 319,
+ 0, 0, 323, 0, 0, 0, 0, 320, 0, 320,
+ 321, -15, 320, 0, 321, 0, -494, -494, 360, 0,
+ 0, 322, 430, 0, 322, 320, 628, -494, -494, 360,
+ 0, 0, 0, 361, 0, 321, 0, 431, 0, 320,
+ 0, 0, 0, 321, 0, 320, 0, 0, 0, 0,
+ 0, 0, 320, 0, 320, 0, 322, 320, 322, 320,
+ 0, 320, 0, 0, 332, 332, 332, 332, 0, 0,
+ 0, 0, 332, 332, 0, 321, 0, 0, 321, 0,
+ 0, 0, 0, 0, 0, 333, 333, 333, 333, 0,
+ 0, 0, 0, 333, 333, 0, 321, 0, 321, 322,
+ 0, 321, 0, 322, 0, 0, 0, 0, 191, 0,
+ 192, 193, 0, 0, 321, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 322, 0, 0, 0, 321, 0,
+ 0, 0, 322, 0, 321, 0, 0, 0, 0, 0,
+ 0, 321, 0, 321, 0, 0, 321, 0, 321, 0,
+ 321, 323, 194, 195, 323, 0, 0, 78, 0, 0,
+ 0, 0, 0, 0, 322, 0, 196, 322, 0, 0,
+ 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 0, 199, 0, 322, 323, 322, 323, 80,
+ 322, 0, 81, 20, 0, 0, 200, 201, 0, 0,
+ 202, 0, 203, 322, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 322, 0, 0,
+ 0, 0, 0, 322, 0, 0, 0, 0, 0, 323,
+ 322, 0, 322, 323, 0, 322, 0, 322, 677, 322,
+ 0, 0, 332, 332, 332, 332, 332, 332, 332, 332,
+ 332, 332, 332, 332, 323, 332, 332, 332, 332, 332,
+ 332, 332, 323, 333, 333, 333, 333, 333, 333, 333,
+ 333, 333, 333, 333, 333, 0, 333, 333, 333, 333,
+ 333, 333, 333, 0, 0, 0, 0, 78, 0, 0,
+ 0, 0, 0, 0, 323, 0, 196, 323, 0, 0,
+ 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 0, 199, 0, 323, 0, 323, 0, 80,
+ 323, 0, 81, 20, 0, 0, 200, 201, 0, 0,
+ 202, 0, 0, 323, 263, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 323, 0, 332,
+ 0, 0, 0, 323, 0, 332, 0, 0, 0, 0,
+ 323, 0, 323, 0, 0, 323, 0, 323, 0, 323,
+ 333, 0, 0, 0, 0, 0, 333, 264, 194, 195,
+ 650, 265, 266, 78, 267, 0, 0, 268, 0, 0,
+ 0, 269, 196, 0, 0, 651, 0, 0, 270, 271,
+ 5, 272, 0, 273, 274, 198, 275, 0, 78, 276,
+ 0, 0, 0, 0, 0, 80, 0, 196, 81, 20,
+ 0, 0, 0, 197, 0, 0, 277, 0, 157, 717,
+ 198, 0, 278, 0, 199, 204, 205, 206, 207, 0,
+ 80, 208, 209, 81, 20, 0, 0, 200, 201, 0,
+ 0, 202, 0, 0, 0, 0, 0, 0, 0, 0,
+ 204, 205, 206, 207, 263, 0, 208, 209, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 332, 332, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 332,
+ 0, 0, 0, 0, 333, 333, 0, 264, 194, 195,
+ 650, 265, 266, 78, 267, 0, 0, 268, 0, 0,
+ 333, 269, 196, 0, 0, 651, 0, 0, 270, 271,
+ 5, 272, 263, 273, 274, 198, 275, 0, 0, 276,
+ 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
+ 0, 0, 0, 0, 0, 0, 277, 0, 157, 745,
+ 0, 0, 278, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209, 0, 0, 264, 194, 195, -264, 265,
+ 266, 78, 267, 0, 0, 268, 0, 0, 0, 269,
+ 196, 0, 0, -264, 0, 0, 270, 271, 5, 272,
+ 263, 273, 274, 198, 275, 0, 0, 276, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 0, 0, 0, 0, 277, 0, 157, -264, 0, 0,
+ 278, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 0, 0, 264, 194, 195, 0, 265, 266, 78,
+ 267, 0, 0, 268, 0, 0, 0, 269, 196, 0,
+ 0, 0, 0, 0, 270, 271, 5, 272, 263, 273,
274, 198, 275, 0, 0, 276, 0, 0, 0, 0,
0, 80, 0, 0, 81, 20, 0, 0, 0, 0,
- 0, 0, 277, 0, 157, 747, 0, 0, 278, 0,
+ 0, 0, 277, 0, 157, 436, 0, 0, 278, 0,
0, 204, 205, 206, 207, 0, 0, 208, 209, 0,
- 0, 264, 194, 195, -266, 265, 266, 78, 267, 0,
- 0, 268, 0, 0, 0, 269, 196, 0, 0, -266,
- 0, 0, 270, 271, 5, 272, 0, 273, 274, 198,
- 275, 2, 0, 276, 0, 0, 0, 78, 0, 80,
- 0, 263, 81, 20, 0, 0, 79, 0, 4, 0,
- 277, 0, 157, -266, 5, 0, 278, 0, 0, 204,
- 205, 206, 207, 0, 0, 208, 209, 0, 0, 80,
+ 0, 264, 194, 195, 0, 265, 266, 78, 267, 0,
+ 0, 268, 0, 0, 0, 269, 196, 0, 0, 0,
+ 0, 0, 270, 271, 5, 272, 263, 273, 274, 198,
+ 275, 0, 0, 276, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 0, 0, 0, 0,
- 0, 333, 333, 126, 264, 194, 195, 0, 265, 266,
- 78, 267, 0, 0, 268, 0, 0, 333, 269, 196,
- 0, 0, 0, 0, 0, 270, 271, 5, 272, 263,
- 273, 274, 198, 275, 0, 0, 276, 0, 0, 0,
- 0, 0, 80, 0, 0, 81, 20, 0, 0, 0,
- 0, 0, 0, 277, 0, 157, 436, 0, 0, 278,
- 0, 0, 204, 205, 206, 207, 0, 0, 208, 209,
- 0, 0, 264, 194, 195, 0, 265, 266, 78, 267,
- 0, 0, 268, 0, 0, 0, 269, 196, 0, 0,
- 0, 0, 0, 270, 271, 5, 272, 263, 273, 274,
- 198, 275, 0, 0, 276, 0, 0, 0, 0, 0,
- 80, 0, 0, 81, 20, 0, 0, 0, 0, 0,
- 0, 277, 0, 157, 0, 0, 0, 278, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 0, 0,
- 440, 194, 195, 0, 265, 266, 78, 267, 0, 0,
- 268, 0, 0, 0, 269, 196, 0, 0, 0, 0,
- 0, 270, 271, 263, 272, 0, 273, 274, 198, 275,
- 0, 0, 276, 0, 0, 0, 0, 0, 80, 0,
- 0, 81, 20, 0, 0, 0, 0, 0, 0, 277,
- 0, 157, 0, 0, 0, 278, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 440, 194, 195, 0,
- 693, 266, 78, 267, 0, 0, 268, 0, 0, 0,
- 269, 196, 0, 0, 0, 0, 0, 270, 271, 0,
- 272, 0, 273, 274, 198, 275, 0, 615, 276, 192,
- 193, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 0, 0, 0, 0, 277, 0, 157, 0, 0,
- 0, 278, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 194, 195, 0, 0, 0, 78, 0, 0, 0,
- 0, 0, 0, 0, 0, 196, 0, 0, 0, 0,
- 0, 197, 544, 0, 192, 193, 0, 0, 198, 0,
+ 277, 0, 157, 0, 0, 0, 278, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 0, 0, 440,
+ 194, 195, 0, 265, 266, 78, 267, 0, 0, 268,
+ 0, 0, 0, 269, 196, 0, 0, 0, 0, 0,
+ 270, 271, 263, 272, 0, 273, 274, 198, 275, 0,
+ 0, 276, 0, 0, 0, 0, 0, 80, 0, 0,
+ 81, 20, 0, 0, 0, 0, 0, 0, 277, 0,
+ 157, 0, 0, 0, 278, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 440, 194, 195, 0, 691,
+ 266, 78, 267, 0, 0, 268, 0, 0, 0, 269,
+ 196, 0, 0, 0, 0, 0, 270, 271, 0, 272,
+ 0, 273, 274, 198, 275, 0, 614, 276, 192, 193,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 0, 0, 0, 0, 277, 0, 157, 0, 0, 0,
+ 278, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 194, 195, 0, 0, 0, 78, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 0, 0, 0,
+ 197, 414, 0, 192, 193, 0, 0, 198, 0, 0,
+ 0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
+ 81, 20, 0, 0, 200, 201, 0, 0, 202, 0,
+ 203, 615, 0, 0, 0, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 194, 195, 0, 0, 0,
+ 78, 0, 544, 0, 192, 193, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
+ 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
+ 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
+ 201, 0, 0, 202, 0, 0, 194, 195, 0, 415,
+ 0, 78, 204, 205, 206, 207, 0, 0, 208, 209,
+ 196, 0, 0, 0, 0, 0, 197, 491, 0, 192,
+ 193, 0, 0, 198, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 545,
+ 200, 201, 0, 0, 202, 0, 0, 0, 0, 0,
+ 0, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 194, 195, 0, 0, 0, 78, 0, 580, 0,
+ 192, 193, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
0, 0, 199, 0, 0, 0, 0, 0, 80, 0,
0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
- 0, 203, 616, 0, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 194, 195, 0, 0,
- 0, 78, 0, 491, 0, 192, 193, 0, 0, 0,
- 196, 0, 0, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 198, 0, 0, 0, 199, 0, 0,
- 0, 0, 0, 80, 0, 0, 81, 20, 0, 545,
- 200, 201, 0, 0, 202, 0, 0, 194, 195, 0,
- 0, 0, 78, 204, 205, 206, 207, 0, 0, 208,
- 209, 196, 0, 0, 0, 0, 0, 197, 581, 0,
- 192, 193, 0, 0, 198, 0, 0, 0, 199, 0,
- 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 200, 201, 0, 0, 202, 0, 0, 0, 0,
- 148, 0, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 194, 195, 0, 0, 0, 78, 0, 589,
- 0, 192, 193, 0, 0, 0, 196, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 194, 195, 148, 0, 0, 78, 204, 205,
+ 206, 207, 0, 0, 208, 209, 196, 0, 0, 0,
+ 0, 0, 197, 588, 0, 192, 193, 0, 0, 198,
0, 0, 0, 199, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 200, 201, 0, 0,
- 202, 582, 0, 194, 195, 0, 0, 0, 78, 204,
- 205, 206, 207, 0, 0, 208, 209, 196, 0, 0,
- 0, 0, 0, 197, 597, 0, 192, 193, 0, 0,
+ 202, 581, 0, 0, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 194, 195, 0,
+ 0, 0, 78, 0, 596, 0, 192, 193, 0, 0,
+ 0, 196, 0, 0, 0, 0, 0, 197, 0, 0,
+ 0, 0, 0, 0, 198, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
+ 0, 200, 201, 0, 0, 202, 0, 0, 194, 195,
+ 0, 589, 0, 78, 204, 205, 206, 207, 0, 0,
+ 208, 209, 196, 0, 0, 0, 0, 0, 197, 605,
+ 0, 192, 193, 0, 0, 198, 0, 0, 0, 199,
+ 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
+ 0, 0, 200, 201, 0, 0, 202, 0, 0, 0,
+ 0, 597, 0, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209, 194, 195, 0, 0, 0, 78, 0,
+ 491, 0, 192, 193, 0, 0, 0, 196, 0, 0,
+ 0, 0, 0, 197, 0, 0, 0, 0, 0, 0,
198, 0, 0, 0, 199, 0, 0, 0, 0, 0,
80, 0, 0, 81, 20, 0, 0, 200, 201, 0,
- 0, 202, 0, 0, 0, 0, 0, 590, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 194, 195,
- 0, 0, 0, 78, 0, 606, 0, 192, 193, 0,
- 0, 0, 196, 0, 0, 0, 0, 0, 197, 0,
- 0, 0, 0, 0, 0, 198, 0, 0, 0, 199,
- 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 200, 201, 0, 0, 202, 0, 0, 194,
- 195, 598, 0, 0, 78, 204, 205, 206, 207, 0,
- 0, 208, 209, 196, 0, 0, 0, 0, 0, 197,
- 491, 0, 192, 193, 0, 0, 198, 0, 0, 0,
- 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
- 20, 0, 0, 200, 201, 0, 0, 202, 607, 0,
- 0, 0, 0, 0, 0, 0, 204, 205, 206, 207,
- 0, 0, 208, 209, 194, 195, 0, 0, 0, 78,
- 0, 581, 0, 192, 193, 0, 0, 0, 196, 0,
- 0, 0, 0, 0, 197, 0, 0, 0, 0, 0,
+ 0, 202, 606, 0, 194, 195, 0, 0, 0, 78,
+ 204, 205, 206, 207, 0, 0, 208, 209, 196, 0,
+ 0, 0, 0, 0, 197, 580, 0, 192, 193, 0,
0, 198, 0, 0, 0, 199, 0, 0, 0, 0,
0, 80, 0, 0, 81, 20, 0, 0, 200, 201,
- 0, 0, 202, 0, 0, 194, 195, 598, 0, 0,
- 78, 204, 205, 206, 207, 0, 0, 208, 209, 196,
- 0, 0, 0, 0, 0, 197, 707, 0, 192, 193,
+ 0, 0, 202, 0, 0, 0, 0, 597, 0, 0,
+ 0, 204, 205, 206, 207, 0, 0, 208, 209, 194,
+ 195, 0, 0, 0, 78, 0, 705, 0, 192, 193,
+ 0, 0, 0, 196, 0, 0, 0, 0, 0, 197,
+ 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
+ 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
+ 20, 0, 0, 200, 201, 0, 0, 202, 689, 0,
+ 194, 195, 0, 0, 0, 78, 204, 205, 206, 207,
+ 0, 0, 208, 209, 196, 0, 0, 0, 0, 0,
+ 197, 705, 0, 192, 193, 0, 0, 198, 0, 0,
+ 0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
+ 81, 20, 0, 0, 200, 201, 0, 0, 202, 706,
+ 0, 0, 0, 0, 0, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 194, 195, 0, 0, 0,
+ 78, 0, 588, 0, 192, 193, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
- 201, 0, 0, 202, 691, 0, 0, 0, 0, 0,
- 0, 0, 204, 205, 206, 207, 0, 0, 208, 209,
- 194, 195, 0, 0, 0, 78, 0, 707, 0, 192,
- 193, 0, 0, 0, 196, 0, 0, 0, 0, 0,
- 197, 0, 0, 0, 0, 0, 0, 198, 0, 0,
- 0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
- 81, 20, 0, 0, 200, 201, 0, 0, 202, 708,
- 0, 194, 195, 0, 0, 0, 78, 204, 205, 206,
- 207, 0, 0, 208, 209, 196, 0, 0, 0, 0,
- 0, 197, 589, 0, 192, 193, 0, 0, 198, 0,
+ 201, 0, 0, 202, 749, 0, 194, 195, 0, 0,
+ 0, 78, 204, 205, 206, 207, 0, 0, 208, 209,
+ 196, 0, 0, 0, 0, 0, 197, 330, 0, 192,
+ 193, 0, 0, 198, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 200, 201, 0, 0, 202, 0, 0, 0, 0, 0,
+ 754, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 194, 195, 0, 0, 0, 78, 0, 335, 0,
+ 192, 193, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
0, 0, 199, 0, 0, 0, 0, 0, 80, 0,
0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
- 751, 0, 0, 0, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 194, 195, 0, 0,
- 0, 78, 0, 330, 0, 192, 193, 0, 0, 0,
- 196, 0, 0, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 198, 0, 0, 0, 199, 0, 0,
- 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
- 200, 201, 0, 0, 202, 0, 0, 194, 195, 0,
- 756, 0, 78, 204, 205, 206, 207, 0, 0, 208,
- 209, 196, 0, 0, 0, 0, 0, 197, 335, 0,
- 192, 193, 0, 0, 198, 0, 0, 0, 199, 0,
- 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 200, 201, 0, 0, 202, 0, 0, 0, 0,
- 0, 0, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 194, 195, 0, 0, 0, 78, 0, 337,
- 0, 192, 193, 0, 0, 0, 196, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 194, 195, 0, 0, 0, 78, 204, 205,
+ 206, 207, 0, 0, 208, 209, 196, 0, 0, 0,
+ 0, 0, 197, 337, 0, 192, 193, 0, 0, 198,
0, 0, 0, 199, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 200, 201, 0, 0,
- 202, 0, 0, 194, 195, 0, 0, 0, 78, 204,
- 205, 206, 207, 0, 0, 208, 209, 196, 0, 0,
- 0, 0, 0, 197, 339, 0, 192, 193, 0, 0,
+ 202, 0, 0, 0, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 194, 195, 0,
+ 0, 0, 78, 0, 339, 0, 192, 193, 0, 0,
+ 0, 196, 0, 0, 0, 0, 0, 197, 0, 0,
+ 0, 0, 0, 0, 198, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
+ 0, 200, 201, 0, 0, 202, 0, 0, 194, 195,
+ 0, 0, 0, 78, 204, 205, 206, 207, 0, 0,
+ 208, 209, 196, 0, 0, 0, 0, 0, 197, 348,
+ 0, 192, 193, 0, 0, 198, 0, 0, 0, 199,
+ 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
+ 0, 0, 200, 201, 0, 0, 202, 0, 0, 0,
+ 0, 0, 0, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209, 194, 195, 0, 0, 0, 78, 0,
+ 350, 0, 192, 193, 0, 0, 0, 196, 0, 0,
+ 0, 0, 0, 197, 0, 0, 0, 0, 0, 0,
198, 0, 0, 0, 199, 0, 0, 0, 0, 0,
80, 0, 0, 81, 20, 0, 0, 200, 201, 0,
- 0, 202, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 194, 195,
- 0, 0, 0, 78, 0, 348, 0, 192, 193, 0,
- 0, 0, 196, 0, 0, 0, 0, 0, 197, 0,
- 0, 0, 0, 0, 0, 198, 0, 0, 0, 199,
- 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 200, 201, 0, 0, 202, 0, 0, 194,
- 195, 0, 0, 0, 78, 204, 205, 206, 207, 0,
- 0, 208, 209, 196, 0, 0, 0, 0, 0, 197,
- 350, 0, 192, 193, 0, 0, 198, 0, 0, 0,
- 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
- 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
- 0, 0, 0, 0, 0, 0, 204, 205, 206, 207,
- 0, 0, 208, 209, 194, 195, 0, 0, 0, 78,
- 0, 352, 0, 192, 193, 0, 0, 0, 196, 0,
- 0, 0, 0, 0, 197, 0, 0, 0, 0, 0,
+ 0, 202, 0, 0, 194, 195, 0, 0, 0, 78,
+ 204, 205, 206, 207, 0, 0, 208, 209, 196, 0,
+ 0, 0, 0, 0, 197, 352, 0, 192, 193, 0,
0, 198, 0, 0, 0, 199, 0, 0, 0, 0,
0, 80, 0, 0, 81, 20, 0, 0, 200, 201,
- 0, 0, 202, 0, 0, 194, 195, 0, 0, 0,
- 78, 204, 205, 206, 207, 0, 0, 208, 209, 196,
- 0, 0, 0, 0, 0, 197, 409, 0, 192, 193,
- 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
- 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
- 201, 0, 0, 202, 0, 0, 0, 0, 0, 0,
- 0, 0, 204, 205, 206, 207, 0, 0, 208, 209,
- 194, 195, 0, 0, 0, 78, 0, 491, 0, 192,
- 193, 0, 0, 0, 196, 0, 0, 0, 0, 0,
- 197, 0, 0, 0, 0, 0, 0, 198, 0, 0,
+ 0, 0, 202, 0, 0, 0, 0, 0, 0, 0,
+ 0, 204, 205, 206, 207, 0, 0, 208, 209, 194,
+ 195, 0, 0, 0, 78, 0, 409, 0, 192, 193,
+ 0, 0, 0, 196, 0, 0, 0, 0, 0, 197,
+ 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
+ 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
+ 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
+ 194, 195, 0, 0, 0, 78, 204, 205, 206, 207,
+ 0, 0, 208, 209, 196, 0, 0, 0, 0, 0,
+ 197, 491, 0, 192, 193, 0, 0, 198, 0, 0,
0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
81, 20, 0, 0, 200, 201, 0, 0, 202, 0,
- 0, 194, 195, 0, 0, 0, 78, 204, 205, 206,
- 207, 0, 0, 208, 209, 196, 0, 0, 0, 0,
- 0, 197, 499, 0, 192, 193, 0, 0, 198, 0,
+ 0, 0, 0, 0, 0, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 194, 195, 0, 0, 0,
+ 78, 0, 499, 0, 192, 193, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
+ 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
+ 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
+ 201, 0, 0, 202, 0, 0, 194, 195, 0, 0,
+ 0, 78, 204, 205, 206, 207, 0, 0, 208, 209,
+ 196, 0, 0, 0, 0, 0, 197, 503, 0, 192,
+ 193, 0, 0, 198, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 200, 201, 0, 0, 202, 0, 0, 0, 0, 0,
+ 0, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 194, 195, 0, 0, 0, 78, 0, 505, 0,
+ 192, 193, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
0, 0, 199, 0, 0, 0, 0, 0, 80, 0,
0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
- 0, 0, 0, 0, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 194, 195, 0, 0,
- 0, 78, 0, 503, 0, 192, 193, 0, 0, 0,
- 196, 0, 0, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 198, 0, 0, 0, 199, 0, 0,
- 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
- 200, 201, 0, 0, 202, 0, 0, 194, 195, 0,
- 0, 0, 78, 204, 205, 206, 207, 0, 0, 208,
- 209, 196, 0, 0, 0, 0, 0, 197, 505, 0,
- 192, 193, 0, 0, 198, 0, 0, 0, 199, 0,
- 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 200, 201, 0, 0, 202, 0, 0, 0, 0,
- 0, 0, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 194, 195, 0, 0, 0, 78, 0, 507,
- 0, 192, 193, 0, 0, 0, 196, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 194, 195, 0, 0, 0, 78, 204, 205,
+ 206, 207, 0, 0, 208, 209, 196, 0, 0, 0,
+ 0, 0, 197, 507, 0, 192, 193, 0, 0, 198,
0, 0, 0, 199, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 200, 201, 0, 0,
- 202, 0, 0, 194, 195, 0, 0, 0, 78, 204,
- 205, 206, 207, 0, 0, 208, 209, 196, 0, 0,
- 0, 0, 0, 197, 509, 0, 192, 193, 0, 0,
+ 202, 0, 0, 0, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 194, 195, 0,
+ 0, 0, 78, 0, 509, 0, 192, 193, 0, 0,
+ 0, 196, 0, 0, 0, 0, 0, 197, 0, 0,
+ 0, 0, 0, 0, 198, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
+ 0, 200, 201, 0, 0, 202, 0, 0, 194, 195,
+ 0, 0, 0, 78, 204, 205, 206, 207, 0, 0,
+ 208, 209, 196, 0, 0, 0, 0, 0, 197, 511,
+ 0, 192, 193, 0, 0, 198, 0, 0, 0, 199,
+ 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
+ 0, 0, 200, 201, 0, 0, 202, 0, 0, 0,
+ 0, 0, 0, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209, 194, 195, 0, 0, 0, 78, 0,
+ 513, 0, 192, 193, 0, 0, 0, 196, 0, 0,
+ 0, 0, 0, 197, 0, 0, 0, 0, 0, 0,
198, 0, 0, 0, 199, 0, 0, 0, 0, 0,
80, 0, 0, 81, 20, 0, 0, 200, 201, 0,
- 0, 202, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 194, 195,
- 0, 0, 0, 78, 0, 511, 0, 192, 193, 0,
- 0, 0, 196, 0, 0, 0, 0, 0, 197, 0,
- 0, 0, 0, 0, 0, 198, 0, 0, 0, 199,
- 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 200, 201, 0, 0, 202, 0, 0, 194,
- 195, 0, 0, 0, 78, 204, 205, 206, 207, 0,
- 0, 208, 209, 196, 0, 0, 0, 0, 0, 197,
- 513, 0, 192, 193, 0, 0, 198, 0, 0, 0,
- 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
- 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
- 0, 0, 0, 0, 0, 0, 204, 205, 206, 207,
- 0, 0, 208, 209, 194, 195, 0, 0, 0, 78,
- 0, 515, 0, 192, 193, 0, 0, 0, 196, 0,
- 0, 0, 0, 0, 197, 0, 0, 0, 0, 0,
+ 0, 202, 0, 0, 194, 195, 0, 0, 0, 78,
+ 204, 205, 206, 207, 0, 0, 208, 209, 196, 0,
+ 0, 0, 0, 0, 197, 515, 0, 192, 193, 0,
0, 198, 0, 0, 0, 199, 0, 0, 0, 0,
0, 80, 0, 0, 81, 20, 0, 0, 200, 201,
- 0, 0, 202, 0, 0, 194, 195, 0, 0, 0,
- 78, 204, 205, 206, 207, 0, 0, 208, 209, 196,
- 0, 0, 0, 0, 0, 197, 517, 0, 192, 193,
- 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
- 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
- 201, 0, 0, 202, 0, 0, 0, 0, 0, 0,
- 0, 0, 204, 205, 206, 207, 0, 0, 208, 209,
- 194, 195, 0, 0, 0, 78, 0, 519, 0, 192,
- 193, 0, 0, 0, 196, 0, 0, 0, 0, 0,
- 197, 0, 0, 0, 0, 0, 0, 198, 0, 0,
+ 0, 0, 202, 0, 0, 0, 0, 0, 0, 0,
+ 0, 204, 205, 206, 207, 0, 0, 208, 209, 194,
+ 195, 0, 0, 0, 78, 0, 517, 0, 192, 193,
+ 0, 0, 0, 196, 0, 0, 0, 0, 0, 197,
+ 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
+ 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
+ 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
+ 194, 195, 0, 0, 0, 78, 204, 205, 206, 207,
+ 0, 0, 208, 209, 196, 0, 0, 0, 0, 0,
+ 197, 519, 0, 192, 193, 0, 0, 198, 0, 0,
0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
81, 20, 0, 0, 200, 201, 0, 0, 202, 0,
- 0, 194, 195, 0, 0, 0, 78, 204, 205, 206,
- 207, 0, 0, 208, 209, 196, 0, 0, 0, 0,
- 0, 197, 521, 0, 192, 193, 0, 0, 198, 0,
+ 0, 0, 0, 0, 0, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 194, 195, 0, 0, 0,
+ 78, 0, 521, 0, 192, 193, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
+ 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
+ 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
+ 201, 0, 0, 202, 0, 0, 194, 195, 0, 0,
+ 0, 78, 204, 205, 206, 207, 0, 0, 208, 209,
+ 196, 0, 0, 0, 0, 0, 197, 523, 0, 192,
+ 193, 0, 0, 198, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 200, 201, 0, 0, 202, 0, 0, 0, 0, 0,
+ 0, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 194, 195, 0, 0, 0, 78, 0, 525, 0,
+ 192, 193, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
0, 0, 199, 0, 0, 0, 0, 0, 80, 0,
0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
- 0, 0, 0, 0, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 194, 195, 0, 0,
- 0, 78, 0, 523, 0, 192, 193, 0, 0, 0,
- 196, 0, 0, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 198, 0, 0, 0, 199, 0, 0,
- 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
- 200, 201, 0, 0, 202, 0, 0, 194, 195, 0,
- 0, 0, 78, 204, 205, 206, 207, 0, 0, 208,
- 209, 196, 0, 0, 0, 0, 0, 197, 525, 0,
- 192, 193, 0, 0, 198, 0, 0, 0, 199, 0,
- 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 200, 201, 0, 0, 202, 0, 0, 0, 0,
- 0, 0, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 194, 195, 0, 0, 0, 78, 0, 530,
- 0, 192, 193, 0, 0, 0, 196, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 194, 195, 0, 0, 0, 78, 204, 205,
+ 206, 207, 0, 0, 208, 209, 196, 0, 0, 0,
+ 0, 0, 197, 530, 0, 192, 193, 0, 0, 198,
0, 0, 0, 199, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 200, 201, 0, 0,
- 202, 0, 0, 194, 195, 0, 0, 0, 78, 204,
- 205, 206, 207, 0, 0, 208, 209, 196, 0, 0,
- 0, 0, 0, 197, 532, 0, 192, 193, 0, 0,
+ 202, 0, 0, 0, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 194, 195, 0,
+ 0, 0, 78, 0, 532, 0, 192, 193, 0, 0,
+ 0, 196, 0, 0, 0, 0, 0, 197, 0, 0,
+ 0, 0, 0, 0, 198, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
+ 0, 200, 201, 0, 0, 202, 0, 0, 194, 195,
+ 0, 0, 0, 78, 204, 205, 206, 207, 0, 0,
+ 208, 209, 196, 0, 0, 0, 0, 0, 197, 534,
+ 0, 192, 193, 0, 0, 198, 0, 0, 0, 199,
+ 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
+ 0, 0, 200, 201, 0, 0, 202, 0, 0, 0,
+ 0, 0, 0, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209, 194, 195, 0, 0, 0, 78, 0,
+ 536, 0, 192, 193, 0, 0, 0, 196, 0, 0,
+ 0, 0, 0, 197, 0, 0, 0, 0, 0, 0,
198, 0, 0, 0, 199, 0, 0, 0, 0, 0,
80, 0, 0, 81, 20, 0, 0, 200, 201, 0,
- 0, 202, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 194, 195,
- 0, 0, 0, 78, 0, 534, 0, 192, 193, 0,
- 0, 0, 196, 0, 0, 0, 0, 0, 197, 0,
- 0, 0, 0, 0, 0, 198, 0, 0, 0, 199,
- 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 200, 201, 0, 0, 202, 0, 0, 194,
- 195, 0, 0, 0, 78, 204, 205, 206, 207, 0,
- 0, 208, 209, 196, 0, 0, 0, 0, 0, 197,
- 536, 0, 192, 193, 0, 0, 198, 0, 0, 0,
- 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
- 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
- 0, 0, 0, 0, 0, 0, 204, 205, 206, 207,
- 0, 0, 208, 209, 194, 195, 0, 0, 0, 78,
- 0, 538, 0, 192, 193, 0, 0, 0, 196, 0,
- 0, 0, 0, 0, 197, 0, 0, 0, 0, 0,
+ 0, 202, 0, 0, 194, 195, 0, 0, 0, 78,
+ 204, 205, 206, 207, 0, 0, 208, 209, 196, 0,
+ 0, 0, 0, 0, 197, 538, 0, 192, 193, 0,
0, 198, 0, 0, 0, 199, 0, 0, 0, 0,
0, 80, 0, 0, 81, 20, 0, 0, 200, 201,
- 0, 0, 202, 0, 0, 194, 195, 0, 0, 0,
- 78, 204, 205, 206, 207, 0, 0, 208, 209, 196,
- 0, 0, 0, 0, 0, 197, 540, 0, 192, 193,
- 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
- 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
- 201, 0, 0, 202, 0, 0, 0, 0, 0, 0,
- 0, 0, 204, 205, 206, 207, 0, 0, 208, 209,
- 194, 195, 0, 0, 0, 78, 0, 542, 0, 192,
- 193, 0, 0, 0, 196, 0, 0, 0, 0, 0,
- 197, 0, 0, 0, 0, 0, 0, 198, 0, 0,
+ 0, 0, 202, 0, 0, 0, 0, 0, 0, 0,
+ 0, 204, 205, 206, 207, 0, 0, 208, 209, 194,
+ 195, 0, 0, 0, 78, 0, 540, 0, 192, 193,
+ 0, 0, 0, 196, 0, 0, 0, 0, 0, 197,
+ 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
+ 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
+ 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
+ 194, 195, 0, 0, 0, 78, 204, 205, 206, 207,
+ 0, 0, 208, 209, 196, 0, 0, 0, 0, 0,
+ 197, 542, 0, 192, 193, 0, 0, 198, 0, 0,
0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
81, 20, 0, 0, 200, 201, 0, 0, 202, 0,
- 0, 194, 195, 0, 0, 0, 78, 204, 205, 206,
- 207, 0, 0, 208, 209, 196, 0, 0, 0, 0,
- 0, 197, 547, 0, 192, 193, 0, 0, 198, 0,
+ 0, 0, 0, 0, 0, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 194, 195, 0, 0, 0,
+ 78, 0, 547, 0, 192, 193, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
+ 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
+ 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
+ 201, 0, 0, 202, 0, 0, 194, 195, 0, 0,
+ 0, 78, 204, 205, 206, 207, 0, 0, 208, 209,
+ 196, 0, 0, 0, 0, 0, 197, 556, 0, 192,
+ 193, 0, 0, 198, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 200, 201, 0, 0, 202, 0, 0, 0, 0, 0,
+ 0, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 194, 195, 0, 0, 0, 78, 0, 564, 0,
+ 192, 193, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
0, 0, 199, 0, 0, 0, 0, 0, 80, 0,
0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
- 0, 0, 0, 0, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, 194, 195, 0, 0,
- 0, 78, 0, 557, 0, 192, 193, 0, 0, 0,
- 196, 0, 0, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 198, 0, 0, 0, 199, 0, 0,
- 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
- 200, 201, 0, 0, 202, 0, 0, 194, 195, 0,
- 0, 0, 78, 204, 205, 206, 207, 0, 0, 208,
- 209, 196, 0, 0, 0, 0, 0, 197, 565, 0,
- 192, 193, 0, 0, 198, 0, 0, 0, 199, 0,
- 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 200, 201, 0, 0, 202, 0, 0, 0, 0,
- 0, 0, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 194, 195, 0, 0, 0, 78, 0, 567,
- 0, 192, 193, 0, 0, 0, 196, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 0, 194, 195, 0, 0, 0, 78, 204, 205,
+ 206, 207, 0, 0, 208, 209, 196, 0, 0, 0,
+ 0, 0, 197, 566, 0, 192, 193, 0, 0, 198,
0, 0, 0, 199, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 200, 201, 0, 0,
- 202, 0, 0, 194, 195, 0, 0, 0, 78, 204,
- 205, 206, 207, 0, 0, 208, 209, 196, 0, 0,
- 0, 0, 0, 197, 592, 0, 192, 193, 0, 0,
+ 202, 0, 0, 0, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 194, 195, 0,
+ 0, 0, 78, 0, 591, 0, 192, 193, 0, 0,
+ 0, 196, 0, 0, 0, 0, 0, 197, 0, 0,
+ 0, 0, 0, 0, 198, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
+ 0, 200, 201, 0, 0, 202, 0, 0, 194, 195,
+ 0, 0, 0, 78, 204, 205, 206, 207, 0, 0,
+ 208, 209, 196, 0, 0, 0, 0, 0, 197, 608,
+ 0, 192, 193, 0, 0, 198, 0, 0, 0, 199,
+ 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
+ 0, 0, 200, 201, 0, 0, 202, 0, 0, 0,
+ 0, 0, 0, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209, 194, 195, 0, 0, 0, 78, 0,
+ 675, 0, 192, 193, 0, 0, 0, 196, 0, 0,
+ 0, 0, 0, 197, 0, 0, 0, 0, 0, 0,
198, 0, 0, 0, 199, 0, 0, 0, 0, 0,
80, 0, 0, 81, 20, 0, 0, 200, 201, 0,
- 0, 202, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 194, 195,
- 0, 0, 0, 78, 0, 609, 0, 192, 193, 0,
- 0, 0, 196, 0, 0, 0, 0, 0, 197, 0,
- 0, 0, 0, 0, 0, 198, 0, 0, 0, 199,
- 0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 200, 201, 0, 0, 202, 0, 0, 194,
- 195, 0, 0, 0, 78, 204, 205, 206, 207, 0,
- 0, 208, 209, 196, 0, 0, 0, 0, 0, 197,
- 677, 0, 192, 193, 0, 0, 198, 0, 0, 0,
- 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
- 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
- 0, 0, 0, 0, 0, 0, 204, 205, 206, 207,
- 0, 0, 208, 209, 194, 195, 0, 0, 0, 78,
- 0, 681, 0, 192, 193, 0, 0, 0, 196, 0,
- 0, 0, 0, 0, 197, 0, 0, 0, 0, 0,
+ 0, 202, 0, 0, 194, 195, 0, 0, 0, 78,
+ 204, 205, 206, 207, 0, 0, 208, 209, 196, 0,
+ 0, 0, 0, 0, 197, 679, 0, 192, 193, 0,
0, 198, 0, 0, 0, 199, 0, 0, 0, 0,
0, 80, 0, 0, 81, 20, 0, 0, 200, 201,
- 0, 0, 202, 0, 0, 194, 195, 0, 0, 0,
- 78, 204, 205, 206, 207, 0, 0, 208, 209, 196,
- 0, 0, 0, 0, 0, 197, 687, 0, 192, 193,
- 0, 0, 198, 0, 0, 0, 199, 0, 0, 0,
- 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
- 201, 0, 0, 202, 0, 0, 0, 0, 0, 0,
- 0, 0, 204, 205, 206, 207, 0, 0, 208, 209,
- 194, 195, 0, 0, 0, 78, 0, 713, 0, 192,
- 193, 0, 0, 0, 196, 0, 0, 0, 0, 0,
- 197, 0, 0, 0, 0, 0, 0, 198, 0, 0,
+ 0, 0, 202, 0, 0, 0, 0, 0, 0, 0,
+ 0, 204, 205, 206, 207, 0, 0, 208, 209, 194,
+ 195, 0, 0, 0, 78, 0, 685, 0, 192, 193,
+ 0, 0, 0, 196, 0, 0, 0, 0, 0, 197,
+ 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
+ 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
+ 20, 0, 0, 200, 201, 0, 0, 202, 0, 0,
+ 194, 195, 0, 0, 0, 78, 204, 205, 206, 207,
+ 0, 0, 208, 209, 196, 0, 0, 0, 0, 0,
+ 197, 711, 0, 192, 193, 0, 0, 198, 0, 0,
0, 199, 0, 0, 0, 0, 0, 80, 0, 0,
81, 20, 0, 0, 200, 201, 0, 0, 202, 0,
- 0, 194, 195, 0, 0, 0, 78, 204, 205, 206,
- 207, 0, 0, 208, 209, 196, 0, 0, 0, 0,
- 0, 197, 0, 575, 0, 0, 0, 0, 198, 0,
+ 0, 0, 0, 0, 0, 0, 0, 204, 205, 206,
+ 207, 0, 0, 208, 209, 194, 195, 0, 0, 0,
+ 78, 0, 574, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
+ 0, 0, 198, 0, 0, 0, 199, 660, 0, 0,
+ 0, 0, 80, 0, 0, 81, 20, 0, 0, 200,
+ 201, 0, 0, 202, 0, -287, -287, -287, 0, 0,
+ 0, -287, 204, 205, 206, 207, 0, 0, 208, 209,
+ -287, 0, 0, 0, 0, 0, -287, 0, 0, 722,
+ 0, 194, 195, -287, 0, 0, 78, -287, 0, 0,
+ 0, 0, 0, -287, 0, 196, -287, -287, 0, 0,
+ 0, 197, 0, 0, -287, 0, 192, 193, 198, 0,
+ -287, 0, 199, -287, -287, -287, -287, 0, 80, -287,
+ -287, 81, 20, 194, 195, 0, 0, 0, 78, 277,
+ -295, 0, 0, 0, 0, 0, 0, 196, 204, 205,
+ 206, 207, 0, 197, 208, 209, 658, 0, 194, 195,
+ 198, 0, 0, 78, 199, 0, 0, 0, 0, 0,
+ 80, 0, 196, 81, 20, 0, 0, 0, 197, 0,
+ 0, 277, -295, 192, 193, 198, 0, 0, 0, 199,
+ 204, 205, 206, 207, 0, 80, 208, 209, 81, 20,
+ 194, 195, 200, 201, 0, 78, 202, 0, 203, 356,
+ 0, 0, 0, 0, 196, 204, 205, 206, 207, 0,
+ 197, 208, 209, 0, 0, 194, 195, 198, 0, 0,
+ 78, 199, 0, 0, 192, 193, 0, 80, 0, 196,
+ 81, 20, 0, 0, 0, 197, 0, 0, 277, 0,
+ 0, 0, 198, 0, 0, 0, 199, 204, 205, 206,
+ 207, 0, 80, 208, 209, 81, 20, 0, 0, 200,
+ 201, 0, 0, 202, 488, 0, 194, 195, 0, 0,
+ 0, 78, 204, 205, 206, 207, 0, 0, 208, 209,
+ 196, 0, 0, 0, 0, 0, 197, 0, 0, 192,
+ 193, 0, 0, 198, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 80, 0, 0, 81, 20, 0, 0,
+ 200, 201, 0, 0, 202, 624, 0, 0, 0, 0,
+ 0, 0, 0, 204, 205, 206, 207, 0, 0, 208,
+ 209, 194, 195, 0, 0, 0, 78, 0, 0, 0,
+ 192, 193, 0, 0, 0, 196, 0, 0, 0, 0,
+ 0, 197, 0, 0, 0, 0, 0, 0, 198, 0,
0, 0, 199, 0, 0, 0, 0, 0, 80, 0,
- 0, 81, 20, 0, 0, 200, 201, 0, 662, 202,
- 0, 0, 0, 0, 0, 0, 0, 0, 204, 205,
- 206, 207, 0, 0, 208, 209, -289, -289, -289, 0,
- 0, 0, -289, 0, 0, 0, 0, 0, 0, 0,
- 0, -289, 0, 0, 0, 0, 0, -289, 0, 0,
- 724, 0, 194, 195, -289, 0, 0, 78, -289, 0,
- 0, 0, 0, 0, -289, 0, 196, -289, -289, 0,
- 0, 0, 197, 0, 0, -289, 0, 192, 193, 198,
- 0, -289, 0, 199, -289, -289, -289, -289, 0, 80,
- -289, -289, 81, 20, 194, 195, 0, 0, 0, 78,
- 277, -297, 0, 0, 0, 0, 0, 0, 196, 204,
- 205, 206, 207, 0, 197, 208, 209, 660, 0, 194,
- 195, 198, 0, 0, 78, 199, 0, 0, 0, 0,
- 0, 80, 0, 196, 81, 20, 0, 0, 0, 197,
- 0, 0, 277, -297, 192, 193, 198, 0, 0, 0,
- 199, 204, 205, 206, 207, 0, 80, 208, 209, 81,
- 20, 194, 195, 200, 201, 0, 78, 202, 0, 203,
- 356, 0, 0, 0, 0, 196, 204, 205, 206, 207,
- 0, 197, 208, 209, 0, 0, 194, 195, 198, 0,
- 0, 78, 199, 0, 0, 192, 193, 0, 80, 0,
- 196, 81, 20, 0, 0, 0, 197, 0, 0, 277,
- 0, 0, 0, 198, 0, 0, 0, 199, 204, 205,
- 206, 207, 0, 80, 208, 209, 81, 20, 0, 0,
- 200, 201, 0, 0, 202, 488, 0, 194, 195, 0,
- 0, 0, 78, 204, 205, 206, 207, 0, 0, 208,
- 209, 196, 0, 0, 0, 0, 0, 197, 0, 0,
- 192, 193, 0, 0, 198, 0, 0, 0, 199, 0,
- 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
- 0, 200, 201, 0, 0, 202, 625, 0, 0, 0,
- 0, 0, 0, 0, 204, 205, 206, 207, 0, 0,
- 208, 209, 194, 195, 0, 0, 0, 78, 0, 0,
- 0, 192, 193, 0, 0, 0, 196, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 198,
+ 0, 81, 20, 0, 0, 200, 201, 0, 0, 202,
+ 666, 0, 194, 195, 0, 0, 0, 78, 204, 205,
+ 206, 207, 0, 0, 208, 209, 196, 0, 0, 0,
+ 0, 0, 197, 0, 0, 192, 193, 0, 0, 198,
0, 0, 0, 199, 0, 0, 0, 0, 0, 80,
0, 0, 81, 20, 0, 0, 200, 201, 0, 0,
- 202, 668, 0, 194, 195, 0, 0, 0, 78, 204,
- 205, 206, 207, 0, 0, 208, 209, 196, 0, 0,
- 0, 0, 0, 197, 0, 0, 192, 193, 0, 0,
- 198, 0, 0, 0, 199, 0, 0, 0, 0, 0,
- 80, 0, 0, 81, 20, 0, 0, 200, 201, 0,
- 0, 202, 683, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 208, 209, 194, 195,
- 0, 0, 0, 78, 0, 0, 0, 0, 0, 0,
- 0, 0, 196, 0, 0, 0, 0, 0, 197, 0,
+ 202, 681, 0, 0, 0, 0, 0, 0, 0, 204,
+ 205, 206, 207, 0, 0, 208, 209, 194, 195, 0,
+ 0, 0, 78, 0, 0, 0, 0, 0, 0, 0,
+ 0, 196, 0, 0, 0, 0, 0, 197, 0, 0,
+ 0, 0, 0, 0, 198, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 80, 0, 0, 81, 20, 0,
+ 0, 200, 201, 0, 0, 202, 0, 2, 194, 195,
+ 0, 0, 0, 78, 204, 205, 206, 207, 0, 0,
+ 208, 209, 196, 0, 0, 0, 0, 0, 197, 0,
0, 0, 0, 0, 0, 198, 0, 0, 0, 199,
0, 0, 0, 0, 0, 80, 0, 0, 81, 20,
- 0, 0, 200, 201, 0, 0, 202, 0, 2, 194,
- 195, 0, 0, 0, 78, 204, 205, 206, 207, 0,
- 0, 208, 209, 196, 0, 0, 0, 0, 0, 197,
- 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
- 199, 0, 0, 0, 0, 0, 80, 0, 0, 81,
- 20, 0, 0, 0, 0, 0, 0, 277, 0, 0,
- 0, 0, 0, 0, 0, 0, 204, 205, 206, 207,
- 0, 0, 208, 209
+ 0, 0, 0, 0, 0, 0, 277, 0, 0, 0,
+ 0, 0, 0, 0, 0, 204, 205, 206, 207, 0,
+ 0, 208, 209
};
static const short yycheck[] = { 3,
- 328, 62, 6, 132, 62, 307, 129, 287, 175, 203,
- 134, 0, 483, 179, 1, 1, 123, 1, 1, 346,
- 9, 10, 11, 1, 83, 42, 353, 354, 89, 46,
- 9, 89, 1, 94, 53, 1, 94, 657, 42, 162,
- 1, 30, 46, 72, 33, 34, 169, 64, 435, 1,
- 94, 62, 69, 97, 33, 86, 1, 86, 62, 294,
- 64, 665, 51, 122, 123, 69, 1, 302, 129, 304,
- 95, 129, 133, 62, 198, 133, 117, 1, 97, 192,
- 193, 194, 195, 94, 636, 89, 1, 200, 201, 476,
- 94, 1, 1, 95, 96, 1, 5, 99, 718, 160,
- 86, 162, 160, 86, 162, 94, 636, 94, 1, 150,
- 94, 128, 153, 100, 175, 502, 100, 134, 129, 180,
- 1, 99, 180, 101, 128, 129, 1, 93, 1, 133,
- 134, 172, 101, 4, 5, 101, 259, 198, 99, 636,
- 129, 202, 613, 470, 133, 697, 473, 99, 700, 101,
- 273, 162, 756, 0, 99, 100, 160, 1, 162, 94,
- 326, 765, 9, 10, 11, 36, 37, 697, 140, 40,
- 700, 175, 279, 162, 1, 99, 180, 86, 88, 50,
- 1, 198, 1, 30, 99, 100, 33, 34, 192, 193,
- 194, 195, 253, 99, 198, 253, 200, 201, 202, 636,
- 697, 94, 1, 700, 51, 329, 100, 100, 79, 596,
- 1, 763, 83, 254, 1, 62, 768, 98, 770, 1,
- 772, 94, 283, 1, 99, 283, 287, 100, 1, 1,
- 202, 203, 1, 763, 1, 622, 403, 1, 768, 1,
- 770, 1, 772, 1, 1, 632, 307, 94, 92, 253,
- 94, 122, 123, 97, 98, 99, 100, 370, 371, 372,
- 697, 648, 1, 700, 253, 1, 763, 328, 139, 1,
- 328, 768, 99, 770, 95, 772, 556, 15, 99, 283,
- 99, 93, 129, 287, 94, 97, 588, 97, 590, 101,
- 294, 485, 101, 175, 266, 94, 1, 269, 302, 1,
- 304, 100, 1, 307, 175, 277, 1, 98, 179, 45,
- 46, 98, 329, 641, 1, 162, 98, 86, 307, 86,
- 98, 382, 95, 95, 328, 329, 763, 434, 1, 86,
- 99, 768, 99, 770, 98, 772, 98, 175, 98, 328,
- 1, 99, 403, 1, 1, 732, 52, 218, 1, 87,
- 86, 631, 88, 1, 97, 91, 92, 93, 1, 1,
- 99, 97, 94, 665, 477, 101, 370, 371, 372, 373,
+ 132, 403, 6, 287, 307, 123, 328, 42, 62, 175,
+ 203, 46, 134, 294, 483, 179, 0, 83, 117, 1,
+ 62, 302, 129, 304, 86, 9, 10, 11, 1, 64,
+ 1, 1, 663, 1, 69, 89, 62, 1, 42, 655,
+ 94, 97, 46, 1, 95, 101, 30, 1, 634, 33,
+ 34, 150, 94, 1, 153, 162, 122, 123, 62, 1,
+ 64, 1, 169, 89, 94, 69, 1, 51, 94, 1,
+ 100, 129, 100, 172, 1, 129, 198, 1, 62, 133,
+ 192, 193, 194, 195, 346, 89, 1, 129, 200, 201,
+ 94, 353, 354, 128, 1, 1, 67, 67, 101, 134,
+ 716, 72, 1, 129, 162, 76, 160, 133, 162, 695,
+ 94, 175, 698, 1, 1, 86, 1, 99, 435, 101,
+ 162, 175, 1, 754, 128, 129, 180, 1, 101, 133,
+ 134, 99, 763, 101, 160, 99, 162, 4, 5, 93,
+ 98, 634, 1, 612, 198, 129, 86, 101, 202, 133,
+ 552, 99, 259, 555, 180, 254, 160, 99, 162, 476,
+ 1, 279, 326, 198, 99, 100, 273, 99, 100, 36,
+ 37, 175, 99, 40, 98, 761, 180, 1, 162, 94,
+ 766, 52, 768, 50, 770, 502, 634, 94, 192, 193,
+ 194, 195, 98, 100, 198, 94, 200, 201, 202, 253,
+ 634, 100, 695, 1, 140, 698, 93, 329, 470, 94,
+ 98, 473, 79, 92, 93, 100, 83, 1, 97, 98,
+ 99, 100, 63, 287, 1, 99, 95, 253, 630, 283,
+ 294, 47, 1, 287, 1, 94, 47, 403, 302, 1,
+ 304, 100, 1, 307, 0, 1, 62, 695, 1, 253,
+ 698, 62, 97, 307, 95, 122, 123, 283, 370, 371,
+ 372, 695, 1, 1, 698, 1, 202, 203, 761, 253,
+ 94, 555, 139, 766, 328, 768, 100, 770, 595, 283,
+ 96, 94, 15, 287, 587, 96, 589, 100, 44, 1,
+ 294, 1, 485, 97, 329, 1, 1, 95, 302, 55,
+ 304, 99, 328, 307, 621, 61, 1, 1, 175, 1,
+ 1, 67, 179, 761, 631, 99, 434, 639, 766, 1,
+ 768, 98, 770, 307, 328, 329, 95, 761, 382, 646,
+ 266, 98, 766, 269, 768, 100, 770, 99, 1, 403,
+ 99, 277, 1, 99, 328, 98, 630, 52, 86, 403,
+ 1, 218, 1, 634, 87, 1, 1, 98, 63, 98,
+ 663, 99, 98, 45, 46, 477, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 553, 448, 1, 361,
- 448, 52, 1, 365, 99, 52, 98, 268, 93, 403,
- 99, 636, 63, 97, 275, 287, 63, 94, 279, 1,
- 1, 100, 294, 0, 1, 88, 287, 1, 390, 1,
- 302, 63, 304, 294, 1, 307, 1, 1, 1, 99,
- 100, 302, 1, 304, 95, 1, 408, 95, 95, 52,
- 720, 94, 0, 1, 448, 93, 418, 570, 420, 287,
- 573, 94, 1, 95, 756, 326, 294, 44, 430, 99,
- 100, 1, 697, 765, 302, 700, 304, 1, 55, 307,
- 94, 93, 343, 477, 61, 67, 100, 1, 607, 483,
- 67, 453, 95, 455, 93, 1, 44, 1, 723, 1,
- 47, 362, 553, 364, 175, 556, 625, 469, 67, 612,
- 95, 736, 86, 61, 95, 62, 0, 1, 480, 67,
- 129, 93, 99, 485, 63, 750, 93, 92, 93, 93,
- 93, 403, 97, 98, 99, 100, 98, 93, 763, 1,
- 1, 1, 403, 768, 1, 770, 50, 772, 97, 96,
- 1, 99, 101, 162, 667, 59, 95, 676, 1, 553,
- 44, 65, 556, 93, 95, 0, 1, 686, 72, 93,
- 431, 55, 76, 434, 1, 403, 96, 61, 82, 93,
- 631, 85, 86, 67, 86, 89, 90, 93, 95, 93,
- 641, 75, 99, 641, 0, 1, 93, 1, 102, 103,
- 104, 105, 1, 1, 108, 109, 657, 129, 99, 44,
- 0, 1, 0, 1, 1, 99, 287, 1, 612, 613,
- 55, 175, 175, 294, 86, 86, 61, 1, 1, 86,
- 1, 302, 67, 304, 628, 86, 307, 631, 44, 95,
- 162, 64, 636, 86, 97, 44, 69, 641, 101, 55,
- 1, 50, 1, 53, 44, 61, 44, 619, 65, 86,
- 44, 67, 641, 657, 99, 72, 50, 718, 94, 720,
- 1, 61, 1, 61, 11, 101, 1, 67, 65, 67,
- 67, 553, 86, 82, 556, 72, 85, 86, 86, 76,
- 129, 653, 553, 99, 95, 556, 97, 659, 82, 86,
- 107, 85, 86, 697, 553, 128, 700, 556, 94, 99,
- 94, 99, 86, 86, 100, 86, 588, 1, 590, 0,
- 1, 160, 100, 162, 718, 553, 720, 96, 556, 723,
- 47, 100, 403, 287, 287, 86, 65, 86, 67, 1,
- 294, 294, 736, 72, 175, 62, 1, 76, 302, 302,
- 304, 304, 94, 307, 307, 86, 750, 86, 100, 631,
- 588, 86, 590, 44, 636, 101, 50, 44, 629, 763,
- 631, 91, 92, 735, 768, 636, 770, 739, 772, 96,
- 61, 44, 631, 101, 61, 657, 67, 50, 101, 44,
- 67, 45, 46, 665, 92, 50, 657, 10, 82, 97,
- 98, 85, 86, 631, 59, 67, 61, 94, 636, 9,
- 72, 11, 67, 100, 76, 91, 92, 30, 99, 82,
- 175, 34, 85, 86, 86, 697, 94, 82, 700, 657,
- 85, 86, 100, 33, 94, 12, 697, 665, 51, 700,
- 100, 470, 13, 97, 473, 1, 718, 101, 720, 403,
- 403, 723, 97, 472, 60, 474, 287, 718, 64, 720,
- 45, 46, 723, 294, 736, 18, 19, 20, 21, 697,
- 14, 302, 700, 304, 1, 736, 307, 99, 750, 95,
- 94, 93, 553, 97, 756, 556, 93, 101, 44, 750,
- 718, 763, 720, 765, 50, 723, 768, 99, 770, 97,
- 772, 175, 763, 697, 57, 99, 700, 768, 736, 770,
- 99, 772, 97, 5, 6, 7, 101, 588, 99, 590,
- 45, 46, 750, 50, 100, 44, 82, 95, 756, 85,
- 86, 50, 287, 3, 4, 763, 66, 765, 93, 294,
- 768, 93, 770, 1, 772, 16, 17, 302, 67, 304,
- 91, 92, 307, 50, 88, 82, 45, 46, 85, 86,
- 631, 93, 59, 82, 99, 636, 85, 86, 65, 763,
- 45, 46, 403, 94, 768, 72, 770, 1, 772, 76,
- 93, 91, 92, 93, 99, 82, 657, 97, 85, 86,
- 94, 101, 89, 90, 665, 94, 93, 97, 98, 553,
- 553, 97, 556, 556, 44, 102, 103, 104, 105, 1,
- 50, 108, 109, 287, 373, 374, 44, 383, 384, 59,
- 294, 61, 50, 8, 9, 10, 697, 67, 302, 700,
- 304, 94, 100, 307, 588, 588, 590, 590, 378, 379,
- 380, 381, 82, 56, 56, 85, 86, 718, 403, 720,
- 99, 94, 723, 94, 82, 95, 96, 85, 86, 192,
- 193, 194, 195, 1, 94, 736, 94, 200, 201, 86,
- 97, 98, 99, 94, 91, 92, 93, 631, 631, 750,
- 97, 1, 636, 636, 101, 756, 56, 1, 99, 3,
- 4, 99, 763, 94, 765, 94, 0, 768, 0, 770,
- 44, 772, 382, 657, 657, 11, 50, 54, 375, 376,
- 377, 665, 665, 86, 75, 59, 162, 61, 91, 92,
- 93, 139, 553, 67, 97, 556, 160, 253, 101, 403,
- 403, 45, 46, 52, 94, 307, 50, 261, 82, 287,
- 655, 85, 86, 697, 697, 59, 700, 700, 307, 571,
- 655, 65, 96, 571, 346, 385, 387, 588, 72, 590,
- 386, 388, 76, 628, 718, 718, 720, 720, 82, 723,
- 723, 85, 86, 393, 389, 89, 90, -1, -1, 93,
- -1, 95, 736, 736, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 750, 750, 553, -1,
- 631, 556, 756, 756, -1, 636, -1, -1, -1, 763,
- 763, 765, 765, -1, 768, 768, 770, 770, 772, 772,
- -1, 91, 92, 93, -1, -1, 657, 97, -1, -1,
- -1, 101, -1, 588, 665, 590, -1, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, -1,
- 383, 384, 385, 386, 387, 388, 389, 44, 91, 92,
- 93, -1, -1, 50, 97, -1, 697, -1, 101, 700,
- -1, -1, 59, -1, 61, -1, 631, -1, -1, 553,
- 67, 636, 556, -1, -1, -1, -1, 718, -1, 720,
- -1, -1, 723, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 657, -1, -1, 736, -1, -1, 95, 96,
- 665, -1, -1, -1, 588, -1, 590, -1, -1, 750,
- -1, 192, 193, 194, 195, 756, -1, -1, -1, 200,
- 201, -1, 763, -1, 765, -1, -1, 768, -1, 770,
- -1, 772, 697, -1, 477, 700, -1, -1, -1, 86,
- 483, -1, -1, -1, 91, 92, 93, 631, -1, -1,
- 97, -1, 636, 718, 101, 720, -1, 1, 723, 3,
- 4, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 736, -1, 657, -1, -1, -1, -1, -1, -1,
- -1, 665, -1, -1, -1, 750, -1, -1, -1, -1,
- -1, 756, -1, -1, -1, -1, -1, -1, 763, -1,
- 765, 45, 46, 768, -1, 770, 50, 772, -1, -1,
- -1, -1, -1, 697, -1, 59, 700, -1, -1, -1,
- -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
- -1, -1, 76, -1, 718, -1, 720, -1, 82, 723,
- -1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
- -1, -1, 736, -1, -1, 99, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 750, 1, -1, 612,
- 613, -1, 756, -1, -1, -1, -1, -1, -1, 763,
- -1, 765, -1, -1, 768, 628, 770, -1, 772, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, -1, 383, 384, 385, 386, 387, 388, 389, -1,
- 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
- 54, -1, -1, -1, 58, 59, -1, -1, 62, -1,
- -1, 65, 66, 67, 68, -1, 70, 71, 72, 73,
- 1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
- -1, 85, 86, -1, -1, -1, -1, -1, -1, 93,
- -1, 95, 96, -1, -1, 99, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, -1, -1, -1, -1,
- -1, -1, -1, 44, 45, 46, 47, 48, 49, 50,
- 51, -1, -1, 54, -1, -1, 477, 58, 59, -1,
- -1, 62, 483, -1, 65, 66, 67, 68, 1, 70,
+ 384, 385, 386, 387, 388, 389, 552, 99, 94, 99,
+ 95, 1, 86, 52, 448, 86, 1, 175, 93, 403,
+ 63, 268, 1, 95, 86, 99, 88, 52, 275, 91,
+ 92, 93, 279, 730, 695, 97, 1, 698, 63, 101,
+ 287, 1, 448, 1, 1, 361, 1, 294, 175, 365,
+ 1, 53, 95, 129, 718, 302, 95, 304, 1, 1,
+ 721, 92, 88, 94, 448, 94, 97, 98, 99, 100,
+ 95, 754, 94, 734, 390, 97, 1, 9, 1, 326,
+ 763, 1, 569, 93, 44, 572, 162, 748, 1, 1,
+ 50, 1, 408, 477, 606, 97, 343, 1, 1, 483,
+ 761, 33, 418, 93, 420, 766, 1, 768, 552, 770,
+ 95, 555, 624, 65, 430, 362, 95, 364, 552, 611,
+ 72, 555, 82, 1, 1, 85, 86, 5, 93, 287,
+ 1, 88, 0, 1, 94, 93, 294, 453, 93, 455,
+ 1, 1, 93, 587, 302, 589, 304, 91, 92, 307,
+ 1, 94, 94, 469, 67, 107, 403, 0, 1, 1,
+ 287, 86, 674, 94, 480, 72, 97, 294, 552, 485,
+ 93, 555, 684, 93, 175, 302, 44, 304, 665, 86,
+ 307, 93, 1, 93, 431, 1, 630, 434, 1, 93,
+ 634, 86, 470, 61, 1, 473, 630, 0, 1, 67,
+ 1, 44, 1, 1, 95, 639, 97, 94, 86, 86,
+ 1, 655, 55, 1, 101, 86, 95, 96, 61, 663,
+ 99, 655, 0, 1, 67, 86, 86, 611, 612, 0,
+ 44, 99, 75, 639, 96, 86, 175, 95, 9, 10,
+ 11, 44, 1, 627, 86, 403, 630, 61, 0, 1,
+ 634, 695, 55, 67, 698, 639, 99, 93, 61, 30,
+ 93, 97, 33, 34, 67, 101, 44, 86, 99, 100,
+ 86, 655, 716, 86, 718, 639, 403, 721, 695, 86,
+ 51, 698, 716, 61, 718, 86, 287, 86, 86, 67,
+ 734, 62, 44, 294, 99, 86, 99, 53, 86, 0,
+ 1, 302, 618, 304, 748, 552, 307, 100, 555, 61,
+ 754, 695, 0, 1, 698, 67, 95, 761, 10, 763,
+ 1, 99, 766, 94, 768, 175, 770, 86, 64, 101,
+ 94, 1, 716, 69, 718, 651, 100, 721, 30, 1,
+ 94, 657, 34, 44, 761, 129, 100, 99, 287, 766,
+ 734, 768, 101, 770, 55, 294, 44, 1, 129, 51,
+ 61, 94, 101, 302, 748, 304, 67, 100, 307, 50,
+ 45, 46, 97, 61, 44, 11, 160, 761, 162, 67,
+ 50, 628, 766, 630, 768, 95, 770, 634, 50, 99,
+ 13, 162, 128, 12, 552, 1, 94, 555, 99, 97,
+ 44, 82, 403, 101, 85, 86, 50, 1, 655, 96,
+ 14, 99, 82, 100, 175, 85, 86, 733, 95, 1,
+ 82, 737, 97, 85, 86, 552, 101, 92, 555, 587,
+ 99, 589, 97, 98, 9, 93, 11, 287, 82, 94,
+ 93, 85, 86, 99, 294, 100, 45, 46, 695, 97,
+ 44, 698, 302, 101, 304, 97, 50, 307, 33, 65,
+ 587, 67, 589, 100, 403, 59, 72, 61, 95, 716,
+ 76, 718, 630, 67, 721, 60, 634, 99, 100, 64,
+ 86, 91, 92, 65, 472, 67, 474, 734, 82, 66,
+ 72, 85, 86, 44, 76, 45, 46, 655, 97, 50,
+ 1, 748, 101, 630, 86, 663, 99, 634, 59, 99,
+ 61, 5, 6, 7, 761, 99, 67, 3, 4, 766,
+ 93, 768, 93, 770, 16, 17, 287, 88, 655, 91,
+ 92, 82, 44, 294, 85, 86, 663, 695, 50, 93,
+ 698, 302, 94, 304, 175, 96, 307, 59, 1, 61,
+ 93, 552, 99, 403, 555, 67, 45, 46, 716, 44,
+ 718, 45, 46, 721, 94, 50, 97, 98, 695, 94,
+ 82, 698, 1, 85, 86, 97, 734, 8, 9, 10,
+ 94, 44, 100, 95, 96, 56, 587, 50, 589, 716,
+ 748, 718, 373, 374, 721, 56, 754, 82, 383, 384,
+ 85, 86, 99, 761, 67, 763, 94, 734, 766, 94,
+ 768, 44, 770, 552, 94, 1, 555, 50, 94, 82,
+ 94, 748, 85, 86, 97, 98, 99, 754, 1, 630,
+ 375, 376, 377, 634, 761, 99, 763, 99, 94, 766,
+ 56, 768, 403, 770, 18, 19, 20, 21, 587, 82,
+ 589, 44, 85, 86, 655, 94, 287, 50, 0, 91,
+ 92, 93, 663, 294, 0, 97, 59, 382, 61, 101,
+ 11, 302, 54, 304, 67, 75, 307, 253, 378, 379,
+ 380, 381, 139, 57, 44, 162, 403, 52, 160, 82,
+ 50, 630, 85, 86, 695, 634, 94, 698, 261, 59,
+ 307, 61, 552, 96, 653, 555, 653, 67, 91, 92,
+ 93, 307, 346, 570, 97, 716, 655, 718, 101, 385,
+ 721, 570, 82, 86, 663, 85, 86, 386, 91, 92,
+ 93, 388, 393, 734, 97, 95, 96, 587, 101, 589,
+ 387, 627, -1, 86, 389, -1, -1, 748, 91, 92,
+ 93, -1, -1, 754, 97, -1, 695, -1, 101, 698,
+ 761, -1, 763, -1, -1, 766, -1, 768, -1, 770,
+ -1, -1, 403, -1, -1, -1, -1, 716, -1, 718,
+ 630, 86, 721, -1, 634, -1, 91, 92, 93, -1,
+ -1, 552, 97, -1, 555, 734, 101, 91, 92, 93,
+ -1, -1, -1, 97, -1, 655, -1, 101, -1, 748,
+ -1, -1, -1, 663, -1, 754, -1, -1, -1, -1,
+ -1, -1, 761, -1, 763, -1, 587, 766, 589, 768,
+ -1, 770, -1, -1, 192, 193, 194, 195, -1, -1,
+ -1, -1, 200, 201, -1, 695, -1, -1, 698, -1,
+ -1, -1, -1, -1, -1, 192, 193, 194, 195, -1,
+ -1, -1, -1, 200, 201, -1, 716, -1, 718, 630,
+ -1, 721, -1, 634, -1, -1, -1, -1, 1, -1,
+ 3, 4, -1, -1, 734, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 655, -1, -1, -1, 748, -1,
+ -1, -1, 663, -1, 754, -1, -1, -1, -1, -1,
+ -1, 761, -1, 763, -1, -1, 766, -1, 768, -1,
+ 770, 552, 45, 46, 555, -1, -1, 50, -1, -1,
+ -1, -1, -1, -1, 695, -1, 59, 698, -1, -1,
+ -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, -1, 76, -1, 716, 587, 718, 589, 82,
+ 721, -1, 85, 86, -1, -1, 89, 90, -1, -1,
+ 93, -1, 95, 734, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 748, -1, -1,
+ -1, -1, -1, 754, -1, -1, -1, -1, -1, 630,
+ 761, -1, 763, 634, -1, 766, -1, 768, 1, 770,
+ -1, -1, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 655, 383, 384, 385, 386, 387,
+ 388, 389, 663, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, -1, 383, 384, 385, 386,
+ 387, 388, 389, -1, -1, -1, -1, 50, -1, -1,
+ -1, -1, -1, -1, 695, -1, 59, 698, -1, -1,
+ -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, -1, 76, -1, 716, -1, 718, -1, 82,
+ 721, -1, 85, 86, -1, -1, 89, 90, -1, -1,
+ 93, -1, -1, 734, 1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 748, -1, 477,
+ -1, -1, -1, 754, -1, 483, -1, -1, -1, -1,
+ 761, -1, 763, -1, -1, 766, -1, 768, -1, 770,
+ 477, -1, -1, -1, -1, -1, 483, 44, 45, 46,
+ 47, 48, 49, 50, 51, -1, -1, 54, -1, -1,
+ -1, 58, 59, -1, -1, 62, -1, -1, 65, 66,
+ 67, 68, -1, 70, 71, 72, 73, -1, 50, 76,
+ -1, -1, -1, -1, -1, 82, -1, 59, 85, 86,
+ -1, -1, -1, 65, -1, -1, 93, -1, 95, 96,
+ 72, -1, 99, -1, 76, 102, 103, 104, 105, -1,
+ 82, 108, 109, 85, 86, -1, -1, 89, 90, -1,
+ -1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
+ 102, 103, 104, 105, 1, -1, 108, 109, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 611, 612, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 627,
+ -1, -1, -1, -1, 611, 612, -1, 44, 45, 46,
+ 47, 48, 49, 50, 51, -1, -1, 54, -1, -1,
+ 627, 58, 59, -1, -1, 62, -1, -1, 65, 66,
+ 67, 68, 1, 70, 71, 72, 73, -1, -1, 76,
+ -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
+ -1, -1, -1, -1, -1, -1, 93, -1, 95, 96,
+ -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109, -1, -1, 44, 45, 46, 47, 48,
+ 49, 50, 51, -1, -1, 54, -1, -1, -1, 58,
+ 59, -1, -1, 62, -1, -1, 65, 66, 67, 68,
+ 1, 70, 71, 72, 73, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ -1, -1, -1, -1, 93, -1, 95, 96, -1, -1,
+ 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, -1, -1, 44, 45, 46, -1, 48, 49, 50,
+ 51, -1, -1, 54, -1, -1, -1, 58, 59, -1,
+ -1, -1, -1, -1, 65, 66, 67, 68, 1, 70,
71, 72, 73, -1, -1, 76, -1, -1, -1, -1,
-1, 82, -1, -1, 85, 86, -1, -1, -1, -1,
-1, -1, 93, -1, 95, 96, -1, -1, 99, -1,
-1, 102, 103, 104, 105, -1, -1, 108, 109, -1,
- -1, 44, 45, 46, 47, 48, 49, 50, 51, -1,
- -1, 54, -1, -1, -1, 58, 59, -1, -1, 62,
- -1, -1, 65, 66, 67, 68, -1, 70, 71, 72,
- 73, 44, -1, 76, -1, -1, -1, 50, -1, 82,
- -1, 1, 85, 86, -1, -1, 59, -1, 61, -1,
- 93, -1, 95, 96, 67, -1, 99, -1, -1, 102,
- 103, 104, 105, -1, -1, 108, 109, -1, -1, 82,
+ -1, 44, 45, 46, -1, 48, 49, 50, 51, -1,
+ -1, 54, -1, -1, -1, 58, 59, -1, -1, -1,
+ -1, -1, 65, 66, 67, 68, 1, 70, 71, 72,
+ 73, -1, -1, 76, -1, -1, -1, -1, -1, 82,
-1, -1, 85, 86, -1, -1, -1, -1, -1, -1,
- -1, 612, 613, 96, 44, 45, 46, -1, 48, 49,
- 50, 51, -1, -1, 54, -1, -1, 628, 58, 59,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, 1,
- 70, 71, 72, 73, -1, -1, 76, -1, -1, -1,
- -1, -1, 82, -1, -1, 85, 86, -1, -1, -1,
- -1, -1, -1, 93, -1, 95, 96, -1, -1, 99,
- -1, -1, 102, 103, 104, 105, -1, -1, 108, 109,
- -1, -1, 44, 45, 46, -1, 48, 49, 50, 51,
- -1, -1, 54, -1, -1, -1, 58, 59, -1, -1,
- -1, -1, -1, 65, 66, 67, 68, 1, 70, 71,
- 72, 73, -1, -1, 76, -1, -1, -1, -1, -1,
- 82, -1, -1, 85, 86, -1, -1, -1, -1, -1,
- -1, 93, -1, 95, -1, -1, -1, 99, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, -1, -1,
- 44, 45, 46, -1, 48, 49, 50, 51, -1, -1,
- 54, -1, -1, -1, 58, 59, -1, -1, -1, -1,
- -1, 65, 66, 1, 68, -1, 70, 71, 72, 73,
- -1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
- -1, 85, 86, -1, -1, -1, -1, -1, -1, 93,
- -1, 95, -1, -1, -1, 99, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 44, 45, 46, -1,
- 48, 49, 50, 51, -1, -1, 54, -1, -1, -1,
- 58, 59, -1, -1, -1, -1, -1, 65, 66, -1,
- 68, -1, 70, 71, 72, 73, -1, 1, 76, 3,
- 4, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, -1, -1, -1, -1, 93, -1, 95, -1, -1,
- -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 45, 46, -1, -1, -1, 50, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, 65, 1, -1, 3, 4, -1, -1, 72, -1,
+ 93, -1, 95, -1, -1, -1, 99, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, -1, -1, 44,
+ 45, 46, -1, 48, 49, 50, 51, -1, -1, 54,
+ -1, -1, -1, 58, 59, -1, -1, -1, -1, -1,
+ 65, 66, 1, 68, -1, 70, 71, 72, 73, -1,
+ -1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
+ 85, 86, -1, -1, -1, -1, -1, -1, 93, -1,
+ 95, -1, -1, -1, 99, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 44, 45, 46, -1, 48,
+ 49, 50, 51, -1, -1, 54, -1, -1, -1, 58,
+ 59, -1, -1, -1, -1, -1, 65, 66, -1, 68,
+ -1, 70, 71, 72, 73, -1, 1, 76, 3, 4,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ -1, -1, -1, -1, 93, -1, 95, -1, -1, -1,
+ 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 45, 46, -1, -1, -1, 50, -1, -1, -1, -1,
+ -1, -1, -1, -1, 59, -1, -1, -1, -1, -1,
+ 65, 1, -1, 3, 4, -1, -1, 72, -1, -1,
+ -1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
+ 85, 86, -1, -1, 89, 90, -1, -1, 93, -1,
+ 95, 96, -1, -1, -1, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 45, 46, -1, -1, -1,
+ 50, -1, 1, -1, 3, 4, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
+ -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
+ -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, -1, -1, 45, 46, -1, 99,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, 1, -1, 3,
+ 4, -1, -1, 72, -1, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, 88,
+ 89, 90, -1, -1, 93, -1, -1, -1, -1, -1,
+ -1, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, 45, 46, -1, -1, -1, 50, -1, 1, -1,
+ 3, 4, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
-1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
-1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
- -1, 95, 96, -1, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 45, 46, -1, -1,
- -1, 50, -1, 1, -1, 3, 4, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, 65, -1, -1, -1,
- -1, -1, -1, 72, -1, -1, -1, 76, -1, -1,
- -1, -1, -1, 82, -1, -1, 85, 86, -1, 88,
- 89, 90, -1, -1, 93, -1, -1, 45, 46, -1,
- -1, -1, 50, 102, 103, 104, 105, -1, -1, 108,
- 109, 59, -1, -1, -1, -1, -1, 65, 1, -1,
- 3, 4, -1, -1, 72, -1, -1, -1, 76, -1,
- -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, 89, 90, -1, -1, 93, -1, -1, -1, -1,
- 98, -1, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, 45, 46, -1, -1, -1, 50, -1, 1,
- -1, 3, 4, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, 45, 46, 98, -1, -1, 50, 102, 103,
+ 104, 105, -1, -1, 108, 109, 59, -1, -1, -1,
+ -1, -1, 65, 1, -1, 3, 4, -1, -1, 72,
-1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
-1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
- 93, 94, -1, 45, 46, -1, -1, -1, 50, 102,
- 103, 104, 105, -1, -1, 108, 109, 59, -1, -1,
- -1, -1, -1, 65, 1, -1, 3, 4, -1, -1,
+ 93, 94, -1, -1, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 45, 46, -1,
+ -1, -1, 50, -1, 1, -1, 3, 4, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
+ -1, -1, -1, -1, 72, -1, -1, -1, 76, -1,
+ -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
+ -1, 89, 90, -1, -1, 93, -1, -1, 45, 46,
+ -1, 99, -1, 50, 102, 103, 104, 105, -1, -1,
+ 108, 109, 59, -1, -1, -1, -1, -1, 65, 1,
+ -1, 3, 4, -1, -1, 72, -1, -1, -1, 76,
+ -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
+ -1, -1, 89, 90, -1, -1, 93, -1, -1, -1,
+ -1, 98, -1, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109, 45, 46, -1, -1, -1, 50, -1,
+ 1, -1, 3, 4, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, -1, -1, -1, -1, -1, -1,
72, -1, -1, -1, 76, -1, -1, -1, -1, -1,
82, -1, -1, 85, 86, -1, -1, 89, 90, -1,
- -1, 93, -1, -1, -1, -1, -1, 99, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, 45, 46,
- -1, -1, -1, 50, -1, 1, -1, 3, 4, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, -1,
- -1, -1, -1, -1, -1, 72, -1, -1, -1, 76,
- -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 89, 90, -1, -1, 93, -1, -1, 45,
- 46, 98, -1, -1, 50, 102, 103, 104, 105, -1,
- -1, 108, 109, 59, -1, -1, -1, -1, -1, 65,
- 1, -1, 3, 4, -1, -1, 72, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
- 86, -1, -1, 89, 90, -1, -1, 93, 94, -1,
- -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
- -1, -1, 108, 109, 45, 46, -1, -1, -1, 50,
- -1, 1, -1, 3, 4, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, 65, -1, -1, -1, -1, -1,
+ -1, 93, 94, -1, 45, 46, -1, -1, -1, 50,
+ 102, 103, 104, 105, -1, -1, 108, 109, 59, -1,
+ -1, -1, -1, -1, 65, 1, -1, 3, 4, -1,
-1, 72, -1, -1, -1, 76, -1, -1, -1, -1,
-1, 82, -1, -1, 85, 86, -1, -1, 89, 90,
- -1, -1, 93, -1, -1, 45, 46, 98, -1, -1,
- 50, 102, 103, 104, 105, -1, -1, 108, 109, 59,
- -1, -1, -1, -1, -1, 65, 1, -1, 3, 4,
- -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
- 90, -1, -1, 93, 94, -1, -1, -1, -1, -1,
- -1, -1, 102, 103, 104, 105, -1, -1, 108, 109,
- 45, 46, -1, -1, -1, 50, -1, 1, -1, 3,
- 4, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- 65, -1, -1, -1, -1, -1, -1, 72, -1, -1,
+ -1, -1, 93, -1, -1, -1, -1, 98, -1, -1,
+ -1, 102, 103, 104, 105, -1, -1, 108, 109, 45,
+ 46, -1, -1, -1, 50, -1, 1, -1, 3, 4,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, 65,
+ -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
+ 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
+ 86, -1, -1, 89, 90, -1, -1, 93, 94, -1,
+ 45, 46, -1, -1, -1, 50, 102, 103, 104, 105,
+ -1, -1, 108, 109, 59, -1, -1, -1, -1, -1,
+ 65, 1, -1, 3, 4, -1, -1, 72, -1, -1,
-1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
85, 86, -1, -1, 89, 90, -1, -1, 93, 94,
- -1, 45, 46, -1, -1, -1, 50, 102, 103, 104,
- 105, -1, -1, 108, 109, 59, -1, -1, -1, -1,
- -1, 65, 1, -1, 3, 4, -1, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 45, 46, -1, -1, -1,
+ 50, -1, 1, -1, 3, 4, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
+ -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
+ -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, 94, -1, 45, 46, -1, -1,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, 1, -1, 3,
+ 4, -1, -1, 72, -1, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ 89, 90, -1, -1, 93, -1, -1, -1, -1, -1,
+ 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, 45, 46, -1, -1, -1, 50, -1, 1, -1,
+ 3, 4, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
-1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
-1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
- 94, -1, -1, -1, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 45, 46, -1, -1,
- -1, 50, -1, 1, -1, 3, 4, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, 65, -1, -1, -1,
- -1, -1, -1, 72, -1, -1, -1, 76, -1, -1,
- -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
- 89, 90, -1, -1, 93, -1, -1, 45, 46, -1,
- 99, -1, 50, 102, 103, 104, 105, -1, -1, 108,
- 109, 59, -1, -1, -1, -1, -1, 65, 1, -1,
- 3, 4, -1, -1, 72, -1, -1, -1, 76, -1,
- -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, 89, 90, -1, -1, 93, -1, -1, -1, -1,
- -1, -1, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, 45, 46, -1, -1, -1, 50, -1, 1,
- -1, 3, 4, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, 45, 46, -1, -1, -1, 50, 102, 103,
+ 104, 105, -1, -1, 108, 109, 59, -1, -1, -1,
+ -1, -1, 65, 1, -1, 3, 4, -1, -1, 72,
-1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
-1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
- 93, -1, -1, 45, 46, -1, -1, -1, 50, 102,
- 103, 104, 105, -1, -1, 108, 109, 59, -1, -1,
- -1, -1, -1, 65, 1, -1, 3, 4, -1, -1,
+ 93, -1, -1, -1, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 45, 46, -1,
+ -1, -1, 50, -1, 1, -1, 3, 4, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
+ -1, -1, -1, -1, 72, -1, -1, -1, 76, -1,
+ -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
+ -1, 89, 90, -1, -1, 93, -1, -1, 45, 46,
+ -1, -1, -1, 50, 102, 103, 104, 105, -1, -1,
+ 108, 109, 59, -1, -1, -1, -1, -1, 65, 1,
+ -1, 3, 4, -1, -1, 72, -1, -1, -1, 76,
+ -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
+ -1, -1, 89, 90, -1, -1, 93, -1, -1, -1,
+ -1, -1, -1, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109, 45, 46, -1, -1, -1, 50, -1,
+ 1, -1, 3, 4, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, -1, -1, -1, -1, -1, -1,
72, -1, -1, -1, 76, -1, -1, -1, -1, -1,
82, -1, -1, 85, 86, -1, -1, 89, 90, -1,
- -1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, 45, 46,
- -1, -1, -1, 50, -1, 1, -1, 3, 4, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, -1,
- -1, -1, -1, -1, -1, 72, -1, -1, -1, 76,
- -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 89, 90, -1, -1, 93, -1, -1, 45,
- 46, -1, -1, -1, 50, 102, 103, 104, 105, -1,
- -1, 108, 109, 59, -1, -1, -1, -1, -1, 65,
- 1, -1, 3, 4, -1, -1, 72, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
- 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
- -1, -1, 108, 109, 45, 46, -1, -1, -1, 50,
- -1, 1, -1, 3, 4, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, 65, -1, -1, -1, -1, -1,
+ -1, 93, -1, -1, 45, 46, -1, -1, -1, 50,
+ 102, 103, 104, 105, -1, -1, 108, 109, 59, -1,
+ -1, -1, -1, -1, 65, 1, -1, 3, 4, -1,
-1, 72, -1, -1, -1, 76, -1, -1, -1, -1,
-1, 82, -1, -1, 85, 86, -1, -1, 89, 90,
- -1, -1, 93, -1, -1, 45, 46, -1, -1, -1,
- 50, 102, 103, 104, 105, -1, -1, 108, 109, 59,
- -1, -1, -1, -1, -1, 65, 1, -1, 3, 4,
- -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
- 90, -1, -1, 93, -1, -1, -1, -1, -1, -1,
- -1, -1, 102, 103, 104, 105, -1, -1, 108, 109,
- 45, 46, -1, -1, -1, 50, -1, 1, -1, 3,
- 4, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- 65, -1, -1, -1, -1, -1, -1, 72, -1, -1,
+ -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
+ -1, 102, 103, 104, 105, -1, -1, 108, 109, 45,
+ 46, -1, -1, -1, 50, -1, 1, -1, 3, 4,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, 65,
+ -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
+ 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
+ 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
+ 45, 46, -1, -1, -1, 50, 102, 103, 104, 105,
+ -1, -1, 108, 109, 59, -1, -1, -1, -1, -1,
+ 65, 1, -1, 3, 4, -1, -1, 72, -1, -1,
-1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
85, 86, -1, -1, 89, 90, -1, -1, 93, -1,
- -1, 45, 46, -1, -1, -1, 50, 102, 103, 104,
- 105, -1, -1, 108, 109, 59, -1, -1, -1, -1,
- -1, 65, 1, -1, 3, 4, -1, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 45, 46, -1, -1, -1,
+ 50, -1, 1, -1, 3, 4, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
+ -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
+ -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, -1, -1, 45, 46, -1, -1,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, 1, -1, 3,
+ 4, -1, -1, 72, -1, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ 89, 90, -1, -1, 93, -1, -1, -1, -1, -1,
+ -1, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, 45, 46, -1, -1, -1, 50, -1, 1, -1,
+ 3, 4, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
-1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
-1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
- -1, -1, -1, -1, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 45, 46, -1, -1,
- -1, 50, -1, 1, -1, 3, 4, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, 65, -1, -1, -1,
- -1, -1, -1, 72, -1, -1, -1, 76, -1, -1,
- -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
- 89, 90, -1, -1, 93, -1, -1, 45, 46, -1,
- -1, -1, 50, 102, 103, 104, 105, -1, -1, 108,
- 109, 59, -1, -1, -1, -1, -1, 65, 1, -1,
- 3, 4, -1, -1, 72, -1, -1, -1, 76, -1,
- -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, 89, 90, -1, -1, 93, -1, -1, -1, -1,
- -1, -1, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, 45, 46, -1, -1, -1, 50, -1, 1,
- -1, 3, 4, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, 45, 46, -1, -1, -1, 50, 102, 103,
+ 104, 105, -1, -1, 108, 109, 59, -1, -1, -1,
+ -1, -1, 65, 1, -1, 3, 4, -1, -1, 72,
-1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
-1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
- 93, -1, -1, 45, 46, -1, -1, -1, 50, 102,
- 103, 104, 105, -1, -1, 108, 109, 59, -1, -1,
- -1, -1, -1, 65, 1, -1, 3, 4, -1, -1,
+ 93, -1, -1, -1, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 45, 46, -1,
+ -1, -1, 50, -1, 1, -1, 3, 4, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
+ -1, -1, -1, -1, 72, -1, -1, -1, 76, -1,
+ -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
+ -1, 89, 90, -1, -1, 93, -1, -1, 45, 46,
+ -1, -1, -1, 50, 102, 103, 104, 105, -1, -1,
+ 108, 109, 59, -1, -1, -1, -1, -1, 65, 1,
+ -1, 3, 4, -1, -1, 72, -1, -1, -1, 76,
+ -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
+ -1, -1, 89, 90, -1, -1, 93, -1, -1, -1,
+ -1, -1, -1, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109, 45, 46, -1, -1, -1, 50, -1,
+ 1, -1, 3, 4, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, -1, -1, -1, -1, -1, -1,
72, -1, -1, -1, 76, -1, -1, -1, -1, -1,
82, -1, -1, 85, 86, -1, -1, 89, 90, -1,
- -1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, 45, 46,
- -1, -1, -1, 50, -1, 1, -1, 3, 4, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, -1,
- -1, -1, -1, -1, -1, 72, -1, -1, -1, 76,
- -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 89, 90, -1, -1, 93, -1, -1, 45,
- 46, -1, -1, -1, 50, 102, 103, 104, 105, -1,
- -1, 108, 109, 59, -1, -1, -1, -1, -1, 65,
- 1, -1, 3, 4, -1, -1, 72, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
- 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
- -1, -1, 108, 109, 45, 46, -1, -1, -1, 50,
- -1, 1, -1, 3, 4, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, 65, -1, -1, -1, -1, -1,
+ -1, 93, -1, -1, 45, 46, -1, -1, -1, 50,
+ 102, 103, 104, 105, -1, -1, 108, 109, 59, -1,
+ -1, -1, -1, -1, 65, 1, -1, 3, 4, -1,
-1, 72, -1, -1, -1, 76, -1, -1, -1, -1,
-1, 82, -1, -1, 85, 86, -1, -1, 89, 90,
- -1, -1, 93, -1, -1, 45, 46, -1, -1, -1,
- 50, 102, 103, 104, 105, -1, -1, 108, 109, 59,
- -1, -1, -1, -1, -1, 65, 1, -1, 3, 4,
- -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
- 90, -1, -1, 93, -1, -1, -1, -1, -1, -1,
- -1, -1, 102, 103, 104, 105, -1, -1, 108, 109,
- 45, 46, -1, -1, -1, 50, -1, 1, -1, 3,
- 4, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- 65, -1, -1, -1, -1, -1, -1, 72, -1, -1,
+ -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
+ -1, 102, 103, 104, 105, -1, -1, 108, 109, 45,
+ 46, -1, -1, -1, 50, -1, 1, -1, 3, 4,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, 65,
+ -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
+ 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
+ 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
+ 45, 46, -1, -1, -1, 50, 102, 103, 104, 105,
+ -1, -1, 108, 109, 59, -1, -1, -1, -1, -1,
+ 65, 1, -1, 3, 4, -1, -1, 72, -1, -1,
-1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
85, 86, -1, -1, 89, 90, -1, -1, 93, -1,
- -1, 45, 46, -1, -1, -1, 50, 102, 103, 104,
- 105, -1, -1, 108, 109, 59, -1, -1, -1, -1,
- -1, 65, 1, -1, 3, 4, -1, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 45, 46, -1, -1, -1,
+ 50, -1, 1, -1, 3, 4, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
+ -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
+ -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, -1, -1, 45, 46, -1, -1,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, 1, -1, 3,
+ 4, -1, -1, 72, -1, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ 89, 90, -1, -1, 93, -1, -1, -1, -1, -1,
+ -1, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, 45, 46, -1, -1, -1, 50, -1, 1, -1,
+ 3, 4, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
-1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
-1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
- -1, -1, -1, -1, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 45, 46, -1, -1,
- -1, 50, -1, 1, -1, 3, 4, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, 65, -1, -1, -1,
- -1, -1, -1, 72, -1, -1, -1, 76, -1, -1,
- -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
- 89, 90, -1, -1, 93, -1, -1, 45, 46, -1,
- -1, -1, 50, 102, 103, 104, 105, -1, -1, 108,
- 109, 59, -1, -1, -1, -1, -1, 65, 1, -1,
- 3, 4, -1, -1, 72, -1, -1, -1, 76, -1,
- -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, 89, 90, -1, -1, 93, -1, -1, -1, -1,
- -1, -1, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, 45, 46, -1, -1, -1, 50, -1, 1,
- -1, 3, 4, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, 45, 46, -1, -1, -1, 50, 102, 103,
+ 104, 105, -1, -1, 108, 109, 59, -1, -1, -1,
+ -1, -1, 65, 1, -1, 3, 4, -1, -1, 72,
-1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
-1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
- 93, -1, -1, 45, 46, -1, -1, -1, 50, 102,
- 103, 104, 105, -1, -1, 108, 109, 59, -1, -1,
- -1, -1, -1, 65, 1, -1, 3, 4, -1, -1,
+ 93, -1, -1, -1, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 45, 46, -1,
+ -1, -1, 50, -1, 1, -1, 3, 4, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
+ -1, -1, -1, -1, 72, -1, -1, -1, 76, -1,
+ -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
+ -1, 89, 90, -1, -1, 93, -1, -1, 45, 46,
+ -1, -1, -1, 50, 102, 103, 104, 105, -1, -1,
+ 108, 109, 59, -1, -1, -1, -1, -1, 65, 1,
+ -1, 3, 4, -1, -1, 72, -1, -1, -1, 76,
+ -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
+ -1, -1, 89, 90, -1, -1, 93, -1, -1, -1,
+ -1, -1, -1, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109, 45, 46, -1, -1, -1, 50, -1,
+ 1, -1, 3, 4, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, -1, -1, -1, -1, -1, -1,
72, -1, -1, -1, 76, -1, -1, -1, -1, -1,
82, -1, -1, 85, 86, -1, -1, 89, 90, -1,
- -1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, 45, 46,
- -1, -1, -1, 50, -1, 1, -1, 3, 4, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, -1,
- -1, -1, -1, -1, -1, 72, -1, -1, -1, 76,
- -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 89, 90, -1, -1, 93, -1, -1, 45,
- 46, -1, -1, -1, 50, 102, 103, 104, 105, -1,
- -1, 108, 109, 59, -1, -1, -1, -1, -1, 65,
- 1, -1, 3, 4, -1, -1, 72, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
- 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
- -1, -1, 108, 109, 45, 46, -1, -1, -1, 50,
- -1, 1, -1, 3, 4, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, 65, -1, -1, -1, -1, -1,
+ -1, 93, -1, -1, 45, 46, -1, -1, -1, 50,
+ 102, 103, 104, 105, -1, -1, 108, 109, 59, -1,
+ -1, -1, -1, -1, 65, 1, -1, 3, 4, -1,
-1, 72, -1, -1, -1, 76, -1, -1, -1, -1,
-1, 82, -1, -1, 85, 86, -1, -1, 89, 90,
- -1, -1, 93, -1, -1, 45, 46, -1, -1, -1,
- 50, 102, 103, 104, 105, -1, -1, 108, 109, 59,
- -1, -1, -1, -1, -1, 65, 1, -1, 3, 4,
- -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
- 90, -1, -1, 93, -1, -1, -1, -1, -1, -1,
- -1, -1, 102, 103, 104, 105, -1, -1, 108, 109,
- 45, 46, -1, -1, -1, 50, -1, 1, -1, 3,
- 4, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- 65, -1, -1, -1, -1, -1, -1, 72, -1, -1,
+ -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
+ -1, 102, 103, 104, 105, -1, -1, 108, 109, 45,
+ 46, -1, -1, -1, 50, -1, 1, -1, 3, 4,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, 65,
+ -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
+ 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
+ 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
+ 45, 46, -1, -1, -1, 50, 102, 103, 104, 105,
+ -1, -1, 108, 109, 59, -1, -1, -1, -1, -1,
+ 65, 1, -1, 3, 4, -1, -1, 72, -1, -1,
-1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
85, 86, -1, -1, 89, 90, -1, -1, 93, -1,
- -1, 45, 46, -1, -1, -1, 50, 102, 103, 104,
- 105, -1, -1, 108, 109, 59, -1, -1, -1, -1,
- -1, 65, 1, -1, 3, 4, -1, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 45, 46, -1, -1, -1,
+ 50, -1, 1, -1, 3, 4, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
+ -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
+ -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, -1, -1, 45, 46, -1, -1,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, 1, -1, 3,
+ 4, -1, -1, 72, -1, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ 89, 90, -1, -1, 93, -1, -1, -1, -1, -1,
+ -1, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, 45, 46, -1, -1, -1, 50, -1, 1, -1,
+ 3, 4, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
-1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
-1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
- -1, -1, -1, -1, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 45, 46, -1, -1,
- -1, 50, -1, 1, -1, 3, 4, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, 65, -1, -1, -1,
- -1, -1, -1, 72, -1, -1, -1, 76, -1, -1,
- -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
- 89, 90, -1, -1, 93, -1, -1, 45, 46, -1,
- -1, -1, 50, 102, 103, 104, 105, -1, -1, 108,
- 109, 59, -1, -1, -1, -1, -1, 65, 1, -1,
- 3, 4, -1, -1, 72, -1, -1, -1, 76, -1,
- -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, 89, 90, -1, -1, 93, -1, -1, -1, -1,
- -1, -1, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, 45, 46, -1, -1, -1, 50, -1, 1,
- -1, 3, 4, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
+ -1, -1, 45, 46, -1, -1, -1, 50, 102, 103,
+ 104, 105, -1, -1, 108, 109, 59, -1, -1, -1,
+ -1, -1, 65, 1, -1, 3, 4, -1, -1, 72,
-1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
-1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
- 93, -1, -1, 45, 46, -1, -1, -1, 50, 102,
- 103, 104, 105, -1, -1, 108, 109, 59, -1, -1,
- -1, -1, -1, 65, 1, -1, 3, 4, -1, -1,
+ 93, -1, -1, -1, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 45, 46, -1,
+ -1, -1, 50, -1, 1, -1, 3, 4, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
+ -1, -1, -1, -1, 72, -1, -1, -1, 76, -1,
+ -1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
+ -1, 89, 90, -1, -1, 93, -1, -1, 45, 46,
+ -1, -1, -1, 50, 102, 103, 104, 105, -1, -1,
+ 108, 109, 59, -1, -1, -1, -1, -1, 65, 1,
+ -1, 3, 4, -1, -1, 72, -1, -1, -1, 76,
+ -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
+ -1, -1, 89, 90, -1, -1, 93, -1, -1, -1,
+ -1, -1, -1, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109, 45, 46, -1, -1, -1, 50, -1,
+ 1, -1, 3, 4, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, -1, -1, -1, -1, -1, -1,
72, -1, -1, -1, 76, -1, -1, -1, -1, -1,
82, -1, -1, 85, 86, -1, -1, 89, 90, -1,
- -1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, 45, 46,
- -1, -1, -1, 50, -1, 1, -1, 3, 4, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, -1,
- -1, -1, -1, -1, -1, 72, -1, -1, -1, 76,
- -1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 89, 90, -1, -1, 93, -1, -1, 45,
- 46, -1, -1, -1, 50, 102, 103, 104, 105, -1,
- -1, 108, 109, 59, -1, -1, -1, -1, -1, 65,
- 1, -1, 3, 4, -1, -1, 72, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
- 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
- -1, -1, 108, 109, 45, 46, -1, -1, -1, 50,
- -1, 1, -1, 3, 4, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, 65, -1, -1, -1, -1, -1,
+ -1, 93, -1, -1, 45, 46, -1, -1, -1, 50,
+ 102, 103, 104, 105, -1, -1, 108, 109, 59, -1,
+ -1, -1, -1, -1, 65, 1, -1, 3, 4, -1,
-1, 72, -1, -1, -1, 76, -1, -1, -1, -1,
-1, 82, -1, -1, 85, 86, -1, -1, 89, 90,
- -1, -1, 93, -1, -1, 45, 46, -1, -1, -1,
- 50, 102, 103, 104, 105, -1, -1, 108, 109, 59,
- -1, -1, -1, -1, -1, 65, 1, -1, 3, 4,
- -1, -1, 72, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
- 90, -1, -1, 93, -1, -1, -1, -1, -1, -1,
- -1, -1, 102, 103, 104, 105, -1, -1, 108, 109,
- 45, 46, -1, -1, -1, 50, -1, 1, -1, 3,
- 4, -1, -1, -1, 59, -1, -1, -1, -1, -1,
- 65, -1, -1, -1, -1, -1, -1, 72, -1, -1,
+ -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
+ -1, 102, 103, 104, 105, -1, -1, 108, 109, 45,
+ 46, -1, -1, -1, 50, -1, 1, -1, 3, 4,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, 65,
+ -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
+ 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
+ 86, -1, -1, 89, 90, -1, -1, 93, -1, -1,
+ 45, 46, -1, -1, -1, 50, 102, 103, 104, 105,
+ -1, -1, 108, 109, 59, -1, -1, -1, -1, -1,
+ 65, 1, -1, 3, 4, -1, -1, 72, -1, -1,
-1, 76, -1, -1, -1, -1, -1, 82, -1, -1,
85, 86, -1, -1, 89, 90, -1, -1, 93, -1,
- -1, 45, 46, -1, -1, -1, 50, 102, 103, 104,
- 105, -1, -1, 108, 109, 59, -1, -1, -1, -1,
- -1, 65, -1, 1, -1, -1, -1, -1, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, 102, 103, 104,
+ 105, -1, -1, 108, 109, 45, 46, -1, -1, -1,
+ 50, -1, 1, -1, -1, -1, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
+ -1, -1, 72, -1, -1, -1, 76, 1, -1, -1,
+ -1, -1, 82, -1, -1, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, -1, 44, 45, 46, -1, -1,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, -1, -1, 1,
+ -1, 45, 46, 72, -1, -1, 50, 76, -1, -1,
+ -1, -1, -1, 82, -1, 59, 85, 86, -1, -1,
+ -1, 65, -1, -1, 93, -1, 3, 4, 72, -1,
+ 99, -1, 76, 102, 103, 104, 105, -1, 82, 108,
+ 109, 85, 86, 45, 46, -1, -1, -1, 50, 93,
+ 94, -1, -1, -1, -1, -1, -1, 59, 102, 103,
+ 104, 105, -1, 65, 108, 109, 1, -1, 45, 46,
+ 72, -1, -1, 50, 76, -1, -1, -1, -1, -1,
+ 82, -1, 59, 85, 86, -1, -1, -1, 65, -1,
+ -1, 93, 94, 3, 4, 72, -1, -1, -1, 76,
+ 102, 103, 104, 105, -1, 82, 108, 109, 85, 86,
+ 45, 46, 89, 90, -1, 50, 93, -1, 95, 96,
+ -1, -1, -1, -1, 59, 102, 103, 104, 105, -1,
+ 65, 108, 109, -1, -1, 45, 46, 72, -1, -1,
+ 50, 76, -1, -1, 3, 4, -1, 82, -1, 59,
+ 85, 86, -1, -1, -1, 65, -1, -1, 93, -1,
+ -1, -1, 72, -1, -1, -1, 76, 102, 103, 104,
+ 105, -1, 82, 108, 109, 85, 86, -1, -1, 89,
+ 90, -1, -1, 93, 94, -1, 45, 46, -1, -1,
+ -1, 50, 102, 103, 104, 105, -1, -1, 108, 109,
+ 59, -1, -1, -1, -1, -1, 65, -1, -1, 3,
+ 4, -1, -1, 72, -1, -1, -1, 76, -1, -1,
+ -1, -1, -1, 82, -1, -1, 85, 86, -1, -1,
+ 89, 90, -1, -1, 93, 94, -1, -1, -1, -1,
+ -1, -1, -1, 102, 103, 104, 105, -1, -1, 108,
+ 109, 45, 46, -1, -1, -1, 50, -1, -1, -1,
+ 3, 4, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, 72, -1,
-1, -1, 76, -1, -1, -1, -1, -1, 82, -1,
- -1, 85, 86, -1, -1, 89, 90, -1, 1, 93,
- -1, -1, -1, -1, -1, -1, -1, -1, 102, 103,
- 104, 105, -1, -1, 108, 109, 44, 45, 46, -1,
+ -1, 85, 86, -1, -1, 89, 90, -1, -1, 93,
+ 94, -1, 45, 46, -1, -1, -1, 50, 102, 103,
+ 104, 105, -1, -1, 108, 109, 59, -1, -1, -1,
+ -1, -1, 65, -1, -1, 3, 4, -1, -1, 72,
+ -1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
+ -1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
+ 93, 94, -1, -1, -1, -1, -1, -1, -1, 102,
+ 103, 104, 105, -1, -1, 108, 109, 45, 46, -1,
-1, -1, 50, -1, -1, -1, -1, -1, -1, -1,
-1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
- 1, -1, 45, 46, 72, -1, -1, 50, 76, -1,
- -1, -1, -1, -1, 82, -1, 59, 85, 86, -1,
- -1, -1, 65, -1, -1, 93, -1, 3, 4, 72,
- -1, 99, -1, 76, 102, 103, 104, 105, -1, 82,
- 108, 109, 85, 86, 45, 46, -1, -1, -1, 50,
- 93, 94, -1, -1, -1, -1, -1, -1, 59, 102,
- 103, 104, 105, -1, 65, 108, 109, 1, -1, 45,
- 46, 72, -1, -1, 50, 76, -1, -1, -1, -1,
- -1, 82, -1, 59, 85, 86, -1, -1, -1, 65,
- -1, -1, 93, 94, 3, 4, 72, -1, -1, -1,
- 76, 102, 103, 104, 105, -1, 82, 108, 109, 85,
- 86, 45, 46, 89, 90, -1, 50, 93, -1, 95,
- 96, -1, -1, -1, -1, 59, 102, 103, 104, 105,
- -1, 65, 108, 109, -1, -1, 45, 46, 72, -1,
- -1, 50, 76, -1, -1, 3, 4, -1, 82, -1,
- 59, 85, 86, -1, -1, -1, 65, -1, -1, 93,
- -1, -1, -1, 72, -1, -1, -1, 76, 102, 103,
- 104, 105, -1, 82, 108, 109, 85, 86, -1, -1,
- 89, 90, -1, -1, 93, 94, -1, 45, 46, -1,
- -1, -1, 50, 102, 103, 104, 105, -1, -1, 108,
- 109, 59, -1, -1, -1, -1, -1, 65, -1, -1,
- 3, 4, -1, -1, 72, -1, -1, -1, 76, -1,
+ -1, -1, -1, -1, 72, -1, -1, -1, 76, -1,
-1, -1, -1, -1, 82, -1, -1, 85, 86, -1,
- -1, 89, 90, -1, -1, 93, 94, -1, -1, -1,
- -1, -1, -1, -1, 102, 103, 104, 105, -1, -1,
- 108, 109, 45, 46, -1, -1, -1, 50, -1, -1,
- -1, 3, 4, -1, -1, -1, 59, -1, -1, -1,
- -1, -1, 65, -1, -1, -1, -1, -1, -1, 72,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, 82,
- -1, -1, 85, 86, -1, -1, 89, 90, -1, -1,
- 93, 94, -1, 45, 46, -1, -1, -1, 50, 102,
- 103, 104, 105, -1, -1, 108, 109, 59, -1, -1,
- -1, -1, -1, 65, -1, -1, 3, 4, -1, -1,
- 72, -1, -1, -1, 76, -1, -1, -1, -1, -1,
- 82, -1, -1, 85, 86, -1, -1, 89, 90, -1,
- -1, 93, 94, -1, -1, -1, -1, -1, -1, -1,
- 102, 103, 104, 105, -1, -1, 108, 109, 45, 46,
- -1, -1, -1, 50, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, -1,
+ -1, 89, 90, -1, -1, 93, -1, 44, 45, 46,
+ -1, -1, -1, 50, 102, 103, 104, 105, -1, -1,
+ 108, 109, 59, -1, -1, -1, -1, -1, 65, -1,
-1, -1, -1, -1, -1, 72, -1, -1, -1, 76,
-1, -1, -1, -1, -1, 82, -1, -1, 85, 86,
- -1, -1, 89, 90, -1, -1, 93, -1, 44, 45,
- 46, -1, -1, -1, 50, 102, 103, 104, 105, -1,
- -1, 108, 109, 59, -1, -1, -1, -1, -1, 65,
- -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, 82, -1, -1, 85,
- 86, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
- -1, -1, 108, 109
+ -1, -1, -1, -1, -1, -1, 93, -1, -1, -1,
+ -1, -1, -1, -1, -1, 102, 103, 104, 105, -1,
+ -1, 108, 109
};
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple"
-/* This file comes from bison-1.27. */
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -2230,66 +2246,46 @@ static const short yycheck[] = { 3,
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. */
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
-/* This is the parser code that is written into each bison parser
- when the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
+#ifndef alloca
#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else /* not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C. */
-/* This used to test MSDOS, but that is a bad idea
- since that symbol is in the user namespace. */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
- instead, just don't use alloca. */
+#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
-#endif
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
- So I turned it off. rms, 2 May 1997. */
-/* #include <malloc.h> */
+#include <malloc.h>
#pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
- and on HPUX 10. Eventually we can turn this on. */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
#endif /* __hpux */
-#endif
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
/* Note: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action
@@ -2299,8 +2295,8 @@ static const short yycheck[] = { 3,
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
+#define YYACCEPT return(0)
+#define YYABORT return(1)
#define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror.
This remains here temporarily to ease the
@@ -2381,12 +2377,12 @@ int yydebug; /* nonzero means print parse trace */
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif
-
-/* Define __yy_memcpy. Note that the size argument
- should be passed with type unsigned int, because that is what the non-GCC
- definitions require. With GCC, __builtin_memcpy takes an arg
- of type size_t, but it can handle unsigned int. */
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
#else /* not GNU C or C++ */
@@ -2398,7 +2394,7 @@ static void
__yy_memcpy (to, from, count)
char *to;
char *from;
- unsigned int count;
+ int count;
{
register char *f = from;
register char *t = to;
@@ -2413,10 +2409,10 @@ __yy_memcpy (to, from, count)
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+__yy_memcpy (char *to, char *from, int count)
{
- register char *t = to;
register char *f = from;
+ register char *t = to;
register int i = count;
while (i-- > 0)
@@ -2426,7 +2422,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#endif
#endif
-#line 216 "/usr/lib/bison.simple"
+#line 196 "/usr/lib/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -2447,15 +2443,6 @@ __yy_memcpy (char *to, char *from, unsigned int count)
#define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
-int yyparse (void);
-#endif
-#endif
-
int
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
@@ -2484,7 +2471,6 @@ yyparse(YYPARSE_PARAM_ARG)
#endif
int yystacksize = YYINITDEPTH;
- int yyfree_stacks = 0;
#ifdef YYPURE
int yychar;
@@ -2569,32 +2555,18 @@ yynewstate:
if (yystacksize >= YYMAXDEPTH)
{
yyerror("parser stack overflow");
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
return 2;
}
yystacksize *= 2;
if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
- yyfree_stacks = 1;
-#endif
- yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
- __yy_memcpy ((char *)yyss, (char *)yyss1,
- size * (unsigned int) sizeof (*yyssp));
- yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
- __yy_memcpy ((char *)yyvs, (char *)yyvs1,
- size * (unsigned int) sizeof (*yyvsp));
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
- yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
- __yy_memcpy ((char *)yyls, (char *)yyls1,
- size * (unsigned int) sizeof (*yylsp));
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */
@@ -2755,66 +2727,66 @@ yyreduce:
switch (yyn) {
case 1:
-#line 460 "./parse.y"
+#line 459 "./parse.y"
{;
break;}
case 18:
-#line 504 "./parse.y"
+#line 503 "./parse.y"
{
yyval.node = build_java_array_type (yyvsp[-2].node, -1);
CLASS_LOADED_P (yyval.node) = 1;
;
break;}
case 19:
-#line 509 "./parse.y"
+#line 508 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 20:
-#line 511 "./parse.y"
+#line 510 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 21:
-#line 513 "./parse.y"
+#line 512 "./parse.y"
{RULE ("']' expected"); RECOVER;;
break;}
case 22:
-#line 515 "./parse.y"
+#line 514 "./parse.y"
{RULE ("']' expected"); RECOVER;;
break;}
case 26:
-#line 530 "./parse.y"
+#line 529 "./parse.y"
{ yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 28:
-#line 539 "./parse.y"
+#line 538 "./parse.y"
{yyval.node = NULL;;
break;}
case 36:
-#line 551 "./parse.y"
+#line 550 "./parse.y"
{
yyval.node = NULL;
;
break;}
case 37:
-#line 555 "./parse.y"
+#line 554 "./parse.y"
{
yyval.node = NULL;
;
break;}
case 40:
-#line 567 "./parse.y"
+#line 566 "./parse.y"
{ ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node); ;
break;}
case 41:
-#line 569 "./parse.y"
+#line 568 "./parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 42:
-#line 571 "./parse.y"
+#line 570 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 45:
-#line 581 "./parse.y"
+#line 580 "./parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-1].node), node, last_name;
int i = IDENTIFIER_LENGTH (name)-1;
@@ -2842,15 +2814,15 @@ case 45:
;
break;}
case 46:
-#line 607 "./parse.y"
+#line 606 "./parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 47:
-#line 609 "./parse.y"
+#line 608 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 48:
-#line 614 "./parse.y"
+#line 613 "./parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-3].node);
/* Don't import java.lang.* twice. */
@@ -2864,15 +2836,15 @@ case 48:
;
break;}
case 49:
-#line 626 "./parse.y"
+#line 625 "./parse.y"
{yyerror ("'*' expected"); RECOVER;;
break;}
case 50:
-#line 628 "./parse.y"
+#line 627 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 51:
-#line 633 "./parse.y"
+#line 632 "./parse.y"
{
maybe_generate_finit ();
maybe_generate_clinit ();
@@ -2880,31 +2852,31 @@ case 51:
;
break;}
case 52:
-#line 639 "./parse.y"
+#line 638 "./parse.y"
{
maybe_generate_clinit ();
yyval.node = yyvsp[0].node;
;
break;}
case 53:
-#line 644 "./parse.y"
+#line 643 "./parse.y"
{ yyval.node = NULL; ;
break;}
case 54:
-#line 646 "./parse.y"
+#line 645 "./parse.y"
{
YYERROR_NOW;
yyerror ("Class or interface declaration expected");
;
break;}
case 55:
-#line 657 "./parse.y"
+#line 656 "./parse.y"
{
yyval.value = (1 << yyvsp[0].value);
;
break;}
case 56:
-#line 661 "./parse.y"
+#line 660 "./parse.y"
{
int acc = (1 << yyvsp[0].value);
if (yyval.value & acc)
@@ -2918,95 +2890,95 @@ case 56:
;
break;}
case 57:
-#line 677 "./parse.y"
+#line 676 "./parse.y"
{ create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 58:
-#line 679 "./parse.y"
+#line 678 "./parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 59:
-#line 683 "./parse.y"
+#line 682 "./parse.y"
{ create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 60:
-#line 685 "./parse.y"
+#line 684 "./parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
case 61:
-#line 689 "./parse.y"
+#line 688 "./parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 62:
-#line 691 "./parse.y"
+#line 690 "./parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 63:
-#line 693 "./parse.y"
+#line 692 "./parse.y"
{
if (!ctxp->class_err) yyerror ("'{' expected");
DRECOVER(class1);
;
break;}
case 64:
-#line 698 "./parse.y"
+#line 697 "./parse.y"
{if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;;
break;}
case 65:
-#line 702 "./parse.y"
+#line 701 "./parse.y"
{ yyval.node = NULL; ;
break;}
case 66:
-#line 704 "./parse.y"
+#line 703 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 67:
-#line 706 "./parse.y"
+#line 705 "./parse.y"
{yyerror ("'{' expected"); ctxp->class_err=1;;
break;}
case 68:
-#line 708 "./parse.y"
+#line 707 "./parse.y"
{yyerror ("Missing super class name"); ctxp->class_err=1;;
break;}
case 69:
-#line 712 "./parse.y"
+#line 711 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 70:
-#line 714 "./parse.y"
+#line 713 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 71:
-#line 716 "./parse.y"
+#line 715 "./parse.y"
{
ctxp->class_err=1;
yyerror ("Missing interface name");
;
break;}
case 72:
-#line 724 "./parse.y"
+#line 723 "./parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 73:
-#line 729 "./parse.y"
+#line 728 "./parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 74:
-#line 734 "./parse.y"
+#line 733 "./parse.y"
{yyerror ("Missing interface name"); RECOVER;;
break;}
case 75:
-#line 739 "./parse.y"
+#line 738 "./parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
@@ -3016,7 +2988,7 @@ case 75:
;
break;}
case 76:
-#line 747 "./parse.y"
+#line 746 "./parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
@@ -3026,27 +2998,27 @@ case 76:
;
break;}
case 82:
-#line 766 "./parse.y"
+#line 765 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("instance initializer"); ;
break;}
case 84:
-#line 772 "./parse.y"
+#line 771 "./parse.y"
{ yyval.node = yyvsp[-1].node; ;
break;}
case 86:
-#line 775 "./parse.y"
+#line 774 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner classe declaration"); ;
break;}
case 87:
-#line 777 "./parse.y"
+#line 776 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner interface declaration"); ;
break;}
case 88:
-#line 783 "./parse.y"
+#line 782 "./parse.y"
{ register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ;
break;}
case 89:
-#line 785 "./parse.y"
+#line 784 "./parse.y"
{
check_modifiers
("Illegal modifier `%s' for field declaration",
@@ -3056,19 +3028,19 @@ case 89:
;
break;}
case 91:
-#line 798 "./parse.y"
+#line 797 "./parse.y"
{ yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 92:
-#line 800 "./parse.y"
+#line 799 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 93:
-#line 805 "./parse.y"
+#line 804 "./parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ;
break;}
case 94:
-#line 807 "./parse.y"
+#line 806 "./parse.y"
{
if (java_error_count)
yyvsp[0].node = NULL_TREE;
@@ -3077,7 +3049,7 @@ case 94:
;
break;}
case 95:
-#line 814 "./parse.y"
+#line 813 "./parse.y"
{
yyerror ("Missing variable initializer");
yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE);
@@ -3085,7 +3057,7 @@ case 95:
;
break;}
case 96:
-#line 820 "./parse.y"
+#line 819 "./parse.y"
{
yyerror ("';' expected");
yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE);
@@ -3093,85 +3065,85 @@ case 96:
;
break;}
case 98:
-#line 830 "./parse.y"
+#line 829 "./parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 99:
-#line 832 "./parse.y"
+#line 831 "./parse.y"
{yyerror ("Invalid declaration"); DRECOVER(vdi);;
break;}
case 100:
-#line 834 "./parse.y"
+#line 833 "./parse.y"
{yyerror ("']' expected"); DRECOVER(vdi);;
break;}
case 101:
-#line 836 "./parse.y"
+#line 835 "./parse.y"
{yyerror ("Unbalanced ']'"); DRECOVER(vdi);;
break;}
case 104:
-#line 847 "./parse.y"
+#line 846 "./parse.y"
{
current_function_decl = yyvsp[0].node;
source_start_java_method (current_function_decl);
;
break;}
case 105:
-#line 852 "./parse.y"
+#line 851 "./parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 106:
-#line 854 "./parse.y"
+#line 853 "./parse.y"
{YYNOT_TWICE yyerror ("'{' expected"); RECOVER;;
break;}
case 107:
-#line 859 "./parse.y"
+#line 858 "./parse.y"
{ yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 108:
-#line 861 "./parse.y"
+#line 860 "./parse.y"
{ yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 109:
-#line 863 "./parse.y"
+#line 862 "./parse.y"
{ yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 110:
-#line 865 "./parse.y"
+#line 864 "./parse.y"
{ yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 111:
-#line 867 "./parse.y"
+#line 866 "./parse.y"
{RECOVER;;
break;}
case 112:
-#line 869 "./parse.y"
+#line 868 "./parse.y"
{RECOVER;;
break;}
case 113:
-#line 871 "./parse.y"
+#line 870 "./parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 114:
-#line 873 "./parse.y"
+#line 872 "./parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 115:
-#line 875 "./parse.y"
+#line 874 "./parse.y"
{
yyerror ("Invalid method declaration, return type required");
RECOVER;
;
break;}
case 116:
-#line 883 "./parse.y"
+#line 882 "./parse.y"
{ yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ;
break;}
case 117:
-#line 885 "./parse.y"
+#line 884 "./parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 118:
-#line 887 "./parse.y"
+#line 886 "./parse.y"
{
EXPR_WFL_LINECOL (wfl_operator) = yyvsp[-1].operator.location;
TREE_PURPOSE (yyvsp[-2].node) =
@@ -3182,316 +3154,313 @@ case 118:
;
break;}
case 119:
-#line 896 "./parse.y"
+#line 895 "./parse.y"
{yyerror ("')' expected"); DRECOVER(method_declarator);;
break;}
case 120:
-#line 898 "./parse.y"
+#line 897 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 121:
-#line 903 "./parse.y"
+#line 902 "./parse.y"
{
ctxp->formal_parameter_number = 1;
;
break;}
case 122:
-#line 907 "./parse.y"
+#line 906 "./parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 123:
-#line 912 "./parse.y"
+#line 911 "./parse.y"
{yyerror ("Missing formal parameter term"); RECOVER;;
break;}
case 124:
-#line 917 "./parse.y"
+#line 916 "./parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
;
break;}
case 125:
-#line 921 "./parse.y"
-{
- parse_jdk1_1_error ("final parameters");
- yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
- ;
+#line 920 "./parse.y"
+{ yyval.node = parse_jdk1_1_error ("final parameters"); ;
break;}
case 126:
-#line 926 "./parse.y"
+#line 922 "./parse.y"
{yyerror ("Missing identifier"); RECOVER;;
break;}
case 127:
-#line 928 "./parse.y"
+#line 924 "./parse.y"
{
SOURCE_FRONTEND_DEBUG (("Modifiers: %d", yyvsp[-2].value));
yyerror ("Missing identifier"); RECOVER;
;
break;}
case 128:
-#line 935 "./parse.y"
+#line 931 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 129:
-#line 937 "./parse.y"
+#line 933 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 130:
-#line 939 "./parse.y"
+#line 935 "./parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 131:
-#line 944 "./parse.y"
+#line 940 "./parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, yyvsp[0].node); ;
break;}
case 132:
-#line 946 "./parse.y"
+#line 942 "./parse.y"
{ yyval.node = tree_cons (yyvsp[0].node, yyvsp[0].node, yyvsp[-2].node); ;
break;}
case 133:
-#line 948 "./parse.y"
+#line 944 "./parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 136:
-#line 955 "./parse.y"
+#line 951 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 137:
-#line 961 "./parse.y"
+#line 957 "./parse.y"
{
TREE_CHAIN (yyvsp[0].node) = ctxp->static_initialized;
ctxp->static_initialized = yyvsp[0].node;
;
break;}
case 138:
-#line 966 "./parse.y"
+#line 962 "./parse.y"
{
TREE_CHAIN (yyvsp[-1].node) = ctxp->static_initialized;
ctxp->static_initialized = yyvsp[-1].node;
;
break;}
case 139:
-#line 974 "./parse.y"
+#line 970 "./parse.y"
{
SOURCE_FRONTEND_DEBUG (("Modifiers: %d", yyvsp[0].value));
;
break;}
case 140:
-#line 982 "./parse.y"
+#line 978 "./parse.y"
{
current_function_decl = yyvsp[0].node;
source_start_java_method (current_function_decl);
;
break;}
case 141:
-#line 987 "./parse.y"
+#line 983 "./parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 142:
-#line 992 "./parse.y"
+#line 988 "./parse.y"
{ yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 143:
-#line 994 "./parse.y"
+#line 990 "./parse.y"
{ yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 144:
-#line 999 "./parse.y"
+#line 995 "./parse.y"
{ yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE); ;
break;}
case 145:
-#line 1001 "./parse.y"
+#line 997 "./parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 146:
-#line 1009 "./parse.y"
+#line 1005 "./parse.y"
{
BLOCK_EXPR_BODY (yyvsp[0].node) = empty_stmt_node;
yyval.node = yyvsp[0].node;
;
break;}
case 147:
-#line 1014 "./parse.y"
+#line 1010 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 148:
-#line 1016 "./parse.y"
+#line 1012 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 149:
-#line 1018 "./parse.y"
+#line 1014 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
-case 152:
-#line 1028 "./parse.y"
+case 150:
+#line 1020 "./parse.y"
{
yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node);
yyval.node = java_method_add_stmt (current_function_decl, yyval.node);
;
break;}
-case 153:
-#line 1034 "./parse.y"
+case 151:
+#line 1026 "./parse.y"
{
yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node);
yyval.node = java_method_add_stmt (current_function_decl, yyval.node);
;
break;}
-case 154:
-#line 1042 "./parse.y"
+case 152:
+#line 1034 "./parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
-case 155:
-#line 1044 "./parse.y"
+case 153:
+#line 1036 "./parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
-case 156:
-#line 1049 "./parse.y"
+case 154:
+#line 1041 "./parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
yyval.node = wfl;
;
break;}
-case 157:
-#line 1055 "./parse.y"
+case 155:
+#line 1047 "./parse.y"
{
tree wfl = build_wfl_node (super_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
yyval.node = wfl;
;
break;}
-case 158:
-#line 1066 "./parse.y"
+case 156:
+#line 1058 "./parse.y"
{ create_interface (0, yyvsp[0].node, NULL_TREE); ;
break;}
-case 159:
-#line 1068 "./parse.y"
+case 157:
+#line 1060 "./parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
-case 160:
-#line 1072 "./parse.y"
+case 158:
+#line 1064 "./parse.y"
{ create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ;
break;}
-case 161:
-#line 1074 "./parse.y"
+case 159:
+#line 1066 "./parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
-case 162:
-#line 1078 "./parse.y"
+case 160:
+#line 1070 "./parse.y"
{ create_interface (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 163:
-#line 1080 "./parse.y"
+case 161:
+#line 1072 "./parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
-case 164:
-#line 1084 "./parse.y"
+case 162:
+#line 1076 "./parse.y"
{ create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 165:
-#line 1086 "./parse.y"
+case 163:
+#line 1078 "./parse.y"
{
yyval.node = yyvsp[0].node;
;
break;}
-case 166:
-#line 1090 "./parse.y"
+case 164:
+#line 1082 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
-case 167:
-#line 1092 "./parse.y"
+case 165:
+#line 1084 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
-case 168:
-#line 1097 "./parse.y"
+case 166:
+#line 1089 "./parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
-case 169:
-#line 1102 "./parse.y"
+case 167:
+#line 1094 "./parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
-case 170:
-#line 1107 "./parse.y"
+case 168:
+#line 1099 "./parse.y"
{yyerror ("Invalid interface type"); RECOVER;;
break;}
-case 171:
-#line 1109 "./parse.y"
+case 169:
+#line 1101 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 172:
-#line 1114 "./parse.y"
+case 170:
+#line 1106 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
-case 173:
-#line 1116 "./parse.y"
+case 171:
+#line 1108 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
-case 178:
-#line 1128 "./parse.y"
+case 176:
+#line 1120 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner class declaration"); ;
break;}
-case 179:
-#line 1130 "./parse.y"
+case 177:
+#line 1122 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner interface declaration"); ;
break;}
-case 181:
-#line 1139 "./parse.y"
+case 179:
+#line 1131 "./parse.y"
{
check_abstract_method_header (yyvsp[-1].node);
current_function_decl = NULL_TREE; /* FIXME ? */
;
break;}
-case 182:
-#line 1144 "./parse.y"
+case 180:
+#line 1136 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 183:
-#line 1150 "./parse.y"
+case 181:
+#line 1142 "./parse.y"
{ yyval.node = build_new_array_init (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
-case 184:
-#line 1152 "./parse.y"
+case 182:
+#line 1144 "./parse.y"
{ yyval.node = build_new_array_init (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
-case 185:
-#line 1154 "./parse.y"
+case 183:
+#line 1146 "./parse.y"
{ yyval.node = build_new_array_init (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
-case 186:
-#line 1159 "./parse.y"
+case 184:
+#line 1151 "./parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node),
yyvsp[0].node, NULL_TREE);
;
break;}
-case 187:
-#line 1164 "./parse.y"
+case 185:
+#line 1156 "./parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, yyvsp[-2].node);
;
break;}
-case 188:
-#line 1168 "./parse.y"
+case 186:
+#line 1160 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 189:
-#line 1174 "./parse.y"
+case 187:
+#line 1166 "./parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (current_function_decl && flag_emit_xref)
@@ -3500,16 +3469,16 @@ case 189:
yyval.node = empty_stmt_node;
;
break;}
-case 190:
-#line 1182 "./parse.y"
+case 188:
+#line 1174 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
-case 191:
-#line 1187 "./parse.y"
+case 189:
+#line 1179 "./parse.y"
{ enter_block (); ;
break;}
-case 192:
-#line 1192 "./parse.y"
+case 190:
+#line 1184 "./parse.y"
{
maybe_absorb_scoping_blocks ();
/* Store the location of the `}' when doing xrefs */
@@ -3519,36 +3488,32 @@ case 192:
yyval.node = exit_block ();
;
break;}
-case 196:
-#line 1210 "./parse.y"
+case 194:
+#line 1202 "./parse.y"
{ java_method_add_stmt (current_function_decl, yyvsp[0].node); ;
break;}
-case 197:
-#line 1212 "./parse.y"
+case 195:
+#line 1204 "./parse.y"
{ parse_jdk1_1_error ("inner class declaration"); ;
break;}
-case 199:
-#line 1221 "./parse.y"
+case 197:
+#line 1213 "./parse.y"
{ declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 200:
-#line 1223 "./parse.y"
+case 198:
+#line 1215 "./parse.y"
{ declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 206:
-#line 1233 "./parse.y"
+case 204:
+#line 1225 "./parse.y"
{ yyval.node = exit_block (); ;
break;}
-case 211:
-#line 1242 "./parse.y"
-{ yyval.node = exit_block (); ;
- break;}
-case 223:
-#line 1261 "./parse.y"
+case 221:
+#line 1252 "./parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
-case 224:
-#line 1266 "./parse.y"
+case 222:
+#line 1257 "./parse.y"
{
yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node),
EXPR_WFL_NODE (yyvsp[-1].node));
@@ -3557,20 +3522,20 @@ case 224:
PUSH_LABELED_BLOCK (yyval.node);
;
break;}
-case 225:
-#line 1277 "./parse.y"
+case 223:
+#line 1268 "./parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 226:
-#line 1279 "./parse.y"
+case 224:
+#line 1270 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
-case 227:
-#line 1284 "./parse.y"
+case 225:
+#line 1275 "./parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 228:
-#line 1291 "./parse.y"
+case 226:
+#line 1282 "./parse.y"
{
/* We have a statement. Generate a WFL around it so
we can debug it */
@@ -3580,109 +3545,109 @@ case 228:
yyval.node = JAVA_MAYBE_GENERATE_DEBUG_INFO (yyval.node);
;
break;}
-case 229:
-#line 1300 "./parse.y"
+case 227:
+#line 1291 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
-case 230:
-#line 1306 "./parse.y"
+case 228:
+#line 1297 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
-case 231:
-#line 1312 "./parse.y"
+case 229:
+#line 1303 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
-case 232:
-#line 1318 "./parse.y"
+case 230:
+#line 1309 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 233:
-#line 1320 "./parse.y"
+case 231:
+#line 1311 "./parse.y"
{
yyerror ("Constructor invocation must be first "
"thing in a constructor");
RECOVER;
;
break;}
-case 234:
-#line 1326 "./parse.y"
+case 232:
+#line 1317 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 235:
-#line 1328 "./parse.y"
+case 233:
+#line 1319 "./parse.y"
{
yyerror ("Constructor invocation must be first "
"thing in a constructor");
RECOVER;
;
break;}
-case 236:
-#line 1334 "./parse.y"
+case 234:
+#line 1325 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 237:
-#line 1336 "./parse.y"
+case 235:
+#line 1327 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 238:
-#line 1338 "./parse.y"
+case 236:
+#line 1329 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 239:
-#line 1340 "./parse.y"
+case 237:
+#line 1331 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 240:
-#line 1342 "./parse.y"
+case 238:
+#line 1333 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 248:
-#line 1357 "./parse.y"
+case 246:
+#line 1348 "./parse.y"
{
yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node,
yyvsp[0].node, NULL_TREE);
;
break;}
-case 249:
-#line 1362 "./parse.y"
+case 247:
+#line 1353 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 250:
-#line 1364 "./parse.y"
+case 248:
+#line 1355 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 251:
-#line 1366 "./parse.y"
+case 249:
+#line 1357 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 252:
-#line 1371 "./parse.y"
+case 250:
+#line 1362 "./parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 253:
-#line 1376 "./parse.y"
+case 251:
+#line 1367 "./parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 254:
-#line 1381 "./parse.y"
+case 252:
+#line 1372 "./parse.y"
{
enter_block ();
;
break;}
-case 255:
-#line 1385 "./parse.y"
+case 253:
+#line 1376 "./parse.y"
{
/* Make into "proper list" of COMPOUND_EXPRs.
I.e. make the last statment also have its own
@@ -3692,113 +3657,113 @@ case 255:
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-2].node), yyvsp[-2].node);
;
break;}
-case 256:
-#line 1397 "./parse.y"
+case 254:
+#line 1388 "./parse.y"
{
yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
-case 257:
-#line 1402 "./parse.y"
+case 255:
+#line 1393 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 258:
-#line 1404 "./parse.y"
+case 256:
+#line 1395 "./parse.y"
{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
break;}
-case 259:
-#line 1406 "./parse.y"
+case 257:
+#line 1397 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
-case 260:
-#line 1414 "./parse.y"
+case 258:
+#line 1405 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
-case 261:
-#line 1416 "./parse.y"
+case 259:
+#line 1407 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
-case 262:
-#line 1418 "./parse.y"
+case 260:
+#line 1409 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
-case 263:
-#line 1420 "./parse.y"
+case 261:
+#line 1411 "./parse.y"
{ yyval.node = NULL_TREE; ;
break;}
-case 269:
-#line 1439 "./parse.y"
+case 267:
+#line 1430 "./parse.y"
{
tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location;
java_method_add_stmt (current_function_decl, lab);
;
break;}
-case 270:
-#line 1445 "./parse.y"
+case 268:
+#line 1436 "./parse.y"
{
tree lab = build1 (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location;
java_method_add_stmt (current_function_decl, lab);
;
break;}
-case 271:
-#line 1451 "./parse.y"
+case 269:
+#line 1442 "./parse.y"
{yyerror ("Missing or invalid constant expression"); RECOVER;;
break;}
-case 272:
-#line 1453 "./parse.y"
+case 270:
+#line 1444 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
-case 273:
-#line 1455 "./parse.y"
+case 271:
+#line 1446 "./parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
-case 274:
-#line 1460 "./parse.y"
+case 272:
+#line 1451 "./parse.y"
{
tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);
yyval.node = build_new_loop (body);
;
break;}
-case 275:
-#line 1468 "./parse.y"
+case 273:
+#line 1459 "./parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
-case 276:
-#line 1470 "./parse.y"
+case 274:
+#line 1461 "./parse.y"
{YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;
break;}
-case 277:
-#line 1472 "./parse.y"
+case 275:
+#line 1463 "./parse.y"
{yyerror ("Missing term and ')' expected"); RECOVER;;
break;}
-case 278:
-#line 1474 "./parse.y"
+case 276:
+#line 1465 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 279:
-#line 1479 "./parse.y"
+case 277:
+#line 1470 "./parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
-case 280:
-#line 1484 "./parse.y"
+case 278:
+#line 1475 "./parse.y"
{
tree body = build_loop_body (0, NULL_TREE, 1);
yyval.node = build_new_loop (body);
;
break;}
-case 281:
-#line 1493 "./parse.y"
+case 279:
+#line 1484 "./parse.y"
{ yyval.node = finish_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;
break;}
-case 282:
-#line 1498 "./parse.y"
+case 280:
+#line 1489 "./parse.y"
{ yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 283:
-#line 1500 "./parse.y"
+case 281:
+#line 1491 "./parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
@@ -3806,24 +3771,24 @@ case 283:
empty_stmt_node;
;
break;}
-case 284:
-#line 1507 "./parse.y"
+case 282:
+#line 1498 "./parse.y"
{yyerror ("Invalid control expression"); RECOVER;;
break;}
-case 285:
-#line 1509 "./parse.y"
+case 283:
+#line 1500 "./parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
-case 286:
-#line 1511 "./parse.y"
+case 284:
+#line 1502 "./parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
-case 287:
-#line 1516 "./parse.y"
+case 285:
+#line 1507 "./parse.y"
{ yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
break;}
-case 288:
-#line 1518 "./parse.y"
+case 286:
+#line 1509 "./parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
@@ -3831,24 +3796,24 @@ case 288:
empty_stmt_node;
;
break;}
-case 289:
-#line 1528 "./parse.y"
+case 287:
+#line 1519 "./parse.y"
{
/* This scope defined for local variable that may be
defined within the scope of the for loop */
enter_block ();
;
break;}
-case 290:
-#line 1534 "./parse.y"
+case 288:
+#line 1525 "./parse.y"
{yyerror ("'(' expected"); DRECOVER(for_1);;
break;}
-case 291:
-#line 1536 "./parse.y"
+case 289:
+#line 1527 "./parse.y"
{yyerror ("Invalid init statement"); RECOVER;;
break;}
-case 292:
-#line 1541 "./parse.y"
+case 290:
+#line 1532 "./parse.y"
{
/* We now declare the loop body. The loop is
declared as a for loop. */
@@ -3860,180 +3825,180 @@ case 292:
java_method_add_stmt (current_function_decl, yyval.node);
;
break;}
-case 293:
-#line 1553 "./parse.y"
+case 291:
+#line 1544 "./parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
-case 294:
-#line 1555 "./parse.y"
+case 292:
+#line 1546 "./parse.y"
{
/* Init statement recorded within the previously
defined block scope */
yyval.node = java_method_add_stmt (current_function_decl, yyvsp[0].node);
;
break;}
-case 295:
-#line 1561 "./parse.y"
+case 293:
+#line 1552 "./parse.y"
{
/* Local variable are recorded within the previously
defined block scope */
yyval.node = NULL_TREE;
;
break;}
-case 296:
-#line 1567 "./parse.y"
+case 294:
+#line 1558 "./parse.y"
{yyerror ("';' expected"); DRECOVER(for_init_1);;
break;}
-case 297:
-#line 1571 "./parse.y"
+case 295:
+#line 1562 "./parse.y"
{yyval.node = empty_stmt_node;;
break;}
-case 298:
-#line 1573 "./parse.y"
+case 296:
+#line 1564 "./parse.y"
{ yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;
break;}
-case 299:
-#line 1578 "./parse.y"
+case 297:
+#line 1569 "./parse.y"
{ yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;
break;}
-case 300:
-#line 1580 "./parse.y"
+case 298:
+#line 1571 "./parse.y"
{ yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;
break;}
-case 301:
-#line 1582 "./parse.y"
+case 299:
+#line 1573 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 302:
-#line 1587 "./parse.y"
+case 300:
+#line 1578 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;
break;}
-case 303:
-#line 1589 "./parse.y"
+case 301:
+#line 1580 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;
break;}
-case 304:
-#line 1591 "./parse.y"
+case 302:
+#line 1582 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 305:
-#line 1593 "./parse.y"
+case 303:
+#line 1584 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 306:
-#line 1598 "./parse.y"
+case 304:
+#line 1589 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;
break;}
-case 307:
-#line 1600 "./parse.y"
+case 305:
+#line 1591 "./parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;
break;}
-case 308:
-#line 1602 "./parse.y"
+case 306:
+#line 1593 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 309:
-#line 1604 "./parse.y"
+case 307:
+#line 1595 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 310:
-#line 1609 "./parse.y"
+case 308:
+#line 1600 "./parse.y"
{ yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
-case 311:
-#line 1611 "./parse.y"
+case 309:
+#line 1602 "./parse.y"
{ yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
-case 312:
-#line 1613 "./parse.y"
+case 310:
+#line 1604 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 313:
-#line 1615 "./parse.y"
+case 311:
+#line 1606 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 314:
-#line 1620 "./parse.y"
+case 312:
+#line 1611 "./parse.y"
{
yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
-case 315:
-#line 1625 "./parse.y"
+case 313:
+#line 1616 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 316:
-#line 1627 "./parse.y"
+case 314:
+#line 1618 "./parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
-case 317:
-#line 1632 "./parse.y"
+case 315:
+#line 1623 "./parse.y"
{
yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) =
EXPR_WFL_LINECOL (MODIFIER_WFL (SYNCHRONIZED_TK));
;
break;}
-case 318:
-#line 1638 "./parse.y"
+case 316:
+#line 1629 "./parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
-case 319:
-#line 1640 "./parse.y"
+case 317:
+#line 1631 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 320:
-#line 1642 "./parse.y"
+case 318:
+#line 1633 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 321:
-#line 1644 "./parse.y"
+case 319:
+#line 1635 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 322:
-#line 1649 "./parse.y"
+case 320:
+#line 1640 "./parse.y"
{
if ((1 << yyvsp[0].value) != ACC_SYNCHRONIZED)
fatal ("synchronized was '%d' - yyparse", (1 << yyvsp[0].value));
;
break;}
-case 323:
-#line 1657 "./parse.y"
+case 321:
+#line 1648 "./parse.y"
{ yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 324:
-#line 1659 "./parse.y"
+case 322:
+#line 1650 "./parse.y"
{ yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
-case 325:
-#line 1661 "./parse.y"
+case 323:
+#line 1652 "./parse.y"
{ yyval.node = build_try_finally_statement
(yyvsp[-3].operator.location, build_try_statement (yyvsp[-3].operator.location,
yyvsp[-2].node, yyvsp[-1].node), yyvsp[0].node);
;
break;}
-case 326:
-#line 1666 "./parse.y"
+case 324:
+#line 1657 "./parse.y"
{yyerror ("'{' expected"); DRECOVER (try_statement);;
break;}
-case 328:
-#line 1672 "./parse.y"
+case 326:
+#line 1663 "./parse.y"
{
TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
yyval.node = yyvsp[0].node;
;
break;}
-case 329:
-#line 1680 "./parse.y"
+case 327:
+#line 1671 "./parse.y"
{
java_method_add_stmt (current_function_decl, yyvsp[0].node);
exit_block ();
yyval.node = yyvsp[-1].node;
;
break;}
-case 330:
-#line 1688 "./parse.y"
+case 328:
+#line 1679 "./parse.y"
{
/* We add a block to define a scope for
formal_parameter (CCBP). The formal parameter is
@@ -4050,185 +4015,185 @@ case 330:
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;
;
break;}
-case 331:
-#line 1704 "./parse.y"
+case 329:
+#line 1695 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 332:
-#line 1706 "./parse.y"
+case 330:
+#line 1697 "./parse.y"
{yyerror ("Missing term or ')' expected"); DRECOVER (2);;
break;}
-case 333:
-#line 1708 "./parse.y"
+case 331:
+#line 1699 "./parse.y"
{yyerror ("')' expected"); DRECOVER (1);;
break;}
-case 334:
-#line 1713 "./parse.y"
+case 332:
+#line 1704 "./parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
-case 335:
-#line 1715 "./parse.y"
+case 333:
+#line 1706 "./parse.y"
{yyerror ("'{' expected"); RECOVER; ;
break;}
-case 339:
-#line 1727 "./parse.y"
+case 337:
+#line 1718 "./parse.y"
{ yyval.node = build_this (yyvsp[0].operator.location); ;
break;}
-case 340:
-#line 1729 "./parse.y"
+case 338:
+#line 1720 "./parse.y"
{yyval.node = yyvsp[-1].node;;
break;}
-case 345:
-#line 1738 "./parse.y"
+case 343:
+#line 1729 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("named class literals"); ;
break;}
-case 346:
-#line 1740 "./parse.y"
+case 344:
+#line 1731 "./parse.y"
{ yyval.node = build_class_ref (yyvsp[-2].node); ;
break;}
-case 347:
-#line 1742 "./parse.y"
+case 345:
+#line 1733 "./parse.y"
{ yyval.node = build_class_ref (void_type_node); ;
break;}
-case 348:
-#line 1747 "./parse.y"
+case 346:
+#line 1738 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("class literals"); ;
break;}
-case 349:
-#line 1749 "./parse.y"
+case 347:
+#line 1740 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 350:
-#line 1751 "./parse.y"
+case 348:
+#line 1742 "./parse.y"
{yyerror ("'class' or 'this' expected" ); RECOVER;;
break;}
-case 351:
-#line 1753 "./parse.y"
+case 349:
+#line 1744 "./parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
-case 352:
-#line 1755 "./parse.y"
+case 350:
+#line 1746 "./parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
-case 353:
-#line 1760 "./parse.y"
+case 351:
+#line 1751 "./parse.y"
{ yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
-case 354:
-#line 1762 "./parse.y"
+case 352:
+#line 1753 "./parse.y"
{ yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
-case 355:
-#line 1767 "./parse.y"
+case 353:
+#line 1758 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;
break;}
-case 356:
-#line 1769 "./parse.y"
+case 354:
+#line 1760 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("inner class instance creation"); ;
break;}
-case 361:
-#line 1778 "./parse.y"
+case 359:
+#line 1769 "./parse.y"
{yyerror ("'(' expected"); DRECOVER(new_1);;
break;}
-case 362:
-#line 1780 "./parse.y"
+case 360:
+#line 1771 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 363:
-#line 1782 "./parse.y"
+case 361:
+#line 1773 "./parse.y"
{yyerror ("')' or term expected"); RECOVER;;
break;}
-case 364:
-#line 1784 "./parse.y"
+case 362:
+#line 1775 "./parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
-case 365:
-#line 1786 "./parse.y"
+case 363:
+#line 1777 "./parse.y"
{YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;
break;}
-case 366:
-#line 1788 "./parse.y"
+case 364:
+#line 1779 "./parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
-case 369:
-#line 1798 "./parse.y"
+case 367:
+#line 1789 "./parse.y"
{
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);
ctxp->formal_parameter_number = 1;
;
break;}
-case 370:
-#line 1803 "./parse.y"
+case 368:
+#line 1794 "./parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);
;
break;}
-case 371:
-#line 1808 "./parse.y"
+case 369:
+#line 1799 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 372:
-#line 1813 "./parse.y"
+case 370:
+#line 1804 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
-case 373:
-#line 1815 "./parse.y"
+case 371:
+#line 1806 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
-case 374:
-#line 1817 "./parse.y"
+case 372:
+#line 1808 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));;
break;}
-case 375:
-#line 1819 "./parse.y"
+case 373:
+#line 1810 "./parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, CURRENT_OSB (ctxp));;
break;}
-case 376:
-#line 1823 "./parse.y"
+case 374:
+#line 1814 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("anonymous array"); ;
break;}
-case 377:
-#line 1825 "./parse.y"
+case 375:
+#line 1816 "./parse.y"
{ yyval.node = parse_jdk1_1_error ("anonymous array"); ;
break;}
-case 378:
-#line 1827 "./parse.y"
+case 376:
+#line 1818 "./parse.y"
{yyerror ("'[' expected"); DRECOVER ("]");;
break;}
-case 379:
-#line 1829 "./parse.y"
+case 377:
+#line 1820 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
-case 380:
-#line 1834 "./parse.y"
+case 378:
+#line 1825 "./parse.y"
{ yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
break;}
-case 381:
-#line 1836 "./parse.y"
+case 379:
+#line 1827 "./parse.y"
{ yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;
break;}
-case 382:
-#line 1841 "./parse.y"
+case 380:
+#line 1832 "./parse.y"
{
EXPR_WFL_LINECOL (yyvsp[-1].node) = yyvsp[-2].operator.location;
yyval.node = yyvsp[-1].node;
;
break;}
-case 383:
-#line 1846 "./parse.y"
+case 381:
+#line 1837 "./parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
-case 384:
-#line 1848 "./parse.y"
+case 382:
+#line 1839 "./parse.y"
{
yyerror ("Missing term");
yyerror ("']' expected");
RECOVER;
;
break;}
-case 385:
-#line 1857 "./parse.y"
+case 383:
+#line 1848 "./parse.y"
{
int allocate = 0;
/* If not initialized, allocate memory for the osb
@@ -4255,20 +4220,20 @@ case 385:
CURRENT_OSB (ctxp) = 1;
;
break;}
-case 386:
-#line 1883 "./parse.y"
+case 384:
+#line 1874 "./parse.y"
{ CURRENT_OSB (ctxp)++; ;
break;}
-case 387:
-#line 1885 "./parse.y"
+case 385:
+#line 1876 "./parse.y"
{ yyerror ("']' expected"); RECOVER;;
break;}
-case 388:
-#line 1890 "./parse.y"
+case 386:
+#line 1881 "./parse.y"
{ yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
-case 389:
-#line 1894 "./parse.y"
+case 387:
+#line 1885 "./parse.y"
{
tree super_wfl =
build_wfl_node (super_identifier_node);
@@ -4276,20 +4241,20 @@ case 389:
yyval.node = make_qualified_name (super_wfl, yyvsp[0].node, yyvsp[-1].operator.location);
;
break;}
-case 390:
-#line 1901 "./parse.y"
+case 388:
+#line 1892 "./parse.y"
{yyerror ("Field expected"); DRECOVER (super_field_acces);;
break;}
-case 391:
-#line 1906 "./parse.y"
+case 389:
+#line 1897 "./parse.y"
{ yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
-case 392:
-#line 1908 "./parse.y"
+case 390:
+#line 1899 "./parse.y"
{ yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
-case 393:
-#line 1910 "./parse.y"
+case 391:
+#line 1901 "./parse.y"
{
if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
@@ -4301,8 +4266,8 @@ case 393:
}
;
break;}
-case 394:
-#line 1921 "./parse.y"
+case 392:
+#line 1912 "./parse.y"
{
if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
@@ -4314,122 +4279,122 @@ case 394:
}
;
break;}
-case 395:
-#line 1932 "./parse.y"
+case 393:
+#line 1923 "./parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location);
;
break;}
-case 396:
-#line 1937 "./parse.y"
+case 394:
+#line 1928 "./parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location);
;
break;}
-case 397:
-#line 1946 "./parse.y"
+case 395:
+#line 1937 "./parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
-case 398:
-#line 1948 "./parse.y"
+case 396:
+#line 1939 "./parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
-case 399:
-#line 1953 "./parse.y"
+case 397:
+#line 1944 "./parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
-case 400:
-#line 1955 "./parse.y"
+case 398:
+#line 1946 "./parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
-case 401:
-#line 1957 "./parse.y"
+case 399:
+#line 1948 "./parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
-case 402:
-#line 1962 "./parse.y"
+case 400:
+#line 1953 "./parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
-case 403:
-#line 1967 "./parse.y"
+case 401:
+#line 1958 "./parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
-case 404:
-#line 1972 "./parse.y"
+case 402:
+#line 1963 "./parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
-case 409:
-#line 1987 "./parse.y"
+case 407:
+#line 1978 "./parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
-case 410:
-#line 1992 "./parse.y"
+case 408:
+#line 1983 "./parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
-case 413:
-#line 1999 "./parse.y"
+case 411:
+#line 1990 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
-case 414:
-#line 2001 "./parse.y"
+case 412:
+#line 1992 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
-case 416:
-#line 2004 "./parse.y"
+case 414:
+#line 1995 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
-case 417:
-#line 2006 "./parse.y"
+case 415:
+#line 1997 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
-case 418:
-#line 2011 "./parse.y"
+case 416:
+#line 2002 "./parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
-case 419:
-#line 2013 "./parse.y"
+case 417:
+#line 2004 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
-case 420:
-#line 2018 "./parse.y"
+case 418:
+#line 2009 "./parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
-case 421:
-#line 2020 "./parse.y"
+case 419:
+#line 2011 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
-case 423:
-#line 2026 "./parse.y"
+case 421:
+#line 2017 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
-case 424:
-#line 2028 "./parse.y"
+case 422:
+#line 2019 "./parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
-case 426:
-#line 2031 "./parse.y"
+case 424:
+#line 2022 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
-case 427:
-#line 2033 "./parse.y"
+case 425:
+#line 2024 "./parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
-case 428:
-#line 2038 "./parse.y"
+case 426:
+#line 2029 "./parse.y"
{
tree type = yyvsp[-3].node;
while (CURRENT_OSB (ctxp)--)
@@ -4438,16 +4403,16 @@ case 428:
yyval.node = build_cast (yyvsp[-4].operator.location, type, yyvsp[0].node);
;
break;}
-case 429:
-#line 2046 "./parse.y"
+case 427:
+#line 2037 "./parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 430:
-#line 2048 "./parse.y"
+case 428:
+#line 2039 "./parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 431:
-#line 2050 "./parse.y"
+case 429:
+#line 2041 "./parse.y"
{
char *ptr;
while (CURRENT_OSB (ctxp)--)
@@ -4461,276 +4426,276 @@ case 431:
yyval.node = build_cast (yyvsp[-4].operator.location, yyvsp[-3].node, yyvsp[0].node);
;
break;}
-case 432:
-#line 2063 "./parse.y"
+case 430:
+#line 2054 "./parse.y"
{yyerror ("']' expected, invalid type expression");;
break;}
-case 433:
-#line 2065 "./parse.y"
+case 431:
+#line 2056 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Invalid type expression"); RECOVER;
RECOVER;
;
break;}
-case 434:
-#line 2071 "./parse.y"
+case 432:
+#line 2062 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 435:
-#line 2073 "./parse.y"
+case 433:
+#line 2064 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 436:
-#line 2075 "./parse.y"
+case 434:
+#line 2066 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 438:
-#line 2081 "./parse.y"
+case 436:
+#line 2072 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token),
yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 439:
-#line 2086 "./parse.y"
+case 437:
+#line 2077 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 440:
-#line 2091 "./parse.y"
+case 438:
+#line 2082 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 441:
-#line 2096 "./parse.y"
+case 439:
+#line 2087 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 442:
-#line 2098 "./parse.y"
+case 440:
+#line 2089 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 443:
-#line 2100 "./parse.y"
+case 441:
+#line 2091 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 445:
-#line 2106 "./parse.y"
+case 443:
+#line 2097 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 446:
-#line 2111 "./parse.y"
+case 444:
+#line 2102 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 447:
-#line 2116 "./parse.y"
+case 445:
+#line 2107 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 448:
-#line 2118 "./parse.y"
+case 446:
+#line 2109 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 450:
-#line 2124 "./parse.y"
+case 448:
+#line 2115 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 451:
-#line 2129 "./parse.y"
+case 449:
+#line 2120 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 452:
-#line 2134 "./parse.y"
+case 450:
+#line 2125 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 453:
-#line 2139 "./parse.y"
+case 451:
+#line 2130 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 454:
-#line 2141 "./parse.y"
+case 452:
+#line 2132 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 455:
-#line 2143 "./parse.y"
+case 453:
+#line 2134 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 457:
-#line 2149 "./parse.y"
+case 455:
+#line 2140 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 458:
-#line 2154 "./parse.y"
+case 456:
+#line 2145 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 459:
-#line 2159 "./parse.y"
+case 457:
+#line 2150 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 460:
-#line 2164 "./parse.y"
+case 458:
+#line 2155 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 461:
-#line 2169 "./parse.y"
+case 459:
+#line 2160 "./parse.y"
{ yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 462:
-#line 2171 "./parse.y"
+case 460:
+#line 2162 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 463:
-#line 2173 "./parse.y"
+case 461:
+#line 2164 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 464:
-#line 2175 "./parse.y"
+case 462:
+#line 2166 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 465:
-#line 2177 "./parse.y"
+case 463:
+#line 2168 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 466:
-#line 2179 "./parse.y"
+case 464:
+#line 2170 "./parse.y"
{yyerror ("Invalid reference type"); RECOVER;;
break;}
-case 468:
-#line 2185 "./parse.y"
+case 466:
+#line 2176 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 469:
-#line 2190 "./parse.y"
+case 467:
+#line 2181 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 470:
-#line 2195 "./parse.y"
+case 468:
+#line 2186 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 471:
-#line 2197 "./parse.y"
+case 469:
+#line 2188 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 473:
-#line 2203 "./parse.y"
+case 471:
+#line 2194 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 474:
-#line 2208 "./parse.y"
+case 472:
+#line 2199 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 476:
-#line 2214 "./parse.y"
+case 474:
+#line 2205 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 477:
-#line 2219 "./parse.y"
+case 475:
+#line 2210 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 479:
-#line 2225 "./parse.y"
+case 477:
+#line 2216 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 480:
-#line 2230 "./parse.y"
+case 478:
+#line 2221 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 482:
-#line 2236 "./parse.y"
+case 480:
+#line 2227 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 483:
-#line 2241 "./parse.y"
+case 481:
+#line 2232 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 485:
-#line 2247 "./parse.y"
+case 483:
+#line 2238 "./parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
-case 486:
-#line 2252 "./parse.y"
+case 484:
+#line 2243 "./parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
-case 488:
-#line 2258 "./parse.y"
+case 486:
+#line 2249 "./parse.y"
{
yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;
;
break;}
-case 489:
-#line 2263 "./parse.y"
+case 487:
+#line 2254 "./parse.y"
{
YYERROR_NOW;
yyerror ("Missing term");
DRECOVER (1);
;
break;}
-case 490:
-#line 2269 "./parse.y"
+case 488:
+#line 2260 "./parse.y"
{yyerror ("Missing term"); DRECOVER (2);;
break;}
-case 491:
-#line 2271 "./parse.y"
+case 489:
+#line 2262 "./parse.y"
{yyerror ("Missing term"); DRECOVER (3);;
break;}
-case 494:
-#line 2281 "./parse.y"
+case 492:
+#line 2272 "./parse.y"
{ yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
-case 495:
-#line 2283 "./parse.y"
+case 493:
+#line 2274 "./parse.y"
{
if (ctxp->prevent_ese != lineno)
yyerror ("Missing term");
@@ -4739,7 +4704,7 @@ case 495:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 542 "/usr/lib/bison.simple"
+#line 498 "/usr/lib/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -4934,32 +4899,8 @@ yyerrhandle:
yystate = yyn;
goto yynewstate;
-
- yyacceptlab:
- /* YYACCEPT comes here. */
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
- return 0;
-
- yyabortlab:
- /* YYABORT comes here. */
- if (yyfree_stacks)
- {
- free (yyss);
- free (yyvs);
-#ifdef YYLSP_NEEDED
- free (yyls);
-#endif
- }
- return 1;
}
-#line 2309 "./parse.y"
+#line 2300 "./parse.y"
@@ -5736,7 +5677,7 @@ lookup_field_wrapper (class, name)
java_parser_context_save_global ();
decl = lookup_field (&type, name);
java_parser_context_restore_global ();
- return decl == error_mark_node ? NULL : decl;
+ return decl;
}
/* Find duplicate field within the same class declarations and report
@@ -5869,6 +5810,7 @@ register_fields (flags, type, variable_list)
appropriately. */
TREE_CHAIN (init) = ctxp->static_initialized;
ctxp->static_initialized = init;
+ DECL_INITIAL (field_decl) = TREE_OPERAND (init, 1);
if (TREE_OPERAND (init, 1)
&& TREE_CODE (TREE_OPERAND (init, 1)) == NEW_ARRAY_INIT)
TREE_STATIC (TREE_OPERAND (init, 1)) = 1;
@@ -5882,7 +5824,6 @@ register_fields (flags, type, variable_list)
ctxp->non_static_initialized = init;
}
MODIFY_EXPR_FROM_INITIALIZATION_P (init) = 1;
- DECL_INITIAL (field_decl) = TREE_OPERAND (init, 1);
}
}
lineno = saved_lineno;
@@ -5923,6 +5864,7 @@ static void
maybe_generate_clinit ()
{
tree mdecl, c;
+ int has_non_primitive_fields = 0;
if (!ctxp->static_initialized || java_error_count)
return;
@@ -6174,35 +6116,6 @@ static void
finish_method_declaration (method_body)
tree method_body;
{
- int flags = get_access_flags_from_decl (current_function_decl);
-
- /* 8.4.5 Method Body */
- if ((flags & ACC_ABSTRACT || flags & ACC_NATIVE) && method_body)
- {
- tree wfl = DECL_NAME (current_function_decl);
- parse_error_context (wfl,
- "%s method `%s' can't have a body defined",
- (METHOD_NATIVE (current_function_decl) ?
- "Native" : "Abstract"),
- IDENTIFIER_POINTER (EXPR_WFL_NODE (wfl)));
- method_body = NULL_TREE;
- }
- else if (!(flags & ACC_ABSTRACT) && !(flags & ACC_NATIVE) && !method_body)
- {
- tree wfl = DECL_NAME (current_function_decl);
- parse_error_context (wfl,
- "Non native and non abstract method `%s' must "
- "have a body defined",
- IDENTIFIER_POINTER (EXPR_WFL_NODE (wfl)));
- method_body = NULL_TREE;
- }
-
- if (flag_emit_class_files && method_body
- && TREE_CODE (method_body) == NOP_EXPR
- && TREE_TYPE (current_function_decl)
- && TREE_TYPE (TREE_TYPE (current_function_decl)) == void_type_node)
- method_body = build1 (RETURN_EXPR, void_type_node, NULL);
-
BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (current_function_decl)) = method_body;
maybe_absorb_scoping_blocks ();
/* Exit function's body */
@@ -7697,7 +7610,7 @@ note_possible_classname (name, len)
return 0;
node = ident_subst (name, len, "", '/', '.', "");
IS_A_CLASSFILE_NAME (node) = 1; /* Or soon to be */
- QUALIFIED_P (node) = strchr (name, '/') ? 1 : 0;
+ QUALIFIED_P (node) = 1; /* As soon as we turn / into . */
return 1;
}
@@ -7836,9 +7749,9 @@ static int
find_in_imports_on_demand (class_type)
tree class_type;
{
- tree node, import, node_to_use = NULL_TREE;
+ tree node, import, node_to_use;
int seen_once = -1;
- tree cl = NULL_TREE;
+ tree cl;
for (import = ctxp->import_demand_list; import; import = TREE_CHAIN (import))
{
@@ -7898,7 +7811,6 @@ static tree
resolve_package (pkg, next)
tree pkg, *next;
{
- tree current;
tree type_name = NULL_TREE;
char *name = IDENTIFIER_POINTER (EXPR_WFL_NODE (pkg));
@@ -7918,63 +7830,9 @@ resolve_package (pkg, next)
*next = TREE_CHAIN (TREE_CHAIN (EXPR_WFL_QUALIFICATION (pkg)));
type_name = lookup_package_type (name, 9);
}
+ else
+ return NULL_TREE; /* FIXME, search all imported packages. */
- /* If we found something here, return */
- if (type_name)
- return type_name;
-
- *next = EXPR_WFL_QUALIFICATION (pkg);
-
- /* Try the current package. */
- if (ctxp->package && !strncmp (name, IDENTIFIER_POINTER (ctxp->package),
- IDENTIFIER_LENGTH (ctxp->package)))
- {
- type_name =
- lookup_package_type_and_set_next (name,
- IDENTIFIER_LENGTH (ctxp->package),
- next );
- if (type_name)
- return type_name;
- }
-
- /* Search in imported package */
- for (current = ctxp->import_list; current; current = TREE_CHAIN (current))
- {
- tree current_pkg_name = EXPR_WFL_NODE (TREE_PURPOSE (current));
- int len = IDENTIFIER_LENGTH (current_pkg_name);
- if (!strncmp (name, IDENTIFIER_POINTER (current_pkg_name), len))
- {
- tree left, dummy;
-
- breakdown_qualified (&left, &dummy, current_pkg_name);
- len = IDENTIFIER_LENGTH (left);
- type_name = lookup_package_type_and_set_next (name, len, next);
- if (type_name)
- break;
- }
- }
-
- return type_name;
-}
-
-static tree
-lookup_package_type_and_set_next (name, len, next)
- char *name;
- int len;
- tree *next;
-{
- char *ptr;
- tree type_name = lookup_package_type (name, len);
-
- if (!type_name)
- return NULL;
-
- ptr = IDENTIFIER_POINTER (type_name);
- while (ptr && (ptr = strchr (ptr, '.')))
- {
- *next = TREE_CHAIN (*next);
- ptr++;
- }
return type_name;
}
@@ -9027,8 +8885,6 @@ resolve_field_access (qual_wfl, field_decl, field_type)
&& TREE_CODE (where_found) != RECORD_TYPE)
{
tree type = QUAL_DECL_TYPE (field_ref);
- if (TREE_CODE (type) == RECORD_TYPE)
- type = build_pointer_type (type);
field_ref = build (COMPOUND_EXPR, type, where_found, field_ref);
}
}
@@ -9588,36 +9444,18 @@ patch_method_invocation (patch, primary, where, is_static, ret_decl)
as a MethodName. We need to qualify what's before */
qualify_ambiguous_name (wfl);
- /* Package resolution */
+ /* Package resolution are erroneous */
if (RESOLVE_PACKAGE_NAME_P (wfl))
{
- tree next, decl, name = resolve_package (wfl, &next);
-
- if (!name)
- {
- tree remainder;
- breakdown_qualified (&remainder, NULL, EXPR_WFL_NODE (wfl));
- parse_error_context (wfl, "Can't search method `%s' in package "
- "`%s'",IDENTIFIER_POINTER (identifier),
- IDENTIFIER_POINTER (remainder));
- PATCH_METHOD_RETURN_ERROR ();
- }
- RESOLVE_PACKAGE_NAME_P (wfl) = 0;
- if ((decl = resolve_no_layout (name, QUAL_WFL (next))))
- {
- QUAL_RESOLUTION (EXPR_WFL_QUALIFICATION (wfl)) = decl;
- RESOLVE_EXPRESSION_NAME_P (wfl) = 0;
- RESOLVE_TYPE_NAME_P (wfl) = 1;
- }
- else
- {
- RESOLVE_EXPRESSION_NAME_P (wfl) = 1;
- RESOLVE_TYPE_NAME_P (wfl) = 0;
- }
+ tree remainder;
+ breakdown_qualified (&remainder, NULL, EXPR_WFL_NODE (wfl));
+ parse_error_context (wfl, "Can't search method `%s' in package "
+ "`%s'",IDENTIFIER_POINTER (identifier),
+ IDENTIFIER_POINTER (remainder));
+ PATCH_METHOD_RETURN_ERROR ();
}
-
/* We're resolving a call from a type */
- if (RESOLVE_TYPE_NAME_P (wfl))
+ else if (RESOLVE_TYPE_NAME_P (wfl))
{
tree decl = QUAL_RESOLUTION (EXPR_WFL_QUALIFICATION (wfl));
tree name = DECL_NAME (decl);
@@ -10262,7 +10100,6 @@ qualify_ambiguous_name (id)
{
tree qual, qual_wfl, name, decl, ptr_type, saved_current_class;
int again, super_found = 0, this_found = 0, new_array_found = 0;
- int code;
/* We first qualify the first element, then derive qualification of
others based on the first one. If the first element is qualified
@@ -10292,7 +10129,7 @@ qualify_ambiguous_name (id)
break;
case NEW_ARRAY_EXPR:
qual = TREE_CHAIN (qual);
- new_array_found = 1;
+ new_array_found = again = 1;
continue;
case NEW_CLASS_EXPR:
case CONVERT_EXPR:
@@ -10302,41 +10139,13 @@ qualify_ambiguous_name (id)
while (TREE_CODE (qual_wfl) == ARRAY_REF)
qual_wfl = TREE_OPERAND (qual_wfl, 0);
break;
- case STRING_CST:
- qual = TREE_CHAIN (qual);
- qual_wfl = QUAL_WFL (qual);
- break;
default:
/* Fix for -Wall. Just break doing nothing */
break;
}
-
+ name = EXPR_WFL_NODE (qual_wfl);
ptr_type = current_class;
again = 0;
- code = TREE_CODE (qual_wfl);
-
- /* Pos evaluation: non WFL leading expression nodes */
- if (code == CONVERT_EXPR
- && TREE_CODE (TREE_TYPE (qual_wfl)) == EXPR_WITH_FILE_LOCATION)
- name = EXPR_WFL_NODE (TREE_TYPE (qual_wfl));
-
- else if (code == ARRAY_REF &&
- TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
- name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));
-
- else if (code == CALL_EXPR &&
- TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
- name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));
-
- else if (code == STRING_CST || code == CONDITIONAL_EXPR)
- {
- qual = TREE_CHAIN (qual);
- qual_wfl = QUAL_WFL (qual);
- again = 1;
- }
- else
- name = EXPR_WFL_NODE (qual_wfl);
-
/* If we have a THIS (from a primary), we set the context accordingly */
if (name == this_identifier_node)
{
@@ -10364,6 +10173,16 @@ qualify_ambiguous_name (id)
/* Do one more interation to set things up */
super_found = again = 1;
}
+ /* Loop one more time if we're dealing with ?: or a string
+ constant, or a convert expression */
+ if (TREE_CODE (qual_wfl) == CONDITIONAL_EXPR
+ || TREE_CODE (qual_wfl) == STRING_CST
+ || TREE_CODE (qual_wfl) == CONVERT_EXPR)
+ {
+ qual = TREE_CHAIN (qual);
+ qual_wfl = QUAL_WFL (qual);
+ again = 1;
+ }
} while (again);
/* If name appears within the scope of a location variable
@@ -10403,8 +10222,7 @@ qualify_ambiguous_name (id)
/* Method call are expression name */
else if (TREE_CODE (QUAL_WFL (qual)) == CALL_EXPR
- || TREE_CODE (QUAL_WFL (qual)) == ARRAY_REF
- || TREE_CODE (QUAL_WFL (qual)) == CONVERT_EXPR)
+ || TREE_CODE (QUAL_WFL (qual)) == ARRAY_REF)
RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;
/* Check here that NAME isn't declared by more than one
@@ -10658,10 +10476,7 @@ java_complete_lhs (node)
POP_LABELED_BLOCK ();
if (LABELED_BLOCK_BODY (node) == empty_stmt_node)
- {
- LABELED_BLOCK_BODY (node) = NULL_TREE;
- CAN_COMPLETE_NORMALLY (node) = 1;
- }
+ LABELED_BLOCK_BODY (node) = NULL_TREE;
else if (CAN_COMPLETE_NORMALLY (LABELED_BLOCK_BODY (node)))
CAN_COMPLETE_NORMALLY (node) = 1;
return node;
@@ -10676,15 +10491,8 @@ java_complete_lhs (node)
if (cn == error_mark_node)
return cn;
- /* First, the case expression must be constant. Values of final
- fields are accepted. */
+ /* First, the case expression must be constant */
cn = fold (cn);
- if ((TREE_CODE (cn) == COMPOUND_EXPR || TREE_CODE (cn) == COMPONENT_REF)
- && JDECL_P (TREE_OPERAND (cn, 1))
- && FIELD_FINAL (TREE_OPERAND (cn, 1))
- && DECL_INITIAL (TREE_OPERAND (cn, 1)))
- cn = fold_constant_for_init (DECL_INITIAL (TREE_OPERAND (cn, 1)),
- TREE_OPERAND (cn, 1));
if (!TREE_CONSTANT (cn) && !flag_emit_xref)
{
@@ -10841,7 +10649,7 @@ java_complete_lhs (node)
return node;
/* Keep line number information somewhere were it doesn't
disrupt the completion process. */
- if (flag_emit_xref && TREE_CODE (node) != CALL_EXPR)
+ if (flag_emit_xref)
{
EXPR_WFL_NODE (wfl) = TREE_OPERAND (node, 1);
TREE_OPERAND (node, 1) = wfl;
@@ -11610,7 +11418,6 @@ patch_assignment (node, wfl_op1, wfl_op2)
}
/* Build the invocation of _Jv_CheckArrayStore */
- new_rhs = save_expr (new_rhs);
check = build (CALL_EXPR, void_type_node,
build_address_of (soft_checkarraystore_node),
tree_cons (NULL_TREE, base,
@@ -11854,8 +11661,7 @@ valid_ref_assignconv_cast_p (source, dest, cast)
return source == dest || interface_of_p (dest, source);
}
else /* Array */
- return (cast ?
- (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable) : 0);
+ return 0;
}
if (TYPE_ARRAY_P (source))
{
@@ -12016,7 +11822,7 @@ patch_binop (node, wfl_op1, wfl_op2)
tree op2 = TREE_OPERAND (node, 1);
tree op1_type = TREE_TYPE (op1);
tree op2_type = TREE_TYPE (op2);
- tree prom_type = NULL_TREE;
+ tree prom_type;
int code = TREE_CODE (node);
/* If 1, tell the routine that we have to return error_mark_node
@@ -12642,7 +12448,7 @@ patch_unaryop (node, wfl_op)
{
tree op = TREE_OPERAND (node, 0);
tree op_type = TREE_TYPE (op);
- tree prom_type = NULL_TREE, value, decl;
+ tree prom_type, value, decl;
int code = TREE_CODE (node);
int error_found = 0;
@@ -14222,7 +14028,7 @@ patch_conditional_expr (node, wfl_cond, wfl_op1)
/* Otherwise, binary numeric promotion is applied and the
resulting type is the promoted type of operand 1 and 2 */
else
- resulting_type = binary_numeric_promotion (t1, t2,
+ resulting_type = binary_numeric_promotion (t2, t2,
&TREE_OPERAND (node, 1),
&TREE_OPERAND (node, 2));
}
@@ -14279,12 +14085,9 @@ fold_constant_for_init (node, context)
tree op0, op1, val;
enum tree_code code = TREE_CODE (node);
- if (code == STRING_CST)
+ if (code == INTEGER_CST || code == REAL_CST || code == STRING_CST)
return node;
-
- if (code == INTEGER_CST || code == REAL_CST)
- return convert (TREE_TYPE (context), node);
- if (TREE_TYPE (node) != NULL_TREE && code != VAR_DECL && code != FIELD_DECL)
+ if (TREE_TYPE (node) != NULL_TREE && code != VAR_DECL)
return NULL_TREE;
switch (code)
@@ -14350,8 +14153,7 @@ fold_constant_for_init (node, context)
: TREE_OPERAND (node, 2);
case VAR_DECL:
- case FIELD_DECL:
- if (! FIELD_FINAL (node)
+ if (! FIELD_STATIC (node) || ! FIELD_FINAL (node)
|| DECL_INITIAL (node) == NULL_TREE)
return NULL_TREE;
val = DECL_INITIAL (node);
@@ -14373,18 +14175,19 @@ fold_constant_for_init (node, context)
else if (! QUALIFIED_P (name))
{
decl = lookup_field_wrapper (DECL_CONTEXT (context), name);
- if (decl == NULL_TREE
- || (! FIELD_STATIC (decl) && ! FIELD_FINAL (decl)))
+ if (decl == NULL_TREE || ! FIELD_STATIC (decl))
return NULL_TREE;
return fold_constant_for_init (decl, decl);
}
else
{
+#if 0
/* Wait until the USE_COMPONENT_REF re-write. FIXME. */
qualify_ambiguous_name (node);
if (resolve_field_access (node, &decl, NULL)
&& decl != NULL_TREE)
return fold_constant_for_init (decl, decl);
+#endif
return NULL_TREE;
}
}
diff --git a/gnu/egcs/gcc/java/parse.y b/gnu/egcs/gcc/java/parse.y
index 8abd4a7c079..64f7e182c14 100644
--- a/gnu/egcs/gcc/java/parse.y
+++ b/gnu/egcs/gcc/java/parse.y
@@ -100,7 +100,6 @@ static int find_in_imports PROTO ((tree));
static int check_pkg_class_access PROTO ((tree, tree));
static tree resolve_package PROTO ((tree, tree *));
static tree lookup_package_type PROTO ((char *, int));
-static tree lookup_package_type_and_set_next PROTO ((char *, int, tree *));
static tree resolve_class PROTO ((tree, tree, tree));
static void declare_local_variables PROTO ((int, tree, tree));
static void source_start_java_method PROTO ((tree));
@@ -397,7 +396,7 @@ static tree current_static_block = NULL_TREE;
variable_initializers constructor_body
array_initializer
-%type <node> class_body block_end constructor_block_end
+%type <node> class_body block_end
%type <node> statement statement_without_trailing_substatement
labeled_statement if_then_statement label_decl
if_then_else_statement while_statement for_statement
@@ -918,10 +917,7 @@ formal_parameter:
$$ = build_tree_list ($2, $1);
}
| modifiers type variable_declarator_id /* Added, JDK1.1 final parms */
- {
- parse_jdk1_1_error ("final parameters");
- $$ = build_tree_list ($3, $2);
- }
+ { $$ = parse_jdk1_1_error ("final parameters"); }
| type error
{yyerror ("Missing identifier"); RECOVER;}
| modifiers type error
@@ -1005,23 +1001,19 @@ constructor_body:
/* Unlike regular method, we always need a complete (empty)
body so we can safely perform all the required code
addition (super invocation and field initialization) */
- block_begin constructor_block_end
+ block_begin block_end
{
BLOCK_EXPR_BODY ($2) = empty_stmt_node;
$$ = $2;
}
-| block_begin explicit_constructor_invocation constructor_block_end
+| block_begin explicit_constructor_invocation block_end
{ $$ = $3; }
-| block_begin block_statements constructor_block_end
+| block_begin block_statements block_end
{ $$ = $3; }
-| block_begin explicit_constructor_invocation block_statements constructor_block_end
+| block_begin explicit_constructor_invocation block_statements block_end
{ $$ = $4; }
;
-constructor_block_end:
- block_end
-| block_end SC_TK
-
/* Error recovery for that rule moved down expression_statement: rule. */
explicit_constructor_invocation:
this_or_super OP_TK CP_TK SC_TK
@@ -1239,7 +1231,6 @@ statement_nsi:
| if_then_else_statement_nsi
| while_statement_nsi
| for_statement_nsi
- { $$ = exit_block (); }
;
statement_without_trailing_substatement:
@@ -3082,7 +3073,7 @@ lookup_field_wrapper (class, name)
java_parser_context_save_global ();
decl = lookup_field (&type, name);
java_parser_context_restore_global ();
- return decl == error_mark_node ? NULL : decl;
+ return decl;
}
/* Find duplicate field within the same class declarations and report
@@ -3215,6 +3206,7 @@ register_fields (flags, type, variable_list)
appropriately. */
TREE_CHAIN (init) = ctxp->static_initialized;
ctxp->static_initialized = init;
+ DECL_INITIAL (field_decl) = TREE_OPERAND (init, 1);
if (TREE_OPERAND (init, 1)
&& TREE_CODE (TREE_OPERAND (init, 1)) == NEW_ARRAY_INIT)
TREE_STATIC (TREE_OPERAND (init, 1)) = 1;
@@ -3228,7 +3220,6 @@ register_fields (flags, type, variable_list)
ctxp->non_static_initialized = init;
}
MODIFY_EXPR_FROM_INITIALIZATION_P (init) = 1;
- DECL_INITIAL (field_decl) = TREE_OPERAND (init, 1);
}
}
lineno = saved_lineno;
@@ -3269,6 +3260,7 @@ static void
maybe_generate_clinit ()
{
tree mdecl, c;
+ int has_non_primitive_fields = 0;
if (!ctxp->static_initialized || java_error_count)
return;
@@ -3520,35 +3512,6 @@ static void
finish_method_declaration (method_body)
tree method_body;
{
- int flags = get_access_flags_from_decl (current_function_decl);
-
- /* 8.4.5 Method Body */
- if ((flags & ACC_ABSTRACT || flags & ACC_NATIVE) && method_body)
- {
- tree wfl = DECL_NAME (current_function_decl);
- parse_error_context (wfl,
- "%s method `%s' can't have a body defined",
- (METHOD_NATIVE (current_function_decl) ?
- "Native" : "Abstract"),
- IDENTIFIER_POINTER (EXPR_WFL_NODE (wfl)));
- method_body = NULL_TREE;
- }
- else if (!(flags & ACC_ABSTRACT) && !(flags & ACC_NATIVE) && !method_body)
- {
- tree wfl = DECL_NAME (current_function_decl);
- parse_error_context (wfl,
- "Non native and non abstract method `%s' must "
- "have a body defined",
- IDENTIFIER_POINTER (EXPR_WFL_NODE (wfl)));
- method_body = NULL_TREE;
- }
-
- if (flag_emit_class_files && method_body
- && TREE_CODE (method_body) == NOP_EXPR
- && TREE_TYPE (current_function_decl)
- && TREE_TYPE (TREE_TYPE (current_function_decl)) == void_type_node)
- method_body = build1 (RETURN_EXPR, void_type_node, NULL);
-
BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (current_function_decl)) = method_body;
maybe_absorb_scoping_blocks ();
/* Exit function's body */
@@ -5043,7 +5006,7 @@ note_possible_classname (name, len)
return 0;
node = ident_subst (name, len, "", '/', '.', "");
IS_A_CLASSFILE_NAME (node) = 1; /* Or soon to be */
- QUALIFIED_P (node) = strchr (name, '/') ? 1 : 0;
+ QUALIFIED_P (node) = 1; /* As soon as we turn / into . */
return 1;
}
@@ -5182,9 +5145,9 @@ static int
find_in_imports_on_demand (class_type)
tree class_type;
{
- tree node, import, node_to_use = NULL_TREE;
+ tree node, import, node_to_use;
int seen_once = -1;
- tree cl = NULL_TREE;
+ tree cl;
for (import = ctxp->import_demand_list; import; import = TREE_CHAIN (import))
{
@@ -5244,7 +5207,6 @@ static tree
resolve_package (pkg, next)
tree pkg, *next;
{
- tree current;
tree type_name = NULL_TREE;
char *name = IDENTIFIER_POINTER (EXPR_WFL_NODE (pkg));
@@ -5264,67 +5226,13 @@ resolve_package (pkg, next)
*next = TREE_CHAIN (TREE_CHAIN (EXPR_WFL_QUALIFICATION (pkg)));
type_name = lookup_package_type (name, 9);
}
-
- /* If we found something here, return */
- if (type_name)
- return type_name;
-
- *next = EXPR_WFL_QUALIFICATION (pkg);
-
- /* Try the current package. */
- if (ctxp->package && !strncmp (name, IDENTIFIER_POINTER (ctxp->package),
- IDENTIFIER_LENGTH (ctxp->package)))
- {
- type_name =
- lookup_package_type_and_set_next (name,
- IDENTIFIER_LENGTH (ctxp->package),
- next );
- if (type_name)
- return type_name;
- }
-
- /* Search in imported package */
- for (current = ctxp->import_list; current; current = TREE_CHAIN (current))
- {
- tree current_pkg_name = EXPR_WFL_NODE (TREE_PURPOSE (current));
- int len = IDENTIFIER_LENGTH (current_pkg_name);
- if (!strncmp (name, IDENTIFIER_POINTER (current_pkg_name), len))
- {
- tree left, dummy;
-
- breakdown_qualified (&left, &dummy, current_pkg_name);
- len = IDENTIFIER_LENGTH (left);
- type_name = lookup_package_type_and_set_next (name, len, next);
- if (type_name)
- break;
- }
- }
+ else
+ return NULL_TREE; /* FIXME, search all imported packages. */
return type_name;
}
static tree
-lookup_package_type_and_set_next (name, len, next)
- char *name;
- int len;
- tree *next;
-{
- char *ptr;
- tree type_name = lookup_package_type (name, len);
-
- if (!type_name)
- return NULL;
-
- ptr = IDENTIFIER_POINTER (type_name);
- while (ptr && (ptr = strchr (ptr, '.')))
- {
- *next = TREE_CHAIN (*next);
- ptr++;
- }
- return type_name;
-}
-
-static tree
lookup_package_type (name, from)
char *name;
int from;
@@ -6373,8 +6281,6 @@ resolve_field_access (qual_wfl, field_decl, field_type)
&& TREE_CODE (where_found) != RECORD_TYPE)
{
tree type = QUAL_DECL_TYPE (field_ref);
- if (TREE_CODE (type) == RECORD_TYPE)
- type = build_pointer_type (type);
field_ref = build (COMPOUND_EXPR, type, where_found, field_ref);
}
}
@@ -6934,36 +6840,18 @@ patch_method_invocation (patch, primary, where, is_static, ret_decl)
as a MethodName. We need to qualify what's before */
qualify_ambiguous_name (wfl);
- /* Package resolution */
+ /* Package resolution are erroneous */
if (RESOLVE_PACKAGE_NAME_P (wfl))
{
- tree next, decl, name = resolve_package (wfl, &next);
-
- if (!name)
- {
- tree remainder;
- breakdown_qualified (&remainder, NULL, EXPR_WFL_NODE (wfl));
- parse_error_context (wfl, "Can't search method `%s' in package "
- "`%s'",IDENTIFIER_POINTER (identifier),
- IDENTIFIER_POINTER (remainder));
- PATCH_METHOD_RETURN_ERROR ();
- }
- RESOLVE_PACKAGE_NAME_P (wfl) = 0;
- if ((decl = resolve_no_layout (name, QUAL_WFL (next))))
- {
- QUAL_RESOLUTION (EXPR_WFL_QUALIFICATION (wfl)) = decl;
- RESOLVE_EXPRESSION_NAME_P (wfl) = 0;
- RESOLVE_TYPE_NAME_P (wfl) = 1;
- }
- else
- {
- RESOLVE_EXPRESSION_NAME_P (wfl) = 1;
- RESOLVE_TYPE_NAME_P (wfl) = 0;
- }
+ tree remainder;
+ breakdown_qualified (&remainder, NULL, EXPR_WFL_NODE (wfl));
+ parse_error_context (wfl, "Can't search method `%s' in package "
+ "`%s'",IDENTIFIER_POINTER (identifier),
+ IDENTIFIER_POINTER (remainder));
+ PATCH_METHOD_RETURN_ERROR ();
}
-
/* We're resolving a call from a type */
- if (RESOLVE_TYPE_NAME_P (wfl))
+ else if (RESOLVE_TYPE_NAME_P (wfl))
{
tree decl = QUAL_RESOLUTION (EXPR_WFL_QUALIFICATION (wfl));
tree name = DECL_NAME (decl);
@@ -7608,7 +7496,6 @@ qualify_ambiguous_name (id)
{
tree qual, qual_wfl, name, decl, ptr_type, saved_current_class;
int again, super_found = 0, this_found = 0, new_array_found = 0;
- int code;
/* We first qualify the first element, then derive qualification of
others based on the first one. If the first element is qualified
@@ -7638,7 +7525,7 @@ qualify_ambiguous_name (id)
break;
case NEW_ARRAY_EXPR:
qual = TREE_CHAIN (qual);
- new_array_found = 1;
+ new_array_found = again = 1;
continue;
case NEW_CLASS_EXPR:
case CONVERT_EXPR:
@@ -7648,41 +7535,13 @@ qualify_ambiguous_name (id)
while (TREE_CODE (qual_wfl) == ARRAY_REF)
qual_wfl = TREE_OPERAND (qual_wfl, 0);
break;
- case STRING_CST:
- qual = TREE_CHAIN (qual);
- qual_wfl = QUAL_WFL (qual);
- break;
default:
/* Fix for -Wall. Just break doing nothing */
break;
}
-
+ name = EXPR_WFL_NODE (qual_wfl);
ptr_type = current_class;
again = 0;
- code = TREE_CODE (qual_wfl);
-
- /* Pos evaluation: non WFL leading expression nodes */
- if (code == CONVERT_EXPR
- && TREE_CODE (TREE_TYPE (qual_wfl)) == EXPR_WITH_FILE_LOCATION)
- name = EXPR_WFL_NODE (TREE_TYPE (qual_wfl));
-
- else if (code == ARRAY_REF &&
- TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
- name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));
-
- else if (code == CALL_EXPR &&
- TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
- name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));
-
- else if (code == STRING_CST || code == CONDITIONAL_EXPR)
- {
- qual = TREE_CHAIN (qual);
- qual_wfl = QUAL_WFL (qual);
- again = 1;
- }
- else
- name = EXPR_WFL_NODE (qual_wfl);
-
/* If we have a THIS (from a primary), we set the context accordingly */
if (name == this_identifier_node)
{
@@ -7710,6 +7569,16 @@ qualify_ambiguous_name (id)
/* Do one more interation to set things up */
super_found = again = 1;
}
+ /* Loop one more time if we're dealing with ?: or a string
+ constant, or a convert expression */
+ if (TREE_CODE (qual_wfl) == CONDITIONAL_EXPR
+ || TREE_CODE (qual_wfl) == STRING_CST
+ || TREE_CODE (qual_wfl) == CONVERT_EXPR)
+ {
+ qual = TREE_CHAIN (qual);
+ qual_wfl = QUAL_WFL (qual);
+ again = 1;
+ }
} while (again);
/* If name appears within the scope of a location variable
@@ -7749,8 +7618,7 @@ qualify_ambiguous_name (id)
/* Method call are expression name */
else if (TREE_CODE (QUAL_WFL (qual)) == CALL_EXPR
- || TREE_CODE (QUAL_WFL (qual)) == ARRAY_REF
- || TREE_CODE (QUAL_WFL (qual)) == CONVERT_EXPR)
+ || TREE_CODE (QUAL_WFL (qual)) == ARRAY_REF)
RESOLVE_EXPRESSION_NAME_P (qual_wfl) = 1;
/* Check here that NAME isn't declared by more than one
@@ -8004,10 +7872,7 @@ java_complete_lhs (node)
POP_LABELED_BLOCK ();
if (LABELED_BLOCK_BODY (node) == empty_stmt_node)
- {
- LABELED_BLOCK_BODY (node) = NULL_TREE;
- CAN_COMPLETE_NORMALLY (node) = 1;
- }
+ LABELED_BLOCK_BODY (node) = NULL_TREE;
else if (CAN_COMPLETE_NORMALLY (LABELED_BLOCK_BODY (node)))
CAN_COMPLETE_NORMALLY (node) = 1;
return node;
@@ -8022,15 +7887,8 @@ java_complete_lhs (node)
if (cn == error_mark_node)
return cn;
- /* First, the case expression must be constant. Values of final
- fields are accepted. */
+ /* First, the case expression must be constant */
cn = fold (cn);
- if ((TREE_CODE (cn) == COMPOUND_EXPR || TREE_CODE (cn) == COMPONENT_REF)
- && JDECL_P (TREE_OPERAND (cn, 1))
- && FIELD_FINAL (TREE_OPERAND (cn, 1))
- && DECL_INITIAL (TREE_OPERAND (cn, 1)))
- cn = fold_constant_for_init (DECL_INITIAL (TREE_OPERAND (cn, 1)),
- TREE_OPERAND (cn, 1));
if (!TREE_CONSTANT (cn) && !flag_emit_xref)
{
@@ -8187,7 +8045,7 @@ java_complete_lhs (node)
return node;
/* Keep line number information somewhere were it doesn't
disrupt the completion process. */
- if (flag_emit_xref && TREE_CODE (node) != CALL_EXPR)
+ if (flag_emit_xref)
{
EXPR_WFL_NODE (wfl) = TREE_OPERAND (node, 1);
TREE_OPERAND (node, 1) = wfl;
@@ -8956,7 +8814,6 @@ patch_assignment (node, wfl_op1, wfl_op2)
}
/* Build the invocation of _Jv_CheckArrayStore */
- new_rhs = save_expr (new_rhs);
check = build (CALL_EXPR, void_type_node,
build_address_of (soft_checkarraystore_node),
tree_cons (NULL_TREE, base,
@@ -9200,8 +9057,7 @@ valid_ref_assignconv_cast_p (source, dest, cast)
return source == dest || interface_of_p (dest, source);
}
else /* Array */
- return (cast ?
- (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable) : 0);
+ return 0;
}
if (TYPE_ARRAY_P (source))
{
@@ -9362,7 +9218,7 @@ patch_binop (node, wfl_op1, wfl_op2)
tree op2 = TREE_OPERAND (node, 1);
tree op1_type = TREE_TYPE (op1);
tree op2_type = TREE_TYPE (op2);
- tree prom_type = NULL_TREE;
+ tree prom_type;
int code = TREE_CODE (node);
/* If 1, tell the routine that we have to return error_mark_node
@@ -9988,7 +9844,7 @@ patch_unaryop (node, wfl_op)
{
tree op = TREE_OPERAND (node, 0);
tree op_type = TREE_TYPE (op);
- tree prom_type = NULL_TREE, value, decl;
+ tree prom_type, value, decl;
int code = TREE_CODE (node);
int error_found = 0;
@@ -11568,7 +11424,7 @@ patch_conditional_expr (node, wfl_cond, wfl_op1)
/* Otherwise, binary numeric promotion is applied and the
resulting type is the promoted type of operand 1 and 2 */
else
- resulting_type = binary_numeric_promotion (t1, t2,
+ resulting_type = binary_numeric_promotion (t2, t2,
&TREE_OPERAND (node, 1),
&TREE_OPERAND (node, 2));
}
@@ -11625,12 +11481,9 @@ fold_constant_for_init (node, context)
tree op0, op1, val;
enum tree_code code = TREE_CODE (node);
- if (code == STRING_CST)
+ if (code == INTEGER_CST || code == REAL_CST || code == STRING_CST)
return node;
-
- if (code == INTEGER_CST || code == REAL_CST)
- return convert (TREE_TYPE (context), node);
- if (TREE_TYPE (node) != NULL_TREE && code != VAR_DECL && code != FIELD_DECL)
+ if (TREE_TYPE (node) != NULL_TREE && code != VAR_DECL)
return NULL_TREE;
switch (code)
@@ -11696,8 +11549,7 @@ fold_constant_for_init (node, context)
: TREE_OPERAND (node, 2);
case VAR_DECL:
- case FIELD_DECL:
- if (! FIELD_FINAL (node)
+ if (! FIELD_STATIC (node) || ! FIELD_FINAL (node)
|| DECL_INITIAL (node) == NULL_TREE)
return NULL_TREE;
val = DECL_INITIAL (node);
@@ -11719,18 +11571,19 @@ fold_constant_for_init (node, context)
else if (! QUALIFIED_P (name))
{
decl = lookup_field_wrapper (DECL_CONTEXT (context), name);
- if (decl == NULL_TREE
- || (! FIELD_STATIC (decl) && ! FIELD_FINAL (decl)))
+ if (decl == NULL_TREE || ! FIELD_STATIC (decl))
return NULL_TREE;
return fold_constant_for_init (decl, decl);
}
else
{
+#if 0
/* Wait until the USE_COMPONENT_REF re-write. FIXME. */
qualify_ambiguous_name (node);
if (resolve_field_access (node, &decl, NULL)
&& decl != NULL_TREE)
return fold_constant_for_init (decl, decl);
+#endif
return NULL_TREE;
}
}
diff --git a/gnu/egcs/gcc/java/xref.c b/gnu/egcs/gcc/java/xref.c
index 8fd51804819..8835e8dfcac 100644
--- a/gnu/egcs/gcc/java/xref.c
+++ b/gnu/egcs/gcc/java/xref.c
@@ -35,7 +35,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
static xref_flag_table xref_table [] = {
- {NULL, NULL, NULL, NULL},
+ {NULL, NULL, NULL},
};
/* Decode an xref flag value. Return 0 if the flag wasn't found. */
diff --git a/gnu/egcs/gcc/just-fixinc b/gnu/egcs/gcc/just-fixinc
index dc7695f6ad1..e6a681ac942 100644
--- a/gnu/egcs/gcc/just-fixinc
+++ b/gnu/egcs/gcc/just-fixinc
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: just-fixinc,v 1.1.1.5 2001/01/29 15:12:56 espie Exp $
+# $Id: just-fixinc,v 1.1 1999/05/26 13:34:24 espie Exp $
# This script exists for use after installing
# the GCC binaries from a distribution tape/CD-ROM.
# Use it *after* copying the directory of binaries
diff --git a/gnu/egcs/gcc/libgcc2.c b/gnu/egcs/gcc/libgcc2.c
index 6d8fb0b77db..a902dd3be75 100644
--- a/gnu/egcs/gcc/libgcc2.c
+++ b/gnu/egcs/gcc/libgcc2.c
@@ -2903,26 +2903,17 @@ SYMBOL__MAIN ()
#include "gbl-ctors.h"
/* Provide default definitions for the lists of constructors and
- destructors, so that we don't get linker errors. These symbols are
- intentionally bss symbols, so that gld and/or collect will provide
- the right values. */
+ destructors, so that we don't get linker errors.
-/* We declare the lists here with two elements each,
- so that they are valid empty lists if no other definition is loaded.
-
- If we are using the old "set" extensions to have the gnu linker
- collect ctors and dtors, then we __CTOR_LIST__ and __DTOR_LIST__
- must be in the bss/common section.
+ The old code sometimes put these into the data segment and sometimes
+ into the bss segment. Putting these into the data segment should always
+ work and avoids a little bit of complexity. */
- Long term no port should use those extensions. But many still do. */
+/* We declare the lists here with two elements each,
+ so that they are valid empty lists if no other definition is loaded. */
#if !defined(INIT_SECTION_ASM_OP) && !defined(CTOR_LISTS_DEFINED_EXTERNALLY)
-#if defined (ASM_OUTPUT_CONSTRUCTOR) || defined (USE_COLLECT2)
func_ptr __CTOR_LIST__[2] = {0, 0};
func_ptr __DTOR_LIST__[2] = {0, 0};
-#else
-func_ptr __CTOR_LIST__[2];
-func_ptr __DTOR_LIST__[2];
-#endif
#endif /* no INIT_SECTION_ASM_OP and not CTOR_LISTS_DEFINED_EXTERNALLY */
#endif /* L_ctors */
diff --git a/gnu/egcs/gcc/local-alloc.c b/gnu/egcs/gcc/local-alloc.c
index 2fc3aec4977..d1df595c4c1 100644
--- a/gnu/egcs/gcc/local-alloc.c
+++ b/gnu/egcs/gcc/local-alloc.c
@@ -759,8 +759,7 @@ update_equiv_regs ()
&& REG_N_SETS (regno) == 1
&& reg_equiv_init_insns[regno] != 0
&& reg_equiv_init_insns[regno] != const0_rtx
- && ! find_reg_note (XEXP (reg_equiv_init_insns[regno], 0),
- REG_EQUIV, NULL_RTX)
+ && ! find_reg_note (insn, REG_EQUIV, NULL_RTX)
&& ! contains_replace_regs (XEXP (dest, 0), reg_equiv_replace))
{
rtx init_insn = XEXP (reg_equiv_init_insns[regno], 0);
diff --git a/gnu/egcs/gcc/mkinstalldirs b/gnu/egcs/gcc/mkinstalldirs
index f997b456f1d..23ada69e033 100644
--- a/gnu/egcs/gcc/mkinstalldirs
+++ b/gnu/egcs/gcc/mkinstalldirs
@@ -4,7 +4,7 @@
# Created: 1993-05-16
# Public domain
-# $Id: mkinstalldirs,v 1.1.1.5 2001/01/29 15:13:04 espie Exp $
+# $Id: mkinstalldirs,v 1.1 1999/05/26 13:34:27 espie Exp $
errstatus=0
diff --git a/gnu/egcs/gcc/objc/lang-specs.h b/gnu/egcs/gcc/objc/lang-specs.h
index 7b9b2fa79cd..d76dee8c3eb 100644
--- a/gnu/egcs/gcc/objc/lang-specs.h
+++ b/gnu/egcs/gcc/objc/lang-specs.h
@@ -1,5 +1,5 @@
/* Definitions for specs for Objective-C.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -24,10 +24,10 @@ Boston, MA 02111-1307, USA. */
{".m", {"@objective-c"}},
{"@objective-c",
#if USE_CPPLIB
- {"%{E|M|MM:cpp0 -lang-objc %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
+ {"%{E|M|MM:cpp -lang-objc %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- -D__OBJC__ %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2}\
+ -D__OBJC__ -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
%{ansi:-trigraphs -D__STRICT_ANSI__}\
%{!undef:%{!ansi:%p} %P} %{trigraphs}\
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
@@ -40,7 +40,7 @@ Boston, MA 02111-1307, USA. */
"%{!M:%{!MM:%{!E:cc1obj %i %1 \
%{nostdinc*} %{A*} %{I*} %{P} %I\
%{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- -D__OBJC__ %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2}\
+ -D__OBJC__ -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
%{!undef:%{!ansi:%p} %P} %{trigraphs}\
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
%{ffast-math:-D__FAST_MATH__}\
@@ -55,10 +55,10 @@ Boston, MA 02111-1307, USA. */
%{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}\
%{!pipe:%g.s} %A\n }}}}"}
#else /* ! USE_CPPLIB */
- {"cpp0 -lang-objc %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
+ {"cpp -lang-objc %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %{$} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
- -D__OBJC__ %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2}\
+ -D__OBJC__ -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
%{ansi:-trigraphs -D__STRICT_ANSI__}\
%{!undef:%{!ansi:%p} %P} %{trigraphs}\
%c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
diff --git a/gnu/egcs/gcc/output.h b/gnu/egcs/gcc/output.h
index 85310850737..e1cf6d82950 100644
--- a/gnu/egcs/gcc/output.h
+++ b/gnu/egcs/gcc/output.h
@@ -505,11 +505,3 @@ extern FILE *rtl_dump_file;
/* User label prefix in effect for this compilation. */
extern const char *user_label_prefix;
-
-/* This macro gets just the user-specified name
- out of the string in a SYMBOL_REF. On most machines,
- we discard the * if any and that's all. */
-#ifndef STRIP_NAME_ENCODING
-#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
- (VAR) = ((SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*'))
-#endif
diff --git a/gnu/egcs/gcc/po/ChangeLog b/gnu/egcs/gcc/po/ChangeLog
index 83babc471a0..faa0051899c 100644
--- a/gnu/egcs/gcc/po/ChangeLog
+++ b/gnu/egcs/gcc/po/ChangeLog
@@ -1,23 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-1999-10-18 Manfred Hollstein <mhollstein@cygnus.com>
-
- * POTFILES.in: Track files recently added/deleted/moved.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
1999-03-21 Manfred Hollstein <manfred@s-direktnet.de>
* POTFILES.in: Track latest file renamings.
diff --git a/gnu/egcs/gcc/po/POTFILES.in b/gnu/egcs/gcc/po/POTFILES.in
index 9fd586c3113..e4020c9c3a0 100644
--- a/gnu/egcs/gcc/po/POTFILES.in
+++ b/gnu/egcs/gcc/po/POTFILES.in
@@ -208,7 +208,7 @@ config/i386/seq-sysv3.h
config/i386/seq2-sysv3.h
config/i386/sequent.h
config/i386/sol2.h
-config/i386/sol2gas.h
+config/i386/sol2dbg.h
config/i386/sun.h
config/i386/sun386.h
config/i386/svr3dbx.h
@@ -653,7 +653,6 @@ ginclude/math-68881.h
ginclude/ppc-asm.h
ginclude/proto.h
ginclude/stdarg.h
-ginclude/stdbool.h
ginclude/stddef.h
ginclude/va-alpha.h
ginclude/va-arc.h
diff --git a/gnu/egcs/gcc/real.c b/gnu/egcs/gcc/real.c
index a3fda6d4c91..e6a15fed515 100644
--- a/gnu/egcs/gcc/real.c
+++ b/gnu/egcs/gcc/real.c
@@ -269,34 +269,34 @@ do { \
/* Emulator uses target format internally
but host stores it in host endian-ness. */
-#define GET_REAL(r,e) \
-do { \
- if (HOST_FLOAT_WORDS_BIG_ENDIAN == REAL_WORDS_BIG_ENDIAN) \
- e53toe ((unsigned EMUSHORT *) (r), (e)); \
- else \
- { \
- unsigned EMUSHORT w[4]; \
- bcopy (((EMUSHORT *) r), &w[3], sizeof (EMUSHORT)); \
- bcopy (((EMUSHORT *) r) + 1, &w[2], sizeof (EMUSHORT)); \
- bcopy (((EMUSHORT *) r) + 2, &w[1], sizeof (EMUSHORT)); \
- bcopy (((EMUSHORT *) r) + 3, &w[0], sizeof (EMUSHORT)); \
- e53toe (w, (e)); \
- } \
+#define GET_REAL(r,e) \
+do { \
+ if (HOST_FLOAT_WORDS_BIG_ENDIAN == REAL_WORDS_BIG_ENDIAN) \
+ e53toe ((unsigned EMUSHORT *) (r), (e)); \
+ else \
+ { \
+ unsigned EMUSHORT w[4]; \
+ w[3] = ((EMUSHORT *) r)[0]; \
+ w[2] = ((EMUSHORT *) r)[1]; \
+ w[1] = ((EMUSHORT *) r)[2]; \
+ w[0] = ((EMUSHORT *) r)[3]; \
+ e53toe (w, (e)); \
+ } \
} while (0)
-#define PUT_REAL(e,r) \
-do { \
- if (HOST_FLOAT_WORDS_BIG_ENDIAN == REAL_WORDS_BIG_ENDIAN) \
- etoe53 ((e), (unsigned EMUSHORT *) (r)); \
- else \
- { \
- unsigned EMUSHORT w[4]; \
- etoe53 ((e), w); \
- bcopy (&w[3], ((EMUSHORT *) r), sizeof (EMUSHORT)); \
- bcopy (&w[2], ((EMUSHORT *) r) + 1, sizeof (EMUSHORT)); \
- bcopy (&w[1], ((EMUSHORT *) r) + 2, sizeof (EMUSHORT)); \
- bcopy (&w[0], ((EMUSHORT *) r) + 3, sizeof (EMUSHORT)); \
- } \
+#define PUT_REAL(e,r) \
+do { \
+ if (HOST_FLOAT_WORDS_BIG_ENDIAN == REAL_WORDS_BIG_ENDIAN) \
+ etoe53 ((e), (unsigned EMUSHORT *) (r)); \
+ else \
+ { \
+ unsigned EMUSHORT w[4]; \
+ etoe53 ((e), w); \
+ *((EMUSHORT *) r) = w[3]; \
+ *((EMUSHORT *) r + 1) = w[2]; \
+ *((EMUSHORT *) r + 2) = w[1]; \
+ *((EMUSHORT *) r + 3) = w[0]; \
+ } \
} while (0)
#else /* not REAL_ARITHMETIC */
@@ -6400,19 +6400,17 @@ ereal_from_double (d)
/* Convert array of HOST_WIDE_INT to equivalent array of 16-bit pieces. */
if (REAL_WORDS_BIG_ENDIAN)
{
-#if HOST_BITS_PER_WIDE_INT == 32
s[0] = (unsigned EMUSHORT) (d[0] >> 16);
s[1] = (unsigned EMUSHORT) d[0];
+#if HOST_BITS_PER_WIDE_INT == 32
s[2] = (unsigned EMUSHORT) (d[1] >> 16);
s[3] = (unsigned EMUSHORT) d[1];
#else
/* In this case the entire target double is contained in the
first array element. The second element of the input is
ignored. */
- s[0] = (unsigned EMUSHORT) (d[0] >> 48);
- s[1] = (unsigned EMUSHORT) (d[0] >> 32);
- s[2] = (unsigned EMUSHORT) (d[0] >> 16);
- s[3] = (unsigned EMUSHORT) d[0];
+ s[2] = (unsigned EMUSHORT) (d[0] >> 48);
+ s[3] = (unsigned EMUSHORT) (d[0] >> 32);
#endif
}
else
diff --git a/gnu/egcs/gcc/reg-stack.c b/gnu/egcs/gcc/reg-stack.c
index 42caefa0a42..787b5a18032 100644
--- a/gnu/egcs/gcc/reg-stack.c
+++ b/gnu/egcs/gcc/reg-stack.c
@@ -1186,16 +1186,8 @@ static rtx
stack_result (decl)
tree decl;
{
- rtx result;
+ rtx result = DECL_RTL (DECL_RESULT (decl));
- /* If the value is supposed to be returned in memory, then clearly
- it is not returned in a stack register. */
- if (aggregate_value_p (DECL_RESULT (decl)))
- return 0;
-
- result = DECL_RTL (DECL_RESULT (decl));
- /* ?!? What is this code supposed to do? Can this code actually
- trigger if we kick out aggregates above? */
if (result != 0
&& ! (GET_CODE (result) == REG
&& REGNO (result) < FIRST_PSEUDO_REGISTER))
@@ -1265,7 +1257,7 @@ stack_reg_life_analysis (first, stackentry)
function into the epilogue. */
if (GET_CODE (block_end[blocks-1]) != JUMP_INSN
- || returnjump_p (block_end[blocks-1]))
+ || GET_CODE (PATTERN (block_end[blocks-1])) == RETURN)
mark_regs_pat (retvalue, block_out_reg_set+blocks-1);
}
}
@@ -2648,46 +2640,43 @@ change_stack (insn, old, new, when)
if (old->top != new->top)
abort ();
- /* If the stack is not empty (new->top != -1), loop here emitting
- swaps until the stack is correct.
-
- The worst case number of swaps emitted is N + 2, where N is the
+ /* Loop here emitting swaps until the stack is correct. The
+ worst case number of swaps emitted is N + 2, where N is the
depth of the stack. In some cases, the reg at the top of
stack may be correct, but swapped anyway in order to fix
other regs. But since we never swap any other reg away from
its correct slot, this algorithm will converge. */
- if (new->top != -1)
- do
- {
- /* Swap the reg at top of stack into the position it is
- supposed to be in, until the correct top of stack appears. */
+ do
+ {
+ /* Swap the reg at top of stack into the position it is
+ supposed to be in, until the correct top of stack appears. */
- while (old->reg[old->top] != new->reg[new->top])
- {
- for (reg = new->top; reg >= 0; reg--)
- if (new->reg[reg] == old->reg[old->top])
- break;
+ while (old->reg[old->top] != new->reg[new->top])
+ {
+ for (reg = new->top; reg >= 0; reg--)
+ if (new->reg[reg] == old->reg[old->top])
+ break;
- if (reg == -1)
- abort ();
+ if (reg == -1)
+ abort ();
- emit_swap_insn (insn, old,
- FP_MODE_REG (old->reg[reg], DFmode));
- }
+ emit_swap_insn (insn, old,
+ FP_MODE_REG (old->reg[reg], DFmode));
+ }
- /* See if any regs remain incorrect. If so, bring an
+ /* See if any regs remain incorrect. If so, bring an
incorrect reg to the top of stack, and let the while loop
above fix it. */
- for (reg = new->top; reg >= 0; reg--)
- if (new->reg[reg] != old->reg[reg])
- {
- emit_swap_insn (insn, old,
- FP_MODE_REG (old->reg[reg], DFmode));
- break;
- }
- } while (reg >= 0);
+ for (reg = new->top; reg >= 0; reg--)
+ if (new->reg[reg] != old->reg[reg])
+ {
+ emit_swap_insn (insn, old,
+ FP_MODE_REG (old->reg[reg], DFmode));
+ break;
+ }
+ } while (reg >= 0);
/* At this point there must be no differences. */
diff --git a/gnu/egcs/gcc/regclass.c b/gnu/egcs/gcc/regclass.c
index 4e162882bd8..1b6ec9a4b6a 100644
--- a/gnu/egcs/gcc/regclass.c
+++ b/gnu/egcs/gcc/regclass.c
@@ -693,7 +693,7 @@ static int loop_cost;
static rtx scan_one_insn PROTO((rtx, int));
static void record_reg_classes PROTO((int, int, rtx *, enum machine_mode *,
- char *, const char **, rtx));
+ const char **, rtx));
static int copy_cost PROTO((rtx, enum machine_mode,
enum reg_class, int));
static void record_address_regs PROTO((rtx, enum reg_class, int));
@@ -757,7 +757,6 @@ scan_one_insn (insn, pass)
enum rtx_code pat_code;
const char *constraints[MAX_RECOG_OPERANDS];
enum machine_mode modes[MAX_RECOG_OPERANDS];
- char subreg_changes_size[MAX_RECOG_OPERANDS];
rtx set, note;
int i, j;
@@ -795,7 +794,6 @@ scan_one_insn (insn, pass)
constraints[i] = recog_constraints[i];
modes[i] = recog_operand_mode[i];
}
- memset (subreg_changes_size, 0, sizeof (subreg_changes_size));
/* If this insn loads a parameter from its stack slot, then
it represents a savings, rather than a cost, if the
@@ -883,12 +881,7 @@ scan_one_insn (insn, pass)
op_costs[i] = init_cost;
if (GET_CODE (recog_operand[i]) == SUBREG)
- {
- rtx inner = SUBREG_REG (recog_operand[i]);
- if (GET_MODE_SIZE (modes[i]) != GET_MODE_SIZE (GET_MODE (inner)))
- subreg_changes_size[i] = 1;
- recog_operand[i] = inner;
- }
+ recog_operand[i] = SUBREG_REG (recog_operand[i]);
if (GET_CODE (recog_operand[i]) == MEM)
record_address_regs (XEXP (recog_operand[i], 0),
@@ -917,12 +910,12 @@ scan_one_insn (insn, pass)
xconstraints[i] = constraints[i+1];
xconstraints[i+1] = constraints[i];
record_reg_classes (recog_n_alternatives, recog_n_operands,
- recog_operand, modes, subreg_changes_size,
- xconstraints, insn);
+ recog_operand, modes, xconstraints,
+ insn);
}
record_reg_classes (recog_n_alternatives, recog_n_operands, recog_operand,
- modes, subreg_changes_size, constraints, insn);
+ modes, constraints, insn);
/* Now add the cost for each operand to the total costs for
its register. */
@@ -1138,13 +1131,11 @@ regclass (f, nregs)
alternatives. */
static void
-record_reg_classes (n_alts, n_ops, ops, modes, subreg_changes_size,
- constraints, insn)
+record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
int n_alts;
int n_ops;
rtx *ops;
enum machine_mode *modes;
- char *subreg_changes_size;
const char **constraints;
rtx insn;
{
@@ -1403,16 +1394,6 @@ record_reg_classes (n_alts, n_ops, ops, modes, subreg_changes_size,
constraints[i] = p;
-#ifdef CLASS_CANNOT_CHANGE_SIZE
- /* If we noted a subreg earlier, and the selected class is a
- subclass of CLASS_CANNOT_CHANGE_SIZE, zap it. */
- if (subreg_changes_size[i]
- && (reg_class_subunion[(int) CLASS_CANNOT_CHANGE_SIZE]
- [(int) classes[i]]
- == CLASS_CANNOT_CHANGE_SIZE))
- classes[i] = NO_REGS;
-#endif
-
/* How we account for this operand now depends on whether it is a
pseudo register or not. If it is, we first check if any
register classes are valid. If not, we ignore this alternative,
diff --git a/gnu/egcs/gcc/reload.c b/gnu/egcs/gcc/reload.c
index 7b4b38d88dc..a68f2efa661 100644
--- a/gnu/egcs/gcc/reload.c
+++ b/gnu/egcs/gcc/reload.c
@@ -1,6 +1,5 @@
/* Search an insn for pseudo regs that must be in hard regs and are not.
- Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 89, 92-98, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -323,6 +322,7 @@ static int find_reusable_reload PROTO((rtx *, rtx, enum reg_class,
static rtx find_dummy_reload PROTO((rtx, rtx, rtx *, rtx *,
enum machine_mode, enum machine_mode,
enum reg_class, int, int));
+static int earlyclobber_operand_p PROTO((rtx));
static int hard_reg_set_here_p PROTO((int, int, rtx));
static struct decomposition decompose PROTO((rtx));
static int immune_p PROTO((rtx, rtx, struct decomposition));
@@ -591,13 +591,7 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
if (in_p && icode == CODE_FOR_nothing
&& SECONDARY_MEMORY_NEEDED (class, reload_class, mode))
- {
- get_secondary_mem (x, reload_mode, opnum, type);
-
- /* We may have just added new reloads. Make sure we add
- the new reload at the end. */
- s_reload = n_reloads;
- }
+ get_secondary_mem (x, reload_mode, opnum, type);
#endif
/* We need to make a new secondary reload for this register class. */
@@ -1366,18 +1360,8 @@ push_reload (in, out, inloc, outloc, class,
are identical in content, there might be duplicate address
reloads. Remove the extra set now, so that if we later find
that we can inherit this reload, we can get rid of the
- address reloads altogether.
-
- Do not do this if both reloads are optional since the result
- would be an optional reload which could potentially leave
- unresolved address replacements.
-
- It is not sufficient to call transfer_replacements since
- choose_reload_regs will remove the replacements for address
- reloads of inherited reloads which results in the same
- problem. */
- if (reload_in[i] != in && rtx_equal_p (in, reload_in[i])
- && ! (reload_optional[i] && optional))
+ address reloads altogether. */
+ if (reload_in[i] != in && rtx_equal_p (in, reload_in[i]))
{
/* We must keep the address reload with the lower operand
number alive. */
@@ -1535,23 +1519,12 @@ push_reload (in, out, inloc, outloc, class,
&& GET_MODE_SIZE (inmode) <= GET_MODE_SIZE (GET_MODE (XEXP (note, 0)))
&& HARD_REGNO_MODE_OK (regno, inmode)
&& GET_MODE_SIZE (outmode) <= GET_MODE_SIZE (GET_MODE (XEXP (note, 0)))
- && HARD_REGNO_MODE_OK (regno, outmode))
+ && HARD_REGNO_MODE_OK (regno, outmode)
+ && TEST_HARD_REG_BIT (reg_class_contents[(int) class], regno)
+ && !fixed_regs[regno])
{
- unsigned int offs;
- unsigned int nregs = MAX (HARD_REGNO_NREGS (regno, inmode),
- HARD_REGNO_NREGS (regno, outmode));
-
- for (offs = 0; offs < nregs; offs++)
- if (fixed_regs[regno + offs]
- || ! TEST_HARD_REG_BIT (reg_class_contents[(int) class],
- regno + offs))
- break;
-
- if (offs == nregs)
- {
- reload_reg_rtx[i] = gen_rtx_REG (inmode, regno);
- break;
- }
+ reload_reg_rtx[i] = gen_rtx_REG (inmode, regno);
+ break;
}
}
@@ -2006,7 +1979,7 @@ find_dummy_reload (real_in, real_out, inloc, outloc,
/* Return 1 if X is an operand of an insn that is being earlyclobbered. */
-int
+static int
earlyclobber_operand_p (x)
rtx x;
{
@@ -3820,16 +3793,11 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
(insn_code_number < 0 ? 0
: insn_operand_strict_low[insn_code_number][i]),
1, i, operand_type[i]);
- /* If a memory reference remains (either as a MEM or a pseudo that
- did not get a hard register), yet we can't make an optional
+ /* If a memory reference remains, yet we can't make an optional
reload, check if this is actually a pseudo register reference;
we then need to emit a USE and/or a CLOBBER so that reload
inheritance will do the right thing. */
- else if (replace
- && (GET_CODE (operand) == MEM
- || (GET_CODE (operand) == REG
- && REGNO (operand) >= FIRST_PSEUDO_REGISTER
- && reg_renumber [REGNO (operand)] < 0)))
+ else if (replace && GET_CODE (operand) == MEM)
{
operand = *recog_operand_loc[i];
@@ -4683,7 +4651,7 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn)
else if (regno < FIRST_PSEUDO_REGISTER
&& REGNO_MODE_OK_FOR_BASE_P (regno, mode)
- && ! regno_clobbered_p (regno, this_insn, GET_MODE (ad), 0))
+ && ! regno_clobbered_p (regno, this_insn))
return 0;
/* If we do not have one of the cases above, we must do the reload. */
@@ -5363,12 +5331,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
&& (*insn_operand_predicate[icode][0]) (equiv, Pmode)
&& (*insn_operand_predicate[icode][1]) (equiv, Pmode)))
{
- /* We use the original pseudo for loc, so that
- emit_reload_insns() knows which pseudo this
- reload refers to and updates the pseudo rtx, not
- its equivalent memory location, as well as the
- corresponding entry in reg_last_reload_reg. */
- loc = &XEXP (x_orig, 0);
+ loc = &XEXP (x, 0);
x = XEXP (x, 0);
reloadnum
= push_reload (x, x, loc, loc,
@@ -5376,6 +5339,13 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
GET_MODE (x), GET_MODE (x), 0, 0,
opnum, RELOAD_OTHER);
+ /* If we created a new MEM based on reg_equiv_mem[REGNO], then
+ LOC above is part of the new MEM, not the MEM in INSN.
+
+ We must also replace the address of the MEM in INSN. */
+ if (&XEXP (x_orig, 0) != loc)
+ push_replacement (&XEXP (x_orig, 0), reloadnum, VOIDmode);
+
}
else
{
@@ -5515,7 +5485,7 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
in this insn, reload it into some other register to be safe.
The CLOBBER is supposed to make the register unavailable
from before this insn to after it. */
- if (regno_clobbered_p (regno, this_insn, GET_MODE (x), 0))
+ if (regno_clobbered_p (regno, this_insn))
{
push_reload (x, NULL_RTX, loc, NULL_PTR,
(context ? INDEX_REG_CLASS : BASE_REG_CLASS),
@@ -6275,29 +6245,16 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
&& (valtry
= operand_subword (SET_DEST (pat), 1, 0, VOIDmode))
&& (valueno = true_regnum (valtry)) >= 0)))
- {
- if (other >= 0)
- {
- if (valueno != other)
- continue;
- }
- else if ((unsigned) valueno >= FIRST_PSEUDO_REGISTER)
- continue;
- else
- {
- int i;
-
- for (i = HARD_REGNO_NREGS (valueno, mode) - 1; i >= 0; i--)
- if (! TEST_HARD_REG_BIT (reg_class_contents[(int) class],
- valueno + i))
- break;
- if (i >= 0)
- continue;
- }
- value = valtry;
- where = p;
- break;
- }
+ if (other >= 0
+ ? valueno == other
+ : ((unsigned) valueno < FIRST_PSEUDO_REGISTER
+ && TEST_HARD_REG_BIT (reg_class_contents[(int) class],
+ valueno)))
+ {
+ value = valtry;
+ where = p;
+ break;
+ }
}
}
@@ -6340,22 +6297,15 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
&& regno < valueno + HARD_REGNO_NREGS (valueno, mode))
return 0;
- nregs = HARD_REGNO_NREGS (regno, mode);
- valuenregs = HARD_REGNO_NREGS (valueno, mode);
-
/* Reject VALUE if it is one of the regs reserved for reloads.
Reload1 knows how to reuse them anyway, and it would get
confused if we allocated one without its knowledge.
(Now that insns introduced by reload are ignored above,
this case shouldn't happen, but I'm not positive.) */
- if (reload_reg_p != 0 && reload_reg_p != (short *) (HOST_WIDE_INT) 1)
- {
- int i;
- for (i = 0; i < valuenregs; ++i)
- if (reload_reg_p[valueno + i] >= 0)
- return 0;
- }
+ if (reload_reg_p != 0 && reload_reg_p != (short *) (HOST_WIDE_INT) 1
+ && reload_reg_p[valueno] >= 0)
+ return 0;
/* On some machines, certain regs must always be rejected
because they don't behave the way ordinary registers do. */
@@ -6365,6 +6315,9 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
return 0;
#endif
+ nregs = HARD_REGNO_NREGS (regno, mode);
+ valuenregs = HARD_REGNO_NREGS (valueno, mode);
+
/* Reject VALUE if it is a register being used for an input reload
even if it is not one of those reserved. */
@@ -6400,23 +6353,16 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode)
/* Don't trust the conversion past a function call
if either of the two is in a call-clobbered register, or memory. */
- if (GET_CODE (p) == CALL_INSN)
- {
- int i;
-
- if (goal_mem || need_stable_sp)
- return 0;
-
- if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER)
- for (i = 0; i < nregs; ++i)
- if (call_used_regs[regno + i])
- return 0;
-
- if (valueno >= 0 && valueno < FIRST_PSEUDO_REGISTER)
- for (i = 0; i < valuenregs; ++i)
- if (call_used_regs[valueno + i])
- return 0;
- }
+ if (GET_CODE (p) == CALL_INSN
+ && ((regno >= 0 && regno < FIRST_PSEUDO_REGISTER
+ && call_used_regs[regno])
+ ||
+ (valueno >= 0 && valueno < FIRST_PSEUDO_REGISTER
+ && call_used_regs[valueno])
+ ||
+ goal_mem
+ || need_stable_sp))
+ return 0;
#ifdef NON_SAVING_SETJMP
if (NON_SAVING_SETJMP && GET_CODE (p) == NOTE
@@ -6652,23 +6598,13 @@ find_inc_amount (x, inced)
/* Return 1 if register REGNO is the subject of a clobber in insn INSN. */
int
-regno_clobbered_p (regno, insn, mode, sets)
+regno_clobbered_p (regno, insn)
int regno;
rtx insn;
- enum machine_mode mode;
- int sets;
{
- int nregs = HARD_REGNO_NREGS (regno, mode);
- int endregno = regno + nregs;
-
- if ((GET_CODE (PATTERN (insn)) == CLOBBER
- || (sets && GET_CODE (PATTERN (insn)) == SET))
+ if (GET_CODE (PATTERN (insn)) == CLOBBER
&& GET_CODE (XEXP (PATTERN (insn), 0)) == REG)
- {
- int test = REGNO (XEXP (PATTERN (insn), 0));
-
- return test >= regno && test < endregno;
- }
+ return REGNO (XEXP (PATTERN (insn), 0)) == regno;
if (GET_CODE (PATTERN (insn)) == PARALLEL)
{
@@ -6677,15 +6613,9 @@ regno_clobbered_p (regno, insn, mode, sets)
for (; i >= 0; i--)
{
rtx elt = XVECEXP (PATTERN (insn), 0, i);
- if ((GET_CODE (elt) == CLOBBER
- || (sets && GET_CODE (PATTERN (insn)) == SET))
- && GET_CODE (XEXP (elt, 0)) == REG)
- {
- int test = REGNO (XEXP (elt, 0));
-
- if (test >= regno && test < endregno)
- return 1;
- }
+ if (GET_CODE (elt) == CLOBBER && GET_CODE (XEXP (elt, 0)) == REG
+ && REGNO (XEXP (elt, 0)) == regno)
+ return 1;
}
}
diff --git a/gnu/egcs/gcc/reload.h b/gnu/egcs/gcc/reload.h
index 19988098ace..968d3124af4 100644
--- a/gnu/egcs/gcc/reload.h
+++ b/gnu/egcs/gcc/reload.h
@@ -1,6 +1,5 @@
/* Communication between reload.c and reload1.c.
- Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1987, 91-95, 97, 1998 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -297,7 +296,7 @@ extern rtx find_equiv_reg PROTO((rtx, rtx, enum reg_class, int, short *,
int, enum machine_mode));
/* Return 1 if register REGNO is the subject of a clobber in insn INSN. */
-extern int regno_clobbered_p PROTO((int, rtx, enum machine_mode, int));
+extern int regno_clobbered_p PROTO((int, rtx));
/* Functions in reload1.c: */
@@ -343,5 +342,3 @@ extern void save_call_clobbered_regs PROTO((void));
/* Replace (subreg (reg)) with the appropriate (reg) for any operands. */
extern void cleanup_subreg_operands PROTO ((rtx));
-
-extern int earlyclobber_operand_p PROTO((rtx));
diff --git a/gnu/egcs/gcc/rtlanal.c b/gnu/egcs/gcc/rtlanal.c
index d1b94323b36..fb4f87c07de 100644
--- a/gnu/egcs/gcc/rtlanal.c
+++ b/gnu/egcs/gcc/rtlanal.c
@@ -1,6 +1,5 @@
/* Analyze RTL for C-Compiler
- Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 92-98, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -2290,82 +2289,3 @@ auto_inc_p (x)
}
return 0;
}
-
-/* Return 1 if the sequence of instructions beginning with FROM and up
- to and including TO is safe to move. If NEW_TO is non-NULL, and
- the sequence is not already safe to move, but can be easily
- extended to a sequence which is safe, then NEW_TO will point to the
- end of the extended sequence.
-
- For now, this function only checks that the region contains whole
- exception regiongs, but it could be extended to check additional
- conditions as well. */
-
-int
-insns_safe_to_move_p (from, to, new_to)
- rtx from;
- rtx to;
- rtx *new_to;
-{
- int eh_region_count = 0;
- int past_to_p = 0;
- rtx r = from;
-
- /* By default, assume the end of the region will be what was
- suggested. */
- if (new_to)
- *new_to = to;
-
- while (r)
- {
- if (GET_CODE (r) == NOTE)
- {
- switch (NOTE_LINE_NUMBER (r))
- {
- case NOTE_INSN_EH_REGION_BEG:
- ++eh_region_count;
- break;
-
- case NOTE_INSN_EH_REGION_END:
- if (eh_region_count == 0)
- /* This sequence of instructions contains the end of
- an exception region, but not he beginning. Moving
- it will cause chaos. */
- return 0;
-
- --eh_region_count;
- break;
-
- default:
- break;
- }
- }
- else if (past_to_p)
- /* If we've passed TO, and we see a non-note instruction, we
- can't extend the sequence to a movable sequence. */
- return 0;
-
- if (r == to)
- {
- if (!new_to)
- /* It's OK to move the sequence if there were matched sets of
- exception region notes. */
- return eh_region_count == 0;
-
- past_to_p = 1;
- }
-
- /* It's OK to move the sequence if there were matched sets of
- exception region notes. */
- if (past_to_p && eh_region_count == 0)
- {
- *new_to = r;
- return 1;
- }
-
- /* Go to the next instruction. */
- r = NEXT_INSN (r);
- }
-
- return 0;
-}
diff --git a/gnu/egcs/gcc/sched.c b/gnu/egcs/gcc/sched.c
index f09a68ae369..f4e893987a2 100644
--- a/gnu/egcs/gcc/sched.c
+++ b/gnu/egcs/gcc/sched.c
@@ -587,7 +587,7 @@ insn_unit (insn)
range, don't cache it. */
if (FUNCTION_UNITS_SIZE < HOST_BITS_PER_SHORT
|| unit >= 0
- || (unit & ~((1 << (HOST_BITS_PER_SHORT - 1)) - 1)) == 0)
+ || (~unit & ((1 << (HOST_BITS_PER_SHORT - 1)) - 1)) == 0)
INSN_UNIT (insn) = unit;
}
return (unit > 0 ? unit - 1 : unit);
@@ -2309,15 +2309,12 @@ attach_deaths (x, insn, set_p)
if (regno >= FIRST_PSEUDO_REGISTER || ! global_regs[regno])
{
- /* Never add REG_DEAD notes for STACK_POINTER_REGNUM
- since it's always considered to be live. Similarly
- for FRAME_POINTER_REGNUM if a frame pointer is needed
- and for ARG_POINTER_REGNUM if it is fixed. */
- if (! (regno == FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ /* Never add REG_DEAD notes for the FRAME_POINTER_REGNUM or the
+ STACK_POINTER_REGNUM, since these are always considered to be
+ live. Similarly for ARG_POINTER_REGNUM if it is fixed. */
+ if (regno != FRAME_POINTER_REGNUM
#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && ! (regno == HARD_FRAME_POINTER_REGNUM
- && (! reload_completed || frame_pointer_needed))
+ && ! (regno == HARD_FRAME_POINTER_REGNUM)
#endif
#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
&& ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno])
diff --git a/gnu/egcs/gcc/system.h b/gnu/egcs/gcc/system.h
index 06457874667..3ec73a6cab1 100644
--- a/gnu/egcs/gcc/system.h
+++ b/gnu/egcs/gcc/system.h
@@ -1,6 +1,6 @@
/* system.h - Get common system includes and various definitions and
declarations based on autoconf macros.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -22,11 +22,6 @@ Boston, MA 02111-1307, USA. */
#ifndef __GCC_SYSTEM_H__
#define __GCC_SYSTEM_H__
-/* This is the location of the online document giving information how
- to report bugs. If you change this string, also check for strings
- not under control of the preprocessor. */
-#define GCCBUGURL "<URL:http://www.gnu.org/software/gcc/bugs.html>"
-
/* We must include stdarg.h/varargs.h before stdio.h. */
#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
@@ -254,9 +249,6 @@ extern int errno;
#ifndef WEXITSTATUS
#define WEXITSTATUS(S) (((S) & 0xff00) >> 8)
#endif
-#ifndef WSTOPSIG
-#define WSTOPSIG WEXITSTATUS
-#endif
@@ -338,10 +330,6 @@ extern char *getwd ();
extern char *sbrk ();
#endif
-#ifdef NEED_DECLARATION_STRSTR
-extern char *strstr ();
-#endif
-
#ifdef HAVE_STRERROR
# ifdef NEED_DECLARATION_STRERROR
# ifndef strerror
@@ -403,9 +391,9 @@ extern void fatal PVPROTO((const char *, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORE
trim_filename (__FILE__), __LINE__)
#else
#define abort() fatal ("Internal compiler error in `%s', at %s:%d\n" \
- "Please submit a full bug report.\n" \
- "See %s for instructions.", \
- __PRETTY_FUNCTION__, trim_filename (__FILE__), __LINE__, GCCBUGURL)
+ "Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.\n" \
+ "See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details.", \
+ __PRETTY_FUNCTION__, trim_filename (__FILE__), __LINE__)
#endif /* recent gcc */
/* trim_filename is in toplev.c. Define a stub macro for files that
diff --git a/gnu/egcs/gcc/testsuite/ChangeLog b/gnu/egcs/gcc/testsuite/ChangeLog
index 64ec141af16..e87f1843458 100644
--- a/gnu/egcs/gcc/testsuite/ChangeLog
+++ b/gnu/egcs/gcc/testsuite/ChangeLog
@@ -1,32 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 21:41:37 1999 Jeffrey A Law (law@cygnus.com)
-
- * README: More listname related changes.
-
-1999-06-05 Craig Burley <craig@jcb-sc.com>
-
- * g77.f-torture/compile/19990502-0.f: Replace with new,
- shorter, test that still fails after recent changes.
-
-Wed May 19 02:56:18 1999 Raja R Harinath <harinath@cs.umn.edu>
-
- * gcc.c-torture/compile/990519-1.c: New test.
-
1999-05-17 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* gcc.c-torture/compile/990517-1.c: New test.
diff --git a/gnu/egcs/gcc/testsuite/README b/gnu/egcs/gcc/testsuite/README
index 7d064730daf..2b336f5b29d 100644
--- a/gnu/egcs/gcc/testsuite/README
+++ b/gnu/egcs/gcc/testsuite/README
@@ -13,8 +13,8 @@ developers.
These tests are included "as is". If any of them fails, do not report
a bug. Bug reports for DejaGnu can go to bug-dejagnu@prep.ai.mit.edu.
Discussion and comments about this testsuite should be sent to
-gcc@gcc.gnu.org; additions and changes to should go to sent to
-gcc-patches@gcc.gnu.org.
+egcs@egcs.cygnus.com; additions and changes to should go to sent to
+egcs-patches@egcs.cygnus.com.
The entire testsuite is invoked by `make check` at the top level of
the EGCS tree. `make check-g++` runs the C++ testsuite only.
@@ -41,7 +41,7 @@ the following structure:
g++.other
g++.pt Tests for templates
g++.rfg
- g++.robertl Tests from gcc-bugs@gcc.gnu.org, gathered by Robert Lipe
+ g++.robertl Tests from egcs-bugs@egcs.cygnus.com, gathered by Robert Lipe
g++.old-deja uses a fixed driver for all g++ tests based on the old
DejaGnu drivers. But just because its old, doesn't mean its redundant!
diff --git a/gnu/egcs/gcc/testsuite/g++.old-deja/g++.pt/friend37.C b/gnu/egcs/gcc/testsuite/g++.old-deja/g++.pt/friend37.C
index c3ee4c7aaef..2379d5f1da7 100644
--- a/gnu/egcs/gcc/testsuite/g++.old-deja/g++.pt/friend37.C
+++ b/gnu/egcs/gcc/testsuite/g++.old-deja/g++.pt/friend37.C
@@ -1,7 +1,8 @@
// Build don't link:
// Simplified from report by Volker Dobler <volker@hugo.physik.uni-konstanz.de>
+// crash test - XFAIL *-*-*
+
template <class T> class A {
- friend int ice<>( int k=0 ); // ERROR - default argument
- friend inline int f<>(double); // ERROR - inline
+ friend int ice<>( int k=0 ); // ERROR - undeclared
};
diff --git a/gnu/egcs/gcc/testsuite/g77.f-torture/compile/19990502-0.f b/gnu/egcs/gcc/testsuite/g77.f-torture/compile/19990502-0.f
index 4f5d6859138..3c5cdc6ee61 100644
--- a/gnu/egcs/gcc/testsuite/g77.f-torture/compile/19990502-0.f
+++ b/gnu/egcs/gcc/testsuite/g77.f-torture/compile/19990502-0.f
@@ -1,66 +1,351 @@
-* Mailing-List: contact egcs-bugs-help@egcs.cygnus.com; run by ezmlm
-* Precedence: bulk
-* Sender: owner-egcs-bugs@egcs.cygnus.com
-* From: Norbert Conrad <Norbert.Conrad@hrz.uni-giessen.de>
-* Subject: egcs g77 19990524pre Internal compiler error in `print_operand'
-* To: egcs-bugs@egcs.cygnus.com
-* Date: Mon, 31 May 1999 11:46:52 +0200 (CET)
-* Content-Type: text/plain; charset=US-ASCII
-* X-UIDL: 9a00095a5fe4d774b7223de071157374
-*
-* Hi,
-*
-* I ./configure --prefix=/opt and bootstrapped egcs g77 snapshot 19990524
-* on an i686-pc-linux-gnu. The program below gives an internal compiler error.
-*
-*
-* Script started on Mon May 31 11:30:01 1999
-* lx{g010}:/tmp>/opt/bin/g77 -v -O3 -malign-double -c e3.f
-* g77 version gcc-2.95 19990524 (prerelease) (from FSF-g77 version 0.5.24-19990515)
-* Reading specs from /opt/lib/gcc-lib/i686-pc-linux-gnu/gcc-2.95/specs
-* gcc version gcc-2.95 19990524 (prerelease)
-* /opt/lib/gcc-lib/i686-pc-linux-gnu/gcc-2.95/f771 e3.f -quiet -dumpbase e3.f -malign-double -O3 -version -fversion -o /tmp/ccQgeaaa.s
-* GNU F77 version gcc-2.95 19990524 (prerelease) (i686-pc-linux-gnu) compiled by GNU C version gcc-2.95 19990524 (prerelease).
-* GNU Fortran Front End version 0.5.24-19990515
-* e3.f:25: Internal compiler error in `print_operand', at ./config/i386/i386.c:3405
-* Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.
-* See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details.
-* lx{g010}:/tmp>cat e3.f
- SUBROUTINE DLASQ2( QQ, EE, TOL2, SMALL2 )
- DOUBLE PRECISION SMALL2, TOL2
- DOUBLE PRECISION EE( * ), QQ( * )
- INTEGER ICONV, N, OFF
- DOUBLE PRECISION QEMAX, XINF
- EXTERNAL DLASQ3
- INTRINSIC MAX, SQRT
- XINF = 0.0D0
- ICONV = 0
- IF( EE( N ).LE.MAX( QQ( N ), XINF, SMALL2 )*TOL2 ) THEN
+ SUBROUTINE TRF2F2(QDERIV,QPRINT,
+ @ XRH,XRK,XRL,FCALC,FOBS,FPART,WEIGHT,TEST,FOM,
+ @ ITEST)
+C
+C Computes the standard linear correlation coefficient between
+C F(obs)^2 and F(calc)^2 or between |F(obs)| and |F(calc)|
+C
+C Author: Axel T. Brunger
+C =======================
+ IMPLICIT NONE
+C I/O
+C*
+C* BEGINNING OF INCLUDE FILE: xrefin.fcm
+C*
+C
+C XREFIN.FCM
+C
+C data structure for XREFIN.FLX
+C crystallographic restraints
+C
+C update flags
+ LOGICAL XRQCHK, XRUPAT, XRREUP
+C
+C method flag
+ LOGICAL QFFT, QLOOK
+C target function string
+ CHARACTER*4 XRTRGT
+C
+C tolerance for linear approximation
+ DOUBLE PRECISION XRLTOL
+C
+C x-ray diffraction data
+C XRMREF: max. allocation for reflections
+C XRNREF: current number of reflections
+C XRIREF: number of reflections within limits (resolution, f_window...)
+C XRNPHA: number of phase specifications
+C XRH, XRK, XRL: reflection indices
+C FOBS: observed structure factor
+C FOM: figure of merit for observed phases (zero if not used)
+C WEIGHT: individual weight
+C FCALC: calculated structure factor
+C FPART: partial structure factor to be added to FCALC
+C TEST: integer array for cross-validation tests
+ INTEGER XRMREF, XRNREF, XRIREF, XRNPHA
+ INTEGER HPH, HPK, HPL, HPFOBS, HPFCAL, HPFPAR, HPFOM
+ INTEGER HPWEIG, HPTEST, HPSIGM
+C scattering tables
+ INTEGER XRSM, XRSN
+ PARAMETER (XRSM=20)
+ DOUBLE PRECISION XRSA(XRSM,4), XRSB(XRSM,4), XRSC(XRSM)
+ DOUBLE PRECISION XRF(XRSM), XRSI(XRSM)
+C unit cell
+ DOUBLE PRECISION XRCELL(9), XRTR(3,3), XRINTR(3,3), XRVOL
+C symmetry operators
+ INTEGER XRNSYM, XRMSYM, XRSYTH
+ PARAMETER (XRMSYM=192, XRSYTH=24)
+ INTEGER XRSYMM(XRMSYM,3,4), XRITSY(XRMSYM,3,3)
+ LOGICAL QHERM
+C reciprocal resolution limits
+ DOUBLE PRECISION XRHIGH, XRLOW
+C fobs limits
+ DOUBLE PRECISION XRFLOW, XRFHIG
+C XREFIN atom lists
+ INTEGER XRMATO, XRNATO, XRNATF, HPFLAG, HPATOM, HPINDX
+ INTEGER HPATOF, HPINDF, HPFX, HPFY, HPFZ, HPFB, HPFQ, HPFQS
+ INTEGER HPDX, HPDY, HPDZ, HPDT, HPDQ
+C scale factor
+ DOUBLE PRECISION XRSCAL
+C phase potential scale factor and exponent
+ DOUBLE PRECISION XRPSCA
+ INTEGER XRPEXP
+C Fobs/Fcalc scale factor
+ DOUBLE PRECISION XRFFK
+ LOGICAL XRFFKQ
+C unscaled restraint energies
+ DOUBLE PRECISION XRE, XREPHA
+C number of bins for R factor analysis
+ INTEGER MBINS
+C logical flag indicating the presence of TEST sets (for
+C cross-validation)
+ LOGICAL XCVTEST
+C
+C double precision common block
+C
+ COMMON /XREFI/ XRLTOL,
+ @ XRSA, XRSB, XRSC, XRF, XRSI,
+ @ XRCELL, XRTR, XRINTR, XRHIGH, XRLOW,
+ @ XRSCAL, XRPSCA,
+ @ XRFFK, XRE, XREPHA,
+ @ XRFLOW, XRFHIG, XRVOL
+C
+C integer common block
+C
+ COMMON /IXREFI/
+ @ XRMREF, XRNREF, XRIREF, XRNPHA, HPH, HPK, HPL,
+ @ HPFOBS, HPFCAL, HPFPAR, HPFOM, HPWEIG, HPTEST,
+ @ HPSIGM, XRSN, HPFLAG,
+ @ XRMATO, XRNATO, HPATOM, HPINDX, XRNATF, HPATOF,
+ @ HPINDF, HPFX, HPFY, HPFZ, HPFB, HPFQ, HPFQS,
+ @ HPDX, HPDY, HPDZ, HPDT, HPDQ,
+ @ XRPEXP,
+ @ XRNSYM, XRSYMM, MBINS, XRITSY
+C
+C logical common block
+C
+ COMMON /LXREFI/ XRQCHK, XRUPAT, XRFFKQ,
+ @ QFFT, QLOOK, XRREUP, QHERM, XCVTEST
+C
+C character string common block
+C
+ COMMON /CXREFI/ XRTRGT
+C
+ SAVE /XREFI/
+ SAVE /IXREFI/
+ SAVE /LXREFI/
+ SAVE /CXREFI/
+C*
+C* BEGINNING OF INCLUDE FILE: consta.fcm
+C*
+C CONSTA.FCM
+C
+C this file contains all physical and mathematical constants
+C and conversion factors.
+C
+C at present the following units are used:
+C
+C length: Angstroms
+C time: ps
+C energy: Kcal/mol
+C mass: atomic-mass-unit
+C charge: electron-charge
+C
+C
+ DOUBLE PRECISION RSMALL
+ PARAMETER (RSMALL=1.0D-10)
+ DOUBLE PRECISION R4SMAL,R4BIG
+ PARAMETER (R4SMAL=0.0001D0,R4BIG=1.0D+10)
+C
+C physical constants in SI units
+C ------------------------------
+C Kb = 1.380662 E-23 J/K
+C Na = 6.022045 E23 1/mol
+C e = 1.6021892 E-19 C
+C eps = 8.85418782 E-12 F/m
+C
+C 1 Kcal = 4184.0 J
+C 1 amu = 1.6605655 E-27 Kg
+C 1 A = 1.0 E-10 m
+C
+C reference: CRC Handbook for Chemistry and Physics, 1983/84
+C
+C
+ DOUBLE PRECISION PI
+ PARAMETER(PI=3.1415926535898D0)
+C
+C TIMFAC is the conversion factor from AKMA time to picoseconds.
+C (TIMFAC = SQRT ( ( 1A )**2 * 1amu * Na / 1Kcal )
+C this factor is used only intrinsically, all I/O is in ps.
+C
+ DOUBLE PRECISION TIMFAC
+ PARAMETER (TIMFAC=0.04888821D0)
+C
+C KBOLTZ is Boltzman constant AKMA units (KBOLTZ = N *K / 1 Kcal)
+C a b
+ DOUBLE PRECISION KBOLTZ
+ PARAMETER (KBOLTZ=1.987191D-03)
+C
+C CCELEC is 1/ (4 pi eps ) in AKMA units, conversion from SI
+C units: CCELEC = e*e*Na / (4*pi*eps*1Kcal*1A)
+C
+ DOUBLE PRECISION CCELEC
+ PARAMETER (CCELEC=332.0636D0)
+C
+C CDEBHU is used in the Debye-Hueckel approximation:
+C DIV GRAD phi = kappa**2 phi
+C kappa**2 = CDEBHU * ionic_strength [M] / ( T [K] eps )
+C ext
+C where CDEBHU is defined as CDEBHU=2E+3 Na e**2 / (eps0 Kb )
+C (in SI units, ref: Gordon M.Barrow, Physical Chemistry,
+C McGraw Hill (1979) ) and ionic_strength is given in molar units.
+C The conversion to AKMA units brings another factor 1.0E-20.
+C
+ DOUBLE PRECISION CDEBHU
+ PARAMETER (CDEBHU=2529.09702D0)
+ LOGICAL QDERIV, QPRINT
+ INTEGER XRH(*), XRK(*), XRL(*)
+ DOUBLE COMPLEX FCALC(*), FOBS(*), FPART(*)
+ DOUBLE PRECISION WEIGHT(*)
+ INTEGER TEST(*)
+ DOUBLE PRECISION FOM(*)
+ INTEGER ITEST
+C local
+ INTEGER REFLCT
+ DOUBLE PRECISION CI, CJ, CII, CJJ, CIJ, IFCALC, IFOBS
+ DOUBLE PRECISION WSUM, DSUM, CSUM, DERIV, CORR
+ CHARACTER*30 LINE
+ INTEGER LLINE
+ DOUBLE COMPLEX DBCOMP
+C parameters
+ DOUBLE PRECISION ZERO, ONE, TWO, THREE, FOUR
+ PARAMETER (ZERO=0.0D0, ONE=1.0D0, TWO=2.0D0, THREE=3.0D0)
+ PARAMETER (FOUR=4.0D0)
+C begin
+C
+C initialize correlation coefficients
+ WSUM=ZERO
+ CI=ZERO
+ CJ=ZERO
+ CII=ZERO
+ CJJ=ZERO
+ CIJ=ZERO
+ IF (XRTRGT.EQ.'F2F2') THEN
+ DO 17790 REFLCT=1,XRIREF
+ IF (TEST(REFLCT).EQ.ITEST) THEN
+C
+C compute F^2's
+ IFOBS=DREAL(FOBS(REFLCT))**2+DIMAG(FOBS(REFLCT))**2
+ IFCALC=DREAL(FCALC(REFLCT)+FPART(REFLCT))**2
+ @ +DIMAG(FCALC(REFLCT)+FPART(REFLCT))**2
+C
+C accumulate information for weighted correlation coefficients
+ WSUM=WSUM+WEIGHT(REFLCT)
+ CI=CI+WEIGHT(REFLCT)*IFOBS
+ CJ=CJ+WEIGHT(REFLCT)*IFCALC
+ CII=CII+WEIGHT(REFLCT)*IFOBS**2
+ CJJ=CJJ+WEIGHT(REFLCT)*IFCALC**2
+ CIJ=CIJ+WEIGHT(REFLCT)*IFOBS*IFCALC
END IF
- IF( EE( N-2 ).LE.MAX( XINF, SMALL2,
- $ ( QQ( N ) / ( QQ( N )+EE( N-1 ) ) )* QQ( N-1 ))*TOL2 ) THEN
- QEMAX = MAX( QQ( N ), QQ( N-1 ), EE( N-1 ) )
+17790 CONTINUE
+ ELSE
+ DO 17791 REFLCT=1,XRIREF
+ IF (TEST(REFLCT).EQ.ITEST) THEN
+C
+C compute |F|'s
+ IFOBS=SQRT(DREAL(FOBS(REFLCT))**2+DIMAG(FOBS(REFLCT))**2)
+ IFCALC=SQRT(DREAL(FCALC(REFLCT)+FPART(REFLCT))**2
+ @ +DIMAG(FCALC(REFLCT)+FPART(REFLCT))**2)
+C
+C accumulate information for weighted correlation coefficients
+ WSUM=WSUM+WEIGHT(REFLCT)
+ CI=CI+WEIGHT(REFLCT)*IFOBS
+ CJ=CJ+WEIGHT(REFLCT)*IFCALC
+ CII=CII+WEIGHT(REFLCT)*IFOBS**2
+ CJJ=CJJ+WEIGHT(REFLCT)*IFCALC**2
+ CIJ=CIJ+WEIGHT(REFLCT)*IFOBS*IFCALC
END IF
- IF( N.EQ.0 ) THEN
- IF( OFF.EQ.0 ) THEN
- RETURN
- ELSE
- XINF =0.0D0
- END IF
- ELSE IF( N.EQ.2 ) THEN
+17791 CONTINUE
END IF
- CALL DLASQ3(ICONV)
+C
+C do some checking
+ IF (ABS(CI).LT.RSMALL) THEN
+ WRITE(6,'(A,I3,A)')
+ @ ' %TRF2F2-error: sum over WEIGHT*FOBS is zero (for TEST=',
+ @ ITEST,')'
+ ELSE IF (ABS(CJ).LT.RSMALL) THEN
+ WRITE(6,'(A,I3,A)')
+ @' %TRF2F2-error: sum over WEIGHT*(FCALC+FPART) is 0 (for TEST=',
+ @ ITEST,')'
+ ELSE
+C
+C compute weighted correlation coefficient
+ DSUM=(CII-CI**2/WSUM)*(CJJ-CJ**2/WSUM)
+ CSUM=CIJ - CI*CJ/WSUM
+ IF (DSUM.GT.RSMALL) THEN
+ DSUM=SQRT(DSUM)
+ CORR=CSUM/DSUM
+ ELSE
+ CORR=ZERO
+ END IF
+C
+C store in energy term
+ XRE=XRSCAL*(ONE-CORR)
+C
+C compute derivatives if required
+ IF (QDERIV) THEN
+C
+C compute derivatives for F's
+ IF (XRTRGT.EQ.'F2F2') THEN
+ DO 17792 REFLCT=1,XRIREF
+ IF (TEST(REFLCT).EQ.ITEST) THEN
+C
+C compute amplitudes
+ IFOBS=DREAL(FOBS(REFLCT))**2+DIMAG(FOBS(REFLCT))**2
+ IFCALC=DREAL(FCALC(REFLCT)+FPART(REFLCT))**2
+ @ +DIMAG(FCALC(REFLCT)+FPART(REFLCT))**2
+C
+C compute derivative with respect to FCALC(H)
+ IF (DSUM.GT.RSMALL) THEN
+ DERIV=-TWO*XRSCAL*WEIGHT(REFLCT)*( (IFOBS-CI/WSUM)/DSUM -
+ @ (CORR/DSUM**2)*(CII-CI**2/WSUM)*(IFCALC-CJ/WSUM) )
+ ELSE
+ DERIV=ZERO
+ END IF
+ FCALC(REFLCT)=(FCALC(REFLCT)+FPART(REFLCT))*DERIV
+ ELSE
+ FCALC(REFLCT)=ZERO
+ END IF
+17792 CONTINUE
+ ELSE
+ DO 17793 REFLCT=1,XRIREF
+ IF (TEST(REFLCT).EQ.ITEST) THEN
+C
+C compute amplitudes
+ IFOBS=SQRT(DREAL(FOBS(REFLCT))**2+DIMAG(FOBS(REFLCT))**2)
+ IFCALC=SQRT(DREAL(FCALC(REFLCT)+FPART(REFLCT))**2
+ @ +DIMAG(FCALC(REFLCT)+FPART(REFLCT))**2)
+C
+C compute derivative with respect to |FCALC|(H)
+ IF (DSUM.GT.RSMALL.AND.IFCALC.GT.RSMALL) THEN
+ DERIV=-XRSCAL*WEIGHT(REFLCT)*( (IFOBS-CI/WSUM)/DSUM -
+ @ (CORR/DSUM**2)*(CII-CI**2/WSUM)*(IFCALC-CJ/WSUM) ) /
+ @ IFCALC
+ ELSE
+ DERIV=ZERO
+ END IF
+ FCALC(REFLCT)=(FCALC(REFLCT)+FPART(REFLCT))*DERIV
+ ELSE
+ FCALC(REFLCT)=ZERO
+ END IF
+17793 CONTINUE
+ END IF
+ END IF
+C
+ IF (QPRINT) THEN
+ IF (XCVTEST.AND.ITEST.EQ.0) THEN
+ CALL DECLAR( 'CORR', 'DP', ' ', DBCOMP, CORR )
+ LINE=' ->[WORKING SET (TEST=0)]'
+ LLINE=25
+ ELSEIF (XCVTEST.AND.ITEST.EQ.1) THEN
+ CALL DECLAR( 'TEST_CORR', 'DP', ' ', DBCOMP, CORR )
+ LINE=' ->[TEST SET (TEST=1)] '
+ LLINE=22
+ ELSE
+ CALL DECLAR( 'CORR', 'DP', ' ', DBCOMP, CORR )
+ LINE=' '
+ LLINE=1
+ END IF
+ IF (XRTRGT.EQ.'F2F2') THEN
+ WRITE(6,'(3A,F12.3)')
+ @ ' TRF2F2:',LINE(1:LLINE),
+ @ ' Corr<F(obs)^2, F(calc)^2> =',CORR
+ ELSE
+ WRITE(6,'(3A,F12.3)')
+ @ ' TRF2F2:',LINE(1:LLINE),
+ @ ' Corr<|F(obs)|, |F(calc)|> =',CORR
+ END IF
+ END IF
+C
+ END IF
+ RETURN
END
-* lx{g010}:/tmp>exit
-*
-* Script done on Mon May 31 11:30:23 1999
-*
-* Best regards,
-*
-* Norbert.
-* --
-* Norbert Conrad phone: ++49 641 9913021
-* Hochschulrechenzentrum email: conrad@hrz.uni-giessen.de
-* Heinrich-Buff-Ring 44
-* 35392 Giessen
-* Germany
diff --git a/gnu/egcs/gcc/testsuite/gcc.c-torture/ChangeLog b/gnu/egcs/gcc/testsuite/gcc.c-torture/ChangeLog
index 9fc47901c02..2d435aac668 100644
--- a/gnu/egcs/gcc/testsuite/gcc.c-torture/ChangeLog
+++ b/gnu/egcs/gcc/testsuite/gcc.c-torture/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
Wed Apr 7 23:08:59 1999 Jim Wilson <wilson@cygnus.com>
* execute/920501-7.c (main): Delete __I960__ ifndef.
diff --git a/gnu/egcs/gcc/tree.c b/gnu/egcs/gcc/tree.c
index 31bfd9a60b9..b61c11587ec 100644
--- a/gnu/egcs/gcc/tree.c
+++ b/gnu/egcs/gcc/tree.c
@@ -1,6 +1,5 @@
/* Language-independent node constructors for parse phase of GNU compiler.
- Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 92-98, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -1122,26 +1121,6 @@ make_node (code)
case 'c':
TREE_CONSTANT (t) = 1;
break;
-
- case 'e':
- switch (code)
- {
- case INIT_EXPR:
- case MODIFY_EXPR:
- case RTL_EXPR:
- case PREDECREMENT_EXPR:
- case PREINCREMENT_EXPR:
- case POSTDECREMENT_EXPR:
- case POSTINCREMENT_EXPR:
- /* All of these have side-effects, no matter what their
- operands are. */
- TREE_SIDE_EFFECTS (t) = 1;
- break;
-
- default:
- break;
- }
- break;
}
return t;
@@ -3128,24 +3107,6 @@ build1 (code, type, node)
TREE_RAISES (t) = 1;
}
- switch (code)
- {
- case INIT_EXPR:
- case MODIFY_EXPR:
- case RTL_EXPR:
- case PREDECREMENT_EXPR:
- case PREINCREMENT_EXPR:
- case POSTDECREMENT_EXPR:
- case POSTINCREMENT_EXPR:
- /* All of these have side-effects, no matter what their
- operands are. */
- TREE_SIDE_EFFECTS (t) = 1;
- break;
-
- default:
- break;
- }
-
return t;
}
@@ -3339,6 +3300,7 @@ build_type_attribute_variant (ttype, attribute)
current_obstack = TYPE_OBSTACK (ttype);
ntype = copy_node (ttype);
+ current_obstack = ambient_obstack;
TYPE_POINTER_TO (ntype) = 0;
TYPE_REFERENCE_TO (ntype) = 0;
@@ -3373,12 +3335,6 @@ build_type_attribute_variant (ttype, attribute)
ntype = type_hash_canon (hashcode, ntype);
ttype = build_qualified_type (ntype, TYPE_QUALS (ttype));
-
- /* We must restore the current obstack after the type_hash_canon call,
- because type_hash_canon calls type_hash_add for permanent types, and
- then type_hash_add calls oballoc expecting to get something permanent
- back. */
- current_obstack = ambient_obstack;
}
return ttype;
diff --git a/gnu/egcs/gcc/tree.def b/gnu/egcs/gcc/tree.def
index 2056c629fbb..64fe0e4c89b 100644
--- a/gnu/egcs/gcc/tree.def
+++ b/gnu/egcs/gcc/tree.def
@@ -98,14 +98,8 @@ DEFTREECODE (BLOCK, "block", 'b', 0)
points to the start of the chain.
The TYPE_NONCOPIED_PARTS field is a list specifying which parts
of an object of this type should *not* be copied by assignment.
- The TREE_VALUE of each is a FIELD_DECL that should not be
- copied. The TREE_PURPOSE is an initial value for that field when
- an object of this type is initialized via an INIT_EXPR. It may
- be NULL if no special value is required. Even the things in this
- list are copied if the right-hand side of an assignment is known
- to be a complete object (rather than being, perhaps, a subobject
- of some other object.) The determination of what constitutes a
- complete object is done by fixed_type_p.
+ The TREE_PURPOSE of each element is the offset of the part
+ and the TREE_VALUE is the size in bits of the part.
The TYPE_NAME field contains info on the name used in the program
for this type (for GDB symbol table output). It is either a
TYPE_DECL node, for types that are typedefs, or an IDENTIFIER_NODE
diff --git a/gnu/egcs/gcc/unroll.c b/gnu/egcs/gcc/unroll.c
index 34fb8f17df5..7e584c961d0 100644
--- a/gnu/egcs/gcc/unroll.c
+++ b/gnu/egcs/gcc/unroll.c
@@ -1,6 +1,5 @@
/* Try to unroll loops, and split induction variables.
- Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000 Free Software
- Foundation, Inc.
+ Copyright (C) 1992, 93, 94, 95, 97, 98, 1999 Free Software Foundation, Inc.
Contributed by James E. Wilson, Cygnus Support/UC Berkeley.
This file is part of GNU CC.
@@ -1263,18 +1262,7 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
insn = NEXT_INSN (copy_start);
while (insn != safety_label)
{
- /* ??? Don't delete named code labels. They will be deleted when the
- jump that references them is deleted. Otherwise, we end up deleting
- them twice, which causes them to completely disappear instead of turn
- into NOTE_INSN_DELETED_LABEL notes. This in turn causes aborts in
- dwarfout.c/dwarf2out.c. We could perhaps fix the dwarf*out.c files
- to handle deleted labels instead. Or perhaps fix DECL_RTL of the
- associated LABEL_DECL to point to one of the new label instances. */
- /* ??? Likewise, we can't delete a NOTE_INSN_DELETED_LABEL note. */
- if (insn != start_label
- && ! (GET_CODE (insn) == CODE_LABEL && LABEL_NAME (insn))
- && ! (GET_CODE (insn) == NOTE
- && NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL))
+ if (insn != start_label)
insn = delete_insn (insn);
else
insn = NEXT_INSN (insn);
@@ -3683,14 +3671,10 @@ loop_iterations (loop_start, loop_end, loop_info)
return 0;
}
- /* The only new registers that are created before loop iterations
- are givs made from biv increments or registers created by
- load_mems. In the latter case, it is possible that try_copy_prop
- will propagate a new pseudo into the old iteration register but
- this will be marked by having the REG_USERVAR_P bit set. */
+ /* The only new registers that care created before loop iterations are
+ givs made from biv increments, so this should never occur. */
- if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements
- && ! REG_USERVAR_P (iteration_var))
+ if ((unsigned) REGNO (iteration_var) >= reg_iv_type->num_elements)
abort ();
iteration_info (iteration_var, &initial_value, &increment,
diff --git a/gnu/egcs/gcc/varasm.c b/gnu/egcs/gcc/varasm.c
index 56fe2ad96b8..e4eef2d9b49 100644
--- a/gnu/egcs/gcc/varasm.c
+++ b/gnu/egcs/gcc/varasm.c
@@ -1,6 +1,5 @@
/* Output variables, constants and external declarations, for GNU compiler.
- Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 89, 92-98, 1999 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -73,6 +72,14 @@ Boston, MA 02111-1307, USA. */
#endif
#define CHKR_PREFIX_SIZE (sizeof (CHKR_PREFIX) - 1)
+/* This macro gets just the user-specified name
+ out of the string in a SYMBOL_REF. On most machines,
+ we discard the * if any and that's all. */
+#ifndef STRIP_NAME_ENCODING
+#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
+ (VAR) = ((SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*'))
+#endif
+
/* File in which assembler code is being written. */
extern FILE *asm_out_file;
@@ -142,7 +149,6 @@ static void mark_constants PROTO((rtx));
static int output_addressed_constants PROTO((tree));
static void output_after_function_constants PROTO((void));
static void output_constructor PROTO((tree, int));
-static void remove_from_pending_weak_list PROTO ((char *));
#ifdef ASM_OUTPUT_BSS
static void asm_output_bss PROTO((FILE *, tree, char *, int, int));
#endif
@@ -1014,13 +1020,7 @@ assemble_start_function (decl, fnname)
#ifdef ASM_WEAKEN_LABEL
if (DECL_WEAK (decl))
- {
- ASM_WEAKEN_LABEL (asm_out_file, fnname);
- /* Remove this function from the pending weak list so that
- we do not emit multiple .weak directives for it. */
- remove_from_pending_weak_list
- (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
- }
+ ASM_WEAKEN_LABEL (asm_out_file, fnname);
else
#endif
ASM_GLOBALIZE_LABEL (asm_out_file, fnname);
@@ -1453,14 +1453,8 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
if (TREE_PUBLIC (decl) && DECL_NAME (decl))
{
#ifdef ASM_WEAKEN_LABEL
- if (DECL_WEAK (decl))
- {
- ASM_WEAKEN_LABEL (asm_out_file, name);
- /* Remove this variable from the pending weak list so that
- we do not emit multiple .weak directives for it. */
- remove_from_pending_weak_list
- (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
- }
+ if (DECL_WEAK (decl))
+ ASM_WEAKEN_LABEL (asm_out_file, name);
else
#endif
ASM_GLOBALIZE_LABEL (asm_out_file, name);
@@ -3494,18 +3488,6 @@ force_const_mem (mode, x)
pop_obstacks ();
}
- if (GET_CODE (x) == LABEL_REF)
- {
- extern rtx forced_labels;
-
- push_obstacks_nochange ();
- rtl_in_saveable_obstack ();
-
- forced_labels = gen_rtx_EXPR_LIST (VOIDmode,
- XEXP (x, 0),
- forced_labels);
- pop_obstacks ();
- }
/* Allocate a pool constant descriptor, fill it in, and chain it in. */
@@ -3915,13 +3897,6 @@ output_constant (exp, size)
{
register enum tree_code code = TREE_CODE (TREE_TYPE (exp));
- /* Some front-ends use constants other than the standard
- language-indepdent varieties, but which may still be output
- directly. Give the front-end a chance to convert EXP to a
- language-independent representation. */
- if (lang_expand_constant)
- exp = (*lang_expand_constant) (exp);
-
if (size == 0 || flag_syntax_only)
return;
@@ -4377,32 +4352,9 @@ weak_finish ()
struct weak_syms *t;
for (t = weak_decls; t; t = t->next)
{
- if (t->name)
- {
- ASM_WEAKEN_LABEL (asm_out_file, t->name);
- if (t->value)
- ASM_OUTPUT_DEF (asm_out_file, t->name, t->value);
- }
- }
- }
-#endif
-}
-
-/* Remove NAME from the pending list of weak symbols. This prevents
- the compiler from emitting multiple .weak directives which confuses
- some assemblers. */
-static void
-remove_from_pending_weak_list (name)
- char *name;
-{
-#ifdef HANDLE_PRAGMA_WEAK
- if (HANDLE_PRAGMA_WEAK)
- {
- struct weak_syms *t;
- for (t = weak_decls; t; t = t->next)
- {
- if (t->name && strcmp (name, t->name) == 0)
- t->name = NULL;
+ ASM_WEAKEN_LABEL (asm_out_file, t->name);
+ if (t->value)
+ ASM_OUTPUT_DEF (asm_out_file, t->name, t->value);
}
}
#endif
@@ -4424,13 +4376,7 @@ assemble_alias (decl, target)
{
#ifdef ASM_WEAKEN_LABEL
if (DECL_WEAK (decl))
- {
- ASM_WEAKEN_LABEL (asm_out_file, name);
- /* Remove this function from the pending weak list so that
- we do not emit multiple .weak directives for it. */
- remove_from_pending_weak_list
- (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
- }
+ ASM_WEAKEN_LABEL (asm_out_file, name);
else
#endif
ASM_GLOBALIZE_LABEL (asm_out_file, name);
diff --git a/gnu/egcs/libio/ChangeLog b/gnu/egcs/libio/ChangeLog
index ead89e4b1ea..aa546a46c4c 100644
--- a/gnu/egcs/libio/ChangeLog
+++ b/gnu/egcs/libio/ChangeLog
@@ -1,91 +1,3 @@
-2000-12-10 Bernd Schmidt <bernds@redhat.com>
-
- 2000-10-16 Jakub Jelinek <jakub@redhat.com>
- * iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >= 2]:
- Initialize new fields wide and i18n of struct printf_info.
- (ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 2]:
- Likewise.
-
- 2000-09-23 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
- * stdstreams.cc: Include <libio.h>, not "libio.h".
- * iolibio.h: Likewise.
- (_IO_pos_BAD): Use _IO_off_t instead of _IO_fpos_t.
- * libio.h (_IO_USER_LOCK): Define.
-
- 1999-12-22 Jakub Jelinek <jakub@redhat.com>
- * libio.h (_IO_cookie_io_functions_t): Use _IO_off_t instead of
- _IO_fpos_t.
- (_IO_seekoff, _IO_seekpos): Likewise. Use _IO_off64_t instead of
- _IO_fpos64_t.
- * libioP.h (_IO_seekoff_t, _IO_seekpos_t, _IO_seek_t): Likewise.
- (_IO_seekoff, _IO_seekpos): Likewise.
- (_IO_default_seekoff, _IO_default_seekpos): Likewise.
- (_IO_default_seek): Likewise.
- (_IO_file_seekoff, _IO_file_seek, _IO_str_seekoff): Likewise.
- * streambuf.h (streampos): Typedef to _IO_off_t resp. _IO_off64_t.
- * parsestream.h (class parsebuf::pos_at_line_start): Change type
- to _IO_off_t.
-
-2000-01-28 Martin v. Löwis <loewis@informatik.hu-berlin.de>
-
- * fstream.h (ifstream::ifstream): Add ios::in to mode.
- (ifstream::open): Likewise.
- (ofstream::ofstream): Add ios::out to mode.
- (ofstream::open): Likewise.
-
-1999-12-21 Martin v. Löwis <loewis@informatik.hu-berlin.de>
-
- * filebuf.cc (open): Support ios::ate if _G_HAVE_IO_FILE_OPEN.
- Remove seek for ios::app if not.
-
-1999-12-14 Martin v. Löwis <loewis@informatik.hu-berlin.de>
-
- * strstream.h (strstreambuf::streambuf): Rename parameters to
- avoid shadow warning.
- * stream.h (WS): Likewise.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-1999-08-08 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * streambuf.h (ios::streamsize): Declare as _IO_ssize_t, as in the
- global scope.
-
-1999-08-07 Andreas Schwab <schwab@suse.de>
-
- * iostream.cc: Add missing calls to isfx and setup a cleanup
- region for the locked stream.
- * iostream.h: Likewise.
- * isgetline.cc: Likewise.
- * isgetsb.cc: Likewise.
- * isscan.cc: Likewise.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Mon Jun 28 09:25:23 1999 Hans-Peter Nilsson <hp@bitrange.com>
-
- * configure.in (post-target): Use "$(topsrcdir)", not "$(srcdir)/..".
-
-1999-05-20 Angela Marie Thomas <angela@cygnus.com>
-
- * configure.in: Test for ${compiler_name}.exe as well.
-
-1999-05-17 Mark Kettenis <kettenis@gnu.org>
-
- * libioP.h: Only include libc-lock.h if _IO_MTSAFE_IO is defined.
-
1999-05-12 Jason Merrill <jason@yorick.cygnus.com>
* configure.in (compiler_name): Don't do the skip-this-dir thing
diff --git a/gnu/egcs/libio/configure.in b/gnu/egcs/libio/configure.in
index ac494296fe2..084e901aabf 100644
--- a/gnu/egcs/libio/configure.in
+++ b/gnu/egcs/libio/configure.in
@@ -2,6 +2,18 @@
# necessary for a configure script to process the program in
# this directory. For more information, look at ../configure.
+# find a possible extension of the just-built C++ compiler. Note that this
+# is not the only choice, taking into cross and canadian cross into
+# account, and we need to search for with and without the extension.
+case "${host_alias}" in
+*cygwin* | *mingw32*)
+ EXEEXT=.exe
+ ;;
+*)
+ EXEEXT=
+ ;;
+esac
+
# If the language specific compiler does not exist, but the "gcc" directory
# does, we do not build anything. Note, $r is set by the top-level Makefile.
# Note that when we look for the compiler, we search both with and without
@@ -13,7 +25,7 @@ rm -f skip-this-dir
if test -n "$r" && [ -z "$norecursion" ] ; then
if test -d "$r"/gcc; then
if test -f "$r"/gcc/$compiler_name \
- || test -f "$r"/gcc/$compiler_name.exe; then
+ || test -f "$r"/gcc/$compiler_name$EXEEXT; then
true
else
echo "rm -f multilib.out" > skip-this-dir
@@ -188,7 +200,7 @@ if test x${gxx_include_dir} = x; then
if test x${enable_version_specific_runtime_libs} = xyes; then
gxx_include_dir='${libsubdir}/include/g++'
else
- . ${topsrcdir}/config.if
+ topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
gxx_include_dir='${prefix}/include/g++'-${libstdcxx_interface}
fi
fi
diff --git a/gnu/egcs/libio/dbz/dbzmain.c b/gnu/egcs/libio/dbz/dbzmain.c
index c9e538c2076..281350954cf 100644
--- a/gnu/egcs/libio/dbz/dbzmain.c
+++ b/gnu/egcs/libio/dbz/dbzmain.c
@@ -19,7 +19,7 @@
#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
#ifndef lint
-static char RCSid[] = "$Header: /cvs/OpenBSD/src/gnu/egcs/libio/dbz/dbzmain.c,v 1.1.1.4 2001/01/29 15:26:38 espie Exp $";
+static char RCSid[] = "$Header: /cvs/OpenBSD/src/gnu/egcs/libio/dbz/Attic/dbzmain.c,v 1.1 1999/05/26 13:38:40 espie Exp $";
#endif
char *progname;
diff --git a/gnu/egcs/libio/dbz/fake.c b/gnu/egcs/libio/dbz/fake.c
index 785e4fa5c91..41ae161b203 100644
--- a/gnu/egcs/libio/dbz/fake.c
+++ b/gnu/egcs/libio/dbz/fake.c
@@ -13,7 +13,7 @@
#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
#ifndef lint
-static char RCSid[] = "$Header: /cvs/OpenBSD/src/gnu/egcs/libio/dbz/fake.c,v 1.1.1.4 2001/01/29 15:26:38 espie Exp $";
+static char RCSid[] = "$Header: /cvs/OpenBSD/src/gnu/egcs/libio/dbz/Attic/fake.c,v 1.1 1999/05/26 13:38:40 espie Exp $";
#endif
int midonly = 0; /* just message ids, rest not realistic */
diff --git a/gnu/egcs/libio/filebuf.cc b/gnu/egcs/libio/filebuf.cc
index 0b0fd6d88d3..422d442736e 100644
--- a/gnu/egcs/libio/filebuf.cc
+++ b/gnu/egcs/libio/filebuf.cc
@@ -1,5 +1,5 @@
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
-Copyright (C) 1993, 1995, 1999 Free Software Foundation
+Copyright (C) 1993, 1995 Free Software Foundation
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
@@ -112,23 +112,15 @@ filebuf* filebuf::open(const char *filename, ios::openmode mode, int prot)
if (mode & (int)ios::noreplace)
posix_mode |= O_EXCL;
#if _G_HAVE_IO_FILE_OPEN
- if (!_IO_file_open (this, filename, posix_mode, prot,
- read_write, 0))
- return NULL;
- if (mode & ios::ate) {
- if (pubseekoff(0, ios::end) == EOF) {
- _IO_un_link (this);
- return NULL;
- }
- }
- return this;
+ return (filebuf*)_IO_file_open (this, filename, posix_mode, prot,
+ read_write, 0);
#else
int fd = ::open(filename, posix_mode, prot);
if (fd < 0)
return NULL;
_fileno = fd;
xsetflags(read_write, _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING);
- if (mode & ios::ate) {
+ if (mode & (ios::ate|ios::app)) {
if (pubseekoff(0, ios::end) == EOF)
return NULL;
}
diff --git a/gnu/egcs/libio/fstream.h b/gnu/egcs/libio/fstream.h
index b5f6598538f..ea98f5caed0 100644
--- a/gnu/egcs/libio/fstream.h
+++ b/gnu/egcs/libio/fstream.h
@@ -1,5 +1,5 @@
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
-Copyright (C) 1993, 2000 Free Software Foundation
+Copyright (C) 1993 Free Software Foundation
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
@@ -62,9 +62,9 @@ class ifstream : public fstreambase, public istream {
ifstream(int fd) : fstreambase(fd) { }
ifstream(int fd, char *p, int l) : fstreambase(fd, p, l) { } /*Deprecated*/
ifstream(const char *name, int mode=ios::in, int prot=0664)
- : fstreambase(name, mode | ios::in, prot) { }
+ : fstreambase(name, mode, prot) { }
void open(const char *name, int mode=ios::in, int prot=0664)
- { fstreambase::open(name, mode | ios::in, prot); }
+ { fstreambase::open(name, mode, prot); }
};
class ofstream : public fstreambase, public ostream {
@@ -73,9 +73,9 @@ class ofstream : public fstreambase, public ostream {
ofstream(int fd) : fstreambase(fd) { }
ofstream(int fd, char *p, int l) : fstreambase(fd, p, l) { } /*Deprecated*/
ofstream(const char *name, int mode=ios::out, int prot=0664)
- : fstreambase(name, mode | ios::out, prot) { }
+ : fstreambase(name, mode, prot) { }
void open(const char *name, int mode=ios::out, int prot=0664)
- { fstreambase::open(name, mode | ios::out, prot); }
+ { fstreambase::open(name, mode, prot); }
};
class fstream : public fstreambase, public iostream {
diff --git a/gnu/egcs/libio/iolibio.h b/gnu/egcs/libio/iolibio.h
index 0ebc14f7ac2..083b198b448 100644
--- a/gnu/egcs/libio/iolibio.h
+++ b/gnu/egcs/libio/iolibio.h
@@ -1,4 +1,4 @@
-#include <libio.h>
+#include "libio.h"
/* These emulate stdio functionality, but with a different name
(_IO_ungetc instead of ungetc), and using _IO_FILE instead of FILE. */
@@ -38,11 +38,7 @@ extern int _IO_obstack_vprintf __P ((struct obstack *, const char *,
_IO_va_list));
extern int _IO_obstack_printf __P ((struct obstack *, const char *, ...));
#ifndef _IO_pos_BAD
-# if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-# define _IO_pos_BAD ((_IO_off64_t) -1)
-# else
-# define _IO_pos_BAD ((_IO_off_t) -1)
-# endif
+#define _IO_pos_BAD ((_IO_fpos_t)(-1))
#endif
#define _IO_clearerr(FP) ((FP)->_flags &= ~(_IO_ERR_SEEN|_IO_EOF_SEEN))
#define _IO_fseek(__fp, __offset, __whence) \
diff --git a/gnu/egcs/libio/iostream.cc b/gnu/egcs/libio/iostream.cc
index 792eaae6b4c..4b1d9d80a9b 100644
--- a/gnu/egcs/libio/iostream.cc
+++ b/gnu/egcs/libio/iostream.cc
@@ -1,5 +1,5 @@
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
- Copyright (C) 1993, 1997, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997 Free Software Foundation, Inc.
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
@@ -71,8 +71,6 @@ int skip_ws(streambuf* sb)
istream& istream::get(char& c)
{
if (ipfx1()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
int ch = _strbuf->sbumpc();
if (ch == EOF) {
set(ios::eofbit|ios::failbit);
@@ -82,8 +80,6 @@ istream& istream::get(char& c)
c = (char)ch;
_gcount = 1;
}
- isfx();
- _IO_cleanup_region_end (0);
}
else
_gcount = 0;
@@ -106,12 +102,10 @@ istream& istream::ignore(int n /* = 1 */, int delim /* = EOF */)
{
_gcount = 0;
if (ipfx1()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
register streambuf* sb = _strbuf;
if (delim == EOF) {
_gcount = sb->ignore(n);
- goto unlock;
+ return *this;
}
for (;;) {
#if 0
@@ -128,9 +122,6 @@ istream& istream::ignore(int n /* = 1 */, int delim /* = EOF */)
if (ch == delim)
break;
}
- unlock:
- isfx();
- _IO_cleanup_region_end (0);
}
return *this;
}
@@ -138,13 +129,9 @@ istream& istream::ignore(int n /* = 1 */, int delim /* = EOF */)
istream& istream::read(char *s, streamsize n)
{
if (ipfx1()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
_gcount = _strbuf->sgetn(s, n);
if (_gcount != n)
set(ios::failbit|ios::eofbit);
- isfx();
- _IO_cleanup_region_end (0);
}
else
_gcount = 0;
@@ -197,15 +184,11 @@ streampos istream::tellg()
istream& istream::operator>>(char& c)
{
if (ipfx0()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
int ch = _strbuf->sbumpc();
if (ch == EOF)
set(ios::eofbit|ios::failbit);
else
c = (char)ch;
- isfx();
- _IO_cleanup_region_end (0);
}
return *this;
}
@@ -217,8 +200,6 @@ istream::operator>> (char* ptr)
int w = width(0);
if (ipfx0())
{
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
register streambuf* sb = _strbuf;
for (;;)
{
@@ -238,8 +219,6 @@ istream::operator>> (char* ptr)
}
if (p == ptr)
set(ios::failbit);
- isfx();
- _IO_cleanup_region_end (0);
}
*p = '\0';
return *this;
@@ -255,9 +234,6 @@ static int read_int(istream& stream, unsigned LONGEST& val, int& neg)
{
if (!stream.ipfx0())
return 0;
- int retval;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- stream._strbuf);
register streambuf* sb = stream.rdbuf();
int base = 10;
int ndigits = 0;
@@ -278,7 +254,7 @@ static int read_int(istream& stream, unsigned LONGEST& val, int& neg)
ch = sb->sbumpc();
if (ch == EOF) {
val = 0;
- goto unlock;
+ return 1;
}
if (ch == 'x' || ch == 'X') {
base = 16;
@@ -314,26 +290,19 @@ static int read_int(istream& stream, unsigned LONGEST& val, int& neg)
if (ndigits == 0)
goto fail;
else
- goto unlock;
+ return 1;
}
ndigits++;
val = base * val + digit;
ch = sb->sbumpc();
}
- unlock:
- retval = 1;
- goto out;
+ return 1;
fail:
stream.set(ios::failbit);
- retval = 0;
- goto out;
+ return 0;
eof_fail:
stream.set(ios::failbit|ios::eofbit);
- retval = 0;
- out:
- stream.isfx();
- _IO_cleanup_region_end (0);
- return retval;
+ return 0;
}
#define READ_INT(TYPE) \
@@ -365,8 +334,6 @@ istream& istream::operator>>(long double& x)
{
if (ipfx0())
{
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
#if _G_HAVE_LONG_DOUBLE_IO
scan("%Lg", &x);
#else
@@ -374,8 +341,6 @@ istream& istream::operator>>(long double& x)
scan("%lg", &y);
x = y;
#endif
- isfx();
- _IO_cleanup_region_end (0);
}
return *this;
}
@@ -383,34 +348,20 @@ istream& istream::operator>>(long double& x)
istream& istream::operator>>(double& x)
{
if (ipfx0())
- {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
scan("%lg", &x);
- isfx();
- _IO_cleanup_region_end (0);
- }
return *this;
}
istream& istream::operator>>(float& x)
{
if (ipfx0())
- {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
scan("%g", &x);
- isfx();
- _IO_cleanup_region_end (0);
- }
return *this;
}
istream& istream::operator>>(register streambuf* sbuf)
{
if (ipfx0()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
register streambuf* inbuf = rdbuf();
// FIXME: Should optimize!
for (;;) {
@@ -424,8 +375,6 @@ istream& istream::operator>>(register streambuf* sbuf)
break;
}
}
- isfx();
- _IO_cleanup_region_end (0);
}
return *this;
}
@@ -687,10 +636,6 @@ ostream& ostream::operator<<(double n)
/* extra: */ 0,
#if __GLIBC_MINOR__ >= 1
/* is_char: */ 0,
-#if __GLIBC_MINOR__ >= 2
- /* wide: */ 0,
- /* i18n: */ 0,
-#endif
#endif
#endif
/* pad: */ fill()
@@ -797,10 +742,6 @@ ostream& ostream::operator<<(long double n)
/* extra: */ 0,
#if __GLIBC_MINOR__ >= 1
/* is_char: */ 0,
-#if __GLIBC_MINOR__ >= 2
- /* wide: */ 0,
- /* i18n: */ 0,
-#endif
#endif
#endif
/* pad: */ fill()
@@ -848,8 +789,8 @@ ostream& ostream::operator<<(const char *s)
if (flags() & ios::left && padding > 0) // Left adjustment.
if (_IO_padn(sbuf, fill_char, padding) != padding)
set(ios::badbit);
- failed:
osfx();
+ failed:
_IO_cleanup_region_end (0);
}
return *this;
diff --git a/gnu/egcs/libio/iostream.h b/gnu/egcs/libio/iostream.h
index 19fbf8a4d95..f3de3639906 100644
--- a/gnu/egcs/libio/iostream.h
+++ b/gnu/egcs/libio/iostream.h
@@ -173,7 +173,6 @@ protected:
int get() { if (!ipfx1()) return EOF;
else { int ch = _strbuf->sbumpc();
if (ch == EOF) set(ios::eofbit);
- isfx();
return ch;
} }
int peek();
diff --git a/gnu/egcs/libio/isgetline.cc b/gnu/egcs/libio/isgetline.cc
index 5e48a000c09..02b34927eb8 100644
--- a/gnu/egcs/libio/isgetline.cc
+++ b/gnu/egcs/libio/isgetline.cc
@@ -37,8 +37,6 @@ istream& istream::getline(char* buf, int len, char delim)
int ch;
if (ipfx1())
{
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
streambuf *sb = rdbuf();
_gcount = _IO_getline_info(sb, buf, len - 1, delim, -1, &ch);
if (ch != EOF)
@@ -50,8 +48,6 @@ istream& istream::getline(char* buf, int len, char delim)
set(ios::failbit);
sb->sungetc(); // Leave delimiter unread.
}
- isfx();
- _IO_cleanup_region_end (0);
}
else
ch = EOF;
@@ -71,15 +67,11 @@ istream& istream::get(char* buf, int len, char delim)
}
if (ipfx1())
{
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
streambuf *sbuf = rdbuf();
int ch;
_gcount = _IO_getline_info(sbuf, buf, len - 1, delim, -1, &ch);
if (_gcount == 0 && ch == EOF)
set(ios::failbit|ios::eofbit);
- isfx();
- _IO_cleanup_region_end (0);
}
buf[_gcount] = '\0';
return *this;
@@ -131,8 +123,6 @@ char *_sb_readline (streambuf *sb, long& total, char terminator)
istream& istream::gets(char **s, char delim /* = '\n' */)
{
if (ipfx1()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
long size = 0;
streambuf *sb = rdbuf();
*s = _sb_readline (sb, size, delim);
@@ -142,8 +132,6 @@ istream& istream::gets(char **s, char delim /* = '\n' */)
if (_gcount == 0)
set(ios::failbit);
}
- isfx();
- _IO_cleanup_region_end (0);
}
else {
_gcount = 0;
diff --git a/gnu/egcs/libio/isgetsb.cc b/gnu/egcs/libio/isgetsb.cc
index 655c972589a..55617e649a0 100644
--- a/gnu/egcs/libio/isgetsb.cc
+++ b/gnu/egcs/libio/isgetsb.cc
@@ -31,8 +31,6 @@ istream& istream::get(streambuf& sb, char delim /* = '\n' */)
_gcount = 0;
if (ipfx1())
{
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
register streambuf* isb = rdbuf();
for (;;)
{
@@ -56,8 +54,6 @@ istream& istream::get(streambuf& sb, char delim /* = '\n' */)
if (delimp != NULL)
break;
}
- isfx();
- _IO_cleanup_region_end (0);
}
return *this;
}
diff --git a/gnu/egcs/libio/isscan.cc b/gnu/egcs/libio/isscan.cc
index 977559c2cba..64d4bc682f8 100644
--- a/gnu/egcs/libio/isscan.cc
+++ b/gnu/egcs/libio/isscan.cc
@@ -29,14 +29,10 @@ the executable file might be covered by the GNU General Public License. */
istream& istream::scan(const char *format ...)
{
if (ipfx0()) {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
va_list ap;
va_start(ap, format);
_strbuf->vscan(format, ap, this);
va_end(ap);
- isfx();
- _IO_cleanup_region_end (0);
}
return *this;
}
@@ -44,12 +40,6 @@ istream& istream::scan(const char *format ...)
istream& istream::vscan(const char *format, _IO_va_list args)
{
if (ipfx0())
- {
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _strbuf);
_strbuf->vscan(format, args, this);
- isfx();
- _IO_cleanup_region_end (0);
- }
return *this;
}
diff --git a/gnu/egcs/libio/libio.h b/gnu/egcs/libio/libio.h
index c453b77bf30..b152874d1f6 100644
--- a/gnu/egcs/libio/libio.h
+++ b/gnu/egcs/libio/libio.h
@@ -136,7 +136,6 @@
#define _IO_IS_APPENDING 0x1000
#define _IO_IS_FILEBUF 0x2000
#define _IO_BAD_SEEN 0x4000
-#define _IO_USER_LOCK 0x8000
/* These are "formatting flags" matching the iostream fmtflags enum values. */
#define _IO_SKIPWS 01
@@ -278,7 +277,7 @@ typedef struct
{
_IO_ssize_t (*read) __PMT ((struct _IO_FILE *, void *, _IO_ssize_t));
_IO_ssize_t (*write) __PMT ((struct _IO_FILE *, const void *, _IO_ssize_t));
- _IO_off_t (*seek) __PMT ((struct _IO_FILE *, _IO_off_t, int));
+ _IO_fpos_t (*seek) __PMT ((struct _IO_FILE *, _IO_off_t, int));
int (*close) __PMT ((struct _IO_FILE *));
} _IO_cookie_io_functions_t;
@@ -349,11 +348,11 @@ extern _IO_ssize_t _IO_padn __P ((_IO_FILE *, int, _IO_ssize_t));
extern _IO_size_t _IO_sgetn __P ((_IO_FILE *, void *, _IO_size_t));
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-extern _IO_off64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern _IO_off64_t _IO_seekpos __P ((_IO_FILE *, _IO_off64_t, int));
+extern _IO_fpos64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+extern _IO_fpos64_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos64_t, int));
#else
-extern _IO_off_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
-extern _IO_off_t _IO_seekpos __P ((_IO_FILE *, _IO_off_t, int));
+extern _IO_fpos_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+extern _IO_fpos_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos_t, int));
#endif
extern void _IO_free_backup_area __P ((_IO_FILE *));
diff --git a/gnu/egcs/libio/libioP.h b/gnu/egcs/libio/libioP.h
index be70f526bbe..36fa1e007de 100644
--- a/gnu/egcs/libio/libioP.h
+++ b/gnu/egcs/libio/libioP.h
@@ -31,17 +31,14 @@
#ifndef __set_errno
# define __set_errno(Val) errno = (Val)
#endif
-
-#ifdef _IO_MTSAFE_IO
-# if defined __GLIBC__ && __GLIBC__ >= 2
-# if __GLIBC_MINOR__ > 0
-# include <bits/libc-lock.h>
-# else
-# include <libc-lock.h>
-# endif
+#if defined __GLIBC__ && __GLIBC__ >= 2
+# if __GLIBC_MINOR__ > 0
+# include <bits/libc-lock.h>
# else
-/*# include <comthread.h>*/
+# include <libc-lock.h>
# endif
+#else
+/*# include <comthread.h>*/
#endif
#include "iolibio.h"
@@ -146,10 +143,10 @@ typedef _IO_size_t (*_IO_xsgetn_t) __PMT ((_IO_FILE *FP, void *DATA,
It matches the streambuf::seekoff virtual function.
It is also used for the ANSI fseek function. */
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-typedef _IO_off64_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off64_t OFF,
+typedef _IO_fpos64_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off64_t OFF,
int DIR, int MODE));
#else
-typedef _IO_off_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off_t OFF,
+typedef _IO_fpos_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off_t OFF,
int DIR, int MODE));
#endif
#define _IO_SEEKOFF(FP, OFF, DIR, MODE) JUMP3 (__seekoff, FP, OFF, DIR, MODE)
@@ -160,9 +157,9 @@ typedef _IO_off_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off_t OFF,
It is also used for the ANSI fgetpos and fsetpos functions. */
/* The _IO_seek_cur and _IO_seek_end options are not allowed. */
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-typedef _IO_off64_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
+typedef _IO_fpos64_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_fpos64_t, int));
#else
-typedef _IO_off_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_off_t, int));
+typedef _IO_fpos_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_fpos_t, int));
#endif
#define _IO_SEEKPOS(FP, POS, FLAGS) JUMP2 (__seekpos, FP, POS, FLAGS)
@@ -213,9 +210,9 @@ typedef _IO_ssize_t (*_IO_write_t) __PMT ((_IO_FILE *,const void *,_IO_ssize_t))
It matches the streambuf::sys_seek virtual function, which is
specific to this implementation. */
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-typedef _IO_off64_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
+typedef _IO_fpos64_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
#else
-typedef _IO_off_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off_t, int));
+typedef _IO_fpos_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off_t, int));
#endif
#define _IO_SYSSEEK(FP, OFFSET, MODE) JUMP2 (__seek, FP, OFFSET, MODE)
@@ -298,11 +295,11 @@ struct _IO_FILE_plus
/* Generic functions */
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-extern _IO_off64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern _IO_off64_t _IO_seekpos __P ((_IO_FILE *, _IO_off64_t, int));
+extern _IO_fpos64_t _IO_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+extern _IO_fpos64_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos64_t, int));
#else
-extern _IO_off_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
-extern _IO_off_t _IO_seekpos __P ((_IO_FILE *, _IO_off_t, int));
+extern _IO_fpos_t _IO_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+extern _IO_fpos_t _IO_seekpos __P ((_IO_FILE *, _IO_fpos_t, int));
#endif
extern void _IO_switch_to_main_get_area __P ((_IO_FILE *));
@@ -340,22 +337,22 @@ extern _IO_size_t _IO_default_xsputn __P ((_IO_FILE *, const void *,
_IO_size_t));
extern _IO_size_t _IO_default_xsgetn __P ((_IO_FILE *, void *, _IO_size_t));
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-extern _IO_off64_t _IO_default_seekoff __P ((_IO_FILE *,
+extern _IO_fpos64_t _IO_default_seekoff __P ((_IO_FILE *,
_IO_off64_t, int, int));
-extern _IO_off64_t _IO_default_seekpos __P ((_IO_FILE *,
- _IO_off64_t, int));
+extern _IO_fpos64_t _IO_default_seekpos __P ((_IO_FILE *,
+ _IO_fpos64_t, int));
#else
-extern _IO_off_t _IO_default_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
-extern _IO_off_t _IO_default_seekpos __P ((_IO_FILE *, _IO_off_t, int));
+extern _IO_fpos_t _IO_default_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+extern _IO_fpos_t _IO_default_seekpos __P ((_IO_FILE *, _IO_fpos_t, int));
#endif
extern _IO_ssize_t _IO_default_write __P ((_IO_FILE *, const void *,
_IO_ssize_t));
extern _IO_ssize_t _IO_default_read __P ((_IO_FILE *, void *, _IO_ssize_t));
extern int _IO_default_stat __P ((_IO_FILE *, void *));
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-extern _IO_off64_t _IO_default_seek __P ((_IO_FILE *, _IO_off64_t, int));
+extern _IO_fpos64_t _IO_default_seek __P ((_IO_FILE *, _IO_off64_t, int));
#else
-extern _IO_off_t _IO_default_seek __P ((_IO_FILE *, _IO_off_t, int));
+extern _IO_fpos_t _IO_default_seek __P ((_IO_FILE *, _IO_off_t, int));
#endif
extern int _IO_default_sync __P ((_IO_FILE *));
#define _IO_default_close ((_IO_close_t) _IO_default_sync)
@@ -389,11 +386,11 @@ extern void _IO_flush_all_linebuffered __P ((void));
extern int _IO_file_doallocate __P ((_IO_FILE *));
extern _IO_FILE* _IO_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t));
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-extern _IO_off64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern _IO_off64_t _IO_file_seek __P ((_IO_FILE *, _IO_off64_t, int));
+extern _IO_fpos64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+extern _IO_fpos64_t _IO_file_seek __P ((_IO_FILE *, _IO_off64_t, int));
#else
-extern _IO_off_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
-extern _IO_off_t _IO_file_seek __P ((_IO_FILE *, _IO_off_t, int));
+extern _IO_fpos_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+extern _IO_fpos_t _IO_file_seek __P ((_IO_FILE *, _IO_off_t, int));
#endif
extern _IO_size_t _IO_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t));
extern int _IO_file_stat __P ((_IO_FILE *, void *));
@@ -427,9 +424,9 @@ extern int _IO_str_underflow __P ((_IO_FILE *));
extern int _IO_str_overflow __P ((_IO_FILE *, int));
extern int _IO_str_pbackfail __P ((_IO_FILE *, int));
#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-extern _IO_off64_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
+extern _IO_fpos64_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
#else
-extern _IO_off_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
+extern _IO_fpos_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off_t, int, int));
#endif
extern void _IO_str_finish __P ((_IO_FILE *, int));
@@ -544,12 +541,12 @@ extern int _IO_vscanf __P ((const char *, _IO_va_list));
where an _IO_fpos_t is a struct.
Note that _IO_off_t must be an integral type. */
-/* _IO_pos_BAD is an _IO_off_t value indicating error, unknown, or EOF. */
+/* _IO_pos_BAD is an _IO_fpos_t value indicating error, unknown, or EOF. */
#ifndef _IO_pos_BAD
# if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
-# define _IO_pos_BAD ((_IO_off64_t) -1)
+# define _IO_pos_BAD ((_IO_fpos64_t) -1)
# else
-# define _IO_pos_BAD ((_IO_off_t) -1)
+# define _IO_pos_BAD ((_IO_fpos_t) -1)
# endif
#endif
/* _IO_pos_as_off converts an _IO_fpos_t value to an _IO_off_t value. */
diff --git a/gnu/egcs/libio/parsestream.h b/gnu/egcs/libio/parsestream.h
index 97655bcbf69..326ab87a809 100644
--- a/gnu/egcs/libio/parsestream.h
+++ b/gnu/egcs/libio/parsestream.h
@@ -42,7 +42,7 @@ extern "C++" {
class parsebuf : public streambuf {
protected:
- _IO_off_t pos_at_line_start;
+ _IO_fpos_t pos_at_line_start;
long _line_length;
unsigned long __line_number;
char *buf_start;
diff --git a/gnu/egcs/libio/stdio/ChangeLog b/gnu/egcs/libio/stdio/ChangeLog
index 86b1b7e1eb4..f98baec0955 100644
--- a/gnu/egcs/libio/stdio/ChangeLog
+++ b/gnu/egcs/libio/stdio/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
1997-09-04 16:11 Ulrich Drepper <drepper@cygnus.com>
* Makefile.in (STDIO_OBJECTS): Lose feof.o and ferror.o. Add getc.o
diff --git a/gnu/egcs/libio/stdstreams.cc b/gnu/egcs/libio/stdstreams.cc
index 7a74eaaa443..a5889d738e2 100644
--- a/gnu/egcs/libio/stdstreams.cc
+++ b/gnu/egcs/libio/stdstreams.cc
@@ -36,7 +36,7 @@ the executable file might be covered by the GNU General Public License. */
// then we don't need to, since in that case stdin/stdout/stderr
// are identical to _IO_stdin/_IO_stdout/_IO_stderr.
-#include <libio.h>
+#include "libio.h"
#ifdef _STDIO_USES_IOSTREAM
#define CIN_SBUF _IO_stdin_
diff --git a/gnu/egcs/libio/stream.h b/gnu/egcs/libio/stream.h
index 90f8c1f2781..0859802ade6 100644
--- a/gnu/egcs/libio/stream.h
+++ b/gnu/egcs/libio/stream.h
@@ -1,5 +1,5 @@
/*
-Copyright (C) 1993, 1999 Free Software Foundation
+Copyright (C) 1993 Free Software Foundation
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
@@ -53,7 +53,7 @@ extern char* oct(unsigned int, int=0);
char* chr(char ch, int width = 0);
char* str(const char* s, int width = 0);
-inline istream& WS(istream& __str) { return ws(__str); }
+inline istream& WS(istream& str) { return ws(str); }
} // extern "C++"
#endif /* !_COMPAT_STREAM_H */
diff --git a/gnu/egcs/libio/strstream.h b/gnu/egcs/libio/strstream.h
index 967e5b0b76a..d549b454758 100644
--- a/gnu/egcs/libio/strstream.h
+++ b/gnu/egcs/libio/strstream.h
@@ -1,5 +1,5 @@
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
-Copyright (C) 1993, 1999 Free Software Foundation
+Copyright (C) 1993 Free Software Foundation
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
@@ -50,8 +50,8 @@ class strstreambuf : public streambuf
virtual ~strstreambuf();
strstreambuf() { init_dynamic(0, 0); }
strstreambuf(int initial_size) { init_dynamic(0, 0, initial_size); }
- strstreambuf(void *(*__alloc)(_IO_size_t), void (*__free)(void*))
- { init_dynamic(__alloc, __free); }
+ strstreambuf(void *(*alloc)(_IO_size_t), void (*free)(void*))
+ { init_dynamic(alloc, free); }
strstreambuf(char *ptr, int size, char *pstart = NULL)
{ init_static(ptr, size, pstart); }
strstreambuf(unsigned char *ptr, int size, unsigned char *pstart = NULL)
diff --git a/gnu/egcs/libio/tests/ChangeLog b/gnu/egcs/libio/tests/ChangeLog
index 8493c19d226..dc9a375a162 100644
--- a/gnu/egcs/libio/tests/ChangeLog
+++ b/gnu/egcs/libio/tests/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
1997-10-31 Brendan Kehoe <brendan@lisa.cygnus.com>
* tFile.cc (t4): Cast TMPFILE to char* in the call to unlink, to
diff --git a/gnu/egcs/libio/testsuite/ChangeLog b/gnu/egcs/libio/testsuite/ChangeLog
index c67090576c2..0f7b926b2dc 100644
--- a/gnu/egcs/libio/testsuite/ChangeLog
+++ b/gnu/egcs/libio/testsuite/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
Wed Nov 25 01:00:07 1998 Marc Espie <espie@quatramaran.ens.fr>
* Makefile.in (just-check): Ignore errors.
diff --git a/gnu/egcs/libstdc++/ChangeLog b/gnu/egcs/libstdc++/ChangeLog
index 1d48242b6cd..f6fa7dd3838 100644
--- a/gnu/egcs/libstdc++/ChangeLog
+++ b/gnu/egcs/libstdc++/ChangeLog
@@ -1,129 +1,3 @@
-2001-01-01 Bernd Schmidt <bernds@redhat.co.uk>
-
- 1999-12-07 Martin v. Löwis <loewis@informatik.hu-berlin.de>
- * stl_deque.h (_Deque_base::const_iterator): Change third
- template argument to pointer type.
- Reported by Carlo Wood <carlo@node1500a.a2000.nl>
-
- 1999-11-10 Benjamin Kosnik <bkoz@haight.constant.com>
- Matthias Klose <doko@cs.tu-berlin.de>
- * stl_rope.h: Fix initialization order.
- * stl_deque.h: Use static_casts<size_type>(signed_type).
-
-2000-11-24 Magnus Fromreide <magfr@lysator.liu.se>
-
- * sstream: Backport libstdc++-V3 sstream to V2.
-
-2000-04-24 Magnus Fromreide <magfr@lysator.liu.se>
-
- * sstream: New file.
- * Makefile.in (HEADERS): Add it.
-
-2000-03-12 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
-
- * std/bastring.h (basic_string<>::push_back): Define.
-
-Tue Mar 7 21:37:56 2000 Jeffrey A Law (law@cygnus.com)
-
- 1999-11-19 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
- * std/valarray_meta.h (_DEFINE_EXPR_UNARY_FUNCTION): Don't forget
- to define tanh.
-
- 1999-11-05 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
- * std/valarray_meta.h (_DEFINE_EXPR_UNARY_FUNCTION): When
- building meta-expressions don't forget to take the contained
- closures.
-
- 1999-10-19 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
- * std/valarray_meta.h: (_BinClos::_BinClos): Fix typo.
-
- 1999-09-17 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
- * std/complext.cc (pow): Don't expect floating point promotion
- in presence of template argument deduction. There is no such
- thing.
-
-2000-02-06 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
- * std/valarray_array.h (__valarray_copy): Fix typo.
-
-1999-12-14 Martin v. Löwis <loewis@informatik.hu-berlin.de>
- * std/bastring.h (basic_string::basic_string): Rename parameters
- to avoid shadow warnings.
- * std/bastring.cc (alloc): Likewise.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Thu Aug 5 02:00:13 1999 Loren Rittle <ljrittle@acm.org>
-
- * Makefile.in (MARLINK, MSHLINK): Handle library version
- number components with more than one numeric digit.
-
-Mon Aug 2 00:40:10 1999 Jeffrey A Law (law@cygnus.com)
-
- 1999-07-16 Markus Gyger (mgyger@gmu.edu)
- * stdexcepti.cc (__out_of_range): Use std:: qualifier for names
- in std.
- (__length_error): Likewise.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sat Jul 17 23:49:59 1999 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (INTERFACE): Bump to 3.
-
-Fri Jul 9 01:20:23 1999 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (VERSION): Bump to 2.10.0.
-
-Tue Jun 8 00:21:11 1999 Jeffrey A Law (law@cygnus.com)
-
- * configure.in (*-*-freebsd2*): Add missing '*' at end of configure
- string.
-
-1999-06-05 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
-
- * std/std_valarray.h: Don't #include unconditionally <alloca.h>
-
-1999-06-05 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
-
- * std/std_valarray.h: New file.
- * std/slice.h: New file.
- * std/slice_array.h: New file.
- * std/gslice.h: New file.
- * std/gslice_array.h: New file.
- * std/mask_array.h: New file.
- * std/indirect_array.h: New file.
- * std/valarray_array.h: New file.
- * std/valarray_array.tcc: New file.
- * std/valarray_meta.h: New file.
- * valarray.cc: New file.
- * valarray: New file
-
- * Makefile.in (OBJS): add valarray.o
- (HEADERS): add valarray
- (valarray.o): define dependency on valarray.cc
- (install): make it possible to install valarray file.
-
-Wed Jun 2 00:21:54 1999 Robert Lipe <robertlipe@usa.net>
-
- * std/bastring.h (class basic_string:Rep): Encode xlock opcode
- as .bytes instead of mnemonics.
-
-1999-05-20 Angela Marie Thomas <angela@cygnus.com>
-
- * configure.in: Test for ${compiler_name}.exe as well.
-
1999-05-15 Mark Kettenis <kettenis@gnu.org>
* configure.in: Add shared library support for the Hurd
diff --git a/gnu/egcs/libstdc++/Makefile.in b/gnu/egcs/libstdc++/Makefile.in
index f13eddcf294..9e03d0545a7 100644
--- a/gnu/egcs/libstdc++/Makefile.in
+++ b/gnu/egcs/libstdc++/Makefile.in
@@ -14,12 +14,12 @@
# 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.
-VERSION = 2.10.0
-INTERFACE = 3
+VERSION = 2.9.0
+INTERFACE = 2
gxx_include_dir=${includedir}/g++
-OBJS = cstringi.o stdexcepti.o cstdlibi.o cmathi.o stlinst.o valarray.o
+OBJS = cstringi.o stdexcepti.o cstdlibi.o cmathi.o stlinst.o
SUBLIBS = $(STAMP)-string $(STAMP)-complx
# C++ headers with no extension
@@ -28,16 +28,15 @@ HEADERS= cassert cctype cerrno cfloat ciso646 climits clocale cmath complex \
cwchar cwctype string stdexcept \
algorithm deque functional hash_map hash_set iterator list map \
memory numeric pthread_alloc queue rope set slist stack utility \
- vector fstream iomanip iostream strstream iosfwd bitset valarray \
- sstream
+ vector fstream iomanip iostream strstream iosfwd bitset
ARLIB = libstdc++.a.$(VERSION)
ARLINK = libstdc++.a
-MARLINK = libstdc++.a.`echo $(VERSION) | sed 's/\([0-9]*[.][0-9]*\).*/\1/'`
+MARLINK = libstdc++.a.`echo $(VERSION) | sed 's/\([0-9][.][0-9]\).*/\1/'`
SHLIB = libstdc++.so.$(VERSION)
SHARLIB = libstdc++-sh.a
SHLINK = libstdc++.so
-MSHLINK = libstdc++.so.`echo $(VERSION) | sed 's/\([0-9]*[.][0-9]*\).*/\1/'`
+MSHLINK = libstdc++.so.`echo $(VERSION) | sed 's/\([0-9][.][0-9]\).*/\1/'`
SHFLAGS =
SHDEPS =
@@ -131,7 +130,6 @@ cstdlibi.o: cstdlibi.cc
cmathi.o: cmathi.cc
stdexcepti.o: stdexcepti.cc
stlinst.o: stlinst.cc
-valarray.o: valarray.cc
# Later do wide strings, too.
stmp-string: ${srcdir}/sinst.cc ${srcdir}/std/bastring.h \
@@ -271,7 +269,7 @@ install:
fi ; \
chmod a-x $(gxx_include_dir)/$$FILE ; \
done ; \
- for FILE in *.h std/*.h std/*.cc std/*.tcc; do \
+ for FILE in *.h std/*.h std/*.cc; do \
rm -f $(gxx_include_dir)/$$FILE ; \
$(INSTALL_DATA) $$FILE $(gxx_include_dir)/$$FILE ; \
chmod a-x $(gxx_include_dir)/$$FILE ; \
diff --git a/gnu/egcs/libstdc++/configure.in b/gnu/egcs/libstdc++/configure.in
index bd2c9c71e43..8262565bd88 100644
--- a/gnu/egcs/libstdc++/configure.in
+++ b/gnu/egcs/libstdc++/configure.in
@@ -2,6 +2,18 @@
# necessary for a configure script to process the program in
# this directory. For more information, look at ../configure.
+# find a possible extension of the just-built C++ compiler. Note that this
+# is not the only choice, taking into cross and canadian cross into
+# account, and we need to search for with and without the extension.
+case "${host_alias}" in
+*cygwin* | *mingw32*)
+ EXEEXT=.exe
+ ;;
+*)
+ EXEEXT=
+ ;;
+esac
+
# If the language specific compiler does not exist, but the "gcc" directory
# does, we do not build anything. Note, $r is set by the top-level Makefile.
# Note that when we look for the compiler, we search both with and without
@@ -13,7 +25,7 @@ rm -f skip-this-dir
if test -n "$r" && [ -z "$norecursion" ] ; then
if test -d "$r"/gcc; then
if test -f "$r"/gcc/$compiler_name \
- || test -f "$r"/gcc/$compiler_name.exe; then
+ || test -f "$r"/gcc/$compiler_name$EXEEXT; then
true
else
echo "rm -f multilib.out" > skip-this-dir
@@ -71,7 +83,7 @@ if [ "${shared}" = "yes" ]; then
*-*-hpux*) frags="${frags} hpux.ml" ;;
*-*-irix[56]*) frags="${frags} irix5.ml" ;;
*-*-linux*aout*) ;;
- *-*-freebsd2*) ;;
+ *-*-freebsd2) ;;
*-*-freebsd*) frags="${frags} freebsd.ml" ;;
*-*-linux*) frags="${frags} linux.ml" ;;
*-*-openbsd*) frags="${frags} openbsd.ml" ;;
diff --git a/gnu/egcs/libstdc++/std/bastring.cc b/gnu/egcs/libstdc++/std/bastring.cc
index f86f6d30157..3093b9e129d 100644
--- a/gnu/egcs/libstdc++/std/bastring.cc
+++ b/gnu/egcs/libstdc++/std/bastring.cc
@@ -1,5 +1,5 @@
// Member templates for the -*- C++ -*- string classes.
-// Copyright (C) 1994, 1999 Free Software Foundation
+// Copyright (C) 1994 Free Software Foundation
// This file is part of the GNU ANSI C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -94,14 +94,14 @@ check_realloc (basic_string::size_type s) const
template <class charT, class traits, class Allocator>
void basic_string <charT, traits, Allocator>::
-alloc (basic_string::size_type __size, bool __save)
+alloc (basic_string::size_type size, bool save)
{
- if (! check_realloc (__size))
+ if (! check_realloc (size))
return;
- Rep *p = Rep::create (__size);
+ Rep *p = Rep::create (size);
- if (__save)
+ if (save)
{
p->copy (0, data (), length ());
p->len = length ();
diff --git a/gnu/egcs/libstdc++/std/bastring.h b/gnu/egcs/libstdc++/std/bastring.h
index bbe873085ea..6206713b6c9 100644
--- a/gnu/egcs/libstdc++/std/bastring.h
+++ b/gnu/egcs/libstdc++/std/bastring.h
@@ -1,5 +1,5 @@
// Main templates for the -*- C++ -*- string classes.
-// Copyright (C) 1994, 1995, 1999 Free Software Foundation
+// Copyright (C) 1994, 1995 Free Software Foundation
// This file is part of the GNU ANSI C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -77,15 +77,8 @@ private:
void release ()
{
size_t __val;
- // This opcode exists as a .byte instead of as a mnemonic for the
- // benefit of SCO OpenServer 5. The system assembler (which is
- // essentially required on this target) can't assemble xaddl in
- //COFF mode.
- asm (".byte 0xf0, 0x0f, 0xc1, 0x02" // lock; xaddl %eax, (%edx)
- : "=a" (__val)
- : "0" (-1), "m" (ref), "d" (&ref)
- : "memory");
-
+ asm ("lock; xaddl %0, %2"
+ : "=r" (__val) : "0" (-1), "m" (ref) : "memory");
if (__val == 1)
delete this;
}
@@ -180,11 +173,11 @@ public:
: dat (nilRep.grab ()) { assign (n, c); }
#ifdef __STL_MEMBER_TEMPLATES
template<class InputIterator>
- basic_string(InputIterator __begin, InputIterator __end)
+ basic_string(InputIterator begin, InputIterator end)
#else
- basic_string(const_iterator __begin, const_iterator __end)
+ basic_string(const_iterator begin, const_iterator end)
#endif
- : dat (nilRep.grab ()) { assign (__begin, __end); }
+ : dat (nilRep.grab ()) { assign (begin, end); }
~basic_string ()
{ rep ()->release (); }
@@ -208,9 +201,6 @@ public:
#endif
{ return replace (iend (), iend (), first, last); }
- void push_back(charT __c)
- { append(1, __c); }
-
basic_string& assign (const basic_string& str, size_type pos = 0,
size_type n = npos)
{ return replace (0, npos, str, pos, n); }
diff --git a/gnu/egcs/libstdc++/std/complext.cc b/gnu/egcs/libstdc++/std/complext.cc
index 60227f21329..d50bf0871f6 100644
--- a/gnu/egcs/libstdc++/std/complext.cc
+++ b/gnu/egcs/libstdc++/std/complext.cc
@@ -236,7 +236,7 @@ pow (const complex<FLOAT>& xin, int y)
if (y < 0)
{
y = -y;
- x = FLOAT(1)/x;
+ x = 1/x;
}
for (;;)
{
diff --git a/gnu/egcs/libstdc++/stdexcepti.cc b/gnu/egcs/libstdc++/stdexcepti.cc
index 9c02c71f497..3b03acd63f4 100644
--- a/gnu/egcs/libstdc++/stdexcepti.cc
+++ b/gnu/egcs/libstdc++/stdexcepti.cc
@@ -12,10 +12,10 @@
void
__out_of_range (const char *s)
{
- throw std::out_of_range (s);
+ throw out_of_range (s);
}
void __length_error (const char *s)
{
- throw std::length_error (s);
+ throw length_error (s);
}
diff --git a/gnu/egcs/libstdc++/stl/ChangeLog b/gnu/egcs/libstdc++/stl/ChangeLog
index 785fb587e82..10669ea9b4c 100644
--- a/gnu/egcs/libstdc++/stl/ChangeLog
+++ b/gnu/egcs/libstdc++/stl/ChangeLog
@@ -1,50 +1,3 @@
-1999-11-06 Martin v. Löwis <loewis@informatik.hu-berlin.de>
-
- * bitset (class bitset): Declare reference as our friend.
- * bitset: Include limits.h.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Sun Aug 8 21:06:16 1999 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * pthread_alloc: Solaris' ctype.h defines _U to 01; use _Up as
- template parameter instead.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-1999-07-11 Martin v. Löwis (loewis@informatik.hu-berlin.de)
-
- * stl_function.h (bind1st, bind2nd): Rename __opr to __oper,
- as __opr is used internally by egcs.
- * stl_numeric.h (__power, power): Likewise.
-
-1999-06-18 Martin von Löwis <loewis@informatik.hu-berlin.de>
-
- * stl_queue.h: Rename _M_c to c, and _M_comp to comp.
-
-1999-06-17 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * stl_algo.h (transform): Rename __opr to __oper, as __opr is used
- internally by egcs.
- Reported by Harri Porten <porten@tu-harburg.de>
-
-1999-05-17 Mark Kettenis <kettenis@gnu.org>
-
- * stl_config.h: Only define __STL_PTHREADS with GLIBC >= 2 for
- Linux.
-
Mon May 17 03:33:47 1999 Mumit Khan <khan@xraylith.wisc.edu>
* stl_config.h (__CYGWIN__): Cygwin newlib RTL lacks drand48.
diff --git a/gnu/egcs/libstdc++/stl/bitset b/gnu/egcs/libstdc++/stl/bitset
index 8b4f8b1a0f8..e26845ed045 100644
--- a/gnu/egcs/libstdc++/stl/bitset
+++ b/gnu/egcs/libstdc++/stl/bitset
@@ -36,7 +36,6 @@
#include <stddef.h> // for size_t
-#include <limits.h> // for CHAR_BIT
#include <string>
#include <stdexcept> // for invalid_argument, out_of_range, overflow_error
#include <iostream.h> // for istream, ostream
@@ -569,8 +568,6 @@ private:
public:
// bit reference:
- class reference;
- friend class reference;
class reference {
friend class bitset;
diff --git a/gnu/egcs/libstdc++/stl/pthread_alloc b/gnu/egcs/libstdc++/stl/pthread_alloc
index 1852908095b..887d8e8a154 100644
--- a/gnu/egcs/libstdc++/stl/pthread_alloc
+++ b/gnu/egcs/libstdc++/stl/pthread_alloc
@@ -376,13 +376,13 @@ public:
typedef const _Tp& const_reference;
typedef _Tp value_type;
- template <class _Up> struct rebind {
- typedef pthread_allocator<_Up> other;
+ template <class _U> struct rebind {
+ typedef pthread_allocator<_U> other;
};
pthread_allocator() __STL_NOTHROW {}
pthread_allocator(const pthread_allocator& a) __STL_NOTHROW {}
- template <class _Up> pthread_allocator(const pthread_allocator<_Up>&)
+ template <class _U> pthread_allocator(const pthread_allocator<_U>&)
__STL_NOTHROW {}
~pthread_allocator() __STL_NOTHROW {}
@@ -416,8 +416,8 @@ public:
typedef const void* const_pointer;
typedef void value_type;
- template <class _Up> struct rebind {
- typedef pthread_allocator<_Up> other;
+ template <class _U> struct rebind {
+ typedef pthread_allocator<_U> other;
};
};
@@ -451,16 +451,16 @@ struct _Alloc_traits<_Tp, _Pthread_alloc_template<_Max_size> >
allocator_type;
};
-template <class _Tp, class _Up, size_t _Max>
-struct _Alloc_traits<_Tp, __allocator<_Up, _Pthread_alloc_template<_Max> > >
+template <class _Tp, class _U, size_t _Max>
+struct _Alloc_traits<_Tp, __allocator<_U, _Pthread_alloc_template<_Max> > >
{
static const bool _S_instanceless = true;
typedef simple_alloc<_Tp, _Pthread_alloc_template<_Max> > _Alloc_type;
typedef __allocator<_Tp, _Pthread_alloc_template<_Max> > allocator_type;
};
-template <class _Tp, class _Up>
-struct _Alloc_traits<_Tp, pthread_allocator<_Up> >
+template <class _Tp, class _U>
+struct _Alloc_traits<_Tp, pthread_allocator<_U> >
{
static const bool _S_instanceless = true;
typedef simple_alloc<_Tp, _Pthread_alloc_template<> > _Alloc_type;
diff --git a/gnu/egcs/libstdc++/stl/stl_algo.h b/gnu/egcs/libstdc++/stl/stl_algo.h
index e9beaee15f1..57607ba5d49 100644
--- a/gnu/egcs/libstdc++/stl/stl_algo.h
+++ b/gnu/egcs/libstdc++/stl/stl_algo.h
@@ -446,9 +446,9 @@ _ForwardIter2 swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1,
template <class _InputIter, class _OutputIter, class _UnaryOperation>
_OutputIter transform(_InputIter __first, _InputIter __last,
- _OutputIter __result, _UnaryOperation __oper) {
+ _OutputIter __result, _UnaryOperation __opr) {
for ( ; __first != __last; ++__first, ++__result)
- *__result = __oper(*__first);
+ *__result = __opr(*__first);
return __result;
}
diff --git a/gnu/egcs/libstdc++/stl/stl_config.h b/gnu/egcs/libstdc++/stl/stl_config.h
index d72f9e1c746..f9295f1f1dd 100644
--- a/gnu/egcs/libstdc++/stl/stl_config.h
+++ b/gnu/egcs/libstdc++/stl/stl_config.h
@@ -165,16 +165,14 @@
# define __SGI_STL_USE_AUTO_PTR_CONVERSIONS
# define __STL_USE_NAMESPACES
# endif
-# if defined(__linux__)
- /* glibc pre 2.0 is very buggy. We have to disable thread for it.
- It should be upgraded to glibc 2.0 or later. */
-# if !defined(_NOTHREADS) && __GLIBC__ >= 2 && defined(_G_USING_THUNKS)
-# define __STL_PTHREADS
-# ifdef __STRICT_ANSI__
- /* Work around a bug in the glibc 2.0.x pthread.h. */
-# define sigset_t __sigset_t
-# endif
-# endif
+ /* glibc pre 2.0 is very buggy. We have to disable thread for it.
+ It should be upgraded to glibc 2.0 or later. */
+# if !defined(_NOTHREADS) && __GLIBC__ >= 2 && defined(_G_USING_THUNKS)
+# define __STL_PTHREADS
+# ifdef __STRICT_ANSI__
+ /* Work around a bug in the glibc 2.0.x pthread.h. */
+# define sigset_t __sigset_t
+# endif
# endif
# ifdef __EXCEPTIONS
# define __STL_USE_EXCEPTIONS
diff --git a/gnu/egcs/libstdc++/stl/stl_deque.h b/gnu/egcs/libstdc++/stl/stl_deque.h
index 24a8bfb1bc8..48a4c76d55a 100644
--- a/gnu/egcs/libstdc++/stl/stl_deque.h
+++ b/gnu/egcs/libstdc++/stl/stl_deque.h
@@ -342,7 +342,7 @@ public:
_Base;
typedef typename _Base::allocator_type allocator_type;
typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator;
- typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*, __bufsiz> const_iterator;
+ typedef _Deque_iterator<_Tp,const _Tp&,const _Tp&, __bufsiz> const_iterator;
_Deque_base(const allocator_type& __a, size_t __num_elements)
: _Base(__a), _M_start(), _M_finish()
@@ -815,7 +815,7 @@ public: // Erase
iterator __next = __pos;
++__next;
difference_type __index = __pos - _M_start;
- if (static_cast<size_type>(__index) < (size() >> 1)) {
+ if (__index < (size() >> 1)) {
copy_backward(_M_start, __pos, __next);
pop_front();
}
@@ -1048,7 +1048,7 @@ deque<_Tp,_Alloc,__bufsize>::erase(iterator __first, iterator __last)
else {
difference_type __n = __last - __first;
difference_type __elems_before = __first - _M_start;
- if (static_cast<size_type>(__elems_before) < (size() - __n) / 2) {
+ if (__elems_before < (size() - __n) / 2) {
copy_backward(_M_start, __first, __last);
iterator __new_start = _M_start + __n;
destroy(_M_start, __new_start);
@@ -1282,7 +1282,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
{
difference_type __index = __pos - _M_start;
value_type __x_copy = __x;
- if (static_cast<size_type>(__index) < size() / 2) {
+ if (__index < size() / 2) {
push_front(front());
iterator __front1 = _M_start;
++__front1;
@@ -1311,7 +1311,7 @@ typename deque<_Tp,_Alloc,__bufsize>::iterator
deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos)
{
difference_type __index = __pos - _M_start;
- if (static_cast<size_type>(__index) < size() / 2) {
+ if (__index < size() / 2) {
push_front(front());
iterator __front1 = _M_start;
++__front1;
@@ -1344,7 +1344,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
const difference_type __elems_before = __pos - _M_start;
size_type __length = size();
value_type __x_copy = __x;
- if (static_cast<size_type>(__elems_before) < __length / 2) {
+ if (__elems_before < __length / 2) {
iterator __new_start = _M_reserve_elements_at_front(__n);
iterator __old_start = _M_start;
__pos = _M_start + __elems_before;
@@ -1403,7 +1403,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
{
const difference_type __elemsbefore = __pos - _M_start;
size_type __length = size();
- if (static_cast<size_type>(__elemsbefore) < __length / 2) {
+ if (__elemsbefore < __length / 2) {
iterator __new_start = _M_reserve_elements_at_front(__n);
iterator __old_start = _M_start;
__pos = _M_start + __elemsbefore;
diff --git a/gnu/egcs/libstdc++/stl/stl_function.h b/gnu/egcs/libstdc++/stl/stl_function.h
index a5a8486576e..cd07c1c6730 100644
--- a/gnu/egcs/libstdc++/stl/stl_function.h
+++ b/gnu/egcs/libstdc++/stl/stl_function.h
@@ -202,10 +202,10 @@ public:
template <class _Operation, class _Tp>
inline binder1st<_Operation>
-bind1st(const _Operation& __oper, const _Tp& __x)
+bind1st(const _Operation& __opr, const _Tp& __x)
{
typedef typename _Operation::first_argument_type _Arg1_type;
- return binder1st<_Operation>(__oper, _Arg1_type(__x));
+ return binder1st<_Operation>(__opr, _Arg1_type(__x));
}
template <class _Operation>
@@ -227,10 +227,10 @@ public:
template <class _Operation, class _Tp>
inline binder2nd<_Operation>
-bind2nd(const _Operation& __oper, const _Tp& __x)
+bind2nd(const _Operation& __opr, const _Tp& __x)
{
typedef typename _Operation::second_argument_type _Arg2_type;
- return binder2nd<_Operation>(__oper, _Arg2_type(__x));
+ return binder2nd<_Operation>(__opr, _Arg2_type(__x));
}
// unary_compose and binary_compose (extensions, not part of the standard).
diff --git a/gnu/egcs/libstdc++/stl/stl_numeric.h b/gnu/egcs/libstdc++/stl/stl_numeric.h
index 392515a3d87..da7865498ca 100644
--- a/gnu/egcs/libstdc++/stl/stl_numeric.h
+++ b/gnu/egcs/libstdc++/stl/stl_numeric.h
@@ -177,22 +177,22 @@ adjacent_difference(_InputIterator __first, _InputIterator __last,
template <class _Tp, class _Integer, class _MonoidOperation>
-_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __oper)
+_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr)
{
if (__n == 0)
- return identity_element(__oper);
+ return identity_element(__opr);
else {
while ((__n & 1) == 0) {
__n >>= 1;
- __x = __oper(__x, __x);
+ __x = __opr(__x, __x);
}
_Tp __result = __x;
__n >>= 1;
while (__n != 0) {
- __x = __oper(__x, __x);
+ __x = __opr(__x, __x);
if ((__n & 1) != 0)
- __result = __oper(__result, __x);
+ __result = __opr(__result, __x);
__n >>= 1;
}
return __result;
@@ -209,9 +209,9 @@ inline _Tp __power(_Tp __x, _Integer __n)
// not part of the C++ standard.
template <class _Tp, class _Integer, class _MonoidOperation>
-inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __oper)
+inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __opr)
{
- return __power(__x, __n, __oper);
+ return __power(__x, __n, __opr);
}
template <class _Tp, class _Integer>
diff --git a/gnu/egcs/libstdc++/stl/stl_queue.h b/gnu/egcs/libstdc++/stl/stl_queue.h
index c1e2b698440..489cc4ac442 100644
--- a/gnu/egcs/libstdc++/stl/stl_queue.h
+++ b/gnu/egcs/libstdc++/stl/stl_queue.h
@@ -49,33 +49,33 @@ public:
typedef typename _Sequence::reference reference;
typedef typename _Sequence::const_reference const_reference;
protected:
- _Sequence c;
+ _Sequence _M_c;
public:
- queue() : c() {}
- explicit queue(const _Sequence& __c) : c(__c) {}
-
- bool empty() const { return c.empty(); }
- size_type size() const { return c.size(); }
- reference front() { return c.front(); }
- const_reference front() const { return c.front(); }
- reference back() { return c.back(); }
- const_reference back() const { return c.back(); }
- void push(const value_type& __x) { c.push_back(__x); }
- void pop() { c.pop_front(); }
+ queue() : _M_c() {}
+ explicit queue(const _Sequence& __c) : _M_c(__c) {}
+
+ bool empty() const { return _M_c.empty(); }
+ size_type size() const { return _M_c.size(); }
+ reference front() { return _M_c.front(); }
+ const_reference front() const { return _M_c.front(); }
+ reference back() { return _M_c.back(); }
+ const_reference back() const { return _M_c.back(); }
+ void push(const value_type& __x) { _M_c.push_back(__x); }
+ void pop() { _M_c.pop_front(); }
};
template <class _Tp, class _Sequence>
bool
operator==(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
{
- return __x.c == __y.c;
+ return __x._M_c == __y._M_c;
}
template <class _Tp, class _Sequence>
bool
operator<(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
{
- return __x.c < __y.c;
+ return __x._M_c < __y._M_c;
}
#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
@@ -125,69 +125,69 @@ public:
typedef typename _Sequence::reference reference;
typedef typename _Sequence::const_reference const_reference;
protected:
- _Sequence c;
- _Compare comp;
+ _Sequence _M_c;
+ _Compare _M_comp;
public:
- priority_queue() : c() {}
- explicit priority_queue(const _Compare& __x) : c(), comp(__x) {}
+ priority_queue() : _M_c() {}
+ explicit priority_queue(const _Compare& __x) : _M_c(), _M_comp(__x) {}
priority_queue(const _Compare& __x, const _Sequence& __s)
- : c(__s), comp(__x)
- { make_heap(c.begin(), c.end(), comp); }
+ : _M_c(__s), _M_comp(__x)
+ { make_heap(_M_c.begin(), _M_c.end(), _M_comp); }
#ifdef __STL_MEMBER_TEMPLATES
template <class _InputIterator>
priority_queue(_InputIterator __first, _InputIterator __last)
- : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
+ : _M_c(__first, __last) { make_heap(_M_c.begin(), _M_c.end(), _M_comp); }
template <class _InputIterator>
priority_queue(_InputIterator __first,
_InputIterator __last, const _Compare& __x)
- : c(__first, __last), comp(__x)
- { make_heap(c.begin(), c.end(), comp); }
+ : _M_c(__first, __last), _M_comp(__x)
+ { make_heap(_M_c.begin(), _M_c.end(), _M_comp); }
template <class _InputIterator>
priority_queue(_InputIterator __first, _InputIterator __last,
const _Compare& __x, const _Sequence& __s)
- : c(__s), comp(__x)
+ : _M_c(__s), _M_comp(__x)
{
- c.insert(c.end(), __first, __last);
- make_heap(c.begin(), c.end(), comp);
+ _M_c.insert(_M_c.end(), __first, __last);
+ make_heap(_M_c.begin(), _M_c.end(), _M_comp);
}
#else /* __STL_MEMBER_TEMPLATES */
priority_queue(const value_type* __first, const value_type* __last)
- : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
+ : _M_c(__first, __last) { make_heap(_M_c.begin(), _M_c.end(), _M_comp); }
priority_queue(const value_type* __first, const value_type* __last,
const _Compare& __x)
- : c(__first, __last), comp(__x)
- { make_heap(c.begin(), c.end(), comp); }
+ : _M_c(__first, __last), _M_comp(__x)
+ { make_heap(_M_c.begin(), _M_c.end(), _M_comp); }
priority_queue(const value_type* __first, const value_type* __last,
const _Compare& __x, const _Sequence& __c)
- : c(__c), comp(__x)
+ : _M_c(__c), _M_comp(__x)
{
- c.insert(c.end(), __first, __last);
- make_heap(c.begin(), c.end(), comp);
+ _M_c.insert(_M_c.end(), __first, __last);
+ make_heap(_M_c.begin(), _M_c.end(), _M_comp);
}
#endif /* __STL_MEMBER_TEMPLATES */
- bool empty() const { return c.empty(); }
- size_type size() const { return c.size(); }
- const_reference top() const { return c.front(); }
+ bool empty() const { return _M_c.empty(); }
+ size_type size() const { return _M_c.size(); }
+ const_reference top() const { return _M_c.front(); }
void push(const value_type& __x) {
__STL_TRY {
- c.push_back(__x);
- push_heap(c.begin(), c.end(), comp);
+ _M_c.push_back(__x);
+ push_heap(_M_c.begin(), _M_c.end(), _M_comp);
}
- __STL_UNWIND(c.clear());
+ __STL_UNWIND(_M_c.clear());
}
void pop() {
__STL_TRY {
- pop_heap(c.begin(), c.end(), comp);
- c.pop_back();
+ pop_heap(_M_c.begin(), _M_c.end(), _M_comp);
+ _M_c.pop_back();
}
- __STL_UNWIND(c.clear());
+ __STL_UNWIND(_M_c.clear());
}
};
diff --git a/gnu/egcs/libstdc++/stl/stl_rope.h b/gnu/egcs/libstdc++/stl/stl_rope.h
index fa1e848c065..44f51aed1ae 100644
--- a/gnu/egcs/libstdc++/stl/stl_rope.h
+++ b/gnu/egcs/libstdc++/stl/stl_rope.h
@@ -386,8 +386,8 @@ struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc> {
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
_Rope_RopeRep(_Tag __t, int __d, bool __b, size_t __size,
allocator_type __a)
- : _Rope_rep_base<_CharT,_Alloc>(__size, __a),
- _M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0)
+ : _M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0),
+ _Rope_rep_base<_CharT,_Alloc>(__size, __a)
{
# ifndef __GC
_M_refcount = 1;
@@ -562,8 +562,8 @@ struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
/* doesn't matter. */
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
_Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a)
- : _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a),
- _M_data(__d)
+ : _M_data(__d)
+ , _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a)
{
__stl_assert(__size > 0);
if (_S_is_basic_char_type((_CharT *)0)) {
@@ -593,10 +593,10 @@ struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
_Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
_Rope_RopeRep<_CharT,_Alloc>* __r,
allocator_type __a)
- : _Rope_RopeRep<_CharT,_Alloc>(
+ : _M_left(__l), _M_right(__r)
+ , _Rope_RopeRep<_CharT,_Alloc>(
_S_concat, max(__l->_M_depth, __r->_M_depth) + 1, false,
- __l->_M_size + __r->_M_size, __a),
- _M_left(__l), _M_right(__r)
+ __l->_M_size + __r->_M_size, __a)
{}
# ifndef __GC
~_Rope_RopeConcatenation() {
@@ -629,12 +629,11 @@ struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
_Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
bool __d, allocator_type __a)
- :_Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a),
- _M_fn(__f)
+ : _M_fn(__f)
# ifndef __GC
, _M_delete_when_done(__d)
# endif
- {
+ , _Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a) {
__stl_assert(__size > 0);
# ifdef __GC
if (__d) {
@@ -694,8 +693,9 @@ struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
_Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
size_t __l, allocator_type __a)
- : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a), _M_base(__b)
+ : _M_base(__b)
, _M_start(__s)
+ , _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a)
{
__stl_assert(__l > 0);
__stl_assert(__s + __l <= __b->_M_size);
@@ -766,16 +766,16 @@ class _Rope_char_ref_proxy {
_My_rope* _M_root; // The whole rope.
public:
_Rope_char_ref_proxy(_My_rope* __r, size_t __p) :
- _M_pos(__p), _M_current_valid(false), _M_root(__r) {}
+ _M_pos(__p), _M_root(__r), _M_current_valid(false) {}
_Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x) :
- _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
+ _M_pos(__x._M_pos), _M_root(__x._M_root), _M_current_valid(false) {}
// Don't preserve cache if the reference can outlive the
// expression. We claim that's not possible without calling
// a copy constructor or generating reference to a proxy
// reference. We declare the latter to have undefined semantics.
_Rope_char_ref_proxy(_My_rope* __r, size_t __p,
_CharT __c) :
- _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
+ _M_pos(__p), _M_root(__r), _M_current(__c), _M_current_valid(true) {}
inline operator _CharT () const;
_Rope_char_ref_proxy& operator= (_CharT __c);
_Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;
diff --git a/gnu/egcs/libstdc++/tests/ChangeLog b/gnu/egcs/libstdc++/tests/ChangeLog
index 458f08ad484..87ce0fc6c19 100644
--- a/gnu/egcs/libstdc++/tests/ChangeLog
+++ b/gnu/egcs/libstdc++/tests/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
1998-07-17 Jason Merrill <jason@yorick.cygnus.com>
* tmap.cc: Use less<int>.
diff --git a/gnu/egcs/libstdc++/testsuite/ChangeLog b/gnu/egcs/libstdc++/testsuite/ChangeLog
index 4e983e9b5ff..7b1a9f0c3c5 100644
--- a/gnu/egcs/libstdc++/testsuite/ChangeLog
+++ b/gnu/egcs/libstdc++/testsuite/ChangeLog
@@ -1,19 +1,3 @@
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
Wed Nov 25 01:00:07 1998 Marc Espie <espie@quatramaran.ens.fr>
* Makefile.in (just-check): Ignore errors.
diff --git a/gnu/egcs/ltconfig b/gnu/egcs/ltconfig
index ab304fd3b73..ef2c23aa78f 100644
--- a/gnu/egcs/ltconfig
+++ b/gnu/egcs/ltconfig
@@ -1,7 +1,7 @@
#! /bin/sh
# ltconfig - Create a system-specific libtool.
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This file is free software; you can redistribute it and/or modify it
@@ -31,13 +31,6 @@ echo=echo
if test "X$1" = X--no-reexec; then
# Discard the --no-reexec flag, and continue.
shift
-elif test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit 0
elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
# Yippee, $echo works!
:
@@ -46,45 +39,19 @@ else
exec "$SHELL" "$0" --no-reexec ${1+"$@"}
fi
-# Find the correct PATH separator. Usually this is `:', but
-# DJGPP uses `;' like DOS.
-if test "X${PATH_SEPARATOR+set}" != "Xset"; then
- UNAME=${UNAME-`uname 2>/dev/null`}
- case X$UNAME in
- *-DOS) PATH_SEPARATOR=';' ;;
- *) PATH_SEPARATOR=':' ;;
- esac
-fi
-
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
-if test "X${echo_test_string+set}" != "Xset"; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if (echo_test_string="`eval $cmd`") 2>/dev/null &&
- echo_test_string="`eval $cmd`" &&
- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
- break
- fi
- done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
- test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
+if test "X`($echo '\t') 2>/dev/null`" != 'X\t'; then
# The Solaris, AIX, and Digital Unix default echo programs unquote
# backslashes. This makes it impossible to quote backslashes using
# echo "$something" | sed 's/\\/\\\\/g'
#
# So, first we look for a working echo in the user's PATH.
-
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
for dir in $PATH /usr/ucb; do
- if test -f $dir/echo &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ if test -f $dir/echo && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t'; then
echo="$dir/echo"
break
fi
@@ -93,53 +60,20 @@ if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
if test "X$echo" = Xecho; then
# We didn't find a better echo, so look for alternatives.
- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
- test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t'; then
# This shell has a builtin print -r that does the trick.
echo='print -r'
elif test -f /bin/ksh && test "X$CONFIG_SHELL" != X/bin/ksh; then
# If we have ksh, try running ltconfig again with it.
- ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
- export ORIGINAL_CONFIG_SHELL
CONFIG_SHELL=/bin/ksh
export CONFIG_SHELL
exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
else
# Try using printf.
- echo='printf "%s\n"'
- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- # Cool, printf works
- :
- elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- echo="$CONFIG_SHELL $0 --fallback-echo"
- elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- echo="$CONFIG_SHELL $0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
- break
- fi
- prev="$cmd"
- done
-
- if test "$prev" != 'sed 50q "$0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
- else
- # Oops. We lost completely, so just stick with echo.
- echo=echo
- fi
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" != 'X\t'; then
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
fi
fi
fi
@@ -153,18 +87,13 @@ sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
# Same as above, but do not quote variable references.
double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
# The name of this program.
progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
# Constants:
PROGRAM=ltconfig
PACKAGE=libtool
-VERSION=1.2f
-TIMESTAMP=" (1.385 1999/03/15 17:24:54)"
+VERSION=1.2b
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5'
rm="rm -f"
@@ -177,8 +106,6 @@ can_build_shared=yes
enable_shared=yes
# All known linkers require a `.a' archive for static linking.
enable_static=yes
-enable_fast_install=yes
-enable_dlopen=unknown
ltmain=
silent=
srcdir=
@@ -190,11 +117,8 @@ ofile="$default_ofile"
verify_host=yes
with_gcc=no
with_gnu_ld=no
-need_locks=yes
-ac_ext=c
objext=o
libext=a
-cache_file=
old_AR="$AR"
old_CC="$CC"
@@ -226,16 +150,13 @@ do
case "$option" in
--help) cat <<EOM
-Usage: $progname [OPTION]... [HOST [LTMAIN]]
+Usage: $progname [OPTION]... LTMAIN [HOST]
Generate a system-specific libtool script.
--debug enable verbose shell tracing
--disable-shared do not build shared libraries
--disable-static do not build static libraries
- --disable-fast-install do not optimize for fast installation
- --enable-dlopen enable dlopen support
- --enable-dlopen-self enable support for dlopening programs
--help display this help and exit
--no-verify do not verify that HOST is a valid host type
-o, --output=FILE specify the output file [default=$default_ofile]
@@ -245,11 +166,9 @@ Generate a system-specific libtool script.
--version output version information and exit
--with-gcc assume that the GNU C compiler will be used
--with-gnu-ld assume that the C compiler uses the GNU linker
- --disable-lock disable file locking
- --cache-file=FILE configure cache file
-LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
-that provides basic libtool functionality.
+LTMAIN is the \`ltmain.sh' shell script fragment that provides basic libtool
+functionality.
HOST is the canonical host system name [default=guessed].
EOM
@@ -265,10 +184,6 @@ EOM
--disable-static) enable_static=no ;;
- --disable-fast-install) enable_fast_install=no ;;
-
- --enable-dlopen) enable_dlopen=yes ;;
-
--quiet | --silent) silent=yes ;;
--srcdir) prev=srcdir ;;
@@ -279,15 +194,11 @@ EOM
--output | -o) prev=ofile ;;
--output=*) ofile="$optarg" ;;
- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
+ --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;;
--with-gcc) with_gcc=yes ;;
--with-gnu-ld) with_gnu_ld=yes ;;
- --disable-lock) need_locks=no ;;
-
- --cache-file=*) cache_file="$optarg" ;;
-
-*)
echo "$progname: unrecognized option \`$option'" 1>&2
echo "$help" 1>&2
@@ -358,11 +269,6 @@ exec 5>>./config.log
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test -n "$cache_file" && test -r "$cache_file"; then
- echo "loading cache $cache_file within ltconfig"
- . $cache_file
-fi
-
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
@@ -376,8 +282,8 @@ else
fi
if test -z "$srcdir"; then
- # Assume the source directory is the same one as the path to LTMAIN.
- srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
+ # Assume the source directory is the same one as the path to ltmain.sh.
+ srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'`
test "$srcdir" = "$ltmain" && srcdir=.
fi
@@ -468,7 +374,7 @@ if test "${RANLIB+set}" != "set"; then
result=no
echo $ac_n "checking for ranlib... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
if test -f $dir/ranlib; then
@@ -483,11 +389,11 @@ if test "${RANLIB+set}" != "set"; then
fi
if test -n "$RANLIB"; then
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ old_archive_cmds="$old_archive_cmds;\$RANLIB \$oldlib"
+ old_postinstall_cmds="\$RANLIB \$oldlib;$old_postinstall_cmds"
fi
-# Set sane defaults for `DLLTOOL' and `AS', used on cygwin.
+# Set sane defaults for `DLLTOOL' and `AS', used on cygwin32.
test -z "$DLLTOOL" && DLLTOOL=dlltool
test -z "$AS" && AS=as
@@ -496,7 +402,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
# If CC is not set, then try to find GCC or a usable CC.
if test -z "$CC"; then
echo $ac_n "checking for gcc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
IFS="$save_ifs"
test -z "$dir" && dir=.
@@ -517,7 +423,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
# Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
if test -z "$CC"; then
echo $ac_n "checking for cc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
cc_rejected=no
for dir in $PATH; do
test -z "$dir" && dir=.
@@ -561,7 +467,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
# Now see if the compiler is really GCC.
with_gcc=no
echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
- echo "$progname:564: checking whether we are using GNU C" >&5
+ echo "$progname:470: checking whether we are using GNU C" >&5
$rm conftest.c
cat > conftest.c <<EOF
@@ -569,7 +475,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
yes;
#endif
EOF
- if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
with_gcc=yes
fi
$rm conftest.c
@@ -583,8 +489,8 @@ compiler="$2"
echo $ac_n "checking for object suffix... $ac_c" 1>&6
$rm conftest*
echo 'int i = 1;' > conftest.c
-echo "$progname:586: checking for object suffix" >& 5
-if { (eval echo $progname:587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+echo "$progname:492: checking for object suffix" >& 5
+if { (eval echo $progname:493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
# Append any warnings to the config.log.
cat conftest.err 1>&5
@@ -612,21 +518,13 @@ no_builtin_flag=
if test "$with_gcc" = yes; then
wl='-Wl,'
link_static_flag='-static'
+ no_builtin_flag=' -fno-builtin'
case "$host_os" in
- beos* | irix5* | irix6* | osf3* | osf4*)
+ aix3* | aix4* | irix5* | irix6* | osf3* | osf4*)
# PIC is the default for these OSes.
;;
- aix*)
- # Below there is a dirty hack to force normal static linking with -ldl
- # The problem is because libdl dynamically linked with both libc and
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
- # we not sure about C++ programs.
- link_static_flag="$link_static_flag ${wl}-lC"
- ;;
- cygwin* | mingw* | os2*)
+ cygwin32* | mingw32* | os2*)
# We can build DLLs from non-PIC.
;;
amigaos*)
@@ -660,7 +558,7 @@ else
# PIC (with -KPIC) is the default.
;;
- cygwin* | mingw* | os2*)
+ cygwin32* | mingw32* | os2*)
# We can build DLLs from non-PIC.
;;
@@ -676,7 +574,7 @@ else
special_shlib_compile_flags='-belf'
;;
- solaris*)
+ solaris2*)
pic_flag='-KPIC'
link_static_flag='-Bstatic'
wl='-Wl,'
@@ -688,7 +586,7 @@ else
wl='-Qoption ld '
;;
- sysv4.2uw2* | sysv4.3* | sysv5*)
+ sysv4.2uw2*)
pic_flag='-KPIC'
link_static_flag='-Bstatic'
wl='-Wl,'
@@ -714,156 +612,33 @@ if test -n "$pic_flag"; then
echo "int some_variable = 0;" > conftest.c
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pic_flag -DPIC"
- echo "$progname:717: checking if $compiler PIC flag $pic_flag works" >&5
- if { (eval echo $progname:718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+ echo "$progname:615: checking if $compiler PIC flag $pic_flag works" >&5
+ if { (eval echo $progname:616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
# Append any warnings to the config.log.
cat conftest.err 1>&5
-
- case "$host_os" in
- hpux9* | hpux10* | hpux11*)
- # On HP-UX, both CC and GCC only warn that PIC is supported... then they
- # create non-PIC objects. So, if there were any warnings, we assume that
- # PIC is not supported.
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- can_build_shared=no
- pic_flag=
- else
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- fi
- ;;
- *)
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- ;;
- esac
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- can_build_shared=no
- pic_flag=
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-else
- echo "$ac_t"none 1>&6
-fi
-# Check to see if options -o and -c are simultaneously supported by compiler
-echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
-$rm conftest*
-echo "int some_variable = 0;" > conftest.c
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -c -o conftest2.o"
-echo "$progname:760: checking if $compiler supports -c -o file.o" >&5
-if { (eval echo $progname:761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest2.o; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
+ # On HP-UX, both CC and GCC only warn that PIC is supported... then they
+ # create non-PIC objects. So, if there were any warnings, we assume that
+ # PIC is not supported.
if test -s conftest.err; then
echo "$ac_t"no 1>&6
- compiler_c_o=no
+ can_build_shared=no
+ pic_flag=
else
echo "$ac_t"yes 1>&6
- compiler_c_o=yes
+ pic_flag=" $pic_flag"
fi
-else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_c_o=no
- echo "$ac_t"no 1>&6
-fi
-CFLAGS="$save_CFLAGS"
-$rm conftest*
-
-if test x"$compiler_c_o" = x"yes"; then
- # Check to see if we can write to a .lo
- echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
- echo "$progname:788: checking if $compiler supports -c -o file.lo" >&5
-if { (eval echo $progname:789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_o_lo=no
- else
- echo "$ac_t"yes 1>&6
- compiler_o_lo=yes
- fi
else
# Append any errors to the config.log.
cat conftest.err 1>&5
- compiler_o_lo=no
+ can_build_shared=no
+ pic_flag=
echo "$ac_t"no 1>&6
fi
CFLAGS="$save_CFLAGS"
$rm conftest*
else
- compiler_o_lo=no
-fi
-
-# Check to see if we can do hard links to lock some files if needed
-hard_links="nottested"
-if test "$compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6
- hard_links=yes
- $rm conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- echo "$ac_t$hard_links" 1>&6
- $rm conftest*
- if test "$hard_links" = no; then
- echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-
-if test "$with_gcc" = yes; then
- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
- echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
- echo "$progname:840: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- if { (eval echo $progname:841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_rtti_exceptions=no
- else
- echo "$ac_t"yes 1>&6
- compiler_rtti_exceptions=yes
- fi
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_rtti_exceptions=no
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-
- if test "$compiler_rtti_exceptions" = "yes"; then
- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
- else
- no_builtin_flag=' -fno-builtin'
- fi
-
+ echo "$ac_t"none 1>&6
fi
# Check for any special shared library compilation flags.
@@ -881,8 +656,8 @@ $rm conftest*
echo 'main(){return(0);}' > conftest.c
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:884: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+echo "$progname:659: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
echo "$ac_t$link_static_flag" 1>&6
else
echo "$ac_t"none 1>&6
@@ -914,17 +689,11 @@ if test -z "$LD"; then
if test "$with_gcc" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
- echo "$progname:917: checking for ld used by GCC" >&5
+ echo "$progname:692: checking for ld used by GCC" >&5
ac_prog=`($CC -print-prog-name=ld) 2>&5`
case "$ac_prog" in
# Accept absolute paths.
- /* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
+ /* | [A-Za-z]:[/\\]*)
test -z "$LD" && LD="$ac_prog"
;;
"")
@@ -938,14 +707,14 @@ if test -z "$LD"; then
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld... $ac_c" 1>&6
- echo "$progname:941: checking for GNU ld" >&5
+ echo "$progname:710: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
- echo "$progname:944: checking for non-GNU ld" >&5
+ echo "$progname:713: checking for non-GNU ld" >&5
fi
if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog"; then
@@ -990,146 +759,107 @@ echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c
allow_undefined_flag=
no_undefined_flag=
-need_lib_prefix=unknown
-need_version=unknown
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
archive_cmds=
-archive_expsym_cmds=
old_archive_from_new_cmds=
export_dynamic_flag_spec=
whole_archive_flag_spec=
-thread_safe_flag_spec=
hardcode_libdir_flag_spec=
hardcode_libdir_separator=
hardcode_direct=no
hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
runpath_var=
-always_export_symbols=no
-export_symbols_cmds='$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-# include_expsyms should be a list of space-separated symbols to be *always*
-# included in the symbol list
-include_expsyms=
-# exclude_expsyms can be an egrep regular expression of symbols to exclude
-# it will be wrapped by ` (' and `)$', so one must not match beginning or
-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-# as well as any symbol that contains `d'.
-exclude_expsyms=
+fix_srcfile_path=
case "$host_os" in
-cygwin* | mingw*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$with_gcc" != yes; then
- with_gnu_ld=no
- fi
- ;;
-
-freebsd2* | sunos4*)
- exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+aix3* | aix4*)
+ # On AIX, the GNU linker works like the native linker.
+ with_gnu_ld=no
;;
-
esac
ld_shlibs=yes
if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
# See if GNU ld supports shared libraries.
case "$host_os" in
- aix3* | aix4*)
- # On AIX, the GNU linker is very broken
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
- ;;
-
amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+ archive_cmds='$rm $objdir/a2ixlibrary.data;$echo "#define NAME $libname" > $objdir/a2ixlibrary.data;$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data;$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data;$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data;$AR cru $lib$libobjs;$RANLIB $lib;(cd $objdir && a2ixlibrary -32)'
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
;;
sunos4*)
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
- wlarc=
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs'
hardcode_direct=yes
- hardcode_minus_L=yes
+ # The GNU linker will only hardcode -L options if -rpath is not
+ # used, but we will be using -rpath because we set
+ # hardcode_libdir_flag_spec below.
+ hardcode_minus_L=no
hardcode_shlibpath_var=no
;;
- beos*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+ cygwin32* | mingw32*)
+ if test "$with_gcc" = yes; then
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ # Very, very bogus.
+ echo '
+#include <windows.h>
+
+struct _reent *_impure_ptr;
+extern struct _reent *__imp_reent_data;
+BOOL APIENTRY
+__dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved)
+{
+ _impure_ptr = __imp_reent_data;
+}
+' > libtool.c
+ archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$rm libtool.$objext $soname-base $soname-exp'
+ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def'
else
- ld_shlibs=no
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ with_gnu_ld=no
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib$libobjs`echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll;linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+ fix_srcfile_path='`cygpath -w $srcfile`'
fi
;;
- cygwin* | mingw*)
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- allow_undefined_flag=unsupported
- always_export_symbols=yes
-
- # Extract the symbol export list from an `--export-all' def file,
- # then regenerate the def file from the symbol export list, so that
- # the compiled dll only exports the symbol export list.
- export_symbols_cmds='rm -f $objdir/$soname-ltdll.c~
- sed -e "/^# \/\* ltdll.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- (cd $objdir && $CC -c $soname-ltdll.c)~
- $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs~
- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols'
-
- archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
- _lt_hint=1;
- for symbol in `cat $export_symbols`; do
- echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def;
- _lt_hint=`expr 1 + \$_lt_hint`;
- done~
- $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
-
- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
- ;;
-
*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs'
else
ld_shlibs=no
fi
;;
esac
- if test "$ld_shlibs" = yes; then
+ if test "$ld_shlibs" = yes && test "$with_gnu_ld" = yes; then
runpath_var=LD_RUN_PATH
hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
export_dynamic_flag_spec='${wl}--export-dynamic'
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
fi
else
# PORTME fill in a description of your system's linker (not GNU ld)
case "$host_os" in
aix3*)
allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
+ archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE;$AR cru $lib $objdir/$soname'
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
@@ -1141,58 +871,55 @@ else
;;
aix4*)
- allow_undefined_flag=
- if test "$with_gcc" = yes; then
- if strings `${CC} -print-prog-name=collect2` | \
- grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- hardcode_direct=yes
- else
- # We have old collect2
- hardcode_direct=unsupported
- fi
- archive_cmds='$CC -shared ${wl}-bnoentry -o $objdir/$soname $libobjs $deplibs $linkopts'
- else
- always_export_symbols=yes
- archive_expsym_cmds='$CC -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bM:SRE ${wl}-bnoentry'
- hardcode_direct=yes
- fi
+ allow_undefined_flag=unsupported
+ archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry;$AR cru $lib $objdir/$soname'
+ hardcode_direct=yes
hardcode_minus_L=yes
- # Though LIBPATH variable hardcodes shlibpath into executable,
- # it doesn't affect searching for -l* libraries; this confuses
- # tests in mdemo.
- hardcode_shlibpath_var=unsupported
- hardcode_libdir_flag_spec='-L$libdir'
- ;;
+ ;;
amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+ archive_cmds='$rm $objdir/a2ixlibrary.data;$echo "#define NAME $libname" > $objdir/a2ixlibrary.data;$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data;$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data;$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data;$AR cru $lib$libobjs;$RANLIB $lib;(cd $objdir && a2ixlibrary -32)'
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
;;
- cygwin* | mingw*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib /OUT:$oldlib$oldobjs'
- fix_srcfile_path='`cygpath -w $srcfile`'
- ;;
-
- freebsd1*)
- ld_shlibs=no
- can_build_shared=no
+ cygwin32* | mingw32*)
+ if test "$with_gcc" = yes; then
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ # Very, very bogus.
+ echo '
+#include <windows.h>
+
+struct _reent *_impure_ptr;
+extern struct _reent *__imp_reent_data;
+BOOL APIENTRY
+__dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved)
+{
+ _impure_ptr = __imp_reent_data;
+}
+' > libtool.c
+ archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$rm libtool.$objext $soname-base $soname-exp'
+ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def'
+ else
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib$libobjs`echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll;linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+ fix_srcfile_path='`cygpath -w $srcfile`'
+ fi
;;
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
@@ -1200,24 +927,24 @@ else
# does not break anything, and helps significantly (at the cost of a little
# extra space).
freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
+ archive_cmds='$LD -Bshareable -o $lib$libobjs /usr/lib/c++rt0.o'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
- hardcode_minus_L=no # verified on 2.2.6
+ hardcode_minus_L=yes
hardcode_shlibpath_var=no
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -Bshareable -o $lib$libobjs'
hardcode_direct=yes
hardcode_minus_L=yes
hardcode_shlibpath_var=no
;;
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
+ # FreeBSD 3, at last, uses gcc -shared to do shared libraries.
+ freebsd3*)
+ archive_cmds='$CC -shared -o $lib$libobjs'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_minus_L=no
@@ -1225,7 +952,7 @@ else
;;
hpux9*)
- archive_cmds='$rm $objdir/$soname~$LD -b +s +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib'
+ archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs;mv $objdir/$soname $lib'
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -1233,7 +960,7 @@ else
;;
hpux10* | hpux11*)
- archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs'
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -1242,27 +969,23 @@ else
irix5* | irix6*)
if test "$with_gcc" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ archive_cmds='$CC -shared -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs'
else
- archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -o $lib'
+ archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs'
fi
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
;;
netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF
- fi
- hardcode_libdir_flag_spec='${wl}-R$libdir'
+ # Tested with NetBSD 1.2 ld
+ archive_cmds='$LD -Bshareable -o $lib$libobjs'
+ hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
;;
openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -Bshareable -o $lib$libobjs'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
@@ -1272,70 +995,46 @@ else
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
allow_undefined_flag=unsupported
- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;$echo DATA >> $objdir/$libname.def;$echo " SINGLE NONSHARED" >> $objdir/$libname.def;$echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def'
old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
;;
osf3* | osf4*)
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -o $lib'
- fi
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs'
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
sco3.2v5*)
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -G -o $lib$libobjs'
hardcode_direct=yes
;;
- solaris*)
+ solaris2*)
no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_shlibpath_var=no
+
+ # Solaris 2 before 2.5 hardcodes -L paths.
+ case "$host_os" in
+ solaris2.[0-4]*)
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
sunos4*)
- # Why do we need -Bstatic? To avoid inter-library dependencies, maybe...
- if test "$with_gcc" = yes; then
- # Use -fPIC here because libgcc is multilibbed
- archive_cmds='$CC -shared ${wl}-Bstatic -fPIC -o $lib $libobjs $deplibs $linkopts'
- else
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
- fi
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs'
hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
hardcode_shlibpath_var=no
;;
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=no
- hardcode_minus_L=no
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=no
- hardcode_minus_L=no
- hardcode_shlibpath_var=no
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+ archive_cmds='$LD -G -h $soname -o $lib$libobjs'
hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=no
hardcode_minus_L=no
@@ -1355,23 +1054,21 @@ if test -z "$NM"; then
case "$NM" in
/* | [A-Za-z]:[/\\]*) ;; # Let the user override the test with a path.
*)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/nm; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -p"
- break
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ NM="$ac_dir/nm -B"
+ elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ NM="$ac_dir/nm -p"
else
- NM=${NM="$ac_dir/nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
+ NM="$ac_dir/nm"
fi
+ break
fi
done
IFS="$ac_save_ifs"
@@ -1388,51 +1085,52 @@ echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
+symcode='[BCDEGRSTU]'
# Regexp to match symbols that can be accessed directly from C.
sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
# Transform the above into a raw symbol and a C symbol.
-symxfrm='\1 \2\3 \3'
-
-# Transform an extracted symbol line into a proper C declaration
-global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+symxfrm='\1 \1'
# Define system-specific variables.
case "$host_os" in
aix*)
- symcode='[BCDT]'
+ symcode='[BCDTU]'
;;
-cygwin* | mingw*)
- symcode='[ABCDGISTW]'
- ;;
-hpux*) # Its linker distinguishes data from code symbols
- global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
+cygwin32* | mingw32*)
+ sympat='_\([_A-Za-z][_A-Za-z0-9]*\)'
+ symxfrm='_\1 \1'
;;
irix*)
+ # Cannot use undefined symbols on IRIX because inlined functions mess us up.
symcode='[BCDEGRST]'
;;
-solaris*)
- symcode='[BDT]'
+solaris2*)
+ symcode='[BDTU]'
;;
esac
# If we're using GNU nm, then use its standard symbol codes.
if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
- symcode='[ABCDGISTW]'
+ symcode='[ABCDGISTUW]'
fi
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
+case "$host_os" in
+cygwin32* | mingw32*)
+ # We do not want undefined symbols on cygwin32. The user must
+ # arrange to define them via -l arguments.
+ symcode='[ABCDGISTW]'
+ ;;
+esac
- # Write the raw and C identifiers.
- global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
+# Write the raw and C identifiers.
+global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'"
- # Check to see that the pipe works correctly.
- pipe_works=no
- $rm conftest*
- cat > conftest.c <<EOF
+# Check to see that the pipe works correctly.
+pipe_works=no
+$rm conftest*
+cat > conftest.c <<EOF
#ifdef __cplusplus
extern "C" {
#endif
@@ -1444,96 +1142,93 @@ void nm_test_func(){}
main(){nm_test_var='a';nm_test_func();return(0);}
EOF
- echo "$progname:1447: checking if global_symbol_pipe works" >&5
- if { (eval echo $progname:1448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if { echo "$progname:1451: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
-
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
+echo "$progname:1145: checking if global_symbol_pipe works" >&5
+if { (eval echo $progname:1146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { echo "$progname:1149: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ wcout=`wc "$nlist" 2>/dev/null`
+ count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
+ (test "$count" -ge 0) 2>/dev/null || count=-1
+ else
+ rm -f "$nlist"T
+ count=-1
+ fi
- # Make sure that we snagged all the symbols we need.
- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<EOF > conftest.c
+ # Make sure that we snagged all the symbols we need.
+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.c
#ifdef __cplusplus
extern "C" {
#endif
EOF
- # Now generate the symbol file.
- eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
+ # Now generate the symbol file.
+ sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c
- cat <<EOF >> conftest.c
+ cat <<EOF >> conftest.c
#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
+# define __ptr_t void *
#else
-# define lt_ptr_t char *
-# define const
+# define __ptr_t char *
#endif
+/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
+int dld_preloaded_symbol_count = $count;
+
/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
+struct {
+ char *name;
+ __ptr_t address;
}
-lt_preloaded_symbols[] =
+dld_preloaded_symbols[] =
{
EOF
- sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
- cat <<\EOF >> conftest.c
- {0, (lt_ptr_t) 0}
+ sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c
+ cat <<\EOF >> conftest.c
+ {0, (__ptr_t) 0}
};
#ifdef __cplusplus
}
#endif
EOF
- # Now try linking the two files.
- mv conftest.$objext conftestm.$objext
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
- LIBS="conftestm.$objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
- if { (eval echo $progname:1503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- pipe_works=yes
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- LIBS="$save_LIBS"
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
+ # Now try linking the two files.
+ mv conftest.$objext conftestm.$objext
+ save_LIBS="$LIBS"
+ save_CFLAGS="$CFLAGS"
+ LIBS="conftestm.$objext"
+ CFLAGS="$CFLAGS$no_builtin_flag"
+ if { (eval echo $progname:1207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ pipe_works=yes
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.c >&5
+ fi
+ LIBS="$save_LIBS"
else
- echo "cannot find nm_test_var in $nlist" >&5
+ echo "cannot find nm_test_func in $nlist" >&5
fi
else
- echo "cannot run $global_symbol_pipe" >&5
+ echo "cannot find nm_test_var in $nlist" >&5
fi
else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
+ echo "cannot run $global_symbol_pipe" >&5
fi
- $rm conftest*
+else
+ echo "$progname: failed program was:" >&5
+ cat conftest.c >&5
+fi
+$rm conftest*
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- global_symbol_pipe=
- fi
-done
+# Do not use the global_symbol_pipe unless it works.
echo "$ac_t$pipe_works" 1>&6
-
-if test -z "$global_symbol_pipe"; then
- global_symbol_to_cdecl=
-fi
+test "$pipe_works" = yes || global_symbol_pipe=
# Check hardcoding attributes.
echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
@@ -1577,27 +1272,12 @@ postuninstall_cmds=
finish_cmds=
finish_eval=
shlibpath_var=
-shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-file_magic_cmd=
-file_magic_test_file=
-deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [regex]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given egrep regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+
echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
case "$host_os" in
-aix3*)
+aix3* | aix4*)
version_type=linux
library_names_spec='${libname}${release}.so$versuffix $libname.a'
shlibpath_var=LIBPATH
@@ -1606,47 +1286,13 @@ aix3*)
soname_spec='${libname}${release}.so$major'
;;
-aix4*)
- version_type=linux
- # AIX has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- # We preserve .a as extension for shared libraries though AIX4.2
- # and later linker supports .so
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
- shlibpath_var=LIBPATH
- deplibs_check_method=pass_all
- ;;
-
amigaos*)
library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs.
finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
;;
-beos*)
- library_names_spec='${libname}.so'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
-bsdi4*)
- version_type=linux
- library_names_spec='${libname}.so$major ${libname}.so'
- soname_spec='${libname}.so'
- finish_cmds='PATH="$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- deplibs_check_method='file_magic ELF 32-bit LSB shared object'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw*)
+cygwin32* | mingw32*)
version_type=windows
if test "$with_gcc" = yes; then
library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
@@ -1654,36 +1300,13 @@ cygwin* | mingw*)
library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
fi
dynamic_linker='Win32 ld.exe'
- deplibs_check_method='file_magic file format pei*-i386.*architecture: i386'
- file_magic_cmd='objdump -f'
- need_lib_prefix=no
- # FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
-freebsd*)
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
- case "$version_type" in
- freebsd-elf*)
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- deplibs_check_method=unknown
- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
- need_version=yes
- ;;
- esac
- finish_cmds='PATH="$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir'
+freebsd2* | freebsd3*)
+ version_type=sunos
+ library_names_spec='${libname}${release}.so$versuffix $libname.so'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -1698,8 +1321,6 @@ hpux9* | hpux10* | hpux11*)
# link against other versions.
dynamic_linker="$host_os dld.sl"
version_type=sunos
- need_lib_prefix=no
- need_version=no
shlibpath_var=SHLIB_PATH
library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
soname_spec='${libname}${release}.sl$major'
@@ -1707,40 +1328,11 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-irix5*)
- version_type=irix
+irix5* | irix6*)
+ version_type=osf
soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+ library_names_spec='${libname}${release}.so$versuffix $libname.so'
shlibpath_var=LD_LIBRARY_PATH
- deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" # or should it be pass_all?
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib/libc.so*`
- shlibpath_overrides_runpath=no
- ;;
-
-irix6*)
- version_type=irix
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- case "$LD" in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- # even though /usr/local/lib is always searched, the man-page says
- # shared libraries should not be installed there if they use an ABI
- # different from -32, so we'd better not search for shared libraries
- # there either
- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
- deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" # or should it be pass_all?
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib${libsuff}/libc.so*`
;;
# No shared lib support for Linux oldld, aout, or coff.
@@ -1751,16 +1343,10 @@ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
# This must be Linux ELF.
linux-gnu*)
version_type=linux
- need_lib_prefix=no
- need_version=no
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
if test -f /lib/ld.so.1; then
dynamic_linker='GNU ld.so'
@@ -1773,34 +1359,15 @@ linux-gnu*)
fi
;;
-netbsd*)
+netbsd* | openbsd*)
version_type=sunos
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-openbsd*)
- version_type=sunos
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- need_version=no
- fi
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+ library_names_spec='${libname}${release}.so$versuffix'
finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
;;
os2*)
libname_spec='$name'
- need_lib_prefix=no
library_names_spec='$libname.dll $libname.a'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=LIBPATH
@@ -1809,18 +1376,8 @@ os2*)
osf3* | osf4*)
version_type=osf
soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+ library_names_spec='${libname}${release}.so$versuffix $libname.so'
shlibpath_var=LD_LIBRARY_PATH
- # deplibs_check_method='pass_all'
- # Although pass_all appears to work, it copies symbols from static libraries
- # into shared ones and exports them. So, when a program is linked with two
- # or more libraries that have got copies of the same symbols, link fails
- # This was only tested on osf4:
- deplibs_check_method='file_magic COFF format alpha shared library'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
sco3.2v5*)
@@ -1830,19 +1387,13 @@ sco3.2v5*)
shlibpath_var=LD_LIBRARY_PATH
;;
-solaris*)
+solaris2*)
version_type=linux
- need_lib_prefix=no
- need_version=no
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
soname_spec='${libname}${release}.so$major'
shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
# ldd complains unless libraries are executable
postinstall_cmds='chmod +x $lib'
- deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/lib/libc.so
;;
sunos4*)
@@ -1850,23 +1401,13 @@ sunos4*)
library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
;;
-sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4.2uw2*)
version_type=linux
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
soname_spec='${libname}${release}.so$major'
shlibpath_var=LD_LIBRARY_PATH
- case "$host_vendor" in
- ncr)
- deplibs_check_method='pass_all'
- ;;
- esac
;;
uts4*)
@@ -1876,66 +1417,29 @@ uts4*)
shlibpath_var=LD_LIBRARY_PATH
;;
-dgux*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
*)
dynamic_linker=no
;;
esac
-echo "$ac_t$dynamic_linker" 1>&6
+echo "$ac_t$dynamic_linker"
test "$dynamic_linker" = no && can_build_shared=no
# Report the final consequences.
echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
-if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
- case "$deplibs_check_method" in
- "file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- egrep "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-EOF
- fi ;;
- esac
-fi
-
echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
test "$can_build_shared" = "no" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC.
case "$host_os" in
-aix3*)
+aix*)
test "$enable_shared" = yes && enable_static=no
if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ archive_cmds="$archive_cmds;\$RANLIB \$lib"
postinstall_cmds='$RANLIB $lib'
fi
;;
-
-aix4*)
- test "$enable_shared" = yes && enable_static=no
- ;;
esac
echo "$ac_t$enable_shared" 1>&6
@@ -1945,15 +1449,6 @@ test "$enable_shared" = yes || enable_static=yes
echo "checking whether to build static libraries... $enable_static" 1>&6
-if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-
echo $ac_n "checking for objdir... $ac_c" 1>&6
rm -f .libs 2>/dev/null
mkdir .libs 2>/dev/null
@@ -1966,502 +1461,46 @@ fi
rmdir .libs 2>/dev/null
echo "$ac_t$objdir" 1>&6
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
-if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
- lt_cv_dlopen=no lt_cv_dlopen_libs=
-echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "$progname:1977: checking for dlopen" >&5
-if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1982 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-dlopen();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_dlopen=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dlopen"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "$progname:2022: 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 <<EOF
-#line 2030 "ltconfig"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dlopen();
-
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo $progname:2040: \"$ac_link\") 1>&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 "$progname: 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
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "$progname:2059: checking for dld_link in -ldld" >&5
-ac_lib_var=`echo dld'_'dld_link | 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="-ldld $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2067 "ltconfig"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char dld_link();
-
-int main() {
-dld_link()
-; return 0; }
-EOF
-if { (eval echo $progname:2077: \"$ac_link\") 1>&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 "$progname: 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
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "$progname:2096: checking for shl_load" >&5
-if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2101 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char shl_load();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-shl_load();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_shl_load=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_shl_load=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="shl_load"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for LoadLibrary""... $ac_c" 1>&6
-echo "$progname:2141: checking for LoadLibrary" >&5
-if eval "test \"`echo '$''{'ac_cv_func_LoadLibrary'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2146 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char LoadLibrary(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char LoadLibrary();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_LoadLibrary) || defined (__stub___LoadLibrary)
-choke me
-#else
-LoadLibrary();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_LoadLibrary=yes"
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_LoadLibrary=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'LoadLibrary`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="LoadLibrary"
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-fi
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- fi
-
- case "$lt_cv_dlopen" in
- dlopen)
-for ac_hdr in dlfcn.h; do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "$progname:2210: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 2215 "ltconfig"
-#include <$ac_hdr>
-int fnord = 0;
-EOF
-ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo $progname:2220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
- if test "x$ac_cv_header_dlfcn_h" = xyes; then
- CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- fi
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2248: checking whether a program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self+set}" = set; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- lt_cv_dlopen_self=cross
- else
- cat > conftest.c <<EOF
-#line 2256 "ltconfig"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LTDL_GLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LTDL_GLOBAL DL_GLOBAL
-# else
-# define LTDL_GLOBAL 0
-# endif
-#endif
-
-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LTDL_LAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LTDL_LAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LTDL_LAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LTDL_LAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LTDL_LAZY_OR_NOW DL_NOW
-# else
-# define LTDL_LAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-fnord() { int i=42;}
-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) exit(0); } exit(1); }
-
-EOF
-if { (eval echo $progname:2302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- lt_cv_dlopen_self=yes
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- lt_cv_dlopen_self=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$lt_cv_dlopen_self" 1>&6
-
- if test "$lt_cv_dlopen_self" = yes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2321: checking whether a statically linked program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self_static+set}" = set; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- lt_cv_dlopen_self_static=cross
- else
- cat > conftest.c <<EOF
-#line 2329 "ltconfig"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LTDL_GLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LTDL_GLOBAL DL_GLOBAL
-# else
-# define LTDL_GLOBAL 0
-# endif
-#endif
-
-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LTDL_LAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LTDL_LAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LTDL_LAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LTDL_LAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LTDL_LAZY_OR_NOW DL_NOW
-# else
-# define LTDL_LAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-fnord() { int i=42;}
-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) exit(0); } exit(1); }
-
-EOF
-if { (eval echo $progname:2375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- lt_cv_dlopen_self_static=yes
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- lt_cv_dlopen_self_static=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
-fi
- ;;
- esac
-
- case "$lt_cv_dlopen_self" in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case "$lt_cv_dlopen_self_static" in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
# Copy echo and quote the copy, instead of the original, because it is
# used later.
ltecho="$echo"
-if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
- ltecho="$CONFIG_SHELL \$0 --fallback-echo"
-fi
-LTSHELL="$SHELL"
-
-LTCONFIG_VERSION="$VERSION"
-# Only quote variables if we're using ltmain.sh.
-case "$ltmain" in
-*.sh)
- # Now quote all the things that may contain metacharacters.
- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \
- old_LN_S old_DLLTOOL old_AS AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
- reload_flag reload_cmds wl \
- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
- thread_safe_flag_spec whole_archive_flag_spec libname_spec \
- library_names_spec soname_spec \
- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
- file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
- hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-
- case "$var" in
- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
- old_postinstall_cmds | old_postuninstall_cmds | \
- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
- postinstall_cmds | postuninstall_cmds | \
- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
- *)
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
- ;;
- esac
- done
-
- case "$ltecho" in
- *'\$0 --fallback-echo"')
- ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+# Now quote all the things that may contain metacharacters.
+for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \
+ old_LN_S old_DLLTOOL old_AS AR CC LD LN_S NM DLLTOOL AS reload_flag \
+ reload_cmds wl pic_flag link_static_flag no_builtin_flag \
+ export_dynamic_flag_spec whole_archive_flag_spec libname_spec \
+ library_names_spec soname_spec RANLIB \
+ old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+ old_postuninstall_cmds archive_cmds postinstall_cmds postuninstall_cmds \
+ allow_undefined_flag no_undefined_flag objext libext \
+ finish_cmds finish_eval global_symbol_pipe fix_srcfile_path \
+ hardcode_libdir_flag_spec hardcode_libdir_separator; do
+
+ case "$var" in
+ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | archive_cmds | \
+ postinstall_cmds | postuninstall_cmds | finish_cmds)
+ # Double-quote double-evaled strings.
+ eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`"
+ ;;
+ *)
+ eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`"
;;
esac
+done
- trap "$rm \"$ofile\"; exit 1" 1 2 15
- echo "creating $ofile"
- $rm "$ofile"
- cat <<EOF > "$ofile"
+trap "$rm \"$ofile\"; exit 1" 1 2 15
+echo "creating $ofile"
+$rm "$ofile"
+cat <<EOF > "$ofile"
#! $SHELL
# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION
# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
#
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -2491,34 +1530,10 @@ Xsed="sed -e s/^X//"
if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
### BEGIN LIBTOOL CONFIG
-EOF
- cfgfile="$ofile"
- ;;
-
-*)
- # Double-quote the variables that need it (for aesthetics).
- for var in old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \
- old_LN_S old_DLLTOOL old_AS; do
- eval "$var=\\\"\$var\\\""
- done
-
- # Just create a config file.
- cfgfile="$ofile.cfg"
- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
- echo "creating $cfgfile"
- $rm "$cfgfile"
- cat <<EOF > "$cfgfile"
-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-EOF
- ;;
-esac
-
-cat <<EOF >> "$cfgfile"
# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
#
-# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
-# LD=$old_LD NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
+# CC="$old_CC" CFLAGS="$old_CFLAGS" CPPFLAGS="$old_CPPFLAGS" \\
+# LD="$old_LD" NM="$old_NM" RANLIB="$old_RANLIB" LN_S="$old_LN_S" \\
# DLLTOOL="$old_DLLTOOL" AS="$old_AS" \\
# $0$ltconfig_args
#
@@ -2526,10 +1541,10 @@ cat <<EOF >> "$cfgfile"
# debugging $progname, is in ./config.log if it exists.
# The version of $progname that generated this script.
-LTCONFIG_VERSION=$LTCONFIG_VERSION
+LTCONFIG_VERSION="$VERSION"
# Shell to use when invoking shell scripts.
-SHELL=$LTSHELL
+SHELL="$SHELL"
# Whether or not to build shared libraries.
build_libtool_libs=$enable_shared
@@ -2537,46 +1552,43 @@ build_libtool_libs=$enable_shared
# Whether or not to build static libraries.
build_old_libs=$enable_static
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
# The host system.
-host_alias=$host_alias
-host=$host
+host_alias="$host_alias"
+host="$host"
# An echo program that does not interpret backslashes.
-echo=$ltecho
+echo="$ltecho"
# The archiver.
-AR=$AR
+AR="$AR"
# The default C compiler.
-CC=$CC
+CC="$CC"
# The linker used to build libraries.
-LD=$LD
+LD="$LD"
# Whether we need hard or soft links.
-LN_S=$LN_S
+LN_S="$LN_S"
# A BSD-compatible nm program.
-NM=$NM
+NM="$NM"
-# Used on cygwin: DLL creation program.
+# Used on cygwin32: DLL creation program.
DLLTOOL="$DLLTOOL"
-# Used on cygwin: assembler.
+# Used on cygwin32: assembler.
AS="$AS"
# The name of the directory that contains temporary libtool files.
-objdir=$objdir
+objdir="$objdir"
# How to create reloadable object files.
-reload_flag=$reload_flag
-reload_cmds=$reload_cmds
+reload_flag="$reload_flag"
+reload_cmds="$reload_cmds"
# How to pass a linker flag through the compiler.
-wl=$wl
+wl="$wl"
# Object file suffix (normally "o").
objext="$objext"
@@ -2585,98 +1597,61 @@ objext="$objext"
libext="$libext"
# Additional compiler flags for building library objects.
-pic_flag=$pic_flag
-
-# Does compiler simultaneously support -c and -o options
-compiler_c_o=$compiler_c_o
-
-# Can we write directly to a .lo ?
-compiler_o_lo=$compiler_o_lo
-
-# Must we lock files when doing compilation ?
-need_locks=$need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
+pic_flag="$pic_flag"
# Compiler flag to prevent dynamic linking.
-link_static_flag=$link_static_flag
+link_static_flag="$link_static_flag"
# Compiler flag to turn off builtin functions.
-no_builtin_flag=$no_builtin_flag
+no_builtin_flag="$no_builtin_flag"
# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$export_dynamic_flag_spec
+export_dynamic_flag_spec="$export_dynamic_flag_spec"
# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$whole_archive_flag_spec
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$thread_safe_flag_spec
+whole_archive_flag_spec="$whole_archive_flag_spec"
# Library versioning type.
version_type=$version_type
# Format of library name prefix.
-libname_spec=$libname_spec
+libname_spec="$libname_spec"
# List of archive names. First name is the real one, the rest are links.
# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$library_names_spec
+library_names_spec="$library_names_spec"
# The coded name of the library, if different from the real name.
-soname_spec=$soname_spec
+soname_spec="$soname_spec"
# Commands used to build and install an old-style archive.
-RANLIB=$RANLIB
-old_archive_cmds=$old_archive_cmds
-old_postinstall_cmds=$old_postinstall_cmds
-old_postuninstall_cmds=$old_postuninstall_cmds
+RANLIB="$RANLIB"
+old_archive_cmds="$old_archive_cmds"
+old_postinstall_cmds="$old_postinstall_cmds"
+old_postuninstall_cmds="$old_postuninstall_cmds"
# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$old_archive_from_new_cmds
+old_archive_from_new_cmds="$old_archive_from_new_cmds"
# Commands used to build and install a shared archive.
-archive_cmds=$archive_cmds
-archive_expsym_cmds=$archive_expsym_cmds
-postinstall_cmds=$postinstall_cmds
-postuninstall_cmds=$postuninstall_cmds
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic
-file_magic_cmd=$file_magic_cmd
+archive_cmds="$archive_cmds"
+postinstall_cmds="$postinstall_cmds"
+postuninstall_cmds="$postuninstall_cmds"
# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$allow_undefined_flag
+allow_undefined_flag="$allow_undefined_flag"
# Flag that forces no undefined symbols.
-no_undefined_flag=$no_undefined_flag
+no_undefined_flag="$no_undefined_flag"
# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$finish_cmds
+finish_cmds="$finish_cmds"
# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$finish_eval
+finish_eval="$finish_eval"
# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$global_symbol_to_cdecl
+global_symbol_pipe="$global_symbol_pipe"
# This is the shared library runtime path variable.
runpath_var=$runpath_var
@@ -2684,18 +1659,15 @@ runpath_var=$runpath_var
# This is the shared library path variable.
shlibpath_var=$shlibpath_var
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
# How to hardcode a shared library path into an executable.
hardcode_action=$hardcode_action
# Flag to hardcode \$libdir into a binary during linking.
# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
+hardcode_libdir_flag_spec="$hardcode_libdir_flag_spec"
# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$hardcode_libdir_separator
+hardcode_libdir_separator="$hardcode_libdir_separator"
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
# resulting binary.
@@ -2709,36 +1681,13 @@ hardcode_minus_L=$hardcode_minus_L
# the resulting binary.
hardcode_shlibpath_var=$hardcode_shlibpath_var
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
-
# Fix the shell variable \$srcfile for the compiler.
fix_srcfile_path="$fix_srcfile_path"
-
-# Set to yes if exported symbols are required
-always_export_symbols=$always_export_symbols
-
-# The command to extract exported symbols
-export_symbols_cmds=$export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols
-exclude_expsyms=$exclude_expsyms
-
-# Symbols that must always be exported
-include_expsyms=$include_expsyms
-
EOF
-case "$ltmain" in
-*.sh)
- echo '### END LIBTOOL CONFIG' >> "$ofile"
- echo >> "$ofile"
- case "$host_os" in
- aix3*)
- cat <<\EOF >> "$ofile"
+case "$host_os" in
+aix3*)
+ cat <<\EOF >> "$ofile"
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
@@ -2748,72 +1697,16 @@ if test "${COLLECT_NAMES+set}" != set; then
export COLLECT_NAMES
fi
EOF
- ;;
- esac
-
- # Append the ltmain.sh script.
- cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
-
- chmod +x "$ofile"
- ;;
-
-*)
- # Compile the libtool program.
- echo "FIXME: would compile $ltmain"
;;
esac
-test -n "$cache_file" || exit 0
+echo '### END LIBTOOL CONFIG' >> "$ofile"
+echo >> "$ofile"
-# AC_CACHE_SAVE
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
+# Append the ltmain.sh script.
+cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+chmod +x "$ofile"
exit 0
# Local Variables:
diff --git a/gnu/egcs/ltmain.sh b/gnu/egcs/ltmain.sh
index bfc7e9d7ad3..eee5763387b 100644
--- a/gnu/egcs/ltmain.sh
+++ b/gnu/egcs/ltmain.sh
@@ -1,7 +1,7 @@
# ltmain.sh - Provide generalized library-building support services.
# NOTE: Changing this file will not affect anything until you rerun ltconfig.
#
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -27,13 +27,6 @@
if test "X$1" = X--no-reexec; then
# Discard the --no-reexec flag, and continue.
shift
-elif test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit 0
elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
# Yippee, $echo works!
:
@@ -49,8 +42,7 @@ modename="$progname"
# Constants.
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.2f
-TIMESTAMP=" (1.385 1999/03/15 17:24:54)"
+VERSION=1.2b
default_mode=
help="Try \`$progname --help' for more information."
@@ -61,10 +53,8 @@ rm="rm -f"
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
+Xsed='sed -e s/^X//'
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
-SP2NL='tr \040 \012'
-NL2SP='tr \012 \040'
# NLS nuisances.
# Only set LANG and LC_ALL to C if already set.
@@ -100,6 +90,7 @@ show="$echo"
show_help=
execute_dlfiles=
lo2o="s/\\.lo\$/.${objext}/"
+los2o="s/\\.lo /.${objext} /g"
# Parse our command line options once, thoroughly.
while test $# -gt 0
@@ -135,7 +126,7 @@ do
;;
--version)
- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ echo "$PROGRAM (GNU $PACKAGE) $VERSION"
exit 0
;;
@@ -210,12 +201,12 @@ if test -z "$show_help"; then
mode=link
for arg
do
- case "$arg" in
- -c)
- mode=compile
- break
- ;;
- esac
+ case "$arg" in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
done
;;
*db | *dbx | *strace | *truss)
@@ -233,11 +224,11 @@ if test -z "$show_help"; then
# Just use the default operation mode.
if test -z "$mode"; then
- if test -n "$nonopt"; then
- $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
- else
- $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
- fi
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
fi
;;
esac
@@ -265,17 +256,14 @@ if test -z "$show_help"; then
srcfile="$nonopt"
suppress_output=
- user_target=no
for arg
do
# Accept any command-line options.
case "$arg" in
-o)
- if test "$user_target" != "no"; then
- $echo "$modename: you cannot specify \`-o' more than once" 1>&2
- exit 1
- fi
- user_target=next
+ $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
+ $echo "$help" 1>&2
+ exit 1
;;
-static)
@@ -284,20 +272,6 @@ if test -z "$show_help"; then
;;
esac
- case "$user_target" in
- next)
- # The next one is the -o target name
- user_target=yes
- continue
- ;;
- yes)
- # We got the output file
- user_target=set
- libobj="$arg"
- continue
- ;;
- esac
-
# Accept the current argument as the source file.
lastarg="$srcfile"
srcfile="$arg"
@@ -326,22 +300,11 @@ if test -z "$show_help"; then
fi
done
- case "$user_target" in
- set)
- ;;
- no)
- # Get the name of the library object.
- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
- ;;
- *)
- $echo "$modename: you must specify a target with \`-o'" 1>&2
- exit 1
- ;;
- esac
+ # Get the name of the library object.
+ libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
# Recognize several different file suffixes.
- # If the user specifies -o file.o, it is replaced with file.lo
- xform='[cCFSfmso]'
+ xform='[cCFSfms]'
case "$libobj" in
*.ada) xform=ada ;;
*.adb) xform=adb ;;
@@ -360,7 +323,7 @@ if test -z "$show_help"; then
case "$libobj" in
*.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
*)
- $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
exit 1
;;
esac
@@ -373,50 +336,11 @@ if test -z "$show_help"; then
# Delete any leftover library objects.
if test "$build_old_libs" = yes; then
- removelist="$obj $libobj"
- else
- removelist="$libobj"
- fi
-
- $run $rm $removelist
- trap "$run $rm $removelist; exit 1" 1 2 15
-
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
- lockfile="$output_obj.lock"
- removelist="$removelist $output_obj $lockfile"
- trap "$run $rm $removelist; exit 1" 1 2 15
+ $run $rm $obj $libobj
+ trap "$run $rm $obj $libobj; exit 1" 1 2 15
else
- need_locks=no
- lockfile=
- fi
-
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
- until ln "$0" "$lockfile" 2>/dev/null; do
- $show "Waiting for $lockfile to be removed"
- sleep 2
- done
- elif test "$need_locks" = warn; then
- if test -f "$lockfile"; then
- echo "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $run $rm $removelist
- exit 1
- fi
- echo $srcfile > "$lockfile"
+ $run $rm $libobj
+ trap "$run $rm $libobj; exit 1" 1 2 15
fi
if test -n "$fix_srcfile_path"; then
@@ -429,174 +353,44 @@ compiler."
fbsd_hideous_sh_bug=$base_compile
# All platforms use -DPIC, to notify preprocessed assembler code.
- command="$base_compile $pic_flag -DPIC $srcfile"
- if test "$build_old_libs" = yes; then
- lo_libobj="$libobj"
- dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$libobj"; then
- dir="$objdir"
- else
- dir="$dir/$objdir"
- fi
- libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
-
- if test -d "$dir"; then
- $show "$rm $libobj"
- $run $rm $libobj
- else
- $show "$mkdir $dir"
- $run $mkdir $dir
- status=$?
- if test $status -ne 0 && test ! -d $dir; then
- exit $status
- fi
- fi
- fi
- if test "$compiler_o_lo" = yes; then
- output_obj="$libobj"
- command="$command -o $output_obj"
- elif test "$compiler_c_o" = yes; then
- output_obj="$obj"
- command="$command -o $output_obj"
- fi
-
- $show "$command"
- if $run eval "$command"; then :
+ $show "$base_compile$pic_flag -DPIC $srcfile"
+ if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
else
- test -n "$output_obj" && $run $rm $removelist
- exit 1
- fi
-
- if test "$need_locks" = warn &&
- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
- echo "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $run $rm $removelist
- exit 1
- fi
-
- # Just move the object if needed, then go on to compile the next one
- if test x"$output_obj" != x"$libobj"; then
- $show "$mv $output_obj $libobj"
- if $run $mv $output_obj $libobj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
+ test -n "$obj" && $run $rm $obj
+ exit 1
fi
# If we have no pic_flag, then copy the object into place and finish.
- if test -z "$pic_flag" && test "$build_old_libs" = yes; then
- # Rename the .lo from within objdir to obj
- if test -f $obj; then
- $show $rm $obj
- $run $rm $obj
- fi
-
- $show "$mv $libobj $obj"
- if $run $mv $libobj $obj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
-
- # Now arrange that obj and lo_libobj become the same file
- $show "$LN_S $obj $lo_libobj"
- if $run $LN_S $obj $lo_libobj; then
- exit 0
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
+ if test -z "$pic_flag"; then
+ $show "$LN_S $obj $libobj"
+ $run $LN_S $obj $libobj
+ exit $?
fi
+ # Just move the object, then go on to compile the next one
+ $show "$mv $obj $libobj"
+ $run $mv $obj $libobj || exit $?
+
# Allow error messages only from the first compilation.
suppress_output=' >/dev/null 2>&1'
fi
# Only build a position-dependent object if we build old libraries.
if test "$build_old_libs" = yes; then
- command="$base_compile $srcfile"
- if test "$compiler_c_o" = yes; then
- command="$command -o $obj"
- output_obj="$obj"
- fi
-
# Suppress compiler output if we already did a PIC compilation.
- command="$command$suppress_output"
- $show "$command"
- if $run eval "$command"; then :
- else
- $run $rm $removelist
- exit 1
- fi
-
- if test "$need_locks" = warn &&
- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
- echo "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $run $rm $removelist
- exit 1
- fi
-
- # Just move the object if needed
- if test x"$output_obj" != x"$obj"; then
- $show "$mv $output_obj $obj"
- if $run $mv $output_obj $obj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
-
- # Create an invalid libtool object if no PIC, so that we do not
- # accidentally link it into a program.
- if test "$build_libtool_libs" != yes; then
- $show "echo timestamp > $libobj"
- $run eval "echo timestamp > \$libobj" || exit $?
+ $show "$base_compile $srcfile$suppress_output"
+ if $run eval "$base_compile \$srcfile$suppress_output"; then :
else
- # Move the .lo from within objdir
- $show "$mv $libobj $lo_libobj"
- if $run $mv $libobj $lo_libobj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
+ $run $rm $obj $libobj
+ exit 1
fi
fi
- # Unlock the critical section if it was locked
- if test "$need_locks" != no; then
- $rm "$lockfile"
+ # Create an invalid libtool object if no PIC, so that we do not
+ # accidentally link it into a program.
+ if test "$build_libtool_libs" != yes; then
+ $show "echo timestamp > $libobj"
+ $run eval "echo timestamp > \$libobj" || exit $?
fi
exit 0
@@ -605,225 +399,31 @@ compiler."
# libtool link mode
link)
modename="$modename: link"
- C_compiler="$CC" # save it, to compile generated C sources
CC="$nonopt"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- # It is impossible to link a dll without this setting, and
- # we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
- # flag for every libtool invokation.
- # allow_undefined=no
-
- # FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
- # even a static library is built. For now, we need to specify
- # -no-undefined on the libtool link line when we can be certain
- # that all symbols are satisfied, otherwise we get a static library.
- allow_undefined=yes
-
- # This is a source program that is used to create dlls on Windows
- # Don't remove nor modify the starting and closing comments
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-#
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-# __hDllInstance_base = hInst;
-# return TRUE;
-# }
-# /* ltdll.c ends here */
- # This is a source program that is used to create import libraries
- # on Windows for dlls which lack them. Don't remove nor modify the
- # starting and closing comments
-# /* impgen.c starts here */
-# /* Copyright (C) 1999 Free Software Foundation, Inc.
-#
-# This file is part of GNU libtool.
-#
-# 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.
-# */
-#
-# #include <stdio.h> /* for printf() */
-# #include <unistd.h> /* for open(), lseek(), read() */
-# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-# #include <string.h> /* for strdup() */
-#
-# static unsigned int
-# pe_get16 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[2];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 2);
-# return b[0] + (b[1]<<8);
-# }
-#
-# static unsigned int
-# pe_get32 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[4];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 4);
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# static unsigned int
-# pe_as32 (ptr)
-# void *ptr;
-# {
-# unsigned char *b = ptr;
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# int
-# main (argc, argv)
-# int argc;
-# char *argv[];
-# {
-# int dll;
-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-# unsigned long export_rva, export_size, nsections, secptr, expptr;
-# unsigned long name_rvas, nexp;
-# unsigned char *expdata, *erva;
-# char *filename, *dll_name;
-#
-# filename = argv[1];
-#
-# dll = open(filename, O_RDONLY|O_BINARY);
-# if (!dll)
-# return 1;
-#
-# dll_name = filename;
-#
-# for (i=0; filename[i]; i++)
-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-# dll_name = filename + i +1;
-#
-# pe_header_offset = pe_get32 (dll, 0x3c);
-# opthdr_ofs = pe_header_offset + 4 + 20;
-# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-#
-# if (num_entries < 1) /* no exports */
-# return 1;
-#
-# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-# export_size = pe_get32 (dll, opthdr_ofs + 100);
-# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-# secptr = (pe_header_offset + 4 + 20 +
-# pe_get16 (dll, pe_header_offset + 4 + 16));
-#
-# expptr = 0;
-# for (i = 0; i < nsections; i++)
-# {
-# char sname[8];
-# unsigned long secptr1 = secptr + 40 * i;
-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-# lseek(dll, secptr1, SEEK_SET);
-# read(dll, sname, 8);
-# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-# {
-# expptr = fptr + (export_rva - vaddr);
-# if (export_rva + export_size > vaddr + vsize)
-# export_size = vsize - (export_rva - vaddr);
-# break;
-# }
-# }
-#
-# expdata = (unsigned char*)malloc(export_size);
-# lseek (dll, expptr, SEEK_SET);
-# read (dll, expdata, export_size);
-# erva = expdata - export_rva;
-#
-# nexp = pe_as32 (expdata+24);
-# name_rvas = pe_as32 (expdata+32);
-#
-# printf ("EXPORTS\n");
-# for (i = 0; i<nexp; i++)
-# {
-# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-# }
-#
-# return 0;
-# }
-# /* impgen.c ends here */
- ;;
- *)
- allow_undefined=yes
- ;;
- esac
+ allow_undefined=yes
compile_command="$CC"
finalize_command="$CC"
- compile_rpath=
- finalize_rpath=
compile_shlibpath=
finalize_shlibpath=
convenience=
old_convenience=
deplibs=
- linkopts=
-
- if test -n "$shlibpath_var"; then
- # get the directories listed in $shlibpath_var
- eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
- else
- lib_search_path=
- fi
- # now prepend the system-specific ones
- eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
- avoid_version=no
dlfiles=
dlprefiles=
- dlself=no
export_dynamic=no
- export_symbols=
- export_symbols_regex=
generated=
+ hardcode_libdirs=
libobjs=
link_against_libtool_libs=
ltlibs=
- module=no
objs=
- preload=no
prev=
prevarg=
release=
rpath=
- xrpath=
perm_rpath=
temp_rpath=
- thread_safe=no
vinfo=
# We need to know -static, to get the right output filenames.
@@ -831,13 +431,13 @@ compiler."
do
case "$arg" in
-all-static | -static)
- if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
$echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
- fi
- build_libtool_libs=no
+ fi
+ build_libtool_libs=no
build_old_libs=yes
- break
- ;;
+ break
+ ;;
esac
done
@@ -851,74 +451,40 @@ compiler."
# If the previous option needs an argument, assign it.
if test -n "$prev"; then
- case "$prev" in
- output)
- compile_command="$compile_command @OUTPUT@"
- finalize_command="$finalize_command @OUTPUT@"
- ;;
- esac
-
- case "$prev" in
- dlfiles|dlprefiles)
- if test "$preload" = no; then
- # Add the symbol object into the linking commands.
- compile_command="$compile_command @SYMFILE@"
- finalize_command="$finalize_command @SYMFILE@"
- preload=yes
- fi
- case "$arg" in
- *.la | *.lo) ;; # We handle these cases below.
- self)
- if test "$prev" = dlprefiles; then
- dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
- dlself=yes
- fi
- prev=
- continue
- ;;
- *)
- dlprefiles="$dlprefiles $arg"
- test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
- prev=
- ;;
- esac
- ;;
- expsyms)
- export_symbols="$arg"
- if test ! -f "$arg"; then
- $echo "$modename: symbol file \`$arg' does not exist"
- exit 1
- fi
- prev=
- continue
- ;;
- expsyms_regex)
- export_symbols_regex="$arg"
- prev=
- continue
- ;;
+ case "$prev" in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case "$prev" in
+ dlfiles|dlprefiles)
+ case "$arg" in
+ *.la | *.lo) ;; # We handle these cases below.
+ *)
+ dlprefiles="$dlprefiles $arg"
+ test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
+ prev=
+ ;;
+ esac
+ ;;
release)
release="-$arg"
prev=
continue
;;
- rpath)
- rpath="$rpath $arg"
+ rpath)
+ rpath="$rpath $arg"
prev=
continue
;;
- xrpath)
- xrpath="$xrpath $arg"
- prev=
- continue
- ;;
- *)
- eval "$prev=\"\$arg\""
- prev=
- continue
- ;;
- esac
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
fi
prevarg="$arg"
@@ -926,11 +492,10 @@ compiler."
case "$arg" in
-all-static)
if test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
+ compile_command="$compile_command $link_static_flag"
finalize_command="$finalize_command $link_static_flag"
- dlopen_self=$dlopen_self_static
- fi
- continue
+ fi
+ continue
;;
-allow-undefined)
@@ -939,91 +504,47 @@ compiler."
continue
;;
- -avoid-version)
- avoid_version=yes
- continue
- ;;
-
-dlopen)
- prev=dlfiles
- continue
- ;;
+ prev=dlfiles
+ continue
+ ;;
-dlpreopen)
- prev=dlprefiles
- continue
- ;;
+ prev=dlprefiles
+ continue
+ ;;
-export-dynamic)
- if test "$export_dynamic" != yes; then
- export_dynamic=yes
+ if test "$export_dynamic" != yes; then
+ export_dynamic=yes
if test -n "$export_dynamic_flag_spec"; then
eval arg=\"$export_dynamic_flag_spec\"
else
arg=
fi
- fi
- ;;
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- $echo "$modename: cannot have more than one -exported-symbols"
- exit 1
- fi
- if test "$arg" = "-export-symbols"; then
- prev=expsyms
- else
- prev=expsyms_regex
- fi
- continue
- ;;
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$finalize_command @SYMFILE@"
+ fi
+ ;;
-L*)
- dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
- case "$dir" in
- /* | [A-Za-z]:[/\\]*)
+ dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
+ case "$dir" in
+ /* | [A-Za-z]:[/\\]*)
# Add the corresponding hardcode_libdir_flag, if it is not identical.
- ;;
- *)
- $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
- exit 1
- ;;
- esac
- case " $deplibs " in
- *" $arg "*) ;;
- *) deplibs="$deplibs $arg";;
- esac
- case " $lib_search_path " in
- *" $dir "*) ;;
- *) lib_search_path="$lib_search_path $dir";;
- esac
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
- case ":$dllsearchpath:" in
- ::) dllsearchpath="$dllsearchdir";;
- *":$dllsearchdir:"*) ;;
- *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
- esac
- ;;
- esac
- ;;
+ ;;
+ *)
+ $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
+ exit 1
+ ;;
+ esac
+ deplibs="$deplibs $arg"
+ ;;
- -l*)
- deplibs="$deplibs $arg"
- ;;
+ -l*) deplibs="$deplibs $arg" ;;
- -module)
- if test "$module" != yes; then
- module=yes
- if test -n "$export_dynamic_flag_spec"; then
- eval arg=\"$export_dynamic_flag_spec\"
- else
- arg=
- fi
- fi
- ;;
-
-no-undefined)
allow_undefined=no
continue
@@ -1037,39 +558,23 @@ compiler."
;;
-rpath)
- prev=rpath
- continue
- ;;
-
- -R)
- prev=xrpath
- continue
- ;;
-
- -R*)
- xrpath="$xrpath "`$echo "X$arg" | $Xsed -e 's/^-R//'`
- continue
- ;;
+ prev=rpath
+ continue
+ ;;
-static)
# If we have no pic_flag, then this is the same as -all-static.
if test -z "$pic_flag" && test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
+ compile_command="$compile_command $link_static_flag"
finalize_command="$finalize_command $link_static_flag"
- dlopen_self=$dlopen_self_static
- fi
- continue
- ;;
-
- -thread-safe)
- thread_safe=yes
+ fi
continue
;;
-version-info)
- prev=vinfo
- continue
- ;;
+ prev=vinfo
+ continue
+ ;;
# Some other compiler flag.
-* | +*)
@@ -1081,18 +586,18 @@ compiler."
arg="\"$arg\""
;;
esac
- ;;
+ ;;
*.o | *.obj | *.a | *.lib)
- # A standard object.
- objs="$objs $arg"
- ;;
+ # A standard object.
+ objs="$objs $arg"
+ ;;
*.lo)
- # A library object.
+ # A library object.
if test "$prev" = dlfiles; then
dlfiles="$dlfiles $arg"
- if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
+ if test "$build_libtool_libs" = yes; then
prev=
continue
else
@@ -1107,264 +612,205 @@ compiler."
prev=
fi
libobjs="$libobjs $arg"
- ;;
+ ;;
*.la)
- # A libtool-controlled library.
-
- dlname=
- libdir=
- library_names=
- old_library=
-
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
- exit 1
- fi
-
- # If the library was installed with an old release of libtool,
- # it will not redefine variable installed.
- installed=yes
-
- # If there is no directory component, then add one.
- case "$arg" in
- */* | *\\*) . $arg ;;
- *) . ./$arg ;;
- esac
-
- # Get the name of the library we link against.
- linklib=
- for l in $old_library $library_names; do
- linklib="$l"
- done
-
- if test -z "$linklib"; then
- $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
- exit 1
- fi
-
- # Find the relevant object directory and library name.
- name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
-
- if test "X$installed" = Xyes; then
- dir="$libdir"
- else
- dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$arg"; then
- dir="$objdir"
- else
- dir="$dir/$objdir"
- fi
- fi
-
- if test -n "$dependency_libs"; then
- # Extract -R from dependency_libs
- temp_deplibs=
- for deplib in $dependency_libs; do
- case "$deplib" in
- -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
- case " $rpath $xrpath " in
- *" $temp_xrpath "*) ;;
- *) xrpath="$xrpath $temp_xrpath";;
- esac;;
- -L*) case "$compile_command $temp_deplibs " in
- *" $deplib "*) ;;
- *) temp_deplibs="$temp_deplibs $deplib";;
- esac;;
- *) temp_deplibs="$temp_deplibs $deplib";;
- esac
- done
- dependency_libs="$temp_deplibs"
- fi
-
- if test -z "$libdir"; then
+ # A libtool-controlled library.
+
+ dlname=
+ libdir=
+ library_names=
+ old_library=
+
+ # Check to see that this really is a libtool archive.
+ if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
+ exit 1
+ fi
+
+ # If there is no directory component, then add one.
+ case "$arg" in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
+ exit 1
+ fi
+
+ # Find the relevant object directory and library name.
+ name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
+ dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$arg"; then
+ dir="$objdir"
+ else
+ dir="$dir/$objdir"
+ fi
+
+ if test -z "$libdir"; then
# It is a libtool convenience library, so add in its objects.
- convenience="$convenience $dir/$old_library"
+ convenience="$convenience $dir/$old_library"l
old_convenience="$old_convenience $dir/$old_library"
- deplibs="$deplibs$dependency_libs"
- compile_command="$compile_command $dir/$old_library$dependency_libs"
- finalize_command="$finalize_command $dir/$old_library$dependency_libs"
+ compile_command="$compile_command $dir/$old_library"
+ finalize_command="$finalize_command $dir/$old_library"
continue
fi
- # This library was specified with -dlopen.
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlname, no dlopen support or we're linking statically,
- # we need to preload.
- prev=dlprefiles
- else
- # We should not create a dependency on this library, but we
+ # This library was specified with -dlopen.
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ if test -z "$dlname"; then
+ # If there is no dlname, we need to preload.
+ prev=dlprefiles
+ else
+ # We should not create a dependency on this library, but we
# may need any libraries it requires.
compile_command="$compile_command$dependency_libs"
finalize_command="$finalize_command$dependency_libs"
- prev=
- continue
- fi
- fi
-
- # The library was specified with -dlpreopen.
- if test "$prev" = dlprefiles; then
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- dlprefiles="$dlprefiles $dir/$old_library"
- else
- dlprefiles="$dlprefiles $dir/$linklib"
- fi
- prev=
- fi
+ prev=
+ continue
+ fi
+ fi
+
+ # The library was specified with -dlpreopen.
+ if test "$prev" = dlprefiles; then
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ dlprefiles="$dlprefiles $dir/$old_library"
+ else
+ dlprefiles="$dlprefiles $dir/$linklib"
+ fi
+ prev=
+ fi
+
+ if test "$build_libtool_libs" = yes && test -n "$library_names"; then
+ link_against_libtool_libs="$link_against_libtool_libs $arg"
+ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *) temp_rpath="$temp_rpath $dir" ;;
+ esac
+ fi
- if test "$build_libtool_libs" = yes && test -n "$library_names"; then
- link_against_libtool_libs="$link_against_libtool_libs $arg"
- if test -n "$shlibpath_var"; then
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath " in
- *" $dir "*) ;;
- *) temp_rpath="$temp_rpath $dir" ;;
- esac
- fi
-
- # We need an absolute path.
- case "$dir" in
- /* | [A-Za-z]:[/\\]*) absdir="$dir" ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- $echo "$modename: cannot determine absolute directory name of \`$libdir'" 1>&2
- exit 1
- fi
- ;;
- esac
-
# This is the magic to use -rpath.
- # Skip directories that are in the system default run-time
- # search path, unless they have been requested with -R.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
- esac
- ;;
- esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ # Put the magic libdir with the hardcode flag.
+ hardcode_libdirs="$libdir"
+ libdir="@HARDCODE_LIBDIRS@"
+ else
+ # Just accumulate the unique libdirs.
+ case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ libdir=
+ fi
+ fi
+
+ if test -n "$libdir"; then
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ compile_command="$compile_command $flag"
+ finalize_command="$finalize_command $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ # Do the same for the permanent run path.
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
- esac
- ;;
- esac
lib_linked=yes
- case "$hardcode_action" in
- immediate | unsupported)
- if test "$hardcode_direct" = no; then
- compile_command="$compile_command $dir/$linklib"
- deplibs="$deplibs $dir/$linklib"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
- if test -n "$dllsearchpath"; then
- dllsearchpath="$dllsearchpath:$dllsearchdir"
- else
- dllsearchpath="$dllsearchdir"
- fi
- ;;
- esac
- elif test "$hardcode_minus_L" = no; then
+ case "$hardcode_action" in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ compile_command="$compile_command $dir/$linklib"
+ elif test "$hardcode_minus_L" = no; then
case "$host" in
*-*-sunos*)
- compile_shlibpath="$compile_shlibpath$dir:"
+ compile_shlibpath="$compile_shlibpath$dir:"
;;
esac
- case "$compile_command " in
- *" -L$dir "*) ;;
- *) compile_command="$compile_command -L$dir";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -L$dir -l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- case ":$compile_shlibpath:" in
- *":$dir:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$dir:";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -l$name"
+ compile_command="$compile_command -L$dir -l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ compile_shlibpath="$compile_shlibpath$dir:"
+ compile_command="$compile_command -l$name"
else
lib_linked=no
- fi
- ;;
-
- relink)
- if test "$hardcode_direct" = yes; then
- compile_command="$compile_command $absdir/$linklib"
- deplibs="$deplibs $absdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- case "$compile_command " in
- *" -L$absdir "*) ;;
- *) compile_command="$compile_command -L$absdir";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -L$absdir -l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case ":$compile_shlibpath:" in
- *":$absdir:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$absdir:";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -l$name"
+ fi
+ ;;
+
+ relink)
+ # We need an absolute path.
+ case "$dir" in
+ /* | [A-Za-z]:[/\\]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ exit 1
+ fi
+ dir="$absdir"
+ ;;
+ esac
+
+ if test "$hardcode_direct" = yes; then
+ compile_command="$compile_command $dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ compile_command="$compile_command -L$dir -l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ compile_shlibpath="$compile_shlibpath$dir:"
+ compile_command="$compile_command -l$name"
else
lib_linked=no
- fi
- ;;
+ fi
+ ;;
*)
lib_linked=no
;;
- esac
+ esac
if test "$lib_linked" != yes; then
$echo "$modename: configuration error: unsupported hardcode properties"
exit 1
fi
- # Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes; then
- finalize_command="$finalize_command $libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- case "$finalize_command " in
- *" -L$libdir "*) ;;
- *) finalize_command="$finalize_command -L$libdir";;
- esac
- finalize_command="$finalize_command -l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case ":$finalize_shlibpath:" in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
- esac
- finalize_command="$finalize_command -l$name"
- else
- # We cannot seem to hardcode it, guess we'll fake it.
- case "$finalize_command " in
- *" -L$dir "*) ;;
- *) finalize_command="$finalize_command -L$libdir";;
- esac
- finalize_command="$finalize_command -l$name"
- fi
- else
- # Transform directly to old archives if we don't build new libraries.
- if test -n "$pic_flag" && test -z "$old_library"; then
- $echo "$modename: cannot find static library for \`$arg'" 1>&2
- exit 1
- fi
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; then
+ finalize_command="$finalize_command $libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ finalize_command="$finalize_command -L$libdir -l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ finalize_shlibpath="$finalize_shlibpath$libdir:"
+ finalize_command="$finalize_command -l$name"
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ finalize_command="$finalize_command -L$libdir -l$name"
+ fi
+ else
+ # Transform directly to old archives if we don't build new libraries.
+ if test -n "$pic_flag" && test -z "$old_library"; then
+ $echo "$modename: cannot find static library for \`$arg'" 1>&2
+ exit 1
+ fi
# Here we assume that one of hardcode_direct or hardcode_minus_L
# is not unsupported. This is valid on all known static and
@@ -1374,24 +820,16 @@ compiler."
compile_command="$compile_command $dir/$linklib"
finalize_command="$finalize_command $dir/$linklib"
else
- case "$compile_command " in
- *" -L$dir "*) ;;
- *) compile_command="$compile_command -L$dir";;
- esac
- compile_command="$compile_command -l$name"
- case "$finalize_command " in
- *" -L$dir "*) ;;
- *) finalize_command="$finalize_command -L$dir";;
- esac
- finalize_command="$finalize_command -l$name"
+ compile_command="$compile_command -L$dir -l$name"
+ finalize_command="$finalize_command -L$dir -l$name"
fi
- fi
+ fi
# Add in any libraries that this one depends upon.
compile_command="$compile_command$dependency_libs"
finalize_command="$finalize_command$dependency_libs"
continue
- ;;
+ ;;
# Some other compiler argument.
*)
@@ -1403,7 +841,7 @@ compiler."
arg="\"$arg\""
;;
esac
- ;;
+ ;;
esac
# Now actually substitute the argument into the commands.
@@ -1420,10 +858,6 @@ compiler."
fi
oldlibs=
- # calculate the name of the file, without its directory
- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
- libobjs_save="$libobjs"
-
case "$output" in
"")
$echo "$modename: you must specify an output file" 1>&2
@@ -1431,38 +865,36 @@ compiler."
exit 1
;;
+ */* | *\\*)
+ $echo "$modename: output file \`$output' must have no directory components" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ ;;
+
*.a | *.lib)
if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
- exit 1
+ $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
+ exit 1
fi
if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
fi
if test -n "$dlfiles$dlprefiles"; then
- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
fi
if test -n "$rpath"; then
- $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
- fi
-
- if test -n "$xrpath"; then
- $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
fi
if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+ $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
fi
if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
- fi
-
- if test -n "$export_symbols"; then
- $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
fi
# Now set the variables for building old libraries.
@@ -1472,33 +904,17 @@ compiler."
*.la)
# Make sure we only generate libraries of the form `libNAME.la'.
- case "$outputname" in
- lib*)
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
- eval libname=\"$libname_spec\"
- ;;
+ case "$output" in
+ lib*) ;;
*)
- if test "$module" = no; then
- $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
- if test "$need_lib_prefix" != no; then
- # Add the "lib" prefix for modules if required
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
- eval libname=\"$libname_spec\"
- else
- libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
- fi
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit 1
;;
esac
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
- else
- output_objdir="$output_objdir/$objdir"
- fi
+ name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval libname=\"$libname_spec\"
# All the library-specific variables (install_libdir is set above).
library_names=
@@ -1506,18 +922,18 @@ compiler."
dlname=
if test -n "$objs"; then
- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
- exit 1
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
+ exit 1
fi
# How the heck are we supposed to write a wrapper for a shared library?
if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
- exit 1
+ $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
+ exit 1
fi
if test -n "$dlfiles$dlprefiles"; then
- $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
+ $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
fi
set dummy $rpath
@@ -1526,16 +942,12 @@ compiler."
fi
install_libdir="$2"
- oldlibs=
+ # Now set the variables for building old libraries.
+ oldlibs="$objdir/$libname.$libext"
if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
- # Building a libtool convenience library.
- libext=al
- oldlibs="$output_objdir/$libname.$libext $oldlibs"
- build_libtool_libs=convenience
- build_old_libs=yes
- fi
- dependency_libs="$deplibs"
+ # Building a libtool convenience library.
+ oldlibs="$objdir/$libname.al $oldlibs"
+ build_libtool_libs=convenience
if test -n "$vinfo"; then
$echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
@@ -1602,20 +1014,6 @@ compiler."
case "$version_type" in
none) ;;
- irix)
- major=`expr $current - $age + 1`
- versuffix="$major.$revision"
- verstring="sgi$major.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test $loop != 0; do
- iface=`expr $revision - $loop`
- loop=`expr $loop - 1`
- verstring="sgi$major.$iface:$verstring"
- done
- ;;
-
linux)
major=.`expr $current - $age`
versuffix="$major.$age.$revision"
@@ -1643,16 +1041,6 @@ compiler."
versuffix=".$current.$revision"
;;
- freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
- ;;
-
- freebsd-elf)
- major=".$current"
- versuffix=".$current";
- ;;
-
windows)
# Like Linux, but with '-' rather than '.', since we only
# want one extension on Windows 95.
@@ -1670,21 +1058,15 @@ compiler."
# Clear the version info if we defaulted, and they specified a release.
if test -z "$vinfo" && test -n "$release"; then
major=
+ versuffix=
verstring="0.0"
- if test "$need_version" = no; then
- versuffix=
- else
+ case "$host" in
+ *-*-sunos*)
versuffix=".0.0"
- fi
+ ;;
+ esac
fi
- # Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
- major=
- versuffix=
- verstring=""
- fi
-
# Check to see if the archive will have undefined symbols.
if test "$allow_undefined" = yes; then
if test "$allow_undefined_flag" = unsupported; then
@@ -1697,247 +1079,25 @@ compiler."
allow_undefined_flag="$no_undefined_flag"
fi
+ # Add libc to deplibs on all systems.
dependency_libs="$deplibs"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- # these systems don't actually have a c library (as such)!
- ;;
- *)
- # Add libc to deplibs on all other systems.
- deplibs="$deplibs -lc"
- ;;
- esac
+ deplibs="$deplibs -lc"
fi
# Create the output directory, or remove our outputs if we need to.
- if test -d $output_objdir; then
- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
+ if test -d $objdir; then
+ $show "${rm}r $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
+ $run ${rm}r $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*
else
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $output_objdir; then
- exit $status
- fi
- fi
-
- # Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
- oldlibs="$oldlibs $output_objdir/$libname.$libext"
-
- # Transform .lo files to .o files.
- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
- fi
-
- if test "$build_libtool_libs" = yes; then
- # Transform deplibs into only deplibs that can be linked in shared.
- name_save=$name
- libname_save=$libname
- release_save=$release
- versuffix_save=$versuffix
- major_save=$major
- # I'm not sure if I'm treating the release correctly. I think
- # release should show up in the -l (ie -lgmp5) so we don't want to
- # add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
- newdeplibs=
- droppeddeps=no
- case "$deplibs_check_method" in
- pass_all)
- newdeplibs=$deplibs
- ;; # Don't check for shared/static. Everything works.
- # This might be a little naive. We might want to check
- # whether the library exists or not. But this is on
- # osf3 & osf4 and I'm not really sure... Just
- # implementing what was already the behaviour.
- test_compile)
- # This code stresses the "libraries are programs" paradigm to its
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
- $rm conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
-EOF
- $rm conftest
- $C_compiler -o conftest conftest.c $deplibs
- if test $? -eq 0 ; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test "$name" != "" ; then
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
- deplib_match=$2
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- fi
- else
- newdeplibs="$newdeplibs $i"
- fi
- done
- else
- # Error occured in the first compile. Let's try to salvage the situation:
- # Compile a seperate program for each library.
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test "$name" != "" ; then
- $rm conftest
- $C_compiler -o conftest conftest.c $i
- # Did it work?
- if test $? -eq 0 ; then
- ldd_output=`ldd conftest`
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
- deplib_match=$2
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- fi
- else
- droppeddeps=yes
- echo
- echo "*** Warning! Library $i is needed by this library but I was not able to"
- echo "*** make it link in! You will probably need to install it or some"
- echo "*** library that it depends on before this library will be fully"
- echo "*** functional. Installing it before continuing would be even better."
- fi
- else
- newdeplibs="$newdeplibs $i"
- fi
- done
- fi
- deplibs=$newdeplibs
- ;;
- file_magic*)
- set dummy $deplibs_check_method
- file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
- for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test "$name" != "" ; then
- libname=`eval \\$echo \"$libname_spec\"`
- for i in $lib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- # Follow soft links.
- if ls -lLd "$potlib" 2>/dev/null \
- | grep " -> " >/dev/null; then
- continue
- fi
- # The statement above tries to avoid entering an
- # endless loop below, in case of cyclic links.
- # We might still enter an endless loop, since a link
- # loop can be closed while we follow links,
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
- case "$potliblink" in
- /*) potlib="$potliblink";;
- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" \
- | sed 10q \
- | egrep "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- fi
- else
- # Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
- fi
- done # Gone through all deplibs.
- ;;
- none | unknown | *) newdeplibs=""
- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
- grep . >/dev/null; then
- echo
- if test "X$deplibs_check_method" = "Xnone"; then
- echo "*** Warning: inter-library dependencies are not supported in this platform."
- else
- echo "*** Warning: inter-library dependencies are not known to be supported."
- fi
- echo "*** All declared inter-library dependencies are being dropped."
- droppeddeps=yes
- fi
- ;;
- esac
- versuffix=$versuffix_save
- major=$major_save
- release=$release_save
- libname=$libname_save
- name=$name_save
-
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
- echo
- echo "*** Warning: libtool could not satisfy all declared inter-library"
- echo "*** dependencies of module $libname. Therefore, libtool will create"
- echo "*** a static module, that should work as long as the dlopening"
- echo "*** application is linked with the -dlopen flag."
- if test -z "$global_symbol_pipe"; then
- echo
- echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
- echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- dlname=
- library_names=
- else
- echo "*** The inter-library dependencies that have been dropped here will be"
- echo "*** automatically added whenever a program is linked with this library"
- echo "*** or is declared to -dlopen it."
- fi
- fi
+ $show "$mkdir $objdir"
+ $run $mkdir $objdir
+ status=$?
+ if test $status -ne 0 && test ! -d $objdir; then
+ exit $status
+ fi
fi
- # test again, we may have decided not to build it any more
if test "$build_libtool_libs" = yes; then
- deplibs=$newdeplibs
- # Done checking deplibs!
-
# Get the real and link names of the library.
eval library_names=\"$library_names_spec\"
set dummy $library_names
@@ -1950,21 +1110,17 @@ EOF
soname="$realname"
fi
- lib="$output_objdir/$realname"
+ lib="$objdir/$realname"
for link
do
linknames="$linknames $link"
done
- # Ensure that we have .o objects for linkers which dislike .lo
- # (e.g. aix) incase we are running --disable-static
- for obj in $libobjs; do
- oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"`
- test -f $oldobj || ${LN_S} $obj $oldobj
- done
+ # Use standard objects if they are PIC.
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e "$los2o" -e 's/ $//g'`
- # Use standard objects if they are pic
- test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ # Transform .lo files to .o files.
+ test "$build_old_libs" = yes && oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
if test -n "$whole_archive_flag_spec"; then
if test -n "$convenience"; then
@@ -1975,7 +1131,7 @@ EOF
# Extract the objects.
xdir="$xlib"x
generated="$generated $xdir"
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'`
$show "${rm}r $xdir"
$run ${rm}r "$xdir"
@@ -1988,50 +1144,13 @@ EOF
$show "(cd $xdir && $AR x ../$xlib)"
$run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $?
- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+ libobjs="$libobjs `echo $xdir/*`"
done
fi
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
-
- linkopts="$linkopts $flag"
- fi
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- $show "generating symbol list for \`$libname.la'"
- export_symbols="$objdir/$libname.exp"
- $run $rm $export_symbols
- eval cmds=\"$export_symbols_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex"; then
- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- $show "$mv \"${export_symbols}T\" \"$export_symbols\""
- $run eval '$mv "${export_symbols}T" "$export_symbols"'
- fi
- fi
- fi
-
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
- fi
-
# Do each of the archive commands.
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval cmds=\"$archive_expsym_cmds\"
- else
- eval cmds=\"$archive_cmds\"
- fi
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ eval cmds=\"$archive_cmds\"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
for cmd in $cmds; do
IFS="$save_ifs"
$show "$cmd"
@@ -2042,13 +1161,13 @@ EOF
# Create links to the real library.
for linkname in $linknames; do
if test "$realname" != "$linkname"; then
- $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+ $show "(cd $objdir && $LN_S $realname $linkname)"
+ $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
fi
done
- # If -module or -export-dynamic was specified, set the dlname.
- if test "$module" = yes || test "$export_dynamic" = yes; then
+ # If -export-dynamic was specified, set the dlname.
+ if test "$export_dynamic" = yes; then
# On all known operating systems, these are identical.
dlname="$soname"
fi
@@ -2057,62 +1176,58 @@ EOF
*.lo | *.o | *.obj)
if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
- exit 1
+ $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
+ exit 1
fi
if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
fi
if test -n "$dlfiles$dlprefiles"; then
- $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
fi
if test -n "$rpath"; then
- $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
- fi
-
- if test -n "$xrpath"; then
- $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
fi
if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
fi
if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
fi
case "$output" in
*.lo)
- if test -n "$objs"; then
- $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
- exit 1
- fi
- libobj="$output"
- obj=`$echo "X$output" | $Xsed -e "$lo2o"`
- ;;
+ if test -n "$objs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit 1
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
*)
- libobj=
- obj="$output"
- ;;
+ libobj=
+ obj="$output"
+ ;;
esac
# Delete the old objects.
$run $rm $obj $libobj
# Create the old-style object.
- reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+ reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
output="$obj"
eval cmds=\"$reload_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
done
IFS="$save_ifs"
@@ -2120,503 +1235,339 @@ EOF
test -z "$libobj" && exit 0
if test "$build_libtool_libs" != yes; then
- # Create an invalid libtool object if no PIC, so that we don't
- # accidentally link it into a program.
- $show "echo timestamp > $libobj"
- $run eval "echo timestamp > $libobj" || exit $?
- exit 0
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ $show "echo timestamp > $libobj"
+ $run eval "echo timestamp > $libobj" || exit $?
+ exit 0
fi
if test -n "$pic_flag"; then
- # Only do commands if we really have different PIC objects.
- reload_objs="$libobjs"
- output="$libobj"
- eval cmds=\"$reload_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs"
+ output="$libobj"
+ eval cmds=\"$reload_cmds\"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
else
- # Just create a symlink.
- $show $rm $libobj
- $run $rm $libobj
- $show "$LN_S $obj $libobj"
- $run $LN_S $obj $libobj || exit $?
+ # Just create a symlink.
+ $show "$LN_S $obj $libobj"
+ $run $LN_S $obj $libobj || exit $?
fi
exit 0
;;
- # Anything else should be a program.
*)
if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
fi
if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
- fi
-
- if test "$preload" = yes; then
- if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
- test "$dlopen_self_static" = unknown; then
- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
- fi
- fi
-
- if test "$dlself" = yes && test "$export_dynamic" = no; then
- $echo "$modename: error: \`-dlopen self' requires \`-export-dynamic'" 1>&2
- exit 1
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
fi
- if test -n "$rpath$xrpath"; then
+ if test -n "$rpath"; then
# If the user specified any rpath flags, then add them.
- for libdir in $rpath $xrpath; do
- # This is the magic to use -rpath.
- case "$compile_rpath " in
- *" $libdir "*) ;;
- *) compile_rpath="$compile_rpath $libdir" ;;
- esac
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
- esac
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ # Put the magic libdir with the hardcode flag.
+ hardcode_libdirs="$libdir"
+ libdir="@HARDCODE_LIBDIRS@"
+ else
+ # Just accumulate the unique libdirs.
+ case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ libdir=
+ fi
+ fi
+
+ if test -n "$libdir"; then
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ compile_command="$compile_command $flag"
+ finalize_command="$finalize_command $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
done
fi
- # Now hardcode the library paths
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
-
- rpath="$rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
+ # Substitute the hardcoded libdirs into the compile commands.
+ if test -n "$hardcode_libdir_separator"; then
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
fi
- compile_rpath="$rpath"
-
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$echo "X$compile_command " | $Xsed -e "$los2o" -e 's/ $//'`
+ finalize_command=`$echo "X$finalize_command " | $Xsed -e "$los2o" -e 's/ $//'`
fi
- finalize_rpath="$rpath"
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
+ if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${output}S.c"
else
- output_objdir="$output_objdir/$objdir"
+ dlsyms=
fi
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
- # Transform all the library objects into standard objects.
- compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- fi
+ if test -n "$dlsyms"; then
+ # Add our own program objects to the preloaded list.
+ dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e "$los2o" -e 's/ $//'`
- dlsyms=
- if test -n "$dlfiles$dlprefiles" || test "$dlself" = yes; then
- if test -n "$NM" && test -n "$global_symbol_pipe"; then
- dlsyms="${outputname}S.c"
+ # Discover the nlist of each of the dlfiles.
+ nlist="$objdir/${output}.nm"
+
+ if test -d $objdir; then
+ $show "$rm $nlist ${nlist}T"
+ $run $rm "$nlist" "${nlist}T"
else
- $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ $show "$mkdir $objdir"
+ $run $mkdir $objdir
+ status=$?
+ if test $status -ne 0 && test ! -d $objdir; then
+ exit $status
+ fi
fi
- fi
- if test -n "$dlsyms"; then
- case "$dlsyms" in
- "") ;;
- *.c)
- # Discover the nlist of each of the dlfiles.
- nlist="$objdir/${output}.nm"
-
- if test -d $objdir; then
- $show "$rm $nlist ${nlist}S ${nlist}T"
- $run $rm "$nlist" "${nlist}S" "${nlist}T"
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ # Parse the name list into a source file.
+ $show "creating $objdir/$dlsyms"
+ if test -z "$run"; then
+ # Make sure we at least have an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ wcout=`wc "$nlist" 2>/dev/null`
+ count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
+ (test "$count" -ge 0) 2>/dev/null || count=-1
else
- $show "$mkdir $objdir"
- $run $mkdir $objdir
- status=$?
- if test $status -ne 0 && test ! -d $objdir; then
- exit $status
- fi
+ $rm "$nlist"T
+ count=-1
fi
- # Parse the name list into a source file.
- $show "creating $objdir/$dlsyms"
-
- $echo > "$objdir/$dlsyms" "\
-/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
-/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+ case "$dlsyms" in
+ "") ;;
+ *.c)
+ $echo > "$objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
#ifdef __cplusplus
extern \"C\" {
#endif
/* Prevent the only kind of declaration conflicts we can make. */
-#define lt_preloaded_symbols some_other_symbol
+#define dld_preloaded_symbol_count some_other_symbol
+#define dld_preloaded_symbols some_other_symbol
/* External symbol declarations for the compiler. */\
"
- if test "$dlself" = yes; then
- $show "generating symbol list for \`$output'"
-
- echo ': @PROGRAM@ ' > "$nlist"
-
- # Add our own program objects to the symbol list.
- progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- for arg in $progfiles; do
- $show "extracting global C symbols from \`$arg'"
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -n "$exclude_expsyms"; then
- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
-
- if test -n "$export_symbols_regex"; then
- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- export_symbols="$objdir/$output.exp"
- $run $rm $export_symbols
- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- else
- $run $rm $export_symbols
- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$objdir/$output.exp"'
- $run eval 'grep -f "$objdir/$output.exp" < "$nlist" > "$nlist"T'
- $run eval 'mv "$nlist"T "$nlist"'
- fi
- fi
-
- for arg in $dlprefiles; do
- $show "extracting global C symbols from \`$arg'"
- name=`echo "$arg" | sed -e 's%^.*/%%'`
- $run eval 'echo ": $name " >> "$nlist"'
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -z "$run"; then
- # Make sure we have at least an empty file.
- test -f "$nlist" || : > "$nlist"
-
- if test -n "$exclude_expsyms"; then
- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
- $mv "$nlist"T "$nlist"
- fi
-
- # Try sorting and uniquifying the output.
- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
- :
+ if test -f "$nlist"; then
+ sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
else
- grep -v "^: " < "$nlist" > "$nlist"S
+ echo '/* NONE */' >> "$objdir/$dlsyms"
fi
- if test -f "$nlist"S; then
- eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
- else
- echo '/* NONE */' >> "$output_objdir/$dlsyms"
- fi
+ $echo >> "$objdir/$dlsyms" "\
- $echo >> "$output_objdir/$dlsyms" "\
-
-#undef lt_preloaded_symbols
+#undef dld_preloaded_symbol_count
+#undef dld_preloaded_symbols
#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
+# define __ptr_t void *
#else
-# define lt_ptr_t char *
-# define const
+# define __ptr_t char *
#endif
+/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
+int dld_preloaded_symbol_count = $count;
+
/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
+struct {
+ char *name;
+ __ptr_t address;
}
-lt_preloaded_symbols[] =
+dld_preloaded_symbols[] =
{\
"
- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
- < "$nlist" >> "$output_objdir/$dlsyms"
+ if test -f "$nlist"; then
+ sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
+ fi
- $echo >> "$output_objdir/$dlsyms" "\
- {0, (lt_ptr_t) 0}
+ $echo >> "$objdir/$dlsyms" "\
+ {0, (__ptr_t) 0}
};
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt_preloaded_symbols;
-}
-#endif
-
#ifdef __cplusplus
}
#endif\
"
- fi
+ ;;
- pic_flag_for_symtable=
- case "$host" in
- # compiling the symbol table file with pic_flag works around
- # a FreeBSD bug that causes programs to crash when -lm is
- # linked before any other PIC object. But we must not use
- # pic_flag when linking with -static. The problem exists in
- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*)
- case "$compile_command " in
- *" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
- esac
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit 1
+ ;;
esac
+ fi
- # Now compile the dynamic symbol file.
- $show "(cd $objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
- $run eval '(cd $objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+ # Now compile the dynamic symbol file.
+ $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
+ $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
- # Transform the symbol file into the correct name.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
- ;;
- *)
- $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
- exit 1
- ;;
- esac
+ # Transform the symbol file into the correct name.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
+ elif test "$export_dynamic" != yes; then
+ test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
else
- # We keep going just in case the user didn't refer to
- # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
- # really was required.
+ # We keep going just in case the user didn't refer to
+ # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
- # Nullify the symbol file.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ # Nullify the symbol file.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
fi
if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
- # Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
-
- # We have no uninstalled library dependencies, so finalize right now.
- $show "$link_command"
- $run eval "$link_command"
- exit $?
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$compile_command"
+ $run eval "$compile_command"
+ exit $?
+ fi
+
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
+
+ # Create the binary in the object directory, then wrap it.
+ if test ! -d $objdir; then
+ $show "$mkdir $objdir"
+ $run $mkdir $objdir
+ status=$?
+ if test $status -ne 0 && test ! -d $objdir; then
+ exit $status
+ fi
fi
if test -n "$shlibpath_var"; then
- # We should set the shlibpath_var
- rpath=
- for dir in $temp_rpath; do
- case "$dir" in
- /* | [A-Za-z]:[/\\]*)
- # Absolute path.
- rpath="$rpath$dir:"
- ;;
- *)
- # Relative path: add a thisdir entry.
- rpath="$rpath\$thisdir/$dir:"
- ;;
- esac
- done
- temp_rpath="$rpath"
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case "$dir" in
+ /* | [A-Za-z]:[/\\]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
fi
- if test -n "$compile_shlibpath$finalize_shlibpath"; then
- compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ # Delete the old output file.
+ $run $rm $output
+
+ if test -n "$compile_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
fi
if test -n "$finalize_shlibpath"; then
- finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
fi
- compile_var=
- finalize_var=
- if test -n "$runpath_var"; then
- if test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- rpath="$rpath$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- if test -n "$finalize_perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
- rpath="$rpath$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
+ finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
fi
if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
-
- # AGH! Flame the AIX and HP-UX people for me, will ya?
- $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
- $echo "$modename: \`$output' will be relinked during installation" 1>&2
- else
- if test "$fast_install" != no; then
- link_command="$finalize_var$compile_command$finalize_rpath"
- if test "$fast_install" = yes; then
- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
- fi
- else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
- fi
+ # AGH! Flame the AIX and HP-UX people for me, will ya?
+ $echo "$modename: warning: using a buggy system linker" 1>&2
+ $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
fi
- # Replace the output file specification.
- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
- # Create the binary in the object directory, then wrap it.
- if test ! -d $output_objdir; then
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $objdir; then
- exit $status
- fi
- fi
-
- # Delete the old output file.
- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
- $show "$link_command"
- $run eval "$link_command" || exit $?
+ $show "$compile_command"
+ $run eval "$compile_command" || exit $?
# Now create the wrapper script.
$show "creating $output"
- # Quote the relink command for shipping.
- if test -n "$relink_command"; then
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- fi
+ # Quote the finalize command for shipping.
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
# Quote $echo for shipping.
- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
- case "$0" in
- /* | [A-Za-z]:[/\\]*) qecho="$SHELL $0 --fallback-echo";;
- *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
- esac
- qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
- else
- qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
- fi
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
# Only actually do things if our run command is non-null.
if test -z "$run"; then
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
- esac
- $rm $output
- trap "$rm $output; exit 1" 1 2 15
+ $rm $output
+ trap "$rm $output; exit 1" 1 2 15
- $echo > $output "\
+ $echo > $output "\
#! $SHELL
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+# $output - temporary wrapper script for $objdir/$output
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION
#
# The $output program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
-# This wrapper script should never be moved out of the build directory.
+# This wrapper script should never be moved out of \``pwd`'.
# If it is, it will not operate correctly.
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
+Xsed='sed -e s/^X//'
sed_quote_subst='$sed_quote_subst'
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
-relink_command=\"$relink_command\"
-
# This environment variable determines our operation mode.
if test \"\$libtool_install_magic\" = \"$magic\"; then
- # install mode needs the following variable:
+ # install mode needs the following variables:
link_against_libtool_libs='$link_against_libtool_libs'
+ finalize_command=\"$finalize_command\"
else
# When we are sourced in execute mode, \$file and \$echo are already set.
if test \"\$libtool_execute_magic\" != \"$magic\"; then
@@ -2635,7 +1586,7 @@ else
fi
fi\
"
- $echo >> $output "\
+ $echo >> $output "\
# Find the directory that this script lives in.
thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
@@ -2661,97 +1612,35 @@ else
# Try to get the absolute directory name.
absdir=\`cd \"\$thisdir\" && pwd\`
test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
- if test "$fast_install" = yes; then
- echo >> $output "\
- program=lt-'$outputname'
- progdir=\"\$thisdir/$objdir\"
-
- if test ! -f \"\$progdir/\$program\" || \\
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
- file=\"\$\$-\$program\"
-
- if test ! -d \"\$progdir\"; then
- $mkdir \"\$progdir\"
- else
- $rm \"\$progdir/\$file\"
- fi"
-
- echo >> $output "\
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
- if (cd \"\$thisdir\" && eval \$relink_command); then :
- else
- $rm \"\$progdir/\$file\"
- exit 1
- fi
- fi
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
- { $rm \"\$progdir/\$program\";
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
- $rm \"\$progdir/\$file\"
- fi"
- else
- echo >> $output "\
- program='$outputname'
progdir=\"\$thisdir/$objdir\"
-"
- fi
-
- echo >> $output "\
+ program='$output'
if test -f \"\$progdir/\$program\"; then"
- # Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- $echo >> $output "\
+ # Export our shlibpath_var if we have one.
+ if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
# Add our own library path to $shlibpath_var
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
# Some systems cannot cope with colon-terminated $shlibpath_var
- # The second colon is a workaround for a bug in BeOS R4 sed
- $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+ $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
export $shlibpath_var
"
- fi
-
- # fixup the dll searchpath if we need to.
- if test -n "$dllsearchpath"; then
- $echo >> $output "\
- # Add the dll search path components to the executable PATH
- PATH=$dllsearchpath:\$PATH
-"
- fi
+ fi
- $echo >> $output "\
+ $echo >> $output "\
if test \"\$libtool_execute_magic\" != \"$magic\"; then
# Run the actual program with our arguments.
-"
- case $host in
- *-*-cygwin* | *-*-mingw | *-*-os2*)
- # win32 systems need to use the prog path for dll
- # lookup to work
- $echo >> $output "\
- exec \$progdir\\\\\$program \${1+\"\$@\"}
-"
- ;;
- *)
- $echo >> $output "\
+
# Export the path to the program.
PATH=\"\$progdir:\$PATH\"
export PATH
exec \$program \${1+\"\$@\"}
-"
- ;;
- esac
- $echo >> $output "\
+
\$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
exit 1
fi
@@ -2764,7 +1653,7 @@ else
fi
fi\
"
- chmod +x $output
+ chmod +x $output
fi
exit 0
;;
@@ -2774,16 +1663,11 @@ fi\
for oldlib in $oldlibs; do
if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save"
+ oldobjs="$libobjs"
addlibs="$convenience"
build_libtool_libs=no
else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
- oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
- fi
+ oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
addlibs="$old_convenience"
fi
@@ -2792,7 +1676,7 @@ fi\
# Extract the objects.
xdir="$xlib"x
generated="$generated $xdir"
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'`
$show "${rm}r $xdir"
$run ${rm}r "$xdir"
@@ -2805,7 +1689,7 @@ fi\
$show "(cd $xdir && $AR x ../$xlib)"
$run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $?
- oldobjs="$oldobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+ oldobjs="$oldobjs `echo $xdir/*`"
done
# Do each command in the archive commands.
@@ -2814,11 +1698,11 @@ fi\
else
eval cmds=\"$old_archive_cmds\"
fi
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
done
IFS="$save_ifs"
done
@@ -2835,19 +1719,11 @@ fi\
test "$build_old_libs" = yes && old_library="$libname.$libext"
$show "creating $output"
- if test -n "$xrpath"; then
- temp_xrpath=
- for libdir in $xrpath; do
- temp_xrpath="$temp_xrpath -R$libdir"
- done
- dependency_libs="$temp_xrpath $dependency_libs"
- fi
-
# Only create the output if not a dry run.
if test -z "$run"; then
- $echo > $output "\
+ $echo > $output "\
# $output - a libtool library file
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION
# The name that we can dlopen(3).
dlname='$dlname'
@@ -2866,22 +1742,15 @@ current=$current
age=$age
revision=$revision
-# Is this an already installed library?
-installed=no
-
# Directory that this library needs to be installed in:
libdir='$install_libdir'\
"
-
- $rm "$output_objdir/$outputname"i
- sed 's/^installed=no$/installed=yes/' \
- < "$output" > "$output_objdir/$outputname"i || exit 1
fi
# Do a symbolic link so that the libtool archive can be found in
# LD_LIBRARY_PATH before the program is installed.
- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
- $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
+ $show "(cd $objdir && $LN_S ../$output $output)"
+ $run eval "(cd $objdir && $LN_S ../$output $output)" || exit $?
;;
esac
exit 0
@@ -2893,7 +1762,7 @@ libdir='$install_libdir'\
# There may be an optional sh(1) argument at the beginning of
# install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = "/bin/sh"; then
# Aesthetically quote it.
arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
case "$arg" in
@@ -2930,9 +1799,9 @@ libdir='$install_libdir'\
for arg
do
if test -n "$dest"; then
- files="$files $dest"
- dest="$arg"
- continue
+ files="$files $dest"
+ dest="$arg"
+ continue
fi
case "$arg" in
@@ -2942,20 +1811,20 @@ libdir='$install_libdir'\
-m) prev="-m" ;;
-o) prev="-o" ;;
-s)
- stripme=" -s"
- continue
- ;;
+ stripme=" -s"
+ continue
+ ;;
-*) ;;
*)
- # If the previous option needed an argument, then skip it.
- if test -n "$prev"; then
- prev=
- else
- dest="$arg"
- continue
- fi
- ;;
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest="$arg"
+ continue
+ fi
+ ;;
esac
# Aesthetically quote the argument.
@@ -2982,9 +1851,9 @@ libdir='$install_libdir'\
if test -z "$files"; then
if test -z "$dest"; then
- $echo "$modename: no file or destination specified" 1>&2
+ $echo "$modename: no file or destination specified" 1>&2
else
- $echo "$modename: you must specify a destination" 1>&2
+ $echo "$modename: you must specify a destination" 1>&2
fi
$echo "$help" 1>&2
exit 1
@@ -3006,23 +1875,23 @@ libdir='$install_libdir'\
# Not a directory, so check to see that there is only one file specified.
set dummy $files
if test $# -gt 2; then
- $echo "$modename: \`$dest' is not a directory" 1>&2
- $echo "$help" 1>&2
- exit 1
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit 1
fi
fi
case "$destdir" in
/* | [A-Za-z]:[/\\]*) ;;
*)
for file in $files; do
- case "$file" in
- *.lo) ;;
- *)
- $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
- esac
+ case "$file" in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ ;;
+ esac
done
;;
esac
@@ -3039,219 +1908,217 @@ libdir='$install_libdir'\
# Do each installation.
case "$file" in
*.a | *.lib)
- # Do the static libraries later.
- staticlibs="$staticlibs $file"
- ;;
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
*.la)
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- library_names=
- old_library=
- # If there is no directory component, then add one.
- case "$file" in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-
- # Add the libdir to current_libdirs if it is the destination.
- if test "X$destdir" = "X$libdir"; then
- case "$current_libdirs " in
- *" $libdir "*) ;;
- *) current_libdirs="$current_libdirs $libdir" ;;
- esac
- else
- # Note the libdir as a future libdir.
- case "$future_libdirs " in
- *" $libdir "*) ;;
- *) future_libdirs="$future_libdirs $libdir" ;;
- esac
- fi
-
- dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
- test "X$dir" = "X$file/" && dir=
- dir="$dir$objdir"
-
- # See the names of the shared library.
- set dummy $library_names
- if test -n "$2"; then
- realname="$2"
- shift
- shift
-
- # Install the shared library and build the symlinks.
- $show "$install_prog $dir/$realname $destdir/$realname"
- $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
- test "X$dlname" = "X$realname" && dlname=
-
- if test $# -gt 0; then
- # Delete the old symlinks, and create new ones.
- for linkname
- do
- test "X$dlname" = "X$linkname" && dlname=
- if test "$linkname" != "$realname"; then
- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ # Check to see that this really is a libtool archive.
+ if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ fi
+
+ library_names=
+ old_library=
+ # If there is no directory component, then add one.
+ case "$file" in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
+ test "X$dir" = "X$file/" && dir=
+ dir="$dir$objdir"
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$realname $destdir/$realname"
+ $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
+ test "X$dlname" = "X$realname" && dlname=
+
+ if test $# -gt 0; then
+ # Delete the old symlinks.
+ rmcmd="$rm"
+ for linkname
+ do
+ if test "X$linkname" != "X$realname"; then
+ rmcmd="$rmcmd $destdir/$linkname"
fi
- done
- fi
-
- if test -n "$dlname"; then
- # Install the dynamically-loadable library.
- $show "$install_prog $dir/$dlname $destdir/$dlname"
- $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
- fi
-
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- eval cmds=\"$postinstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- fi
-
- # Install the pseudo-library for information purposes.
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- instname="$dir/$name"i
- if test ! -f "$instname"; then
- # Just in case it was removed...
- $show "Creating $instname"
- $rm "$instname"
- sed 's/^installed=no$/installed=yes/' "$file" > "$instname"
- fi
- $show "$install_prog $instname $destdir/$name"
- $run eval "$install_prog $instname $destdir/$name" || exit $?
-
- # Maybe install the static library, too.
- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
- ;;
+ done
+ $show "$rmcmd"
+ $run $rmcmd
+
+ # ... and create new ones.
+ for linkname
+ do
+ if test "X$linkname" != "X$realname"; then
+ test "X$dlname" = "X$linkname" && dlname=
+ $show "(cd $destdir && $LN_S $realname $linkname)"
+ $run eval "(cd $destdir && $LN_S $realname $linkname)"
+ fi
+ done
+ fi
+
+ if test -n "$dlname"; then
+ # Install the dynamically-loadable library.
+ $show "$install_prog $dir/$dlname $destdir/$dlname"
+ $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ eval cmds=\"$postinstall_cmds\"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ $show "$install_prog $file $destdir/$name"
+ $run eval "$install_prog $file $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
*.lo)
- # Install (i.e. copy) a libtool object.
-
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- destfile="$destdir/$destfile"
- fi
-
- # Deduce the name of the destination old-style object file.
- case "$destfile" in
- *.lo)
- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
- ;;
- *.o | *.obj)
- staticdest="$destfile"
- destfile=
- ;;
- *)
- $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
- esac
-
- # Install the libtool object if requested.
- if test -n "$destfile"; then
- $show "$install_prog $file $destfile"
- $run eval "$install_prog $file $destfile" || exit $?
- fi
-
- # Install the old object if enabled.
- if test "$build_old_libs" = yes; then
- # Deduce the name of the old-style object file.
- staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
-
- $show "$install_prog $staticobj $staticdest"
- $run eval "$install_prog \$staticobj \$staticdest" || exit $?
- fi
- exit 0
- ;;
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case "$destfile" in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.o | *.obj)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+ fi
+ exit 0
+ ;;
*)
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- destfile="$destdir/$destfile"
- fi
-
- # Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- link_against_libtool_libs=
- relink_command=
-
- # If there is no directory component, then add one.
- case "$file" in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-
- # Check the variables that should have been set.
- if test -z "$link_against_libtool_libs"; then
- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
- exit 1
- fi
-
- finalize=yes
- for lib in $link_against_libtool_libs; do
- # Check to see that each library is installed.
- libdir=
- if test -f "$lib"; then
- # If there is no directory component, then add one.
- case "$lib" in
- */* | *\\*) . $lib ;;
- *) . ./$lib ;;
- esac
- fi
- libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
- if test -n "$libdir" && test ! -f "$libfile"; then
- $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
- finalize=no
- fi
- done
-
- outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
- if test "$finalize" = yes; then
- outputname="/tmp/$$-$file"
- # Replace the output file specification.
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
- $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
- $show "$relink_command"
- if $run eval "$relink_command"; then :
- else
- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
- continue
- fi
- file="$outputname"
- else
- $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
- fi
- else
- # Install the binary that we compiled earlier.
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Do a test to see if this is really a libtool program.
+ if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ link_against_libtool_libs=
+ finalize_command=
+
+ # If there is no directory component, then add one.
+ case "$file" in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
+ $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+ exit 1
+ fi
+
+ finalize=yes
+ for lib in $link_against_libtool_libs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case "$lib" in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ if test "$hardcode_action" = relink; then
+ if test "$finalize" = yes; then
+ $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
+ $show "$finalize_command"
+ if $run eval "$finalize_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ continue
+ fi
+ file="$objdir/$file"T
+ else
+ $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
- fi
- fi
+ fi
+ fi
- $show "$install_prog$stripme $file $destfile"
- $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
- test -n "$outputname" && $rm $outputname
- ;;
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ ;;
esac
done
@@ -3266,11 +2133,11 @@ libdir='$install_libdir'\
# Do each command in the postinstall commands.
eval cmds=\"$old_postinstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
done
IFS="$save_ifs"
done
@@ -3298,21 +2165,21 @@ libdir='$install_libdir'\
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
for dir
do
- libdirs="$libdirs $dir"
+ libdirs="$libdirs $dir"
done
for libdir in $libdirs; do
if test -n "$finish_cmds"; then
# Do each command in the finish commands.
eval cmds=\"$finish_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || admincmds="$admincmds
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
$cmd"
- done
- IFS="$save_ifs"
+ done
+ IFS="$save_ifs"
fi
if test -n "$finish_eval"; then
# Do the single finish_eval.
@@ -3323,19 +2190,16 @@ libdir='$install_libdir'\
done
fi
- # Exit here if they wanted silent mode.
- test "$show" = : && exit 0
-
echo "----------------------------------------------------------------------"
echo "Libraries have been installed in:"
for libdir in $libdirs; do
echo " $libdir"
done
echo
- echo "If you ever happen to want to link against installed libraries"
- echo "in a given directory, LIBDIR, you must either use libtool, and"
- echo "specify the full pathname of the library, or use \`-LLIBDIR'"
- echo "flag during linking and do at least one of the following:"
+ echo "To link against installed libraries in a given directory, LIBDIR,"
+ echo "you must use the \`-LLIBDIR' flag during linking."
+ echo
+ echo " You will also need to do at least one of the following:"
if test -n "$shlibpath_var"; then
echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
echo " during execution"
@@ -3386,22 +2250,22 @@ libdir='$install_libdir'\
dir=
case "$file" in
*.la)
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
+ # Check to see that this really is a libtool archive.
+ if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ fi
# Read the libtool library.
dlname=
library_names=
- # If there is no directory component, then add one.
+ # If there is no directory component, then add one.
case "$file" in
*/* | *\\*) . $file ;;
- *) . ./$file ;;
+ *) . ./$file ;;
esac
# Skip this library if it cannot be dlopened.
@@ -3430,7 +2294,7 @@ libdir='$install_libdir'\
*)
$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
- continue
+ continue
;;
esac
@@ -3457,8 +2321,8 @@ libdir='$install_libdir'\
case "$file" in
-*) ;;
*)
- # Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # Do a test to see if this is really a libtool program.
+ if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
# If there is no directory component, then add one.
case "$file" in
*/* | *\\*) . $file ;;
@@ -3468,7 +2332,7 @@ libdir='$install_libdir'\
# Transform arg to wrapped name.
file="$progdir/$program"
fi
- ;;
+ ;;
esac
# Quote arguments (to preserve shell metacharacters).
file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
@@ -3481,10 +2345,10 @@ libdir='$install_libdir'\
# Restore saved enviroment variables
if test "${save_LC_ALL+set}" = set; then
- LC_ALL="$save_LC_ALL"; export LC_ALL
+ LC_ALL="$save_LC_ALL"; export LC_ALL
fi
if test "${save_LANG+set}" = set; then
- LANG="$save_LANG"; export LANG
+ LANG="$save_LANG"; export LANG
fi
# Now actually exec the command.
@@ -3530,17 +2394,17 @@ libdir='$install_libdir'\
case "$name" in
*.la)
- # Possibly a libtool archive, so verify it.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- . $dir/$name
-
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
- rmfiles="$rmfiles $dir/$n"
- test "X$n" = "X$dlname" && dlname=
- done
- test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
- test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
+ # Possibly a libtool archive, so verify it.
+ if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $dir/$n"
+ test "X$n" = "X$dlname" && dlname=
+ done
+ test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
+ test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
$show "$rm $rmfiles"
$run $rm $rmfiles
@@ -3548,7 +2412,7 @@ libdir='$install_libdir'\
if test -n "$library_names"; then
# Do each command in the postuninstall commands.
eval cmds=\"$postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
for cmd in $cmds; do
IFS="$save_ifs"
$show "$cmd"
@@ -3557,10 +2421,10 @@ libdir='$install_libdir'\
IFS="$save_ifs"
fi
- if test -n "$old_library"; then
+ if test -n "$old_library"; then
# Do each command in the old_postuninstall commands.
eval cmds=\"$old_postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
for cmd in $cmds; do
IFS="$save_ifs"
$show "$cmd"
@@ -3569,21 +2433,21 @@ libdir='$install_libdir'\
IFS="$save_ifs"
fi
- # FIXME: should reinstall the best remaining shared library.
- fi
- ;;
+ # FIXME: should reinstall the best remaining shared library.
+ fi
+ ;;
*.lo)
- if test "$build_old_libs" = yes; then
- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
- rmfiles="$rmfiles $dir/$oldobj"
- fi
+ if test "$build_old_libs" = yes; then
+ oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
+ rmfiles="$rmfiles $dir/$oldobj"
+ fi
$show "$rm $rmfiles"
$run $rm $rmfiles
- ;;
+ ;;
*)
- $show "$rm $rmfiles"
+ $show "$rm $rmfiles"
$run $rm $rmfiles
;;
esac
@@ -3643,7 +2507,6 @@ Compile a source file into a libtool library object.
This mode accepts the following additional options:
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
-static always build a \`.o' file suitable for static linking
COMPILE-COMMAND is a command to be used in creating a \`standard' object file
@@ -3712,23 +2575,18 @@ a program from several object files.
The following components of LINK-COMMAND are treated specially:
-all-static do not do any dynamic linking at all
- -avoid-version do not add a version suffix if possible
-dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
- -export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
-LLIBDIR search LIBDIR for required installed libraries
-lNAME OUTPUT-FILE requires the installed library libNAME
- -module build a library that can dlopened
-no-undefined declare that a library does not refer to external symbols
-o OUTPUT-FILE create OUTPUT-FILE from the specified objects
-release RELEASE specify package release information
-rpath LIBDIR the created library will eventually be installed in LIBDIR
- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
-static do not do any dynamic linking of libtool libraries
-version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
+ specify library version info [each variable defaults to 0]
All other options (arguments beginning with \`-') are ignored.
@@ -3736,12 +2594,11 @@ Every other argument is treated as a filename. Files ending in \`.la' are
treated as uninstalled libtool libraries, other files are standard or library
object files.
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
+library objects (\`.lo' files) may be specified, and \`-rpath' is required.
If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
+using \`ar' and \`ranlib', or on WIndows using \`lib'.
If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
is created, otherwise an executable program is created."