summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Koenig <jck@techsat.com>2017-11-06 09:02:29 (GMT)
committerJoerg Koenig <jck@techsat.com>2017-11-06 09:02:29 (GMT)
commit077bbaa98b29ebd693f5f56f08831aa01a0a7e78 (patch)
treecb9dfc8ad8c49381d4f0234bb3f669062ed74206
parent77654c07ff57a248e833885f9b9e482f122b353f (diff)
downloadcrossppc-077bbaa98b29ebd693f5f56f08831aa01a0a7e78.zip
crossppc-077bbaa98b29ebd693f5f56f08831aa01a0a7e78.tar.gz
crossppc-077bbaa98b29ebd693f5f56f08831aa01a0a7e78.tar.bz2
Changed gcc to vxWorks 5.5 compatible compiler version 3.0.4 and binutils 2.10.1
Change-Id: I64eaeb35e7728c25f372983cfc658fd5387f8515
-rw-r--r--Makefile76
-rw-r--r--Makefile.7.298
-rw-r--r--SOURCES/binutils-2.10.1.tar.gzbin0 -> 7284401 bytes
-rw-r--r--SOURCES/gcc-3.0.4.tar.gzbin0 -> 18435440 bytes
-rw-r--r--SOURCES/gcc304.patch62
-rwxr-xr-xSOURCES/vx-ppc-binutils-2.10.diff920
-rwxr-xr-xSOURCES/vx-ppc-gcc.2.95.3.diff25289
7 files changed, 26404 insertions, 41 deletions
diff --git a/Makefile b/Makefile
index 378574f..7f75cab 100644
--- a/Makefile
+++ b/Makefile
@@ -2,15 +2,20 @@ CWD = $(shell readlink -f .)
VERSION=0.4.1
SRCDIR=$(CWD)/SOURCES
BUILDDIR=$(CWD)/build
-#WIND_BASE=$(CWD)/unpacked/tornado/2.2.1
-#WIND_USR=$(WIND_BASE)/target
-WIND_BASE=/master/tornado/2.2.1
+#WIND_BASE=$(HOME)/tornado/2.2.1
WIND_USR=$(WIND_BASE)/target
+HOST=i686-pc-linux-gnu
GCC_TARGET=powerpc-wrs-vxworks55
MASCH=$(shell uname -m)
-GCC_PKGVERSION="TechSAT VxWorks 5.5/Tornado 2.2.1 Cross-Toolchain ($(MASCH)) v$(VERSION)"
INSTDIR=$(CWD)/inst/crossppc
-PACKAGE=$(CWD)/crossppc-vxworks-$(VERSION)-bin-linux-$(MASCH).tar.gz
+GCC_VERSION=3.0.4
+LANGUAGES=c
+PACKAGE=$(CWD)/vxw55-crossppc-$(GCC_VERSION)-$(HOST).tar.gz
+
+ifeq ($(WIND_BASE),)
+$(error WIND_BASE not specified )
+endif
+
JOBS=-j4
@@ -22,42 +27,28 @@ prepare:
rm -Rf $(CWD)/unpacked
mkdir -p $(CWD)/unpacked
cd $(CWD)/unpacked && \
- tar -zxf $(SRCDIR)/gcc-7.2.0.tar.gz
- cd $(CWD)/unpacked/gcc-7.2.0 && \
- patch -p1 < $(SRCDIR)/gcc72-vxworks.patch
- cd $(CWD)/unpacked/gcc-7.2.0 && \
- patch -p1 < $(SRCDIR)/gcc72-vxworks55-config.patch
- cd $(CWD)/unpacked/gcc-7.2.0 && \
- patch -p1 < $(SRCDIR)/gcc72-vxworks55-libgcc-config.patch
- cd $(CWD)/unpacked && \
- tar -zxf $(SRCDIR)/gmp-6.1.2.tar.gz
-# cd $(CWD)/unpacked && \
-# tar -zxf $(SRCDIR)/tornado-2.2.1.tar.gz
- cd $(CWD)/unpacked && \
- tar -jxf $(SRCDIR)/binutils-2.29.tar.bz2
+ tar -zxf $(SRCDIR)/gcc-$(GCC_VERSION).tar.gz
+ cd $(CWD)/unpacked/gcc-$(GCC_VERSION) && \
+ patch -p1 < $(SRCDIR)/gcc304.patch
cd $(CWD)/unpacked && \
- tar -jxf $(SRCDIR)/isl-0.18.tar.bz2
- cd $(CWD)/unpacked && \
- tar -zxf $(SRCDIR)/mpc-1.0.3.tar.gz
- cd $(CWD)/unpacked && \
- tar -jxf $(SRCDIR)/mpfr-3.1.6.tar.bz2
- mv $(CWD)/unpacked/gmp-6.1.2 $(CWD)/unpacked/gcc-7.2.0/gmp
- mv $(CWD)/unpacked/isl-0.18 $(CWD)/unpacked/gcc-7.2.0/isl
- mv $(CWD)/unpacked/mpc-1.0.3 $(CWD)/unpacked/gcc-7.2.0/mpc
- mv $(CWD)/unpacked/mpfr-3.1.6 $(CWD)/unpacked/gcc-7.2.0/mpfr
-
+ tar -zxf $(SRCDIR)/binutils-2.10.1.tar.gz
+ cd $(CWD)/unpacked/binutils-* && \
+ patch -p1 < $(SRCDIR)/vx-ppc-binutils-2.10.diff
binutils:
rm -Rf $(BUILDDIR)/binutils
mkdir -p $(BUILDDIR)/binutils
cd $(BUILDDIR)/binutils && \
- $(CWD)/unpacked/binutils-2.29/configure \
- --with-pkgversion=$(GCC_PKGVERSION) \
+ CFLAGS="-m32" LDFLAGS="-m32" \
+ $(CWD)/unpacked/binutils-2.10.1/configure \
+ --build=$(HOST) \
+ --host=$(HOST) \
--prefix=$(INSTDIR) \
--target=$(GCC_TARGET) \
- --with-headers=$(WIND_BASE)/target/h
+ --with-headers=$(WIND_BASE)/target/h \
+ --with-libs=$(WIND_BASE)/target/lib
cd $(BUILDDIR)/binutils && \
make $(JOBS) && \
- make install-strip
+ make install
xgcc:
rm -Rf $(BUILDDIR)/gcc
@@ -65,23 +56,26 @@ xgcc:
cd $(BUILDDIR)/gcc && \
export WIND_BASE=$(WIND_BASE) && \
export WIND_USR=$(WIND_USR) && \
- LDFLAGS="-static-libgcc -static-libstdc++" \
- $(CWD)/unpacked/gcc-7.2.0/configure \
- --with-pkgversion=$(GCC_PKGVERSION) \
+ export PATH=$(INSTDIR)/bin:$(PATH) && \
+ CFLAGS="-m32" LDFLAGS="-m32" \
+ $(CWD)/unpacked/gcc-$(GCC_VERSION)/configure \
+ --build=$(HOST) \
+ --host=$(HOST) \
--prefix=$(INSTDIR) \
--target=$(GCC_TARGET) \
--with-headers=$(WIND_BASE)/target/h \
- --disable-plugin \
- --enable-languages="c,c++" \
- --disable-multilib \
- --with-endian=big \
- --enable-threads=vxworks
+ --with-libs=$(WIND_BASE)/target/lib \
+ --enable-languages="$(LANGUAGES)" \
+ --with-gnu-as --with-gnu-ld
cd $(BUILDDIR)/gcc && \
export WIND_BASE=$(WIND_BASE) && \
export WIND_USR=$(WIND_USR) && \
+ export PATH=$(INSTDIR)/bin:$(PATH) && \
make $(JOBS) && \
- make install-strip
+ make install
rm -Rf $(INSTDIR)/$(GCC_TARGET)/sys-include
+ rm -f $(INSTDIR)/bin/powerpc-wrs-vxworks55-gccbug
+ strip $(INSTDIR)/bin/$(GCC_TARGET)-*
pack:
cd $(INSTDIR) && \
diff --git a/Makefile.7.2 b/Makefile.7.2
new file mode 100644
index 0000000..75606c2
--- /dev/null
+++ b/Makefile.7.2
@@ -0,0 +1,98 @@
+CWD = $(shell readlink -f .)
+VERSION=0.4.1
+SRCDIR=$(CWD)/SOURCES
+BUILDDIR=$(CWD)/build
+WIND_BASE=$(HOME)/tornado/2.2.1
+WIND_USR=$(WIND_BASE)/target
+#WIND_BASE=/master/tornado/2.2.1
+#WIND_USR=$(WIND_BASE)/target
+GCC_TARGET=powerpc-wrs-vxworks55
+MASCH=$(shell uname -m)
+GCC_PKGVERSION="TechSAT VxWorks 5.5/Tornado 2.2.1 Cross-Toolchain $(MASCH) v$(VERSION)"
+INSTDIR=$(CWD)/inst/$(MASCH)/crossppc
+PACKAGE=$(CWD)/crossppc-vxworks-$(VERSION)-bin-linux-$(MASCH).tar.gz
+
+JOBS=-j4
+
+all: prepare binutils xgcc pack clean
+
+prepare:
+ mkdir -p $(BUILDDIR)
+ mkdir -p $(INSTDIR)
+ rm -Rf $(CWD)/unpacked
+ mkdir -p $(CWD)/unpacked
+ cd $(CWD)/unpacked && \
+ tar -zxf $(SRCDIR)/gcc-7.2.0.tar.gz
+ cd $(CWD)/unpacked/gcc-7.2.0 && \
+ patch -p1 < $(SRCDIR)/gcc72-vxworks.patch
+ cd $(CWD)/unpacked/gcc-7.2.0 && \
+ patch -p1 < $(SRCDIR)/gcc72-vxworks55-config.patch
+ cd $(CWD)/unpacked/gcc-7.2.0 && \
+ patch -p1 < $(SRCDIR)/gcc72-vxworks55-libgcc-config.patch
+ cd $(CWD)/unpacked && \
+ tar -zxf $(SRCDIR)/gmp-6.1.2.tar.gz
+ cd $(CWD)/unpacked && \
+ tar -jxf $(SRCDIR)/binutils-2.29.tar.bz2
+ cd $(CWD)/unpacked && \
+ tar -jxf $(SRCDIR)/isl-0.18.tar.bz2
+ cd $(CWD)/unpacked && \
+ tar -zxf $(SRCDIR)/mpc-1.0.3.tar.gz
+ cd $(CWD)/unpacked && \
+ tar -jxf $(SRCDIR)/mpfr-3.1.6.tar.bz2
+ mv $(CWD)/unpacked/gmp-6.1.2 $(CWD)/unpacked/gcc-7.2.0/gmp
+ mv $(CWD)/unpacked/isl-0.18 $(CWD)/unpacked/gcc-7.2.0/isl
+ mv $(CWD)/unpacked/mpc-1.0.3 $(CWD)/unpacked/gcc-7.2.0/mpc
+ mv $(CWD)/unpacked/mpfr-3.1.6 $(CWD)/unpacked/gcc-7.2.0/mpfr
+
+binutils:
+ rm -Rf $(BUILDDIR)/binutils
+ mkdir -p $(BUILDDIR)/binutils
+ cd $(BUILDDIR)/binutils && \
+ $(CWD)/unpacked/binutils-2.29/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(INSTDIR) \
+ --target=$(GCC_TARGET) \
+ --with-headers=$(WIND_BASE)/target/h \
+ --with-libs=$(WIND_BASE)/target/lib
+ cd $(BUILDDIR)/binutils && \
+ make $(JOBS) && \
+ make install-strip
+
+xgcc:
+ rm -Rf $(BUILDDIR)/gcc
+ mkdir -p $(BUILDDIR)/gcc
+ cd $(BUILDDIR)/gcc && \
+ export WIND_BASE=$(WIND_BASE) && \
+ export WIND_USR=$(WIND_USR) && \
+ export PATH=$(INSTDIR)/bin:$(PATH) && \
+ LDFLAGS="-static-libgcc -static-libstdc++" \
+ $(CWD)/unpacked/gcc-7.2.0/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(INSTDIR) \
+ --target=$(GCC_TARGET) \
+ --with-headers=$(WIND_BASE)/target/h \
+ --disable-plugin \
+ --enable-languages="c,c++" \
+ --disable-multilib \
+ --with-endian=big \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --enable-threads=vxworks
+ cd $(BUILDDIR)/gcc && \
+ export WIND_BASE=$(WIND_BASE) && \
+ export WIND_USR=$(WIND_USR) && \
+ export PATH=$(INSTDIR)/bin:$(PATH) && \
+ make $(JOBS) && \
+ make install-strip
+ rm -Rf $(INSTDIR)/$(GCC_TARGET)/sys-include
+
+pack:
+ cd $(INSTDIR) && \
+ tar -zcf $(PACKAGE) .
+
+clean:
+ rm -Rf $(BUILDDIR)
+ rm -Rf $(CWD)/unpacked
+ #rm -Rf $(CWD)/inst
+
+
diff --git a/SOURCES/binutils-2.10.1.tar.gz b/SOURCES/binutils-2.10.1.tar.gz
new file mode 100644
index 0000000..4a3610c
--- /dev/null
+++ b/SOURCES/binutils-2.10.1.tar.gz
Binary files differ
diff --git a/SOURCES/gcc-3.0.4.tar.gz b/SOURCES/gcc-3.0.4.tar.gz
new file mode 100644
index 0000000..c184ea4
--- /dev/null
+++ b/SOURCES/gcc-3.0.4.tar.gz
Binary files differ
diff --git a/SOURCES/gcc304.patch b/SOURCES/gcc304.patch
new file mode 100644
index 0000000..2c1693c
--- /dev/null
+++ b/SOURCES/gcc304.patch
@@ -0,0 +1,62 @@
+--- gcc-3.0.4.orig/gcc/fixinc/mkfixinc.sh 2001-12-13 03:20:27.000000000 +0100
++++ gcc-3.0.4/gcc/fixinc/mkfixinc.sh 2017-11-05 23:02:55.000000000 +0100
+@@ -84,6 +84,7 @@
+ powerpc-*-eabisim* | \
+ powerpc-*-eabi* | \
+ powerpc-*-rtems* | \
++ powerpc-*-vxworks* | \
+ powerpcle-*-eabisim* | \
+ powerpcle-*-eabi* | \
+ powerpcle-*-winnt* | \
+diff -ruNb gcc-3.0.4.orig/gcc/config/rs6000/vxppc.h gcc-3.0.4/gcc/config/rs6000/vxppc.h
+--- gcc-3.0.4.orig/gcc/config/rs6000/vxppc.h 2000-11-03 00:29:12.000000000 +0100
++++ gcc-3.0.4/gcc/config/rs6000/vxppc.h 2017-11-06 09:46:39.911182137 +0100
+@@ -41,7 +41,7 @@
+
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "\
+--D__vxworks -D__vxworks__ -Asystem=vxworks -Asystem=embedded \
++-D__vxworks -D__vxworks__ -D__VXVARGS__ -Asystem=vxworks -Asystem=embedded \
+ -Acpu=powerpc -Amachine=powerpc"
+
+ /* Don't define _LITTLE_ENDIAN or _BIG_ENDIAN */
+Binary files gcc-3.0.4.orig/gcc/config/rs6000/.vxppc.h.swp and gcc-3.0.4/gcc/config/rs6000/.vxppc.h.swp differ
+diff -ruNb gcc-3.0.4.orig/gcc/fixinc/inclhack.def gcc-3.0.4/gcc/fixinc/inclhack.def
+--- gcc-3.0.4.orig/gcc/fixinc/inclhack.def 2001-12-13 03:20:27.000000000 +0100
++++ gcc-3.0.4/gcc/fixinc/inclhack.def 2017-11-06 09:46:22.431216101 +0100
+@@ -3255,6 +3255,35 @@
+ "#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n";
+ };
+
++/*
++ * Fix VxWorks varargs header
++ */
++fix = {
++ hackname = vxworks_varargs_problem;
++ files = arch/ppc/toolPpc.h;
++ select = "GNU C varargs support for the PowerPC with V.4 calling sequence";
++
++ sed = "/\\/\\* GNU C varargs support for the PowerPC with V.4 calling sequence \\*\\//a\\\n"
++ "#ifdef __VXVARGS__\\\n"
++ "#include <va-ppc.h>\\\n"
++ "#else /* !defined(__VXVARGS__) */\\\n";
++
++ sed = "/\\/\\* END CYGNUS LOCAL Waiting for 2.7.1 to unfreeze \\*\\//i\\\n"
++ "#endif /* !defined(__VXVARGS__) */\\\n";
++};
++
++/*
++ * That last fix wont even work unless we make archPpc.h use the default
++ * search path when it includes toolPpc.h
++ *
++ */
++fix = {
++ hackname = vxworks_arch_includepath;
++ files = arch/ppc/archPpc.h;
++ select = 'include.*"toolPpc.h"';
++ sed = "s,\"toolPpc.h\",<arch/ppc/toolPpc.h>,";
++};
++
+
+ /*
+ * Fix VxWorks <time.h> to not require including <vxTypes.h>.
diff --git a/SOURCES/vx-ppc-binutils-2.10.diff b/SOURCES/vx-ppc-binutils-2.10.diff
new file mode 100755
index 0000000..acafd12
--- /dev/null
+++ b/SOURCES/vx-ppc-binutils-2.10.diff
@@ -0,0 +1,920 @@
+diff -c3rpN binutils-2.10.orig/bfd/elf32-ppc.c binutils-2.10/bfd/elf32-ppc.c
+*** binutils-2.10.orig/bfd/elf32-ppc.c Wed Mar 1 19:40:54 2000
+--- binutils-2.10/bfd/elf32-ppc.c Wed Jun 6 01:40:50 2001
+*************** ppc_elf_relocate_section (output_bfd, in
+*** 2953,2958 ****
+--- 2953,2960 ----
+ asection *sec = (asection *)0;
+ struct elf_link_hash_entry *h = (struct elf_link_hash_entry *)0;
+ const char *sym_name = (const char *)0;
++ /* WRS_LOCAL */
++ int update_data = 0;
+ reloc_howto_type *howto;
+ unsigned long r_symndx;
+ bfd_vma relocation;
+*************** ppc_elf_relocate_section (output_bfd, in
+*** 2981,2992 ****
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ sym = local_syms + r_symndx;
+! if ((unsigned)ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ {
+ sec = local_sections[r_symndx];
+! addend = rel->r_addend += sec->output_offset + sym->st_value;
+ }
+ }
+
+ #ifdef DEBUG
+ fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n",
+--- 2983,3009 ----
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ sym = local_syms + r_symndx;
+! if (((unsigned)ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+! || (input_section->flags & SEC_DEBUGGING))
+ {
+ sec = local_sections[r_symndx];
+! rel->r_addend += sec->output_offset + sym->st_value;
+! /* WRS_LOCAL begin: */
+! /* It safe to put real offset into .debug* sections
+! since it will be overwritten at final link. But
+! DWARF debug info will be correct even when
+! linking is relocatable.
+! */
+! if ((input_section->flags & SEC_DEBUGGING) == 0)
+! addend = rel->r_addend;
+! else
+! update_data = 1;
+! /* WRS_LOCAL end; */
+!
+ }
+ }
++ else
++ update_data = (input_section->flags & SEC_DEBUGGING) != 0;
+
+ #ifdef DEBUG
+ fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n",
+*************** ppc_elf_relocate_section (output_bfd, in
+*** 2996,3002 ****
+ (long)offset,
+ (long)addend);
+ #endif
+! continue;
+ }
+
+ /* This is a final link. */
+--- 3013,3020 ----
+ (long)offset,
+ (long)addend);
+ #endif
+! if (!update_data) /* WRS_LOCAL */
+! continue;
+ }
+
+ /* This is a final link. */
+diff -c3rpN binutils-2.10.orig/bfd/vms-tir.c binutils-2.10/bfd/vms-tir.c
+*** binutils-2.10.orig/bfd/vms-tir.c Mon Jul 12 11:30:15 1999
+--- binutils-2.10/bfd/vms-tir.c Wed Jun 6 01:41:04 2001
+*************** _bfd_vms_write_tir (abfd, objtype)
+*** 2115,2121 ****
+ {
+
+ #if VMS_DEBUG
+! _bfd_vms_debug (4, "writing %d. section '%s' (%d bytes)\n", section->index, section->name, (int)(section->_raw_size));
+ #endif
+
+ if (section->flags & SEC_RELOC)
+--- 2115,2121 ----
+ {
+
+ #if VMS_DEBUG
+! _bfd_vms_debug (4, "writing %d. section '%s' (%d bytes)\n", section->index, section->name, (int)(section->_raw_size));
+ #endif
+
+ if (section->flags & SEC_RELOC)
+diff -c3rpN binutils-2.10.orig/binutils/stabs.c binutils-2.10/binutils/stabs.c
+*** binutils-2.10.orig/binutils/stabs.c Fri Jan 14 23:10:21 2000
+--- binutils-2.10/binutils/stabs.c Wed Jun 6 01:41:12 2001
+***************
+*** 40,57 ****
+ #include "aout/aout64.h"
+ #include "aout/stab_gnu.h"
+
+- #ifndef DIR_SEPARATOR
+- #ifdef _WIN32
+- #define DIR_SEPARATOR '\\'
+- #else
+- #define DIR_SEPARATOR '/'
+- #endif
+- #endif
+-
+ /* The number of predefined XCOFF types. */
+
+ #define XCOFF_TYPE_COUNT 34
+
+ /* This structure is used as a handle so that the stab parsing doesn't
+ need to use any static variables. */
+
+--- 40,55 ----
+ #include "aout/aout64.h"
+ #include "aout/stab_gnu.h"
+
+ /* The number of predefined XCOFF types. */
+
+ #define XCOFF_TYPE_COUNT 34
+
++ /* Correctly handle absolute filename detection in cp/xref.c */
++ #define IS_ABSOLUTE_PATH(NAME) \
++ (((NAME)[0] == '/') || ((NAME)[0] == '\\') || \
++ (((NAME)[0] >= 'A') && ((NAME)[0] <= 'z') && ((NAME)[1] == ':')))
++
++
+ /* This structure is used as a handle so that the stab parsing doesn't
+ need to use any static variables. */
+
+*************** parse_stab (dhandle, handle, type, desc,
+*** 568,579 ****
+
+ f = info->so_string;
+
+! if ( (string[0] == '/')
+! || (string[0] == DIR_SEPARATOR)
+! || ( (DIR_SEPARATOR == '\\')
+! && (string[1] == ':')
+! && ( (string[2] == DIR_SEPARATOR)
+! || (string[2] == '/'))))
+ info->so_string = xstrdup (string);
+ else
+ info->so_string = concat (info->so_string, string,
+--- 566,572 ----
+
+ f = info->so_string;
+
+! if (IS_ABSOLUTE_PATH (string))
+ info->so_string = xstrdup (string);
+ else
+ info->so_string = concat (info->so_string, string,
+*************** parse_stab (dhandle, handle, type, desc,
+*** 706,711 ****
+--- 699,705 ----
+ case N_OBJ:
+ case N_ENDM:
+ case N_MAIN:
++ case N_WARNING:
+ break;
+ }
+
+diff -c3rpN binutils-2.10.orig/gas/config/obj-elf.c binutils-2.10/gas/config/obj-elf.c
+*** binutils-2.10.orig/gas/config/obj-elf.c Mon Feb 28 04:17:36 2000
+--- binutils-2.10/gas/config/obj-elf.c Wed Jun 6 01:41:25 2001
+***************
+*** 23,28 ****
+--- 23,29 ----
+ #include "as.h"
+ #include "subsegs.h"
+ #include "obstack.h"
++ #include "struc-symbol.h"
+
+ #ifndef ECOFF_DEBUGGING
+ #define ECOFF_DEBUGGING 0
+diff -c3rpN binutils-2.10.orig/gas/config/tc-ppc.c binutils-2.10/gas/config/tc-ppc.c
+*** binutils-2.10.orig/gas/config/tc-ppc.c Sun Apr 2 07:27:51 2000
+--- binutils-2.10/gas/config/tc-ppc.c Wed Jun 6 01:41:32 2001
+*************** ppc_elf_lcomm(xxx)
+*** 1413,1418 ****
+--- 1413,1423 ----
+ *pfrag = 0;
+ S_SET_SIZE (symbolP, size);
+ S_SET_SEGMENT (symbolP, bss_section);
++ /* WRS LOCAL */
++ #ifdef OBJ_ELF
++ /* obj-elf.c sets object-type for .comm - do it for .lcomm too. */
++ symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT;
++ #endif
+ subseg_set (old_sec, old_subsec);
+ demand_empty_rest_of_line ();
+ }
+diff -c3rpN binutils-2.10.orig/gas/read.c binutils-2.10/gas/read.c
+*** binutils-2.10.orig/gas/read.c Sun Mar 26 15:47:33 2000
+--- binutils-2.10/gas/read.c Wed Jun 6 01:41:45 2001
+*************** s_lcomm_internal (needs_align, bytes_p)
+*** 2106,2111 ****
+--- 2106,2116 ----
+ #ifdef S_SET_SIZE
+ S_SET_SIZE (symbolP, temp);
+ #endif
++ /* WRS LOCAL */
++ #ifdef OBJ_ELF
++ /* obj-elf.c sets object-type for .comm - do it for .lcomm too. */
++ symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT;
++ #endif
+ }
+ else
+ as_bad (_("Ignoring attempt to re-define symbol `%s'."),
+diff -c3rpN binutils-2.10.orig/ld/lexsup.c binutils-2.10/ld/lexsup.c
+*** binutils-2.10.orig/ld/lexsup.c Mon May 15 03:21:03 2000
+--- binutils-2.10/ld/lexsup.c Wed Jun 6 01:43:31 2001
+*************** static const struct ld_option ld_options
+*** 372,377 ****
+--- 372,548 ----
+
+ #define OPTION_COUNT ((int) (sizeof ld_options / sizeof ld_options[0]))
+
++ /* fileargs.h - routines to expand command line @ references
++
++ The idea here is that wherever you can put a file name on
++ a command line you should be able to substitute a reference
++ to a list of files of the form @<list_file>. Here
++ <list_file> contains a list of newline seperated files.
++ Trailing whitespace on each line is ignored.
++
++ For example
++
++ ar mylib.a @myfiles
++ */
++
++ /* a file_list is simply a linked list of file names
++
++ as usual an object, flist, of type file_list is an "iterator"
++ that points into the list: the file name at that point is
++ flist -> str; the iterator can be advanced one step with
++ flist = flist -> next; advancing one step past the final
++ node results in (!flist). */
++
++ typedef struct tag_file_list_node
++ {
++ struct tag_file_list_node *next;
++ char *str;
++
++ } file_list_node, *file_list;
++
++
++ /* take a command line argument which can either be a filename
++ or an @ reference and returns a file list in which any @ reference
++ has been expanded. */
++
++ extern file_list get_file_list_from_arg (char *arg);
++
++ /* takes an array of names and returns an array in which
++ @ references have been expanded. */
++
++ extern char **expand_file_list (char **files);
++
++
++ /* fileargs.c
++ */
++
++ #include <stdio.h>
++ extern char *program_name;
++
++ static file_list file_list_create_node (char *str)
++ {
++ file_list flist_node_ptr = xmalloc (sizeof (file_list_node));
++ flist_node_ptr -> next = 0;
++ flist_node_ptr -> str = str;
++ return flist_node_ptr;
++ }
++
++ /* take a command line argument which can either be a filename
++ or an @ reference and returns a file list in which any @ reference
++ has been expanded. */
++
++ file_list
++ get_file_list_from_arg (char *arg)
++ {
++ if (arg [0] != '@')
++ {
++ /* its just an ordinary file name */
++ return file_list_create_node (arg);
++ }
++ {
++ /* its an @ reference */
++ file_list flist = 0, flist_end = 0;
++ FILE * fp;
++ static char buffer [2048];
++
++ /* open the file we get by omitting the leading @ */
++ if ((fp = fopen (&arg[1], "r")) == 0)
++ {
++ fprintf (stderr,
++ "%s : Couldn't expand @ reference - file (%s) doesn't exist.\n", program_name, &arg [1]);
++ xexit (1);
++ }
++
++ /* read a line at a time */
++ while (fgets (buffer, sizeof (buffer) -1, fp))
++ {
++ char *p , *fname;
++ /* remove trailing whitespace */
++
++ /* start from the terminating null */
++ p = buffer + strlen (buffer);
++
++ /* step backwards until we hit the beginning or something
++ that isn't a null or whitespace */
++ for (; p != buffer && (*p == '\0' || isspace (*p)); --p);
++
++ /* p now points to what ought to be the last character in
++ the string. Terminate it. */
++ *++p = '\0';
++
++ /* put the filename somewhere permanent */
++ fname = xmalloc (strlen (buffer) + 1);
++ strcpy (fname, buffer);
++
++ /* add it to the list. Keep track of the start and end
++ of the list */
++
++ if (flist_end)
++ {
++ /* this isn't the first node */
++ flist_end -> next = file_list_create_node (fname);
++ flist_end = flist_end -> next;
++ }
++ else
++ {
++ /* this is the first node */
++ flist = flist_end = file_list_create_node (fname);
++ }
++ }
++ fclose (fp);
++ return flist;
++ }
++ }
++
++ /* takes an array of names and returns an array in which
++ @ references have been expanded. */
++
++ char **expand_file_list (char **files)
++ {
++ /* the beginning and end of the list we're going to build */
++ file_list flist = 0, flist_end = 0;
++
++ int i;
++ if (!files) return 0;
++ /* step through the array, expanding @ references as we find them */
++ for (i = 0; files[i]; ++i)
++ {
++ if (flist_end)
++ {
++ /* this isn't the first node */
++ flist_end -> next = get_file_list_from_arg (files[i]);
++ }
++ else
++ {
++ /* this is the first node */
++ flist = flist_end = get_file_list_from_arg(files[i]);
++ }
++ /* flist_end now points to just before the first node in the
++ newly added list */
++
++ /* find end of new list */
++ while (flist_end -> next) flist_end = flist_end -> next;
++ }
++ {
++ /* count the number of files in the list we've built */
++ int nfiles = 0;
++ file_list node;
++ for (node = flist; node; node = node -> next)
++ ++nfiles;
++
++ /* allocate space for an array large enough to contain these files */
++ files = xmalloc (sizeof (char *) * (nfiles + 1));
++
++ /* copy the files from the list to the array */
++ for (i = 0, node = flist; i != nfiles; node = node -> next, ++i)
++ files [i] = node -> str;
++
++ files[i] = 0;
++ }
++ return files;
++ }
++
++
+ /* Test STRING for containing a string of digits that form a number
+ between MIN and MAX. The return value is the number or ERR. */
+
+*************** parse_args (argc, argv)
+*** 521,528 ****
+ program_name);
+ xexit (1);
+ case 1: /* File name. */
+! lang_add_input_file (optarg, lang_input_file_is_file_enum,
+ (char *) NULL);
+ break;
+
+ case OPTION_IGNORE:
+--- 692,706 ----
+ program_name);
+ xexit (1);
+ case 1: /* File name. */
+! {
+! file_list flist = get_file_list_from_arg (optarg);
+! for (; flist; flist = flist -> next)
+! {
+! lang_add_input_file (flist -> str,
+! lang_input_file_is_file_enum,
+ (char *) NULL);
++ }
++ }
+ break;
+
+ case OPTION_IGNORE:
+Binary files binutils-2.10.orig/ld/testsuite/ld-versados/t1-1.ro and binutils-2.10/ld/testsuite/ld-versados/t1-1.ro differ
+diff -c3rpN binutils-2.10.orig/ld/testsuite/ld-versados/t1.ook binutils-2.10/ld/testsuite/ld-versados/t1.ook
+*** binutils-2.10.orig/ld/testsuite/ld-versados/t1.ook Mon May 3 08:29:09 1999
+--- binutils-2.10/ld/testsuite/ld-versados/t1.ook Wed Jun 6 01:43:51 2001
+***************
+*** 1,133 ****
+! S00C000074312E6F75742E6F6BC0
+! S118000000000A205341464553544F52452041202020202052BE
+! S118001531332E33202020202020205231332E32202020202077
+! S118002A202000B5E86600B5E9B11DA15B9900001F0000000A50
+! S118003F640000003E0000005C00A800BA00F000040001000251
+! S1180054000000000000000000000006004031CF52544C4942D0
+! S1180069434F4E0004E5EC52544C4942434F4E0004E5ED5254F0
+! S118007E4C4942434F4E004031D252544C4942434F4E00000A08
+! S11800937D52544C49425354520010A4A852544C494246494CAD
+! S11800A8000200B5E86D0000016000B5E873000002540002006A
+! S11800BDB5E937534146455052494E5420000006000200080079
+! S11800D20000034200B5E86E494E4954534146455354000002C9
+! S11800E71800000E00000009020030000000004E56FFD8BA8FDB
+! S11800FC63062E4E6100001641FA003243EEFFD8702612D85149
+! S1180111C8FFFC4E5E4E752B57FFF22F3C0000000A6000000259
+! S11801263B6F0002FFF62F2D00382F2D00344E4C4E4A434F50E7
+! S118013B5952494748542054656C65666F6E204142204C204D6B
+! S1180150204572696373736F6E2C2031393933004E56FFFCBAB5
+! S11801658F63042E4E61AC202E000C06800000000C4E7656807C
+! S118017A4E760280FFFFFFFC4AD56604610000B02D40FFFC200B
+! S118018F6C003A2208242C003694814E7604820000000C4E76D2
+! S11801A44AD566046100008EB0826E0C0CAE00000001000C6CEB
+! S11801B900000C207C0000000061000060206C003A200866046C
+! S11801CE610000762208D2AEFFFC68046100005C2081216E0043
+! S11801E3100004216E000C0008220806810000000C68046100C2
+! S11801F800402D4100142950003A206C003A24086604610000BC
+! S118020D3A429042A8000442A800084E5E225F285F508F4EE922
+! S118022200022B5FFFF24E5ED1DF285F2F082B48FFF2D0D04EDA
+! S1180237D02B57FFF22F3C0000000E6000FEE22B57FFF22F3CD4
+! S118024C000000106000FED44E56FFFCBA8F63062E4E6100FE2B
+! S1180261B82D6C0032FFFC600000122B5FFFF24FEEFFFC42AEF1
+! S1180276FFFC600000824AAEFFFC6700007A206EFFFC200866A7
+! S118028B00000461B622280004B2AE001067000062220802810B
+! S11802A0000000034A8166402208226C003A2409B2826E3426B6
+! S11802B510280806840000000C68046100FF76B6846D2026101B
+! S11802CA280896844E7604830000000C4E764AD566046100FFCD
+! S11802DF5AB6A800086C0000046182206EFFFC20086604610077
+! S11802F4FF522D50FFFC60804AAEFFFC6700002C206EFFFC2019
+! S11803090866046100FF38226E000C22A80008220806810000B2
+! S118031E000C68046100FF142D4100146000000C206E000C4210
+! S11803339042AE00144E5E205F285F508F4ED04FEDFF00707F44
+! S1180348204F425851C8FFFC486DFF081F3C00043F3C00019F49
+! S118035DFC0000000C224F45FA04FE22DA22DA22DA266C00281F
+! S11803722F0C286C002C4EAB0068486DFFB8486DFFB42F0C20E7
+! S11803876C0000286C00044E909FFC000000522F2DFFC62F0C32
+! S118039C206C0008286C000C4E907052266C00204EAB001E416A
+! S11803B1FA04BE266C00204EAB007E266C00204EAB009E41EDD7
+! S11803C6FFBA266C00204EAB007E266C00204EAB009E1F3C0098
+! S11803DB283F3C0001266C00204EAB009E9FFC00000052302DD2
+! S11803F0FFCA48C02F002F0C206C0008286C000C4E90705226BF
+! S11804056C00204EAB001E266C00204EAB009E41FA045E266CC3
+! S118041A00204EAB007E266C00204EAB009E41EDFF9E70162672
+! S118042F6C00204EAB00CA600000162B5FFFF24FEDFF002B7C92
+! S118044400000001FFB4600003E4486DFF089FFC0000005220DB
+! S11804594F43EDFF9E3019725092406F024241D04130C06F0A23
+! S118046E5340E24030D951C8FFFC9FFC00000052224F45FA0303
+! S1180483F632DA266C00282F0C286C002C4EAB0050FFAA486D02
+! S1180498FF08266C00282F0C286C002C4EAB00A0FF9642ADFF73
+! S11804AD002B6C0032FF04487A03C43F3CFFFF486DFF08266C1A
+! S11804C200282F0C286C002C4EAB00C0FF70486DFF08266C0088
+! S11804D7282F0C286C002C4EAB00A4FF5C600000782B5FFFF29E
+! S11804EC4FEDFF00487A03BA3F3CFFFF486DFF08266C00282F1F
+! S11805010C286C002C4EAB00C0FF349FFC00000052206DFF04AC
+! S118051620082F002F0C206C0010286C00144E902F0F3F3CFF60
+! S118052BFF486DFF08266C00282F0C286C002C4EAB00C0FF008F
+! S1180540DFFC00000052486DFF08266C00282F0C286C002C4EB6
+! S1180555AB00A4FEE6600001F0206DFF042008660261804A902E
+! S118056A6700016A22100281000000034A81664A2210242C00F1
+! S118057F3604820000000C68046100FCAEB2826E3422102408F0
+! S118059406820000000C68046100FC9AB2826D202210240892A6
+! S11805A9824E7604810000000C4E764AD566046100FC7EB2A8E0
+! S11805BE00086C0000066100FF22206DFF04200866046100FFA6
+! S11805D31622280008D2ADFF0068046100FC582B41FF009FFC02
+! S11805E80000005224082F022F0C206C0010286C00144E902FBF
+! S11805FD0F3F3C000C486DFF08266C00282F0C286C002C4EABE5
+! S118061200C0FE2ADFFC00000052206DFF04200866046100FE39
+! S1180627C22F2800043F3C000C486DFF08266C00282F0C286CD1
+! S118063C002C4EAB00BCFDFC206DFF04200866046100FE9A2F81
+! S11806512800083F3C000C486DFF08266C00282F0C286C002C68
+! S11806664EAB00BCFDD49FFC00000052206DFF04200866046185
+! S118067B00FE6C22102F012F0C206C0010286C00144E902F0FFF
+! S11806903F3C000C486DFF08266C00282F0C286C002C4EAB0060
+! S11806A5C0FD98DFFC00000052486DFF08266C00282F0C286C75
+! S11806BA002C4EAB00A4FD7E206DFF04200866046100FE1C2B1B
+! S11806CF50FF046000FE8A206C003AB1EDFF046700006C487ADB
+! S11806E401E83F3CFFFF486DFF08266C00282F0C286C002C4EDC
+! S11806F9AB00C0FD429FFC00000052206DFF0420082F002F0C2F
+! S118070E206C0010286C00144E902F0F3F3CFFFF486DFF082617
+! S11807236C00282F0C286C002C4EAB00C0FD0EDFFC000000523D
+! S1180738486DFF08266C00282F0C286C002C4EAB00A4FCF44862
+! S118074D7A01983F3CFFFF486DFF08266C00282F0C286C002C96
+! S11807624EAB00C0FCD8486DFF08266C00282F0C286C002C4E32
+! S1180777AB00A4FCC4487A016A3F3CFFFF486DFF08266C00283E
+! S118078C2F0C286C002C4EAB00C0FCA8486DFF08266C00282F57
+! S11807A10C286C002C4EAB00A4FC94206DFF0420080680000008
+! S11807B600184E76222C003692804E760281FFFFFFFC4AD566F3
+! S11807CB046100FA6A2F013F3C000C486DFF08266C00282F0CE4
+! S11807E0286C002C4EAB00BCFC562F2DFF003F3C000C486DFFA3
+! S11807F508266C00282F0C286C002C4EAB00BCFC3A486DFF0887
+! S118080A266C00282F0C286C002C4EAB00A4FC26486DFF081F86
+! S118081F3C0001266C00282F0C286C002C4EAB0054486DFFB815
+! S1180834486DFFB42F0C206C0018286C001C4E90486DFF0842D8
+! S118084927266C00282F0C286C002C4EAB005442A72F2D0038F0
+! S118085E2F2D00344E4A000A4631202020202020202000023A9C
+! S11808733A0002293A0000003020202020204164647265737337
+! S1180888202020204964656E746974792020202020202020533A
+! S118089D697A6520202020202020204E657874001D496E7661B0
+! S11808B26C6964207365676D656E74207374617274696E672035
+! S11808C761743A202000185365676D656E74206C69737420637F
+! S11808DC6F727275707465643A2000000018202020417661693B
+! S11808F16C61626C652020202020202020557365644FEDFFF230
+! S11809069FFC0000000A6100015641EC003020DF20DF30DF20F1
+! S118091B2C003256804E760280FFFFFFFC4AD566046100F90A63
+! S1180930294000322940003A6000003E2B5FFFF24FEDFFF2200A
+! S11809452C003256804E760280FFFFFFFC4AD566046100F8E064
+! S118095A2940003A206C003A220866046100F8DE429042A80094
+! S118096F0442A800086000009E4A2C00306700001A206C003A8E
+! S11809842008660261B2429042A8000442A800086000007E2007
+! S11809996C003A20086602619A4A906700006E221002810000B0
+! S11809AE00034A81664A2210242C003604820000000C6804619B
+! S11809C300F874B2826E342210240806820000000C680461001A
+! S11809D8F860B2826D202210240892824E7604810000000C4ED8
+! S11809ED764AD566046100F844B2A800086C0000066100FF3CE5
+! S1180A02206C003A200866046100FF302950003A608442A72F44
+! S1180A172D00382F2D00344E4A4E560000518F42A71F3C000E63
+! S1180A2C4267487A0012426742272F3C00B5E86E4E49000E50B7
+! S1180A418F4E5E205F285F4EE80002207C0000000060042B5F99
+! S1180A56FFF24E5ED1DF285F2F08D0D04ED043FA0004D3FC00AE
+! S1180A6B02704E2F49000A43FA0004D3FC000000402F49000662
+! S1180A8041FA0004D1FCFFFFF57A202800566600002222099201
+! S1180A95882141005642812448D25AB5C96DFA4441D368005AAE
+! S1110AAA1F7C000100044E75422F00044E759F
+! S9030000FC
+--- 1,133 ----
+! S00C000074312E6F75742E6F6BC0
+! S118000000000A205341464553544F52452041202020202052BE
+! S118001531332E33202020202020205231332E32202020202077
+! S118002A202000B5E86600B5E9B11DA15B9900001F0000000A50
+! S118003F640000003E0000005C00A800BA00F000040001000251
+! S1180054000000000000000000000006004031CF52544C4942D0
+! S1180069434F4E0004E5EC52544C4942434F4E0004E5ED5254F0
+! S118007E4C4942434F4E004031D252544C4942434F4E00000A08
+! S11800937D52544C49425354520010A4A852544C494246494CAD
+! S11800A8000200B5E86D0000016000B5E873000002540002006A
+! S11800BDB5E937534146455052494E5420000006000200080079
+! S11800D20000034200B5E86E494E4954534146455354000002C9
+! S11800E71800000E00000009020030000000004E56FFD8BA8FDB
+! S11800FC63062E4E6100001641FA003243EEFFD8702612D85149
+! S1180111C8FFFC4E5E4E752B57FFF22F3C0000000A6000000259
+! S11801263B6F0002FFF62F2D00382F2D00344E4C4E4A434F50E7
+! S118013B5952494748542054656C65666F6E204142204C204D6B
+! S1180150204572696373736F6E2C2031393933004E56FFFCBAB5
+! S11801658F63042E4E61AC202E000C06800000000C4E7656807C
+! S118017A4E760280FFFFFFFC4AD56604610000B02D40FFFC200B
+! S118018F6C003A2208242C003694814E7604820000000C4E76D2
+! S11801A44AD566046100008EB0826E0C0CAE00000001000C6CEB
+! S11801B900000C207C0000000061000060206C003A200866046C
+! S11801CE610000762208D2AEFFFC68046100005C2081216E0043
+! S11801E3100004216E000C0008220806810000000C68046100C2
+! S11801F800402D4100142950003A206C003A24086604610000BC
+! S118020D3A429042A8000442A800084E5E225F285F508F4EE922
+! S118022200022B5FFFF24E5ED1DF285F2F082B48FFF2D0D04EDA
+! S1180237D02B57FFF22F3C0000000E6000FEE22B57FFF22F3CD4
+! S118024C000000106000FED44E56FFFCBA8F63062E4E6100FE2B
+! S1180261B82D6C0032FFFC600000122B5FFFF24FEEFFFC42AEF1
+! S1180276FFFC600000824AAEFFFC6700007A206EFFFC200866A7
+! S118028B00000461B622280004B2AE001067000062220802810B
+! S11802A0000000034A8166402208226C003A2409B2826E3426B6
+! S11802B510280806840000000C68046100FF76B6846D2026101B
+! S11802CA280896844E7604830000000C4E764AD566046100FFCD
+! S11802DF5AB6A800086C0000046182206EFFFC20086604610077
+! S11802F4FF522D50FFFC60804AAEFFFC6700002C206EFFFC2019
+! S11803090866046100FF38226E000C22A80008220806810000B2
+! S118031E000C68046100FF142D4100146000000C206E000C4210
+! S11803339042AE00144E5E205F285F508F4ED04FEDFF00707F44
+! S1180348204F425851C8FFFC486DFF081F3C00043F3C00019F49
+! S118035DFC0000000C224F45FA04FE22DA22DA22DA266C00281F
+! S11803722F0C286C002C4EAB0068486DFFB8486DFFB42F0C20E7
+! S11803876C0000286C00044E909FFC000000522F2DFFC62F0C32
+! S118039C206C0008286C000C4E907052266C00204EAB001E416A
+! S11803B1FA04BE266C00204EAB007E266C00204EAB009E41EDD7
+! S11803C6FFBA266C00204EAB007E266C00204EAB009E1F3C0098
+! S11803DB283F3C0001266C00204EAB009E9FFC00000052302DD2
+! S11803F0FFCA48C02F002F0C206C0008286C000C4E90705226BF
+! S11804056C00204EAB001E266C00204EAB009E41FA045E266CC3
+! S118041A00204EAB007E266C00204EAB009E41EDFF9E70162672
+! S118042F6C00204EAB00CA600000162B5FFFF24FEDFF002B7C92
+! S118044400000001FFB4600003E4486DFF089FFC0000005220DB
+! S11804594F43EDFF9E3019725092406F024241D04130C06F0A23
+! S118046E5340E24030D951C8FFFC9FFC00000052224F45FA0303
+! S1180483F632DA266C00282F0C286C002C4EAB0050FFAA486D02
+! S1180498FF08266C00282F0C286C002C4EAB00A0FF9642ADFF73
+! S11804AD002B6C0032FF04487A03C43F3CFFFF486DFF08266C1A
+! S11804C200282F0C286C002C4EAB00C0FF70486DFF08266C0088
+! S11804D7282F0C286C002C4EAB00A4FF5C600000782B5FFFF29E
+! S11804EC4FEDFF00487A03BA3F3CFFFF486DFF08266C00282F1F
+! S11805010C286C002C4EAB00C0FF349FFC00000052206DFF04AC
+! S118051620082F002F0C206C0010286C00144E902F0F3F3CFF60
+! S118052BFF486DFF08266C00282F0C286C002C4EAB00C0FF008F
+! S1180540DFFC00000052486DFF08266C00282F0C286C002C4EB6
+! S1180555AB00A4FEE6600001F0206DFF042008660261804A902E
+! S118056A6700016A22100281000000034A81664A2210242C00F1
+! S118057F3604820000000C68046100FCAEB2826E3422102408F0
+! S118059406820000000C68046100FC9AB2826D202210240892A6
+! S11805A9824E7604810000000C4E764AD566046100FC7EB2A8E0
+! S11805BE00086C0000066100FF22206DFF04200866046100FFA6
+! S11805D31622280008D2ADFF0068046100FC582B41FF009FFC02
+! S11805E80000005224082F022F0C206C0010286C00144E902FBF
+! S11805FD0F3F3C000C486DFF08266C00282F0C286C002C4EABE5
+! S118061200C0FE2ADFFC00000052206DFF04200866046100FE39
+! S1180627C22F2800043F3C000C486DFF08266C00282F0C286CD1
+! S118063C002C4EAB00BCFDFC206DFF04200866046100FE9A2F81
+! S11806512800083F3C000C486DFF08266C00282F0C286C002C68
+! S11806664EAB00BCFDD49FFC00000052206DFF04200866046185
+! S118067B00FE6C22102F012F0C206C0010286C00144E902F0FFF
+! S11806903F3C000C486DFF08266C00282F0C286C002C4EAB0060
+! S11806A5C0FD98DFFC00000052486DFF08266C00282F0C286C75
+! S11806BA002C4EAB00A4FD7E206DFF04200866046100FE1C2B1B
+! S11806CF50FF046000FE8A206C003AB1EDFF046700006C487ADB
+! S11806E401E83F3CFFFF486DFF08266C00282F0C286C002C4EDC
+! S11806F9AB00C0FD429FFC00000052206DFF0420082F002F0C2F
+! S118070E206C0010286C00144E902F0F3F3CFFFF486DFF082617
+! S11807236C00282F0C286C002C4EAB00C0FD0EDFFC000000523D
+! S1180738486DFF08266C00282F0C286C002C4EAB00A4FCF44862
+! S118074D7A01983F3CFFFF486DFF08266C00282F0C286C002C96
+! S11807624EAB00C0FCD8486DFF08266C00282F0C286C002C4E32
+! S1180777AB00A4FCC4487A016A3F3CFFFF486DFF08266C00283E
+! S118078C2F0C286C002C4EAB00C0FCA8486DFF08266C00282F57
+! S11807A10C286C002C4EAB00A4FC94206DFF0420080680000008
+! S11807B600184E76222C003692804E760281FFFFFFFC4AD566F3
+! S11807CB046100FA6A2F013F3C000C486DFF08266C00282F0CE4
+! S11807E0286C002C4EAB00BCFC562F2DFF003F3C000C486DFFA3
+! S11807F508266C00282F0C286C002C4EAB00BCFC3A486DFF0887
+! S118080A266C00282F0C286C002C4EAB00A4FC26486DFF081F86
+! S118081F3C0001266C00282F0C286C002C4EAB0054486DFFB815
+! S1180834486DFFB42F0C206C0018286C001C4E90486DFF0842D8
+! S118084927266C00282F0C286C002C4EAB005442A72F2D0038F0
+! S118085E2F2D00344E4A000A4631202020202020202000023A9C
+! S11808733A0002293A0000003020202020204164647265737337
+! S1180888202020204964656E746974792020202020202020533A
+! S118089D697A6520202020202020204E657874001D496E7661B0
+! S11808B26C6964207365676D656E74207374617274696E672035
+! S11808C761743A202000185365676D656E74206C69737420637F
+! S11808DC6F727275707465643A2000000018202020417661693B
+! S11808F16C61626C652020202020202020557365644FEDFFF230
+! S11809069FFC0000000A6100015641EC003020DF20DF30DF20F1
+! S118091B2C003256804E760280FFFFFFFC4AD566046100F90A63
+! S1180930294000322940003A6000003E2B5FFFF24FEDFFF2200A
+! S11809452C003256804E760280FFFFFFFC4AD566046100F8E064
+! S118095A2940003A206C003A220866046100F8DE429042A80094
+! S118096F0442A800086000009E4A2C00306700001A206C003A8E
+! S11809842008660261B2429042A8000442A800086000007E2007
+! S11809996C003A20086602619A4A906700006E221002810000B0
+! S11809AE00034A81664A2210242C003604820000000C6804619B
+! S11809C300F874B2826E342210240806820000000C680461001A
+! S11809D8F860B2826D202210240892824E7604810000000C4ED8
+! S11809ED764AD566046100F844B2A800086C0000066100FF3CE5
+! S1180A02206C003A200866046100FF302950003A608442A72F44
+! S1180A172D00382F2D00344E4A4E560000518F42A71F3C000E63
+! S1180A2C4267487A0012426742272F3C00B5E86E4E49000E50B7
+! S1180A418F4E5E205F285F4EE80002207C0000000060042B5F99
+! S1180A56FFF24E5ED1DF285F2F08D0D04ED043FA0004D3FC00AE
+! S1180A6B02704E2F49000A43FA0004D3FC000000402F49000662
+! S1180A8041FA0004D1FCFFFFF57A202800566600002222099201
+! S1180A95882141005642812448D25AB5C96DFA4441D368005AAE
+! S1110AAA1F7C000100044E75422F00044E759F
+! S9030000FC
+Binary files binutils-2.10.orig/ld/testsuite/ld-versados/t2-3.ro and binutils-2.10/ld/testsuite/ld-versados/t2-3.ro differ
+diff -c3rpN binutils-2.10.orig/ld/testsuite/ld-versados/t2.ook binutils-2.10/ld/testsuite/ld-versados/t2.ook
+*** binutils-2.10.orig/ld/testsuite/ld-versados/t2.ook Mon May 3 08:29:09 1999
+--- binutils-2.10/ld/testsuite/ld-versados/t2.ook Wed Jun 6 01:43:51 2001
+***************
+*** 1,99 ****
+! S0120000696E6974746573745F6570632E7372CF
+! S118000000000000494E495454455354202050413035202052AB
+! S118001531332E33202020202020205231332E32202020202077
+! S118002A202000934B5B00B5E6C11B089DD600005400000005F9
+! S118003F5A00000048005C00A60000010A0126000400010002CB
+! S1180054009000000000000000000002004020200000494F5F8A
+! S11800695245534552564152544C4942434F4E0040484501003B
+! S118007E505F414C4C202020202052544C4942434F4E010000E3
+! S118009300009C01000000000000085345504152415445000852
+! S11800A80008004031CF52544C4942434F4E0004E5EC52544CD3
+! S11800BD4942434F4E00B5E86D5341464553544F5200004F28D7
+! S11800D253595354454D494D00B5E8735341464553544F520023
+! S11800E74031D252544C4942434F4E00000A7D52544C49425309
+! S11800FC54520010A4A852544C494246494C000100B5E6C049EC
+! S11801114E495454455354202000000616020008000000023210
+! S11801260048000000004E56FFF0BA8F63062E4E610000BC4159
+! S118013BFA00F443EEFFF032D82D7C00000001FFFC206E000858
+! S118015020086604610000BA222EFFFC53814A816C046100002E
+! S11801659E2248D3E9FFFC41F01800B3C863EE4A1066000006E7
+! S118017A6000006241EEFFF0266C00384EAB007E206E00082095
+! S118018F0866046100007C222EFFFC53814A816C0461000060ED
+! S11801A42248D3E9FFFC41F01800B3C863EE1F103F3C0001263B
+! S11801B96C00384EAB009E41EEFFF0700C266C00384EAB00CACB
+! S11801CE52AEFFFC0CAE0000000AFFFC6F00FF7041EEFFF0431F
+! S11801E3EE000C22D822D822D84E5E205F588F4ED02B57FFF278
+! S11801F82F3C0000000A6000001E2B57FFF22F3C0000000F60AE
+! S118020D0000102B57FFF22F3C00000010600000023B6F0002CC
+! S1180222FFF62F2D00382F2D00344E4C4E4A00004FEDFEEA2034
+! S11802373C0000008A204F425851C8FFFC486DFEEA1F3C0004CF
+! S118024C3F3C00019FFC0000000C224F45FA02D422DA22DA22D6
+! S1180261DA266C00402F0C286C00444EAB0068486DFFB8486D43
+! S1180276FFB42F0C206C0008286C000C4E909FFC000000522F53
+! S118028B2DFFC62F0C206C0010286C00144E907052266C00387F
+! S11802A04EAB001E41FA0294266C00384EAB007E266C00384E04
+! S11802B5AB009E41EDFFBA266C00384EAB007E266C00384EABFC
+! S11802CA009E1F3C00283F3C0001266C00384EAB009E9FFC0082
+! S11802DF000052302DFFCA48C02F002F0C206C0010286C0014D8
+! S11802F44E907052266C00384EAB001E266C00384EAB009E41CE
+! S1180309FA0234266C00384EAB007E266C00384EAB009E41EDDB
+! S118031EFF807016266C00384EAB00CA9FFC0000000E61000228
+! S11803332841EDFF9E20DF20DF20DF30DF4A2DFF9E6700003AFD
+! S1180348598F2F2DFFA02F2DFFA82F0C206C0018286C001C4ED9
+! S118035D9001B82B5FFF9A2F2DFF9A2F2DFFA42F2DFFA82F0CE9
+! S1180372206C0020286C00244E9060000034598F2F2DFFA04871
+! S11803876DFFA82F0C206C0028286C002C4E902B5FFF962F2D41
+! S118039CFFA42F2DFF962F2DFFA82F0C206C0020286C00244EC4
+! S11803B190486DFEEA9FFC00000052204F43EDFF8030197250F0
+! S11803C692406F024241D04130C06F0A5340E24030D951C8FF08
+! S11803DBFC9FFC00000052224F45FA015C32DA266C00402F0CFA
+! S11803F0286C00444EAB0050012C486DFEEA266C00402F0C28D4
+! S11804056C00444EAB00A00118487A01343F3CFFFF486DFEEA6F
+! S118041A266C00402F0C286C00444EAB00C000FC486DFEEA266C
+! S118042F6C00402F0C286C00444EAB00A400E842ADFFB02B7C2B
+! S118044400000001FFAC598F2F2DFFAC6100017E2B5FFFB02BC0
+! S118045940FFB02F2DFFAC3F3C000A486DFEEA266C00402F0C65
+! S118046E286C00444EAB00BC00AE9FFC0000000C2F2DFFB06127
+! S118048300FCA82F0F3F3C000A486DFEEA266C00402F0C286CBB
+! S118049800444EAB00C00086DFFC0000000C486DFEEA266C00B2
+! S11804AD402F0C286C00444EAB00A4006C52ADFFAC0CAD000077
+! S11804C2000AFFAC6F82486DFEEA1F3C0001266C00402F0C284D
+! S11804D76C00444EAB0054486DFFB8486DFFB42F0C206C003044
+! S11804EC286C00344E90486DFEEA4227266C00402F0C286C00AA
+! S1180501444EAB005442A72F2D00382F2D00344E4A2B57FFF238
+! S11805162F3C0000000C6000FD002B57FFF22F3C000000646056
+! S118052B00FCF2000A4631202020202020202000023A3A0002D0
+! S1180540293A000000142020202020204361736520202020521D
+! S11805556573756C7441FA0004D1FCFFFFFAA02028003C43FAFB
+! S118056A0004D3FC000001D645FA0004D5FC0000025E260A58D2
+! S118057F8AD0885580222800566600002E2408265AD5B0B8008F
+! S1180594B5C06DF6220992882141005642812648D25BB7C96D2E
+! S11805A9FA4441D368005A123C00016000000442411F4100048B
+! S11805BE2F68003400062F49000A96892F43000E4E754E56FFCC
+! S11805D3F0202E000847FA0004D7FC000001A6220B41FA00049E
+! S11805E8D1FC000001B62D58FFF02D58FFF42D58FFF82D50FF92
+! S11805FDFC53807408B4806500012C41FA0004D1FC0000000EBA
+! S1180612D080303008004EFB00020012002200320042004800DC
+! S118062758006C00A000DC41FA0004D1FC0000011820106000C5
+! S118063C010247FA0004D7FC0000010C200B600000F241FA00C5
+! S118065104D1FC000001102010600000E22001600000DC47FA9E
+! S11806660004D7FC00000120200B600000CC43FA0004D3FC001C
+! S118067B0000FA41E9000C2010600000B8242EFFF447FA000464
+! S1180690D7FC000000FEB48B6600001247FA0004D7FC000001B0
+! S11806A514200B6000009447FA0004D7FC0000010A200B60005B
+! S11806BA008441FA0004D1FC0000008A205047FA0004D7FC0085
+! S11806CF000082B1CB6600001247FA0004D7FC000000E0200B79
+! S11806E46000005847FA0004D7FC000000D2200B600000484147
+! S11806F9FA0004D1FC0000004E43FA0004D3FC0000003EB3D0FE
+! S118070E6600001247FA0004D7FC000000AE200B6000001E47A4
+! S1180723FA0004D7FC000000A6200B6000000E47FA0004D7FC95
+! S118073800000098200B4E5E4E740004000053756E65000000D8
+! S118074D0007464F74746F00000000000A0000000C50656C6CFD
+! S118076265000000075E5374696E61004B6172696E00000000C0
+! S11807770500000768000000030000076E5075747465004B61BF
+! S118078C6C6C65005374696E613100004B6172696E31000000C1
+! S11807A1000033000007900000001F0000079878797A7A0000D2
+! S11807B64F6C6C650000370038005065746572005376756C6C19
+! S11807CB6F00003900536C75740000000000000000074C000072
+! S11507E007640000077800000780000007A4000007AC34
+! S9030000FC
+--- 1,99 ----
+! S0120000696E6974746573745F6570632E7372CF
+! S118000000000000494E495454455354202050413035202052AB
+! S118001531332E33202020202020205231332E32202020202077
+! S118002A202000934B5B00B5E6C11B089DD600005400000005F9
+! S118003F5A00000048005C00A60000010A0126000400010002CB
+! S1180054009000000000000000000002004020200000494F5F8A
+! S11800695245534552564152544C4942434F4E0040484501003B
+! S118007E505F414C4C202020202052544C4942434F4E010000E3
+! S118009300009C01000000000000085345504152415445000852
+! S11800A80008004031CF52544C4942434F4E0004E5EC52544CD3
+! S11800BD4942434F4E00B5E86D5341464553544F5200004F28D7
+! S11800D253595354454D494D00B5E8735341464553544F520023
+! S11800E74031D252544C4942434F4E00000A7D52544C49425309
+! S11800FC54520010A4A852544C494246494C000100B5E6C049EC
+! S11801114E495454455354202000000616020008000000023210
+! S11801260048000000004E56FFF0BA8F63062E4E610000BC4159
+! S118013BFA00F443EEFFF032D82D7C00000001FFFC206E000858
+! S118015020086604610000BA222EFFFC53814A816C046100002E
+! S11801659E2248D3E9FFFC41F01800B3C863EE4A1066000006E7
+! S118017A6000006241EEFFF0266C00384EAB007E206E00082095
+! S118018F0866046100007C222EFFFC53814A816C0461000060ED
+! S11801A42248D3E9FFFC41F01800B3C863EE1F103F3C0001263B
+! S11801B96C00384EAB009E41EEFFF0700C266C00384EAB00CACB
+! S11801CE52AEFFFC0CAE0000000AFFFC6F00FF7041EEFFF0431F
+! S11801E3EE000C22D822D822D84E5E205F588F4ED02B57FFF278
+! S11801F82F3C0000000A6000001E2B57FFF22F3C0000000F60AE
+! S118020D0000102B57FFF22F3C00000010600000023B6F0002CC
+! S1180222FFF62F2D00382F2D00344E4C4E4A00004FEDFEEA2034
+! S11802373C0000008A204F425851C8FFFC486DFEEA1F3C0004CF
+! S118024C3F3C00019FFC0000000C224F45FA02D422DA22DA22D6
+! S1180261DA266C00402F0C286C00444EAB0068486DFFB8486D43
+! S1180276FFB42F0C206C0008286C000C4E909FFC000000522F53
+! S118028B2DFFC62F0C206C0010286C00144E907052266C00387F
+! S11802A04EAB001E41FA0294266C00384EAB007E266C00384E04
+! S11802B5AB009E41EDFFBA266C00384EAB007E266C00384EABFC
+! S11802CA009E1F3C00283F3C0001266C00384EAB009E9FFC0082
+! S11802DF000052302DFFCA48C02F002F0C206C0010286C0014D8
+! S11802F44E907052266C00384EAB001E266C00384EAB009E41CE
+! S1180309FA0234266C00384EAB007E266C00384EAB009E41EDDB
+! S118031EFF807016266C00384EAB00CA9FFC0000000E61000228
+! S11803332841EDFF9E20DF20DF20DF30DF4A2DFF9E6700003AFD
+! S1180348598F2F2DFFA02F2DFFA82F0C206C0018286C001C4ED9
+! S118035D9001B82B5FFF9A2F2DFF9A2F2DFFA42F2DFFA82F0CE9
+! S1180372206C0020286C00244E9060000034598F2F2DFFA04871
+! S11803876DFFA82F0C206C0028286C002C4E902B5FFF962F2D41
+! S118039CFFA42F2DFF962F2DFFA82F0C206C0020286C00244EC4
+! S11803B190486DFEEA9FFC00000052204F43EDFF8030197250F0
+! S11803C692406F024241D04130C06F0A5340E24030D951C8FF08
+! S11803DBFC9FFC00000052224F45FA015C32DA266C00402F0CFA
+! S11803F0286C00444EAB0050012C486DFEEA266C00402F0C28D4
+! S11804056C00444EAB00A00118487A01343F3CFFFF486DFEEA6F
+! S118041A266C00402F0C286C00444EAB00C000FC486DFEEA266C
+! S118042F6C00402F0C286C00444EAB00A400E842ADFFB02B7C2B
+! S118044400000001FFAC598F2F2DFFAC6100017E2B5FFFB02BC0
+! S118045940FFB02F2DFFAC3F3C000A486DFEEA266C00402F0C65
+! S118046E286C00444EAB00BC00AE9FFC0000000C2F2DFFB06127
+! S118048300FCA82F0F3F3C000A486DFEEA266C00402F0C286CBB
+! S118049800444EAB00C00086DFFC0000000C486DFEEA266C00B2
+! S11804AD402F0C286C00444EAB00A4006C52ADFFAC0CAD000077
+! S11804C2000AFFAC6F82486DFEEA1F3C0001266C00402F0C284D
+! S11804D76C00444EAB0054486DFFB8486DFFB42F0C206C003044
+! S11804EC286C00344E90486DFEEA4227266C00402F0C286C00AA
+! S1180501444EAB005442A72F2D00382F2D00344E4A2B57FFF238
+! S11805162F3C0000000C6000FD002B57FFF22F3C000000646056
+! S118052B00FCF2000A4631202020202020202000023A3A0002D0
+! S1180540293A000000142020202020204361736520202020521D
+! S11805556573756C7441FA0004D1FCFFFFFAA02028003C43FAFB
+! S118056A0004D3FC000001D645FA0004D5FC0000025E260A58D2
+! S118057F8AD0885580222800566600002E2408265AD5B0B8008F
+! S1180594B5C06DF6220992882141005642812648D25BB7C96D2E
+! S11805A9FA4441D368005A123C00016000000442411F4100048B
+! S11805BE2F68003400062F49000A96892F43000E4E754E56FFCC
+! S11805D3F0202E000847FA0004D7FC000001A6220B41FA00049E
+! S11805E8D1FC000001B62D58FFF02D58FFF42D58FFF82D50FF92
+! S11805FDFC53807408B4806500012C41FA0004D1FC0000000EBA
+! S1180612D080303008004EFB00020012002200320042004800DC
+! S118062758006C00A000DC41FA0004D1FC0000011820106000C5
+! S118063C010247FA0004D7FC0000010C200B600000F241FA00C5
+! S118065104D1FC000001102010600000E22001600000DC47FA9E
+! S11806660004D7FC00000120200B600000CC43FA0004D3FC001C
+! S118067B0000FA41E9000C2010600000B8242EFFF447FA000464
+! S1180690D7FC000000FEB48B6600001247FA0004D7FC000001B0
+! S11806A514200B6000009447FA0004D7FC0000010A200B60005B
+! S11806BA008441FA0004D1FC0000008A205047FA0004D7FC0085
+! S11806CF000082B1CB6600001247FA0004D7FC000000E0200B79
+! S11806E46000005847FA0004D7FC000000D2200B600000484147
+! S11806F9FA0004D1FC0000004E43FA0004D3FC0000003EB3D0FE
+! S118070E6600001247FA0004D7FC000000AE200B6000001E47A4
+! S1180723FA0004D7FC000000A6200B6000000E47FA0004D7FC95
+! S118073800000098200B4E5E4E740004000053756E65000000D8
+! S118074D0007464F74746F00000000000A0000000C50656C6CFD
+! S118076265000000075E5374696E61004B6172696E00000000C0
+! S11807770500000768000000030000076E5075747465004B61BF
+! S118078C6C6C65005374696E613100004B6172696E31000000C1
+! S11807A1000033000007900000001F0000079878797A7A0000D2
+! S11807B64F6C6C650000370038005065746572005376756C6C19
+! S11807CB6F00003900536C75740000000000000000074C000072
+! S11507E007640000077800000780000007A4000007AC34
+! S9030000FC
+diff -c3rpN binutils-2.10.orig/ltmain.sh binutils-2.10/ltmain.sh
+*** binutils-2.10.orig/ltmain.sh Sun Feb 27 16:46:19 2000
+--- binutils-2.10/ltmain.sh Wed Jun 6 01:44:01 2001
+*************** static const void *lt_preloaded_setup()
+*** 2639,2645 ****
+ # 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*|*-*-freebsdelf3.0*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+--- 2639,2645 ----
+ # 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*|*-*-freebsdelf3.0*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
diff --git a/SOURCES/vx-ppc-gcc.2.95.3.diff b/SOURCES/vx-ppc-gcc.2.95.3.diff
new file mode 100755
index 0000000..1c5c8f9
--- /dev/null
+++ b/SOURCES/vx-ppc-gcc.2.95.3.diff
@@ -0,0 +1,25289 @@
+diff -c3rpN gcc-2.95.3.orig/gcc/ChangeLog gcc-2.95.4/gcc/ChangeLog
+*** gcc-2.95.3.orig/gcc/ChangeLog Fri Mar 16 12:52:02 2001
+--- gcc-2.95.4/gcc/ChangeLog Wed Jun 6 01:36:07 2001
+***************
+*** 1,3 ****
+--- 1,129 ----
++ 2001-04-06 Bernd Schmidt <bernds@redhat.com>
++
++ 2000-10-17 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
++ * function.c (locate_and_pad_parm): Don't align stack unconditionally.
++
++ Thu Oct 28 10:20:02 1999 Geoffrey Keating <geoffk@cygnus.com>
++ * config/rs6000/rs6000.md (movsf): Don't convert a SUBREG
++ of the function return register into a plain REG until
++ after function inlining is done.
++
++ 2001-04-04 Bernd Schmidt <bernds@redhat.com>
++
++ Fri Nov 5 10:07:25 1999 Nick Clifton <nickc@cygnus.com>
++ * function.c (is_addressof): New function. Returns true if
++ the given piece of RTL is an ADDRESSOF.
++ (purge_addressof_1): Make boolean. Return false if the
++ ADDRESSOFs could not be purged.
++ (purge_addressof): If ADDRESSOFs could not be purged from the
++ notes attached to an insn, remove the offending note(s),
++ unless they are attached to a libcall.
++
++ 2001-04-03 Bernd Schmidt <bernds@redhat.com>
++
++ 2001-03-16 Jakub Jelinek <jakub@redhat.com>
++ * crtstuff.c (init_dummy): Use CRT_END_INIT_DUMMY if defined.
++ Remove ia32 linux PIC kludge and move it...
++ * config/i386/linux.h (CRT_END_INIT_DUMMY): ...here.
++
++ * loop.c (combine_movables): Restrict combinations of constants with
++ different modes so that we don't introduce SUBREGs into memory
++ addresses.
++
++ 2001-02-02 Philip Blundell <philb@gnu.org>
++ * arm/linux-elf.h (MAKE_DECL_ONE_ONLY, UNIQUE_SECTION_P): Define.
++ (UNIQUE_SECTION): Define.
++
++ Wed Aug 25 15:27:22 1999 Gavin Romig-Koch <gavin@cygnus.com>
++ * combine.c (nonzero_bits) : Allow single-ly set registers to be
++ anywere in the function only if they are pseudos and set before
++ being used (not live at the start of the function).
++ (num_sign_bit_copies) : Same.
++ (get_last_value_validate) : Same.
++ (get_last_value) : Same.
++
++ Fri Mar 3 12:49:28 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
++ * reload1.c (reload_combine_note_use): Handle return register USEs.
++ REG case: Handle multi-hard-register hard regs.
++
++ 2001-03-30 Bernd Schmidt <bernds@redhat.com>
++
++ * jump.c (delete_barrier_successors): Fix error in last change.
++
++ * reload1.c (delete_output_reload): Call eliminate_regs on substed.
++ (reload_as_needed): Call update_eliminable_offsets a bit later.
++
++ * final.c (cleanup_subreg_operands): Also clean up inside MEMs.
++
++ Mon Oct 4 02:31:20 1999 Mark Mitchell <mark@codesourcery.com>
++ * mips.md: Define conditional move patterns for floating point
++ operands and DI mode conditions.
++
++ 2000-11-25 Jakub Jelinek <jakub@redhat.com>
++ * config/sparc/sparc.md (muldi3_v8plus): Remove H constraint.
++ Handle CONST_INT as second argument.
++
++ 2001-03-28 Bernd Schmidt <bernds@redhat.com>
++
++ * flow.c (propagate_block): When trying to delete a case vector, cope
++ if its label has LABEL_PRESERVE_P set.
++ * jump.c (jump_optimize_1): Move call to delete_barrier_successors to
++ a point where JUMP_LABELS and LABEL_NUSES are set up properly.
++ (delete_barrier_successors): If deleting a table jump, delete the case
++ vector as well.
++ * varasm.c (force_const_mem): If we have a label, set LABEL_PRESERVE_P
++ so it won't get deleted.
++
++ Tue Mar 20 18:31:48 2001 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
++
++ 1999-11-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
++ * c-lex.c (yylex): With -Wtraditional, when the ANSI type of an
++ integer constant does not match the traditional type, limit the
++ warnings to cases where the base of the type is ten.
++
++ * invoke.texi (-Wtraditional): Document it.
++
++ 2001-03-20 David O'Brien <obrien@FreeBSD.org>
++
++ from 2000-07-12 Zack Weinberg <zack@wolery.cumb.org>
++ * final.c (profile_function): Do not emit profile counters in
++ the data section, if NO_PROFILE_COUNTERS is defined.
++ * tm.texi: Document NO_PROFILE_COUNTERS. Update doc for
++ FUNCTION_PROFILER.
++
++ from 2000-10-02 David O'Brien <obrien@dragon.nuxi.com>
++ * config/i386/freebsd.h (NO_PROFILE_COUNTERS): Define.
++
++ 2001-03-19 Bernd Schmidt <bernds@redhat.com>
++
++ * version.c: Bump.
++
++ 2000-01-18 Martin v. Löwis <loewis@informatik.hu-berlin.de>
++ * c-parse.in (SAVE_WARN_FLAGS): Create an INTEGER_CST.
++ (RESTORE_WARN_FLAGS): Unpack it.
++ Change semantic type of extension to ttype.
++ * c-common.c (split_specs_attrs): Expect an INTEGER_CST.
++ * c-parse.y, c-parse.c, objc/objc-parse.y,
++ objc/objc-parse.c: Regenerate.
++
++ Wed Sep 1 09:12:02 1999 Jim Kingdon <http://developer.redhat.com>
++ * c-parse.in: save and restore warn_pointer_arith on __extension__
++ along with pedantic.
++ (SAVE_WARN_FLAGS, RESTORE_WARN_FLAGS): Added.
++ Set the type of extension to itype rather than $<itype>1 kludge.
++ * extend.texi (Alternate Keywords): Adjust documentation.
++
++ Bring back the sjlj eh fixes.
++ * expr.c (expand_builtin_setjmp_setup): New.
++ (expand_builtin_setjmp_receiver): New.
++ (expand_builtin_setjmp): Split out _setup and _receiver functions.
++ Move argument parsing in from ...
++ (expand_builtin): ... here.
++ * except.c (receive_exception_label): Branch around receiver
++ unless new-style exceptions. Call expand_builtin_setjmp_receiver.
++ (start_dynamic_handler): Call expand_builtin_setjmp_setup.
++ * expr.h: Update builtin setjmp decls.
++
+ Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
+
+ * gcc-2.95.3 Released.
+diff -c3rpN gcc-2.95.3.orig/gcc/c-common.c gcc-2.95.4/gcc/c-common.c
+*** gcc-2.95.3.orig/gcc/c-common.c Tue Sep 7 09:11:16 1999
+--- gcc-2.95.4/gcc/c-common.c Wed Jun 6 01:36:02 2001
+*************** split_specs_attrs (specs_attrs, declspec
+*** 965,970 ****
+--- 965,979 ----
+ {
+ tree t, s, a, next, specs, attrs;
+
++ /* This can happen after an __extension__ in pedantic mode. */
++ if (specs_attrs != NULL_TREE
++ && TREE_CODE (specs_attrs) == INTEGER_CST)
++ {
++ *declspecs = NULL_TREE;
++ *prefix_attributes = NULL_TREE;
++ return;
++ }
++
+ /* This can happen in c++ (eg: decl: typespec initdecls ';'). */
+ if (specs_attrs != NULL_TREE
+ && TREE_CODE (specs_attrs) != TREE_LIST)
+diff -c3rpN gcc-2.95.3.orig/gcc/c-gperf.h gcc-2.95.4/gcc/c-gperf.h
+*** gcc-2.95.3.orig/gcc/c-gperf.h Wed Mar 31 08:43:52 1999
+--- gcc-2.95.4/gcc/c-gperf.h Wed Jun 6 01:36:02 2001
+***************
+*** 1,5 ****
+ /* C code produced by gperf version 2.7.1 (19981006 egcs) */
+! /* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ./c-parse.gperf */
+ /* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */
+ struct resword { const char *name; short token; enum rid rid; };
+
+--- 1,5 ----
+ /* C code produced by gperf version 2.7.1 (19981006 egcs) */
+! /* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ /gcc.dev/gcc-2.95.4/gcc/c-parse.gperf */
+ /* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */
+ struct resword { const char *name; short token; enum rid rid; };
+
+diff -c3rpN gcc-2.95.3.orig/gcc/c-lex.c gcc-2.95.4/gcc/c-lex.c
+*** gcc-2.95.3.orig/gcc/c-lex.c Sat Mar 20 19:21:23 1999
+--- gcc-2.95.4/gcc/c-lex.c Wed Jun 6 01:36:02 2001
+*************** yylex ()
+*** 1812,1818 ****
+
+ type = flag_traditional ? traditional_type : ansi_type;
+
+! if (warn_traditional && traditional_type != ansi_type)
+ {
+ if (TYPE_PRECISION (traditional_type)
+ != TYPE_PRECISION (ansi_type))
+--- 1812,1822 ----
+
+ type = flag_traditional ? traditional_type : ansi_type;
+
+! /* We assume that constants specified in a non-decimal
+! base are bit patterns, and that the programmer really
+! meant what they wrote. */
+! if (warn_traditional && base == 10
+! && traditional_type != ansi_type)
+ {
+ if (TYPE_PRECISION (traditional_type)
+ != TYPE_PRECISION (ansi_type))
+diff -c3rpN gcc-2.95.3.orig/gcc/c-parse.c gcc-2.95.4/gcc/c-parse.c
+*** gcc-2.95.3.orig/gcc/c-parse.c Mon Apr 26 23:35:53 1999
+--- gcc-2.95.4/gcc/c-parse.c Wed Jun 6 01:36:02 2001
+***************
+*** 1,69 ****
+
+ /* A Bison parser, made from c-parse.y
+! by GNU Bison version 1.25
+! */
+
+ #define YYBISON 1 /* Identify Bison output. */
+
+! #define IDENTIFIER 258
+! #define TYPENAME 259
+! #define SCSPEC 260
+! #define TYPESPEC 261
+! #define TYPE_QUAL 262
+! #define CONSTANT 263
+! #define STRING 264
+! #define ELLIPSIS 265
+! #define SIZEOF 266
+! #define ENUM 267
+! #define STRUCT 268
+! #define UNION 269
+! #define IF 270
+! #define ELSE 271
+! #define WHILE 272
+! #define DO 273
+! #define FOR 274
+! #define SWITCH 275
+! #define CASE 276
+! #define DEFAULT 277
+! #define BREAK 278
+! #define CONTINUE 279
+! #define RETURN 280
+! #define GOTO 281
+! #define ASM_KEYWORD 282
+! #define TYPEOF 283
+! #define ALIGNOF 284
+! #define ATTRIBUTE 285
+! #define EXTENSION 286
+! #define LABEL 287
+! #define REALPART 288
+! #define IMAGPART 289
+! #define ASSIGN 290
+! #define OROR 291
+! #define ANDAND 292
+! #define EQCOMPARE 293
+! #define ARITHCOMPARE 294
+! #define LSHIFT 295
+! #define RSHIFT 296
+! #define UNARY 297
+! #define PLUSPLUS 298
+! #define MINUSMINUS 299
+! #define HYPERUNARY 300
+! #define POINTSAT 301
+! #define INTERFACE 302
+! #define IMPLEMENTATION 303
+! #define END 304
+! #define SELECTOR 305
+! #define DEFS 306
+! #define ENCODE 307
+! #define CLASSNAME 308
+! #define PUBLIC 309
+! #define PRIVATE 310
+! #define PROTECTED 311
+! #define PROTOCOL 312
+! #define OBJECTNAME 313
+! #define CLASS 314
+! #define ALIAS 315
+! #define OBJC_STRING 316
+
+ #line 56 "c-parse.y"
+
+--- 1,68 ----
+
+ /* A Bison parser, made from c-parse.y
+! by GNU Bison version 1.28 */
+
+ #define YYBISON 1 /* Identify Bison output. */
+
+! #define IDENTIFIER 257
+! #define TYPENAME 258
+! #define SCSPEC 259
+! #define TYPESPEC 260
+! #define TYPE_QUAL 261
+! #define CONSTANT 262
+! #define STRING 263
+! #define ELLIPSIS 264
+! #define SIZEOF 265
+! #define ENUM 266
+! #define STRUCT 267
+! #define UNION 268
+! #define IF 269
+! #define ELSE 270
+! #define WHILE 271
+! #define DO 272
+! #define FOR 273
+! #define SWITCH 274
+! #define CASE 275
+! #define DEFAULT 276
+! #define BREAK 277
+! #define CONTINUE 278
+! #define RETURN 279
+! #define GOTO 280
+! #define ASM_KEYWORD 281
+! #define TYPEOF 282
+! #define ALIGNOF 283
+! #define ATTRIBUTE 284
+! #define EXTENSION 285
+! #define LABEL 286
+! #define REALPART 287
+! #define IMAGPART 288
+! #define ASSIGN 289
+! #define OROR 290
+! #define ANDAND 291
+! #define EQCOMPARE 292
+! #define ARITHCOMPARE 293
+! #define LSHIFT 294
+! #define RSHIFT 295
+! #define UNARY 296
+! #define PLUSPLUS 297
+! #define MINUSMINUS 298
+! #define HYPERUNARY 299
+! #define POINTSAT 300
+! #define INTERFACE 301
+! #define IMPLEMENTATION 302
+! #define END 303
+! #define SELECTOR 304
+! #define DEFS 305
+! #define ENCODE 306
+! #define CLASSNAME 307
+! #define PUBLIC 308
+! #define PRIVATE 309
+! #define PROTECTED 310
+! #define PROTOCOL 311
+! #define OBJECTNAME 312
+! #define CLASS 313
+! #define ALIAS 314
+! #define OBJC_STRING 315
+
+ #line 56 "c-parse.y"
+
+*************** static tree declspec_stack;
+*** 119,124 ****
+--- 118,134 ----
+ /* 1 if we explained undeclared var errors. */
+ static int undeclared_variable_notice;
+
++ /* For __extension__, save/restore the warning flags which are
++ controlled by __extension__. */
++ #define SAVE_WARN_FLAGS() \
++ build_int_2 (pedantic | (warn_pointer_arith << 1), 0)
++ #define RESTORE_WARN_FLAGS(tval) \
++ do { \
++ int val = TREE_INT_CST_LOW (tval); \
++ pedantic = val & 1; \
++ warn_pointer_arith = (val >> 1) & 1; \
++ } while (0)
++
+
+ /* Tell yyparse how to print a token's value, if yydebug is set. */
+
+*************** extern void yyprint PROTO ((FILE *, in
+*** 138,144 ****
+ #define YYFLAG -32768
+ #define YYNTBASE 84
+
+! #define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 241)
+
+ static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+--- 148,154 ----
+ #define YYFLAG -32768
+ #define YYNTBASE 84
+
+! #define YYTRANSLATE(x) ((unsigned)(x) <= 315 ? yytranslate[x] : 241)
+
+ static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+*************** static const char yytranslate[] = {
+*** 166,178 ****
+ 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, 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,
+! 39, 40, 44, 45, 46, 47, 53, 54, 55, 56,
+! 57, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+! 70, 71, 72, 73, 74, 75
+ };
+
+ #if YYDEBUG != 0
+--- 176,188 ----
+ 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, 39,
+! 40, 44, 45, 46, 47, 53, 54, 55, 56, 57,
+! 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+! 71, 72, 73, 74, 75
+ };
+
+ #if YYDEBUG != 0
+*************** static const short yyrhs[] = { -1,
+*** 357,403 ****
+
+ #if YYDEBUG != 0
+ static const short yyrline[] = { 0,
+! 233, 238, 252, 254, 254, 255, 257, 259, 260, 268,
+! 272, 283, 288, 293, 295, 297, 298, 299, 304, 311,
+! 313, 318, 323, 329, 331, 336, 341, 347, 349, 354,
+! 361, 363, 366, 368, 370, 372, 374, 376, 378, 382,
+! 386, 389, 392, 395, 399, 401, 404, 407, 411, 439,
+! 445, 448, 451, 454, 456, 460, 464, 468, 470, 473,
+! 477, 504, 506, 508, 510, 512, 514, 516, 518, 520,
+! 522, 524, 526, 528, 530, 534, 536, 540, 542, 545,
+! 549, 551, 558, 561, 569, 580, 679, 680, 682, 688,
+! 690, 704, 727, 729, 731, 735, 741, 743, 748, 750,
+! 755, 757, 758, 768, 773, 775, 776, 777, 784, 790,
+! 795, 798, 806, 811, 813, 814, 815, 822, 833, 837,
+! 843, 848, 853, 858, 860, 862, 871, 874, 878, 880,
+! 882, 887, 891, 894, 898, 901, 903, 915, 918, 920,
+! 922, 926, 930, 932, 935, 948, 951, 955, 957, 965,
+! 966, 967, 971, 973, 979, 980, 981, 984, 986, 989,
+! 991, 994, 997, 1003, 1010, 1012, 1019, 1026, 1029, 1036,
+! 1039, 1043, 1046, 1050, 1055, 1058, 1062, 1065, 1067, 1069,
+! 1071, 1078, 1080, 1081, 1082, 1087, 1089, 1094, 1102, 1107,
+! 1111, 1114, 1116, 1121, 1123, 1124, 1127, 1127, 1130, 1133,
+! 1135, 1137, 1140, 1142, 1145, 1151, 1153, 1157, 1168, 1176,
+! 1180, 1191, 1199, 1206, 1208, 1213, 1216, 1221, 1223, 1225,
+! 1232, 1234, 1242, 1248, 1253, 1255, 1257, 1264, 1266, 1272,
+! 1278, 1280, 1282, 1287, 1289, 1296, 1298, 1301, 1304, 1308,
+! 1311, 1315, 1318, 1322, 1327, 1329, 1333, 1335, 1337, 1339,
+! 1343, 1345, 1348, 1351, 1354, 1357, 1361, 1363, 1366, 1368,
+! 1373, 1376, 1381, 1383, 1385, 1399, 1406, 1411, 1417, 1422,
+! 1424, 1429, 1431, 1435, 1439, 1443, 1453, 1455, 1460, 1465,
+! 1468, 1472, 1475, 1479, 1482, 1485, 1488, 1492, 1495, 1499,
+! 1503, 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1521, 1529,
+! 1537, 1539, 1541, 1545, 1547, 1550, 1553, 1564, 1566, 1571,
+! 1573, 1576, 1590, 1593, 1596, 1598, 1600, 1608, 1616, 1627,
+! 1632, 1635, 1649, 1658, 1662, 1666, 1670, 1676, 1680, 1685,
+! 1688, 1693, 1696, 1697, 1714, 1719, 1722, 1734, 1736, 1746,
+! 1756, 1757, 1765, 1768, 1780, 1784, 1801, 1811, 1820, 1825,
+! 1830, 1835, 1839, 1843, 1854, 1861, 1868, 1875, 1886, 1892,
+! 1895, 1900, 1923, 1957, 1988, 2019, 2034, 2048, 2052, 2056,
+! 2059, 2064, 2066, 2069, 2071, 2075, 2080, 2083, 2089, 2094,
+! 2099, 2101, 2110, 2111, 2117, 2119, 2129, 2131, 2135, 2138,
+! 2144, 2154, 2163, 2172, 2182, 2196, 2201, 2206, 2208, 2217,
+! 2220, 2225, 2228, 2232
+ };
+ #endif
+
+--- 367,413 ----
+
+ #if YYDEBUG != 0
+ static const short yyrline[] = { 0,
+! 244, 249, 263, 265, 265, 266, 268, 270, 271, 279,
+! 283, 294, 299, 304, 306, 308, 309, 310, 315, 322,
+! 324, 329, 334, 340, 342, 347, 352, 358, 360, 365,
+! 372, 374, 377, 379, 381, 383, 385, 387, 389, 393,
+! 397, 400, 403, 406, 410, 412, 415, 418, 422, 450,
+! 456, 459, 462, 465, 467, 471, 475, 479, 481, 484,
+! 488, 515, 517, 519, 521, 523, 525, 527, 529, 531,
+! 533, 535, 537, 539, 541, 545, 547, 551, 553, 556,
+! 560, 562, 569, 572, 580, 591, 690, 691, 693, 699,
+! 701, 715, 738, 740, 742, 746, 752, 754, 759, 761,
+! 766, 768, 769, 779, 784, 786, 787, 788, 795, 801,
+! 806, 809, 817, 822, 824, 825, 826, 833, 844, 848,
+! 854, 859, 864, 869, 871, 873, 882, 885, 889, 891,
+! 893, 898, 902, 905, 909, 912, 914, 926, 929, 931,
+! 933, 937, 941, 943, 946, 959, 962, 966, 968, 976,
+! 977, 978, 982, 984, 990, 991, 992, 995, 997, 1000,
+! 1002, 1005, 1008, 1014, 1021, 1023, 1030, 1037, 1040, 1047,
+! 1050, 1054, 1057, 1061, 1066, 1069, 1073, 1076, 1078, 1080,
+! 1082, 1089, 1091, 1092, 1093, 1098, 1100, 1105, 1113, 1118,
+! 1122, 1125, 1127, 1132, 1134, 1135, 1138, 1138, 1141, 1144,
+! 1146, 1148, 1151, 1153, 1156, 1162, 1164, 1168, 1179, 1187,
+! 1191, 1202, 1210, 1217, 1219, 1224, 1227, 1232, 1234, 1236,
+! 1243, 1245, 1253, 1259, 1264, 1266, 1268, 1275, 1277, 1283,
+! 1289, 1291, 1293, 1298, 1300, 1307, 1309, 1312, 1315, 1319,
+! 1322, 1326, 1329, 1333, 1338, 1340, 1344, 1346, 1348, 1350,
+! 1354, 1356, 1359, 1362, 1365, 1368, 1372, 1374, 1377, 1379,
+! 1384, 1387, 1392, 1394, 1396, 1410, 1417, 1422, 1428, 1433,
+! 1435, 1440, 1442, 1446, 1450, 1454, 1464, 1466, 1471, 1476,
+! 1479, 1483, 1486, 1490, 1493, 1496, 1499, 1503, 1506, 1510,
+! 1514, 1516, 1518, 1520, 1522, 1524, 1526, 1528, 1532, 1540,
+! 1548, 1550, 1552, 1556, 1558, 1561, 1564, 1575, 1577, 1582,
+! 1584, 1587, 1601, 1604, 1607, 1609, 1611, 1619, 1627, 1638,
+! 1643, 1646, 1660, 1669, 1673, 1677, 1681, 1687, 1691, 1696,
+! 1699, 1704, 1707, 1708, 1725, 1730, 1733, 1745, 1747, 1757,
+! 1767, 1768, 1776, 1779, 1791, 1795, 1812, 1822, 1831, 1836,
+! 1841, 1846, 1850, 1854, 1865, 1872, 1879, 1886, 1897, 1903,
+! 1906, 1911, 1934, 1968, 1999, 2030, 2045, 2059, 2063, 2067,
+! 2070, 2075, 2077, 2080, 2082, 2086, 2091, 2094, 2100, 2105,
+! 2110, 2112, 2121, 2122, 2128, 2130, 2140, 2142, 2146, 2149,
+! 2155, 2165, 2174, 2183, 2193, 2207, 2212, 2217, 2219, 2228,
+! 2231, 2236, 2239, 2243
+ };
+ #endif
+
+*************** static const short yycheck[] = { 38,
+*** 1205,1211 ****
+ 50, 51, 52
+ };
+ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+! #line 3 "/usr/lib/bison.simple"
+
+ /* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+--- 1215,1222 ----
+ 50, 51, 52
+ };
+ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+! #line 3 "/usr/share/bison.simple"
+! /* This file comes from bison-1.28. */
+
+ /* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+*************** static const short yycheck[] = { 38,
+*** 1222,1267 ****
+
+ 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., 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. */
+
+! #ifndef alloca
+ #ifdef __GNUC__
+ #define alloca __builtin_alloca
+ #else /* not GNU C. */
+! #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+ #include <alloca.h>
+ #else /* not sparc */
+! #if defined (MSDOS) && !defined (__TURBOC__)
+ #include <malloc.h>
+ #else /* not MSDOS, or __TURBOC__ */
+ #if defined(_AIX)
+! #include <malloc.h>
+ #pragma 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 /* not _AIX */
+ #endif /* not MSDOS, or __TURBOC__ */
+! #endif /* not sparc. */
+! #endif /* not GNU C. */
+! #endif /* alloca not defined. */
+
+! /* 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
+--- 1233,1298 ----
+
+ 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. */
+
+ /* 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 */
+ #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
+ #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. */
+ #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> */
+ #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
+ #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 */
+
+! #ifdef YYSTACK_USE_ALLOCA
+! #define YYSTACK_ALLOC alloca
+! #else
+! #define YYSTACK_ALLOC malloc
+! #endif
+
+ /* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+*************** void *alloca ();
+*** 1271,1278 ****
+ #define yyclearin (yychar = YYEMPTY)
+ #define YYEMPTY -2
+ #define YYEOF 0
+! #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
+--- 1302,1309 ----
+ #define yyclearin (yychar = YYEMPTY)
+ #define YYEMPTY -2
+ #define YYEOF 0
+! #define YYACCEPT goto yyacceptlab
+! #define YYABORT goto yyabortlab
+ #define YYERROR goto yyerrlab1
+ /* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+*************** int yydebug; /* nonzero means print p
+*** 1353,1364 ****
+ #ifndef YYMAXDEPTH
+ #define YYMAXDEPTH 10000
+ #endif
+-
+- /* 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++ */
+--- 1384,1395 ----
+ #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. */
++
+ #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++ */
+*************** static void
+*** 1370,1376 ****
+ __yy_memcpy (to, from, count)
+ char *to;
+ char *from;
+! int count;
+ {
+ register char *f = from;
+ register char *t = to;
+--- 1401,1407 ----
+ __yy_memcpy (to, from, count)
+ char *to;
+ char *from;
+! unsigned int count;
+ {
+ register char *f = from;
+ register char *t = to;
+*************** __yy_memcpy (to, from, count)
+*** 1385,1394 ****
+ /* 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, int count)
+ {
+- register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+--- 1416,1425 ----
+ /* 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)
+ {
+ register char *t = to;
++ register char *f = from;
+ register int i = count;
+
+ while (i-- > 0)
+*************** __yy_memcpy (char *to, char *from, int c
+*** 1398,1404 ****
+ #endif
+ #endif
+
+! #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 *.
+--- 1429,1435 ----
+ #endif
+ #endif
+
+! #line 217 "/usr/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 *.
+*************** __yy_memcpy (char *to, char *from, int c
+*** 1419,1424 ****
+--- 1450,1464 ----
+ #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
+*************** yyparse(YYPARSE_PARAM_ARG)
+*** 1447,1452 ****
+--- 1487,1493 ----
+ #endif
+
+ int yystacksize = YYINITDEPTH;
++ int yyfree_stacks = 0;
+
+ #ifdef YYPURE
+ int yychar;
+*************** yynewstate:
+*** 1531,1548 ****
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+! 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 *) alloca (yystacksize * sizeof (*yylsp));
+! __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
+ #endif
+ #endif /* no yyoverflow */
+
+--- 1572,1603 ----
+ 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));
+ #ifdef YYLSP_NEEDED
+! yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+! __yy_memcpy ((char *)yyls, (char *)yyls1,
+! size * (unsigned int) sizeof (*yylsp));
+ #endif
+ #endif /* no yyoverflow */
+
+*************** yyreduce:
+*** 1703,1716 ****
+ switch (yyn) {
+
+ case 1:
+! #line 234 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ ;
+ break;}
+ case 2:
+! #line 239 "c-parse.y"
+ {
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+--- 1758,1771 ----
+ switch (yyn) {
+
+ case 1:
+! #line 245 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ ;
+ break;}
+ case 2:
+! #line 250 "c-parse.y"
+ {
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+*************** case 2:
+*** 1720,1734 ****
+ ;
+ break;}
+ case 3:
+! #line 253 "c-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 5:
+! #line 254 "c-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 9:
+! #line 261 "c-parse.y"
+ { STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+--- 1775,1789 ----
+ ;
+ break;}
+ case 3:
+! #line 264 "c-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 5:
+! #line 265 "c-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 9:
+! #line 272 "c-parse.y"
+ { STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+*************** case 9:
+*** 1738,1748 ****
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 10:
+! #line 269 "c-parse.y"
+! { pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 11:
+! #line 274 "c-parse.y"
+ { if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+--- 1793,1803 ----
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 10:
+! #line 280 "c-parse.y"
+! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 11:
+! #line 285 "c-parse.y"
+ { if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+*************** case 11:
+*** 1754,1798 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 12:
+! #line 284 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 13:
+! #line 289 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 14:
+! #line 294 "c-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 15:
+! #line 296 "c-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 18:
+! #line 300 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
+ break;}
+ case 19:
+! #line 306 "c-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 20:
+! #line 311 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 21:
+! #line 313 "c-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 1809,1853 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 12:
+! #line 295 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 13:
+! #line 300 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 14:
+! #line 305 "c-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 15:
+! #line 307 "c-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 18:
+! #line 311 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
+ break;}
+ case 19:
+! #line 317 "c-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 20:
+! #line 322 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 21:
+! #line 324 "c-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 21:
+*** 1800,1824 ****
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 22:
+! #line 319 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 23:
+! #line 324 "c-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 24:
+! #line 329 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 25:
+! #line 331 "c-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 1855,1879 ----
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 22:
+! #line 330 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 23:
+! #line 335 "c-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 24:
+! #line 340 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 25:
+! #line 342 "c-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 25:
+*** 1826,1850 ****
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 26:
+! #line 337 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 27:
+! #line 342 "c-parse.y"
+ { if (! start_function (NULL_TREE, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 28:
+! #line 347 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 29:
+! #line 349 "c-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 1881,1905 ----
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 26:
+! #line 348 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 27:
+! #line 353 "c-parse.y"
+ { if (! start_function (NULL_TREE, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 28:
+! #line 358 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 29:
+! #line 360 "c-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 29:
+*** 1852,1923 ****
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 30:
+! #line 355 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 33:
+! #line 367 "c-parse.y"
+ { yyval.code = ADDR_EXPR; ;
+ break;}
+ case 34:
+! #line 369 "c-parse.y"
+ { yyval.code = NEGATE_EXPR; ;
+ break;}
+ case 35:
+! #line 371 "c-parse.y"
+ { yyval.code = CONVERT_EXPR; ;
+ break;}
+ case 36:
+! #line 373 "c-parse.y"
+ { yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+ case 37:
+! #line 375 "c-parse.y"
+ { yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+ case 38:
+! #line 377 "c-parse.y"
+ { yyval.code = BIT_NOT_EXPR; ;
+ break;}
+ case 39:
+! #line 379 "c-parse.y"
+ { yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+ case 40:
+! #line 383 "c-parse.y"
+ { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
+ break;}
+ case 41:
+! #line 388 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 43:
+! #line 394 "c-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 44:
+! #line 396 "c-parse.y"
+ { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 46:
+! #line 402 "c-parse.y"
+ { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+ case 47:
+! #line 405 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 48:
+! #line 408 "c-parse.y"
+ { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
+ overflow_warning (yyval.ttype); ;
+ break;}
+ case 49:
+! #line 412 "c-parse.y"
+ { tree label = lookup_label (yyvsp[0].ttype);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+--- 1907,1978 ----
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 30:
+! #line 366 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 33:
+! #line 378 "c-parse.y"
+ { yyval.code = ADDR_EXPR; ;
+ break;}
+ case 34:
+! #line 380 "c-parse.y"
+ { yyval.code = NEGATE_EXPR; ;
+ break;}
+ case 35:
+! #line 382 "c-parse.y"
+ { yyval.code = CONVERT_EXPR; ;
+ break;}
+ case 36:
+! #line 384 "c-parse.y"
+ { yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+ case 37:
+! #line 386 "c-parse.y"
+ { yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+ case 38:
+! #line 388 "c-parse.y"
+ { yyval.code = BIT_NOT_EXPR; ;
+ break;}
+ case 39:
+! #line 390 "c-parse.y"
+ { yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+ case 40:
+! #line 394 "c-parse.y"
+ { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
+ break;}
+ case 41:
+! #line 399 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 43:
+! #line 405 "c-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 44:
+! #line 407 "c-parse.y"
+ { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 46:
+! #line 413 "c-parse.y"
+ { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+ case 47:
+! #line 416 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 48:
+! #line 419 "c-parse.y"
+ { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
+ overflow_warning (yyval.ttype); ;
+ break;}
+ case 49:
+! #line 423 "c-parse.y"
+ { tree label = lookup_label (yyvsp[0].ttype);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+*************** case 49:
+*** 1932,1938 ****
+ ;
+ break;}
+ case 50:
+! #line 440 "c-parse.y"
+ { skip_evaluation--;
+ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+ && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+--- 1987,1993 ----
+ ;
+ break;}
+ case 50:
+! #line 451 "c-parse.y"
+ { skip_evaluation--;
+ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+ && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+*************** case 50:
+*** 1940,1988 ****
+ yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+ break;}
+ case 51:
+! #line 446 "c-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 52:
+! #line 449 "c-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
+ break;}
+ case 53:
+! #line 452 "c-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 54:
+! #line 455 "c-parse.y"
+ { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 55:
+! #line 457 "c-parse.y"
+ { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 56:
+! #line 461 "c-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 57:
+! #line 465 "c-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 59:
+! #line 471 "c-parse.y"
+ { tree type = groktypename (yyvsp[-2].ttype);
+ yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+ break;}
+ case 60:
+! #line 474 "c-parse.y"
+ { start_init (NULL_TREE, NULL, 0);
+ yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
+ really_start_incremental_init (yyvsp[-2].ttype); ;
+ break;}
+ case 61:
+! #line 478 "c-parse.y"
+ { char *name;
+ tree result = pop_init_level (0);
+ tree type = yyvsp[-5].ttype;
+--- 1995,2043 ----
+ yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+ break;}
+ case 51:
+! #line 457 "c-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 52:
+! #line 460 "c-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
+ break;}
+ case 53:
+! #line 463 "c-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 54:
+! #line 466 "c-parse.y"
+ { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 55:
+! #line 468 "c-parse.y"
+ { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 56:
+! #line 472 "c-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 57:
+! #line 476 "c-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 59:
+! #line 482 "c-parse.y"
+ { tree type = groktypename (yyvsp[-2].ttype);
+ yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+ break;}
+ case 60:
+! #line 485 "c-parse.y"
+ { start_init (NULL_TREE, NULL, 0);
+ yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
+ really_start_incremental_init (yyvsp[-2].ttype); ;
+ break;}
+ case 61:
+! #line 489 "c-parse.y"
+ { char *name;
+ tree result = pop_init_level (0);
+ tree type = yyvsp[-5].ttype;
+*************** case 61:
+*** 2009,2098 ****
+ ;
+ break;}
+ case 63:
+! #line 507 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 64:
+! #line 509 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 65:
+! #line 511 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 66:
+! #line 513 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 67:
+! #line 515 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 68:
+! #line 517 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 69:
+! #line 519 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 70:
+! #line 521 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 71:
+! #line 523 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 72:
+! #line 525 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 73:
+! #line 527 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 74:
+! #line 529 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 75:
+! #line 531 "c-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 76:
+! #line 534 "c-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 77:
+! #line 537 "c-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 78:
+! #line 540 "c-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 79:
+! #line 543 "c-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 80:
+! #line 546 "c-parse.y"
+ { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
+ - (yyvsp[-4].ttype == boolean_false_node)); ;
+ break;}
+ case 81:
+! #line 549 "c-parse.y"
+ { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 82:
+! #line 552 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+--- 2064,2153 ----
+ ;
+ break;}
+ case 63:
+! #line 518 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 64:
+! #line 520 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 65:
+! #line 522 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 66:
+! #line 524 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 67:
+! #line 526 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 68:
+! #line 528 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 69:
+! #line 530 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 70:
+! #line 532 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 71:
+! #line 534 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 72:
+! #line 536 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 73:
+! #line 538 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 74:
+! #line 540 "c-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 75:
+! #line 542 "c-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 76:
+! #line 545 "c-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 77:
+! #line 548 "c-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 78:
+! #line 551 "c-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 79:
+! #line 554 "c-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 80:
+! #line 557 "c-parse.y"
+ { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
+ - (yyvsp[-4].ttype == boolean_false_node)); ;
+ break;}
+ case 81:
+! #line 560 "c-parse.y"
+ { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 82:
+! #line 563 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+*************** case 82:
+*** 2101,2112 ****
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 83:
+! #line 559 "c-parse.y"
+ { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 84:
+! #line 562 "c-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
+ class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
+--- 2156,2167 ----
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 83:
+! #line 570 "c-parse.y"
+ { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 84:
+! #line 573 "c-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
+ class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
+*************** case 84:
+*** 2116,2122 ****
+ ;
+ break;}
+ case 85:
+! #line 570 "c-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
+ /* This inhibits warnings in truthvalue_conversion. */
+--- 2171,2177 ----
+ ;
+ break;}
+ case 85:
+! #line 581 "c-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
+ /* This inhibits warnings in truthvalue_conversion. */
+*************** case 85:
+*** 2127,2133 ****
+ ;
+ break;}
+ case 86:
+! #line 582 "c-parse.y"
+ {
+ yyval.ttype = lastiddecl;
+ if (!yyval.ttype || yyval.ttype == error_mark_node)
+--- 2182,2188 ----
+ ;
+ break;}
+ case 86:
+! #line 593 "c-parse.y"
+ {
+ yyval.ttype = lastiddecl;
+ if (!yyval.ttype || yyval.ttype == error_mark_node)
+*************** case 86:
+*** 2227,2237 ****
+ ;
+ break;}
+ case 88:
+! #line 681 "c-parse.y"
+ { yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+ break;}
+ case 89:
+! #line 683 "c-parse.y"
+ { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+--- 2282,2292 ----
+ ;
+ break;}
+ case 88:
+! #line 692 "c-parse.y"
+ { yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+ break;}
+ case 89:
+! #line 694 "c-parse.y"
+ { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+*************** case 89:
+*** 2239,2249 ****
+ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 90:
+! #line 689 "c-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 91:
+! #line 691 "c-parse.y"
+ { if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+--- 2294,2304 ----
+ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 90:
+! #line 700 "c-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 91:
+! #line 702 "c-parse.y"
+ { if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+*************** case 91:
+*** 2259,2265 ****
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+ case 92:
+! #line 705 "c-parse.y"
+ { tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+--- 2314,2320 ----
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+ case 92:
+! #line 716 "c-parse.y"
+ { tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+*************** case 92:
+*** 2284,2304 ****
+ ;
+ break;}
+ case 93:
+! #line 728 "c-parse.y"
+ { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 94:
+! #line 730 "c-parse.y"
+ { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 95:
+! #line 732 "c-parse.y"
+ {
+ yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 96:
+! #line 736 "c-parse.y"
+ {
+ tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
+
+--- 2339,2359 ----
+ ;
+ break;}
+ case 93:
+! #line 739 "c-parse.y"
+ { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 94:
+! #line 741 "c-parse.y"
+ { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 95:
+! #line 743 "c-parse.y"
+ {
+ yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 96:
+! #line 747 "c-parse.y"
+ {
+ tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
+
+*************** case 96:
+*** 2306,2361 ****
+ ;
+ break;}
+ case 97:
+! #line 742 "c-parse.y"
+ { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 98:
+! #line 744 "c-parse.y"
+ { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 100:
+! #line 751 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 103:
+! #line 760 "c-parse.y"
+ { c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
+ break;}
+ case 104:
+! #line 770 "c-parse.y"
+ { ;
+ break;}
+ case 109:
+! #line 786 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 110:
+! #line 791 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 111:
+! #line 796 "c-parse.y"
+ { shadow_tag_warned (yyvsp[-1].ttype, 1);
+ pedwarn ("empty declaration"); ;
+ break;}
+ case 112:
+! #line 799 "c-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 113:
+! #line 808 "c-parse.y"
+ { ;
+ break;}
+ case 118:
+! #line 823 "c-parse.y"
+ { yyval.itype = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+--- 2361,2416 ----
+ ;
+ break;}
+ case 97:
+! #line 753 "c-parse.y"
+ { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 98:
+! #line 755 "c-parse.y"
+ { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 100:
+! #line 762 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 103:
+! #line 771 "c-parse.y"
+ { c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
+ break;}
+ case 104:
+! #line 781 "c-parse.y"
+ { ;
+ break;}
+ case 109:
+! #line 797 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 110:
+! #line 802 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 111:
+! #line 807 "c-parse.y"
+ { shadow_tag_warned (yyvsp[-1].ttype, 1);
+ pedwarn ("empty declaration"); ;
+ break;}
+ case 112:
+! #line 810 "c-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 113:
+! #line 819 "c-parse.y"
+ { ;
+ break;}
+ case 118:
+! #line 834 "c-parse.y"
+ { yyval.itype = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+*************** case 118:
+*** 2365,2495 ****
+ &current_declspecs, &prefix_attributes); ;
+ break;}
+ case 119:
+! #line 834 "c-parse.y"
+ { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
+ break;}
+ case 120:
+! #line 839 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 121:
+! #line 844 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 122:
+! #line 849 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 123:
+! #line 854 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 124:
+! #line 859 "c-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 125:
+! #line 861 "c-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 126:
+! #line 863 "c-parse.y"
+! { pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 127:
+! #line 873 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 128:
+! #line 875 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 129:
+! #line 879 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 130:
+! #line 881 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 131:
+! #line 883 "c-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 132:
+! #line 888 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 133:
+! #line 893 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 134:
+! #line 895 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 135:
+! #line 900 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 136:
+! #line 902 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 137:
+! #line 904 "c-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 138:
+! #line 917 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 139:
+! #line 919 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 140:
+! #line 921 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 141:
+! #line 923 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 142:
+! #line 928 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 143:
+! #line 931 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 144:
+! #line 933 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 145:
+! #line 936 "c-parse.y"
+ { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+--- 2420,2550 ----
+ &current_declspecs, &prefix_attributes); ;
+ break;}
+ case 119:
+! #line 845 "c-parse.y"
+ { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
+ break;}
+ case 120:
+! #line 850 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 121:
+! #line 855 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 122:
+! #line 860 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 123:
+! #line 865 "c-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 124:
+! #line 870 "c-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 125:
+! #line 872 "c-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 126:
+! #line 874 "c-parse.y"
+! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 127:
+! #line 884 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 128:
+! #line 886 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 129:
+! #line 890 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 130:
+! #line 892 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 131:
+! #line 894 "c-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 132:
+! #line 899 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 133:
+! #line 904 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 134:
+! #line 906 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 135:
+! #line 911 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 136:
+! #line 913 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 137:
+! #line 915 "c-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 138:
+! #line 928 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 139:
+! #line 930 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 140:
+! #line 932 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 141:
+! #line 934 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 142:
+! #line 939 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 143:
+! #line 942 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 144:
+! #line 944 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 145:
+! #line 947 "c-parse.y"
+ { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+*************** case 145:
+*** 2497,2634 ****
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+ case 146:
+! #line 950 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 147:
+! #line 952 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 148:
+! #line 956 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 149:
+! #line 958 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 152:
+! #line 968 "c-parse.y"
+ { /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype); ;
+ break;}
+ case 153:
+! #line 972 "c-parse.y"
+ { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
+ break;}
+ case 154:
+! #line 974 "c-parse.y"
+ { yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+ break;}
+ case 162:
+! #line 996 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 163:
+! #line 998 "c-parse.y"
+ { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 164:
+! #line 1005 "c-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 165:
+! #line 1010 "c-parse.y"
+ { finish_init ();
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 166:
+! #line 1013 "c-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 167:
+! #line 1021 "c-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 168:
+! #line 1026 "c-parse.y"
+ { finish_init ();
+ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 169:
+! #line 1030 "c-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 170:
+! #line 1038 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 171:
+! #line 1040 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 172:
+! #line 1045 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 173:
+! #line 1047 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 174:
+! #line 1052 "c-parse.y"
+ { yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+ case 175:
+! #line 1057 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 176:
+! #line 1059 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 177:
+! #line 1064 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 178:
+! #line 1066 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 179:
+! #line 1068 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+ case 180:
+! #line 1070 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+ case 181:
+! #line 1072 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 187:
+! #line 1090 "c-parse.y"
+ { really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); ;
+ break;}
+ case 188:
+! #line 1095 "c-parse.y"
+ { yyval.ttype = pop_init_level (0);
+ if (yyval.ttype == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+--- 2552,2689 ----
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+ case 146:
+! #line 961 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 147:
+! #line 963 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 148:
+! #line 967 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 149:
+! #line 969 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 152:
+! #line 979 "c-parse.y"
+ { /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype); ;
+ break;}
+ case 153:
+! #line 983 "c-parse.y"
+ { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
+ break;}
+ case 154:
+! #line 985 "c-parse.y"
+ { yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+ break;}
+ case 162:
+! #line 1007 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 163:
+! #line 1009 "c-parse.y"
+ { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 164:
+! #line 1016 "c-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 165:
+! #line 1021 "c-parse.y"
+ { finish_init ();
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 166:
+! #line 1024 "c-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 167:
+! #line 1032 "c-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 168:
+! #line 1037 "c-parse.y"
+ { finish_init ();
+ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 169:
+! #line 1041 "c-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 170:
+! #line 1049 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 171:
+! #line 1051 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 172:
+! #line 1056 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 173:
+! #line 1058 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 174:
+! #line 1063 "c-parse.y"
+ { yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+ case 175:
+! #line 1068 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 176:
+! #line 1070 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 177:
+! #line 1075 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 178:
+! #line 1077 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 179:
+! #line 1079 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+ case 180:
+! #line 1081 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+ case 181:
+! #line 1083 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 187:
+! #line 1101 "c-parse.y"
+ { really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); ;
+ break;}
+ case 188:
+! #line 1106 "c-parse.y"
+ { yyval.ttype = pop_init_level (0);
+ if (yyval.ttype == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+*************** case 188:
+*** 2637,2680 ****
+ pop_momentary_nofree (); ;
+ break;}
+ case 189:
+! #line 1103 "c-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 190:
+! #line 1109 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); ;
+ break;}
+ case 196:
+! #line 1125 "c-parse.y"
+ { set_init_label (yyvsp[-1].ttype); ;
+ break;}
+ case 199:
+! #line 1132 "c-parse.y"
+ { push_init_level (0); ;
+ break;}
+ case 200:
+! #line 1134 "c-parse.y"
+ { process_init_element (pop_init_level (0)); ;
+ break;}
+ case 201:
+! #line 1136 "c-parse.y"
+ { process_init_element (yyvsp[0].ttype); ;
+ break;}
+ case 205:
+! #line 1147 "c-parse.y"
+ { set_init_label (yyvsp[0].ttype); ;
+ break;}
+ case 206:
+! #line 1152 "c-parse.y"
+ { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 207:
+! #line 1154 "c-parse.y"
+ { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+ break;}
+ case 208:
+! #line 1159 "c-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+--- 2692,2735 ----
+ pop_momentary_nofree (); ;
+ break;}
+ case 189:
+! #line 1114 "c-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 190:
+! #line 1120 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); ;
+ break;}
+ case 196:
+! #line 1136 "c-parse.y"
+ { set_init_label (yyvsp[-1].ttype); ;
+ break;}
+ case 199:
+! #line 1143 "c-parse.y"
+ { push_init_level (0); ;
+ break;}
+ case 200:
+! #line 1145 "c-parse.y"
+ { process_init_element (pop_init_level (0)); ;
+ break;}
+ case 201:
+! #line 1147 "c-parse.y"
+ { process_init_element (yyvsp[0].ttype); ;
+ break;}
+ case 205:
+! #line 1158 "c-parse.y"
+ { set_init_label (yyvsp[0].ttype); ;
+ break;}
+ case 206:
+! #line 1163 "c-parse.y"
+ { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 207:
+! #line 1165 "c-parse.y"
+ { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+ break;}
+ case 208:
+! #line 1170 "c-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+*************** case 208:
+*** 2685,2700 ****
+ reinit_parse_for_function (); ;
+ break;}
+ case 209:
+! #line 1168 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 210:
+! #line 1176 "c-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 211:
+! #line 1182 "c-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+--- 2740,2755 ----
+ reinit_parse_for_function (); ;
+ break;}
+ case 209:
+! #line 1179 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 210:
+! #line 1187 "c-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 211:
+! #line 1193 "c-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+*************** case 211:
+*** 2705,2915 ****
+ reinit_parse_for_function (); ;
+ break;}
+ case 212:
+! #line 1191 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 213:
+! #line 1199 "c-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 216:
+! #line 1215 "c-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 217:
+! #line 1217 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 218:
+! #line 1222 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 219:
+! #line 1224 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 220:
+! #line 1226 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 221:
+! #line 1233 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 223:
+! #line 1244 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 224:
+! #line 1249 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
+ if (! flag_isoc9x)
+ error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+ ;
+ break;}
+ case 225:
+! #line 1254 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 226:
+! #line 1256 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 227:
+! #line 1258 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 228:
+! #line 1265 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 230:
+! #line 1274 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 231:
+! #line 1279 "c-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 232:
+! #line 1281 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 233:
+! #line 1283 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
+ if (! flag_isoc9x)
+ error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+ ;
+ break;}
+ case 234:
+! #line 1288 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 235:
+! #line 1290 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 236:
+! #line 1297 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 238:
+! #line 1303 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 239:
+! #line 1305 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 240:
+! #line 1310 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 241:
+! #line 1312 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 242:
+! #line 1317 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 243:
+! #line 1319 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 244:
+! #line 1324 "c-parse.y"
+ { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
+ /* Start scope of tag before parsing components. */
+ ;
+ break;}
+ case 245:
+! #line 1328 "c-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 246:
+! #line 1330 "c-parse.y"
+ { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 247:
+! #line 1334 "c-parse.y"
+ { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 248:
+! #line 1336 "c-parse.y"
+ { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+ break;}
+ case 249:
+! #line 1338 "c-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 250:
+! #line 1340 "c-parse.y"
+ { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 251:
+! #line 1344 "c-parse.y"
+ { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 252:
+! #line 1346 "c-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+ case 253:
+! #line 1349 "c-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 254:
+! #line 1352 "c-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (NULL_TREE); ;
+ break;}
+ case 255:
+! #line 1355 "c-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 256:
+! #line 1358 "c-parse.y"
+ { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 260:
+! #line 1369 "c-parse.y"
+ { if (pedantic && ! flag_isoc9x)
+ pedwarn ("comma at end of enumerator list"); ;
+ break;}
+ case 261:
+! #line 1375 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 262:
+! #line 1377 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ pedwarn ("no semicolon at end of struct or union"); ;
+ break;}
+ case 263:
+! #line 1382 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 264:
+! #line 1384 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 265:
+! #line 1386 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); ;
+ break;}
+ case 266:
+! #line 1401 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 2760,2970 ----
+ reinit_parse_for_function (); ;
+ break;}
+ case 212:
+! #line 1202 "c-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 213:
+! #line 1210 "c-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 216:
+! #line 1226 "c-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 217:
+! #line 1228 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 218:
+! #line 1233 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 219:
+! #line 1235 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 220:
+! #line 1237 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 221:
+! #line 1244 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 223:
+! #line 1255 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 224:
+! #line 1260 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
+ if (! flag_isoc9x)
+ error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+ ;
+ break;}
+ case 225:
+! #line 1265 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 226:
+! #line 1267 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 227:
+! #line 1269 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 228:
+! #line 1276 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 230:
+! #line 1285 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 231:
+! #line 1290 "c-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 232:
+! #line 1292 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 233:
+! #line 1294 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
+ if (! flag_isoc9x)
+ error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+ ;
+ break;}
+ case 234:
+! #line 1299 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 235:
+! #line 1301 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 236:
+! #line 1308 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 238:
+! #line 1314 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 239:
+! #line 1316 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 240:
+! #line 1321 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 241:
+! #line 1323 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 242:
+! #line 1328 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 243:
+! #line 1330 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 244:
+! #line 1335 "c-parse.y"
+ { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
+ /* Start scope of tag before parsing components. */
+ ;
+ break;}
+ case 245:
+! #line 1339 "c-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 246:
+! #line 1341 "c-parse.y"
+ { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 247:
+! #line 1345 "c-parse.y"
+ { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 248:
+! #line 1347 "c-parse.y"
+ { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+ break;}
+ case 249:
+! #line 1349 "c-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 250:
+! #line 1351 "c-parse.y"
+ { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 251:
+! #line 1355 "c-parse.y"
+ { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 252:
+! #line 1357 "c-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+ case 253:
+! #line 1360 "c-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 254:
+! #line 1363 "c-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (NULL_TREE); ;
+ break;}
+ case 255:
+! #line 1366 "c-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 256:
+! #line 1369 "c-parse.y"
+ { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 260:
+! #line 1380 "c-parse.y"
+ { if (pedantic && ! flag_isoc9x)
+ pedwarn ("comma at end of enumerator list"); ;
+ break;}
+ case 261:
+! #line 1386 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 262:
+! #line 1388 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ pedwarn ("no semicolon at end of struct or union"); ;
+ break;}
+ case 263:
+! #line 1393 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 264:
+! #line 1395 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 265:
+! #line 1397 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); ;
+ break;}
+ case 266:
+! #line 1412 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 266:
+*** 2917,2930 ****
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 267:
+! #line 1407 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 268:
+! #line 1412 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 2972,2985 ----
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 267:
+! #line 1418 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 268:
+! #line 1423 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 268:
+*** 2932,3075 ****
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 269:
+! #line 1418 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 270:
+! #line 1423 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 271:
+! #line 1425 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 273:
+! #line 1432 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 274:
+! #line 1437 "c-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 275:
+! #line 1441 "c-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 276:
+! #line 1444 "c-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 278:
+! #line 1456 "c-parse.y"
+ { if (yyvsp[-2].ttype == error_mark_node)
+ yyval.ttype = yyvsp[-2].ttype;
+ else
+ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+ case 279:
+! #line 1461 "c-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 280:
+! #line 1467 "c-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 281:
+! #line 1469 "c-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 282:
+! #line 1474 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 283:
+! #line 1476 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 284:
+! #line 1481 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 286:
+! #line 1487 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 287:
+! #line 1489 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 288:
+! #line 1494 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 289:
+! #line 1496 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 290:
+! #line 1501 "c-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 291:
+! #line 1504 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 292:
+! #line 1506 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 293:
+! #line 1508 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 294:
+! #line 1510 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 295:
+! #line 1512 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 296:
+! #line 1514 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 297:
+! #line 1516 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 298:
+! #line 1518 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 299:
+! #line 1522 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 300:
+! #line 1531 "c-parse.y"
+ {
+ if (pedantic && yyvsp[0].ends_in_label)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ ;
+ break;}
+ case 302:
+! #line 1540 "c-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 303:
+! #line 1542 "c-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 307:
+! #line 1554 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+--- 2987,3130 ----
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 269:
+! #line 1429 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 270:
+! #line 1434 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 271:
+! #line 1436 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 273:
+! #line 1443 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 274:
+! #line 1448 "c-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 275:
+! #line 1452 "c-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 276:
+! #line 1455 "c-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 278:
+! #line 1467 "c-parse.y"
+ { if (yyvsp[-2].ttype == error_mark_node)
+ yyval.ttype = yyvsp[-2].ttype;
+ else
+ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+ case 279:
+! #line 1472 "c-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 280:
+! #line 1478 "c-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 281:
+! #line 1480 "c-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 282:
+! #line 1485 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 283:
+! #line 1487 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 284:
+! #line 1492 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 286:
+! #line 1498 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 287:
+! #line 1500 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 288:
+! #line 1505 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 289:
+! #line 1507 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 290:
+! #line 1512 "c-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 291:
+! #line 1515 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 292:
+! #line 1517 "c-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 293:
+! #line 1519 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 294:
+! #line 1521 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 295:
+! #line 1523 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 296:
+! #line 1525 "c-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 297:
+! #line 1527 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 298:
+! #line 1529 "c-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 299:
+! #line 1533 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 300:
+! #line 1542 "c-parse.y"
+ {
+ if (pedantic && yyvsp[0].ends_in_label)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ ;
+ break;}
+ case 302:
+! #line 1551 "c-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 303:
+! #line 1553 "c-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 307:
+! #line 1565 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+*************** case 307:
+*** 3078,3089 ****
+ ;
+ break;}
+ case 309:
+! #line 1567 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); ;
+ break;}
+ case 312:
+! #line 1578 "c-parse.y"
+ { tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+--- 3133,3144 ----
+ ;
+ break;}
+ case 309:
+! #line 1578 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); ;
+ break;}
+ case 312:
+! #line 1589 "c-parse.y"
+ { tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+*************** case 312:
+*** 3094,3112 ****
+ ;
+ break;}
+ case 313:
+! #line 1592 "c-parse.y"
+ {;
+ break;}
+ case 315:
+! #line 1596 "c-parse.y"
+ { compstmt_count++; ;
+ break;}
+ case 316:
+! #line 1599 "c-parse.y"
+ { yyval.ttype = convert (void_type_node, integer_zero_node); ;
+ break;}
+ case 317:
+! #line 1601 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ yyval.ttype = poplevel (1, 1, 0);
+--- 3149,3167 ----
+ ;
+ break;}
+ case 313:
+! #line 1603 "c-parse.y"
+ {;
+ break;}
+ case 315:
+! #line 1607 "c-parse.y"
+ { compstmt_count++; ;
+ break;}
+ case 316:
+! #line 1610 "c-parse.y"
+ { yyval.ttype = convert (void_type_node, integer_zero_node); ;
+ break;}
+ case 317:
+! #line 1612 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ yyval.ttype = poplevel (1, 1, 0);
+*************** case 317:
+*** 3116,3122 ****
+ pop_momentary (); ;
+ break;}
+ case 318:
+! #line 1609 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+--- 3171,3177 ----
+ pop_momentary (); ;
+ break;}
+ case 318:
+! #line 1620 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+*************** case 318:
+*** 3126,3132 ****
+ pop_momentary (); ;
+ break;}
+ case 319:
+! #line 1617 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+--- 3181,3187 ----
+ pop_momentary (); ;
+ break;}
+ case 319:
+! #line 1628 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+*************** case 319:
+*** 3136,3142 ****
+ pop_momentary (); ;
+ break;}
+ case 322:
+! #line 1637 "c-parse.y"
+ { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0,
+ compstmt_count);
+--- 3191,3197 ----
+ pop_momentary (); ;
+ break;}
+ case 322:
+! #line 1648 "c-parse.y"
+ { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0,
+ compstmt_count);
+*************** case 322:
+*** 3146,3152 ****
+ position_after_white_space (); ;
+ break;}
+ case 323:
+! #line 1651 "c-parse.y"
+ { stmt_count++;
+ compstmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+--- 3201,3207 ----
+ position_after_white_space (); ;
+ break;}
+ case 323:
+! #line 1662 "c-parse.y"
+ { stmt_count++;
+ compstmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+*************** case 323:
+*** 3156,3198 ****
+ position_after_white_space (); ;
+ break;}
+ case 324:
+! #line 1659 "c-parse.y"
+ { expand_loop_continue_here (); ;
+ break;}
+ case 325:
+! #line 1663 "c-parse.y"
+ { yyval.filename = input_filename; ;
+ break;}
+ case 326:
+! #line 1667 "c-parse.y"
+ { yyval.lineno = lineno; ;
+ break;}
+ case 327:
+! #line 1672 "c-parse.y"
+ { ;
+ break;}
+ case 328:
+! #line 1677 "c-parse.y"
+ { ;
+ break;}
+ case 329:
+! #line 1682 "c-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 330:
+! #line 1687 "c-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 331:
+! #line 1689 "c-parse.y"
+ { yyval.ends_in_label = 1; ;
+ break;}
+ case 332:
+! #line 1695 "c-parse.y"
+ { stmt_count++; ;
+ break;}
+ case 334:
+! #line 1698 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ /* It appears that this should not be done--that a non-lvalue array
+--- 3211,3253 ----
+ position_after_white_space (); ;
+ break;}
+ case 324:
+! #line 1670 "c-parse.y"
+ { expand_loop_continue_here (); ;
+ break;}
+ case 325:
+! #line 1674 "c-parse.y"
+ { yyval.filename = input_filename; ;
+ break;}
+ case 326:
+! #line 1678 "c-parse.y"
+ { yyval.lineno = lineno; ;
+ break;}
+ case 327:
+! #line 1683 "c-parse.y"
+ { ;
+ break;}
+ case 328:
+! #line 1688 "c-parse.y"
+ { ;
+ break;}
+ case 329:
+! #line 1693 "c-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 330:
+! #line 1698 "c-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 331:
+! #line 1700 "c-parse.y"
+ { yyval.ends_in_label = 1; ;
+ break;}
+ case 332:
+! #line 1706 "c-parse.y"
+ { stmt_count++; ;
+ break;}
+ case 334:
+! #line 1709 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ /* It appears that this should not be done--that a non-lvalue array
+*************** case 334:
+*** 3211,3229 ****
+ clear_momentary (); ;
+ break;}
+ case 335:
+! #line 1715 "c-parse.y"
+ { c_expand_start_else ();
+ yyvsp[-1].itype = stmt_count;
+ position_after_white_space (); ;
+ break;}
+ case 336:
+! #line 1719 "c-parse.y"
+ { c_expand_end_cond ();
+ if (extra_warnings && stmt_count == yyvsp[-3].itype)
+ warning ("empty body in an else-statement"); ;
+ break;}
+ case 337:
+! #line 1723 "c-parse.y"
+ { c_expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+--- 3266,3284 ----
+ clear_momentary (); ;
+ break;}
+ case 335:
+! #line 1726 "c-parse.y"
+ { c_expand_start_else ();
+ yyvsp[-1].itype = stmt_count;
+ position_after_white_space (); ;
+ break;}
+ case 336:
+! #line 1730 "c-parse.y"
+ { c_expand_end_cond ();
+ if (extra_warnings && stmt_count == yyvsp[-3].itype)
+ warning ("empty body in an else-statement"); ;
+ break;}
+ case 337:
+! #line 1734 "c-parse.y"
+ { c_expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+*************** case 337:
+*** 3234,3244 ****
+ "empty body in an if-statement"); ;
+ break;}
+ case 338:
+! #line 1735 "c-parse.y"
+ { c_expand_end_cond (); ;
+ break;}
+ case 339:
+! #line 1737 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* The emit_nop used to come before emit_line_note,
+--- 3289,3299 ----
+ "empty body in an if-statement"); ;
+ break;}
+ case 338:
+! #line 1746 "c-parse.y"
+ { c_expand_end_cond (); ;
+ break;}
+ case 339:
+! #line 1748 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* The emit_nop used to come before emit_line_note,
+*************** case 339:
+*** 3250,3256 ****
+ emit_nop (); ;
+ break;}
+ case 340:
+! #line 1747 "c-parse.y"
+ { /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+--- 3305,3311 ----
+ emit_nop (); ;
+ break;}
+ case 340:
+! #line 1758 "c-parse.y"
+ { /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+*************** case 340:
+*** 3261,3271 ****
+ position_after_white_space (); ;
+ break;}
+ case 341:
+! #line 1756 "c-parse.y"
+ { expand_end_loop (); ;
+ break;}
+ case 342:
+! #line 1759 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-2].ttype));
+--- 3316,3326 ----
+ position_after_white_space (); ;
+ break;}
+ case 341:
+! #line 1767 "c-parse.y"
+ { expand_end_loop (); ;
+ break;}
+ case 342:
+! #line 1770 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-2].ttype));
+*************** case 342:
+*** 3273,3284 ****
+ clear_momentary (); ;
+ break;}
+ case 343:
+! #line 1766 "c-parse.y"
+ { expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+ case 344:
+! #line 1770 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ /* See comment in `while' alternative, above. */
+--- 3328,3339 ----
+ clear_momentary (); ;
+ break;}
+ case 343:
+! #line 1777 "c-parse.y"
+ { expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+ case 344:
+! #line 1781 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ /* See comment in `while' alternative, above. */
+*************** case 344:
+*** 3291,3302 ****
+ ;
+ break;}
+ case 345:
+! #line 1782 "c-parse.y"
+ { yyvsp[0].lineno = lineno;
+ yyval.filename = input_filename; ;
+ break;}
+ case 346:
+! #line 1785 "c-parse.y"
+ {
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+--- 3346,3357 ----
+ ;
+ break;}
+ case 345:
+! #line 1793 "c-parse.y"
+ { yyvsp[0].lineno = lineno;
+ yyval.filename = input_filename; ;
+ break;}
+ case 346:
+! #line 1796 "c-parse.y"
+ {
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+*************** case 346:
+*** 3314,3320 ****
+ position_after_white_space (); ;
+ break;}
+ case 347:
+! #line 1801 "c-parse.y"
+ { /* Emit the increment expression, with a line number. */
+ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
+ expand_loop_continue_here ();
+--- 3369,3375 ----
+ position_after_white_space (); ;
+ break;}
+ case 347:
+! #line 1812 "c-parse.y"
+ { /* Emit the increment expression, with a line number. */
+ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
+ expand_loop_continue_here ();
+*************** case 347:
+*** 3327,3333 ****
+ expand_end_loop (); ;
+ break;}
+ case 348:
+! #line 1812 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+--- 3382,3388 ----
+ expand_end_loop (); ;
+ break;}
+ case 348:
+! #line 1823 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+*************** case 348:
+*** 3337,3343 ****
+ position_after_white_space (); ;
+ break;}
+ case 349:
+! #line 1820 "c-parse.y"
+ { expand_end_case (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+--- 3392,3398 ----
+ position_after_white_space (); ;
+ break;}
+ case 349:
+! #line 1831 "c-parse.y"
+ { expand_end_case (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+*************** case 349:
+*** 3345,3377 ****
+ pop_momentary (); ;
+ break;}
+ case 350:
+! #line 1826 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+ case 351:
+! #line 1831 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); ;
+ break;}
+ case 352:
+! #line 1836 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+ case 353:
+! #line 1840 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ c_expand_return (yyvsp[-1].ttype); ;
+ break;}
+ case 354:
+! #line 1844 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
+ STRIP_NOPS (yyvsp[-2].ttype);
+--- 3400,3432 ----
+ pop_momentary (); ;
+ break;}
+ case 350:
+! #line 1837 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+ case 351:
+! #line 1842 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); ;
+ break;}
+ case 352:
+! #line 1847 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+ case 353:
+! #line 1851 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ c_expand_return (yyvsp[-1].ttype); ;
+ break;}
+ case 354:
+! #line 1855 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
+ STRIP_NOPS (yyvsp[-2].ttype);
+*************** case 354:
+*** 3383,3389 ****
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 355:
+! #line 1855 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+--- 3438,3444 ----
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 355:
+! #line 1866 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+*************** case 355:
+*** 3391,3397 ****
+ input_filename, lineno); ;
+ break;}
+ case 356:
+! #line 1862 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+--- 3446,3452 ----
+ input_filename, lineno); ;
+ break;}
+ case 356:
+! #line 1873 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+*************** case 356:
+*** 3399,3405 ****
+ input_filename, lineno); ;
+ break;}
+ case 357:
+! #line 1870 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+--- 3454,3460 ----
+ input_filename, lineno); ;
+ break;}
+ case 357:
+! #line 1881 "c-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+*************** case 357:
+*** 3407,3413 ****
+ input_filename, lineno); ;
+ break;}
+ case 358:
+! #line 1876 "c-parse.y"
+ { tree decl;
+ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+--- 3462,3468 ----
+ input_filename, lineno); ;
+ break;}
+ case 358:
+! #line 1887 "c-parse.y"
+ { tree decl;
+ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+*************** case 358:
+*** 3420,3426 ****
+ ;
+ break;}
+ case 359:
+! #line 1887 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+--- 3475,3481 ----
+ ;
+ break;}
+ case 359:
+! #line 1898 "c-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+*************** case 359:
+*** 3428,3434 ****
+ expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
+ break;}
+ case 362:
+! #line 1902 "c-parse.y"
+ {
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+--- 3483,3489 ----
+ expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
+ break;}
+ case 362:
+! #line 1913 "c-parse.y"
+ {
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+*************** case 362:
+*** 3451,3464 ****
+ ;
+ break;}
+ case 363:
+! #line 1923 "c-parse.y"
+ {
+ if (yyvsp[-1].itype)
+ iterator_for_loop_end (yyvsp[-3].ttype);
+ ;
+ break;}
+ case 364:
+! #line 1958 "c-parse.y"
+ { register tree value = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+--- 3506,3519 ----
+ ;
+ break;}
+ case 363:
+! #line 1934 "c-parse.y"
+ {
+ if (yyvsp[-1].itype)
+ iterator_for_loop_end (yyvsp[-3].ttype);
+ ;
+ break;}
+ case 364:
+! #line 1969 "c-parse.y"
+ { register tree value = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+*************** case 364:
+*** 3491,3497 ****
+ position_after_white_space (); ;
+ break;}
+ case 365:
+! #line 1989 "c-parse.y"
+ { register tree value1 = check_case_value (yyvsp[-3].ttype);
+ register tree value2 = check_case_value (yyvsp[-1].ttype);
+ register tree label
+--- 3546,3552 ----
+ position_after_white_space (); ;
+ break;}
+ case 365:
+! #line 2000 "c-parse.y"
+ { register tree value1 = check_case_value (yyvsp[-3].ttype);
+ register tree value2 = check_case_value (yyvsp[-1].ttype);
+ register tree label
+*************** case 365:
+*** 3524,3530 ****
+ position_after_white_space (); ;
+ break;}
+ case 366:
+! #line 2020 "c-parse.y"
+ {
+ tree duplicate;
+ register tree label
+--- 3579,3585 ----
+ position_after_white_space (); ;
+ break;}
+ case 366:
+! #line 2031 "c-parse.y"
+ {
+ tree duplicate;
+ register tree label
+*************** case 366:
+*** 3541,3547 ****
+ position_after_white_space (); ;
+ break;}
+ case 367:
+! #line 2035 "c-parse.y"
+ { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
+ stmt_count++;
+ emit_nop ();
+--- 3596,3602 ----
+ position_after_white_space (); ;
+ break;}
+ case 367:
+! #line 2046 "c-parse.y"
+ { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
+ stmt_count++;
+ emit_nop ();
+*************** case 367:
+*** 3553,3604 ****
+ position_after_white_space (); ;
+ break;}
+ case 368:
+! #line 2050 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 369:
+! #line 2053 "c-parse.y"
+ { emit_line_note (input_filename, lineno); ;
+ break;}
+ case 370:
+! #line 2058 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 372:
+! #line 2065 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 375:
+! #line 2072 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 376:
+! #line 2077 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 377:
+! #line 2082 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+ break;}
+ case 378:
+! #line 2084 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+ break;}
+ case 379:
+! #line 2090 "c-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); ;
+ break;}
+ case 380:
+! #line 2094 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 382:
+! #line 2102 "c-parse.y"
+ { tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+--- 3608,3659 ----
+ position_after_white_space (); ;
+ break;}
+ case 368:
+! #line 2061 "c-parse.y"
+ { emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 369:
+! #line 2064 "c-parse.y"
+ { emit_line_note (input_filename, lineno); ;
+ break;}
+ case 370:
+! #line 2069 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 372:
+! #line 2076 "c-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 375:
+! #line 2083 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 376:
+! #line 2088 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 377:
+! #line 2093 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+ break;}
+ case 378:
+! #line 2095 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+ break;}
+ case 379:
+! #line 2101 "c-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); ;
+ break;}
+ case 380:
+! #line 2105 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 382:
+! #line 2113 "c-parse.y"
+ { tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+*************** case 382:
+*** 3608,3626 ****
+ clear_parm_order (); ;
+ break;}
+ case 383:
+! #line 2110 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 384:
+! #line 2112 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 385:
+! #line 2118 "c-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 386:
+! #line 2120 "c-parse.y"
+ { yyval.ttype = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+--- 3663,3681 ----
+ clear_parm_order (); ;
+ break;}
+ case 383:
+! #line 2121 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 384:
+! #line 2123 "c-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 385:
+! #line 2129 "c-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 386:
+! #line 2131 "c-parse.y"
+ { yyval.ttype = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+*************** case 386:
+*** 3632,3654 ****
+ ;
+ break;}
+ case 387:
+! #line 2130 "c-parse.y"
+ { yyval.ttype = get_parm_info (1); ;
+ break;}
+ case 388:
+! #line 2132 "c-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 389:
+! #line 2137 "c-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 390:
+! #line 2139 "c-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 391:
+! #line 2146 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 3687,3709 ----
+ ;
+ break;}
+ case 387:
+! #line 2141 "c-parse.y"
+ { yyval.ttype = get_parm_info (1); ;
+ break;}
+ case 388:
+! #line 2143 "c-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 389:
+! #line 2148 "c-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 390:
+! #line 2150 "c-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 391:
+! #line 2157 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 391:
+*** 3659,3665 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 392:
+! #line 2155 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 3714,3720 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 392:
+! #line 2166 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 392:
+*** 3670,3676 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 393:
+! #line 2164 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 3725,3731 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 393:
+! #line 2175 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 393:
+*** 3681,3687 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 394:
+! #line 2173 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 3736,3742 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 394:
+! #line 2184 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 394:
+*** 3692,3698 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 395:
+! #line 2183 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 3747,3753 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 395:
+! #line 2194 "c-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 395:
+*** 3703,3721 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 396:
+! #line 2197 "c-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); ;
+ break;}
+ case 397:
+! #line 2201 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 399:
+! #line 2209 "c-parse.y"
+ { tree t;
+ for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+--- 3758,3776 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 396:
+! #line 2208 "c-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); ;
+ break;}
+ case 397:
+! #line 2212 "c-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 399:
+! #line 2220 "c-parse.y"
+ { tree t;
+ for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+*************** case 399:
+*** 3723,3751 ****
+ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 400:
+! #line 2219 "c-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 401:
+! #line 2221 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 402:
+! #line 2227 "c-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 403:
+! #line 2229 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 404:
+! #line 2234 "c-parse.y"
+! { yyval.itype = pedantic;
+! pedantic = 0; ;
+ break;}
+ }
+ /* the action file gets copied in in place of this dollarsign */
+! #line 498 "/usr/lib/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+--- 3778,3807 ----
+ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 400:
+! #line 2230 "c-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 401:
+! #line 2232 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 402:
+! #line 2238 "c-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 403:
+! #line 2240 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 404:
+! #line 2245 "c-parse.y"
+! { yyval.ttype = SAVE_WARN_FLAGS();
+! pedantic = 0;
+! warn_pointer_arith = 0; ;
+ break;}
+ }
+ /* the action file gets copied in in place of this dollarsign */
+! #line 543 "/usr/share/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+*************** yyerrhandle:
+*** 3940,3945 ****
+
+ yystate = yyn;
+ goto yynewstate;
+ }
+! #line 2238 "c-parse.y"
+
+--- 3996,4025 ----
+
+ 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 2250 "c-parse.y"
+
+diff -c3rpN gcc-2.95.3.orig/gcc/c-parse.h gcc-2.95.4/gcc/c-parse.h
+*** gcc-2.95.3.orig/gcc/c-parse.h Fri Mar 16 14:13:48 2001
+--- gcc-2.95.4/gcc/c-parse.h Wed Jun 6 01:36:02 2001
+***************
+*** 1,64 ****
+ typedef union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; } YYSTYPE;
+! #define IDENTIFIER 258
+! #define TYPENAME 259
+! #define SCSPEC 260
+! #define TYPESPEC 261
+! #define TYPE_QUAL 262
+! #define CONSTANT 263
+! #define STRING 264
+! #define ELLIPSIS 265
+! #define SIZEOF 266
+! #define ENUM 267
+! #define STRUCT 268
+! #define UNION 269
+! #define IF 270
+! #define ELSE 271
+! #define WHILE 272
+! #define DO 273
+! #define FOR 274
+! #define SWITCH 275
+! #define CASE 276
+! #define DEFAULT 277
+! #define BREAK 278
+! #define CONTINUE 279
+! #define RETURN 280
+! #define GOTO 281
+! #define ASM_KEYWORD 282
+! #define TYPEOF 283
+! #define ALIGNOF 284
+! #define ATTRIBUTE 285
+! #define EXTENSION 286
+! #define LABEL 287
+! #define REALPART 288
+! #define IMAGPART 289
+! #define ASSIGN 290
+! #define OROR 291
+! #define ANDAND 292
+! #define EQCOMPARE 293
+! #define ARITHCOMPARE 294
+! #define LSHIFT 295
+! #define RSHIFT 296
+! #define UNARY 297
+! #define PLUSPLUS 298
+! #define MINUSMINUS 299
+! #define HYPERUNARY 300
+! #define POINTSAT 301
+! #define INTERFACE 302
+! #define IMPLEMENTATION 303
+! #define END 304
+! #define SELECTOR 305
+! #define DEFS 306
+! #define ENCODE 307
+! #define CLASSNAME 308
+! #define PUBLIC 309
+! #define PRIVATE 310
+! #define PROTECTED 311
+! #define PROTOCOL 312
+! #define OBJECTNAME 313
+! #define CLASS 314
+! #define ALIAS 315
+! #define OBJC_STRING 316
+
+
+ extern YYSTYPE yylval;
+--- 1,64 ----
+ typedef union {long itype; tree ttype; enum tree_code code;
+ char *filename; int lineno; int ends_in_label; } YYSTYPE;
+! #define IDENTIFIER 257
+! #define TYPENAME 258
+! #define SCSPEC 259
+! #define TYPESPEC 260
+! #define TYPE_QUAL 261
+! #define CONSTANT 262
+! #define STRING 263
+! #define ELLIPSIS 264
+! #define SIZEOF 265
+! #define ENUM 266
+! #define STRUCT 267
+! #define UNION 268
+! #define IF 269
+! #define ELSE 270
+! #define WHILE 271
+! #define DO 272
+! #define FOR 273
+! #define SWITCH 274
+! #define CASE 275
+! #define DEFAULT 276
+! #define BREAK 277
+! #define CONTINUE 278
+! #define RETURN 279
+! #define GOTO 280
+! #define ASM_KEYWORD 281
+! #define TYPEOF 282
+! #define ALIGNOF 283
+! #define ATTRIBUTE 284
+! #define EXTENSION 285
+! #define LABEL 286
+! #define REALPART 287
+! #define IMAGPART 288
+! #define ASSIGN 289
+! #define OROR 290
+! #define ANDAND 291
+! #define EQCOMPARE 292
+! #define ARITHCOMPARE 293
+! #define LSHIFT 294
+! #define RSHIFT 295
+! #define UNARY 296
+! #define PLUSPLUS 297
+! #define MINUSMINUS 298
+! #define HYPERUNARY 299
+! #define POINTSAT 300
+! #define INTERFACE 301
+! #define IMPLEMENTATION 302
+! #define END 303
+! #define SELECTOR 304
+! #define DEFS 305
+! #define ENCODE 306
+! #define CLASSNAME 307
+! #define PUBLIC 308
+! #define PRIVATE 309
+! #define PROTECTED 310
+! #define PROTOCOL 311
+! #define OBJECTNAME 312
+! #define CLASS 313
+! #define ALIAS 314
+! #define OBJC_STRING 315
+
+
+ extern YYSTYPE yylval;
+diff -c3rpN gcc-2.95.3.orig/gcc/c-parse.in gcc-2.95.4/gcc/c-parse.in
+*** gcc-2.95.3.orig/gcc/c-parse.in Mon Apr 26 23:35:50 1999
+--- gcc-2.95.4/gcc/c-parse.in Wed Jun 6 01:36:03 2001
+*************** end ifc
+*** 186,192 ****
+ %type <ttype> init maybeasm
+ %type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+ %type <ttype> maybe_attribute attributes attribute attribute_list attrib
+! %type <ttype> any_word
+
+ %type <ttype> compstmt
+
+--- 186,192 ----
+ %type <ttype> init maybeasm
+ %type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+ %type <ttype> maybe_attribute attributes attribute attribute_list attrib
+! %type <ttype> any_word extension
+
+ %type <ttype> compstmt
+
+*************** static tree declspec_stack;
+*** 247,252 ****
+--- 247,263 ----
+ /* 1 if we explained undeclared var errors. */
+ static int undeclared_variable_notice;
+
++ /* For __extension__, save/restore the warning flags which are
++ controlled by __extension__. */
++ #define SAVE_WARN_FLAGS() \
++ build_int_2 (pedantic | (warn_pointer_arith << 1), 0)
++ #define RESTORE_WARN_FLAGS(tval) \
++ do { \
++ int val = TREE_INT_CST_LOW (tval); \
++ pedantic = val & 1; \
++ warn_pointer_arith = (val >> 1) & 1; \
++ } while (0)
++
+ ifobjc
+ /* Objective-C specific information */
+
+*************** end ifobjc
+*** 307,313 ****
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+! { pedantic = $<itype>1; }
+ ;
+
+ datadef:
+--- 318,324 ----
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+! { RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ datadef:
+*************** unary_expr:
+*** 448,454 ****
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+! pedantic = $<itype>1; }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+--- 459,465 ----
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+! RESTORE_WARN_FLAGS ($1); }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+*************** decl:
+*** 1015,1021 ****
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+! { pedantic = $<itype>1; }
+ ;
+
+ /* Declspecs which contain at least one type specifier or typedef name.
+--- 1026,1032 ----
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+! { RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ /* Declspecs which contain at least one type specifier or typedef name.
+*************** component_decl:
+*** 1614,1620 ****
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+! pedantic = $<itype>1; }
+ ;
+
+ components:
+--- 1625,1631 ----
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+! RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ components:
+*************** identifiers_or_typenames:
+*** 2426,2433 ****
+
+ extension:
+ EXTENSION
+! { $<itype>$ = pedantic;
+! pedantic = 0; }
+ ;
+
+ ifobjc
+--- 2437,2445 ----
+
+ extension:
+ EXTENSION
+! { $$ = SAVE_WARN_FLAGS();
+! pedantic = 0;
+! warn_pointer_arith = 0; }
+ ;
+
+ ifobjc
+diff -c3rpN gcc-2.95.3.orig/gcc/c-parse.y gcc-2.95.4/gcc/c-parse.y
+*** gcc-2.95.3.orig/gcc/c-parse.y Mon Apr 26 23:35:51 1999
+--- gcc-2.95.4/gcc/c-parse.y Wed Jun 6 01:36:03 2001
+*************** char *language_string = "GNU C";
+*** 174,180 ****
+ %type <ttype> init maybeasm
+ %type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+ %type <ttype> maybe_attribute attributes attribute attribute_list attrib
+! %type <ttype> any_word
+
+ %type <ttype> compstmt
+
+--- 174,180 ----
+ %type <ttype> init maybeasm
+ %type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+ %type <ttype> maybe_attribute attributes attribute attribute_list attrib
+! %type <ttype> any_word extension
+
+ %type <ttype> compstmt
+
+*************** static tree declspec_stack;
+*** 222,227 ****
+--- 222,238 ----
+ /* 1 if we explained undeclared var errors. */
+ static int undeclared_variable_notice;
+
++ /* For __extension__, save/restore the warning flags which are
++ controlled by __extension__. */
++ #define SAVE_WARN_FLAGS() \
++ build_int_2 (pedantic | (warn_pointer_arith << 1), 0)
++ #define RESTORE_WARN_FLAGS(tval) \
++ do { \
++ int val = TREE_INT_CST_LOW (tval); \
++ pedantic = val & 1; \
++ warn_pointer_arith = (val >> 1) & 1; \
++ } while (0)
++
+
+ /* Tell yyparse how to print a token's value, if yydebug is set. */
+
+*************** extdef:
+*** 266,272 ****
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+! { pedantic = $<itype>1; }
+ ;
+
+ datadef:
+--- 277,283 ----
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+! { RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ datadef:
+*************** unary_expr:
+*** 403,409 ****
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+! pedantic = $<itype>1; }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+--- 414,420 ----
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+! RESTORE_WARN_FLAGS ($1); }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+*************** decl:
+*** 860,866 ****
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+! { pedantic = $<itype>1; }
+ ;
+
+ /* Declspecs which contain at least one type specifier or typedef name.
+--- 871,877 ----
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+! { RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ /* Declspecs which contain at least one type specifier or typedef name.
+*************** component_decl:
+*** 1423,1429 ****
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+! pedantic = $<itype>1; }
+ ;
+
+ components:
+--- 1434,1440 ----
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+! RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ components:
+*************** identifiers_or_typenames:
+*** 2231,2238 ****
+
+ extension:
+ EXTENSION
+! { $<itype>$ = pedantic;
+! pedantic = 0; }
+ ;
+
+ %%
+--- 2242,2250 ----
+
+ extension:
+ EXTENSION
+! { $$ = SAVE_WARN_FLAGS();
+! pedantic = 0;
+! warn_pointer_arith = 0; }
+ ;
+
+ %%
+diff -c3rpN gcc-2.95.3.orig/gcc/cccp.c gcc-2.95.4/gcc/cccp.c
+*** gcc-2.95.3.orig/gcc/cccp.c Thu Jan 25 14:03:00 2001
+--- gcc-2.95.4/gcc/cccp.c Wed Jun 6 01:36:03 2001
+***************
+*** 1,6 ****
+ /* C Compatible Compiler Preprocessor (CCCP)
+ Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+! 1999, 2000 Free Software Foundation, Inc.
+ Written by Paul Rubin, June 1986
+ Adapted to ANSI C, Richard Stallman, Jan 1987
+
+--- 1,6 ----
+ /* C Compatible Compiler Preprocessor (CCCP)
+ Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+! 1999, 2000, 2001 Free Software Foundation, Inc.
+ Written by Paul Rubin, June 1986
+ Adapted to ANSI C, Richard Stallman, Jan 1987
+
+*************** typedef unsigned char U_CHAR;
+*** 58,67 ****
+ #endif
+
+ /* By default, the suffix for object files is ".o". */
+! #ifdef OBJECT_SUFFIX
+! # define HAVE_OBJECT_SUFFIX
+ #else
+! # define OBJECT_SUFFIX ".o"
+ #endif
+
+ /* VMS-specific definitions */
+--- 58,67 ----
+ #endif
+
+ /* By default, the suffix for object files is ".o". */
+! #ifdef TARGET_OBJECT_SUFFIX
+! # define HAVE_TARGET_OBJECT_SUFFIX
+ #else
+! # define TARGET_OBJECT_SUFFIX ".o"
+ #endif
+
+ /* VMS-specific definitions */
+*************** main (argc, argv)
+*** 2028,2034 ****
+ q = p + (len - 4);
+
+ /* Supply our own suffix. */
+! strcpy (q, OBJECT_SUFFIX);
+
+ deps_output (p, ':');
+ deps_output (in_fname, ' ');
+--- 2028,2034 ----
+ q = p + (len - 4);
+
+ /* Supply our own suffix. */
+! strcpy (q, TARGET_OBJECT_SUFFIX);
+
+ deps_output (p, ':');
+ deps_output (in_fname, ' ');
+diff -c3rpN gcc-2.95.3.orig/gcc/collect2.c gcc-2.95.4/gcc/collect2.c
+*** gcc-2.95.3.orig/gcc/collect2.c Thu Jan 25 14:03:01 2001
+--- gcc-2.95.4/gcc/collect2.c Wed Jun 6 01:36:07 2001
+***************
+*** 1,7 ****
+ /* Collect static initialization info into data structures that can be
+ traversed by C++ initialization and finalization routines.
+! Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+! Free Software Foundation, Inc.
+ Contributed by Chris Smith (csmith@convex.com).
+ Heavily modified by Michael Meissner (meissner@cygnus.com),
+ Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
+--- 1,7 ----
+ /* Collect static initialization info into data structures that can be
+ traversed by C++ initialization and finalization routines.
+! Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+! 2001 Free Software Foundation, Inc.
+ Contributed by Chris Smith (csmith@convex.com).
+ Heavily modified by Michael Meissner (meissner@cygnus.com),
+ Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
+*************** find_a_file (pprefix, name)
+*** 815,822 ****
+ if (debug)
+ fprintf (stderr, "Looking for '%s'\n", name);
+
+! #ifdef EXECUTABLE_SUFFIX
+! len += strlen (EXECUTABLE_SUFFIX);
+ #endif
+
+ temp = xmalloc (len);
+--- 815,822 ----
+ if (debug)
+ fprintf (stderr, "Looking for '%s'\n", name);
+
+! #ifdef HOST_EXECUTABLE_SUFFIX
+! len += strlen (HOST_EXECUTABLE_SUFFIX);
+ #endif
+
+ temp = xmalloc (len);
+*************** find_a_file (pprefix, name)
+*** 839,849 ****
+ return temp;
+ }
+
+! #ifdef EXECUTABLE_SUFFIX
+ /* Some systems have a suffix for executable files.
+ So try appending that. */
+ strcpy (temp, name);
+! strcat (temp, EXECUTABLE_SUFFIX);
+
+ if (access (temp, X_OK) == 0)
+ return temp;
+--- 839,849 ----
+ return temp;
+ }
+
+! #ifdef HOST_EXECUTABLE_SUFFIX
+ /* Some systems have a suffix for executable files.
+ So try appending that. */
+ strcpy (temp, name);
+! strcat (temp, HOST_EXECUTABLE_SUFFIX);
+
+ if (access (temp, X_OK) == 0)
+ return temp;
+*************** find_a_file (pprefix, name)
+*** 861,870 ****
+ if (access (temp, X_OK) == 0)
+ return temp;
+
+! #ifdef EXECUTABLE_SUFFIX
+ /* Some systems have a suffix for executable files.
+ So try appending that. */
+! strcat (temp, EXECUTABLE_SUFFIX);
+
+ if (access (temp, X_OK) == 0)
+ return temp;
+--- 861,870 ----
+ if (access (temp, X_OK) == 0)
+ return temp;
+
+! #ifdef HOST_EXECUTABLE_SUFFIX
+ /* Some systems have a suffix for executable files.
+ So try appending that. */
+! strcat (temp, HOST_EXECUTABLE_SUFFIX);
+
+ if (access (temp, X_OK) == 0)
+ return temp;
+diff -c3rpN gcc-2.95.3.orig/gcc/combine.c gcc-2.95.4/gcc/combine.c
+*** gcc-2.95.3.orig/gcc/combine.c Thu Jan 25 14:03:01 2001
+--- gcc-2.95.4/gcc/combine.c Wed Jun 6 01:36:08 2001
+*************** nonzero_bits (x, mode)
+*** 7580,7587 ****
+
+ if (reg_last_set_value[REGNO (x)] != 0
+ && reg_last_set_mode[REGNO (x)] == mode
+! && (REG_N_SETS (REGNO (x)) == 1
+! || reg_last_set_label[REGNO (x)] == label_tick)
+ && INSN_CUID (reg_last_set[REGNO (x)]) < subst_low_cuid)
+ return reg_last_set_nonzero_bits[REGNO (x)];
+
+--- 7580,7590 ----
+
+ if (reg_last_set_value[REGNO (x)] != 0
+ && reg_last_set_mode[REGNO (x)] == mode
+! && (reg_last_set_label[REGNO (x)] == label_tick
+! || (REGNO (x) >= FIRST_PSEUDO_REGISTER
+! && REG_N_SETS (REGNO (x)) == 1
+! && ! REGNO_REG_SET_P (BASIC_BLOCK (0)->global_live_at_start,
+! REGNO (x))))
+ && INSN_CUID (reg_last_set[REGNO (x)]) < subst_low_cuid)
+ return reg_last_set_nonzero_bits[REGNO (x)];
+
+*************** num_sign_bit_copies (x, mode)
+*** 7970,7977 ****
+
+ if (reg_last_set_value[REGNO (x)] != 0
+ && reg_last_set_mode[REGNO (x)] == mode
+! && (REG_N_SETS (REGNO (x)) == 1
+! || reg_last_set_label[REGNO (x)] == label_tick)
+ && INSN_CUID (reg_last_set[REGNO (x)]) < subst_low_cuid)
+ return reg_last_set_sign_bit_copies[REGNO (x)];
+
+--- 7973,7983 ----
+
+ if (reg_last_set_value[REGNO (x)] != 0
+ && reg_last_set_mode[REGNO (x)] == mode
+! && (reg_last_set_label[REGNO (x)] == label_tick
+! || (REGNO (x) >= FIRST_PSEUDO_REGISTER
+! && REG_N_SETS (REGNO (x)) == 1
+! && ! REGNO_REG_SET_P (BASIC_BLOCK (0)->global_live_at_start,
+! REGNO (x))))
+ && INSN_CUID (reg_last_set[REGNO (x)]) < subst_low_cuid)
+ return reg_last_set_sign_bit_copies[REGNO (x)];
+
+*************** get_last_value_validate (loc, insn, tick
+*** 10819,10827 ****
+
+ for (j = regno; j < endregno; j++)
+ if (reg_last_set_invalid[j]
+! /* If this is a pseudo-register that was only set once, it is
+! always valid. */
+! || (! (regno >= FIRST_PSEUDO_REGISTER && REG_N_SETS (regno) == 1)
+ && reg_last_set_label[j] > tick))
+ {
+ if (replace)
+--- 10825,10835 ----
+
+ for (j = regno; j < endregno; j++)
+ if (reg_last_set_invalid[j]
+! /* If this is a pseudo-register that was only set once and not
+! live at the beginning of the function, it is always valid. */
+! || (! (regno >= FIRST_PSEUDO_REGISTER
+! && REG_N_SETS (regno) == 1
+! && ! REGNO_REG_SET_P (BASIC_BLOCK (0)->global_live_at_start, regno))
+ && reg_last_set_label[j] > tick))
+ {
+ if (replace)
+*************** get_last_value (x)
+*** 10880,10891 ****
+ regno = REGNO (x);
+ value = reg_last_set_value[regno];
+
+! /* If we don't have a value or if it isn't for this basic block,
+! return 0. */
+
+ if (value == 0
+! || (REG_N_SETS (regno) != 1
+! && reg_last_set_label[regno] != label_tick))
+ return 0;
+
+ /* If the value was set in a later insn than the ones we are processing,
+--- 10888,10908 ----
+ regno = REGNO (x);
+ value = reg_last_set_value[regno];
+
+! /* If we don't have a value, or if it isn't for this basic block and
+! it's either a hard register, set more than once, or it's a live
+! at the beginning of the function, return 0.
+!
+! Because if it's not live at the beginnning of the function then the reg
+! is always set before being used (is never used without being set).
+! And, if it's set only once, and it's always set before use, then all
+! uses must have the same last value, even if it's not from this basic
+! block. */
+
+ if (value == 0
+! || (reg_last_set_label[regno] != label_tick
+! && (regno < FIRST_PSEUDO_REGISTER
+! || REG_N_SETS (regno) != 1
+! || REGNO_REG_SET_P (BASIC_BLOCK (0)->global_live_at_start, regno))))
+ return 0;
+
+ /* If the value was set in a later insn than the ones we are processing,
+diff -c3rpN gcc-2.95.3.orig/gcc/config/alpha/vms.h gcc-2.95.4/gcc/config/alpha/vms.h
+*** gcc-2.95.3.orig/gcc/config/alpha/vms.h Mon Jun 21 21:15:14 1999
+--- gcc-2.95.4/gcc/config/alpha/vms.h Wed Jun 6 01:36:11 2001
+***************
+*** 1,5 ****
+ /* Output variables, constants and external declarations, for GNU compiler.
+! Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,5 ----
+ /* Output variables, constants and external declarations, for GNU compiler.
+! Copyright (C) 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** the Free Software Foundation, 59 Temple
+*** 19,24 ****
+--- 19,27 ----
+ Boston, MA 02111-1307, USA. */
+
+ #define OPEN_VMS 1
++
++ #define TARGET_OBJECT_SUFFIX ".obj"
++ #define TARGET_EXECUTABLE_SUFFIX ".exe"
+
+ /* This enables certain macros in alpha.h, which will make an indirect
+ reference to an external symbol an invalid address. This needs to be
+diff -c3rpN gcc-2.95.3.orig/gcc/config/alpha/xm-vms.h gcc-2.95.4/gcc/config/alpha/xm-vms.h
+*** gcc-2.95.3.orig/gcc/config/alpha/xm-vms.h Wed Dec 16 21:01:15 1998
+--- gcc-2.95.4/gcc/config/alpha/xm-vms.h Wed Jun 6 01:36:12 2001
+***************
+*** 1,5 ****
+ /* Configuration for GNU C-compiler for openVMS/Alpha.
+! Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Contributed by Klaus Kaempf (kkaempf@progis.de).
+
+ This file is part of GNU CC.
+--- 1,5 ----
+ /* Configuration for GNU C-compiler for openVMS/Alpha.
+! Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+ Contributed by Klaus Kaempf (kkaempf@progis.de).
+
+ This file is part of GNU CC.
+*************** extern void *alloca (size_t);
+*** 89,93 ****
+ extern char *alloca (unsigned int);
+ #endif
+
+! #define OBJECT_SUFFIX ".obj"
+! #define EXECUTABLE_SUFFIX ".exe"
+--- 89,93 ----
+ extern char *alloca (unsigned int);
+ #endif
+
+! #define HOST_OBJECT_SUFFIX ".obj"
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+diff -c3rpN gcc-2.95.3.orig/gcc/config/arm/linux-elf.h gcc-2.95.4/gcc/config/arm/linux-elf.h
+*** gcc-2.95.3.orig/gcc/config/arm/linux-elf.h Thu Jan 25 14:03:29 2001
+--- gcc-2.95.4/gcc/config/arm/linux-elf.h Wed Jun 6 01:36:14 2001
+*************** const_section () \
+*** 223,228 ****
+--- 223,266 ----
+ go into the const section. */
+ #define SELECT_RTX_SECTION(MODE,RTX) const_section ()
+
++ #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
++ #define UNIQUE_SECTION_P(DECL) (DECL_ONE_ONLY (DECL))
++
++ #define UNIQUE_SECTION(DECL, RELOC) \
++ do \
++ { \
++ int len; \
++ char *name; \
++ char *string; \
++ char *prefix; \
++ \
++ name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
++ \
++ if (! DECL_ONE_ONLY (DECL)) \
++ { \
++ prefix = "."; \
++ if (TREE_CODE (DECL) == FUNCTION_DECL) \
++ prefix = ".text."; \
++ else if (DECL_READONLY_SECTION (DECL, RELOC)) \
++ prefix = ".rodata."; \
++ else \
++ prefix = ".data."; \
++ } \
++ else if (TREE_CODE (DECL) == FUNCTION_DECL) \
++ prefix = ".gnu.linkonce.t."; \
++ else if (DECL_READONLY_SECTION (DECL, RELOC)) \
++ prefix = ".gnu.linkonce.r."; \
++ else \
++ prefix = ".gnu.linkonce.d."; \
++ \
++ len = strlen (name) + strlen (prefix); \
++ string = alloca (len + 1); \
++ sprintf (string, "%s%s", prefix, name); \
++ \
++ DECL_SECTION_NAME (DECL) = build_string (len, string); \
++ } \
++ while (0)
++
+ /* On svr4, we *do* have support for the .init and .fini sections, and we
+ can put stuff in there to be executed before and after `main'. We let
+ crtstuff.c and other files know this by defining the following symbols.
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/cygwin.h gcc-2.95.4/gcc/config/i386/cygwin.h
+*** gcc-2.95.3.orig/gcc/config/i386/cygwin.h Mon Jun 21 05:54:43 1999
+--- gcc-2.95.4/gcc/config/i386/cygwin.h Wed Jun 6 01:36:23 2001
+***************
+*** 2,8 ****
+ hosting on Windows NT 3.x, using a Unix style C library and tools,
+ as distinct from winnt.h, which is used to build GCC for use with a
+ windows style library and tool set and uses the Microsoft tools.
+! Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 2,9 ----
+ hosting on Windows NT 3.x, using a Unix style C library and tools,
+ as distinct from winnt.h, which is used to build GCC for use with a
+ windows style library and tool set and uses the Microsoft tools.
+! Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001 Free Software
+! Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 26,31 ****
+--- 27,34 ----
+ #define DBX_DEBUGGING_INFO
+ #define SDB_DEBUGGING_INFO
+ #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
++
++ #define TARGET_EXECUTABLE_SUFFIX ".exe"
+
+ #include "i386/gas.h"
+ #include "dbxcoff.h"
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/freebsd-elf.h gcc-2.95.4/gcc/config/i386/freebsd-elf.h
+*** gcc-2.95.3.orig/gcc/config/i386/freebsd-elf.h Mon Dec 18 14:05:58 2000
+--- gcc-2.95.4/gcc/config/i386/freebsd-elf.h Wed Jun 6 01:36:23 2001
+*************** Boston, MA 02111-1307, USA. */
+*** 135,140 ****
+--- 135,143 ----
+ : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
+ : (-1))
+
++ #undef NO_PROFILE_COUNTERS
++ #define NO_PROFILE_COUNTERS
++
+ /* Tell final.c that we don't need a label passed to mcount. */
+
+ #undef FUNCTION_PROFILER
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/linux.h gcc-2.95.4/gcc/config/i386/linux.h
+*** gcc-2.95.3.orig/gcc/config/i386/linux.h Thu Apr 8 01:32:13 1999
+--- gcc-2.95.4/gcc/config/i386/linux.h Wed Jun 6 01:36:25 2001
+*************** Boston, MA 02111-1307, USA. */
+*** 234,236 ****
+--- 234,254 ----
+ } \
+ } while (0)
+ #endif
++
++ #if defined(__PIC__) && defined (USE_GNULIBC_1)
++ /* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
++ __environ and atexit (). We have to make sure they are in the .dynsym
++ section. We accomplish it by making a dummy call here. This
++ code is never reached. */
++
++ #define CRT_END_INIT_DUMMY \
++ do \
++ { \
++ extern void *___brk_addr; \
++ extern char **__environ; \
++ \
++ ___brk_addr = __environ; \
++ atexit (0); \
++ } \
++ while (0)
++ #endif
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/mingw32.h gcc-2.95.4/gcc/config/i386/mingw32.h
+*** gcc-2.95.3.orig/gcc/config/i386/mingw32.h Mon Apr 12 19:18:06 1999
+--- gcc-2.95.4/gcc/config/i386/mingw32.h Wed Jun 6 01:36:25 2001
+***************
+*** 2,8 ****
+ hosting on Windows32, using GNU tools and the Windows32 API Library,
+ as distinct from winnt.h, which is used to build GCC for use with a
+ windows style library and tool set and uses the Microsoft tools.
+! Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 2,8 ----
+ hosting on Windows32, using GNU tools and the Windows32 API Library,
+ as distinct from winnt.h, which is used to build GCC for use with a
+ windows style library and tool set and uses the Microsoft tools.
+! Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 25,30 ****
+--- 25,32 ----
+ specs. */
+
+ #include "i386/cygwin.h"
++
++ #define TARGET_EXECUTABLE_SUFFIX ".exe"
+
+ /* Please keep changes to CPP_PREDEFINES in sync with i386/crtdll. The
+ only difference between the two should be __MSVCRT__ needed to
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/xm-cygwin.h gcc-2.95.4/gcc/config/i386/xm-cygwin.h
+*** gcc-2.95.3.orig/gcc/config/i386/xm-cygwin.h Thu Apr 22 15:40:55 1999
+--- gcc-2.95.4/gcc/config/i386/xm-cygwin.h Wed Jun 6 01:36:32 2001
+***************
+*** 1,6 ****
+ /* Configuration for GNU C-compiler for hosting on Windows NT.
+ using a unix style C library.
+! Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,7 ----
+ /* Configuration for GNU C-compiler for hosting on Windows NT.
+ using a unix style C library.
+! Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001 Free Software
+! Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** along with GNU CC; see the file COPYING.
+*** 19,25 ****
+ the Free Software Foundation, 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+! #define EXECUTABLE_SUFFIX ".exe"
+ #define NO_SYS_SIGLIST 1
+
+ /* We support both "/" and "\" since everybody tests both but we
+--- 20,26 ----
+ the Free Software Foundation, 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+ #define NO_SYS_SIGLIST 1
+
+ /* We support both "/" and "\" since everybody tests both but we
+*************** Boston, MA 02111-1307, USA. */
+*** 31,56 ****
+ #define DIR_SEPARATOR '/'
+ #define DIR_SEPARATOR_2 '\\'
+
+! /* Convert win32 style path lists to POSIX style for consistency. */
+ #undef GET_ENV_PATH_LIST
+ #define GET_ENV_PATH_LIST(VAR,NAME) \
+ do { \
+ char *_epath; \
+! char *_posixepath; \
+! _epath = _posixepath = getenv (NAME); \
+! /* if we have a posix path list, convert to posix path list */ \
+! if (_epath != NULL && *_epath != 0 \
+! && ! cygwin_posix_path_list_p (_epath)) \
+ { \
+! char *p; \
+! _posixepath = (char *) xmalloc \
+ (cygwin_win32_to_posix_path_list_buf_size (_epath)); \
+! cygwin_win32_to_posix_path_list (_epath, _posixepath); \
+ } \
+! (VAR) = _posixepath; \
+ } while (0)
+
+! #define PATH_SEPARATOR ':'
+
+ /* This is needed so that protoize will compile. */
+ #ifndef POSIX
+--- 32,157 ----
+ #define DIR_SEPARATOR '/'
+ #define DIR_SEPARATOR_2 '\\'
+
+! /* Get path lists and convert it to Posix or Win32 style. */
+! /* Posix is default unless FORCE_DOS_PATH_STYLE defined. */
+!
+! #ifdef CYGWIN_USES_DOS_PATHS
+! #define HAVE_DOS_BASED_FILESYSTEM
+! #define FORCE_DOS_PATH_STYLE 1
+! #endif
+! #ifdef CYGWIN_VXWORKS_PATHS
+! #define SYNTHETIC_VXWORKS_PREFIXES
+! #endif
+!
+!
+! #ifdef FORCE_DOS_PATH_STYLE
+!
+! #define PATH_SEPARATOR ';'
+!
+! #else
+!
+! #define FORCE_DOS_PATH_STYLE 0
+! #define PATH_SEPARATOR ':'
+!
+! #endif
+!
+ #undef GET_ENV_PATH_LIST
++ #ifdef __CYGWIN32__
++
++ #define CONVERT_PATH(VAR,NAME) \
++ do { \
++ char *_epath; \
++ char *_resultepath; \
++ _epath = _resultepath = NAME; \
++ if (_epath != NULL && *_epath != 0) \
++ if (FORCE_DOS_PATH_STYLE) { \
++ if ( cygwin32_posix_path_list_p (_epath)) \
++ { \
++ _resultepath = (char *) xmalloc \
++ (cygwin32_posix_to_win32_path_list_buf_size (_epath)); \
++ cygwin32_posix_to_win32_path_list (_epath, _resultepath); \
++ } \
++ } else \
++ if ( !cygwin32_posix_path_list_p (_epath)) \
++ { \
++ _resultepath = (char *) xmalloc \
++ (cygwin32_win32_to_posix_path_list_buf_size (_epath)); \
++ cygwin32_win32_to_posix_path_list (_epath, _resultepath); \
++ } \
++ (VAR) = _resultepath; \
++ } while (0)
++
+ #define GET_ENV_PATH_LIST(VAR,NAME) \
+ do { \
+ char *_epath; \
+! char *_resultepath; \
+! _epath = _resultepath = getenv (NAME); \
+! if (_epath != NULL && *_epath != 0) \
+! if (FORCE_DOS_PATH_STYLE) { \
+! if ( cygwin32_posix_path_list_p (_epath)) \
+! { \
+! _resultepath = (char *) xmalloc \
+! (cygwin32_posix_to_win32_path_list_buf_size (_epath)); \
+! cygwin32_posix_to_win32_path_list (_epath, _resultepath); \
+! } \
+! } else \
+! if ( !cygwin32_posix_path_list_p (_epath)) \
+ { \
+! _resultepath = (char *) xmalloc \
+! (cygwin32_win32_to_posix_path_list_buf_size (_epath)); \
+! cygwin32_win32_to_posix_path_list (_epath, _resultepath); \
+! } \
+! (VAR) = _resultepath; \
+! } while (0)
+!
+! #else
+!
+! #define CONVERT_PATH(VAR,NAME)\
+! do { \
+! char *_epath; \
+! char *_resultepath; \
+! _epath = _resultepath = NAME; \
+! if (_epath != NULL && *_epath != 0) \
+! if (FORCE_DOS_PATH_STYLE) { \
+! if ( cygwin_posix_path_list_p (_epath)) \
+! { \
+! _resultepath = (char *) xmalloc \
+! (cygwin_posix_to_win32_path_list_buf_size (_epath)); \
+! cygwin_posix_to_win32_path_list (_epath, _resultepath); \
+! } \
+! } else \
+! if ( !cygwin_posix_path_list_p (_epath)) \
+! { \
+! _resultepath = (char *) xmalloc \
+ (cygwin_win32_to_posix_path_list_buf_size (_epath)); \
+! cygwin_win32_to_posix_path_list (_epath, _resultepath); \
+ } \
+! (VAR) = _resultepath; \
+ } while (0)
+
+! #define GET_ENV_PATH_LIST(VAR,NAME) \
+! do { \
+! char *_epath; \
+! char *_resultepath; \
+! _epath = _resultepath = getenv (NAME); \
+! if (_epath != NULL && *_epath != 0) \
+! if (FORCE_DOS_PATH_STYLE) { \
+! if ( cygwin_posix_path_list_p (_epath)) \
+! { \
+! _resultepath = (char *) xmalloc \
+! (cygwin_posix_to_win32_path_list_buf_size (_epath)); \
+! cygwin_posix_to_win32_path_list (_epath, _resultepath); \
+! } \
+! } else \
+! if ( !cygwin_posix_path_list_p (_epath)) \
+! { \
+! _resultepath = (char *) xmalloc \
+! (cygwin_win32_to_posix_path_list_buf_size (_epath)); \
+! cygwin_win32_to_posix_path_list (_epath, _resultepath); \
+! } \
+! (VAR) = _resultepath; \
+! } while (0)
+! #endif
+
+ /* This is needed so that protoize will compile. */
+ #ifndef POSIX
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/xm-djgpp.h gcc-2.95.4/gcc/config/i386/xm-djgpp.h
+*** gcc-2.95.3.orig/gcc/config/i386/xm-djgpp.h Mon Jun 21 06:24:33 1999
+--- gcc-2.95.4/gcc/config/i386/xm-djgpp.h Wed Jun 6 01:36:32 2001
+***************
+*** 1,5 ****
+ /* Configuration for GNU C-compiler for Intel 80386 running DJGPP.
+! Copyright (C) 1988, 1996, 1998, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,5 ----
+ /* Configuration for GNU C-compiler for Intel 80386 running DJGPP.
+! Copyright (C) 1988, 1996, 1998, 1999, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 25,31 ****
+ /* Use semicolons to separate elements of a path. */
+ #define PATH_SEPARATOR ';'
+
+! #define EXECUTABLE_SUFFIX ".exe"
+
+ /* Even though we support "/", allow "\" since everybody tests both. */
+ #define DIR_SEPARATOR '/'
+--- 25,31 ----
+ /* Use semicolons to separate elements of a path. */
+ #define PATH_SEPARATOR ';'
+
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+
+ /* Even though we support "/", allow "\" since everybody tests both. */
+ #define DIR_SEPARATOR '/'
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/xm-dos.h gcc-2.95.4/gcc/config/i386/xm-dos.h
+*** gcc-2.95.3.orig/gcc/config/i386/xm-dos.h Sat Apr 10 05:27:12 1999
+--- gcc-2.95.4/gcc/config/i386/xm-dos.h Wed Jun 6 01:36:33 2001
+***************
+*** 1,5 ****
+ /* Configuration for GNU C-compiler for Intel 80386 running DOS.
+! Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,5 ----
+ /* Configuration for GNU C-compiler for Intel 80386 running DOS.
+! Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 31,37 ****
+ #define HAVE_DOS_BASED_FILE_SYSTEM
+
+ /* Suffix for executable file names. */
+! #define EXECUTABLE_SUFFIX ".exe"
+
+ #define MKTEMP_EACH_FILE 1
+
+--- 31,37 ----
+ #define HAVE_DOS_BASED_FILE_SYSTEM
+
+ /* Suffix for executable file names. */
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+
+ #define MKTEMP_EACH_FILE 1
+
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/xm-mingw32.h gcc-2.95.4/gcc/config/i386/xm-mingw32.h
+*** gcc-2.95.3.orig/gcc/config/i386/xm-mingw32.h Sat Apr 10 05:27:13 1999
+--- gcc-2.95.4/gcc/config/i386/xm-mingw32.h Wed Jun 6 01:36:33 2001
+***************
+*** 1,6 ****
+ /* Configuration for GNU C-compiler for hosting on Windows32.
+ using GNU tools and the Windows32 API Library.
+! Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,6 ----
+ /* Configuration for GNU C-compiler for hosting on Windows32.
+ using GNU tools and the Windows32 API Library.
+! Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 42,48 ****
+ like Cygwin does. */
+ #define HAVE_DOS_BASED_FILE_SYSTEM
+
+! #define EXECUTABLE_SUFFIX ".exe"
+
+ #undef PATH_SEPARATOR
+ #define PATH_SEPARATOR ';'
+--- 42,48 ----
+ like Cygwin does. */
+ #define HAVE_DOS_BASED_FILE_SYSTEM
+
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+
+ #undef PATH_SEPARATOR
+ #define PATH_SEPARATOR ';'
+diff -c3rpN gcc-2.95.3.orig/gcc/config/i386/xm-os2.h gcc-2.95.4/gcc/config/i386/xm-os2.h
+*** gcc-2.95.3.orig/gcc/config/i386/xm-os2.h Sat Apr 10 05:27:14 1999
+--- gcc-2.95.4/gcc/config/i386/xm-os2.h Wed Jun 6 01:36:33 2001
+***************
+*** 1,6 ****
+ /* Configuration for GNU compiler
+ for an Intel i386 or later processor running OS/2 2.x.
+! Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Contributed by Samuel Figueroa (figueroa@apple.com)
+
+ This file is part of GNU CC.
+--- 1,7 ----
+ /* Configuration for GNU compiler
+ for an Intel i386 or later processor running OS/2 2.x.
+! Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2001 Free Software
+! Foundation, Inc.
+ Contributed by Samuel Figueroa (figueroa@apple.com)
+
+ This file is part of GNU CC.
+*************** int spawnvp (int modeflag, char *path, c
+*** 61,71 ****
+ /* Allow handling of drive names. */
+ #define HAVE_DOS_BASED_FILE_SYSTEM
+
+! #define EXECUTABLE_SUFFIX ".exe"
+
+ /* The EMX compiler uses regular .o files */
+ #ifndef __EMX__
+! #define OBJECT_SUFFIX ".obj"
+ #endif
+
+ /* This is required to make temporary file names unique on file
+--- 62,72 ----
+ /* Allow handling of drive names. */
+ #define HAVE_DOS_BASED_FILE_SYSTEM
+
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+
+ /* The EMX compiler uses regular .o files */
+ #ifndef __EMX__
+! #define HOST_OBJECT_SUFFIX ".obj"
+ #endif
+
+ /* This is required to make temporary file names unique on file
+diff -c3rpN gcc-2.95.3.orig/gcc/config/m68k/mot3300-crt0.S gcc-2.95.4/gcc/config/m68k/mot3300-crt0.S
+*** gcc-2.95.3.orig/gcc/config/m68k/mot3300-crt0.S Wed Dec 16 21:07:03 1998
+--- gcc-2.95.4/gcc/config/m68k/mot3300-crt0.S Wed Jun 6 01:36:42 2001
+*************** __stop_monitor:
+*** 93,98 ****
+ COMM splimit%,4
+ COMM environ,4
+
+! IDENT ("$Id: mot3300-crt0.S,v 1.1.1.2 1998/01/14 19:39:06 law Exp $")
+ IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)")
+ IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)")
+--- 93,98 ----
+ COMM splimit%,4
+ COMM environ,4
+
+! IDENT ("$Id: mot3300-crt0.S,v 1.2 1998/12/16 21:07:03 law Exp $")
+ IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)")
+ IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)")
+diff -c3rpN gcc-2.95.3.orig/gcc/config/m68k/mot3300Mcrt0.S gcc-2.95.4/gcc/config/m68k/mot3300Mcrt0.S
+*** gcc-2.95.3.orig/gcc/config/m68k/mot3300Mcrt0.S Wed Dec 16 21:07:05 1998
+--- gcc-2.95.4/gcc/config/m68k/mot3300Mcrt0.S Wed Jun 6 01:36:42 2001
+*************** LOCAL_LABEL(endofstart):
+*** 137,142 ****
+ COMM environ,4
+ COMM _countbase,4
+
+! IDENT ("$Id: mot3300Mcrt0.S,v 1.1.1.2 1998/01/14 19:39:08 law Exp $")
+ IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)")
+ IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)")
+--- 137,142 ----
+ COMM environ,4
+ COMM _countbase,4
+
+! IDENT ("$Id: mot3300Mcrt0.S,v 1.2 1998/12/16 21:07:05 law Exp $")
+ IDENT ("Contributed by Manfred Hollstein (manfred@lts.sel.alcatel.de)")
+ IDENT ("Corrections by Philippe De Muyter (phdm@macqel.be)")
+diff -c3rpN gcc-2.95.3.orig/gcc/config/m88k/dgux.h gcc-2.95.4/gcc/config/m88k/dgux.h
+*** gcc-2.95.3.orig/gcc/config/m88k/dgux.h Wed Dec 16 21:08:12 1998
+--- gcc-2.95.4/gcc/config/m88k/dgux.h Wed Jun 6 01:36:47 2001
+*************** Boston, MA 02111-1307, USA. */
+*** 30,36 ****
+ (TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG)
+
+ #ifndef VERSION_INFO2
+! #define VERSION_INFO2 "$Revision: 1.3 $"
+ #endif
+ #ifndef NO_BUGS
+ #define AS_BUG_IMMEDIATE_LABEL
+--- 30,36 ----
+ (TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG)
+
+ #ifndef VERSION_INFO2
+! #define VERSION_INFO2 "$Revision: 1.4 $"
+ #endif
+ #ifndef NO_BUGS
+ #define AS_BUG_IMMEDIATE_LABEL
+diff -c3rpN gcc-2.95.3.orig/gcc/config/m88k/m88k.h gcc-2.95.4/gcc/config/m88k/m88k.h
+*** gcc-2.95.3.orig/gcc/config/m88k/m88k.h Wed Dec 16 21:08:23 1998
+--- gcc-2.95.4/gcc/config/m88k/m88k.h Wed Jun 6 01:36:48 2001
+*************** extern char * reg_names[];
+*** 198,210 ****
+ Redefined in sysv4.h, and luna.h. */
+ #define VERSION_INFO1 "m88k, "
+ #ifndef VERSION_INFO2
+! #define VERSION_INFO2 "$Revision: 1.11 $"
+ #endif
+
+ #ifndef VERSION_STRING
+ #define VERSION_STRING version_string
+ #ifdef __STDC__
+! #define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.11 $ " __DATE__
+ #else
+ #define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $"
+ #endif /* __STDC__ */
+--- 198,210 ----
+ Redefined in sysv4.h, and luna.h. */
+ #define VERSION_INFO1 "m88k, "
+ #ifndef VERSION_INFO2
+! #define VERSION_INFO2 "$Revision: 1.12 $"
+ #endif
+
+ #ifndef VERSION_STRING
+ #define VERSION_STRING version_string
+ #ifdef __STDC__
+! #define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.12 $ " __DATE__
+ #else
+ #define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $"
+ #endif /* __STDC__ */
+diff -c3rpN gcc-2.95.3.orig/gcc/config/mips/mips.md gcc-2.95.4/gcc/config/mips/mips.md
+*** gcc-2.95.3.orig/gcc/config/mips/mips.md Tue Jun 29 02:59:20 1999
+--- gcc-2.95.4/gcc/config/mips/mips.md Wed Jun 6 01:36:52 2001
+*************** move\\t%0,%z4\\n\\
+*** 10086,10091 ****
+--- 10086,10106 ----
+ (define_insn ""
+ [(set (match_operand:SF 0 "register_operand" "=f,f")
+ (if_then_else:SF
++ (match_operator 4 "equality_op"
++ [(match_operand:DI 1 "se_register_operand" "d,d")
++ (const_int 0)])
++ (match_operand:SF 2 "register_operand" "f,0")
++ (match_operand:SF 3 "register_operand" "0,f")))]
++ "mips_isa >= 4 && TARGET_HARD_FLOAT"
++ "@
++ mov%B4.s\\t%0,%2,%1
++ mov%b4.s\\t%0,%3,%1"
++ [(set_attr "type" "move")
++ (set_attr "mode" "SF")])
++
++ (define_insn ""
++ [(set (match_operand:SF 0 "register_operand" "=f,f")
++ (if_then_else:SF
+ (match_operator 3 "equality_op" [(match_operand:CC 4
+ "register_operand"
+ "z,z")
+*************** move\\t%0,%z4\\n\\
+*** 10104,10109 ****
+--- 10119,10139 ----
+ (if_then_else:DF
+ (match_operator 4 "equality_op"
+ [(match_operand:SI 1 "register_operand" "d,d")
++ (const_int 0)])
++ (match_operand:DF 2 "register_operand" "f,0")
++ (match_operand:DF 3 "register_operand" "0,f")))]
++ "mips_isa >= 4 && TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT"
++ "@
++ mov%B4.d\\t%0,%2,%1
++ mov%b4.d\\t%0,%3,%1"
++ [(set_attr "type" "move")
++ (set_attr "mode" "DF")])
++
++ (define_insn ""
++ [(set (match_operand:DF 0 "register_operand" "=f,f")
++ (if_then_else:DF
++ (match_operator 4 "equality_op"
++ [(match_operand:DI 1 "se_register_operand" "d,d")
+ (const_int 0)])
+ (match_operand:DF 2 "register_operand" "f,0")
+ (match_operand:DF 3 "register_operand" "0,f")))]
+diff -c3rpN gcc-2.95.3.orig/gcc/config/msdos/configur.bat gcc-2.95.4/gcc/config/msdos/configur.bat
+*** gcc-2.95.3.orig/gcc/config/msdos/configur.bat Wed Dec 16 21:10:28 1998
+--- gcc-2.95.4/gcc/config/msdos/configur.bat Wed Jun 6 01:36:58 2001
+***************
+*** 1,47 ****
+! @echo off
+! echo Configuring GCC for go32
+! rem This batch file assumes a unix-type "sed" program
+!
+! if not exist config\msdos\configure.bat chdir ..\..
+!
+! update config\i386\xm-dos.h config.h
+! update config\i386\xm-dos.h hconfig.h
+! update config\i386\xm-dos.h tconfig.h
+! update config\i386\go32.h tm.h
+! update config\i386\i386.md md
+! update config\i386\i386.c aux-output.c
+!
+! echo # Makefile generated by "configure.bat"> Makefile
+! echo all.dos: cccp cc1 cc1obj xgcc libgcc.a s-objlist >> Makefile
+! sed -f config/msdos/top.sed Makefile.in >> Makefile
+!
+! set LANG=
+!
+! if not exist ada\make-lang.in goto no_ada
+! sed -f config/msdos/top.sed ada\make-lang.in >> Makefile
+! sed -f config/msdos/top.sed ada\makefile.in > ada\Makefile
+! set LANG=%LANG% ada.&
+! :no_ada
+!
+! if not exist cp\make-lang.in goto no_cp
+! sed -f config/msdos/top.sed cp\make-lang.in >> Makefile
+! sed -f config/msdos/top.sed cp\makefile.in > cp\Makefile
+! set LANG=%LANG% c++.&
+! :no_cp
+!
+! echo lang.mostlyclean: %LANG% | sed "s/&/mostlyclean/g" >> Makefile
+! echo lang.clean: %LANG% | sed "s/&/clean/g" >> Makefile
+! echo lang.distclean: %LANG% | sed "s/&/distclean/g" >> Makefile
+! echo lang.maintainer-clean: %LANG% | sed "s/&/maintainer-clean/g" >> Makefile
+! echo /* options.h */ > options.h
+! if exist cp\lang-options.h echo #include "cp/lang-options.h" >> options.h
+! if exist ada\lang-options.h echo #include "ada/lang-options.h" >> options.h
+! if exist f\lang-options.h echo #include "f/lang-options.h" >> options.h
+! echo /* specs.h */ > specs.h
+! if exist cp\lang-specs.h echo #include "cp/lang-specs.h" >> specs.h
+! if exist ada\lang-specs.h echo #include "ada/lang-specs.h" >> specs.h
+! if exist f\lang-specs.h echo #include "f/lang-specs.h" >> specs.h
+!
+! echo #define MULTILIB_SELECT ". ;" > multilib.h1
+! update multilib.h1 multilib.h
+! del multilib.h1
+--- 1,47 ----
+! @echo off
+! echo Configuring GCC for go32
+! rem This batch file assumes a unix-type "sed" program
+!
+! if not exist config\msdos\configure.bat chdir ..\..
+!
+! update config\i386\xm-dos.h config.h
+! update config\i386\xm-dos.h hconfig.h
+! update config\i386\xm-dos.h tconfig.h
+! update config\i386\go32.h tm.h
+! update config\i386\i386.md md
+! update config\i386\i386.c aux-output.c
+!
+! echo # Makefile generated by "configure.bat"> Makefile
+! echo all.dos: cccp cc1 cc1obj xgcc libgcc.a s-objlist >> Makefile
+! sed -f config/msdos/top.sed Makefile.in >> Makefile
+!
+! set LANG=
+!
+! if not exist ada\make-lang.in goto no_ada
+! sed -f config/msdos/top.sed ada\make-lang.in >> Makefile
+! sed -f config/msdos/top.sed ada\makefile.in > ada\Makefile
+! set LANG=%LANG% ada.&
+! :no_ada
+!
+! if not exist cp\make-lang.in goto no_cp
+! sed -f config/msdos/top.sed cp\make-lang.in >> Makefile
+! sed -f config/msdos/top.sed cp\makefile.in > cp\Makefile
+! set LANG=%LANG% c++.&
+! :no_cp
+!
+! echo lang.mostlyclean: %LANG% | sed "s/&/mostlyclean/g" >> Makefile
+! echo lang.clean: %LANG% | sed "s/&/clean/g" >> Makefile
+! echo lang.distclean: %LANG% | sed "s/&/distclean/g" >> Makefile
+! echo lang.maintainer-clean: %LANG% | sed "s/&/maintainer-clean/g" >> Makefile
+! echo /* options.h */ > options.h
+! if exist cp\lang-options.h echo #include "cp/lang-options.h" >> options.h
+! if exist ada\lang-options.h echo #include "ada/lang-options.h" >> options.h
+! if exist f\lang-options.h echo #include "f/lang-options.h" >> options.h
+! echo /* specs.h */ > specs.h
+! if exist cp\lang-specs.h echo #include "cp/lang-specs.h" >> specs.h
+! if exist ada\lang-specs.h echo #include "ada/lang-specs.h" >> specs.h
+! if exist f\lang-specs.h echo #include "f/lang-specs.h" >> specs.h
+!
+! echo #define MULTILIB_SELECT ". ;" > multilib.h1
+! update multilib.h1 multilib.h
+! del multilib.h1
+diff -c3rpN gcc-2.95.3.orig/gcc/config/msdos/libgcc.mak gcc-2.95.4/gcc/config/msdos/libgcc.mak
+*** gcc-2.95.3.orig/gcc/config/msdos/libgcc.mak Wed Dec 16 21:10:29 1998
+--- gcc-2.95.4/gcc/config/msdos/libgcc.mak Wed Jun 6 01:36:58 2001
+***************
+*** 1,14 ****
+! # Build libgcc.a
+!
+! libgcc.a : libgcc1.c libgcc2.c mklibgcc
+! ./mklibgcc -c
+! ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc1.c $(LIB1FUNCS)
+! ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc2.c $(LIB2FUNCS)
+! -command /c mklibnow.bat
+! -command /c del libgcc.a
+! ar rvs libgcc.a lgcctmp/*.o
+!
+! mklibgcc : config/msdos/mklibgcc.c
+! gcc $(CFLAGS) $^ -o $@
+!
+!
+--- 1,14 ----
+! # Build libgcc.a
+!
+! libgcc.a : libgcc1.c libgcc2.c mklibgcc
+! ./mklibgcc -c
+! ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc1.c $(LIB1FUNCS)
+! ./mklibgcc '$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)' libgcc2.c $(LIB2FUNCS)
+! -command /c mklibnow.bat
+! -command /c del libgcc.a
+! ar rvs libgcc.a lgcctmp/*.o
+!
+! mklibgcc : config/msdos/mklibgcc.c
+! gcc $(CFLAGS) $^ -o $@
+!
+!
+diff -c3rpN gcc-2.95.3.orig/gcc/config/msdos/mklibgcc.c gcc-2.95.4/gcc/config/msdos/mklibgcc.c
+*** gcc-2.95.3.orig/gcc/config/msdos/mklibgcc.c Wed Dec 16 21:10:30 1998
+--- gcc-2.95.4/gcc/config/msdos/mklibgcc.c Wed Jun 6 01:36:58 2001
+***************
+*** 1,98 ****
+! #include <stdio.h>
+! #include <string.h>
+! #include <dirent.h>
+!
+! char *skips[] = {
+! "__main",
+! "_ctors",
+! "_exit",
+! "_ctor_list",
+! "_dtor_list",
+! 0
+! };
+!
+! int
+! do_clean()
+! {
+! DIR *dir;
+! struct dirent *de;
+! remove("mklibnow.bat");
+!
+! dir = opendir("lgcctmp");
+! if (!dir)
+! return 0;
+! while ((de=readdir(dir)))
+! {
+! char buf[30];
+! if (de->d_name[0] == '.')
+! continue;
+! sprintf(buf, "lgcctmp/%s", de->d_name);
+! unlink(buf);
+! }
+! closedir(dir);
+! return 0;
+! }
+!
+! int
+! main(int argc, char **argv)
+! {
+! char *cc = argv[1];
+! char *csrc=argv[2];
+! int i;
+! FILE *batfile;
+! FILE *cfile;
+!
+! if (argc > 1 && strcmp(argv[1], "-c")==0)
+! return do_clean();
+!
+! mkdir("lgcctmp", 0755);
+!
+! batfile = fopen("mklibnow.bat", "a");
+! if (!batfile)
+! {
+! perror("mklibnow.bat");
+! return 1;
+! }
+! fprintf(batfile, "@echo off\n");
+!
+! for (i=3; i<argc; i++)
+! {
+! char basename[30], *bp;
+! int s;
+! for (s=0; skips[s]; s++)
+! if (strcmp(skips[s], argv[i]) == 0)
+! break;
+! if (skips[s])
+! continue;
+! strcpy(basename, "lgcctmp/");
+! if (strncmp(argv[i], "_fix", 4)==0)
+! {
+! strcat(basename, "fx");
+! strcat(basename, argv[i]+4);
+! }
+! else if (strncmp(argv[i], "_float", 4)==0)
+! {
+! strcat(basename, "flt");
+! strcat(basename, argv[i]+6);
+! }
+! else
+! {
+! strcat(basename, argv[i]);
+! }
+! bp = basename + strlen(basename);
+! fprintf(batfile, "%s -c %s.c -o %s.o\n", cc, basename, basename);
+! strcpy(bp, ".c");
+! cfile = fopen(basename, "w");
+! if (cfile)
+! {
+! *bp = 0;
+! fprintf(cfile, "#define L%s\n#include \"%s\"\n", argv[i], csrc);
+! fclose(cfile);
+! }
+! else
+! perror(basename);
+! }
+!
+! fclose(batfile);
+! return 0;
+! }
+--- 1,98 ----
+! #include <stdio.h>
+! #include <string.h>
+! #include <dirent.h>
+!
+! char *skips[] = {
+! "__main",
+! "_ctors",
+! "_exit",
+! "_ctor_list",
+! "_dtor_list",
+! 0
+! };
+!
+! int
+! do_clean()
+! {
+! DIR *dir;
+! struct dirent *de;
+! remove("mklibnow.bat");
+!
+! dir = opendir("lgcctmp");
+! if (!dir)
+! return 0;
+! while ((de=readdir(dir)))
+! {
+! char buf[30];
+! if (de->d_name[0] == '.')
+! continue;
+! sprintf(buf, "lgcctmp/%s", de->d_name);
+! unlink(buf);
+! }
+! closedir(dir);
+! return 0;
+! }
+!
+! int
+! main(int argc, char **argv)
+! {
+! char *cc = argv[1];
+! char *csrc=argv[2];
+! int i;
+! FILE *batfile;
+! FILE *cfile;
+!
+! if (argc > 1 && strcmp(argv[1], "-c")==0)
+! return do_clean();
+!
+! mkdir("lgcctmp", 0755);
+!
+! batfile = fopen("mklibnow.bat", "a");
+! if (!batfile)
+! {
+! perror("mklibnow.bat");
+! return 1;
+! }
+! fprintf(batfile, "@echo off\n");
+!
+! for (i=3; i<argc; i++)
+! {
+! char basename[30], *bp;
+! int s;
+! for (s=0; skips[s]; s++)
+! if (strcmp(skips[s], argv[i]) == 0)
+! break;
+! if (skips[s])
+! continue;
+! strcpy(basename, "lgcctmp/");
+! if (strncmp(argv[i], "_fix", 4)==0)
+! {
+! strcat(basename, "fx");
+! strcat(basename, argv[i]+4);
+! }
+! else if (strncmp(argv[i], "_float", 4)==0)
+! {
+! strcat(basename, "flt");
+! strcat(basename, argv[i]+6);
+! }
+! else
+! {
+! strcat(basename, argv[i]);
+! }
+! bp = basename + strlen(basename);
+! fprintf(batfile, "%s -c %s.c -o %s.o\n", cc, basename, basename);
+! strcpy(bp, ".c");
+! cfile = fopen(basename, "w");
+! if (cfile)
+! {
+! *bp = 0;
+! fprintf(cfile, "#define L%s\n#include \"%s\"\n", argv[i], csrc);
+! fclose(cfile);
+! }
+! else
+! perror(basename);
+! }
+!
+! fclose(batfile);
+! return 0;
+! }
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/rs6000.c gcc-2.95.4/gcc/config/rs6000/rs6000.c
+*** gcc-2.95.3.orig/gcc/config/rs6000/rs6000.c Thu Jan 25 14:03:34 2001
+--- gcc-2.95.4/gcc/config/rs6000/rs6000.c Wed Jun 6 01:37:06 2001
+***************
+*** 1,6 ****
+ /* Subroutines used for code generation on IBM RS/6000.
+! Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+! Free Software Foundation, Inc.
+ Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ This file is part of GNU CC.
+--- 1,6 ----
+ /* Subroutines used for code generation on IBM RS/6000.
+! Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+! 2001 Free Software Foundation, Inc.
+ Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ This file is part of GNU CC.
+*************** call_operand (op, mode)
+*** 1193,1199 ****
+ || (GET_CODE (op) == REG && REGNO (op) >= FIRST_PSEUDO_REGISTER));
+ }
+
+-
+ /* Return 1 if the operand is a SYMBOL_REF for a function known to be in
+ this file and the function is not weakly defined. */
+
+--- 1193,1198 ----
+*************** current_file_function_operand (op, mode)
+*** 1202,1213 ****
+ register rtx op;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
+ {
+! return (GET_CODE (op) == SYMBOL_REF
+! && (SYMBOL_REF_FLAG (op)
+! || (op == XEXP (DECL_RTL (current_function_decl), 0)
+! && !DECL_WEAK (current_function_decl))));
+! }
+
+
+ /* Return 1 if this operand is a valid input for a move insn. */
+
+--- 1201,1218 ----
+ register rtx op;
+ enum machine_mode mode ATTRIBUTE_UNUSED;
+ {
+! if (GET_CODE(op) != SYMBOL_REF)
+! return 0;
+!
+! if (op == XEXP (DECL_RTL (current_function_decl), 0)
+! && !DECL_WEAK (current_function_decl))
+! {
+! SYMBOL_REF_FLAG(op) = 1;
+! return 1;
+! }
+
++ return SYMBOL_REF_FLAG (op) != 0;
++ }
+
+ /* Return 1 if this operand is a valid input for a move insn. */
+
+*************** init_cumulative_args (cum, fntype, libna
+*** 1381,1386 ****
+--- 1386,1394 ----
+ if (cum->call_cookie & CALL_LONG)
+ fprintf (stderr, " longcall,");
+
++ if (cum->call_cookie & CALL_SHORT)
++ fprintf (stderr, " shortcall,");
++
+ fprintf (stderr, " proto = %d, nargs = %d\n",
+ cum->prototype, cum->nargs_prototype);
+ }
+*************** function_arg_padding (mode, type)
+*** 1419,1425 ****
+
+ Windows NT wants anything >= 8 bytes to be double word aligned.
+
+! V.4 wants long longs to be double word aligned. */
+
+ int
+ function_arg_boundary (mode, type)
+--- 1427,1434 ----
+
+ Windows NT wants anything >= 8 bytes to be double word aligned.
+
+! V.4 wants long longs to be double word aligned.
+! WRS272 does not align DFmode to 64 */
+
+ int
+ function_arg_boundary (mode, type)
+*************** function_arg_boundary (mode, type)
+*** 1427,1433 ****
+ tree type;
+ {
+ if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+! && (mode == DImode || mode == DFmode))
+ return 64;
+
+ if (DEFAULT_ABI != ABI_NT || TARGET_64BIT)
+--- 1436,1442 ----
+ tree type;
+ {
+ if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+! && (mode == DImode || ((!TARGET_VXCOMPAT272) && mode == DFmode)))
+ return 64;
+
+ if (DEFAULT_ABI != ABI_NT || TARGET_64BIT)
+*************** function_arg_advance (cum, mode, type, n
+*** 1461,1467 ****
+ cum->fregno++;
+ else
+ {
+! if (mode == DFmode)
+ cum->words += cum->words & 1;
+ cum->words += RS6000_ARG_SIZE (mode, type, 1);
+ }
+--- 1470,1477 ----
+ cum->fregno++;
+ else
+ {
+! /* DFmode is 32-, not 64- aligned on stack in 272 abi */
+! if (mode == DFmode && (!TARGET_VXCOMPAT272))
+ cum->words += cum->words & 1;
+ cum->words += RS6000_ARG_SIZE (mode, type, 1);
+ }
+*************** rs6000_valid_type_attribute_p (type, att
+*** 5676,5681 ****
+--- 5686,5695 ----
+ if (is_attribute_p ("longcall", identifier))
+ return (args == NULL_TREE);
+
++ /* Shortcall overrides implicit longcalls */
++ if (is_attribute_p ("shortcall", identifier))
++ return (args == NULL_TREE);
++
+ if (DEFAULT_ABI == ABI_NT)
+ {
+ /* Stdcall attribute says callee is responsible for popping arguments
+*************** rs6000_dll_import_ref (call_ref)
+*** 5775,5780 ****
+--- 5789,5816 ----
+ return reg2;
+ }
+
++ /* A C expression whose value is nonzero if a 32 bit "longcall" should be
++ generated for this call. We generate a longcall if the function
++ is not declared __attribute__ ((shortcall), AND:
++ (i) the function is declared __attribute__ ((longcall)), or
++ (ii) -mlongcall is enabled and we don't know for sure that the target
++ function is declared in this file
++ This function will typically be called by C fragments in the machine
++ description file. call_ref and call_cookie will correspond to
++ matched rtl operands.
++ */
++
++ int
++ rs6000_is_longcall_p (call_ref, call_cookie)
++ rtx call_ref;
++ int call_cookie;
++ {
++ return !(call_cookie & CALL_SHORT) &&
++ ((call_cookie & CALL_LONG) ||
++ (TARGET_LONGCALL &&
++ !current_file_function_operand (call_ref, VOIDmode)));
++ }
++
+ /* Return a reference suitable for calling a function with the longcall attribute. */
+ struct rtx_def *
+ rs6000_longcall_ref (call_ref)
+*************** rs6000_encode_section_info (decl)
+*** 5890,5898 ****
+ if (TREE_CODE (decl) == FUNCTION_DECL)
+ {
+ rtx sym_ref = XEXP (DECL_RTL (decl), 0);
+ if ((TREE_ASM_WRITTEN (decl) || ! TREE_PUBLIC (decl))
+ && !DECL_WEAK (decl))
+! SYMBOL_REF_FLAG (sym_ref) = 1;
+
+ if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT)
+ {
+--- 5926,5935 ----
+ if (TREE_CODE (decl) == FUNCTION_DECL)
+ {
+ rtx sym_ref = XEXP (DECL_RTL (decl), 0);
++
+ if ((TREE_ASM_WRITTEN (decl) || ! TREE_PUBLIC (decl))
+ && !DECL_WEAK (decl))
+! SYMBOL_REF_FLAG (sym_ref) = 1;
+
+ if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT)
+ {
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/rs6000.h gcc-2.95.4/gcc/config/rs6000/rs6000.h
+*** gcc-2.95.3.orig/gcc/config/rs6000/rs6000.h Wed Mar 22 18:54:05 2000
+--- gcc-2.95.4/gcc/config/rs6000/rs6000.h Wed Jun 6 01:37:07 2001
+***************
+*** 1,5 ****
+ /* Definitions of target machine for GNU compiler, for IBM RS/6000.
+! Copyright (C) 1992, 93-8, 1999 Free Software Foundation, Inc.
+ Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ This file is part of GNU CC.
+--- 1,5 ----
+ /* Definitions of target machine for GNU compiler, for IBM RS/6000.
+! Copyright (C) 1992, 93-8, 1999, 2001 Free Software Foundation, Inc.
+ Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
+
+ This file is part of GNU CC.
+*************** Boston, MA 02111-1307, USA. */
+*** 52,58 ****
+
+ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)"
+
+! /* Common CPP definitions used by CPP_SPEC among the various targets
+ for handling -mcpu=xxx switches. */
+ #define CPP_CPU_SPEC \
+ "%{!mcpu*: \
+--- 52,58 ----
+
+ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)"
+
+! /* Common CPP definitions used by CPP_SPEC amongst the various targets
+ for handling -mcpu=xxx switches. */
+ #define CPP_CPU_SPEC \
+ "%{!mcpu*: \
+*************** Boston, MA 02111-1307, USA. */
+*** 108,114 ****
+ #define CPP_SYSV_DEFAULT_SPEC ""
+ #endif
+
+! /* Common ASM definitions used by ASM_SPEC among the various targets
+ for handling -mcpu=xxx switches. */
+ #define ASM_CPU_SPEC \
+ "%{!mcpu*: \
+--- 108,114 ----
+ #define CPP_SYSV_DEFAULT_SPEC ""
+ #endif
+
+! /* Common ASM definitions used by ASM_SPEC amongst the various targets
+ for handling -mcpu=xxx switches. */
+ #define ASM_CPU_SPEC \
+ "%{!mcpu*: \
+*************** extern int target_flags;
+*** 279,284 ****
+--- 279,294 ----
+ /* Disable fused multiply/add operations */
+ #define MASK_NO_FUSED_MADD 0x00020000
+
++ /* Use a conservative heuristic to determine whether to
++ make a direct (26 bit) call or an indirect (32 bit) call:
++ We make a longcall unless the target function is declared
++ static, or its definition has already been seen, or
++ it is declared with the attribute "shortcall" .
++ An underlying assumption is that individual translation
++ units span less than 32MB so that it is always safe
++ to make direct calls to functions in the same module. */
++ #define MASK_LONGCALL 0x00080000
++
+ #define TARGET_POWER (target_flags & MASK_POWER)
+ #define TARGET_POWER2 (target_flags & MASK_POWER2)
+ #define TARGET_POWERPC (target_flags & MASK_POWERPC)
+*************** extern int target_flags;
+*** 297,307 ****
+--- 307,319 ----
+ #define TARGET_STRING_SET (target_flags & MASK_STRING_SET)
+ #define TARGET_NO_UPDATE (target_flags & MASK_NO_UPDATE)
+ #define TARGET_NO_FUSED_MADD (target_flags & MASK_NO_FUSED_MADD)
++ #define TARGET_VXCOMPAT272 (FALSE)
+
+ #define TARGET_32BIT (! TARGET_64BIT)
+ #define TARGET_HARD_FLOAT (! TARGET_SOFT_FLOAT)
+ #define TARGET_UPDATE (! TARGET_NO_UPDATE)
+ #define TARGET_FUSED_MADD (! TARGET_NO_FUSED_MADD)
++ #define TARGET_LONGCALL (target_flags & MASK_LONGCALL)
+
+ /* Pseudo target to indicate whether the object format is ELF
+ (to get around not having conditional compilation in the md file) */
+*************** extern int target_flags;
+*** 390,395 ****
+--- 402,409 ----
+ {"no-update", MASK_NO_UPDATE}, \
+ {"fused-madd", - MASK_NO_FUSED_MADD}, \
+ {"no-fused-madd", MASK_NO_FUSED_MADD}, \
++ {"longcall", MASK_LONGCALL}, \
++ {"no-longcall", - MASK_LONGCALL}, \
+ SUBTARGET_SWITCHES \
+ {"", TARGET_DEFAULT}}
+
+*************** extern int rs6000_sysv_varargs_p;
+*** 1407,1412 ****
+--- 1421,1427 ----
+ #define CALL_V4_CLEAR_FP_ARGS 0x00000002 /* V.4, no FP args passed */
+ #define CALL_V4_SET_FP_ARGS 0x00000004 /* V.4, FP args were passed */
+ #define CALL_LONG 0x00000008 /* always call indirect */
++ #define CALL_SHORT 0x00000010 /* always call direct */
+
+ /* Define cutoff for using external functions to save floating point */
+ #define FP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) == 62 || (FIRST_REG) == 63)
+*************** extern int toc_initialized;
+*** 2620,2631 ****
+
+ The csect for the function will have already been created by the
+ `text_section' call previously done. We do have to go back to that
+! csect, however. */
+
+ /* ??? What do the 16 and 044 in the .function line really mean? */
+
+ #define ASM_DECLARE_FUNCTION_NAME(FILE,NAME,DECL) \
+! { if (TREE_PUBLIC (DECL)) \
+ { \
+ fputs ("\t.globl .", FILE); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+--- 2635,2654 ----
+
+ The csect for the function will have already been created by the
+ `text_section' call previously done. We do have to go back to that
+! csect, however.
+!
+! We also record the fact that the function exists in the current
+! compilation unit and so can be reached by a short branch by
+! setting SYMBOL_REF_FLAG. */
+
+ /* ??? What do the 16 and 044 in the .function line really mean? */
+
+ #define ASM_DECLARE_FUNCTION_NAME(FILE,NAME,DECL) \
+! { \
+! rtx sym_ref = XEXP (DECL_RTL (DECL), 0); \
+! if (!DECL_WEAK (DECL)) \
+! SYMBOL_REF_FLAG (sym_ref) = 1; \
+! if (TREE_PUBLIC (DECL)) \
+ { \
+ fputs ("\t.globl .", FILE); \
+ RS6000_OUTPUT_BASENAME (FILE, NAME); \
+*************** extern int rs6000_valid_decl_attribute_p
+*** 3326,3331 ****
+--- 3349,3355 ----
+ extern int rs6000_valid_type_attribute_p ();
+ extern void rs6000_set_default_type_attributes ();
+ extern struct rtx_def *rs6000_dll_import_ref ();
++ extern int rs6000_is_longcall_p ();
+ extern struct rtx_def *rs6000_longcall_ref ();
+ extern int function_arg_padding ();
+ extern void toc_section ();
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/rs6000.md gcc-2.95.4/gcc/config/rs6000/rs6000.md
+*** gcc-2.95.3.orig/gcc/config/rs6000/rs6000.md Thu Jan 25 14:03:35 2001
+--- gcc-2.95.4/gcc/config/rs6000/rs6000.md Wed Jun 6 01:37:07 2001
+***************
+*** 6184,6190 ****
+ reg. So expand it. */
+ if (GET_CODE (operands[0]) == SUBREG
+ && GET_CODE (SUBREG_REG (operands[0])) == REG
+! && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER)
+ operands[0] = alter_subreg (operands[0]);
+ if (GET_CODE (operands[1]) == SUBREG
+ && GET_CODE (SUBREG_REG (operands[1])) == REG
+--- 6184,6192 ----
+ reg. So expand it. */
+ if (GET_CODE (operands[0]) == SUBREG
+ && GET_CODE (SUBREG_REG (operands[0])) == REG
+! && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER
+! && (! REG_FUNCTION_VALUE_P (SUBREG_REG (operands[0]))
+! || ! rtx_equal_function_value_matters))
+ operands[0] = alter_subreg (operands[0]);
+ if (GET_CODE (operands[1]) == SUBREG
+ && GET_CODE (SUBREG_REG (operands[1])) == REG
+***************
+*** 8048,8053 ****
+--- 8050,8057 ----
+ ""
+ "
+ {
++ int is_longcall;
++
+ if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != CONST_INT)
+ abort ();
+
+***************
+*** 8061,8070 ****
+ operands[2] = GEN_INT ((int)CALL_NORMAL);
+ }
+
+! if (GET_CODE (operands[0]) != SYMBOL_REF
+! || (INTVAL (operands[2]) & CALL_LONG) != 0)
+ {
+! if (INTVAL (operands[2]) & CALL_LONG)
+ operands[0] = rs6000_longcall_ref (operands[0]);
+
+ if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_SOLARIS)
+--- 8065,8075 ----
+ operands[2] = GEN_INT ((int)CALL_NORMAL);
+ }
+
+! is_longcall = rs6000_is_longcall_p(operands[0], INTVAL(operands[2]));
+!
+! if (GET_CODE (operands[0]) != SYMBOL_REF || is_longcall)
+ {
+! if (is_longcall)
+ operands[0] = rs6000_longcall_ref (operands[0]);
+
+ if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_SOLARIS)
+***************
+*** 8110,8115 ****
+--- 8115,8122 ----
+ ""
+ "
+ {
++ int is_longcall;
++
+ if (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != CONST_INT)
+ abort ();
+
+***************
+*** 8123,8137 ****
+ operands[3] = GEN_INT ((int)CALL_NORMAL);
+ }
+
+! if (GET_CODE (operands[1]) != SYMBOL_REF
+! || (INTVAL (operands[3]) & CALL_LONG) != 0)
+ {
+! if (INTVAL (operands[3]) & CALL_LONG)
+ operands[1] = rs6000_longcall_ref (operands[1]);
+
+ if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_SOLARIS)
+ emit_call_insn (gen_call_value_indirect_sysv (operands[0], operands[1],
+! operands[2], operands[3]));
+ else
+ {
+ rtx toc_reg = gen_rtx_REG (Pmode, 2);
+--- 8130,8145 ----
+ operands[3] = GEN_INT ((int)CALL_NORMAL);
+ }
+
+! is_longcall = rs6000_is_longcall_p(operands[1], INTVAL(operands[3]));
+!
+! if (GET_CODE (operands[1]) != SYMBOL_REF || is_longcall)
+ {
+! if (is_longcall)
+ operands[1] = rs6000_longcall_ref (operands[1]);
+
+ if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_SOLARIS)
+ emit_call_insn (gen_call_value_indirect_sysv (operands[0], operands[1],
+! operands[2], operands[3]));
+ else
+ {
+ rtx toc_reg = gen_rtx_REG (Pmode, 2);
+***************
+*** 8177,8183 ****
+ (match_operand 1 "" "g,g"))
+ (use (match_operand:SI 2 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 3 "=l,l"))]
+! "(INTVAL (operands[2]) & CALL_LONG) == 0"
+ "*
+ {
+ if (INTVAL (operands[2]) & CALL_V4_SET_FP_ARGS)
+--- 8185,8191 ----
+ (match_operand 1 "" "g,g"))
+ (use (match_operand:SI 2 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 3 "=l,l"))]
+! "!rs6000_is_longcall_p(operands[0], INTVAL (operands[2]))"
+ "*
+ {
+ if (INTVAL (operands[2]) & CALL_V4_SET_FP_ARGS)
+***************
+*** 8196,8202 ****
+ (match_operand 1 "" "g,g"))
+ (use (match_operand:SI 2 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 3 "=l,l"))]
+! "TARGET_64BIT && (INTVAL (operands[2]) & CALL_LONG) == 0"
+ "*
+ {
+ if (INTVAL (operands[2]) & CALL_V4_SET_FP_ARGS)
+--- 8204,8210 ----
+ (match_operand 1 "" "g,g"))
+ (use (match_operand:SI 2 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 3 "=l,l"))]
+! "TARGET_64BIT && !rs6000_is_longcall_p(operands[0], INTVAL (operands[2]))"
+ "*
+ {
+ if (INTVAL (operands[2]) & CALL_V4_SET_FP_ARGS)
+***************
+*** 8216,8222 ****
+ (match_operand 2 "" "g,g")))
+ (use (match_operand:SI 3 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 4 "=l,l"))]
+! "(INTVAL (operands[3]) & CALL_LONG) == 0"
+ "*
+ {
+ if (INTVAL (operands[3]) & CALL_V4_SET_FP_ARGS)
+--- 8224,8230 ----
+ (match_operand 2 "" "g,g")))
+ (use (match_operand:SI 3 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 4 "=l,l"))]
+! "!rs6000_is_longcall_p(operands[1], INTVAL (operands[3]))"
+ "*
+ {
+ if (INTVAL (operands[3]) & CALL_V4_SET_FP_ARGS)
+***************
+*** 8237,8243 ****
+ (match_operand 2 "" "g,g")))
+ (use (match_operand:SI 3 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 4 "=l,l"))]
+! "TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
+ "*
+ {
+ if (INTVAL (operands[3]) & CALL_V4_SET_FP_ARGS)
+--- 8245,8251 ----
+ (match_operand 2 "" "g,g")))
+ (use (match_operand:SI 3 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 4 "=l,l"))]
+! "TARGET_64BIT && !rs6000_is_longcall_p(operands[1], INTVAL (operands[3]))"
+ "*
+ {
+ if (INTVAL (operands[3]) & CALL_V4_SET_FP_ARGS)
+***************
+*** 8312,8318 ****
+ (use (match_operand:SI 2 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 3 "=l,l"))]
+ "(DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+! && (INTVAL (operands[2]) & CALL_LONG) == 0"
+ "*
+ {
+ /* Indirect calls should go through call_indirect */
+--- 8320,8326 ----
+ (use (match_operand:SI 2 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 3 "=l,l"))]
+ "(DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+! && !rs6000_is_longcall_p(operands[0], INTVAL (operands[2]))"
+ "*
+ {
+ /* Indirect calls should go through call_indirect */
+***************
+*** 8387,8393 ****
+ (use (match_operand:SI 3 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 4 "=l,l"))]
+ "(DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+! && (INTVAL (operands[3]) & CALL_LONG) == 0"
+ "*
+ {
+ /* This should be handled by call_value_indirect */
+--- 8395,8401 ----
+ (use (match_operand:SI 3 "immediate_operand" "O,n"))
+ (clobber (match_scratch:SI 4 "=l,l"))]
+ "(DEFAULT_ABI == ABI_AIX_NODESC || DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
+! && !rs6000_is_longcall_p(operands[1], INTVAL (operands[3]))"
+ "*
+ {
+ /* This should be handled by call_value_indirect */
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/sysv4.h gcc-2.95.4/gcc/config/rs6000/sysv4.h
+*** gcc-2.95.3.orig/gcc/config/rs6000/sysv4.h Thu Jan 25 14:03:37 2001
+--- gcc-2.95.4/gcc/config/rs6000/sysv4.h Wed Jun 6 01:37:07 2001
+***************
+*** 1,5 ****
+ /* Target definitions for GNU compiler for PowerPC running System V.4
+! Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Contributed by Cygnus Support.
+
+ This file is part of GNU CC.
+--- 1,6 ----
+ /* Target definitions for GNU compiler for PowerPC running System V.4
+! Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software
+! Foundation, Inc.
+ Contributed by Cygnus Support.
+
+ This file is part of GNU CC.
+*************** do { \
+*** 184,190 ****
+ else \
+ error ("Bad value for -msdata=%s", rs6000_sdata_name); \
+ } \
+! else if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \
+ { \
+ rs6000_sdata = SDATA_DATA; \
+ rs6000_sdata_name = "data"; \
+--- 185,191 ----
+ else \
+ error ("Bad value for -msdata=%s", rs6000_sdata_name); \
+ } \
+! else if (!TARGET_VXCOMPAT272 && (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)) \
+ { \
+ rs6000_sdata = SDATA_DATA; \
+ rs6000_sdata_name = "data"; \
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/t-ppcgas-vx gcc-2.95.4/gcc/config/rs6000/t-ppcgas-vx
+*** gcc-2.95.3.orig/gcc/config/rs6000/t-ppcgas-vx Thu Jan 1 00:00:00 1970
+--- gcc-2.95.4/gcc/config/rs6000/t-ppcgas-vx Wed Jun 6 01:37:08 2001
+***************
+*** 0 ****
+--- 1,10 ----
++ # PowerPC embedded support with gas.
++ # Build libgcc.a with different options.
++
++ MULTILIB_OPTIONS = msoft-float
++
++ MULTILIB_DIRNAMES = nof
++
++ MULTILIB_EXTRA_OPTS = mno-eabi mstrict-align mbig mcall-sysv mlongcall
++ MULTILIB_EXCEPTIONS =
++ MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT}
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/vxppc.h gcc-2.95.4/gcc/config/rs6000/vxppc.h
+*** gcc-2.95.3.orig/gcc/config/rs6000/vxppc.h Mon May 17 01:30:56 1999
+--- gcc-2.95.4/gcc/config/rs6000/vxppc.h Wed Jun 6 01:37:09 2001
+***************
+*** 1,5 ****
+ /* Definitions of target machine for GNU compiler. Vxworks PowerPC version.
+! Copyright (C) 1996 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,5 ----
+ /* Definitions of target machine for GNU compiler. Vxworks PowerPC version.
+! Copyright (C) 1996, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 20,25 ****
+--- 20,27 ----
+
+ /* This file just exists to give specs for the PowerPC running on VxWorks. */
+
++ #define SDATA_DEFAULT_SIZE 0
++
+ #include "rs6000/sysv4.h"
+
+ /* ??? This file redefines CPP_SPEC which is wrong. It should instead define
+*************** Boston, MA 02111-1307, USA. */
+*** 29,34 ****
+--- 31,37 ----
+
+ #undef CPP_SPEC
+ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_sysv) %(cpp_endian) %(cpp_cpu) \
++ %{mrelocatable: -D_RELOCATABLE} \
+ %{mads: %(cpp_os_ads) } \
+ %{myellowknife: %(cpp_os_yellowknife) } \
+ %{mmvme: %(cpp_os_mvme) } \
+*************** Boston, MA 02111-1307, USA. */
+*** 47,59 ****
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "\
+ -D__vxworks -Asystem(vxworks) -Asystem(embedded) \
+! -Acpu(powerpc) -Amachine(powerpc)"
+
+ /* VxWorks does all the library stuff itself. */
+
+ #undef LIB_SPEC
+ #define LIB_SPEC ""
+
+ /* VxWorks uses object files, not loadable images. make linker just
+ combine objects. */
+
+--- 50,73 ----
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "\
+ -D__vxworks -Asystem(vxworks) -Asystem(embedded) \
+! -Acpu(powerpc) -Amachine(powerpc) -D__PPC__ -D__VXVARGS__"
+!
+! /* This option makes gcc emit code that uses the variant (partial)
+! implementation of eabi that was current at the time of 2.7.2 */
+!
+! #undef TARGET_VXCOMPAT272
+! #define TARGET_VXCOMPAT272 (1) /* Fix double alignment to only four bytes */
+
+ /* VxWorks does all the library stuff itself. */
+
+ #undef LIB_SPEC
+ #define LIB_SPEC ""
+
++ /* Brad M. Garcia's patch for making operator new work */
++
++ #undef SIZE_TYPE
++ #define SIZE_TYPE "unsigned int"
++
+ /* VxWorks uses object files, not loadable images. make linker just
+ combine objects. */
+
+*************** Boston, MA 02111-1307, USA. */
+*** 69,73 ****
+--- 83,122 ----
+ #define ENDFILE_SPEC ""
+
+ /* We use stabs-in-elf for debugging */
++
+ #undef PREFERRED_DEBUGGING_TYPE
+ #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
++
++ /* But, to make this work, we have to output the stabs for the function
++ name *first*... */
++
++ #define DBX_FUNCTION_FIRST
++
++ /* More backward compatibility patches: we undef these two in
++ order to force the compiler to output our static constructors
++ and destructors in the fashion to which it is accustomed.... */
++
++ #undef ASM_OUTPUT_CONSTRUCTOR
++ #undef ASM_OUTPUT_DESTRUCTOR
++
++ /* And this puts $ signs into the static object c/d-tors that
++ need to be found by WRS munch. It also makes libgcc symbols
++ match WRS symbols */
++
++ #undef NO_DOLLAR_IN_LABEL
++
++ /* The default definitions of these duplicate an endian define
++ that WRS include in their system header files so remove it */
++
++ #undef CPP_ENDIAN_BIG_SPEC
++ #define CPP_ENDIAN_BIG_SPEC "-D__BIG_ENDIAN__ -Amachine(bigendian)"
++
++ #undef CPP_ENDIAN_LITTLE_SPEC
++ #define CPP_ENDIAN_LITTLE_SPEC "-D__LITTLE_ENDIAN__ -Amachine(littleendian)"
++
++ /* Work under DOS ? */
++ #define CYGWIN_USES_DOS_PATHS
++ #define CYGWIN_VXWORKS_PATHS
++
++ /* WRS runtime does not need a separate math library. */
++ #define MATH_LIBRARY ""
+diff -c3rpN gcc-2.95.3.orig/gcc/config/rs6000/xm-cygwin.h gcc-2.95.4/gcc/config/rs6000/xm-cygwin.h
+*** gcc-2.95.3.orig/gcc/config/rs6000/xm-cygwin.h Wed Dec 16 21:12:47 1998
+--- gcc-2.95.4/gcc/config/rs6000/xm-cygwin.h Wed Jun 6 01:37:10 2001
+***************
+*** 1 ****
+! #define EXECUTABLE_SUFFIX ".exe"
+--- 1 ----
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+diff -c3rpN gcc-2.95.3.orig/gcc/config/sparc/sparc.md gcc-2.95.4/gcc/config/sparc/sparc.md
+*** gcc-2.95.3.orig/gcc/config/sparc/sparc.md Thu Jan 25 14:03:37 2001
+--- gcc-2.95.4/gcc/config/sparc/sparc.md Wed Jun 6 01:37:14 2001
+***************
+*** 5211,5217 ****
+ (define_insn "muldi3_v8plus"
+ [(set (match_operand:DI 0 "register_operand" "=r,h")
+ (mult:DI (match_operand:DI 1 "arith_double_operand" "%r,0")
+! (match_operand:DI 2 "arith_double_operand" "rHI,rHI")))
+ (clobber (match_scratch:SI 3 "=&h,X"))
+ (clobber (match_scratch:SI 4 "=&h,X"))]
+ "TARGET_V8PLUS"
+--- 5211,5217 ----
+ (define_insn "muldi3_v8plus"
+ [(set (match_operand:DI 0 "register_operand" "=r,h")
+ (mult:DI (match_operand:DI 1 "arith_double_operand" "%r,0")
+! (match_operand:DI 2 "arith_double_operand" "rI,rI")))
+ (clobber (match_scratch:SI 3 "=&h,X"))
+ (clobber (match_scratch:SI 4 "=&h,X"))]
+ "TARGET_V8PLUS"
+***************
+*** 5221,5226 ****
+--- 5221,5233 ----
+ output_asm_insn (\"srl\\t%L1, 0, %L1\", operands);
+ if (which_alternative == 1)
+ output_asm_insn (\"sllx\\t%H1, 32, %H1\", operands);
++ if (GET_CODE (operands[2]) == CONST_INT)
++ {
++ if (which_alternative == 1)
++ return \"or\\t%L1, %H1, %H1\\n\\tmulx\\t%H1, %2, %L0\;srlx\\t%L0, 32, %H0\";
++ else
++ return \"sllx\\t%H1, 32, %3\\n\\tor\\t%L1, %3, %3\\n\\tmulx\\t%3, %2, %3\\n\\tsrlx\\t%3, 32, %H0\\n\\tmov\\t%3, %L0\";
++ }
+ if (sparc_check_64 (operands[2], insn) <= 0)
+ output_asm_insn (\"srl\\t%L2, 0, %L2\", operands);
+ if (which_alternative == 1)
+diff -c3rpN gcc-2.95.3.orig/gcc/config/vax/vms.h gcc-2.95.4/gcc/config/vax/vms.h
+*** gcc-2.95.3.orig/gcc/config/vax/vms.h Wed Dec 16 21:14:29 1998
+--- gcc-2.95.4/gcc/config/vax/vms.h Wed Jun 6 01:37:19 2001
+***************
+*** 1,5 ****
+ /* Output variables, constants and external declarations, for GNU compiler.
+! Copyright (C) 1988, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,6 ----
+ /* Output variables, constants and external declarations, for GNU compiler.
+! Copyright (C) 1988, 1994, 1995, 1996, 1997, 2001 Free Software
+! Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** the Free Software Foundation, 59 Temple
+*** 19,24 ****
+--- 20,28 ----
+ Boston, MA 02111-1307, USA. */
+
+ #define VMS_TARGET
++
++ #define TARGET_EXECUTABLE_SUFFIX ".exe"
++ #define TARGET_OBJECT_SUFFIX ".obj"
+
+ /* This enables certain macros in vax.h, which will make an indirect
+ reference to an external symbol an invalid address. This needs to be
+diff -c3rpN gcc-2.95.3.orig/gcc/config/vax/xm-vms.h gcc-2.95.4/gcc/config/vax/xm-vms.h
+*** gcc-2.95.3.orig/gcc/config/vax/xm-vms.h Wed Dec 16 21:14:33 1998
+--- gcc-2.95.4/gcc/config/vax/xm-vms.h Wed Jun 6 01:37:20 2001
+***************
+*** 1,5 ****
+ /* Configuration for GNU C-compiler for Vax.
+! Copyright (C) 1987, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,6 ----
+ /* Configuration for GNU C-compiler for Vax.
+! Copyright (C) 1987, 1994, 1995, 1996, 1997, 2001 Free Software
+! Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** Boston, MA 02111-1307, USA. */
+*** 71,76 ****
+--- 72,80 ----
+ #define X_OK 1
+ #define F_OK 0
+ #endif
++
++ #define HOST_EXECUTABLE_SUFFIX ".exe"
++ #define HOST_OBJECT_SUFFIX ".obj"
+
+ #define GCC_INCLUDE_DIR "///not used with VMS///" /* nonsense string for now */
+
+diff -c3rpN gcc-2.95.3.orig/gcc/config/winnt/xm-winnt.h gcc-2.95.4/gcc/config/winnt/xm-winnt.h
+*** gcc-2.95.3.orig/gcc/config/winnt/xm-winnt.h Sat Apr 10 05:27:16 1999
+--- gcc-2.95.4/gcc/config/winnt/xm-winnt.h Wed Jun 6 01:37:21 2001
+***************
+*** 1,5 ****
+ /* Configuration for GNU compiler for processor running Windows NT 3.x.
+! Copyright (C) 1993, 1995, 1997, 1999 Free Software Foundation, Inc.
+ Contributed by Douglas B. Rupp (drupp@cs.washington.edu)
+
+ This file is part of GNU CC.
+--- 1,5 ----
+ /* Configuration for GNU compiler for processor running Windows NT 3.x.
+! Copyright (C) 1993, 1995, 1997, 1999, 2001 Free Software Foundation, Inc.
+ Contributed by Douglas B. Rupp (drupp@cs.washington.edu)
+
+ This file is part of GNU CC.
+*************** Boston, MA 02111-1307, USA. */
+*** 44,51 ****
+ #define NO_SYS_SIGLIST 1
+ #define kill(a,b) raise(b)
+
+! #define OBJECT_SUFFIX ".obj"
+! #define EXECUTABLE_SUFFIX ".exe"
+ #define PATH_SEPARATOR ';'
+
+ #define DIR_SEPARATOR '\\'
+--- 44,51 ----
+ #define NO_SYS_SIGLIST 1
+ #define kill(a,b) raise(b)
+
+! #define HOST_OBJECT_SUFFIX ".obj"
+! #define HOST_EXECUTABLE_SUFFIX ".exe"
+ #define PATH_SEPARATOR ';'
+
+ #define DIR_SEPARATOR '\\'
+diff -c3rpN gcc-2.95.3.orig/gcc/configure gcc-2.95.4/gcc/configure
+*** gcc-2.95.3.orig/gcc/configure Fri Mar 16 14:13:48 2001
+--- gcc-2.95.4/gcc/configure Wed Jun 6 01:37:23 2001
+*************** else
+*** 1311,1317 ****
+ fi
+
+ # Find some useful tools
+! for ac_prog in gawk mawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+--- 1311,1317 ----
+ fi
+
+ # Find some useful tools
+! for ac_prog in mawk gawk nawk awk
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+*************** for machine in $build $host $target; do
+*** 5162,5168 ****
+ xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+ xm_defines="USG POSIX"
+ tm_file=rs6000/vxppc.h
+! tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ extra_headers=ppc-asm.h
+ thread_file='vxworks'
+ ;;
+--- 5162,5168 ----
+ xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+ xm_defines="USG POSIX"
+ tm_file=rs6000/vxppc.h
+! tmake_file="rs6000/t-ppcgas-vx rs6000/t-ppccomm"
+ extra_headers=ppc-asm.h
+ thread_file='vxworks'
+ ;;
+diff -c3rpN gcc-2.95.3.orig/gcc/configure.bat gcc-2.95.4/gcc/configure.bat
+*** gcc-2.95.3.orig/gcc/configure.bat Wed Dec 16 20:54:20 1998
+--- gcc-2.95.4/gcc/configure.bat Wed Jun 6 01:37:23 2001
+***************
+*** 1,21 ****
+! @echo off
+! if %1.==go32. goto call_go32
+! if %1.==winnt. goto call_winnt
+! echo Usage: configure go32 or configure winnt cpu
+! goto END
+!
+! :call_go32
+! call config\msdos\configure %1 %2 %3 %4
+! goto END
+!
+! :call_winnt
+! if %2.==i386. goto really_call_winnt
+! if %2.==alpha. goto really_call_winnt
+! echo Usage: configure winnt i386 or configure winnt alpha
+! goto END
+! :really_call_winnt
+! call config\winnt\config-nt %1 %2 %3 %4
+! goto END
+!
+! :END
+
+--- 1,21 ----
+! @echo off
+! if %1.==go32. goto call_go32
+! if %1.==winnt. goto call_winnt
+! echo Usage: configure go32 or configure winnt cpu
+! goto END
+!
+! :call_go32
+! call config\msdos\configure %1 %2 %3 %4
+! goto END
+!
+! :call_winnt
+! if %2.==i386. goto really_call_winnt
+! if %2.==alpha. goto really_call_winnt
+! echo Usage: configure winnt i386 or configure winnt alpha
+! goto END
+! :really_call_winnt
+! call config\winnt\config-nt %1 %2 %3 %4
+! goto END
+!
+! :END
+
+diff -c3rpN gcc-2.95.3.orig/gcc/configure.in gcc-2.95.4/gcc/configure.in
+*** gcc-2.95.3.orig/gcc/configure.in Thu Jan 25 14:03:02 2001
+--- gcc-2.95.4/gcc/configure.in Wed Jun 6 01:37:23 2001
+*************** changequote([,])dnl
+*** 2846,2852 ****
+ xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+ xm_defines="USG POSIX"
+ tm_file=rs6000/vxppc.h
+! tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+ extra_headers=ppc-asm.h
+ thread_file='vxworks'
+ ;;
+--- 2846,2852 ----
+ xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+ xm_defines="USG POSIX"
+ tm_file=rs6000/vxppc.h
+! tmake_file="rs6000/t-ppcgas-vx rs6000/t-ppccomm"
+ extra_headers=ppc-asm.h
+ thread_file='vxworks'
+ ;;
+diff -c3rpN gcc-2.95.3.orig/gcc/cppinit.c gcc-2.95.4/gcc/cppinit.c
+*** gcc-2.95.3.orig/gcc/cppinit.c Thu Jan 25 14:03:03 2001
+--- gcc-2.95.4/gcc/cppinit.c Wed Jun 6 01:37:31 2001
+***************
+*** 1,6 ****
+ /* CPP Library.
+ Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+! 1999, 2000 Free Software Foundation, Inc.
+ Contributed by Per Bothner, 1994-95.
+ Based on CCCP program by Paul Rubin, June 1986
+ Adapted to ANSI C, Richard Stallman, Jan 1987
+--- 1,6 ----
+ /* CPP Library.
+ Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+! 1999, 2000, 2001 Free Software Foundation, Inc.
+ Contributed by Per Bothner, 1994-95.
+ Based on CCCP program by Paul Rubin, June 1986
+ Adapted to ANSI C, Richard Stallman, Jan 1987
+*************** static char *known_suffixes[] =
+*** 93,103 ****
+ NULL
+ };
+
+! #ifndef OBJECT_SUFFIX
+ # ifdef VMS
+! # define OBJECT_SUFFIX ".obj"
+ # else
+! # define OBJECT_SUFFIX ".o"
+ # endif
+ #endif
+
+--- 93,103 ----
+ NULL
+ };
+
+! #ifndef TARGET_OBJECT_SUFFIX
+ # ifdef VMS
+! # define TARGET_OBJECT_SUFFIX ".obj"
+ # else
+! # define TARGET_OBJECT_SUFFIX ".o"
+ # endif
+ #endif
+
+*************** initialize_dependency_output (pfile)
+*** 752,758 ****
+ }
+
+ /* Supply our own suffix. */
+! strcpy (q, OBJECT_SUFFIX);
+
+ deps_output (pfile, p, ':');
+ deps_output (pfile, opts->in_fname, ' ');
+--- 752,758 ----
+ }
+
+ /* Supply our own suffix. */
+! strcpy (q, TARGET_OBJECT_SUFFIX);
+
+ deps_output (pfile, p, ':');
+ deps_output (pfile, opts->in_fname, ' ');
+diff -c3rpN gcc-2.95.3.orig/gcc/crtstuff.c gcc-2.95.4/gcc/crtstuff.c
+*** gcc-2.95.3.orig/gcc/crtstuff.c Tue Mar 23 00:43:51 1999
+--- gcc-2.95.4/gcc/crtstuff.c Wed Jun 6 01:37:32 2001
+*************** init_dummy (void)
+*** 380,398 ****
+ #endif
+ asm (TEXT_SECTION_ASM_OP);
+
+! /* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr,
+! __environ and atexit (). We have to make sure they are in the .dynsym
+! section. We accomplish it by making a dummy call here. This
+! code is never reached. */
+!
+! #if defined(__linux__) && defined(__PIC__) && defined(__i386__)
+! {
+! extern void *___brk_addr;
+! extern char **__environ;
+!
+! ___brk_addr = __environ;
+! atexit ();
+! }
+ #endif
+ }
+
+--- 380,387 ----
+ #endif
+ asm (TEXT_SECTION_ASM_OP);
+
+! #ifdef CRT_END_INIT_DUMMY
+! CRT_END_INIT_DUMMY;
+ #endif
+ }
+
+diff -c3rpN gcc-2.95.3.orig/gcc/cse.c gcc-2.95.4/gcc/cse.c
+*** gcc-2.95.3.orig/gcc/cse.c Thu Jan 25 14:03:03 2001
+--- gcc-2.95.4/gcc/cse.c Wed Jun 6 01:37:32 2001
+*************** static void check_fold_consts PROTO((PTR
+*** 695,702 ****
+ static struct cse_reg_info* get_cse_reg_info PROTO((int));
+ static void free_cse_reg_info PROTO((splay_tree_value));
+ static void flush_hash_table PROTO((void));
+-
+- extern int rtx_equal_function_value_matters;
+
+ /* Dump the expressions in the equivalence class indicated by CLASSP.
+ This function is used only for debugging. */
+--- 695,700 ----
+diff -c3rpN gcc-2.95.3.orig/gcc/except.c gcc-2.95.4/gcc/except.c
+*** gcc-2.95.3.orig/gcc/except.c Mon Feb 19 14:01:59 2001
+--- gcc-2.95.4/gcc/except.c Wed Jun 6 01:37:35 2001
+*************** static void
+*** 723,743 ****
+ receive_exception_label (handler_label)
+ rtx handler_label;
+ {
+ emit_label (handler_label);
+!
+! #ifdef HAVE_exception_receiver
+ if (! exceptions_via_longjmp)
+! if (HAVE_exception_receiver)
+! emit_insn (gen_exception_receiver ());
+ #endif
+-
+ #ifdef HAVE_nonlocal_goto_receiver
+! if (! exceptions_via_longjmp)
+! if (HAVE_nonlocal_goto_receiver)
+! emit_insn (gen_nonlocal_goto_receiver ());
+ #endif
+! }
+
+
+ struct func_eh_entry
+ {
+--- 723,763 ----
+ 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
+ #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);
+! #endif
+! }
+
++ if (around_label)
++ emit_label (around_label);
++ }
+
+ struct func_eh_entry
+ {
+*************** static void
+*** 1320,1326 ****
+ start_dynamic_handler ()
+ {
+ rtx dhc, dcc;
+! rtx x, arg, buf;
+ int size;
+
+ #ifndef DONT_USE_BUILTIN_SETJMP
+--- 1340,1346 ----
+ start_dynamic_handler ()
+ {
+ rtx dhc, dcc;
+! rtx arg, buf;
+ int size;
+
+ #ifndef DONT_USE_BUILTIN_SETJMP
+*************** start_dynamic_handler ()
+*** 1362,1379 ****
+ 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
+ {
+! /* 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);
+ }
+ #endif
+
+ /* We are committed to this, so update the handler chain. */
+--- 1382,1398 ----
+ buf = plus_constant (XEXP (arg, 0), GET_MODE_SIZE (Pmode)*2);
+
+ #ifdef DONT_USE_BUILTIN_SETJMP
+ {
+! 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);
+ }
++ #else
++ expand_builtin_setjmp_setup (buf,
++ ehstack.top->entry->exception_handler_label);
+ #endif
+
+ /* We are committed to this, so update the handler chain. */
+diff -c3rpN gcc-2.95.3.orig/gcc/expr.c gcc-2.95.4/gcc/expr.c
+*** gcc-2.95.3.orig/gcc/expr.c Mon Feb 19 14:02:00 2001
+--- gcc-2.95.4/gcc/expr.c Wed Jun 6 01:37:36 2001
+*************** static rtx expand_builtin PROTO((tree, r
+*** 192,197 ****
+--- 192,198 ----
+ static int apply_args_size PROTO((void));
+ static int apply_result_size PROTO((void));
+ static rtx result_vector PROTO((int, rtx));
++ static rtx expand_builtin_setjmp PROTO((tree, rtx));
+ static rtx expand_builtin_apply_args PROTO((void));
+ static rtx expand_builtin_apply PROTO((rtx, rtx, rtx));
+ static void expand_builtin_return PROTO((rtx));
+*************** expand_builtin_return_addr (fndecl_code,
+*** 8544,8587 ****
+ return tem;
+ }
+
+! /* __builtin_setjmp is passed a pointer to an array of five words (not
+! all will be used on all machines). It operates similarly to the C
+! library function of the same name, but is more efficient. Much of
+! the code below (and for longjmp) is copied from the handling of
+! non-local gotos.
+!
+! NOTE: This is intended for use by GNAT and the exception handling
+! scheme in the compiler and will only work in the method used by
+! them. */
+
+! rtx
+! expand_builtin_setjmp (buf_addr, target, first_label, next_label)
+ rtx buf_addr;
+! rtx target;
+! rtx first_label, next_label;
+ {
+- rtx lab1 = gen_label_rtx ();
+ enum machine_mode sa_mode = STACK_SAVEAREA_MODE (SAVE_NONLOCAL);
+- enum machine_mode value_mode;
+ rtx stack_save;
+
+- value_mode = TYPE_MODE (integer_type_node);
+-
+ #ifdef POINTERS_EXTEND_UNSIGNED
+ buf_addr = convert_memory_address (Pmode, buf_addr);
+ #endif
+
+ buf_addr = force_reg (Pmode, buf_addr);
+
+- if (target == 0 || GET_CODE (target) != REG
+- || REGNO (target) < FIRST_PSEUDO_REGISTER)
+- target = gen_reg_rtx (value_mode);
+-
+ emit_queue ();
+
+! /* We store the frame pointer and the address of lab1 in the buffer
+! and use the rest of it for the stack save area, which is
+! machine-dependent. */
+
+ #ifndef BUILTIN_SETJMP_FRAME_VALUE
+ #define BUILTIN_SETJMP_FRAME_VALUE virtual_stack_vars_rtx
+--- 8545,8573 ----
+ return tem;
+ }
+
+! /* Construct the leading half of a __builtin_setjmp call. Control will
+! return to RECEIVER_LABEL. This is used directly by sjlj exception
+! handling code. */
+
+! void
+! expand_builtin_setjmp_setup (buf_addr, receiver_label)
+ rtx buf_addr;
+! rtx receiver_label;
+ {
+ enum machine_mode sa_mode = STACK_SAVEAREA_MODE (SAVE_NONLOCAL);
+ rtx stack_save;
+
+ #ifdef POINTERS_EXTEND_UNSIGNED
+ buf_addr = convert_memory_address (Pmode, buf_addr);
+ #endif
+
+ buf_addr = force_reg (Pmode, buf_addr);
+
+ emit_queue ();
+
+! /* We store the frame pointer and the address of receiver_label in
+! the buffer and use the rest of it for the stack save area, which
+! is machine-dependent. */
+
+ #ifndef BUILTIN_SETJMP_FRAME_VALUE
+ #define BUILTIN_SETJMP_FRAME_VALUE virtual_stack_vars_rtx
+*************** expand_builtin_setjmp (buf_addr, target,
+*** 8593,8599 ****
+ (gen_rtx_MEM (Pmode,
+ plus_constant (buf_addr,
+ GET_MODE_SIZE (Pmode)))),
+! force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, lab1)));
+
+ stack_save = gen_rtx_MEM (sa_mode,
+ plus_constant (buf_addr,
+--- 8579,8585 ----
+ (gen_rtx_MEM (Pmode,
+ plus_constant (buf_addr,
+ GET_MODE_SIZE (Pmode)))),
+! force_reg (Pmode, gen_rtx_LABEL_REF (Pmode, receiver_label)));
+
+ stack_save = gen_rtx_MEM (sa_mode,
+ plus_constant (buf_addr,
+*************** expand_builtin_setjmp (buf_addr, target,
+*** 8606,8625 ****
+ emit_insn (gen_builtin_setjmp_setup (buf_addr));
+ #endif
+
+! /* Set TARGET to zero and branch to the first-time-through label. */
+! emit_move_insn (target, const0_rtx);
+! emit_jump_insn (gen_jump (first_label));
+! emit_barrier ();
+! emit_label (lab1);
+!
+! /* Tell flow about the strange goings on. Putting `lab1' on
+! `nonlocal_goto_handler_labels' to indicates that function
+! calls may traverse the arc back to this label. */
+
+ current_function_has_nonlocal_label = 1;
+! nonlocal_goto_handler_labels =
+! gen_rtx_EXPR_LIST (VOIDmode, lab1, nonlocal_goto_handler_labels);
+
+ /* Clobber the FP when we get here, so we have to make sure it's
+ marked as used by this function. */
+ emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx));
+--- 8592,8613 ----
+ emit_insn (gen_builtin_setjmp_setup (buf_addr));
+ #endif
+
+! /* Tell optimize_save_area_alloca that extra work is going to
+! need to go on during alloca. */
+! current_function_calls_setjmp = 1;
+
++ /* Set this so all the registers get saved in our frame; we need to be
++ able to copy the saved values for any registers from frames we unwind. */
+ current_function_has_nonlocal_label = 1;
+! }
+!
+! /* Construct the trailing part of a __builtin_setjmp call.
+! This is used directly by sjlj exception handling code. */
+
++ void
++ expand_builtin_setjmp_receiver (receiver_label)
++ rtx receiver_label ATTRIBUTE_UNUSED;
++ {
+ /* Clobber the FP when we get here, so we have to make sure it's
+ marked as used by this function. */
+ emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx));
+*************** expand_builtin_setjmp (buf_addr, target,
+*** 8666,8672 ****
+
+ #ifdef HAVE_builtin_setjmp_receiver
+ if (HAVE_builtin_setjmp_receiver)
+! emit_insn (gen_builtin_setjmp_receiver (lab1));
+ else
+ #endif
+ #ifdef HAVE_nonlocal_goto_receiver
+--- 8654,8660 ----
+
+ #ifdef HAVE_builtin_setjmp_receiver
+ if (HAVE_builtin_setjmp_receiver)
+! emit_insn (gen_builtin_setjmp_receiver (receiver_label));
+ else
+ #endif
+ #ifdef HAVE_nonlocal_goto_receiver
+*************** expand_builtin_setjmp (buf_addr, target,
+*** 8678,8687 ****
+ ; /* Nothing */
+ }
+
+! /* Set TARGET, and branch to the next-time-through label. */
+! emit_move_insn (target, const1_rtx);
+! emit_jump_insn (gen_jump (next_label));
+ emit_barrier ();
+
+ return target;
+ }
+--- 8666,8731 ----
+ ; /* Nothing */
+ }
+
+! /* @@@ This is a kludge. Not all machine descriptions define a blockage
+! insn, but we must not allow the code we just generated to be reordered
+! by scheduling. Specifically, the update of the frame pointer must
+! happen immediately, not later. So emit an ASM_INPUT to act as blockage
+! insn. */
+! emit_insn (gen_rtx_ASM_INPUT (VOIDmode, ""));
+! }
+!
+!
+! /* __builtin_setjmp is passed a pointer to an array of five words (not
+! all will be used on all machines). It operates similarly to the C
+! library function of the same name, but is more efficient. Much of
+! the code below (and for longjmp) is copied from the handling of
+! non-local gotos.
+!
+! NOTE: This is intended for use by GNAT and the exception handling
+! scheme in the compiler and will only work in the method used by
+! them. */
+!
+! static rtx
+! expand_builtin_setjmp (arglist, target)
+! tree arglist;
+! rtx target;
+! {
+! rtx buf_addr, next_lab, cont_lab;
+!
+! if (arglist == 0
+! || TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE)
+! return NULL_RTX;
+!
+! if (target == 0 || GET_CODE (target) != REG
+! || REGNO (target) < FIRST_PSEUDO_REGISTER)
+! target = gen_reg_rtx (TYPE_MODE (integer_type_node));
+!
+! buf_addr = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0);
+!
+! next_lab = gen_label_rtx ();
+! cont_lab = gen_label_rtx ();
+!
+! expand_builtin_setjmp_setup (buf_addr, next_lab);
+!
+! /* Set TARGET to zero and branch to the continue label. */
+! emit_move_insn (target, const0_rtx);
+! emit_jump_insn (gen_jump (cont_lab));
+ emit_barrier ();
++ emit_label (next_lab);
++
++ expand_builtin_setjmp_receiver (next_lab);
++
++ /* Set TARGET to one. */
++ emit_move_insn (target, const1_rtx);
++ emit_label (cont_lab);
++
++ /* Tell flow about the strange goings on. Putting `next_lab' on
++ `nonlocal_goto_handler_labels' to indicates that function
++ calls may traverse the arc back to this label. */
++
++ current_function_has_nonlocal_label = 1;
++ nonlocal_goto_handler_labels
++ = gen_rtx_EXPR_LIST (VOIDmode, next_lab, nonlocal_goto_handler_labels);
+
+ return target;
+ }
+*************** expand_builtin (exp, target, subtarget,
+*** 9703,9720 ****
+ #endif
+
+ case BUILT_IN_SETJMP:
+! if (arglist == 0
+! || TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE)
+! break;
+! else
+! {
+! rtx buf_addr = expand_expr (TREE_VALUE (arglist), subtarget,
+! VOIDmode, 0);
+! rtx lab = gen_label_rtx ();
+! rtx ret = expand_builtin_setjmp (buf_addr, target, lab, lab);
+! emit_label (lab);
+! return ret;
+! }
+
+ /* __builtin_longjmp is passed a pointer to an array of five words.
+ It's similar to the C library longjmp function but works with
+--- 9747,9756 ----
+ #endif
+
+ case BUILT_IN_SETJMP:
+! target = expand_builtin_setjmp (arglist, target);
+! if (target)
+! return target;
+! break;
+
+ /* __builtin_longjmp is passed a pointer to an array of five words.
+ It's similar to the C library longjmp function but works with
+diff -c3rpN gcc-2.95.3.orig/gcc/expr.h gcc-2.95.4/gcc/expr.h
+*** gcc-2.95.3.orig/gcc/expr.h Mon Feb 19 14:02:02 2001
+--- gcc-2.95.4/gcc/expr.h Wed Jun 6 01:37:36 2001
+*************** extern rtx store_expr PROTO((tree, rtx,
+*** 831,837 ****
+ Useful after calling expand_expr with 1 as sum_ok. */
+ extern rtx force_operand PROTO((rtx, rtx));
+
+! extern rtx expand_builtin_setjmp PROTO((rtx, rtx, rtx, rtx));
+
+ #ifdef TREE_CODE
+ /* Generate code for computing expression EXP.
+--- 831,838 ----
+ 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));
+
+ #ifdef TREE_CODE
+ /* Generate code for computing expression EXP.
+diff -c3rpN gcc-2.95.3.orig/gcc/f/version.c gcc-2.95.4/gcc/f/version.c
+*** gcc-2.95.3.orig/gcc/f/version.c Fri Mar 16 12:52:16 2001
+--- gcc-2.95.4/gcc/f/version.c Wed Jun 6 01:37:50 2001
+***************
+*** 1 ****
+! const char *ffe_version_string = "0.5.25 20010315 (release)";
+--- 1 ----
+! const char *ffe_version_string = "0.5.25 20010319 (prerelease)";
+diff -c3rpN gcc-2.95.3.orig/gcc/final.c gcc-2.95.4/gcc/final.c
+*** gcc-2.95.3.orig/gcc/final.c Mon Mar 12 12:07:59 2001
+--- gcc-2.95.4/gcc/final.c Wed Jun 6 01:37:51 2001
+*************** static void
+*** 1701,1707 ****
+--- 1701,1709 ----
+ profile_function (file)
+ FILE *file;
+ {
++ #ifndef NO_PROFILE_COUNTERS
+ int align = MIN (BIGGEST_ALIGNMENT, LONG_TYPE_SIZE);
++ #endif
+ #if defined(ASM_OUTPUT_REG_PUSH)
+ #if defined(STRUCT_VALUE_INCOMING_REGNUM) || defined(STRUCT_VALUE_REGNUM)
+ int sval = current_function_returns_struct;
+*************** profile_function (file)
+*** 1711,1720 ****
+--- 1713,1724 ----
+ #endif
+ #endif /* ASM_OUTPUT_REG_PUSH */
+
++ #ifndef NO_PROFILE_COUNTERS
+ data_section ();
+ ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT));
+ ASM_OUTPUT_INTERNAL_LABEL (file, "LP", profile_label_no);
+ assemble_integer (const0_rtx, LONG_TYPE_SIZE / BITS_PER_UNIT, 1);
++ #endif
+
+ function_section (current_function_decl);
+
+*************** cleanup_subreg_operands (insn)
+*** 3043,3049 ****
+ if (GET_CODE (recog_operand[i]) == SUBREG)
+ recog_operand[i] = alter_subreg (recog_operand[i]);
+ else if (GET_CODE (recog_operand[i]) == PLUS
+! || GET_CODE (recog_operand[i]) == MULT)
+ recog_operand[i] = walk_alter_subreg (recog_operand[i]);
+ }
+
+--- 3047,3054 ----
+ if (GET_CODE (recog_operand[i]) == SUBREG)
+ recog_operand[i] = alter_subreg (recog_operand[i]);
+ else if (GET_CODE (recog_operand[i]) == PLUS
+! || GET_CODE (recog_operand[i]) == MULT
+! || GET_CODE (recog_operand[i]) == MEM)
+ recog_operand[i] = walk_alter_subreg (recog_operand[i]);
+ }
+
+*************** cleanup_subreg_operands (insn)
+*** 3052,3058 ****
+ if (GET_CODE (*recog_dup_loc[i]) == SUBREG)
+ *recog_dup_loc[i] = alter_subreg (*recog_dup_loc[i]);
+ else if (GET_CODE (*recog_dup_loc[i]) == PLUS
+! || GET_CODE (*recog_dup_loc[i]) == MULT)
+ *recog_dup_loc[i] = walk_alter_subreg (*recog_dup_loc[i]);
+ }
+ }
+--- 3057,3064 ----
+ if (GET_CODE (*recog_dup_loc[i]) == SUBREG)
+ *recog_dup_loc[i] = alter_subreg (*recog_dup_loc[i]);
+ else if (GET_CODE (*recog_dup_loc[i]) == PLUS
+! || GET_CODE (*recog_dup_loc[i]) == MULT
+! || GET_CODE (*recog_dup_loc[i]) == MEM)
+ *recog_dup_loc[i] = walk_alter_subreg (*recog_dup_loc[i]);
+ }
+ }
+diff -c3rpN gcc-2.95.3.orig/gcc/fixinc/inclhack.def gcc-2.95.4/gcc/fixinc/inclhack.def
+*** gcc-2.95.3.orig/gcc/fixinc/inclhack.def Fri Aug 13 08:44:06 1999
+--- gcc-2.95.4/gcc/fixinc/inclhack.def Wed Jun 6 01:37:54 2001
+*************** fix = {
+*** 2234,2239 ****
+--- 2234,2281 ----
+ "#endif\n";
+ };
+
++ /*
++ * Fix VxWorks varargs header
++ */
++ fix = {
++ hackname = vxworks_varargs_problem;
++ files = arch/ppc/toolPpc.h;
++ select = "GNU C varargs support for the PowerPC with V.4 calling sequence";
++
++ sed = "/\\/\\* GNU C varargs support for the PowerPC with V.4 calling sequence \\*\\//a\\\n"
++ "#ifdef __VXVARGS__\\\n"
++ "#include <va-ppc.h>\\\n"
++ "#else /* !defined(__VXVARGS__) */\\\n";
++
++ sed = "/\\/\\* END CYGNUS LOCAL Waiting for 2.7.1 to unfreeze \\*\\//i\\\n"
++ "#endif /* !defined(__VXVARGS__) */\\\n";
++ };
++
++
++ /*
++ * Fix VxWorks varargs header
++ */
++ fix = {
++ hackname = vxworks_stdio-lock_cxx_compat;
++ files = stdio-lock.h;
++ select = "^[ \\t]*#[ \\t]*define[ \\t]*_IO_lock_initializer[ \\t]*_IO_lock_t[ \\t]*()";
++
++ sed = "s,^[ \\t]*#[ \\t]*define[ \\t]*_IO_lock_initializer[ \\t]*_IO_lock_t[ \\t]*(),"
++ "#ifndef __cplusplus\\\n#define _IO_lock_initializer { 0UL }\\\n#else\\\n#define _IO_lock_initializer _IO_lock_t ()\\\n#endif\\\n,";
++ };
++
++
++ /*
++ * That last fix won't even work unless we make archPpc.h use the default
++ * search path when it includes toolPpc.h
++ *
++ */
++ fix = {
++ hackname = vxworks_arch_includepath;
++ files = arch/ppc/archPpc.h;
++ select = 'include.*"toolPpc.h"';
++ sed = "s,\"toolPpc.h\",<arch/ppc/toolPpc.h>,";
++ };
+
+ /*
+ * Fix VxWorks <time.h> to not require including <vxTypes.h>.
+*************** fix = {
+*** 2252,2263 ****
+ fix = {
+ hackname = vxworks_needs_vxworks;
+ files = sys/stat.h;
+! test = " -r types/vxTypesOld.h";
+! test = " -n \"`egrep '#include' $file`\"";
+! test = " -n \"`egrep ULONG $file`\"";
+! select = "#[ \t]define[ \t][ \t]*__INCstath";
+
+! sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
+ "#include <types/vxTypesOld.h>\n";
+ };
+
+--- 2294,2302 ----
+ fix = {
+ hackname = vxworks_needs_vxworks;
+ files = sys/stat.h;
+! select = "#[ \t]*define[ \t][ \t]*__INCstath";
+
+! sed = "/#[ \t]*define[ \t][ \t]*__INCstath/a\\\n"
+ "#include <types/vxTypesOld.h>\n";
+ };
+
+diff -c3rpN gcc-2.95.3.orig/gcc/flow.c gcc-2.95.4/gcc/flow.c
+*** gcc-2.95.3.orig/gcc/flow.c Thu Jan 25 14:03:08 2001
+--- gcc-2.95.4/gcc/flow.c Wed Jun 6 01:37:55 2001
+*************** propagate_block (old, first, last, final
+*** 2744,2758 ****
+ {
+ 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
+--- 2744,2766 ----
+ {
+ if (REG_NOTE_KIND (inote) == REG_LABEL)
+ {
++ int n_forced;
+ rtx label = XEXP (inote, 0);
+ rtx next;
+ LABEL_NUSES (label)--;
+
++ /* The label may be forced if it has been put in the
++ constant pool. We can't delete it in this case, but
++ we still must discard a jump table following it. */
++ n_forced = 0;
++ if (LABEL_PRESERVE_P (label))
++ n_forced++;
++
+ /* 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) == n_forced
+ && (next = next_nonnote_insn (label)) != NULL
+ && GET_CODE (next) == JUMP_INSN
+ && (GET_CODE (PATTERN (next)) == ADDR_VEC
+diff -c3rpN gcc-2.95.3.orig/gcc/function.c gcc-2.95.4/gcc/function.c
+*** gcc-2.95.3.orig/gcc/function.c Thu Jan 25 14:03:15 2001
+--- gcc-2.95.4/gcc/function.c Wed Jun 6 01:37:57 2001
+*************** static int *record_insns PROTO((rtx));
+*** 513,520 ****
+ static int contains PROTO((rtx, int *));
+ #endif /* HAVE_prologue || HAVE_epilogue */
+ static void put_addressof_into_stack PROTO((rtx, struct hash_table *));
+! static void purge_addressof_1 PROTO((rtx *, rtx, int, int,
+ struct hash_table *));
+ static struct hash_entry *insns_for_mem_newfunc PROTO((struct hash_entry *,
+ struct hash_table *,
+ hash_table_key));
+--- 513,521 ----
+ static int contains PROTO((rtx, int *));
+ #endif /* HAVE_prologue || HAVE_epilogue */
+ static void put_addressof_into_stack PROTO((rtx, struct hash_table *));
+! static boolean purge_addressof_1 PROTO((rtx *, rtx, int, int,
+ struct hash_table *));
++ static int is_addressof PROTO ((rtx *, void *));
+ static struct hash_entry *insns_for_mem_newfunc PROTO((struct hash_entry *,
+ struct hash_table *,
+ hash_table_key));
+*************** static rtx purge_addressof_replacements;
+*** 3055,3063 ****
+
+ /* Helper function for purge_addressof. See if the rtx expression at *LOC
+ in INSN needs to be changed. If FORCE, always put any ADDRESSOFs into
+! the stack. */
+
+! static void
+ purge_addressof_1 (loc, insn, force, store, ht)
+ rtx *loc;
+ rtx insn;
+--- 3056,3065 ----
+
+ /* Helper function for purge_addressof. See if the rtx expression at *LOC
+ in INSN needs to be changed. If FORCE, always put any ADDRESSOFs into
+! the stack. If the function returns FALSE then the replacement could not
+! be made. */
+
+! static boolean
+ purge_addressof_1 (loc, insn, force, store, ht)
+ rtx *loc;
+ rtx insn;
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3068,3080 ****
+ RTX_CODE code;
+ int i, j;
+ char *fmt;
+
+ /* Re-start here to avoid recursion in common cases. */
+ restart:
+
+ x = *loc;
+ if (x == 0)
+! return;
+
+ code = GET_CODE (x);
+
+--- 3070,3083 ----
+ RTX_CODE code;
+ int i, j;
+ char *fmt;
++ boolean result = true;
+
+ /* Re-start here to avoid recursion in common cases. */
+ restart:
+
+ x = *loc;
+ if (x == 0)
+! return true;
+
+ code = GET_CODE (x);
+
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3087,3093 ****
+
+ if (validate_change (insn, loc, sub, 0)
+ || validate_replace_rtx (x, sub, insn))
+! return;
+
+ start_sequence ();
+ sub = force_operand (sub, NULL_RTX);
+--- 3090,3096 ----
+
+ if (validate_change (insn, loc, sub, 0)
+ || validate_replace_rtx (x, sub, insn))
+! return true;
+
+ start_sequence ();
+ sub = force_operand (sub, NULL_RTX);
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3098,3104 ****
+ insns = gen_sequence ();
+ end_sequence ();
+ emit_insn_before (insns, insn);
+! return;
+ }
+ else if (code == MEM && GET_CODE (XEXP (x, 0)) == ADDRESSOF && ! force)
+ {
+--- 3101,3107 ----
+ insns = gen_sequence ();
+ end_sequence ();
+ emit_insn_before (insns, insn);
+! return true;
+ }
+ else if (code == MEM && GET_CODE (XEXP (x, 0)) == ADDRESSOF && ! force)
+ {
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3117,3123 ****
+ && (MEM_VOLATILE_P (x) || GET_MODE (x) == BLKmode))
+ {
+ put_addressof_into_stack (XEXP (x, 0), ht);
+! return;
+ }
+ else if (GET_CODE (sub) == REG && GET_MODE (x) != GET_MODE (sub))
+ {
+--- 3120,3126 ----
+ && (MEM_VOLATILE_P (x) || GET_MODE (x) == BLKmode))
+ {
+ put_addressof_into_stack (XEXP (x, 0), ht);
+! return true;
+ }
+ else if (GET_CODE (sub) == REG && GET_MODE (x) != GET_MODE (sub))
+ {
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3136,3142 ****
+ if (rtx_equal_p (x, XEXP (tem, 0)))
+ {
+ *loc = XEXP (XEXP (tem, 1), 0);
+! return;
+ }
+
+ /* See comment for purge_addressof_replacements. */
+--- 3139,3145 ----
+ if (rtx_equal_p (x, XEXP (tem, 0)))
+ {
+ *loc = XEXP (XEXP (tem, 1), 0);
+! return true;
+ }
+
+ /* See comment for purge_addressof_replacements. */
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3176,3186 ****
+ z = gen_lowpart (GET_MODE (x), z);
+
+ *loc = z;
+! return;
+ }
+
+! /* There should always be such a replacement. */
+! abort ();
+ }
+
+ size_x = GET_MODE_BITSIZE (GET_MODE (x));
+--- 3179,3195 ----
+ z = gen_lowpart (GET_MODE (x), z);
+
+ *loc = z;
+! return true;
+ }
+
+! /* Sometimes we may not be able to find the replacement. For
+! example when the original insn was a MEM in a wider mode,
+! and the note is part of a sign extension of a narrowed
+! version of that MEM. Gcc testcase compile/990829-1.c can
+! generate an example of this siutation. Rather than complain
+! we return false, which will prompt our caller to remove the
+! offending note. */
+! return false;
+ }
+
+ size_x = GET_MODE_BITSIZE (GET_MODE (x));
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3266,3272 ****
+ purge_bitfield_addressof_replacements));
+
+ /* We replaced with a reg -- all done. */
+! return;
+ }
+ }
+ else if (validate_change (insn, loc, sub, 0))
+--- 3275,3281 ----
+ purge_bitfield_addressof_replacements));
+
+ /* We replaced with a reg -- all done. */
+! return true;
+ }
+ }
+ else if (validate_change (insn, loc, sub, 0))
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3283,3295 ****
+ if (rtx_equal_p (XEXP (x, 0), XEXP (tem, 0)))
+ {
+ XEXP (XEXP (tem, 1), 0) = sub;
+! return;
+ }
+ purge_addressof_replacements
+ = gen_rtx (EXPR_LIST, VOIDmode, XEXP (x, 0),
+ gen_rtx_EXPR_LIST (VOIDmode, sub,
+ purge_addressof_replacements));
+! return;
+ }
+ goto restart;
+ }
+--- 3292,3304 ----
+ if (rtx_equal_p (XEXP (x, 0), XEXP (tem, 0)))
+ {
+ XEXP (XEXP (tem, 1), 0) = sub;
+! return true;
+ }
+ purge_addressof_replacements
+ = gen_rtx (EXPR_LIST, VOIDmode, XEXP (x, 0),
+ gen_rtx_EXPR_LIST (VOIDmode, sub,
+ purge_addressof_replacements));
+! return true;
+ }
+ goto restart;
+ }
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3299,3311 ****
+ else if (code == ADDRESSOF)
+ {
+ put_addressof_into_stack (x, ht);
+! return;
+ }
+ else if (code == SET)
+ {
+! purge_addressof_1 (&SET_DEST (x), insn, force, 1, ht);
+! purge_addressof_1 (&SET_SRC (x), insn, force, 0, ht);
+! return;
+ }
+
+ /* Scan all subexpressions. */
+--- 3308,3320 ----
+ else if (code == ADDRESSOF)
+ {
+ put_addressof_into_stack (x, ht);
+! return true;
+ }
+ else if (code == SET)
+ {
+! result = purge_addressof_1 (&SET_DEST (x), insn, force, 1, ht);
+! result &= purge_addressof_1 (&SET_SRC (x), insn, force, 0, ht);
+! return result;
+ }
+
+ /* Scan all subexpressions. */
+*************** purge_addressof_1 (loc, insn, force, sto
+*** 3313,3323 ****
+ for (i = 0; i < GET_RTX_LENGTH (code); i++, fmt++)
+ {
+ if (*fmt == 'e')
+! purge_addressof_1 (&XEXP (x, i), insn, force, 0, ht);
+ else if (*fmt == 'E')
+ for (j = 0; j < XVECLEN (x, i); j++)
+! purge_addressof_1 (&XVECEXP (x, i, j), insn, force, 0, ht);
+ }
+ }
+
+ /* Return a new hash table entry in HT. */
+--- 3322,3334 ----
+ for (i = 0; i < GET_RTX_LENGTH (code); i++, fmt++)
+ {
+ if (*fmt == 'e')
+! result &= purge_addressof_1 (&XEXP (x, i), insn, force, 0, ht);
+ else if (*fmt == 'E')
+ for (j = 0; j < XVECLEN (x, i); j++)
+! result &= purge_addressof_1 (&XVECEXP (x, i, j), insn, force, 0, ht);
+ }
++
++ return result;
+ }
+
+ /* Return a new hash table entry in HT. */
+*************** compute_insns_for_mem (insns, last_insn,
+*** 3437,3442 ****
+--- 3448,3463 ----
+ }
+ }
+
++ /* Helper function for purge_addressof called through for_each_rtx.
++ Returns true iff the rtl is an ADDRESSOF. */
++ static int
++ is_addressof (rtl, data)
++ rtx * rtl;
++ void * data ATTRIBUTE_UNUSED;
++ {
++ return GET_CODE (* rtl) == ADDRESSOF;
++ }
++
+ /* Eliminate all occurrences of ADDRESSOF from INSNS. Elide any remaining
+ (MEM (ADDRESSOF)) patterns, and force any needed registers into the
+ stack. */
+*************** purge_addressof (insns)
+*** 3465,3473 ****
+ if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
+ || GET_CODE (insn) == CALL_INSN)
+ {
+! purge_addressof_1 (&PATTERN (insn), insn,
+! asm_noperands (PATTERN (insn)) > 0, 0, &ht);
+! purge_addressof_1 (&REG_NOTES (insn), NULL_RTX, 0, 0, &ht);
+ }
+
+ /* Clean up. */
+--- 3486,3515 ----
+ if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
+ || GET_CODE (insn) == CALL_INSN)
+ {
+! if (! purge_addressof_1 (&PATTERN (insn), insn,
+! asm_noperands (PATTERN (insn)) > 0, 0, &ht))
+! /* If we could not replace the ADDRESSOFs in the insn,
+! something is wrong. */
+! abort ();
+!
+! if (! purge_addressof_1 (&REG_NOTES (insn), NULL_RTX, 0, 0, &ht))
+! {
+! /* If we could not replace the ADDRESSOFs in the insn's notes,
+! we can just remove the offending notes instead. */
+! rtx note;
+!
+! for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
+! {
+! /* If we find a REG_RETVAL note then the insn is a libcall.
+! Such insns must have REG_EQUAL notes as well, in order
+! for later passes of the compiler to work. So it is not
+! safe to delete the notes here, and instead we abort. */
+! if (REG_NOTE_KIND (note) == REG_RETVAL)
+! abort ();
+! if (for_each_rtx (& note, is_addressof, NULL))
+! remove_note (insn, note);
+! }
+! }
+ }
+
+ /* Clean up. */
+*************** locate_and_pad_parm (passed_mode, type,
+*** 5292,5298 ****
+ - offset_ptr->constant);
+ }
+ #else /* !ARGS_GROW_DOWNWARD */
+! pad_to_arg_alignment (initial_offset_ptr, boundary);
+ *offset_ptr = *initial_offset_ptr;
+
+ #ifdef PUSH_ROUNDING
+--- 5334,5351 ----
+ - offset_ptr->constant);
+ }
+ #else /* !ARGS_GROW_DOWNWARD */
+! if (!in_regs
+! #ifdef REG_PARM_STACK_SPACE
+! || REG_PARM_STACK_SPACE (fndecl) > 0
+! #else
+! /* For the gcc-2_95-branch we want to make sure not to break something
+! on platforms which pass argument in registers but don't define
+! REG_PARM_STACK_SPACE. So we force the original behaviour here. */
+! || 1
+! #endif
+! )
+! pad_to_arg_alignment (initial_offset_ptr, boundary);
+!
+ *offset_ptr = *initial_offset_ptr;
+
+ #ifdef PUSH_ROUNDING
+diff -c3rpN gcc-2.95.3.orig/gcc/gcc.1 gcc-2.95.4/gcc/gcc.1
+*** gcc-2.95.3.orig/gcc/gcc.1 Wed Jun 2 02:41:52 1999
+--- gcc-2.95.4/gcc/gcc.1 Wed Jun 6 01:37:57 2001
+***************
+*** 20,26 ****
+ .if n .sp
+ .if t .sp 0.4
+ ..
+! .Id $Id: gcc.1,v 1.9 1998/12/16 20:55:57 law Exp $
+ .TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
+ .SH NAME
+ gcc, g++ \- GNU project C and C++ Compiler (gcc-2.95)
+--- 20,26 ----
+ .if n .sp
+ .if t .sp 0.4
+ ..
+! .Id $Id: gcc.1,v 1.9.8.1 1999/06/02 01:41:52 law Exp $
+ .TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
+ .SH NAME
+ gcc, g++ \- GNU project C and C++ Compiler (gcc-2.95)
+diff -c3rpN gcc-2.95.3.orig/gcc/gcc.c gcc-2.95.4/gcc/gcc.c
+*** gcc-2.95.3.orig/gcc/gcc.c Thu Jan 25 14:03:16 2001
+--- gcc-2.95.4/gcc/gcc.c Wed Jun 6 01:37:57 2001
+***************
+*** 1,6 ****
+ /* Compiler driver program that can handle many languages.
+ Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+! 2000 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,6 ----
+ /* Compiler driver program that can handle many languages.
+ Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+! 2000, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** compilation is specified by a string cal
+*** 44,61 ****
+ #define exit __posix_exit
+ #endif
+
+! /* By default there is no special suffix for executables. */
+! #ifdef EXECUTABLE_SUFFIX
+! #define HAVE_EXECUTABLE_SUFFIX
+ #else
+! #define EXECUTABLE_SUFFIX ""
+ #endif
+
+! /* By default, the suffix for object files is ".o". */
+! #ifdef OBJECT_SUFFIX
+! #define HAVE_OBJECT_SUFFIX
+ #else
+! #define OBJECT_SUFFIX ".o"
+ #endif
+
+ /* By default, colon separates directories in a path. */
+--- 44,69 ----
+ #define exit __posix_exit
+ #endif
+
+! /* By default there is no special suffix for target executables. */
+! /* FIXME: when autoconf is fixed, remove the host check - dj */
+! #if defined(TARGET_EXECUTABLE_SUFFIX) && defined(HOST_EXECUTABLE_SUFFIX)
+! #define HAVE_TARGET_EXECUTABLE_SUFFIX
+ #else
+! #define TARGET_EXECUTABLE_SUFFIX ""
+ #endif
+
+! /* By default there is no special suffix for host executables. */
+! #ifdef HOST_EXECUTABLE_SUFFIX
+! #define HAVE_HOST_EXECUTABLE_SUFFIX
+ #else
+! #define HOST_EXECUTABLE_SUFFIX ""
+! #endif
+!
+! /* By default, the suffix for target object files is ".o". */
+! #ifdef TARGET_OBJECT_SUFFIX
+! #define HAVE_TARGET_OBJECT_SUFFIX
+! #else
+! #define TARGET_OBJECT_SUFFIX ".o"
+ #endif
+
+ /* By default, colon separates directories in a path. */
+*************** compilation is specified by a string cal
+*** 75,80 ****
+--- 83,96 ----
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+ #endif /* DIR_SEPARATOR_2 */
+
++ #ifndef VMS
++ /* FIXME: the location independence code for VMS is hairier than this,
++ and hasn't been written. */
++ #ifndef DIR_UP
++ #define DIR_UP ".."
++ #endif /* DIR_UP */
++ #endif /* VMS */
++
+ static char dir_separator_str[] = {DIR_SEPARATOR, 0};
+
+ #define obstack_chunk_alloc xmalloc
+*************** extern char *version_string;
+*** 173,178 ****
+--- 189,199 ----
+ struct path_prefix;
+
+ static void init_spec PROTO((void));
++ #ifndef VMS
++ static char **split_directories PARAMS ((const char *, int *));
++ static void free_split_directories PARAMS ((char **));
++ static char *make_relative_prefix PARAMS ((const char *, const char *, const char *));
++ #endif /* VMS */
+ static void read_specs PROTO((const char *, int));
+ static void set_spec PROTO((const char *, const char *));
+ static struct compiler *lookup_compiler PROTO((const char *, size_t, const char *));
+*************** static struct user_specs *user_specs_hea
+*** 538,544 ****
+ #endif
+
+
+! #ifdef HAVE_EXECUTABLE_SUFFIX
+ /* This defines which switches stop a full compilation. */
+ #define DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR) \
+ ((CHAR) == 'c' || (CHAR) == 'S')
+--- 559,565 ----
+ #endif
+
+
+! #ifdef HAVE_TARGET_EXECUTABLE_SUFFIX
+ /* This defines which switches stop a full compilation. */
+ #define DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR) \
+ ((CHAR) == 'c' || (CHAR) == 'S')
+*************** static const char *just_machine_suffix =
+*** 1361,1366 ****
+--- 1382,1390 ----
+
+ static const char *gcc_exec_prefix;
+
++ static const char *wind_host_type = 0;
++ static const char *wind_base = 0;
++
+ /* Default prefixes to attach to command names. */
+
+ #ifdef CROSS_COMPILE /* Don't use these prefixes for a cross compiler. */
+*************** static const char *standard_startfile_pr
+*** 1399,1404 ****
+--- 1423,1433 ----
+ static const char *tooldir_base_prefix = TOOLDIR_BASE_PREFIX;
+ static const char *tooldir_prefix;
+
++ #ifndef STANDARD_BINDIR_PREFIX
++ #define STANDARD_BINDIR_PREFIX "/usr/local/bin"
++ #endif
++ static const char *standard_bindir_prefix = STANDARD_BINDIR_PREFIX;
++
+ /* Subdirectory to use for locating libraries. Set by
+ set_multilib_dir based on the compilation options. */
+
+*************** putenv (str)
+*** 1879,1884 ****
+--- 1908,2151 ----
+
+ #endif /* HAVE_PUTENV */
+
++ #ifndef VMS
++
++ /* FIXME: the location independence code for VMS is hairier than this,
++ and hasn't been written. */
++
++ /* Split a filename into component directories. */
++
++ static char **
++ split_directories (name, ptr_num_dirs)
++ const char *name;
++ int *ptr_num_dirs;
++ {
++ int num_dirs = 0;
++ char **dirs;
++ const char *p, *q;
++ int ch;
++
++ /* Count the number of directories. Special case MSDOS disk names as part
++ of the initial directory. */
++ p = name;
++ #ifdef HAVE_DOS_BASED_FILE_SYSTEM
++ if (name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
++ {
++ p += 3;
++ num_dirs++;
++ }
++ #endif /* HAVE_DOS_BASED_FILE_SYSTEM */
++
++ while ((ch = *p++) != '\0')
++ {
++ if (IS_DIR_SEPARATOR (ch))
++ {
++ num_dirs++;
++ while (IS_DIR_SEPARATOR (*p))
++ p++;
++ }
++ }
++
++ dirs = (char **) xmalloc (sizeof (char *) * (num_dirs + 2));
++
++ /* Now copy the directory parts. */
++ num_dirs = 0;
++ p = name;
++ #ifdef HAVE_DOS_BASED_FILE_SYSTEM
++ if (name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
++ {
++ dirs[num_dirs++] = save_string (p, 3);
++ p += 3;
++ }
++ #endif /* HAVE_DOS_BASED_FILE_SYSTEM */
++
++ q = p;
++ while ((ch = *p++) != '\0')
++ {
++ if (IS_DIR_SEPARATOR (ch))
++ {
++ while (IS_DIR_SEPARATOR (*p))
++ p++;
++
++ dirs[num_dirs++] = save_string (q, p - q);
++ q = p;
++ }
++ }
++
++ if (p - 1 - q > 0)
++ dirs[num_dirs++] = save_string (q, p - 1 - q);
++
++ dirs[num_dirs] = NULL_PTR;
++ if (ptr_num_dirs)
++ *ptr_num_dirs = num_dirs;
++
++ return dirs;
++ }
++
++ /* Release storage held by split directories. */
++
++ static void
++ free_split_directories (dirs)
++ char **dirs;
++ {
++ int i = 0;
++
++ while (dirs[i] != NULL_PTR)
++ free (dirs[i++]);
++
++ free ((char *)dirs);
++ }
++
++ /* Given three strings PROGNAME, BIN_PREFIX, PREFIX, return a string that gets
++ to PREFIX starting with the directory portion of PROGNAME and a relative
++ pathname of the difference between BIN_PREFIX and PREFIX.
++
++ For example, if BIN_PREFIX is /alpha/beta/gamma/gcc/delta, PREFIX is
++ /alpha/beta/gamma/omega/, and PROGNAME is /red/green/blue/gcc, then this
++ function will return /red/green/blue/../omega.
++
++ If no relative prefix can be found, return NULL. */
++
++ static char *
++ make_relative_prefix (progname, bin_prefix, prefix)
++ const char *progname;
++ const char *bin_prefix;
++ const char *prefix;
++ {
++ char **prog_dirs, **bin_dirs, **prefix_dirs;
++ int prog_num, bin_num, prefix_num, std_loc_p;
++ int i, n, common;
++
++ prog_dirs = split_directories (progname, &prog_num);
++ bin_dirs = split_directories (bin_prefix, &bin_num);
++
++ /* If there is no full pathname, try to find the program by checking in each
++ of the directories specified in the PATH environment variable. */
++ if (prog_num == 1)
++ {
++ char *temp;
++
++ GET_ENV_PATH_LIST (temp, "PATH");
++ if (temp)
++ {
++ char *startp, *endp;
++ char *nstore = (char *) alloca (strlen (temp) + strlen (progname) + 1);
++
++ startp = endp = temp;
++ while (1)
++ {
++ if (*endp == PATH_SEPARATOR || *endp == 0)
++ {
++ if (endp == startp)
++ {
++ nstore[0] = '.';
++ nstore[1] = DIR_SEPARATOR;
++ nstore[2] = '\0';
++ }
++ else
++ {
++ strncpy (nstore, startp, endp-startp);
++ if (! IS_DIR_SEPARATOR (endp[-1]))
++ {
++ nstore[endp-startp] = DIR_SEPARATOR;
++ nstore[endp-startp+1] = 0;
++ }
++ else
++ nstore[endp-startp] = 0;
++ }
++ strcat (nstore, progname);
++ if (! access (nstore, X_OK)
++ #ifdef HAVE_EXECUTABLE_SUFFIX
++ || ! access (strcat (nstore, EXECUTABLE_SUFFIX), X_OK)
++ #endif
++ )
++ {
++ free_split_directories (prog_dirs);
++ progname = nstore;
++ prog_dirs = split_directories (progname, &prog_num);
++ break;
++ }
++
++ if (*endp == 0)
++ break;
++ endp = startp = endp + 1;
++ }
++ else
++ endp++;
++ }
++ }
++ }
++
++ /* Remove the program name from comparison of directory names. */
++ prog_num--;
++
++ /* Determine if the compiler is installed in the standard location, and if
++ so, we don't need to specify relative directories. Also, if argv[0]
++ doesn't contain any directory specifiers, there is not much we can do. */
++ std_loc_p = 0;
++ if (prog_num == bin_num)
++ {
++ for (i = 0; i < bin_num; i++)
++ {
++ if (strcmp (prog_dirs[i], bin_dirs[i]) != 0)
++ break;
++ }
++
++ if (prog_num <= 0 || i == bin_num)
++ {
++ std_loc_p = 1;
++ free_split_directories (prog_dirs);
++ free_split_directories (bin_dirs);
++ prog_dirs = bin_dirs = (char **)0;
++ return NULL_PTR;
++ }
++ }
++
++ prefix_dirs = split_directories (prefix, &prefix_num);
++
++ /* Find how many directories are in common between bin_prefix & prefix. */
++ n = (prefix_num < bin_num) ? prefix_num : bin_num;
++ for (common = 0; common < n; common++)
++ {
++ if (strcmp (bin_dirs[common], prefix_dirs[common]) != 0)
++ break;
++ }
++
++ /* If there are no common directories, there can be no relative prefix. */
++ if (common == 0)
++ {
++ free_split_directories (prog_dirs);
++ free_split_directories (bin_dirs);
++ free_split_directories (prefix_dirs);
++ return NULL_PTR;
++ }
++
++ /* Build up the pathnames in argv[0]. */
++ for (i = 0; i < prog_num; i++)
++ obstack_grow (&obstack, prog_dirs[i], strlen (prog_dirs[i]));
++
++ /* Now build up the ..'s. */
++ for (i = common; i < n; i++)
++ {
++ obstack_grow (&obstack, DIR_UP, sizeof (DIR_UP)-1);
++ obstack_1grow (&obstack, DIR_SEPARATOR);
++ }
++
++ /* Put in directories to move over to prefix. */
++ for (i = common; i < prefix_num; i++)
++ obstack_grow (&obstack, prefix_dirs[i], strlen (prefix_dirs[i]));
++
++ free_split_directories (prog_dirs);
++ free_split_directories (bin_dirs);
++ free_split_directories (prefix_dirs);
++
++ obstack_1grow (&obstack, '\0');
++ return obstack_finish (&obstack);
++ }
++ #endif /* VMS */
++
++
++
+
+ /* Build a list of search directories from PATHS.
+ PREFIX is a string to prepend to the list.
+*************** find_a_file (pprefix, name, mode)
+*** 1966,1972 ****
+ int mode;
+ {
+ char *temp;
+! const char *file_suffix = ((mode & X_OK) != 0 ? EXECUTABLE_SUFFIX : "");
+ struct prefix_list *pl;
+ int len = pprefix->max_len + strlen (name) + strlen (file_suffix) + 1;
+
+--- 2233,2239 ----
+ int mode;
+ {
+ char *temp;
+! const char *file_suffix = ((mode & X_OK) != 0 ? HOST_EXECUTABLE_SUFFIX : "");
+ struct prefix_list *pl;
+ int len = pprefix->max_len + strlen (name) + strlen (file_suffix) + 1;
+
+*************** static int warn_std;
+*** 2405,2411 ****
+ static int *warn_std_ptr = 0;
+
+
+! #if defined(HAVE_OBJECT_SUFFIX) || defined(HAVE_EXECUTABLE_SUFFIX)
+
+ /* Convert NAME to a new name if it is the standard suffix. DO_EXE
+ is true if we should look for an executable suffix as well. */
+--- 2672,2678 ----
+ static int *warn_std_ptr = 0;
+
+
+! #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
+
+ /* Convert NAME to a new name if it is the standard suffix. DO_EXE
+ is true if we should look for an executable suffix as well. */
+*************** convert_filename (name, do_exe)
+*** 2423,2444 ****
+
+ len = strlen (name);
+
+! #ifdef HAVE_OBJECT_SUFFIX
+! /* Convert x.o to x.obj if OBJECT_SUFFIX is ".obj". */
+ if (len > 2
+ && name[len - 2] == '.'
+ && name[len - 1] == 'o')
+ {
+ obstack_grow (&obstack, name, len - 2);
+! obstack_grow0 (&obstack, OBJECT_SUFFIX, strlen (OBJECT_SUFFIX));
+ name = obstack_finish (&obstack);
+ }
+ #endif
+
+! #ifdef HAVE_EXECUTABLE_SUFFIX
+ /* If there is no filetype, make it the executable suffix (which includes
+ the "."). But don't get confused if we have just "-o". */
+! if (! do_exe || EXECUTABLE_SUFFIX[0] == 0 || (len == 2 && name[0] == '-'))
+ return name;
+
+ for (i = len - 1; i >= 0; i--)
+--- 2690,2711 ----
+
+ len = strlen (name);
+
+! #ifdef HAVE_TARGET_OBJECT_SUFFIX
+! /* Convert x.o to x.obj if HAVE_TARGET_OBJECT_SUFFIX is ".obj". */
+ if (len > 2
+ && name[len - 2] == '.'
+ && name[len - 1] == 'o')
+ {
+ obstack_grow (&obstack, name, len - 2);
+! obstack_grow0 (&obstack, TARGET_OBJECT_SUFFIX, strlen (TARGET_OBJECT_SUFFIX));
+ name = obstack_finish (&obstack);
+ }
+ #endif
+
+! #ifdef HAVE_TARGET_EXECUTABLE_SUFFIX
+ /* If there is no filetype, make it the executable suffix (which includes
+ the "."). But don't get confused if we have just "-o". */
+! if (! do_exe || TARGET_EXECUTABLE_SUFFIX[0] == 0 || (len == 2 && name[0] == '-'))
+ return name;
+
+ for (i = len - 1; i >= 0; i--)
+*************** convert_filename (name, do_exe)
+*** 2450,2456 ****
+ return name;
+
+ obstack_grow (&obstack, name, len);
+! obstack_grow0 (&obstack, EXECUTABLE_SUFFIX, strlen (EXECUTABLE_SUFFIX));
+ name = obstack_finish (&obstack);
+ #endif
+
+--- 2717,2723 ----
+ return name;
+
+ obstack_grow (&obstack, name, len);
+! obstack_grow0 (&obstack, TARGET_EXECUTABLE_SUFFIX, strlen (TARGET_EXECUTABLE_SUFFIX));
+ name = obstack_finish (&obstack);
+ #endif
+
+*************** process_command (argc, argv)
+*** 2599,2605 ****
+ }
+ }
+
+! /* Set up the default search paths. */
+
+ if (gcc_exec_prefix)
+ {
+--- 2866,2924 ----
+ }
+ }
+
+! /* Set up the default search paths. If there is no GCC_EXEC_PREFIX,
+! see if we can create it from the pathname specified in argv[0]. */
+!
+! /* Bodges here for VxWorks compiler */
+! #ifdef SYNTHETIC_VXWORKS_PREFIXES
+! GET_ENV_PATH_LIST (wind_base, "WIND_BASE");
+! GET_ENV_PATH_LIST (wind_host_type, "WIND_HOST_TYPE");
+! if (wind_base && wind_host_type && *wind_base &&*wind_host_type)
+! {
+! char *temp;
+! temp = concat (wind_base, dir_separator_str, "host",
+! dir_separator_str, wind_host_type, dir_separator_str, NULL);
+! #ifdef __CYGWIN32__
+! CONVERT_PATH (tooldir_base_prefix, temp);
+! #else
+! tooldir_base_prefix = temp;
+! #endif
+! temp = concat (wind_base, dir_separator_str, "host",
+! dir_separator_str, wind_host_type, dir_separator_str, "lib",
+! dir_separator_str, "gcc-lib", dir_separator_str, NULL);
+! #ifdef __CYGWIN32__
+! CONVERT_PATH (gcc_exec_prefix, temp);
+! #else
+! gcc_exec_prefix = temp;
+! #endif
+! temp = concat (wind_base, dir_separator_str, "host",
+! dir_separator_str, wind_host_type, dir_separator_str, "lib",
+! dir_separator_str, "gcc-lib", dir_separator_str, NULL);
+! #ifdef __CYGWIN32__
+! CONVERT_PATH (standard_exec_prefix, temp);
+! #else
+! standard_exec_prefix = temp;
+! #endif
+! }
+! #endif
+!
+!
+! #ifndef VMS
+! /* FIXME: make_relative_prefix doesn't yet work for VMS. */
+! if (!gcc_exec_prefix)
+! {
+! char* program_name;
+! #ifdef __CYGWIN32__
+! CONVERT_PATH(program_name, argv[0]);
+! #else
+! program_name = argv[0];
+! #endif
+! gcc_exec_prefix = make_relative_prefix (program_name, standard_bindir_prefix,
+! standard_exec_prefix);
+! if (gcc_exec_prefix)
+! putenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL_PTR));
+! }
+! #endif
+
+ if (gcc_exec_prefix)
+ {
+*************** process_command (argc, argv)
+*** 2994,3000 ****
+
+ case 'o':
+ have_o = 1;
+! #if defined(HAVE_EXECUTABLE_SUFFIX)
+ if (! have_c)
+ {
+ int skip;
+--- 3313,3319 ----
+
+ case 'o':
+ have_o = 1;
+! #if defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
+ if (! have_c)
+ {
+ int skip;
+*************** process_command (argc, argv)
+*** 3023,3029 ****
+ }
+ }
+ #endif
+! #if defined(HAVE_EXECUTABLE_SUFFIX) || defined(HAVE_OBJECT_SUFFIX)
+ if (p[1] == 0)
+ argv[i+1] = convert_filename (argv[i+1], ! have_c);
+ else
+--- 3342,3348 ----
+ }
+ }
+ #endif
+! #if defined(HAVE_TARGET_EXECUTABLE_SUFFIX) || defined(HAVE_TARGET_OBJECT_SUFFIX)
+ if (p[1] == 0)
+ argv[i+1] = convert_filename (argv[i+1], ! have_c);
+ else
+*************** process_command (argc, argv)
+*** 3079,3084 ****
+--- 3398,3404 ----
+ directories, so that we can search both the user specified directory
+ and the standard place. */
+
++ #ifndef SYNTHETIC_VXWORKS_PREFIXES
+ if (!IS_DIR_SEPARATOR (*tooldir_prefix))
+ {
+ if (gcc_exec_prefix)
+*************** process_command (argc, argv)
+*** 3101,3106 ****
+--- 3421,3427 ----
+ dir_separator_str, spec_version,
+ dir_separator_str, tooldir_prefix, NULL_PTR);
+ }
++ #endif
+
+ add_prefix (&exec_prefixes,
+ concat (tooldir_prefix, "bin", dir_separator_str, NULL_PTR),
+*************** process_command (argc, argv)
+*** 3287,3293 ****
+ }
+ else
+ {
+! #ifdef HAVE_OBJECT_SUFFIX
+ argv[i] = convert_filename (argv[i], 0);
+ #endif
+
+--- 3608,3614 ----
+ }
+ else
+ {
+! #ifdef HAVE_TARGET_OBJECT_SUFFIX
+ argv[i] = convert_filename (argv[i], 0);
+ #endif
+
+*************** do_spec_1 (spec, inswitch, soft_matched_
+*** 3660,3667 ****
+ /* We don't support extra suffix characters after %O. */
+ if (*p == '.' || ISALPHA ((unsigned char)*p))
+ abort ();
+! suffix = OBJECT_SUFFIX;
+! suffix_length = strlen (OBJECT_SUFFIX);
+ }
+ else
+ {
+--- 3981,3988 ----
+ /* We don't support extra suffix characters after %O. */
+ if (*p == '.' || ISALPHA ((unsigned char)*p))
+ abort ();
+! suffix = TARGET_OBJECT_SUFFIX;
+! suffix_length = strlen (TARGET_OBJECT_SUFFIX);
+ }
+ else
+ {
+*************** do_spec_1 (spec, inswitch, soft_matched_
+*** 3756,3762 ****
+ }
+
+ case 'O':
+! obstack_grow (&obstack, OBJECT_SUFFIX, strlen (OBJECT_SUFFIX));
+ arg_going = 1;
+ break;
+
+--- 4077,4083 ----
+ }
+
+ case 'O':
+! obstack_grow (&obstack, TARGET_OBJECT_SUFFIX, strlen (TARGET_OBJECT_SUFFIX));
+ arg_going = 1;
+ break;
+
+diff -c3rpN gcc-2.95.3.orig/gcc/gcc.texi gcc-2.95.4/gcc/gcc.texi
+*** gcc-2.95.3.orig/gcc/gcc.texi Thu Jan 25 14:03:16 2001
+--- gcc-2.95.4/gcc/gcc.texi Wed Jun 6 01:37:58 2001
+*************** character constant specifying that chara
+*** 3847,3863 ****
+ names, the character you specify will be used. GCC will test for
+ both slash and the character you specify when parsing filenames.
+
+! @findex OBJECT_SUFFIX
+! @item OBJECT_SUFFIX
+ Define this macro to be a C string representing the suffix for object
+! files on your machine. If you do not define this macro, GCC will use
+! @samp{.o} as the suffix for object files.
+
+! @findex EXECUTABLE_SUFFIX
+! @item EXECUTABLE_SUFFIX
+! Define this macro to be a C string representing the suffix for executable
+! files on your machine. If you do not define this macro, GCC will use
+! the null string as the suffix for object files.
+
+ @findex COLLECT_EXPORT_LIST
+ @item COLLECT_EXPORT_LIST
+--- 3847,3864 ----
+ names, the character you specify will be used. GCC will test for
+ both slash and the character you specify when parsing filenames.
+
+! @findex HOST_OBJECT_SUFFIX
+! @item HOST_OBJECT_SUFFIX
+ Define this macro to be a C string representing the suffix for object
+! files on your host machine (@file{xm-@var{machine}.h}). If you do not define this
+! macro, GCC will use @samp{.o} as the suffix for object files.
+
+! @findex HOST_EXECUTABLE_SUFFIX
+! @item HOST_EXECUTABLE_SUFFIX
+! Define this macro to be a C string representing the suffix for
+! executable files on your host machine (@file{xm-@var{machine}.h}). If you do not
+! define this macro, GCC will use the null string as the suffix for
+! executable files.
+
+ @findex COLLECT_EXPORT_LIST
+ @item COLLECT_EXPORT_LIST
+diff -c3rpN gcc-2.95.3.orig/gcc/invoke.texi gcc-2.95.4/gcc/invoke.texi
+*** gcc-2.95.3.orig/gcc/invoke.texi Thu Jan 25 14:03:17 2001
+--- gcc-2.95.4/gcc/invoke.texi Wed Jun 6 01:38:10 2001
+*************** A @code{switch} statement has an operand
+*** 1694,1699 ****
+--- 1694,1705 ----
+ @item
+ A non-@code{static} function declaration follows a @code{static} one.
+ This construct is not accepted by some traditional C compilers.
++
++ @item
++ The ANSI type of an integer constant has a different width or signedness
++ from its traditional type. This warning is only issued if the base of
++ the constant is ten. I.e. hexadecimal or octal values, which typically
++ represent bit patterns, are not warned about.
+ @end itemize
+
+ @item -Wundef
+diff -c3rpN gcc-2.95.3.orig/gcc/java/lang.c gcc-2.95.4/gcc/java/lang.c
+*** gcc-2.95.3.orig/gcc/java/lang.c Fri May 14 14:44:09 1999
+--- gcc-2.95.4/gcc/java/lang.c Wed Jun 6 01:38:13 2001
+***************
+*** 1,5 ****
+ /* Java(TM) language-specific utility routines.
+! Copyright (C) 1996, 97-98, 1999 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+--- 1,5 ----
+ /* Java(TM) language-specific utility routines.
+! Copyright (C) 1996, 97-98, 1999, 2001 Free Software Foundation, Inc.
+
+ This file is part of GNU CC.
+
+*************** The Free Software Foundation is independ
+*** 34,41 ****
+ #include "flags.h"
+ #include "xref.h"
+
+! #ifndef OBJECT_SUFFIX
+! # define OBJECT_SUFFIX ".o"
+ #endif
+
+ /* Table indexed by tree code giving a string containing a character
+--- 34,41 ----
+ #include "flags.h"
+ #include "xref.h"
+
+! #ifndef TARGET_OBJECT_SUFFIX
+! # define TARGET_OBJECT_SUFFIX ".o"
+ #endif
+
+ /* Table indexed by tree code giving a string containing a character
+*************** init_parse (filename)
+*** 278,284 ****
+ else
+ {
+ char *buf = (char *) xmalloc (dot - filename +
+! 3 + sizeof (OBJECT_SUFFIX));
+ strncpy (buf, filename, dot - filename);
+
+ /* If emitting class files, we might have multiple
+--- 278,284 ----
+ else
+ {
+ char *buf = (char *) xmalloc (dot - filename +
+! 3 + sizeof (TARGET_OBJECT_SUFFIX));
+ strncpy (buf, filename, dot - filename);
+
+ /* If emitting class files, we might have multiple
+*************** init_parse (filename)
+*** 289,295 ****
+ jcf_dependency_set_target (NULL);
+ else
+ {
+! strcpy (buf + (dot - filename), OBJECT_SUFFIX);
+ jcf_dependency_set_target (buf);
+ }
+
+--- 289,295 ----
+ jcf_dependency_set_target (NULL);
+ else
+ {
+! strcpy (buf + (dot - filename), TARGET_OBJECT_SUFFIX);
+ jcf_dependency_set_target (buf);
+ }
+
+diff -c3rpN gcc-2.95.3.orig/gcc/jump.c gcc-2.95.4/gcc/jump.c
+*** gcc-2.95.3.orig/gcc/jump.c Thu Oct 21 07:24:03 1999
+--- gcc-2.95.4/gcc/jump.c Wed Jun 6 01:38:15 2001
+*************** jump_optimize_1 (f, cross_jump, noop_mov
+*** 200,207 ****
+ if (flag_exceptions && cross_jump)
+ init_insn_eh_region (f, max_uid);
+
+- delete_barrier_successors (f);
+-
+ /* Leave some extra room for labels and duplicate exit test insns
+ we make. */
+ max_jump_chain = max_uid * 14 / 10;
+--- 200,205 ----
+*************** jump_optimize_1 (f, cross_jump, noop_mov
+*** 224,229 ****
+--- 222,229 ----
+ for (insn = exception_handler_labels; insn; insn = XEXP (insn, 1))
+ LABEL_NUSES (XEXP (insn, 0))++;
+
++ delete_barrier_successors (f);
++
+ /* Quit now if we just wanted to rebuild the JUMP_LABEL and REG_LABEL
+ notes and recompute LABEL_NUSES. */
+ if (mark_labels_only)
+*************** delete_barrier_successors (f)
+*** 2139,2145 ****
+ insn = NEXT_INSN (insn);
+ while (insn != 0 && GET_CODE (insn) != CODE_LABEL)
+ {
+! if (GET_CODE (insn) == NOTE
+ && NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_END)
+ insn = NEXT_INSN (insn);
+ else
+--- 2139,2162 ----
+ insn = NEXT_INSN (insn);
+ while (insn != 0 && GET_CODE (insn) != CODE_LABEL)
+ {
+! if (GET_CODE (insn) == JUMP_INSN)
+! {
+! /* Detect when we're deleting a tablejump; get rid of
+! the jump table as well. */
+! rtx next1 = next_nonnote_insn (insn);
+! rtx next2 = next1 ? next_nonnote_insn (next1) : 0;
+! if (next2 && GET_CODE (next1) == CODE_LABEL
+! && GET_CODE (next2) == JUMP_INSN
+! && (GET_CODE (PATTERN (next2)) == ADDR_VEC
+! || GET_CODE (PATTERN (next2)) == ADDR_DIFF_VEC))
+! {
+! delete_insn (insn);
+! insn = next2;
+! }
+! else
+! insn = delete_insn (insn);
+! }
+! else if (GET_CODE (insn) == NOTE
+ && NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_END)
+ insn = NEXT_INSN (insn);
+ else
+diff -c3rpN gcc-2.95.3.orig/gcc/just-fixinc gcc-2.95.4/gcc/just-fixinc
+*** gcc-2.95.3.orig/gcc/just-fixinc Wed Dec 16 20:57:01 1998
+--- gcc-2.95.4/gcc/just-fixinc Wed Jun 6 01:38:15 2001
+***************
+*** 1,5 ****
+ #!/bin/sh
+! # $Id: just-fixinc,v 1.2 1998/04/03 16:35:58 law 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
+--- 1,5 ----
+ #!/bin/sh
+! # $Id: just-fixinc,v 1.3 1998/12/16 20:57:01 law 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 -c3rpN gcc-2.95.3.orig/gcc/libgcc2.c gcc-2.95.4/gcc/libgcc2.c
+*** gcc-2.95.3.orig/gcc/libgcc2.c Fri Jun 11 04:11:43 1999
+--- gcc-2.95.4/gcc/libgcc2.c Wed Jun 6 01:38:16 2001
+*************** Boston, MA 02111-1307, USA. */
+*** 63,68 ****
+--- 63,71 ----
+ #if defined(CROSS_COMPILE) && !defined(inhibit_libc)
+ #define inhibit_libc
+ #endif
++ #if defined (__vxworks)
++ #undef inhibit_libc
++ #endif
+
+ /* Permit the tm.h file to select the endianness to use just for this
+ file. This is used when the endianness is determined when the
+diff -c3rpN gcc-2.95.3.orig/gcc/loop.c gcc-2.95.4/gcc/loop.c
+*** gcc-2.95.3.orig/gcc/loop.c Thu Jan 25 14:03:18 2001
+--- gcc-2.95.4/gcc/loop.c Wed Jun 6 01:38:16 2001
+*************** combine_movables (movables, nregs)
+*** 1481,1490 ****
+ width as M1. The check for integer is redundant, but
+ safe, since the only case of differing destination
+ modes with equal sources is when both sources are
+! VOIDmode, i.e., CONST_INT. */
+ (GET_MODE (m->set_dest) == GET_MODE (m1->set_dest)
+ || (GET_MODE_CLASS (GET_MODE (m->set_dest)) == MODE_INT
+ && GET_MODE_CLASS (GET_MODE (m1->set_dest)) == MODE_INT
+ && (GET_MODE_BITSIZE (GET_MODE (m->set_dest))
+ >= GET_MODE_BITSIZE (GET_MODE (m1->set_dest)))))
+ /* See if the source of M1 says it matches M. */
+--- 1481,1496 ----
+ width as M1. The check for integer is redundant, but
+ safe, since the only case of differing destination
+ modes with equal sources is when both sources are
+! VOIDmode, i.e., CONST_INT.
+!
+! For 2.95, don't do this if the mode of M1 is Pmode.
+! This prevents us from substituting SUBREGs for REGs
+! in memory accesses; not all targets are prepared to
+! handle this properly. */
+ (GET_MODE (m->set_dest) == GET_MODE (m1->set_dest)
+ || (GET_MODE_CLASS (GET_MODE (m->set_dest)) == MODE_INT
+ && GET_MODE_CLASS (GET_MODE (m1->set_dest)) == MODE_INT
++ && GET_MODE (m1->set_dest) != Pmode
+ && (GET_MODE_BITSIZE (GET_MODE (m->set_dest))
+ >= GET_MODE_BITSIZE (GET_MODE (m1->set_dest)))))
+ /* See if the source of M1 says it matches M. */
+diff -c3rpN gcc-2.95.3.orig/gcc/mkinstalldirs gcc-2.95.4/gcc/mkinstalldirs
+*** gcc-2.95.3.orig/gcc/mkinstalldirs Thu Dec 17 06:43:04 1998
+--- gcc-2.95.4/gcc/mkinstalldirs Wed Jun 6 01:38:18 2001
+***************
+*** 4,10 ****
+ # Created: 1993-05-16
+ # Public domain
+
+! # $Id: mkinstalldirs,v 1.1 1998/05/19 07:09:56 drepper Exp $
+
+ errstatus=0
+
+--- 4,10 ----
+ # Created: 1993-05-16
+ # Public domain
+
+! # $Id: mkinstalldirs,v 1.1 1998/12/17 06:43:04 law Exp $
+
+ errstatus=0
+
+diff -c3rpN gcc-2.95.3.orig/gcc/objc/objc-parse.c gcc-2.95.4/gcc/objc/objc-parse.c
+*** gcc-2.95.3.orig/gcc/objc/objc-parse.c Fri Mar 16 14:13:48 2001
+--- gcc-2.95.4/gcc/objc/objc-parse.c Wed Jun 6 01:38:19 2001
+***************
+*** 1,69 ****
+
+ /* A Bison parser, made from objc-parse.y
+! by GNU Bison version 1.25
+! */
+
+ #define YYBISON 1 /* Identify Bison output. */
+
+! #define IDENTIFIER 258
+! #define TYPENAME 259
+! #define SCSPEC 260
+! #define TYPESPEC 261
+! #define TYPE_QUAL 262
+! #define CONSTANT 263
+! #define STRING 264
+! #define ELLIPSIS 265
+! #define SIZEOF 266
+! #define ENUM 267
+! #define STRUCT 268
+! #define UNION 269
+! #define IF 270
+! #define ELSE 271
+! #define WHILE 272
+! #define DO 273
+! #define FOR 274
+! #define SWITCH 275
+! #define CASE 276
+! #define DEFAULT 277
+! #define BREAK 278
+! #define CONTINUE 279
+! #define RETURN 280
+! #define GOTO 281
+! #define ASM_KEYWORD 282
+! #define TYPEOF 283
+! #define ALIGNOF 284
+! #define ATTRIBUTE 285
+! #define EXTENSION 286
+! #define LABEL 287
+! #define REALPART 288
+! #define IMAGPART 289
+! #define ASSIGN 290
+! #define OROR 291
+! #define ANDAND 292
+! #define EQCOMPARE 293
+! #define ARITHCOMPARE 294
+! #define LSHIFT 295
+! #define RSHIFT 296
+! #define UNARY 297
+! #define PLUSPLUS 298
+! #define MINUSMINUS 299
+! #define HYPERUNARY 300
+! #define POINTSAT 301
+! #define INTERFACE 302
+! #define IMPLEMENTATION 303
+! #define END 304
+! #define SELECTOR 305
+! #define DEFS 306
+! #define ENCODE 307
+! #define CLASSNAME 308
+! #define PUBLIC 309
+! #define PRIVATE 310
+! #define PROTECTED 311
+! #define PROTOCOL 312
+! #define OBJECTNAME 313
+! #define CLASS 314
+! #define ALIAS 315
+! #define OBJC_STRING 316
+
+ #line 33 "objc-parse.y"
+
+--- 1,68 ----
+
+ /* A Bison parser, made from objc-parse.y
+! by GNU Bison version 1.28 */
+
+ #define YYBISON 1 /* Identify Bison output. */
+
+! #define IDENTIFIER 257
+! #define TYPENAME 258
+! #define SCSPEC 259
+! #define TYPESPEC 260
+! #define TYPE_QUAL 261
+! #define CONSTANT 262
+! #define STRING 263
+! #define ELLIPSIS 264
+! #define SIZEOF 265
+! #define ENUM 266
+! #define STRUCT 267
+! #define UNION 268
+! #define IF 269
+! #define ELSE 270
+! #define WHILE 271
+! #define DO 272
+! #define FOR 273
+! #define SWITCH 274
+! #define CASE 275
+! #define DEFAULT 276
+! #define BREAK 277
+! #define CONTINUE 278
+! #define RETURN 279
+! #define GOTO 280
+! #define ASM_KEYWORD 281
+! #define TYPEOF 282
+! #define ALIGNOF 283
+! #define ATTRIBUTE 284
+! #define EXTENSION 285
+! #define LABEL 286
+! #define REALPART 287
+! #define IMAGPART 288
+! #define ASSIGN 289
+! #define OROR 290
+! #define ANDAND 291
+! #define EQCOMPARE 292
+! #define ARITHCOMPARE 293
+! #define LSHIFT 294
+! #define RSHIFT 295
+! #define UNARY 296
+! #define PLUSPLUS 297
+! #define MINUSMINUS 298
+! #define HYPERUNARY 299
+! #define POINTSAT 300
+! #define INTERFACE 301
+! #define IMPLEMENTATION 302
+! #define END 303
+! #define SELECTOR 304
+! #define DEFS 305
+! #define ENCODE 306
+! #define CLASSNAME 307
+! #define PUBLIC 308
+! #define PRIVATE 309
+! #define PROTECTED 310
+! #define PROTOCOL 311
+! #define OBJECTNAME 312
+! #define CLASS 313
+! #define ALIAS 314
+! #define OBJC_STRING 315
+
+ #line 33 "objc-parse.y"
+
+*************** static tree declspec_stack;
+*** 120,125 ****
+--- 119,135 ----
+ /* 1 if we explained undeclared var errors. */
+ static int undeclared_variable_notice;
+
++ /* For __extension__, save/restore the warning flags which are
++ controlled by __extension__. */
++ #define SAVE_WARN_FLAGS() \
++ build_int_2 (pedantic | (warn_pointer_arith << 1), 0)
++ #define RESTORE_WARN_FLAGS(tval) \
++ do { \
++ int val = TREE_INT_CST_LOW (tval); \
++ pedantic = val & 1; \
++ warn_pointer_arith = (val >> 1) & 1; \
++ } while (0)
++
+ /* Objective-C specific information */
+
+ tree objc_interface_context;
+*************** extern void yyprint PROTO ((FILE *, in
+*** 150,156 ****
+ #define YYFLAG -32768
+ #define YYNTBASE 84
+
+! #define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 311)
+
+ static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+--- 160,166 ----
+ #define YYFLAG -32768
+ #define YYNTBASE 84
+
+! #define YYTRANSLATE(x) ((unsigned)(x) <= 315 ? yytranslate[x] : 311)
+
+ static const char yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+*************** static const char yytranslate[] = {
+*** 178,190 ****
+ 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, 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,
+! 39, 40, 44, 45, 46, 47, 53, 54, 55, 56,
+! 57, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+! 70, 71, 72, 73, 74, 75
+ };
+
+ #if YYDEBUG != 0
+--- 188,200 ----
+ 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, 39,
+! 40, 44, 45, 46, 47, 53, 54, 55, 56, 57,
+! 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+! 71, 72, 73, 74, 75
+ };
+
+ #if YYDEBUG != 0
+*************** static const short yyrhs[] = { -1,
+*** 431,493 ****
+
+ #if YYDEBUG != 0
+ static const short yyrline[] = { 0,
+! 233, 238, 252, 254, 254, 255, 257, 259, 260, 261,
+! 269, 273, 284, 289, 294, 296, 298, 299, 300, 305,
+! 312, 314, 319, 324, 330, 332, 337, 342, 348, 350,
+! 355, 362, 364, 365, 366, 369, 371, 373, 375, 377,
+! 379, 381, 385, 389, 392, 395, 398, 402, 404, 407,
+! 410, 414, 442, 448, 451, 454, 457, 459, 463, 467,
+! 471, 473, 476, 480, 507, 509, 511, 513, 515, 517,
+! 519, 521, 523, 525, 527, 529, 531, 533, 537, 539,
+! 543, 545, 548, 552, 554, 561, 564, 572, 583, 743,
+! 744, 746, 752, 754, 768, 791, 793, 795, 807, 821,
+! 823, 825, 827, 829, 831, 833, 838, 840, 846, 848,
+! 852, 854, 855, 865, 870, 872, 873, 874, 881, 887,
+! 892, 895, 903, 908, 910, 911, 912, 919, 930, 934,
+! 940, 945, 950, 955, 957, 959, 968, 971, 975, 977,
+! 979, 984, 988, 991, 995, 998, 1000, 1012, 1015, 1017,
+! 1019, 1023, 1027, 1029, 1032, 1045, 1048, 1052, 1054, 1062,
+! 1063, 1064, 1068, 1070, 1075, 1077, 1079, 1085, 1086, 1087,
+! 1090, 1092, 1095, 1097, 1100, 1103, 1109, 1116, 1118, 1125,
+! 1132, 1135, 1142, 1145, 1149, 1152, 1156, 1161, 1164, 1168,
+! 1171, 1173, 1175, 1177, 1184, 1186, 1187, 1188, 1193, 1195,
+! 1200, 1208, 1213, 1217, 1220, 1222, 1227, 1229, 1230, 1233,
+! 1233, 1236, 1239, 1241, 1243, 1246, 1248, 1251, 1259, 1270,
+! 1278, 1282, 1293, 1301, 1308, 1310, 1315, 1318, 1323, 1325,
+! 1327, 1334, 1336, 1337, 1345, 1351, 1353, 1355, 1362, 1364,
+! 1370, 1376, 1378, 1380, 1382, 1389, 1391, 1394, 1397, 1401,
+! 1404, 1408, 1411, 1415, 1420, 1422, 1426, 1428, 1430, 1432,
+! 1436, 1438, 1441, 1444, 1447, 1450, 1454, 1456, 1459, 1461,
+! 1466, 1469, 1474, 1476, 1478, 1482, 1506, 1513, 1518, 1524,
+! 1529, 1531, 1536, 1538, 1542, 1546, 1550, 1560, 1562, 1567,
+! 1572, 1575, 1579, 1582, 1586, 1589, 1592, 1595, 1599, 1602,
+! 1606, 1610, 1612, 1614, 1616, 1618, 1620, 1622, 1624, 1628,
+! 1636, 1644, 1646, 1648, 1652, 1654, 1657, 1660, 1673, 1675,
+! 1680, 1682, 1685, 1699, 1702, 1705, 1707, 1709, 1717, 1725,
+! 1736, 1741, 1744, 1758, 1767, 1771, 1775, 1779, 1785, 1789,
+! 1794, 1797, 1802, 1805, 1806, 1823, 1828, 1831, 1843, 1845,
+! 1855, 1865, 1866, 1874, 1877, 1889, 1893, 1910, 1920, 1929,
+! 1934, 1939, 1944, 1948, 1952, 1963, 1970, 1977, 1984, 1995,
+! 2001, 2004, 2009, 2032, 2066, 2097, 2128, 2143, 2157, 2161,
+! 2165, 2168, 2173, 2175, 2178, 2180, 2184, 2189, 2192, 2198,
+! 2203, 2208, 2210, 2219, 2220, 2226, 2228, 2238, 2240, 2244,
+! 2247, 2253, 2263, 2272, 2281, 2291, 2305, 2310, 2315, 2317,
+! 2326, 2329, 2334, 2337, 2341, 2349, 2351, 2352, 2353, 2354,
+! 2355, 2369, 2372, 2376, 2382, 2388, 2395, 2400, 2406, 2413,
+! 2419, 2425, 2430, 2436, 2443, 2449, 2455, 2461, 2469, 2475,
+! 2481, 2489, 2496, 2502, 2511, 2518, 2526, 2531, 2534, 2544,
+! 2546, 2549, 2551, 2552, 2555, 2560, 2561, 2578, 2585, 2591,
+! 2595, 2598, 2599, 2602, 2610, 2616, 2625, 2635, 2642, 2646,
+! 2651, 2660, 2667, 2671, 2681, 2683, 2684, 2686, 2688, 2689,
+! 2690, 2691, 2693, 2695, 2698, 2706, 2713, 2713, 2720, 2726,
+! 2728, 2734, 2739, 2744, 2753, 2755, 2761, 2763, 2766, 2768,
+! 2769, 2770, 2773, 2779, 2781, 2785, 2788, 2795, 2801, 2806,
+! 2813, 2818, 2823, 2828, 2835, 2839, 2842, 2848, 2850, 2851,
+! 2852, 2855, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864,
+! 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874,
+! 2875, 2875, 2878, 2884, 2889, 2894, 2900, 2902, 2905, 2907,
+! 2914, 2926, 2931, 2937, 2939, 2945, 2949, 2950, 2956, 2958,
+! 2961, 2963, 2969, 2974, 2980, 2987, 2996
+ };
+ #endif
+
+--- 441,503 ----
+
+ #if YYDEBUG != 0
+ static const short yyrline[] = { 0,
+! 244, 249, 263, 265, 265, 266, 268, 270, 271, 272,
+! 280, 284, 295, 300, 305, 307, 309, 310, 311, 316,
+! 323, 325, 330, 335, 341, 343, 348, 353, 359, 361,
+! 366, 373, 375, 376, 377, 380, 382, 384, 386, 388,
+! 390, 392, 396, 400, 403, 406, 409, 413, 415, 418,
+! 421, 425, 453, 459, 462, 465, 468, 470, 474, 478,
+! 482, 484, 487, 491, 518, 520, 522, 524, 526, 528,
+! 530, 532, 534, 536, 538, 540, 542, 544, 548, 550,
+! 554, 556, 559, 563, 565, 572, 575, 583, 594, 754,
+! 755, 757, 763, 765, 779, 802, 804, 806, 818, 832,
+! 834, 836, 838, 840, 842, 844, 849, 851, 857, 859,
+! 863, 865, 866, 876, 881, 883, 884, 885, 892, 898,
+! 903, 906, 914, 919, 921, 922, 923, 930, 941, 945,
+! 951, 956, 961, 966, 968, 970, 979, 982, 986, 988,
+! 990, 995, 999, 1002, 1006, 1009, 1011, 1023, 1026, 1028,
+! 1030, 1034, 1038, 1040, 1043, 1056, 1059, 1063, 1065, 1073,
+! 1074, 1075, 1079, 1081, 1086, 1088, 1090, 1096, 1097, 1098,
+! 1101, 1103, 1106, 1108, 1111, 1114, 1120, 1127, 1129, 1136,
+! 1143, 1146, 1153, 1156, 1160, 1163, 1167, 1172, 1175, 1179,
+! 1182, 1184, 1186, 1188, 1195, 1197, 1198, 1199, 1204, 1206,
+! 1211, 1219, 1224, 1228, 1231, 1233, 1238, 1240, 1241, 1244,
+! 1244, 1247, 1250, 1252, 1254, 1257, 1259, 1262, 1270, 1281,
+! 1289, 1293, 1304, 1312, 1319, 1321, 1326, 1329, 1334, 1336,
+! 1338, 1345, 1347, 1348, 1356, 1362, 1364, 1366, 1373, 1375,
+! 1381, 1387, 1389, 1391, 1393, 1400, 1402, 1405, 1408, 1412,
+! 1415, 1419, 1422, 1426, 1431, 1433, 1437, 1439, 1441, 1443,
+! 1447, 1449, 1452, 1455, 1458, 1461, 1465, 1467, 1470, 1472,
+! 1477, 1480, 1485, 1487, 1489, 1493, 1517, 1524, 1529, 1535,
+! 1540, 1542, 1547, 1549, 1553, 1557, 1561, 1571, 1573, 1578,
+! 1583, 1586, 1590, 1593, 1597, 1600, 1603, 1606, 1610, 1613,
+! 1617, 1621, 1623, 1625, 1627, 1629, 1631, 1633, 1635, 1639,
+! 1647, 1655, 1657, 1659, 1663, 1665, 1668, 1671, 1684, 1686,
+! 1691, 1693, 1696, 1710, 1713, 1716, 1718, 1720, 1728, 1736,
+! 1747, 1752, 1755, 1769, 1778, 1782, 1786, 1790, 1796, 1800,
+! 1805, 1808, 1813, 1816, 1817, 1834, 1839, 1842, 1854, 1856,
+! 1866, 1876, 1877, 1885, 1888, 1900, 1904, 1921, 1931, 1940,
+! 1945, 1950, 1955, 1959, 1963, 1974, 1981, 1988, 1995, 2006,
+! 2012, 2015, 2020, 2043, 2077, 2108, 2139, 2154, 2168, 2172,
+! 2176, 2179, 2184, 2186, 2189, 2191, 2195, 2200, 2203, 2209,
+! 2214, 2219, 2221, 2230, 2231, 2237, 2239, 2249, 2251, 2255,
+! 2258, 2264, 2274, 2283, 2292, 2302, 2316, 2321, 2326, 2328,
+! 2337, 2340, 2345, 2348, 2352, 2361, 2363, 2364, 2365, 2366,
+! 2367, 2381, 2384, 2388, 2394, 2400, 2407, 2412, 2418, 2425,
+! 2431, 2437, 2442, 2448, 2455, 2461, 2467, 2473, 2481, 2487,
+! 2493, 2501, 2508, 2514, 2523, 2530, 2538, 2543, 2546, 2556,
+! 2558, 2561, 2563, 2564, 2567, 2572, 2573, 2590, 2597, 2603,
+! 2607, 2610, 2611, 2614, 2622, 2628, 2637, 2647, 2654, 2658,
+! 2663, 2672, 2679, 2683, 2693, 2695, 2696, 2698, 2700, 2701,
+! 2702, 2703, 2705, 2707, 2710, 2718, 2725, 2725, 2732, 2738,
+! 2740, 2746, 2751, 2756, 2765, 2767, 2773, 2775, 2778, 2780,
+! 2781, 2782, 2785, 2791, 2793, 2797, 2800, 2807, 2813, 2818,
+! 2825, 2830, 2835, 2840, 2847, 2851, 2854, 2860, 2862, 2863,
+! 2864, 2867, 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876,
+! 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886,
+! 2887, 2887, 2890, 2896, 2901, 2906, 2912, 2914, 2917, 2919,
+! 2926, 2938, 2943, 2949, 2951, 2957, 2961, 2962, 2968, 2970,
+! 2973, 2975, 2981, 2986, 2992, 2999, 3008
+ };
+ #endif
+
+*************** static const short yycheck[] = { 56,
+*** 1675,1680 ****
+--- 1685,1691 ----
+ };
+ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+ #line 3 "/usr/lib/bison.simple"
++ /* This file comes from bison-1.28. */
+
+ /* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+*************** static const short yycheck[] = { 56,
+*** 1691,1736 ****
+
+ 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., 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. */
+
+! #ifndef alloca
+ #ifdef __GNUC__
+ #define alloca __builtin_alloca
+ #else /* not GNU C. */
+! #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+ #include <alloca.h>
+ #else /* not sparc */
+! #if defined (MSDOS) && !defined (__TURBOC__)
+ #include <malloc.h>
+ #else /* not MSDOS, or __TURBOC__ */
+ #if defined(_AIX)
+! #include <malloc.h>
+ #pragma 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 /* not _AIX */
+ #endif /* not MSDOS, or __TURBOC__ */
+! #endif /* not sparc. */
+! #endif /* not GNU C. */
+! #endif /* alloca not defined. */
+
+! /* 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
+--- 1702,1767 ----
+
+ 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. */
+
+ /* 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 */
+ #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
+ #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. */
+ #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> */
+ #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
+ #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 */
+
+! #ifdef YYSTACK_USE_ALLOCA
+! #define YYSTACK_ALLOC alloca
+! #else
+! #define YYSTACK_ALLOC malloc
+! #endif
+
+ /* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+*************** void *alloca ();
+*** 1740,1747 ****
+ #define yyclearin (yychar = YYEMPTY)
+ #define YYEMPTY -2
+ #define YYEOF 0
+! #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
+--- 1771,1778 ----
+ #define yyclearin (yychar = YYEMPTY)
+ #define YYEMPTY -2
+ #define YYEOF 0
+! #define YYACCEPT goto yyacceptlab
+! #define YYABORT goto yyabortlab
+ #define YYERROR goto yyerrlab1
+ /* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+*************** int yydebug; /* nonzero means print p
+*** 1822,1833 ****
+ #ifndef YYMAXDEPTH
+ #define YYMAXDEPTH 10000
+ #endif
+-
+- /* 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++ */
+--- 1853,1864 ----
+ #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. */
++
+ #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++ */
+*************** static void
+*** 1839,1845 ****
+ __yy_memcpy (to, from, count)
+ char *to;
+ char *from;
+! int count;
+ {
+ register char *f = from;
+ register char *t = to;
+--- 1870,1876 ----
+ __yy_memcpy (to, from, count)
+ char *to;
+ char *from;
+! unsigned int count;
+ {
+ register char *f = from;
+ register char *t = to;
+*************** __yy_memcpy (to, from, count)
+*** 1854,1863 ****
+ /* 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, int count)
+ {
+- register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+--- 1885,1894 ----
+ /* 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)
+ {
+ register char *t = to;
++ register char *f = from;
+ register int i = count;
+
+ while (i-- > 0)
+*************** __yy_memcpy (char *to, char *from, int c
+*** 1867,1873 ****
+ #endif
+ #endif
+
+! #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 *.
+--- 1898,1904 ----
+ #endif
+ #endif
+
+! #line 217 "/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 *.
+*************** __yy_memcpy (char *to, char *from, int c
+*** 1888,1893 ****
+--- 1919,1933 ----
+ #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
+*************** yyparse(YYPARSE_PARAM_ARG)
+*** 1916,1921 ****
+--- 1956,1962 ----
+ #endif
+
+ int yystacksize = YYINITDEPTH;
++ int yyfree_stacks = 0;
+
+ #ifdef YYPURE
+ int yychar;
+*************** yynewstate:
+*** 2000,2017 ****
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+! 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 *) alloca (yystacksize * sizeof (*yylsp));
+! __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
+ #endif
+ #endif /* no yyoverflow */
+
+--- 2041,2072 ----
+ 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));
+ #ifdef YYLSP_NEEDED
+! yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
+! __yy_memcpy ((char *)yyls, (char *)yyls1,
+! size * (unsigned int) sizeof (*yylsp));
+ #endif
+ #endif /* no yyoverflow */
+
+*************** yyreduce:
+*** 2172,2185 ****
+ switch (yyn) {
+
+ case 1:
+! #line 234 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ ;
+ break;}
+ case 2:
+! #line 239 "objc-parse.y"
+ {
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+--- 2227,2240 ----
+ switch (yyn) {
+
+ case 1:
+! #line 245 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids an empty source file");
+ finish_file ();
+ ;
+ break;}
+ case 2:
+! #line 250 "objc-parse.y"
+ {
+ /* In case there were missing closebraces,
+ get us back to the global binding level. */
+*************** case 2:
+*** 2189,2203 ****
+ ;
+ break;}
+ case 3:
+! #line 253 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 5:
+! #line 254 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 10:
+! #line 262 "objc-parse.y"
+ { STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+--- 2244,2258 ----
+ ;
+ break;}
+ case 3:
+! #line 264 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 5:
+! #line 265 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 10:
+! #line 273 "objc-parse.y"
+ { STRIP_NOPS (yyvsp[-2].ttype);
+ if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
+*************** case 10:
+*** 2207,2217 ****
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 11:
+! #line 270 "objc-parse.y"
+! { pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 12:
+! #line 275 "objc-parse.y"
+ { if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+--- 2262,2272 ----
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 11:
+! #line 281 "objc-parse.y"
+! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 12:
+! #line 286 "objc-parse.y"
+ { if (pedantic)
+ error ("ANSI C forbids data definition with no type or storage class");
+ else if (!flag_traditional)
+*************** case 12:
+*** 2223,2267 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 13:
+! #line 285 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 14:
+! #line 290 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 15:
+! #line 295 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 16:
+! #line 297 "objc-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 19:
+! #line 301 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
+ break;}
+ case 20:
+! #line 307 "objc-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 21:
+! #line 312 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 22:
+! #line 314 "objc-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 2278,2322 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 13:
+! #line 296 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 14:
+! #line 301 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 15:
+! #line 306 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 16:
+! #line 308 "objc-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 19:
+! #line 312 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
+ break;}
+ case 20:
+! #line 318 "objc-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 21:
+! #line 323 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 22:
+! #line 325 "objc-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 22:
+*** 2269,2293 ****
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 23:
+! #line 320 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 24:
+! #line 325 "objc-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 25:
+! #line 330 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 26:
+! #line 332 "objc-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 2324,2348 ----
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 23:
+! #line 331 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 24:
+! #line 336 "objc-parse.y"
+ { if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 25:
+! #line 341 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 26:
+! #line 343 "objc-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 26:
+*** 2295,2319 ****
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 27:
+! #line 338 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 28:
+! #line 343 "objc-parse.y"
+ { if (! start_function (NULL_TREE, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 29:
+! #line 348 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 30:
+! #line 350 "objc-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 2350,2374 ----
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 27:
+! #line 349 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 28:
+! #line 354 "objc-parse.y"
+ { if (! start_function (NULL_TREE, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 0))
+ YYERROR1;
+ reinit_parse_for_function (); ;
+ break;}
+ case 29:
+! #line 359 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 30:
+! #line 361 "objc-parse.y"
+ { finish_function (0);
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 30:
+*** 2321,2392 ****
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 31:
+! #line 356 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 36:
+! #line 370 "objc-parse.y"
+ { yyval.code = ADDR_EXPR; ;
+ break;}
+ case 37:
+! #line 372 "objc-parse.y"
+ { yyval.code = NEGATE_EXPR; ;
+ break;}
+ case 38:
+! #line 374 "objc-parse.y"
+ { yyval.code = CONVERT_EXPR; ;
+ break;}
+ case 39:
+! #line 376 "objc-parse.y"
+ { yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+ case 40:
+! #line 378 "objc-parse.y"
+ { yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+ case 41:
+! #line 380 "objc-parse.y"
+ { yyval.code = BIT_NOT_EXPR; ;
+ break;}
+ case 42:
+! #line 382 "objc-parse.y"
+ { yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+ case 43:
+! #line 386 "objc-parse.y"
+ { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
+ break;}
+ case 44:
+! #line 391 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 46:
+! #line 397 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 47:
+! #line 399 "objc-parse.y"
+ { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 49:
+! #line 405 "objc-parse.y"
+ { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+ case 50:
+! #line 408 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 51:
+! #line 411 "objc-parse.y"
+ { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
+ overflow_warning (yyval.ttype); ;
+ break;}
+ case 52:
+! #line 415 "objc-parse.y"
+ { tree label = lookup_label (yyvsp[0].ttype);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+--- 2376,2447 ----
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 31:
+! #line 367 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 36:
+! #line 381 "objc-parse.y"
+ { yyval.code = ADDR_EXPR; ;
+ break;}
+ case 37:
+! #line 383 "objc-parse.y"
+ { yyval.code = NEGATE_EXPR; ;
+ break;}
+ case 38:
+! #line 385 "objc-parse.y"
+ { yyval.code = CONVERT_EXPR; ;
+ break;}
+ case 39:
+! #line 387 "objc-parse.y"
+ { yyval.code = PREINCREMENT_EXPR; ;
+ break;}
+ case 40:
+! #line 389 "objc-parse.y"
+ { yyval.code = PREDECREMENT_EXPR; ;
+ break;}
+ case 41:
+! #line 391 "objc-parse.y"
+ { yyval.code = BIT_NOT_EXPR; ;
+ break;}
+ case 42:
+! #line 393 "objc-parse.y"
+ { yyval.code = TRUTH_NOT_EXPR; ;
+ break;}
+ case 43:
+! #line 397 "objc-parse.y"
+ { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
+ break;}
+ case 44:
+! #line 402 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 46:
+! #line 408 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 47:
+! #line 410 "objc-parse.y"
+ { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 49:
+! #line 416 "objc-parse.y"
+ { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+ break;}
+ case 50:
+! #line 419 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 51:
+! #line 422 "objc-parse.y"
+ { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
+ overflow_warning (yyval.ttype); ;
+ break;}
+ case 52:
+! #line 426 "objc-parse.y"
+ { tree label = lookup_label (yyvsp[0].ttype);
+ if (pedantic)
+ pedwarn ("ANSI C forbids `&&'");
+*************** case 52:
+*** 2401,2407 ****
+ ;
+ break;}
+ case 53:
+! #line 443 "objc-parse.y"
+ { skip_evaluation--;
+ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+ && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+--- 2456,2462 ----
+ ;
+ break;}
+ case 53:
+! #line 454 "objc-parse.y"
+ { skip_evaluation--;
+ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+ && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+*************** case 53:
+*** 2409,2457 ****
+ yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+ break;}
+ case 54:
+! #line 449 "objc-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 55:
+! #line 452 "objc-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
+ break;}
+ case 56:
+! #line 455 "objc-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 57:
+! #line 458 "objc-parse.y"
+ { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 58:
+! #line 460 "objc-parse.y"
+ { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 59:
+! #line 464 "objc-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 60:
+! #line 468 "objc-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 62:
+! #line 474 "objc-parse.y"
+ { tree type = groktypename (yyvsp[-2].ttype);
+ yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+ break;}
+ case 63:
+! #line 477 "objc-parse.y"
+ { start_init (NULL_TREE, NULL, 0);
+ yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
+ really_start_incremental_init (yyvsp[-2].ttype); ;
+ break;}
+ case 64:
+! #line 481 "objc-parse.y"
+ { char *name;
+ tree result = pop_init_level (0);
+ tree type = yyvsp[-5].ttype;
+--- 2464,2512 ----
+ yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+ break;}
+ case 54:
+! #line 460 "objc-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 55:
+! #line 463 "objc-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
+ break;}
+ case 56:
+! #line 466 "objc-parse.y"
+ { skip_evaluation--;
+ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+ break;}
+ case 57:
+! #line 469 "objc-parse.y"
+ { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 58:
+! #line 471 "objc-parse.y"
+ { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
+ break;}
+ case 59:
+! #line 475 "objc-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 60:
+! #line 479 "objc-parse.y"
+ { skip_evaluation++; ;
+ break;}
+ case 62:
+! #line 485 "objc-parse.y"
+ { tree type = groktypename (yyvsp[-2].ttype);
+ yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+ break;}
+ case 63:
+! #line 488 "objc-parse.y"
+ { start_init (NULL_TREE, NULL, 0);
+ yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
+ really_start_incremental_init (yyvsp[-2].ttype); ;
+ break;}
+ case 64:
+! #line 492 "objc-parse.y"
+ { char *name;
+ tree result = pop_init_level (0);
+ tree type = yyvsp[-5].ttype;
+*************** case 64:
+*** 2478,2567 ****
+ ;
+ break;}
+ case 66:
+! #line 510 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 67:
+! #line 512 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 68:
+! #line 514 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 69:
+! #line 516 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 70:
+! #line 518 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 71:
+! #line 520 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 72:
+! #line 522 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 73:
+! #line 524 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 74:
+! #line 526 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 75:
+! #line 528 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 76:
+! #line 530 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 77:
+! #line 532 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 78:
+! #line 534 "objc-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 79:
+! #line 537 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 80:
+! #line 540 "objc-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 81:
+! #line 543 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 82:
+! #line 546 "objc-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 83:
+! #line 549 "objc-parse.y"
+ { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
+ - (yyvsp[-4].ttype == boolean_false_node)); ;
+ break;}
+ case 84:
+! #line 552 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 85:
+! #line 555 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+--- 2533,2622 ----
+ ;
+ break;}
+ case 66:
+! #line 521 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 67:
+! #line 523 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 68:
+! #line 525 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 69:
+! #line 527 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 70:
+! #line 529 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 71:
+! #line 531 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 72:
+! #line 533 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 73:
+! #line 535 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 74:
+! #line 537 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 75:
+! #line 539 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 76:
+! #line 541 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 77:
+! #line 543 "objc-parse.y"
+ { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 78:
+! #line 545 "objc-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 79:
+! #line 548 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 80:
+! #line 551 "objc-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 81:
+! #line 554 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
+ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 82:
+! #line 557 "objc-parse.y"
+ { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
+ skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
+ break;}
+ case 83:
+! #line 560 "objc-parse.y"
+ { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
+ - (yyvsp[-4].ttype == boolean_false_node)); ;
+ break;}
+ case 84:
+! #line 563 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 85:
+! #line 566 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
+ /* Make sure first operand is calculated only once. */
+*************** case 85:
+*** 2570,2581 ****
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 86:
+! #line 562 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 87:
+! #line 565 "objc-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
+ class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
+--- 2625,2636 ----
+ skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
+ break;}
+ case 86:
+! #line 573 "objc-parse.y"
+ { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
+ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 87:
+! #line 576 "objc-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
+ class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
+*************** case 87:
+*** 2585,2591 ****
+ ;
+ break;}
+ case 88:
+! #line 573 "objc-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
+ /* This inhibits warnings in truthvalue_conversion. */
+--- 2640,2646 ----
+ ;
+ break;}
+ case 88:
+! #line 584 "objc-parse.y"
+ { char class;
+ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
+ /* This inhibits warnings in truthvalue_conversion. */
+*************** case 88:
+*** 2596,2602 ****
+ ;
+ break;}
+ case 89:
+! #line 585 "objc-parse.y"
+ {
+ yyval.ttype = lastiddecl;
+ if (!yyval.ttype || yyval.ttype == error_mark_node)
+--- 2651,2657 ----
+ ;
+ break;}
+ case 89:
+! #line 596 "objc-parse.y"
+ {
+ yyval.ttype = lastiddecl;
+ if (!yyval.ttype || yyval.ttype == error_mark_node)
+*************** case 89:
+*** 2757,2767 ****
+ ;
+ break;}
+ case 91:
+! #line 745 "objc-parse.y"
+ { yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+ break;}
+ case 92:
+! #line 747 "objc-parse.y"
+ { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+--- 2812,2822 ----
+ ;
+ break;}
+ case 91:
+! #line 756 "objc-parse.y"
+ { yyval.ttype = combine_strings (yyvsp[0].ttype); ;
+ break;}
+ case 92:
+! #line 758 "objc-parse.y"
+ { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
+ if (class == 'e' || class == '1'
+ || class == '2' || class == '<')
+*************** case 92:
+*** 2769,2779 ****
+ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 93:
+! #line 753 "objc-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 94:
+! #line 755 "objc-parse.y"
+ { if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+--- 2824,2834 ----
+ yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 93:
+! #line 764 "objc-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 94:
+! #line 766 "objc-parse.y"
+ { if (current_function_decl == 0)
+ {
+ error ("braced-group within expression allowed only inside a function");
+*************** case 94:
+*** 2789,2795 ****
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+ case 95:
+! #line 769 "objc-parse.y"
+ { tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+--- 2844,2850 ----
+ yyval.ttype = expand_start_stmt_expr (); ;
+ break;}
+ case 95:
+! #line 780 "objc-parse.y"
+ { tree rtl_exp;
+ if (pedantic)
+ pedwarn ("ANSI C forbids braced-groups within expressions");
+*************** case 95:
+*** 2814,2828 ****
+ ;
+ break;}
+ case 96:
+! #line 792 "objc-parse.y"
+ { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 97:
+! #line 794 "objc-parse.y"
+ { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 98:
+! #line 796 "objc-parse.y"
+ {
+ if (doing_objc_thang)
+ {
+--- 2869,2883 ----
+ ;
+ break;}
+ case 96:
+! #line 803 "objc-parse.y"
+ { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 97:
+! #line 805 "objc-parse.y"
+ { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 98:
+! #line 807 "objc-parse.y"
+ {
+ if (doing_objc_thang)
+ {
+*************** case 98:
+*** 2836,2842 ****
+ ;
+ break;}
+ case 99:
+! #line 808 "objc-parse.y"
+ {
+ tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
+
+--- 2891,2897 ----
+ ;
+ break;}
+ case 99:
+! #line 819 "objc-parse.y"
+ {
+ tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
+
+*************** case 99:
+*** 2852,2931 ****
+ ;
+ break;}
+ case 100:
+! #line 822 "objc-parse.y"
+ { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 101:
+! #line 824 "objc-parse.y"
+ { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 102:
+! #line 826 "objc-parse.y"
+ { yyval.ttype = build_message_expr (yyvsp[0].ttype); ;
+ break;}
+ case 103:
+! #line 828 "objc-parse.y"
+ { yyval.ttype = build_selector_expr (yyvsp[0].ttype); ;
+ break;}
+ case 104:
+! #line 830 "objc-parse.y"
+ { yyval.ttype = build_protocol_expr (yyvsp[0].ttype); ;
+ break;}
+ case 105:
+! #line 832 "objc-parse.y"
+ { yyval.ttype = build_encode_expr (yyvsp[0].ttype); ;
+ break;}
+ case 106:
+! #line 834 "objc-parse.y"
+ { yyval.ttype = build_objc_string_object (yyvsp[0].ttype); ;
+ break;}
+ case 108:
+! #line 841 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 110:
+! #line 849 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 113:
+! #line 857 "objc-parse.y"
+ { c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
+ break;}
+ case 114:
+! #line 867 "objc-parse.y"
+ { ;
+ break;}
+ case 119:
+! #line 883 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 120:
+! #line 888 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 121:
+! #line 893 "objc-parse.y"
+ { shadow_tag_warned (yyvsp[-1].ttype, 1);
+ pedwarn ("empty declaration"); ;
+ break;}
+ case 122:
+! #line 896 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 123:
+! #line 905 "objc-parse.y"
+ { ;
+ break;}
+ case 128:
+! #line 920 "objc-parse.y"
+ { yyval.itype = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+--- 2907,2986 ----
+ ;
+ break;}
+ case 100:
+! #line 833 "objc-parse.y"
+ { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 101:
+! #line 835 "objc-parse.y"
+ { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
+ break;}
+ case 102:
+! #line 837 "objc-parse.y"
+ { yyval.ttype = build_message_expr (yyvsp[0].ttype); ;
+ break;}
+ case 103:
+! #line 839 "objc-parse.y"
+ { yyval.ttype = build_selector_expr (yyvsp[0].ttype); ;
+ break;}
+ case 104:
+! #line 841 "objc-parse.y"
+ { yyval.ttype = build_protocol_expr (yyvsp[0].ttype); ;
+ break;}
+ case 105:
+! #line 843 "objc-parse.y"
+ { yyval.ttype = build_encode_expr (yyvsp[0].ttype); ;
+ break;}
+ case 106:
+! #line 845 "objc-parse.y"
+ { yyval.ttype = build_objc_string_object (yyvsp[0].ttype); ;
+ break;}
+ case 108:
+! #line 852 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 110:
+! #line 860 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 113:
+! #line 868 "objc-parse.y"
+ { c_mark_varargs ();
+ if (pedantic)
+ pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
+ break;}
+ case 114:
+! #line 878 "objc-parse.y"
+ { ;
+ break;}
+ case 119:
+! #line 894 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 120:
+! #line 899 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 121:
+! #line 904 "objc-parse.y"
+ { shadow_tag_warned (yyvsp[-1].ttype, 1);
+ pedwarn ("empty declaration"); ;
+ break;}
+ case 122:
+! #line 907 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 123:
+! #line 916 "objc-parse.y"
+ { ;
+ break;}
+ case 128:
+! #line 931 "objc-parse.y"
+ { yyval.itype = suspend_momentary ();
+ pending_xref_error ();
+ declspec_stack = tree_cons (prefix_attributes,
+*************** case 128:
+*** 2935,3065 ****
+ &current_declspecs, &prefix_attributes); ;
+ break;}
+ case 129:
+! #line 931 "objc-parse.y"
+ { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
+ break;}
+ case 130:
+! #line 936 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 131:
+! #line 941 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 132:
+! #line 946 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 133:
+! #line 951 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 134:
+! #line 956 "objc-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 135:
+! #line 958 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 136:
+! #line 960 "objc-parse.y"
+! { pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 137:
+! #line 970 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 138:
+! #line 972 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 139:
+! #line 976 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 140:
+! #line 978 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 141:
+! #line 980 "objc-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 142:
+! #line 985 "objc-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 143:
+! #line 990 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 144:
+! #line 992 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 145:
+! #line 997 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 146:
+! #line 999 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 147:
+! #line 1001 "objc-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 148:
+! #line 1014 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 149:
+! #line 1016 "objc-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 150:
+! #line 1018 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 151:
+! #line 1020 "objc-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 152:
+! #line 1025 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 153:
+! #line 1028 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 154:
+! #line 1030 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 155:
+! #line 1033 "objc-parse.y"
+ { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+--- 2990,3120 ----
+ &current_declspecs, &prefix_attributes); ;
+ break;}
+ case 129:
+! #line 942 "objc-parse.y"
+ { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
+ break;}
+ case 130:
+! #line 947 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 131:
+! #line 952 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 132:
+! #line 957 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 133:
+! #line 962 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 134:
+! #line 967 "objc-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 135:
+! #line 969 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 136:
+! #line 971 "objc-parse.y"
+! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 137:
+! #line 981 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 138:
+! #line 983 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 139:
+! #line 987 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 140:
+! #line 989 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 141:
+! #line 991 "objc-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 142:
+! #line 996 "objc-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 143:
+! #line 1001 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 144:
+! #line 1003 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 145:
+! #line 1008 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 146:
+! #line 1010 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 147:
+! #line 1012 "objc-parse.y"
+ { if (extra_warnings)
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 148:
+! #line 1025 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 149:
+! #line 1027 "objc-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 150:
+! #line 1029 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 151:
+! #line 1031 "objc-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 152:
+! #line 1036 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 153:
+! #line 1039 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 154:
+! #line 1041 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = 1; ;
+ break;}
+ case 155:
+! #line 1044 "objc-parse.y"
+ { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
+ warning ("`%s' is not at beginning of declaration",
+ IDENTIFIER_POINTER (yyvsp[0].ttype));
+*************** case 155:
+*** 3067,3216 ****
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+ case 156:
+! #line 1047 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 157:
+! #line 1049 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 158:
+! #line 1053 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 159:
+! #line 1055 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 162:
+! #line 1065 "objc-parse.y"
+ { /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype); ;
+ break;}
+ case 163:
+! #line 1069 "objc-parse.y"
+ { yyval.ttype = get_static_reference (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 164:
+! #line 1071 "objc-parse.y"
+ { yyval.ttype = get_object_reference (yyvsp[0].ttype); ;
+ break;}
+ case 165:
+! #line 1076 "objc-parse.y"
+ { yyval.ttype = get_object_reference (yyvsp[0].ttype); ;
+ break;}
+ case 166:
+! #line 1078 "objc-parse.y"
+ { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
+ break;}
+ case 167:
+! #line 1080 "objc-parse.y"
+ { yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+ break;}
+ case 175:
+! #line 1102 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 176:
+! #line 1104 "objc-parse.y"
+ { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 177:
+! #line 1111 "objc-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 178:
+! #line 1116 "objc-parse.y"
+ { finish_init ();
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 179:
+! #line 1119 "objc-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 180:
+! #line 1127 "objc-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 181:
+! #line 1132 "objc-parse.y"
+ { finish_init ();
+ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 182:
+! #line 1136 "objc-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 183:
+! #line 1144 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 184:
+! #line 1146 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 185:
+! #line 1151 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 186:
+! #line 1153 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 187:
+! #line 1158 "objc-parse.y"
+ { yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+ case 188:
+! #line 1163 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 189:
+! #line 1165 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 190:
+! #line 1170 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 191:
+! #line 1172 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 192:
+! #line 1174 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+ case 193:
+! #line 1176 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+ case 194:
+! #line 1178 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 200:
+! #line 1196 "objc-parse.y"
+ { really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); ;
+ break;}
+ case 201:
+! #line 1201 "objc-parse.y"
+ { yyval.ttype = pop_init_level (0);
+ if (yyval.ttype == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+--- 3122,3271 ----
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
+ case 156:
+! #line 1058 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 157:
+! #line 1060 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
+ break;}
+ case 158:
+! #line 1064 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 159:
+! #line 1066 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 162:
+! #line 1076 "objc-parse.y"
+ { /* For a typedef name, record the meaning, not the name.
+ In case of `foo foo, bar;'. */
+ yyval.ttype = lookup_name (yyvsp[0].ttype); ;
+ break;}
+ case 163:
+! #line 1080 "objc-parse.y"
+ { yyval.ttype = get_static_reference (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 164:
+! #line 1082 "objc-parse.y"
+ { yyval.ttype = get_object_reference (yyvsp[0].ttype); ;
+ break;}
+ case 165:
+! #line 1087 "objc-parse.y"
+ { yyval.ttype = get_object_reference (yyvsp[0].ttype); ;
+ break;}
+ case 166:
+! #line 1089 "objc-parse.y"
+ { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
+ break;}
+ case 167:
+! #line 1091 "objc-parse.y"
+ { yyval.ttype = groktypename (yyvsp[-1].ttype); ;
+ break;}
+ case 175:
+! #line 1113 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 176:
+! #line 1115 "objc-parse.y"
+ { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 177:
+! #line 1122 "objc-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 178:
+! #line 1127 "objc-parse.y"
+ { finish_init ();
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 179:
+! #line 1130 "objc-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 180:
+! #line 1138 "objc-parse.y"
+ { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
+ yyvsp[-1].ttype, prefix_attributes);
+ start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
+ break;}
+ case 181:
+! #line 1143 "objc-parse.y"
+ { finish_init ();
+ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
+ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
+ break;}
+ case 182:
+! #line 1147 "objc-parse.y"
+ { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
+ yyvsp[0].ttype, prefix_attributes);
+ finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 183:
+! #line 1155 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 184:
+! #line 1157 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 185:
+! #line 1162 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 186:
+! #line 1164 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 187:
+! #line 1169 "objc-parse.y"
+ { yyval.ttype = yyvsp[-2].ttype; ;
+ break;}
+ case 188:
+! #line 1174 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 189:
+! #line 1176 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 190:
+! #line 1181 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 191:
+! #line 1183 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 192:
+! #line 1185 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
+ break;}
+ case 193:
+! #line 1187 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
+ break;}
+ case 194:
+! #line 1189 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 200:
+! #line 1207 "objc-parse.y"
+ { really_start_incremental_init (NULL_TREE);
+ /* Note that the call to clear_momentary
+ is in process_init_element. */
+ push_momentary (); ;
+ break;}
+ case 201:
+! #line 1212 "objc-parse.y"
+ { yyval.ttype = pop_init_level (0);
+ if (yyval.ttype == error_mark_node
+ && ! (yychar == STRING || yychar == CONSTANT))
+*************** case 201:
+*** 3219,3254 ****
+ pop_momentary_nofree (); ;
+ break;}
+ case 202:
+! #line 1209 "objc-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 203:
+! #line 1215 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); ;
+ break;}
+ case 209:
+! #line 1231 "objc-parse.y"
+ { set_init_label (yyvsp[-1].ttype); ;
+ break;}
+ case 212:
+! #line 1238 "objc-parse.y"
+ { push_init_level (0); ;
+ break;}
+ case 213:
+! #line 1240 "objc-parse.y"
+ { process_init_element (pop_init_level (0)); ;
+ break;}
+ case 214:
+! #line 1242 "objc-parse.y"
+ { process_init_element (yyvsp[0].ttype); ;
+ break;}
+ case 218:
+! #line 1253 "objc-parse.y"
+ { set_init_label (yyvsp[0].ttype); ;
+ break;}
+ case 219:
+! #line 1261 "objc-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+--- 3274,3309 ----
+ pop_momentary_nofree (); ;
+ break;}
+ case 202:
+! #line 1220 "objc-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 203:
+! #line 1226 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids empty initializer braces"); ;
+ break;}
+ case 209:
+! #line 1242 "objc-parse.y"
+ { set_init_label (yyvsp[-1].ttype); ;
+ break;}
+ case 212:
+! #line 1249 "objc-parse.y"
+ { push_init_level (0); ;
+ break;}
+ case 213:
+! #line 1251 "objc-parse.y"
+ { process_init_element (pop_init_level (0)); ;
+ break;}
+ case 214:
+! #line 1253 "objc-parse.y"
+ { process_init_element (yyvsp[0].ttype); ;
+ break;}
+ case 218:
+! #line 1264 "objc-parse.y"
+ { set_init_label (yyvsp[0].ttype); ;
+ break;}
+ case 219:
+! #line 1272 "objc-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+*************** case 219:
+*** 3259,3274 ****
+ reinit_parse_for_function (); ;
+ break;}
+ case 220:
+! #line 1270 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 221:
+! #line 1278 "objc-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 222:
+! #line 1284 "objc-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+--- 3314,3329 ----
+ reinit_parse_for_function (); ;
+ break;}
+ case 220:
+! #line 1281 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 221:
+! #line 1289 "objc-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 222:
+! #line 1295 "objc-parse.y"
+ { push_c_function_context ();
+ if (! start_function (current_declspecs, yyvsp[0].ttype,
+ prefix_attributes, NULL_TREE, 1))
+*************** case 222:
+*** 3279,3475 ****
+ reinit_parse_for_function (); ;
+ break;}
+ case 223:
+! #line 1293 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 224:
+! #line 1301 "objc-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 227:
+! #line 1317 "objc-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 228:
+! #line 1319 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 229:
+! #line 1324 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 230:
+! #line 1326 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 231:
+! #line 1328 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 232:
+! #line 1335 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 235:
+! #line 1347 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 236:
+! #line 1352 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 237:
+! #line 1354 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 238:
+! #line 1356 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 239:
+! #line 1363 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 241:
+! #line 1372 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 242:
+! #line 1377 "objc-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 243:
+! #line 1379 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 244:
+! #line 1381 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 245:
+! #line 1383 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 246:
+! #line 1390 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 248:
+! #line 1396 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 249:
+! #line 1398 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 250:
+! #line 1403 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 251:
+! #line 1405 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 252:
+! #line 1410 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 253:
+! #line 1412 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 254:
+! #line 1417 "objc-parse.y"
+ { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
+ /* Start scope of tag before parsing components. */
+ ;
+ break;}
+ case 255:
+! #line 1421 "objc-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 256:
+! #line 1423 "objc-parse.y"
+ { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 257:
+! #line 1427 "objc-parse.y"
+ { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 258:
+! #line 1429 "objc-parse.y"
+ { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+ break;}
+ case 259:
+! #line 1431 "objc-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 260:
+! #line 1433 "objc-parse.y"
+ { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 261:
+! #line 1437 "objc-parse.y"
+ { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 262:
+! #line 1439 "objc-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+ case 263:
+! #line 1442 "objc-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 264:
+! #line 1445 "objc-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (NULL_TREE); ;
+ break;}
+ case 265:
+! #line 1448 "objc-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 266:
+! #line 1451 "objc-parse.y"
+ { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 270:
+! #line 1462 "objc-parse.y"
+ { if (pedantic && ! flag_isoc9x)
+ pedwarn ("comma at end of enumerator list"); ;
+ break;}
+ case 271:
+! #line 1468 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 272:
+! #line 1470 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ pedwarn ("no semicolon at end of struct or union"); ;
+ break;}
+ case 273:
+! #line 1475 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 274:
+! #line 1477 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 275:
+! #line 1479 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); ;
+ break;}
+ case 276:
+! #line 1483 "objc-parse.y"
+ {
+ tree interface = lookup_interface (yyvsp[-1].ttype);
+
+--- 3334,3530 ----
+ reinit_parse_for_function (); ;
+ break;}
+ case 223:
+! #line 1304 "objc-parse.y"
+ { store_parm_decls (); ;
+ break;}
+ case 224:
+! #line 1312 "objc-parse.y"
+ { finish_function (1);
+ pop_c_function_context (); ;
+ break;}
+ case 227:
+! #line 1328 "objc-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 228:
+! #line 1330 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 229:
+! #line 1335 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 230:
+! #line 1337 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 231:
+! #line 1339 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 232:
+! #line 1346 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 235:
+! #line 1358 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 236:
+! #line 1363 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 237:
+! #line 1365 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 238:
+! #line 1367 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 239:
+! #line 1374 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 241:
+! #line 1383 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 242:
+! #line 1388 "objc-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 243:
+! #line 1390 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 244:
+! #line 1392 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 245:
+! #line 1394 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 246:
+! #line 1401 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 248:
+! #line 1407 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 249:
+! #line 1409 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 250:
+! #line 1414 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 251:
+! #line 1416 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 252:
+! #line 1421 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 253:
+! #line 1423 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 254:
+! #line 1428 "objc-parse.y"
+ { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
+ /* Start scope of tag before parsing components. */
+ ;
+ break;}
+ case 255:
+! #line 1432 "objc-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 256:
+! #line 1434 "objc-parse.y"
+ { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 257:
+! #line 1438 "objc-parse.y"
+ { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 258:
+! #line 1440 "objc-parse.y"
+ { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
+ break;}
+ case 259:
+! #line 1442 "objc-parse.y"
+ { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
+ break;}
+ case 260:
+! #line 1444 "objc-parse.y"
+ { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
+ yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
+ ;
+ break;}
+ case 261:
+! #line 1448 "objc-parse.y"
+ { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 262:
+! #line 1450 "objc-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+ break;}
+ case 263:
+! #line 1453 "objc-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 264:
+! #line 1456 "objc-parse.y"
+ { yyvsp[0].itype = suspend_momentary ();
+ yyval.ttype = start_enum (NULL_TREE); ;
+ break;}
+ case 265:
+! #line 1459 "objc-parse.y"
+ { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
+ resume_momentary (yyvsp[-5].itype); ;
+ break;}
+ case 266:
+! #line 1462 "objc-parse.y"
+ { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
+ break;}
+ case 270:
+! #line 1473 "objc-parse.y"
+ { if (pedantic && ! flag_isoc9x)
+ pedwarn ("comma at end of enumerator list"); ;
+ break;}
+ case 271:
+! #line 1479 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 272:
+! #line 1481 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ pedwarn ("no semicolon at end of struct or union"); ;
+ break;}
+ case 273:
+! #line 1486 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 274:
+! #line 1488 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 275:
+! #line 1490 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified"); ;
+ break;}
+ case 276:
+! #line 1494 "objc-parse.y"
+ {
+ tree interface = lookup_interface (yyvsp[-1].ttype);
+
+*************** case 276:
+*** 3484,3490 ****
+ ;
+ break;}
+ case 277:
+! #line 1508 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 3539,3545 ----
+ ;
+ break;}
+ case 277:
+! #line 1519 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 277:
+*** 3492,3505 ****
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 278:
+! #line 1514 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 279:
+! #line 1519 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 3547,3560 ----
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 278:
+! #line 1525 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 279:
+! #line 1530 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 279:
+*** 3507,3650 ****
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 280:
+! #line 1525 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 281:
+! #line 1530 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 282:
+! #line 1532 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! pedantic = yyvsp[-1].itype; ;
+ break;}
+ case 284:
+! #line 1539 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 285:
+! #line 1544 "objc-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 286:
+! #line 1548 "objc-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 287:
+! #line 1551 "objc-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 289:
+! #line 1563 "objc-parse.y"
+ { if (yyvsp[-2].ttype == error_mark_node)
+ yyval.ttype = yyvsp[-2].ttype;
+ else
+ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+ case 290:
+! #line 1568 "objc-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 291:
+! #line 1574 "objc-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 292:
+! #line 1576 "objc-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 293:
+! #line 1581 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 294:
+! #line 1583 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 295:
+! #line 1588 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 297:
+! #line 1594 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 298:
+! #line 1596 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 299:
+! #line 1601 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 300:
+! #line 1603 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 301:
+! #line 1608 "objc-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 302:
+! #line 1611 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 303:
+! #line 1613 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 304:
+! #line 1615 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 305:
+! #line 1617 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 306:
+! #line 1619 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 307:
+! #line 1621 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 308:
+! #line 1623 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 309:
+! #line 1625 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 310:
+! #line 1629 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 311:
+! #line 1638 "objc-parse.y"
+ {
+ if (pedantic && yyvsp[0].ends_in_label)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ ;
+ break;}
+ case 313:
+! #line 1647 "objc-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 314:
+! #line 1649 "objc-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 318:
+! #line 1661 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+--- 3562,3705 ----
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 280:
+! #line 1536 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids member declarations with no members");
+ shadow_tag(yyvsp[0].ttype);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 281:
+! #line 1541 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 282:
+! #line 1543 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+! RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
+ break;}
+ case 284:
+! #line 1550 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 285:
+! #line 1555 "objc-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 286:
+! #line 1559 "objc-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 287:
+! #line 1562 "objc-parse.y"
+ { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
+ decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
+ break;}
+ case 289:
+! #line 1574 "objc-parse.y"
+ { if (yyvsp[-2].ttype == error_mark_node)
+ yyval.ttype = yyvsp[-2].ttype;
+ else
+ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
+ break;}
+ case 290:
+! #line 1579 "objc-parse.y"
+ { yyval.ttype = error_mark_node; ;
+ break;}
+ case 291:
+! #line 1585 "objc-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 292:
+! #line 1587 "objc-parse.y"
+ { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 293:
+! #line 1592 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 294:
+! #line 1594 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 295:
+! #line 1599 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 297:
+! #line 1605 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 298:
+! #line 1607 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 299:
+! #line 1612 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 300:
+! #line 1614 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 301:
+! #line 1619 "objc-parse.y"
+ { yyval.ttype = yyvsp[-1].ttype; ;
+ break;}
+ case 302:
+! #line 1622 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 303:
+! #line 1624 "objc-parse.y"
+ { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 304:
+! #line 1626 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 305:
+! #line 1628 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 306:
+! #line 1630 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+ break;}
+ case 307:
+! #line 1632 "objc-parse.y"
+ { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+ break;}
+ case 308:
+! #line 1634 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 309:
+! #line 1636 "objc-parse.y"
+ { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 310:
+! #line 1640 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 311:
+! #line 1649 "objc-parse.y"
+ {
+ if (pedantic && yyvsp[0].ends_in_label)
+ pedwarn ("ANSI C forbids label at end of compound statement");
+ ;
+ break;}
+ case 313:
+! #line 1658 "objc-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 314:
+! #line 1660 "objc-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 318:
+! #line 1672 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ pushlevel (0);
+ clear_last_expr ();
+*************** case 318:
+*** 3655,3666 ****
+ ;
+ break;}
+ case 320:
+! #line 1676 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); ;
+ break;}
+ case 323:
+! #line 1687 "objc-parse.y"
+ { tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+--- 3710,3721 ----
+ ;
+ break;}
+ case 320:
+! #line 1687 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids label declarations"); ;
+ break;}
+ case 323:
+! #line 1698 "objc-parse.y"
+ { tree link;
+ for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+ {
+*************** case 323:
+*** 3671,3689 ****
+ ;
+ break;}
+ case 324:
+! #line 1701 "objc-parse.y"
+ {;
+ break;}
+ case 326:
+! #line 1705 "objc-parse.y"
+ { compstmt_count++; ;
+ break;}
+ case 327:
+! #line 1708 "objc-parse.y"
+ { yyval.ttype = convert (void_type_node, integer_zero_node); ;
+ break;}
+ case 328:
+! #line 1710 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ yyval.ttype = poplevel (1, 1, 0);
+--- 3726,3744 ----
+ ;
+ break;}
+ case 324:
+! #line 1712 "objc-parse.y"
+ {;
+ break;}
+ case 326:
+! #line 1716 "objc-parse.y"
+ { compstmt_count++; ;
+ break;}
+ case 327:
+! #line 1719 "objc-parse.y"
+ { yyval.ttype = convert (void_type_node, integer_zero_node); ;
+ break;}
+ case 328:
+! #line 1721 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), 1, 0);
+ yyval.ttype = poplevel (1, 1, 0);
+*************** case 328:
+*** 3693,3699 ****
+ pop_momentary (); ;
+ break;}
+ case 329:
+! #line 1718 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+--- 3748,3754 ----
+ pop_momentary (); ;
+ break;}
+ case 329:
+! #line 1729 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+*************** case 329:
+*** 3703,3709 ****
+ pop_momentary (); ;
+ break;}
+ case 330:
+! #line 1726 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+--- 3758,3764 ----
+ pop_momentary (); ;
+ break;}
+ case 330:
+! #line 1737 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_end_bindings (getdecls (), kept_level_p (), 0);
+ yyval.ttype = poplevel (kept_level_p (), 0, 0);
+*************** case 330:
+*** 3713,3719 ****
+ pop_momentary (); ;
+ break;}
+ case 333:
+! #line 1746 "objc-parse.y"
+ { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0,
+ compstmt_count);
+--- 3768,3774 ----
+ pop_momentary (); ;
+ break;}
+ case 333:
+! #line 1757 "objc-parse.y"
+ { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0,
+ compstmt_count);
+*************** case 333:
+*** 3723,3729 ****
+ position_after_white_space (); ;
+ break;}
+ case 334:
+! #line 1760 "objc-parse.y"
+ { stmt_count++;
+ compstmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+--- 3778,3784 ----
+ position_after_white_space (); ;
+ break;}
+ case 334:
+! #line 1771 "objc-parse.y"
+ { stmt_count++;
+ compstmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+*************** case 334:
+*** 3733,3775 ****
+ position_after_white_space (); ;
+ break;}
+ case 335:
+! #line 1768 "objc-parse.y"
+ { expand_loop_continue_here (); ;
+ break;}
+ case 336:
+! #line 1772 "objc-parse.y"
+ { yyval.filename = input_filename; ;
+ break;}
+ case 337:
+! #line 1776 "objc-parse.y"
+ { yyval.lineno = lineno; ;
+ break;}
+ case 338:
+! #line 1781 "objc-parse.y"
+ { ;
+ break;}
+ case 339:
+! #line 1786 "objc-parse.y"
+ { ;
+ break;}
+ case 340:
+! #line 1791 "objc-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 341:
+! #line 1796 "objc-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 342:
+! #line 1798 "objc-parse.y"
+ { yyval.ends_in_label = 1; ;
+ break;}
+ case 343:
+! #line 1804 "objc-parse.y"
+ { stmt_count++; ;
+ break;}
+ case 345:
+! #line 1807 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ /* It appears that this should not be done--that a non-lvalue array
+--- 3788,3830 ----
+ position_after_white_space (); ;
+ break;}
+ case 335:
+! #line 1779 "objc-parse.y"
+ { expand_loop_continue_here (); ;
+ break;}
+ case 336:
+! #line 1783 "objc-parse.y"
+ { yyval.filename = input_filename; ;
+ break;}
+ case 337:
+! #line 1787 "objc-parse.y"
+ { yyval.lineno = lineno; ;
+ break;}
+ case 338:
+! #line 1792 "objc-parse.y"
+ { ;
+ break;}
+ case 339:
+! #line 1797 "objc-parse.y"
+ { ;
+ break;}
+ case 340:
+! #line 1802 "objc-parse.y"
+ { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
+ break;}
+ case 341:
+! #line 1807 "objc-parse.y"
+ { yyval.ends_in_label = 0; ;
+ break;}
+ case 342:
+! #line 1809 "objc-parse.y"
+ { yyval.ends_in_label = 1; ;
+ break;}
+ case 343:
+! #line 1815 "objc-parse.y"
+ { stmt_count++; ;
+ break;}
+ case 345:
+! #line 1818 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ /* It appears that this should not be done--that a non-lvalue array
+*************** case 345:
+*** 3788,3806 ****
+ clear_momentary (); ;
+ break;}
+ case 346:
+! #line 1824 "objc-parse.y"
+ { c_expand_start_else ();
+ yyvsp[-1].itype = stmt_count;
+ position_after_white_space (); ;
+ break;}
+ case 347:
+! #line 1828 "objc-parse.y"
+ { c_expand_end_cond ();
+ if (extra_warnings && stmt_count == yyvsp[-3].itype)
+ warning ("empty body in an else-statement"); ;
+ break;}
+ case 348:
+! #line 1832 "objc-parse.y"
+ { c_expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+--- 3843,3861 ----
+ clear_momentary (); ;
+ break;}
+ case 346:
+! #line 1835 "objc-parse.y"
+ { c_expand_start_else ();
+ yyvsp[-1].itype = stmt_count;
+ position_after_white_space (); ;
+ break;}
+ case 347:
+! #line 1839 "objc-parse.y"
+ { c_expand_end_cond ();
+ if (extra_warnings && stmt_count == yyvsp[-3].itype)
+ warning ("empty body in an else-statement"); ;
+ break;}
+ case 348:
+! #line 1843 "objc-parse.y"
+ { c_expand_end_cond ();
+ /* This warning is here instead of in simple_if, because we
+ do not want a warning if an empty if is followed by an
+*************** case 348:
+*** 3811,3821 ****
+ "empty body in an if-statement"); ;
+ break;}
+ case 349:
+! #line 1844 "objc-parse.y"
+ { c_expand_end_cond (); ;
+ break;}
+ case 350:
+! #line 1846 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* The emit_nop used to come before emit_line_note,
+--- 3866,3876 ----
+ "empty body in an if-statement"); ;
+ break;}
+ case 349:
+! #line 1855 "objc-parse.y"
+ { c_expand_end_cond (); ;
+ break;}
+ case 350:
+! #line 1857 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
+ /* The emit_nop used to come before emit_line_note,
+*************** case 350:
+*** 3827,3833 ****
+ emit_nop (); ;
+ break;}
+ case 351:
+! #line 1856 "objc-parse.y"
+ { /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+--- 3882,3888 ----
+ emit_nop (); ;
+ break;}
+ case 351:
+! #line 1867 "objc-parse.y"
+ { /* Don't start the loop till we have succeeded
+ in parsing the end test. This is to make sure
+ that we end every loop we start. */
+*************** case 351:
+*** 3838,3848 ****
+ position_after_white_space (); ;
+ break;}
+ case 352:
+! #line 1865 "objc-parse.y"
+ { expand_end_loop (); ;
+ break;}
+ case 353:
+! #line 1868 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-2].ttype));
+--- 3893,3903 ----
+ position_after_white_space (); ;
+ break;}
+ case 352:
+! #line 1876 "objc-parse.y"
+ { expand_end_loop (); ;
+ break;}
+ case 353:
+! #line 1879 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ expand_exit_loop_if_false (NULL_PTR,
+ truthvalue_conversion (yyvsp[-2].ttype));
+*************** case 353:
+*** 3850,3861 ****
+ clear_momentary (); ;
+ break;}
+ case 354:
+! #line 1875 "objc-parse.y"
+ { expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+ case 355:
+! #line 1879 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ /* See comment in `while' alternative, above. */
+--- 3905,3916 ----
+ clear_momentary (); ;
+ break;}
+ case 354:
+! #line 1886 "objc-parse.y"
+ { expand_end_loop ();
+ clear_momentary (); ;
+ break;}
+ case 355:
+! #line 1890 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ /* See comment in `while' alternative, above. */
+*************** case 355:
+*** 3868,3879 ****
+ ;
+ break;}
+ case 356:
+! #line 1891 "objc-parse.y"
+ { yyvsp[0].lineno = lineno;
+ yyval.filename = input_filename; ;
+ break;}
+ case 357:
+! #line 1894 "objc-parse.y"
+ {
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+--- 3923,3934 ----
+ ;
+ break;}
+ case 356:
+! #line 1902 "objc-parse.y"
+ { yyvsp[0].lineno = lineno;
+ yyval.filename = input_filename; ;
+ break;}
+ case 357:
+! #line 1905 "objc-parse.y"
+ {
+ /* Start the loop. Doing this after parsing
+ all the expressions ensures we will end the loop. */
+*************** case 357:
+*** 3891,3897 ****
+ position_after_white_space (); ;
+ break;}
+ case 358:
+! #line 1910 "objc-parse.y"
+ { /* Emit the increment expression, with a line number. */
+ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
+ expand_loop_continue_here ();
+--- 3946,3952 ----
+ position_after_white_space (); ;
+ break;}
+ case 358:
+! #line 1921 "objc-parse.y"
+ { /* Emit the increment expression, with a line number. */
+ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
+ expand_loop_continue_here ();
+*************** case 358:
+*** 3904,3910 ****
+ expand_end_loop (); ;
+ break;}
+ case 359:
+! #line 1921 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+--- 3959,3965 ----
+ expand_end_loop (); ;
+ break;}
+ case 359:
+! #line 1932 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
+ c_expand_start_case (yyvsp[-1].ttype);
+*************** case 359:
+*** 3914,3920 ****
+ position_after_white_space (); ;
+ break;}
+ case 360:
+! #line 1929 "objc-parse.y"
+ { expand_end_case (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+--- 3969,3975 ----
+ position_after_white_space (); ;
+ break;}
+ case 360:
+! #line 1940 "objc-parse.y"
+ { expand_end_case (yyvsp[-3].ttype);
+ if (yychar == CONSTANT || yychar == STRING)
+ pop_momentary_nofree ();
+*************** case 360:
+*** 3922,3954 ****
+ pop_momentary (); ;
+ break;}
+ case 361:
+! #line 1935 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+ case 362:
+! #line 1940 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); ;
+ break;}
+ case 363:
+! #line 1945 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+ case 364:
+! #line 1949 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ c_expand_return (yyvsp[-1].ttype); ;
+ break;}
+ case 365:
+! #line 1953 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
+ STRIP_NOPS (yyvsp[-2].ttype);
+--- 3977,4009 ----
+ pop_momentary (); ;
+ break;}
+ case 361:
+! #line 1946 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if ( ! expand_exit_something ())
+ error ("break statement not within loop or switch"); ;
+ break;}
+ case 362:
+! #line 1951 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ if (! expand_continue_loop (NULL_PTR))
+ error ("continue statement not within a loop"); ;
+ break;}
+ case 363:
+! #line 1956 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
+ c_expand_return (NULL_TREE); ;
+ break;}
+ case 364:
+! #line 1960 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+ c_expand_return (yyvsp[-1].ttype); ;
+ break;}
+ case 365:
+! #line 1964 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
+ STRIP_NOPS (yyvsp[-2].ttype);
+*************** case 365:
+*** 3960,3966 ****
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 366:
+! #line 1964 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+--- 4015,4021 ----
+ error ("argument of `asm' is not a constant string"); ;
+ break;}
+ case 366:
+! #line 1975 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
+ c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+*************** case 366:
+*** 3968,3974 ****
+ input_filename, lineno); ;
+ break;}
+ case 367:
+! #line 1971 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+--- 4023,4029 ----
+ input_filename, lineno); ;
+ break;}
+ case 367:
+! #line 1982 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
+ c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+*************** case 367:
+*** 3976,3982 ****
+ input_filename, lineno); ;
+ break;}
+ case 368:
+! #line 1979 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+--- 4031,4037 ----
+ input_filename, lineno); ;
+ break;}
+ case 368:
+! #line 1990 "objc-parse.y"
+ { stmt_count++;
+ emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
+ c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+*************** case 368:
+*** 3984,3990 ****
+ input_filename, lineno); ;
+ break;}
+ case 369:
+! #line 1985 "objc-parse.y"
+ { tree decl;
+ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+--- 4039,4045 ----
+ input_filename, lineno); ;
+ break;}
+ case 369:
+! #line 1996 "objc-parse.y"
+ { tree decl;
+ stmt_count++;
+ emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
+*************** case 369:
+*** 3997,4003 ****
+ ;
+ break;}
+ case 370:
+! #line 1996 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+--- 4052,4058 ----
+ ;
+ break;}
+ case 370:
+! #line 2007 "objc-parse.y"
+ { if (pedantic)
+ pedwarn ("ANSI C forbids `goto *expr;'");
+ stmt_count++;
+*************** case 370:
+*** 4005,4011 ****
+ expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
+ break;}
+ case 373:
+! #line 2011 "objc-parse.y"
+ {
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+--- 4060,4066 ----
+ expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
+ break;}
+ case 373:
+! #line 2022 "objc-parse.y"
+ {
+ /* The value returned by this action is */
+ /* 1 if everything is OK */
+*************** case 373:
+*** 4028,4041 ****
+ ;
+ break;}
+ case 374:
+! #line 2032 "objc-parse.y"
+ {
+ if (yyvsp[-1].itype)
+ iterator_for_loop_end (yyvsp[-3].ttype);
+ ;
+ break;}
+ case 375:
+! #line 2067 "objc-parse.y"
+ { register tree value = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+--- 4083,4096 ----
+ ;
+ break;}
+ case 374:
+! #line 2043 "objc-parse.y"
+ {
+ if (yyvsp[-1].itype)
+ iterator_for_loop_end (yyvsp[-3].ttype);
+ ;
+ break;}
+ case 375:
+! #line 2078 "objc-parse.y"
+ { register tree value = check_case_value (yyvsp[-1].ttype);
+ register tree label
+ = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+*************** case 375:
+*** 4068,4074 ****
+ position_after_white_space (); ;
+ break;}
+ case 376:
+! #line 2098 "objc-parse.y"
+ { register tree value1 = check_case_value (yyvsp[-3].ttype);
+ register tree value2 = check_case_value (yyvsp[-1].ttype);
+ register tree label
+--- 4123,4129 ----
+ position_after_white_space (); ;
+ break;}
+ case 376:
+! #line 2109 "objc-parse.y"
+ { register tree value1 = check_case_value (yyvsp[-3].ttype);
+ register tree value2 = check_case_value (yyvsp[-1].ttype);
+ register tree label
+*************** case 376:
+*** 4101,4107 ****
+ position_after_white_space (); ;
+ break;}
+ case 377:
+! #line 2129 "objc-parse.y"
+ {
+ tree duplicate;
+ register tree label
+--- 4156,4162 ----
+ position_after_white_space (); ;
+ break;}
+ case 377:
+! #line 2140 "objc-parse.y"
+ {
+ tree duplicate;
+ register tree label
+*************** case 377:
+*** 4118,4124 ****
+ position_after_white_space (); ;
+ break;}
+ case 378:
+! #line 2144 "objc-parse.y"
+ { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
+ stmt_count++;
+ emit_nop ();
+--- 4173,4179 ----
+ position_after_white_space (); ;
+ break;}
+ case 378:
+! #line 2155 "objc-parse.y"
+ { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
+ stmt_count++;
+ emit_nop ();
+*************** case 378:
+*** 4130,4181 ****
+ position_after_white_space (); ;
+ break;}
+ case 379:
+! #line 2159 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 380:
+! #line 2162 "objc-parse.y"
+ { emit_line_note (input_filename, lineno); ;
+ break;}
+ case 381:
+! #line 2167 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 383:
+! #line 2174 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 386:
+! #line 2181 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 387:
+! #line 2186 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 388:
+! #line 2191 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+ break;}
+ case 389:
+! #line 2193 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+ break;}
+ case 390:
+! #line 2199 "objc-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); ;
+ break;}
+ case 391:
+! #line 2203 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 393:
+! #line 2211 "objc-parse.y"
+ { tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+--- 4185,4236 ----
+ position_after_white_space (); ;
+ break;}
+ case 379:
+! #line 2170 "objc-parse.y"
+ { emit_line_note (input_filename, lineno);
+ yyval.ttype = NULL_TREE; ;
+ break;}
+ case 380:
+! #line 2173 "objc-parse.y"
+ { emit_line_note (input_filename, lineno); ;
+ break;}
+ case 381:
+! #line 2178 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 383:
+! #line 2185 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 386:
+! #line 2192 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 387:
+! #line 2197 "objc-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+ break;}
+ case 388:
+! #line 2202 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
+ break;}
+ case 389:
+! #line 2204 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
+ break;}
+ case 390:
+! #line 2210 "objc-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (0); ;
+ break;}
+ case 391:
+! #line 2214 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 393:
+! #line 2222 "objc-parse.y"
+ { tree parm;
+ if (pedantic)
+ pedwarn ("ANSI C forbids forward parameter declarations");
+*************** case 393:
+*** 4185,4203 ****
+ clear_parm_order (); ;
+ break;}
+ case 394:
+! #line 2219 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 395:
+! #line 2221 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 396:
+! #line 2227 "objc-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 397:
+! #line 2229 "objc-parse.y"
+ { yyval.ttype = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+--- 4240,4258 ----
+ clear_parm_order (); ;
+ break;}
+ case 394:
+! #line 2230 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype; ;
+ break;}
+ case 395:
+! #line 2232 "objc-parse.y"
+ { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
+ break;}
+ case 396:
+! #line 2238 "objc-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 397:
+! #line 2240 "objc-parse.y"
+ { yyval.ttype = get_parm_info (0);
+ /* Gcc used to allow this as an extension. However, it does
+ not work for all targets, and thus has been disabled.
+*************** case 397:
+*** 4209,4231 ****
+ ;
+ break;}
+ case 398:
+! #line 2239 "objc-parse.y"
+ { yyval.ttype = get_parm_info (1); ;
+ break;}
+ case 399:
+! #line 2241 "objc-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 400:
+! #line 2246 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 401:
+! #line 2248 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 402:
+! #line 2255 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 4264,4286 ----
+ ;
+ break;}
+ case 398:
+! #line 2250 "objc-parse.y"
+ { yyval.ttype = get_parm_info (1); ;
+ break;}
+ case 399:
+! #line 2252 "objc-parse.y"
+ { yyval.ttype = get_parm_info (0); ;
+ break;}
+ case 400:
+! #line 2257 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 401:
+! #line 2259 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 402:
+! #line 2266 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 402:
+*** 4236,4242 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 403:
+! #line 2264 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 4291,4297 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 403:
+! #line 2275 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 403:
+*** 4247,4253 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 404:
+! #line 2273 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 4302,4308 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 404:
+! #line 2284 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 404:
+*** 4258,4264 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 405:
+! #line 2282 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 4313,4319 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 405:
+! #line 2293 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 405:
+*** 4269,4275 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 406:
+! #line 2292 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+--- 4324,4330 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 406:
+! #line 2303 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+*************** case 406:
+*** 4280,4298 ****
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 407:
+! #line 2306 "objc-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); ;
+ break;}
+ case 408:
+! #line 2310 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 410:
+! #line 2318 "objc-parse.y"
+ { tree t;
+ for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+--- 4335,4353 ----
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 407:
+! #line 2317 "objc-parse.y"
+ { pushlevel (0);
+ clear_parm_order ();
+ declare_parm_level (1); ;
+ break;}
+ case 408:
+! #line 2321 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ parmlist_tags_warning ();
+ poplevel (0, 0, 0); ;
+ break;}
+ case 410:
+! #line 2329 "objc-parse.y"
+ { tree t;
+ for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
+ if (TREE_VALUE (t) == NULL_TREE)
+*************** case 410:
+*** 4300,4327 ****
+ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 411:
+! #line 2328 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 412:
+! #line 2330 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 413:
+! #line 2336 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 414:
+! #line 2338 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 415:
+! #line 2343 "objc-parse.y"
+! { yyval.itype = pedantic;
+! pedantic = 0; ;
+ break;}
+ case 421:
+! #line 2356 "objc-parse.y"
+ {
+ if (objc_implementation_context)
+ {
+--- 4355,4383 ----
+ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+ break;}
+ case 411:
+! #line 2339 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 412:
+! #line 2341 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 413:
+! #line 2347 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 414:
+! #line 2349 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 415:
+! #line 2354 "objc-parse.y"
+! { yyval.ttype = SAVE_WARN_FLAGS();
+! pedantic = 0;
+! warn_pointer_arith = 0; ;
+ break;}
+ case 421:
+! #line 2368 "objc-parse.y"
+ {
+ if (objc_implementation_context)
+ {
+*************** case 421:
+*** 4334,4360 ****
+ ;
+ break;}
+ case 422:
+! #line 2371 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 423:
+! #line 2373 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 424:
+! #line 2378 "objc-parse.y"
+ {
+ objc_declare_class (yyvsp[-1].ttype);
+ ;
+ break;}
+ case 425:
+! #line 2384 "objc-parse.y"
+ {
+ objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 426:
+! #line 2390 "objc-parse.y"
+ {
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
+--- 4390,4416 ----
+ ;
+ break;}
+ case 422:
+! #line 2383 "objc-parse.y"
+ { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+ break;}
+ case 423:
+! #line 2385 "objc-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 424:
+! #line 2390 "objc-parse.y"
+ {
+ objc_declare_class (yyvsp[-1].ttype);
+ ;
+ break;}
+ case 425:
+! #line 2396 "objc-parse.y"
+ {
+ objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 426:
+! #line 2402 "objc-parse.y"
+ {
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
+*************** case 426:
+*** 4362,4381 ****
+ ;
+ break;}
+ case 427:
+! #line 2396 "objc-parse.y"
+ {
+ continue_class (objc_interface_context);
+ ;
+ break;}
+ case 428:
+! #line 2401 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 429:
+! #line 2407 "objc-parse.y"
+ {
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-1].ttype, NULL_TREE, yyvsp[0].ttype);
+--- 4418,4437 ----
+ ;
+ break;}
+ case 427:
+! #line 2408 "objc-parse.y"
+ {
+ continue_class (objc_interface_context);
+ ;
+ break;}
+ case 428:
+! #line 2413 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 429:
+! #line 2419 "objc-parse.y"
+ {
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-1].ttype, NULL_TREE, yyvsp[0].ttype);
+*************** case 429:
+*** 4383,4396 ****
+ ;
+ break;}
+ case 430:
+! #line 2414 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 431:
+! #line 2420 "objc-parse.y"
+ {
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype);
+--- 4439,4452 ----
+ ;
+ break;}
+ case 430:
+! #line 2426 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 431:
+! #line 2432 "objc-parse.y"
+ {
+ objc_interface_context = objc_ivar_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype);
+*************** case 431:
+*** 4398,4417 ****
+ ;
+ break;}
+ case 432:
+! #line 2426 "objc-parse.y"
+ {
+ continue_class (objc_interface_context);
+ ;
+ break;}
+ case 433:
+! #line 2431 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 434:
+! #line 2437 "objc-parse.y"
+ {
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+--- 4454,4473 ----
+ ;
+ break;}
+ case 432:
+! #line 2438 "objc-parse.y"
+ {
+ continue_class (objc_interface_context);
+ ;
+ break;}
+ case 433:
+! #line 2443 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 434:
+! #line 2449 "objc-parse.y"
+ {
+ objc_interface_context
+ = start_class (CLASS_INTERFACE_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+*************** case 434:
+*** 4419,4432 ****
+ ;
+ break;}
+ case 435:
+! #line 2444 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 436:
+! #line 2450 "objc-parse.y"
+ {
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
+--- 4475,4488 ----
+ ;
+ break;}
+ case 435:
+! #line 2456 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 436:
+! #line 2462 "objc-parse.y"
+ {
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
+*************** case 436:
+*** 4434,4447 ****
+ ;
+ break;}
+ case 437:
+! #line 2456 "objc-parse.y"
+ {
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+ case 438:
+! #line 2462 "objc-parse.y"
+ {
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[0].ttype, NULL_TREE, NULL_TREE);
+--- 4490,4503 ----
+ ;
+ break;}
+ case 437:
+! #line 2468 "objc-parse.y"
+ {
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+ case 438:
+! #line 2474 "objc-parse.y"
+ {
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[0].ttype, NULL_TREE, NULL_TREE);
+*************** case 438:
+*** 4450,4456 ****
+ ;
+ break;}
+ case 439:
+! #line 2470 "objc-parse.y"
+ {
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+--- 4506,4512 ----
+ ;
+ break;}
+ case 439:
+! #line 2482 "objc-parse.y"
+ {
+ objc_implementation_context = objc_ivar_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+*************** case 439:
+*** 4458,4471 ****
+ ;
+ break;}
+ case 440:
+! #line 2476 "objc-parse.y"
+ {
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+ case 441:
+! #line 2482 "objc-parse.y"
+ {
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
+--- 4514,4527 ----
+ ;
+ break;}
+ case 440:
+! #line 2488 "objc-parse.y"
+ {
+ objc_ivar_chain
+ = continue_class (objc_implementation_context);
+ ;
+ break;}
+ case 441:
+! #line 2494 "objc-parse.y"
+ {
+ objc_implementation_context
+ = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
+*************** case 441:
+*** 4474,4480 ****
+ ;
+ break;}
+ case 442:
+! #line 2490 "objc-parse.y"
+ {
+ objc_interface_context
+ = start_class (CATEGORY_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
+--- 4530,4536 ----
+ ;
+ break;}
+ case 442:
+! #line 2502 "objc-parse.y"
+ {
+ objc_interface_context
+ = start_class (CATEGORY_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
+*************** case 442:
+*** 4482,4495 ****
+ ;
+ break;}
+ case 443:
+! #line 2497 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 444:
+! #line 2503 "objc-parse.y"
+ {
+ objc_implementation_context
+ = start_class (CATEGORY_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+--- 4538,4551 ----
+ ;
+ break;}
+ case 443:
+! #line 2509 "objc-parse.y"
+ {
+ finish_class (objc_interface_context);
+ objc_interface_context = NULL_TREE;
+ ;
+ break;}
+ case 444:
+! #line 2515 "objc-parse.y"
+ {
+ objc_implementation_context
+ = start_class (CATEGORY_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
+*************** case 444:
+*** 4498,4504 ****
+ ;
+ break;}
+ case 445:
+! #line 2513 "objc-parse.y"
+ {
+ remember_protocol_qualifiers ();
+ objc_interface_context
+--- 4554,4560 ----
+ ;
+ break;}
+ case 445:
+! #line 2525 "objc-parse.y"
+ {
+ remember_protocol_qualifiers ();
+ objc_interface_context
+*************** case 445:
+*** 4506,4512 ****
+ ;
+ break;}
+ case 446:
+! #line 2519 "objc-parse.y"
+ {
+ forget_protocol_qualifiers();
+ finish_protocol(objc_interface_context);
+--- 4562,4568 ----
+ ;
+ break;}
+ case 446:
+! #line 2531 "objc-parse.y"
+ {
+ forget_protocol_qualifiers();
+ finish_protocol(objc_interface_context);
+*************** case 446:
+*** 4514,4526 ****
+ ;
+ break;}
+ case 447:
+! #line 2528 "objc-parse.y"
+ {
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+ case 449:
+! #line 2536 "objc-parse.y"
+ {
+ if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR)
+ yyval.ttype = yyvsp[-1].ttype;
+--- 4570,4582 ----
+ ;
+ break;}
+ case 447:
+! #line 2540 "objc-parse.y"
+ {
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+ case 449:
+! #line 2548 "objc-parse.y"
+ {
+ if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR)
+ yyval.ttype = yyvsp[-1].ttype;
+*************** case 449:
+*** 4529,4560 ****
+ ;
+ break;}
+ case 452:
+! #line 2550 "objc-parse.y"
+ { objc_public_flag = 2; ;
+ break;}
+ case 453:
+! #line 2551 "objc-parse.y"
+ { objc_public_flag = 0; ;
+ break;}
+ case 454:
+! #line 2552 "objc-parse.y"
+ { objc_public_flag = 1; ;
+ break;}
+ case 455:
+! #line 2557 "objc-parse.y"
+ {
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+ case 457:
+! #line 2562 "objc-parse.y"
+ {
+ if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified");
+ ;
+ break;}
+ case 458:
+! #line 2580 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 4585,4616 ----
+ ;
+ break;}
+ case 452:
+! #line 2562 "objc-parse.y"
+ { objc_public_flag = 2; ;
+ break;}
+ case 453:
+! #line 2563 "objc-parse.y"
+ { objc_public_flag = 0; ;
+ break;}
+ case 454:
+! #line 2564 "objc-parse.y"
+ { objc_public_flag = 1; ;
+ break;}
+ case 455:
+! #line 2569 "objc-parse.y"
+ {
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+ case 457:
+! #line 2574 "objc-parse.y"
+ {
+ if (pedantic)
+ pedwarn ("extra semicolon in struct or union specified");
+ ;
+ break;}
+ case 458:
+! #line 2592 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 458:
+*** 4562,4568 ****
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 459:
+! #line 2586 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+--- 4618,4624 ----
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 459:
+! #line 2598 "objc-parse.y"
+ { yyval.ttype = yyvsp[0].ttype;
+ current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+*************** case 459:
+*** 4570,4584 ****
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 460:
+! #line 2592 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 461:
+! #line 2597 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 464:
+! #line 2604 "objc-parse.y"
+ {
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+--- 4626,4640 ----
+ resume_momentary (yyvsp[-1].itype); ;
+ break;}
+ case 460:
+! #line 2604 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 461:
+! #line 2609 "objc-parse.y"
+ { yyval.ttype = NULL_TREE; ;
+ break;}
+ case 464:
+! #line 2616 "objc-parse.y"
+ {
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+*************** case 464:
+*** 4587,4593 ****
+ ;
+ break;}
+ case 465:
+! #line 2611 "objc-parse.y"
+ {
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+--- 4643,4649 ----
+ ;
+ break;}
+ case 465:
+! #line 2623 "objc-parse.y"
+ {
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+*************** case 465:
+*** 4595,4601 ****
+ ;
+ break;}
+ case 466:
+! #line 2617 "objc-parse.y"
+ {
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+--- 4651,4657 ----
+ ;
+ break;}
+ case 466:
+! #line 2629 "objc-parse.y"
+ {
+ yyval.ttype = add_instance_variable (objc_ivar_context,
+ objc_public_flag,
+*************** case 466:
+*** 4604,4610 ****
+ ;
+ break;}
+ case 467:
+! #line 2627 "objc-parse.y"
+ {
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+--- 4660,4666 ----
+ ;
+ break;}
+ case 467:
+! #line 2639 "objc-parse.y"
+ {
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+*************** case 467:
+*** 4614,4620 ****
+ ;
+ break;}
+ case 468:
+! #line 2635 "objc-parse.y"
+ {
+ forget_protocol_qualifiers ();
+ add_class_method (objc_implementation_context, yyvsp[0].ttype);
+--- 4670,4676 ----
+ ;
+ break;}
+ case 468:
+! #line 2647 "objc-parse.y"
+ {
+ forget_protocol_qualifiers ();
+ add_class_method (objc_implementation_context, yyvsp[0].ttype);
+*************** case 468:
+*** 4623,4642 ****
+ ;
+ break;}
+ case 469:
+! #line 2642 "objc-parse.y"
+ {
+ continue_method_def ();
+ ;
+ break;}
+ case 470:
+! #line 2646 "objc-parse.y"
+ {
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ ;
+ break;}
+ case 471:
+! #line 2652 "objc-parse.y"
+ {
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+--- 4679,4698 ----
+ ;
+ break;}
+ case 469:
+! #line 2654 "objc-parse.y"
+ {
+ continue_method_def ();
+ ;
+ break;}
+ case 470:
+! #line 2658 "objc-parse.y"
+ {
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ ;
+ break;}
+ case 471:
+! #line 2664 "objc-parse.y"
+ {
+ remember_protocol_qualifiers ();
+ if (objc_implementation_context)
+*************** case 471:
+*** 4646,4652 ****
+ ;
+ break;}
+ case 472:
+! #line 2660 "objc-parse.y"
+ {
+ forget_protocol_qualifiers ();
+ add_instance_method (objc_implementation_context, yyvsp[0].ttype);
+--- 4702,4708 ----
+ ;
+ break;}
+ case 472:
+! #line 2672 "objc-parse.y"
+ {
+ forget_protocol_qualifiers ();
+ add_instance_method (objc_implementation_context, yyvsp[0].ttype);
+*************** case 472:
+*** 4655,4682 ****
+ ;
+ break;}
+ case 473:
+! #line 2667 "objc-parse.y"
+ {
+ continue_method_def ();
+ ;
+ break;}
+ case 474:
+! #line 2671 "objc-parse.y"
+ {
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ ;
+ break;}
+ case 476:
+! #line 2683 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 481:
+! #line 2690 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 485:
+! #line 2700 "objc-parse.y"
+ {
+ /* Remember protocol qualifiers in prototypes. */
+ remember_protocol_qualifiers ();
+--- 4711,4738 ----
+ ;
+ break;}
+ case 473:
+! #line 2679 "objc-parse.y"
+ {
+ continue_method_def ();
+ ;
+ break;}
+ case 474:
+! #line 2683 "objc-parse.y"
+ {
+ finish_method_def ();
+ objc_method_context = NULL_TREE;
+ ;
+ break;}
+ case 476:
+! #line 2695 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 481:
+! #line 2702 "objc-parse.y"
+ {yyval.ttype = NULL_TREE; ;
+ break;}
+ case 485:
+! #line 2712 "objc-parse.y"
+ {
+ /* Remember protocol qualifiers in prototypes. */
+ remember_protocol_qualifiers ();
+*************** case 485:
+*** 4684,4690 ****
+ ;
+ break;}
+ case 486:
+! #line 2706 "objc-parse.y"
+ {
+ /* Forget protocol qualifiers here. */
+ forget_protocol_qualifiers ();
+--- 4740,4746 ----
+ ;
+ break;}
+ case 486:
+! #line 2718 "objc-parse.y"
+ {
+ /* Forget protocol qualifiers here. */
+ forget_protocol_qualifiers ();
+*************** case 486:
+*** 4692,4698 ****
+ ;
+ break;}
+ case 488:
+! #line 2714 "objc-parse.y"
+ {
+ /* Remember protocol qualifiers in prototypes. */
+ remember_protocol_qualifiers ();
+--- 4748,4754 ----
+ ;
+ break;}
+ case 488:
+! #line 2726 "objc-parse.y"
+ {
+ /* Remember protocol qualifiers in prototypes. */
+ remember_protocol_qualifiers ();
+*************** case 488:
+*** 4700,4706 ****
+ ;
+ break;}
+ case 489:
+! #line 2720 "objc-parse.y"
+ {
+ /* Forget protocol qualifiers here. */
+ forget_protocol_qualifiers ();
+--- 4756,4762 ----
+ ;
+ break;}
+ case 489:
+! #line 2732 "objc-parse.y"
+ {
+ /* Forget protocol qualifiers here. */
+ forget_protocol_qualifiers ();
+*************** case 489:
+*** 4708,4801 ****
+ ;
+ break;}
+ case 491:
+! #line 2730 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
+ ;
+ break;}
+ case 492:
+! #line 2735 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ ;
+ break;}
+ case 493:
+! #line 2740 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 494:
+! #line 2745 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 503:
+! #line 2775 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 504:
+! #line 2780 "objc-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 505:
+! #line 2782 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 506:
+! #line 2787 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 507:
+! #line 2789 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 508:
+! #line 2797 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+ case 509:
+! #line 2802 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+ case 510:
+! #line 2807 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+ case 511:
+! #line 2815 "objc-parse.y"
+ {
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+ case 512:
+! #line 2819 "objc-parse.y"
+ {
+ /* oh what a kludge! */
+ yyval.ttype = (tree)1;
+ ;
+ break;}
+ case 513:
+! #line 2824 "objc-parse.y"
+ {
+ pushlevel (0);
+ ;
+ break;}
+ case 514:
+! #line 2828 "objc-parse.y"
+ {
+ /* returns a tree list node generated by get_parm_info */
+ yyval.ttype = yyvsp[0].ttype;
+--- 4764,4857 ----
+ ;
+ break;}
+ case 491:
+! #line 2742 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
+ ;
+ break;}
+ case 492:
+! #line 2747 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[0].ttype, NULL_TREE);
+ ;
+ break;}
+ case 493:
+! #line 2752 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 494:
+! #line 2757 "objc-parse.y"
+ {
+ yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 503:
+! #line 2787 "objc-parse.y"
+ { current_declspecs = TREE_VALUE (declspec_stack);
+ prefix_attributes = TREE_PURPOSE (declspec_stack);
+ declspec_stack = TREE_CHAIN (declspec_stack);
+ resume_momentary (yyvsp[-2].itype); ;
+ break;}
+ case 504:
+! #line 2792 "objc-parse.y"
+ { shadow_tag (yyvsp[-1].ttype); ;
+ break;}
+ case 505:
+! #line 2794 "objc-parse.y"
+ { pedwarn ("empty declaration"); ;
+ break;}
+ case 506:
+! #line 2799 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 507:
+! #line 2801 "objc-parse.y"
+ { push_parm_decl (yyvsp[0].ttype); ;
+ break;}
+ case 508:
+! #line 2809 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+ case 509:
+! #line 2814 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+ case 510:
+! #line 2819 "objc-parse.y"
+ { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
+ yyvsp[-1].ttype),
+ build_tree_list (prefix_attributes,
+ yyvsp[0].ttype)); ;
+ break;}
+ case 511:
+! #line 2827 "objc-parse.y"
+ {
+ yyval.ttype = NULL_TREE;
+ ;
+ break;}
+ case 512:
+! #line 2831 "objc-parse.y"
+ {
+ /* oh what a kludge! */
+ yyval.ttype = (tree)1;
+ ;
+ break;}
+ case 513:
+! #line 2836 "objc-parse.y"
+ {
+ pushlevel (0);
+ ;
+ break;}
+ case 514:
+! #line 2840 "objc-parse.y"
+ {
+ /* returns a tree list node generated by get_parm_info */
+ yyval.ttype = yyvsp[0].ttype;
+*************** case 514:
+*** 4803,4921 ****
+ ;
+ break;}
+ case 517:
+! #line 2843 "objc-parse.y"
+ {
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 522:
+! #line 2856 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 523:
+! #line 2857 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 524:
+! #line 2858 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 525:
+! #line 2859 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 526:
+! #line 2860 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 527:
+! #line 2861 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 528:
+! #line 2862 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 529:
+! #line 2863 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 530:
+! #line 2864 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 531:
+! #line 2865 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 532:
+! #line 2866 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 533:
+! #line 2867 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 534:
+! #line 2868 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 535:
+! #line 2869 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 536:
+! #line 2870 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 537:
+! #line 2871 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 538:
+! #line 2872 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 539:
+! #line 2873 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 540:
+! #line 2874 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 543:
+! #line 2880 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 544:
+! #line 2885 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+ case 545:
+! #line 2890 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 546:
+! #line 2895 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+ case 550:
+! #line 2908 "objc-parse.y"
+ {
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 551:
+! #line 2916 "objc-parse.y"
+ {
+ if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE)
+ /* just return the expr., remove a level of indirection */
+--- 4859,4977 ----
+ ;
+ break;}
+ case 517:
+! #line 2855 "objc-parse.y"
+ {
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 522:
+! #line 2868 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 523:
+! #line 2869 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 524:
+! #line 2870 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 525:
+! #line 2871 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 526:
+! #line 2872 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 527:
+! #line 2873 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 528:
+! #line 2874 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 529:
+! #line 2875 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 530:
+! #line 2876 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 531:
+! #line 2877 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 532:
+! #line 2878 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 533:
+! #line 2879 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 534:
+! #line 2880 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 535:
+! #line 2881 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 536:
+! #line 2882 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 537:
+! #line 2883 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 538:
+! #line 2884 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 539:
+! #line 2885 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 540:
+! #line 2886 "objc-parse.y"
+ { yyval.ttype = get_identifier (token_buffer); ;
+ break;}
+ case 543:
+! #line 2892 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 544:
+! #line 2897 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+ case 545:
+! #line 2902 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 546:
+! #line 2907 "objc-parse.y"
+ {
+ yyval.ttype = build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+ case 550:
+! #line 2920 "objc-parse.y"
+ {
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 551:
+! #line 2928 "objc-parse.y"
+ {
+ if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE)
+ /* just return the expr., remove a level of indirection */
+*************** case 551:
+*** 4926,5001 ****
+ ;
+ break;}
+ case 552:
+! #line 2928 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 553:
+! #line 2932 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+ case 555:
+! #line 2940 "objc-parse.y"
+ {
+ yyval.ttype = get_class_reference (yyvsp[0].ttype);
+ ;
+ break;}
+ case 556:
+! #line 2947 "objc-parse.y"
+ { objc_receiver_context = 1; ;
+ break;}
+ case 557:
+! #line 2949 "objc-parse.y"
+ { objc_receiver_context = 0; ;
+ break;}
+ case 558:
+! #line 2951 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 562:
+! #line 2964 "objc-parse.y"
+ {
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 563:
+! #line 2971 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE);
+ ;
+ break;}
+ case 564:
+! #line 2975 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE);
+ ;
+ break;}
+ case 565:
+! #line 2982 "objc-parse.y"
+ {
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 566:
+! #line 2989 "objc-parse.y"
+ {
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 567:
+! #line 2998 "objc-parse.y"
+ {
+ yyval.ttype = groktypename (yyvsp[-1].ttype);
+ ;
+ break;}
+ }
+ /* the action file gets copied in in place of this dollarsign */
+! #line 498 "/usr/lib/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+--- 4982,5057 ----
+ ;
+ break;}
+ case 552:
+! #line 2940 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 553:
+! #line 2944 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype);
+ ;
+ break;}
+ case 555:
+! #line 2952 "objc-parse.y"
+ {
+ yyval.ttype = get_class_reference (yyvsp[0].ttype);
+ ;
+ break;}
+ case 556:
+! #line 2959 "objc-parse.y"
+ { objc_receiver_context = 1; ;
+ break;}
+ case 557:
+! #line 2961 "objc-parse.y"
+ { objc_receiver_context = 0; ;
+ break;}
+ case 558:
+! #line 2963 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype);
+ ;
+ break;}
+ case 562:
+! #line 2976 "objc-parse.y"
+ {
+ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
+ ;
+ break;}
+ case 563:
+! #line 2983 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE);
+ ;
+ break;}
+ case 564:
+! #line 2987 "objc-parse.y"
+ {
+ yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE);
+ ;
+ break;}
+ case 565:
+! #line 2994 "objc-parse.y"
+ {
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 566:
+! #line 3001 "objc-parse.y"
+ {
+ yyval.ttype = yyvsp[-1].ttype;
+ ;
+ break;}
+ case 567:
+! #line 3010 "objc-parse.y"
+ {
+ yyval.ttype = groktypename (yyvsp[-1].ttype);
+ ;
+ break;}
+ }
+ /* the action file gets copied in in place of this dollarsign */
+! #line 543 "/usr/lib/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+*************** yyerrhandle:
+*** 5190,5195 ****
+
+ yystate = yyn;
+ goto yynewstate;
+ }
+! #line 3003 "objc-parse.y"
+
+--- 5246,5275 ----
+
+ 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 3015 "objc-parse.y"
+
+diff -c3rpN gcc-2.95.3.orig/gcc/objc/objc-parse.y gcc-2.95.4/gcc/objc/objc-parse.y
+*** gcc-2.95.3.orig/gcc/objc/objc-parse.y Mon Apr 26 23:35:58 1999
+--- gcc-2.95.4/gcc/objc/objc-parse.y Wed Jun 6 01:38:19 2001
+*************** char *language_string = "GNU Obj-C";
+*** 152,158 ****
+ %type <ttype> init maybeasm
+ %type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+ %type <ttype> maybe_attribute attributes attribute attribute_list attrib
+! %type <ttype> any_word
+
+ %type <ttype> compstmt
+
+--- 152,158 ----
+ %type <ttype> init maybeasm
+ %type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
+ %type <ttype> maybe_attribute attributes attribute attribute_list attrib
+! %type <ttype> any_word extension
+
+ %type <ttype> compstmt
+
+*************** static tree declspec_stack;
+*** 211,216 ****
+--- 211,227 ----
+ /* 1 if we explained undeclared var errors. */
+ static int undeclared_variable_notice;
+
++ /* For __extension__, save/restore the warning flags which are
++ controlled by __extension__. */
++ #define SAVE_WARN_FLAGS() \
++ build_int_2 (pedantic | (warn_pointer_arith << 1), 0)
++ #define RESTORE_WARN_FLAGS(tval) \
++ do { \
++ int val = TREE_INT_CST_LOW (tval); \
++ pedantic = val & 1; \
++ warn_pointer_arith = (val >> 1) & 1; \
++ } while (0)
++
+ /* Objective-C specific information */
+
+ tree objc_interface_context;
+*************** extdef:
+*** 267,273 ****
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+! { pedantic = $<itype>1; }
+ ;
+
+ datadef:
+--- 278,284 ----
+ else
+ error ("argument of `asm' is not a constant string"); }
+ | extension extdef
+! { RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ datadef:
+*************** unary_expr:
+*** 406,412 ****
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+! pedantic = $<itype>1; }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+--- 417,423 ----
+ /* __extension__ turns off -pedantic for following primary. */
+ | extension cast_expr %prec UNARY
+ { $$ = $2;
+! RESTORE_WARN_FLAGS ($1); }
+ | unop cast_expr %prec UNARY
+ { $$ = build_unary_op ($1, $2, 0);
+ overflow_warning ($$); }
+*************** decl:
+*** 957,963 ****
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+! { pedantic = $<itype>1; }
+ ;
+
+ /* Declspecs which contain at least one type specifier or typedef name.
+--- 968,974 ----
+ | declmods ';'
+ { pedwarn ("empty declaration"); }
+ | extension decl
+! { RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ /* Declspecs which contain at least one type specifier or typedef name.
+*************** component_decl:
+*** 1530,1536 ****
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+! pedantic = $<itype>1; }
+ ;
+
+ components:
+--- 1541,1547 ----
+ { $$ = NULL_TREE; }
+ | extension component_decl
+ { $$ = $2;
+! RESTORE_WARN_FLAGS ($1); }
+ ;
+
+ components:
+*************** identifiers_or_typenames:
+*** 2340,2347 ****
+
+ extension:
+ EXTENSION
+! { $<itype>$ = pedantic;
+! pedantic = 0; }
+ ;
+
+ /* Objective-C productions. */
+--- 2351,2359 ----
+
+ extension:
+ EXTENSION
+! { $$ = SAVE_WARN_FLAGS();
+! pedantic = 0;
+! warn_pointer_arith = 0; }
+ ;
+
+ /* Objective-C productions. */
+diff -c3rpN gcc-2.95.3.orig/gcc/po/gcc.pot gcc-2.95.4/gcc/po/gcc.pot
+*** gcc-2.95.3.orig/gcc/po/gcc.pot Fri Mar 16 14:13:48 2001
+--- gcc-2.95.4/gcc/po/gcc.pot Thu Jan 1 00:00:00 1970
+***************
+*** 1,8407 ****
+- # SOME DESCRIPTIVE TITLE.
+- # Copyright (C) YEAR Free Software Foundation, Inc.
+- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+- #
+- #, fuzzy
+- msgid ""
+- msgstr ""
+- "Project-Id-Version: PACKAGE VERSION\n"
+- "POT-Creation-Date: 1999-07-27 01:41-0600\n"
+- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+- "Language-Team: LANGUAGE <LL@li.org>\n"
+- "MIME-Version: 1.0\n"
+- "Content-Type: text/plain; charset=CHARSET\n"
+- "Content-Transfer-Encoding: ENCODING\n"
+-
+- #: c-common.c:472
+- #, c-format
+- msgid "`%s' attribute directive ignored"
+- msgstr ""
+-
+- #: c-common.c:480
+- #, c-format
+- msgid "`%s' attribute does not apply to types"
+- msgstr ""
+-
+- #: c-common.c:487
+- #, c-format
+- msgid "wrong number of arguments specified for `%s' attribute"
+- msgstr ""
+-
+- #: c-common.c:503 c-common.c:510 c-common.c:517 c-common.c:530 c-common.c:542
+- #: c-common.c:555 c-common.c:570 c-common.c:582 c-common.c:594 c-common.c:599
+- #: c-common.c:910 c-common.c:1036
+- #, c-format
+- msgid "`%s' attribute ignored"
+- msgstr ""
+-
+- #: c-common.c:632
+- #, c-format
+- msgid "unknown machine mode `%s'"
+- msgstr ""
+-
+- #: c-common.c:635
+- #, c-format
+- msgid "no data type for mode `%s'"
+- msgstr ""
+-
+- #: c-common.c:655
+- msgid "section attribute cannot be specified for local variables"
+- msgstr ""
+-
+- #: c-common.c:662
+- #, c-format
+- msgid "section of `%s' conflicts with previous declaration"
+- msgstr ""
+-
+- #: c-common.c:668
+- #, c-format
+- msgid "section attribute not allowed for `%s'"
+- msgstr ""
+-
+- #: c-common.c:671
+- msgid "section attributes are not supported for this target"
+- msgstr ""
+-
+- #: c-common.c:690
+- msgid "requested alignment is not a constant"
+- msgstr ""
+-
+- #: c-common.c:697
+- msgid "requested alignment is not a power of 2"
+- msgstr ""
+-
+- #: c-common.c:703
+- #, c-format
+- msgid "alignment may not be specified for `%s'"
+- msgstr ""
+-
+- #: c-common.c:724 c-common.c:827
+- #, c-format
+- msgid "argument format specified for non-function `%s'"
+- msgstr ""
+-
+- #: c-common.c:730
+- msgid "unrecognized format specifier"
+- msgstr ""
+-
+- #: c-common.c:746
+- #, c-format
+- msgid "`%s' is an unrecognized format function type"
+- msgstr ""
+-
+- #: c-common.c:766 c-common.c:840
+- msgid "format string has non-constant operand number"
+- msgstr ""
+-
+- #: c-common.c:774
+- msgid "format string arg follows the args to be formatted"
+- msgstr ""
+-
+- #: c-common.c:795 c-common.c:863
+- msgid "format string arg not a string type"
+- msgstr ""
+-
+- #: c-common.c:806
+- msgid "args to be formatted is not ..."
+- msgstr ""
+-
+- #: c-common.c:872
+- msgid "function does not return string type"
+- msgstr ""
+-
+- #: c-common.c:890
+- #, c-format
+- msgid "`%s' defined both normally and as an alias"
+- msgstr ""
+-
+- #: c-common.c:898
+- msgid "alias arg not a string"
+- msgstr ""
+-
+- #: c-common.c:917 c-common.c:934
+- #, c-format
+- msgid "`%s' attribute applies only to functions"
+- msgstr ""
+-
+- #: c-common.c:923 c-common.c:940
+- #, c-format
+- msgid "can't set `%s' attribute after definition"
+- msgstr ""
+-
+- #: c-common.c:1291
+- msgid "too few arguments for format"
+- msgstr ""
+-
+- #: c-common.c:1400
+- msgid "null format string"
+- msgstr ""
+-
+- #: c-common.c:1411
+- msgid "zero-length format string"
+- msgstr ""
+-
+- #: c-common.c:1414
+- msgid "unterminated format string"
+- msgstr ""
+-
+- #: c-common.c:1433
+- msgid "embedded `\\0' in format"
+- msgstr ""
+-
+- #: c-common.c:1435
+- msgid "too many arguments for format"
+- msgstr ""
+-
+- #: c-common.c:1442
+- msgid "spurious trailing `%%' in format"
+- msgstr ""
+-
+- #: c-common.c:1465
+- #, c-format
+- msgid "ANSI C does not support the strftime `%c' flag"
+- msgstr ""
+-
+- #: c-common.c:1469 c-common.c:1533
+- #, c-format
+- msgid "repeated `%c' flag in format"
+- msgstr ""
+-
+- #: c-common.c:1486
+- msgid "ANSI C does not support strftime format width"
+- msgstr ""
+-
+- #: c-common.c:1494
+- msgid "multiple E/O modifiers in format"
+- msgstr ""
+-
+- #: c-common.c:1524
+- msgid "operand number out of range in format"
+- msgstr ""
+-
+- #: c-common.c:1545
+- msgid "use of both ` ' and `+' flags in format"
+- msgstr ""
+-
+- #: c-common.c:1550
+- msgid "use of both `0' and `-' flags in format"
+- msgstr ""
+-
+- #: c-common.c:1576 c-common.c:1610
+- #, c-format
+- msgid "field width is not type int (arg %d)"
+- msgstr ""
+-
+- #: c-common.c:1592
+- msgid "`.' not followed by `*' or digit in format"
+- msgstr ""
+-
+- #: c-common.c:1632
+- #, c-format
+- msgid "ANSI C does not support the `%c' length modifier"
+- msgstr ""
+-
+- #: c-common.c:1639
+- msgid "ANSI C does not support the `Z' length modifier"
+- msgstr ""
+-
+- #: c-common.c:1648
+- msgid "ANSI C does not support the `ll' length modifier"
+- msgstr ""
+-
+- #: c-common.c:1655
+- msgid "ANSI C does not support the `hh' length modifier"
+- msgstr ""
+-
+- #: c-common.c:1668
+- #, c-format
+- msgid "use of `*' and `%c' together in format"
+- msgstr ""
+-
+- #: c-common.c:1674
+- msgid "conversion lacks type at end of format"
+- msgstr ""
+-
+- #: c-common.c:1680 c-common.c:1685
+- #, c-format
+- msgid "ANSI C does not support the `%c' format"
+- msgstr ""
+-
+- #: c-common.c:1707
+- #, c-format
+- msgid "unknown conversion type character `%c' in format"
+- msgstr ""
+-
+- #: c-common.c:1710
+- #, c-format
+- msgid "unknown conversion type character 0x%x in format"
+- msgstr ""
+-
+- #: c-common.c:1717
+- msgid "ANSI C does not support `%%%c'"
+- msgstr ""
+-
+- #: c-common.c:1720
+- msgid "ANSI C does not support `%%O%c'"
+- msgstr ""
+-
+- #: c-common.c:1723
+- #, c-format
+- msgid "width used with `%c' format"
+- msgstr ""
+-
+- #: c-common.c:1725
+- msgid "`%%%c' yields only last 2 digits of year"
+- msgstr ""
+-
+- #: c-common.c:1727
+- msgid "`%%%c' yields only last 2 digits of year in some locales"
+- msgstr ""
+-
+- #: c-common.c:1730
+- #, c-format
+- msgid "precision used with `%c' format"
+- msgstr ""
+-
+- #: c-common.c:1733
+- #, c-format
+- msgid "`a' flag used with `%c' format"
+- msgstr ""
+-
+- #: c-common.c:1739
+- msgid "ANSI C does not support the `a' flag"
+- msgstr ""
+-
+- #. The end of the format string was reached.
+- #: c-common.c:1753
+- msgid "no closing `]' for `%%[' format"
+- msgstr ""
+-
+- #: c-common.c:1758
+- #, c-format
+- msgid "suppression of `%c' conversion in format"
+- msgstr ""
+-
+- #: c-common.c:1764
+- #, c-format
+- msgid "flag `%c' used with type `%c'"
+- msgstr ""
+-
+- #: c-common.c:1773
+- #, c-format
+- msgid "`0' flag ignored with precision specifier and `%c' format"
+- msgstr ""
+-
+- #: c-common.c:1786
+- #, c-format
+- msgid "use of `%c' length character with `%c' type character"
+- msgstr ""
+-
+- #: c-common.c:1824
+- #, c-format
+- msgid "format argument is not a pointer (arg %d)"
+- msgstr ""
+-
+- #: c-common.c:1825
+- #, c-format
+- msgid "format argument is not a pointer to a pointer (arg %d)"
+- msgstr ""
+-
+- #: c-common.c:1843
+- #, c-format
+- msgid "writing into constant object (arg %d)"
+- msgstr ""
+-
+- #: c-common.c:1903
+- #, c-format
+- msgid "%s format, %s arg (arg %d)"
+- msgstr ""
+-
+- #: c-common.c:1921
+- msgid "overflow in constant expression"
+- msgstr ""
+-
+- #: c-common.c:1942
+- msgid "integer overflow in expression"
+- msgstr ""
+-
+- #: c-common.c:1951
+- msgid "floating point overflow in expression"
+- msgstr ""
+-
+- #. This detects cases like converting -129 or 256 to unsigned char.
+- #: c-common.c:1972
+- msgid "large integer implicitly truncated to unsigned type"
+- msgstr ""
+-
+- #: c-common.c:1974
+- msgid "negative integer implicitly converted to unsigned type"
+- msgstr ""
+-
+- #: c-common.c:2007
+- msgid "overflow in implicit constant conversion"
+- msgstr ""
+-
+- #: c-common.c:2028
+- msgid "expression statement has incomplete type"
+- msgstr ""
+-
+- #: c-common.c:2048
+- msgid "case label does not reduce to an integer constant"
+- msgstr ""
+-
+- #: c-common.c:2201
+- msgid "invalid truth-value expression"
+- msgstr ""
+-
+- #: c-common.c:2252
+- #, c-format
+- msgid "invalid operands to binary %s"
+- msgstr ""
+-
+- #: c-common.c:2487 c-common.c:2496
+- msgid "comparison is always false due to limited range of data type"
+- msgstr ""
+-
+- #: c-common.c:2489 c-common.c:2498
+- msgid "comparison is always true due to limited range of data type"
+- msgstr ""
+-
+- #: c-common.c:2564
+- msgid "comparison of unsigned expression >= 0 is always true"
+- msgstr ""
+-
+- #: c-common.c:2573
+- msgid "comparison of unsigned expression < 0 is always false"
+- msgstr ""
+-
+- #: c-common.c:2624
+- msgid "struct type value used where scalar is required"
+- msgstr ""
+-
+- #: c-common.c:2628
+- msgid "union type value used where scalar is required"
+- msgstr ""
+-
+- #: c-common.c:2632
+- msgid "array type value used where scalar is required"
+- msgstr ""
+-
+- #: c-common.c:2764
+- msgid "suggest parentheses around assignment used as truth value"
+- msgstr ""
+-
+- #: c-common.c:2987 c-common.c:3017
+- msgid "invalid use of `restrict'"
+- msgstr ""
+-
+- #: c-convert.c:75 c-typeck.c:1065 c-typeck.c:4073 cp/typeck.c:1760
+- #: cp/typeck.c:6780
+- msgid "void value not ignored as it ought to be"
+- msgstr ""
+-
+- #: c-convert.c:95
+- msgid "conversion to non-scalar type requested"
+- msgstr ""
+-
+- #: c-decl.c:697
+- #, c-format
+- msgid "unknown C standard `%s'"
+- msgstr ""
+-
+- #: c-decl.c:948
+- #, c-format
+- msgid "array `%s' assumed to have one element"
+- msgstr ""
+-
+- #: c-decl.c:1125
+- #, c-format
+- msgid "`struct %s' incomplete in scope ending here"
+- msgstr ""
+-
+- #: c-decl.c:1128
+- #, c-format
+- msgid "`union %s' incomplete in scope ending here"
+- msgstr ""
+-
+- #: c-decl.c:1131
+- #, c-format
+- msgid "`enum %s' incomplete in scope ending here"
+- msgstr ""
+-
+- #: c-decl.c:1247 c-decl.c:1408
+- #, c-format
+- msgid "label `%s' used but not defined"
+- msgstr ""
+-
+- #: c-decl.c:1253 c-decl.c:1415
+- #, c-format
+- msgid "label `%s' defined but not used"
+- msgstr ""
+-
+- #: c-decl.c:1540 c-decl.c:1593
+- #, c-format
+- msgid "shadowing built-in function `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1542
+- #, c-format
+- msgid "shadowing library function `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1548
+- #, c-format
+- msgid "library function `%s' declared as non-function"
+- msgstr ""
+-
+- #: c-decl.c:1552 c-decl.c:1555
+- #, c-format
+- msgid "built-in function `%s' declared as non-function"
+- msgstr ""
+-
+- #: c-decl.c:1559 objc/objc-act.c:2448 objc/objc-act.c:6166
+- #, c-format
+- msgid "`%s' redeclared as different kind of symbol"
+- msgstr ""
+-
+- #: c-decl.c:1560 c-decl.c:1752 c-decl.c:1898 objc/objc-act.c:2450
+- #: objc/objc-act.c:6168 objc/objc-act.c:6222
+- #, c-format
+- msgid "previous declaration of `%s'"
+- msgstr ""
+-
+- #. If types don't match for a built-in, throw away the built-in.
+- #: c-decl.c:1655
+- #, c-format
+- msgid "conflicting types for built-in function `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1698 c-decl.c:1717
+- #, c-format
+- msgid "conflicting types for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1740
+- msgid ""
+- "A parameter list with an ellipsis can't match an empty parameter name list "
+- "declaration."
+- msgstr ""
+-
+- #: c-decl.c:1747
+- msgid ""
+- "An argument type that has a default promotion can't match an empty parameter "
+- "name list declaration."
+- msgstr ""
+-
+- #: c-decl.c:1762 c-decl.c:1784
+- #, c-format
+- msgid "redefinition of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1765
+- #, c-format
+- msgid "redeclaration of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1768
+- #, c-format
+- msgid "conflicting declarations of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:1777 c-decl.c:1789
+- #, c-format
+- msgid "`%s' previously defined here"
+- msgstr ""
+-
+- #: c-decl.c:1778 c-decl.c:1790
+- #, c-format
+- msgid "`%s' previously declared here"
+- msgstr ""
+-
+- #: c-decl.c:1811
+- #, c-format
+- msgid "prototype for `%s' follows"
+- msgstr ""
+-
+- #: c-decl.c:1812 c-decl.c:1819 c-decl.c:1835
+- msgid "non-prototype definition here"
+- msgstr ""
+-
+- #: c-decl.c:1818
+- #, c-format
+- msgid "prototype for `%s' follows and number of arguments doesn't match"
+- msgstr ""
+-
+- #: c-decl.c:1833
+- #, c-format
+- msgid "prototype for `%s' follows and argument %d doesn't match"
+- msgstr ""
+-
+- #: c-decl.c:1850
+- #, c-format
+- msgid "`%s' declared inline after being called"
+- msgstr ""
+-
+- #: c-decl.c:1855
+- #, c-format
+- msgid "`%s' declared inline after its definition"
+- msgstr ""
+-
+- #: c-decl.c:1862
+- #, c-format
+- msgid "static declaration for `%s' follows non-static"
+- msgstr ""
+-
+- #: c-decl.c:1870
+- #, c-format
+- msgid "non-static declaration for `%s' follows static"
+- msgstr ""
+-
+- #: c-decl.c:1877
+- #, c-format
+- msgid "const declaration for `%s' follows non-const"
+- msgstr ""
+-
+- #: c-decl.c:1884
+- #, c-format
+- msgid "type qualifiers for `%s' conflict with previous decl"
+- msgstr ""
+-
+- #: c-decl.c:1897
+- #, c-format
+- msgid "redundant redeclaration of `%s' in same scope"
+- msgstr ""
+-
+- #: c-decl.c:2164
+- #, c-format
+- msgid "nested extern declaration of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:2189
+- #, c-format
+- msgid "`%s' used prior to declaration"
+- msgstr ""
+-
+- #: c-decl.c:2210 c-decl.c:2423
+- #, c-format
+- msgid "`%s' was declared implicitly `extern' and later `static'"
+- msgstr ""
+-
+- #: c-decl.c:2318
+- msgid "type mismatch with previous external decl"
+- msgstr ""
+-
+- #: c-decl.c:2319
+- #, c-format
+- msgid "previous external decl of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:2332
+- msgid "type mismatch with previous implicit declaration"
+- msgstr ""
+-
+- #: c-decl.c:2334
+- #, c-format
+- msgid "previous implicit declaration of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:2351
+- #, c-format
+- msgid "type of external `%s' is not global"
+- msgstr ""
+-
+- #: c-decl.c:2402
+- #, c-format
+- msgid "`%s' was previously implicitly declared to return `int'"
+- msgstr ""
+-
+- #: c-decl.c:2427
+- #, c-format
+- msgid "`%s' was declared `extern' and later `static'"
+- msgstr ""
+-
+- #: c-decl.c:2449
+- #, c-format
+- msgid "extern declaration of `%s' doesn't match global one"
+- msgstr ""
+-
+- #: c-decl.c:2487
+- #, c-format
+- msgid "`%s' locally external but globally static"
+- msgstr ""
+-
+- #: c-decl.c:2523 c-decl.c:2548
+- #, c-format
+- msgid "declaration of `%s' shadows a parameter"
+- msgstr ""
+-
+- #: c-decl.c:2526
+- #, c-format
+- msgid "declaration of `%s' shadows a symbol from the parameter list"
+- msgstr ""
+-
+- #: c-decl.c:2550
+- #, c-format
+- msgid "declaration of `%s' shadows previous local"
+- msgstr ""
+-
+- #: c-decl.c:2553
+- #, c-format
+- msgid "declaration of `%s' shadows global declaration"
+- msgstr ""
+-
+- #: c-decl.c:2641 c-decl.c:2644
+- #, c-format
+- msgid "implicit declaration of function `%s'"
+- msgstr ""
+-
+- #: c-decl.c:2648
+- #, c-format
+- msgid "function `%s' was previously declared within a block"
+- msgstr ""
+-
+- #: c-decl.c:2745
+- #, c-format
+- msgid "label %s referenced outside of any function"
+- msgstr ""
+-
+- #: c-decl.c:2805
+- #, c-format
+- msgid "duplicate label declaration `%s'"
+- msgstr ""
+-
+- #: c-decl.c:2808
+- msgid "this is a previous declaration"
+- msgstr ""
+-
+- #: c-decl.c:2842
+- #, c-format
+- msgid "duplicate label `%s'"
+- msgstr ""
+-
+- #: c-decl.c:3700
+- msgid "unnamed struct/union that defines no instances"
+- msgstr ""
+-
+- #: c-decl.c:3719
+- msgid "useless keyword or type name in empty declaration"
+- msgstr ""
+-
+- #: c-decl.c:3726
+- msgid "two types specified in one empty declaration"
+- msgstr ""
+-
+- #: c-decl.c:3731 c-parse.y:294 c-parse.y:797 c-parse.y:799 c-parse.y:861
+- #: objc-parse.y:295 objc-parse.y:894 objc-parse.y:896 objc-parse.y:958
+- #: objc-parse.y:2782 parse.y:609 parse.y:1659
+- msgid "empty declaration"
+- msgstr ""
+-
+- #: c-decl.c:3796
+- #, c-format
+- msgid "`%s' is usually a function"
+- msgstr ""
+-
+- #: c-decl.c:3810
+- #, c-format
+- msgid "typedef `%s' is initialized"
+- msgstr ""
+-
+- #: c-decl.c:3817
+- #, c-format
+- msgid "function `%s' is initialized like a variable"
+- msgstr ""
+-
+- #. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
+- #: c-decl.c:3824
+- #, c-format
+- msgid "parameter `%s' is initialized"
+- msgstr ""
+-
+- #: c-decl.c:3839 c-typeck.c:4909
+- msgid "variable-sized object may not be initialized"
+- msgstr ""
+-
+- #: c-decl.c:3845
+- #, c-format
+- msgid "variable `%s' has initializer but incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:3851
+- #, c-format
+- msgid "elements of array `%s' have incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:3863
+- #, c-format
+- msgid "declaration of `%s' has `extern' and is initialized"
+- msgstr ""
+-
+- #: c-decl.c:3956
+- msgid "iterator has no initial value"
+- msgstr ""
+-
+- #: c-decl.c:4002
+- #, c-format
+- msgid "initializer fails to determine size of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4007
+- #, c-format
+- msgid "array size missing in `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4023
+- #, c-format
+- msgid "zero or negative size array `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4052
+- #, c-format
+- msgid "storage size of `%s' isn't known"
+- msgstr ""
+-
+- #: c-decl.c:4062
+- #, c-format
+- msgid "storage size of `%s' isn't constant"
+- msgstr ""
+-
+- #: c-decl.c:4188 cp/decl.c:8407
+- #, c-format
+- msgid "size of `%s' is %u bytes"
+- msgstr ""
+-
+- #: c-decl.c:4250
+- #, c-format
+- msgid "ANSI C forbids parameter `%s' shadowing typedef"
+- msgstr ""
+-
+- #: c-decl.c:4489 cp/decl.c:9733
+- msgid "`long long long' is too long for GCC"
+- msgstr ""
+-
+- #: c-decl.c:4493
+- msgid "ANSI C does not support `long long'"
+- msgstr ""
+-
+- #: c-decl.c:4498 cp/decl.c:9738
+- #, c-format
+- msgid "duplicate `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4504 cp/decl.c:9758
+- #, c-format
+- msgid "two or more data types in declaration of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4519 cp/decl.c:9763
+- #, c-format
+- msgid "`%s' fails to be a typedef or built in type"
+- msgstr ""
+-
+- #: c-decl.c:4555
+- #, c-format
+- msgid "type defaults to `int' in declaration of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4583
+- #, c-format
+- msgid "both long and short specified for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4587 cp/decl.c:9898
+- #, c-format
+- msgid "long or short specified with char for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4594 cp/decl.c:9902
+- #, c-format
+- msgid "long or short specified with floating type for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4597
+- msgid "the only valid combination is `long double'"
+- msgstr ""
+-
+- #: c-decl.c:4603
+- #, c-format
+- msgid "both signed and unsigned specified for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4605 cp/decl.c:9891
+- #, c-format
+- msgid "long, short, signed or unsigned invalid for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4611 cp/decl.c:9911
+- #, c-format
+- msgid "long, short, signed or unsigned used invalidly for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4630 cp/decl.c:9932
+- #, c-format
+- msgid "complex invalid for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4706 c-decl.c:5085 cp/decl.c:10761
+- msgid "duplicate `const'"
+- msgstr ""
+-
+- #: c-decl.c:4708 c-decl.c:5089 cp/decl.c:10765
+- msgid "duplicate `restrict'"
+- msgstr ""
+-
+- #: c-decl.c:4710 c-decl.c:5087 cp/decl.c:10763
+- msgid "duplicate `volatile'"
+- msgstr ""
+-
+- #: c-decl.c:4733 cp/decl.c:10125
+- #, c-format
+- msgid "multiple storage classes in declaration of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4742
+- msgid "function definition declared `auto'"
+- msgstr ""
+-
+- #: c-decl.c:4744
+- msgid "function definition declared `register'"
+- msgstr ""
+-
+- #: c-decl.c:4746
+- msgid "function definition declared `typedef'"
+- msgstr ""
+-
+- #: c-decl.c:4757
+- #, c-format
+- msgid "storage class specified for structure field `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4759 cp/decl.c:10167
+- #, c-format
+- msgid "storage class specified for parameter `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4760 cp/decl.c:10168
+- msgid "storage class specified for typename"
+- msgstr ""
+-
+- #: c-decl.c:4771 cp/decl.c:10187
+- #, c-format
+- msgid "`%s' initialized and declared `extern'"
+- msgstr ""
+-
+- #: c-decl.c:4773 cp/decl.c:10190
+- #, c-format
+- msgid "`%s' has both `extern' and initializer"
+- msgstr ""
+-
+- #: c-decl.c:4777 cp/decl.c:10194
+- #, c-format
+- msgid "nested function `%s' declared `extern'"
+- msgstr ""
+-
+- #: c-decl.c:4780 cp/decl.c:10198
+- #, c-format
+- msgid "top-level declaration of `%s' specifies `auto'"
+- msgstr ""
+-
+- #: c-decl.c:4784
+- #, c-format
+- msgid "iterator `%s' has derived type"
+- msgstr ""
+-
+- #: c-decl.c:4790
+- #, c-format
+- msgid "iterator `%s' has noninteger type"
+- msgstr ""
+-
+- #: c-decl.c:4836
+- #, c-format
+- msgid "declaration of `%s' as array of voids"
+- msgstr ""
+-
+- #: c-decl.c:4842
+- #, c-format
+- msgid "declaration of `%s' as array of functions"
+- msgstr ""
+-
+- #: c-decl.c:4870
+- #, c-format
+- msgid "size of array `%s' has non-integer type"
+- msgstr ""
+-
+- #: c-decl.c:4875
+- #, c-format
+- msgid "ANSI C forbids zero-size array `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4882
+- #, c-format
+- msgid "size of array `%s' is negative"
+- msgstr ""
+-
+- #: c-decl.c:4895
+- #, c-format
+- msgid "ANSI C forbids array `%s' whose size can't be evaluated"
+- msgstr ""
+-
+- #: c-decl.c:4897
+- #, c-format
+- msgid "ANSI C forbids variable-size array `%s'"
+- msgstr ""
+-
+- #: c-decl.c:4914 c-decl.c:5110
+- #, c-format
+- msgid "size of array `%s' is too large"
+- msgstr ""
+-
+- #: c-decl.c:4933
+- msgid "array type has incomplete element type"
+- msgstr ""
+-
+- #: c-decl.c:4940 c-decl.c:5156
+- msgid "ANSI C forbids const or volatile function types"
+- msgstr ""
+-
+- #: c-decl.c:4977 cp/decl.c:10490
+- #, c-format
+- msgid "`%s' declared as function returning a function"
+- msgstr ""
+-
+- #: c-decl.c:4982 cp/decl.c:10495
+- #, c-format
+- msgid "`%s' declared as function returning an array"
+- msgstr ""
+-
+- #: c-decl.c:5048 c-decl.c:5121 c-decl.c:5207 c-decl.c:5305
+- msgid "ANSI C forbids qualified function types"
+- msgstr ""
+-
+- #: c-decl.c:5081 cp/decl.c:10757
+- msgid "invalid type modifier within pointer declarator"
+- msgstr ""
+-
+- #: c-decl.c:5176 cp/decl.c:11215
+- #, c-format
+- msgid "variable or field `%s' declared void"
+- msgstr ""
+-
+- #: c-decl.c:5250
+- #, c-format
+- msgid "field `%s' declared as a function"
+- msgstr ""
+-
+- #: c-decl.c:5255
+- #, c-format
+- msgid "field `%s' has incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:5284 c-decl.c:5286 c-decl.c:5293
+- #, c-format
+- msgid "invalid storage class for function `%s'"
+- msgstr ""
+-
+- #: c-decl.c:5311
+- msgid "ANSI C forbids qualified void function return type"
+- msgstr ""
+-
+- #: c-decl.c:5317
+- msgid "`noreturn' function returns non-void value"
+- msgstr ""
+-
+- #: c-decl.c:5329
+- msgid "cannot inline function `main'"
+- msgstr ""
+-
+- #: c-decl.c:5366
+- #, c-format
+- msgid "variable `%s' declared `inline'"
+- msgstr ""
+-
+- #: c-decl.c:5442 c-decl.c:6483
+- msgid "function declaration isn't a prototype"
+- msgstr ""
+-
+- #: c-decl.c:5448 cp/decl.c:11886
+- msgid "parameter names (without types) in function declaration"
+- msgstr ""
+-
+- #: c-decl.c:5478 c-decl.c:6871 c-decl.c:7161 cp/decl.c:11729
+- #, c-format
+- msgid "parameter `%s' has incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:5481 cp/decl.c:11732
+- msgid "parameter has incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:5500
+- #, c-format
+- msgid "parameter `%s' points to incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:5503
+- msgid "parameter points to incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:5574
+- #, c-format
+- msgid "parameter `%s' has just a forward declaration"
+- msgstr ""
+-
+- #: c-decl.c:5617
+- msgid "`void' in parameter list must be the entire list"
+- msgstr ""
+-
+- #: c-decl.c:5646
+- #, c-format
+- msgid "`%s %s' declared inside parameter list"
+- msgstr ""
+-
+- #: c-decl.c:5652
+- #, c-format
+- msgid "anonymous %s declared inside parameter list"
+- msgstr ""
+-
+- #: c-decl.c:5659
+- msgid ""
+- "its scope is only this definition or declaration, which is probably not what "
+- "you want."
+- msgstr ""
+-
+- #: c-decl.c:5701
+- msgid "ANSI C forbids forward references to `enum' types"
+- msgstr ""
+-
+- #: c-decl.c:5747
+- #, c-format
+- msgid "redefinition of `union %s'"
+- msgstr ""
+-
+- #: c-decl.c:5748
+- #, c-format
+- msgid "redefinition of `struct %s'"
+- msgstr ""
+-
+- #: c-decl.c:5840 c-decl.c:5843
+- msgid "union defined inside parms"
+- msgstr ""
+-
+- #: c-decl.c:5841 c-decl.c:5844
+- msgid "structure defined inside parms"
+- msgstr ""
+-
+- #: c-decl.c:5857
+- #, c-format
+- msgid "%s has no named members"
+- msgstr ""
+-
+- #: c-decl.c:5858
+- #, c-format
+- msgid "%s has no members"
+- msgstr ""
+-
+- #: c-decl.c:5900
+- #, c-format
+- msgid "nested redefinition of `%s'"
+- msgstr ""
+-
+- #: c-decl.c:5912
+- #, c-format
+- msgid "bit-field `%s' width not an integer constant"
+- msgstr ""
+-
+- #: c-decl.c:5922
+- #, c-format
+- msgid "bit-field `%s' has invalid type"
+- msgstr ""
+-
+- #: c-decl.c:5932
+- #, c-format
+- msgid "bit-field `%s' type invalid in ANSI C"
+- msgstr ""
+-
+- #: c-decl.c:5942
+- #, c-format
+- msgid "negative width in bit-field `%s'"
+- msgstr ""
+-
+- #: c-decl.c:5948
+- #, c-format
+- msgid "width of `%s' exceeds its type"
+- msgstr ""
+-
+- #: c-decl.c:5952
+- #, c-format
+- msgid "zero width for bit-field `%s'"
+- msgstr ""
+-
+- #: c-decl.c:5967
+- #, c-format
+- msgid "`%s' is narrower than values of its type"
+- msgstr ""
+-
+- #: c-decl.c:6017
+- #, c-format
+- msgid "duplicate member `%s'"
+- msgstr ""
+-
+- #: c-decl.c:6098
+- msgid "union cannot be made transparent"
+- msgstr ""
+-
+- #. This enum is a named one that has been declared already.
+- #: c-decl.c:6190
+- #, c-format
+- msgid "redeclaration of `enum %s'"
+- msgstr ""
+-
+- #: c-decl.c:6224
+- msgid "enum defined inside parms"
+- msgstr ""
+-
+- #: c-decl.c:6264
+- msgid "enumeration values exceed range of largest integer"
+- msgstr ""
+-
+- #: c-decl.c:6347
+- #, c-format
+- msgid "enumerator value for `%s' not integer constant"
+- msgstr ""
+-
+- #: c-decl.c:6360
+- msgid "overflow in enumeration values"
+- msgstr ""
+-
+- #: c-decl.c:6365
+- msgid "ANSI C restricts enumerator values to range of `int'"
+- msgstr ""
+-
+- #: c-decl.c:6440
+- msgid "return-type is an incomplete type"
+- msgstr ""
+-
+- #: c-decl.c:6448
+- msgid "return-type defaults to `int'"
+- msgstr ""
+-
+- #: c-decl.c:6489
+- #, c-format
+- msgid "no previous prototype for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:6496
+- #, c-format
+- msgid "`%s' was used with no prototype before its definition"
+- msgstr ""
+-
+- #: c-decl.c:6502
+- #, c-format
+- msgid "no previous declaration for `%s'"
+- msgstr ""
+-
+- #: c-decl.c:6509
+- #, c-format
+- msgid "`%s' was used with no declaration before its definition"
+- msgstr ""
+-
+- #: c-decl.c:6538 c-decl.c:7250
+- #, c-format
+- msgid "return type of `%s' is not `int'"
+- msgstr ""
+-
+- #: c-decl.c:6554
+- #, c-format
+- msgid "first argument of `%s' should be `int'"
+- msgstr ""
+-
+- #: c-decl.c:6563
+- #, c-format
+- msgid "second argument of `%s' should be `char **'"
+- msgstr ""
+-
+- #: c-decl.c:6572
+- #, c-format
+- msgid "third argument of `%s' should probably be `char **'"
+- msgstr ""
+-
+- #: c-decl.c:6581
+- #, c-format
+- msgid "`%s' takes only zero or two arguments"
+- msgstr ""
+-
+- #: c-decl.c:6584
+- #, c-format
+- msgid "third argument of `%s' is deprecated"
+- msgstr ""
+-
+- #: c-decl.c:6587
+- #, c-format
+- msgid "`%s' is normally a non-static function"
+- msgstr ""
+-
+- #: c-decl.c:6692
+- msgid "parm types given both in parmlist and separately"
+- msgstr ""
+-
+- #: c-decl.c:6713
+- msgid "parameter name omitted"
+- msgstr ""
+-
+- #: c-decl.c:6716 c-decl.c:6816 c-decl.c:7116
+- #, c-format
+- msgid "parameter `%s' declared void"
+- msgstr ""
+-
+- #: c-decl.c:6790
+- msgid "parameter name missing from parameter list"
+- msgstr ""
+-
+- #: c-decl.c:6809 c-decl.c:7109
+- #, c-format
+- msgid "multiple parameters named `%s'"
+- msgstr ""
+-
+- #: c-decl.c:6840
+- #, c-format
+- msgid "type of `%s' defaults to `int'"
+- msgstr ""
+-
+- #: c-decl.c:6878 c-decl.c:7168
+- #, c-format
+- msgid "declaration for parameter `%s' but no such parameter"
+- msgstr ""
+-
+- #: c-decl.c:6925
+- msgid "number of arguments doesn't match prototype"
+- msgstr ""
+-
+- #: c-decl.c:6953
+- #, c-format
+- msgid "promoted argument `%s' doesn't match prototype"
+- msgstr ""
+-
+- #: c-decl.c:6967
+- #, c-format
+- msgid "argument `%s' doesn't match prototype"
+- msgstr ""
+-
+- #: c-decl.c:7139
+- #, c-format
+- msgid "type of parameter `%s' is not declared"
+- msgstr ""
+-
+- #: c-decl.c:7276
+- msgid "function might be possible candidate for attribute `noreturn'"
+- msgstr ""
+-
+- #: c-decl.c:7279
+- msgid "`noreturn' function does return"
+- msgstr ""
+-
+- #. If this function returns non-void and control can drop through,
+- #. complain.
+- #: c-decl.c:7284
+- msgid "control reaches end of non-void function"
+- msgstr ""
+-
+- #: c-decl.c:7289 cp/decl.c:14491
+- msgid "this function may return with or without a value"
+- msgstr ""
+-
+- #: c-decl.c:7310
+- #, c-format
+- msgid "size of return value of `%s' is %u bytes"
+- msgstr ""
+-
+- #: c-decl.c:7390
+- msgid "ANSI C forbids nested functions"
+- msgstr ""
+-
+- #: c-iterate.c:492
+- #, c-format
+- msgid "`for (%s)' appears within implicit iteration"
+- msgstr ""
+-
+- #: c-lex.c:374
+- msgid "carriage return in source file"
+- msgstr ""
+-
+- #: c-lex.c:375
+- msgid "(we only warn about the first carriage return)"
+- msgstr ""
+-
+- #: c-lex.c:420 cp/lex.c:2124
+- msgid "stray '\\' in program"
+- msgstr ""
+-
+- #: c-lex.c:602 cp/lex.c:2280
+- #, c-format
+- msgid "ignoring pragma: %s"
+- msgstr ""
+-
+- #: c-lex.c:667 cp/lex.c:2340
+- msgid "invalid #ident"
+- msgstr ""
+-
+- #: c-lex.c:683 cp/lex.c:2372
+- msgid "undefined or invalid # directive"
+- msgstr ""
+-
+- #: c-lex.c:734 cp/lex.c:2430
+- msgid "invalid #line"
+- msgstr ""
+-
+- #: c-lex.c:805 cp/lex.c:2591
+- msgid "#-lines for entering and leaving files don't match"
+- msgstr ""
+-
+- #: c-lex.c:846
+- msgid "unrecognized text at end of #line"
+- msgstr ""
+-
+- #: c-lex.c:849 cp/lex.c:2602
+- msgid "invalid #-line"
+- msgstr ""
+-
+- #: c-lex.c:929
+- msgid "the meaning of `\\x' varies with -traditional"
+- msgstr ""
+-
+- #: c-lex.c:963 cexp.y:925 cp/lex.c:2667 cppexp.c:600
+- msgid "\\x used with no following hex digits"
+- msgstr ""
+-
+- #: c-lex.c:971 cp/lex.c:2676
+- msgid "hex escape out of range"
+- msgstr ""
+-
+- #: c-lex.c:1011
+- msgid "the meaning of `\\a' varies with -traditional"
+- msgstr ""
+-
+- #: c-lex.c:1027 cexp.y:855 cp/lex.c:2723 cppexp.c:530
+- #, c-format
+- msgid "non-ANSI-standard escape sequence, `\\%c'"
+- msgstr ""
+-
+- #: c-lex.c:1040
+- #, c-format
+- msgid "non-ANSI escape sequence `\\%c'"
+- msgstr ""
+-
+- #: c-lex.c:1044 cp/lex.c:2736 cp/lex.c:2740
+- #, c-format
+- msgid "unknown escape sequence `\\%c'"
+- msgstr ""
+-
+- #: c-lex.c:1046 cp/lex.c:2742
+- #, c-format
+- msgid "unknown escape sequence: `\\' followed by char code 0x%x"
+- msgstr ""
+-
+- #: c-lex.c:1059
+- #, c-format
+- msgid "%s at end of input"
+- msgstr ""
+-
+- #: c-lex.c:1061
+- #, c-format
+- msgid "%s at null character"
+- msgstr ""
+-
+- #: c-lex.c:1063
+- #, c-format
+- msgid "%s before string constant"
+- msgstr ""
+-
+- #: c-lex.c:1065
+- #, c-format
+- msgid "%s before character constant"
+- msgstr ""
+-
+- #: c-lex.c:1067
+- #, c-format
+- msgid "%s before character 0%o"
+- msgstr ""
+-
+- #: c-lex.c:1069
+- #, c-format
+- msgid "%s before `%s'"
+- msgstr ""
+-
+- #: c-lex.c:1128 cp/lex.c:3164
+- msgid "more than one `f' in numeric constant"
+- msgstr ""
+-
+- #: c-lex.c:1134 cp/lex.c:3170
+- msgid "more than one `l' in numeric constant"
+- msgstr ""
+-
+- #: c-lex.c:1140 c-lex.c:1723 cp/lex.c:3176 cp/lex.c:3879
+- msgid "more than one `i' or `j' in numeric constant"
+- msgstr ""
+-
+- #: c-lex.c:1142 c-lex.c:1725
+- msgid "ANSI C forbids imaginary numeric constants"
+- msgstr ""
+-
+- #: c-lex.c:1167 cp/lex.c:3203
+- msgid "both `f' and `l' in floating constant"
+- msgstr ""
+-
+- #: c-lex.c:1180 cp/lex.c:3211
+- msgid "floating point number exceeds range of `float'"
+- msgstr ""
+-
+- #: c-lex.c:1192 cp/lex.c:3218
+- msgid "floating point number exceeds range of `long double'"
+- msgstr ""
+-
+- #: c-lex.c:1203 c-lex.c:1672 cp/lex.c:3224
+- msgid "floating point number exceeds range of `double'"
+- msgstr ""
+-
+- #: c-lex.c:1320 c-lex.c:1322 cccp.c:3039 cp/lex.c:3287 cp/lex.c:3289
+- #: cp/lex.c:3345 cp/lex.c:3347 cp/lex.c:3375 cp/lex.c:3377 cpplib.c:2537
+- msgid "`$' in identifier"
+- msgstr ""
+-
+- #: c-lex.c:1368
+- #, c-format
+- msgid "ANSI does not permit the keyword `%s'"
+- msgstr ""
+-
+- #: c-lex.c:1379
+- #, c-format
+- msgid "invalid identifier `%s'"
+- msgstr ""
+-
+- #: c-lex.c:1489 cp/lex.c:3650
+- msgid "floating constant may not be in radix 16"
+- msgstr ""
+-
+- #: c-lex.c:1495 cp/lex.c:3656
+- msgid "malformed floating constant"
+- msgstr ""
+-
+- #: c-lex.c:1522 cp/lex.c:3561 cp/lex.c:3683
+- msgid "parse error at `..'"
+- msgstr ""
+-
+- #: c-lex.c:1547 cp/lex.c:3708
+- msgid "nondigits in number and not hexadecimal"
+- msgstr ""
+-
+- #: c-lex.c:1593 cp/lex.c:3749
+- msgid "numeric constant with no digits"
+- msgstr ""
+-
+- #: c-lex.c:1596 cp/lex.c:3752
+- msgid "numeric constant contains digits beyond the radix"
+- msgstr ""
+-
+- #: c-lex.c:1625 cp/lex.c:3779
+- msgid "floating constant exponent has no digits"
+- msgstr ""
+-
+- #: c-lex.c:1635
+- msgid "hexadecimal floating constant has no exponent"
+- msgstr ""
+-
+- #. We got an exception from parse_float()
+- #: c-lex.c:1656 cp/lex.c:3807
+- msgid "floating constant out of range"
+- msgstr ""
+-
+- #: c-lex.c:1705 cexp.y:454 cp/lex.c:3861
+- msgid "two `u's in integer constant"
+- msgstr ""
+-
+- #: c-lex.c:1713 cp/lex.c:3869
+- msgid "three `l's in integer constant"
+- msgstr ""
+-
+- #: c-lex.c:1715
+- msgid "ANSI C forbids long long integer constants"
+- msgstr ""
+-
+- #: c-lex.c:1741 c-lex.c:1832 c-lex.c:1869 cexp.y:483 cp/lex.c:3912
+- #: cp/lex.c:3953 cppexp.c:219
+- msgid "integer constant out of range"
+- msgstr ""
+-
+- #: c-lex.c:1819
+- msgid "width of integer constant changes with -traditional"
+- msgstr ""
+-
+- #: c-lex.c:1822
+- msgid "integer constant is unsigned in ANSI C, signed with -traditional"
+- msgstr ""
+-
+- #: c-lex.c:1824
+- msgid "width of integer constant may change on other systems with -traditional"
+- msgstr ""
+-
+- #: c-lex.c:1836
+- msgid "decimal constant is so large that it is unsigned"
+- msgstr ""
+-
+- #: c-lex.c:1847
+- msgid "complex integer constant is too wide for `complex int'"
+- msgstr ""
+-
+- #: c-lex.c:1878
+- #, c-format
+- msgid "missing white space after number `%s'"
+- msgstr ""
+-
+- #: c-lex.c:1917 c-lex.c:2072 cp/lex.c:4013 cp/lex.c:4174 cppexp.c:292
+- msgid "escape sequence out of range for character"
+- msgstr ""
+-
+- #: c-lex.c:1926 cp/lex.c:4022
+- msgid "ANSI C forbids newline in character constant"
+- msgstr ""
+-
+- #: c-lex.c:1975 c-lex.c:2098 cexp.y:661 cp/lex.c:4071 cp/lex.c:4200
+- msgid "Ignoring invalid multibyte character"
+- msgstr ""
+-
+- #: c-lex.c:2009 cexp.y:687 cp/lex.c:4105 cppexp.c:314
+- msgid "malformatted character constant"
+- msgstr ""
+-
+- #: c-lex.c:2011 cexp.y:689 cp/lex.c:4107 cppexp.c:307
+- msgid "empty character constant"
+- msgstr ""
+-
+- #: c-lex.c:2015 cexp.y:693 cp/lex.c:4111 cppexp.c:319
+- msgid "character constant too long"
+- msgstr ""
+-
+- #: c-lex.c:2018 cexp.y:696 cp/lex.c:4114 cppexp.c:323
+- msgid "multi-character character constant"
+- msgstr ""
+-
+- #: c-lex.c:2077
+- msgid "ANSI C forbids newline in string constant"
+- msgstr ""
+-
+- #: c-lex.c:2168
+- msgid "Unterminated string constant"
+- msgstr ""
+-
+- #: c-lex.c:2348 cp/lex.c:1042
+- msgid "YYDEBUG not defined."
+- msgstr ""
+-
+- #: /tmp/sky/share/bison.simple:327 /usr/lib/bison.simple:327
+- msgid "parser stack overflow"
+- msgstr ""
+-
+- #: c-parse.y:235 objc-parse.y:235
+- msgid "ANSI C forbids an empty source file"
+- msgstr ""
+-
+- #: c-parse.y:267 c-parse.y:1852 objc-parse.y:268 objc-parse.y:1961
+- msgid "argument of `asm' is not a constant string"
+- msgstr ""
+-
+- #: c-parse.y:275 objc-parse.y:276
+- msgid "ANSI C forbids data definition with no type or storage class"
+- msgstr ""
+-
+- #: c-parse.y:277 objc-parse.y:278
+- msgid "data definition has no type or storage class"
+- msgstr ""
+-
+- #: c-parse.y:301 objc-parse.y:302
+- msgid "ANSI C does not allow extra `;' outside of a function"
+- msgstr ""
+-
+- #: c-parse.y:414 objc-parse.y:417
+- msgid "ANSI C forbids `&&'"
+- msgstr ""
+-
+- #: c-parse.y:443 objc-parse.y:446
+- msgid "`sizeof' applied to a bit-field"
+- msgstr ""
+-
+- #: c-parse.y:484 objc-parse.y:487
+- msgid "ANSI C forbids constructor expressions"
+- msgstr ""
+-
+- #: c-parse.y:553 objc-parse.y:556
+- msgid "ANSI C forbids omitting the middle term of a ?: expression"
+- msgstr ""
+-
+- #: c-parse.y:599 objc-parse.y:618
+- #, c-format
+- msgid "`%s' undeclared here (not in a function)"
+- msgstr ""
+-
+- #: c-parse.y:609 objc-parse.y:643
+- #, c-format
+- msgid "`%s' undeclared (first use in this function)"
+- msgstr ""
+-
+- #: c-parse.y:614 cp/lex.c:2939 objc-parse.y:648
+- msgid "(Each undeclared identifier is reported only once"
+- msgstr ""
+-
+- #: c-parse.y:615 cp/lex.c:2940 objc-parse.y:649
+- msgid "for each function it appears in.)"
+- msgstr ""
+-
+- #: c-parse.y:642 objc-parse.y:681
+- #, c-format
+- msgid "`%s' implicitly declared as function"
+- msgstr ""
+-
+- #: c-parse.y:648 objc-parse.y:687
+- #, c-format
+- msgid "type mismatch in implicit declaration for built-in function `%s'"
+- msgstr ""
+-
+- #: c-parse.y:657 objc-parse.y:696
+- #, c-format
+- msgid "built-in function `%s' used without declaration"
+- msgstr ""
+-
+- #: c-parse.y:693 objc-parse.y:757 parse.y:1429
+- msgid "braced-group within expression allowed only inside a function"
+- msgstr ""
+-
+- #: c-parse.y:707 objc-parse.y:771
+- msgid "ANSI C forbids braced-groups within expressions"
+- msgstr ""
+-
+- #: c-parse.y:762 objc-parse.y:859
+- msgid "ANSI C does not permit use of `varargs.h'"
+- msgstr ""
+-
+- #: c-parse.y:884 c-parse.y:905 c-parse.y:937 objc-parse.y:981
+- #: objc-parse.y:1002 objc-parse.y:1034 parse.y:1737 parse.y:1744 parse.y:1777
+- #, c-format
+- msgid "`%s' is not at beginning of declaration"
+- msgstr ""
+-
+- #: c-parse.y:1110 objc-parse.y:1216
+- msgid "ANSI C forbids empty initializer braces"
+- msgstr ""
+-
+- #: c-parse.y:1251 c-parse.y:1285
+- msgid "`[*]' in parameter declaration only allowed in ISO C 9x"
+- msgstr ""
+-
+- #: c-parse.y:1370 objc-parse.y:1463 parse.y:2197
+- msgid "comma at end of enumerator list"
+- msgstr ""
+-
+- #: c-parse.y:1378 objc-parse.y:1471
+- msgid "no semicolon at end of struct or union"
+- msgstr ""
+-
+- #: c-parse.y:1387 objc-parse.y:1480 objc-parse.y:2564
+- msgid "extra semicolon in struct or union specified"
+- msgstr ""
+-
+- #: c-parse.y:1408 c-parse.y:1419 objc-parse.y:1515 objc-parse.y:1526
+- msgid "ANSI C forbids member declarations with no members"
+- msgstr ""
+-
+- #: c-parse.y:1533 objc-parse.y:1640
+- msgid "ANSI C forbids label at end of compound statement"
+- msgstr ""
+-
+- #: c-parse.y:1568 objc-parse.y:1677
+- msgid "ANSI C forbids label declarations"
+- msgstr ""
+-
+- #: c-parse.y:1721 objc-parse.y:1830
+- msgid "empty body in an else-statement"
+- msgstr ""
+-
+- #: c-parse.y:1829 objc-parse.y:1938
+- msgid "break statement not within loop or switch"
+- msgstr ""
+-
+- #: c-parse.y:1834 objc-parse.y:1943
+- msgid "continue statement not within a loop"
+- msgstr ""
+-
+- #: c-parse.y:1888 objc-parse.y:1997
+- msgid "ANSI C forbids `goto *expr;'"
+- msgstr ""
+-
+- #: c-parse.y:1909 objc-parse.y:2018
+- msgid "invalid `for (ITERATOR)' syntax"
+- msgstr ""
+-
+- #: c-parse.y:1911 objc-parse.y:2020
+- #, c-format
+- msgid "`%s' is not an iterator"
+- msgstr ""
+-
+- #: c-parse.y:1914 objc-parse.y:2023
+- #, c-format
+- msgid "`for (%s)' inside expansion of same iterator"
+- msgstr ""
+-
+- #: c-parse.y:1970 objc-parse.y:2079
+- msgid "label must have integral type in ANSI C"
+- msgstr ""
+-
+- #: c-parse.y:1976 c-parse.y:2005 cp/expr.c:421 cp/typeck2.c:1560
+- #: objc-parse.y:2085 objc-parse.y:2114
+- msgid "case label not within a switch statement"
+- msgstr ""
+-
+- #: c-parse.y:1979 c-parse.y:2008 objc-parse.y:2088 objc-parse.y:2117
+- msgid "duplicate case value"
+- msgstr ""
+-
+- #: c-parse.y:1980 c-parse.y:2009 objc-parse.y:2089 objc-parse.y:2118
+- msgid "this is the first entry for that value"
+- msgstr ""
+-
+- #: c-parse.y:1983 c-parse.y:2012 cp/expr.c:447 cp/typeck2.c:1635
+- #: objc-parse.y:2092 objc-parse.y:2121
+- msgid "case value out of range"
+- msgstr ""
+-
+- #: c-parse.y:1985 c-parse.y:2016 cp/expr.c:453 objc-parse.y:2094
+- #: objc-parse.y:2125
+- msgid "case label within scope of cleanup or variable array"
+- msgstr ""
+-
+- #: c-parse.y:1995 objc-parse.y:2104
+- msgid "ANSI C forbids case ranges"
+- msgstr ""
+-
+- #: c-parse.y:2014 objc-parse.y:2123
+- msgid "empty case range"
+- msgstr ""
+-
+- #: c-parse.y:2027 cp/expr.c:425 cp/typeck2.c:1562 objc-parse.y:2136
+- msgid "default label not within a switch statement"
+- msgstr ""
+-
+- #: c-parse.y:2030 cp/expr.c:442 cp/typeck2.c:1568 objc-parse.y:2139
+- msgid "multiple default labels in one switch"
+- msgstr ""
+-
+- #: c-parse.y:2031 objc-parse.y:2140
+- msgid "this is the first default label"
+- msgstr ""
+-
+- #: c-parse.y:2104 objc-parse.y:2213
+- msgid "ANSI C forbids forward parameter declarations"
+- msgstr ""
+-
+- #. Gcc used to allow this as an extension. However, it does
+- #. not work for all targets, and thus has been disabled.
+- #. Also, since func (...) and func () are indistinguishable,
+- #. it caused problems with the code in expand_builtin which
+- #. tries to verify that BUILT_IN_NEXT_ARG is being used
+- #. correctly.
+- #: c-parse.y:2127 objc-parse.y:2236
+- msgid "ANSI C requires a named argument before `...'"
+- msgstr ""
+-
+- #: c-parse.y:2212 objc-parse.y:2321
+- msgid "`...' in old-style identifier list"
+- msgstr ""
+-
+- #: /tmp/sky/share/bison.simple:594 /usr/lib/bison.simple:594
+- msgid "parse error; also virtual memory exceeded"
+- msgstr ""
+-
+- #: /tmp/sky/share/bison.simple:598 /usr/lib/bison.simple:598
+- msgid "parse error"
+- msgstr ""
+-
+- #: c-pragma.c:73
+- #, c-format
+- msgid "Alignment must be a small power of two, not %d, in #pragma pack"
+- msgstr ""
+-
+- #: c-pragma.c:89
+- msgid "Out of memory pushing #pragma pack"
+- msgstr ""
+-
+- #: c-pragma.c:117
+- msgid ""
+- "#pragma pack (pop) encountered without matching #pragma pack (push, <n>)"
+- msgstr ""
+-
+- #: c-pragma.c:135
+- #, c-format
+- msgid ""
+- "#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s, "
+- "<n>)"
+- msgstr ""
+-
+- #: c-pragma.c:269
+- msgid "malformed `#pragma pack'"
+- msgstr ""
+-
+- #: c-pragma.c:278
+- msgid "malformed '#pragma pack(push[,id],<n>)'"
+- msgstr ""
+-
+- #: c-pragma.c:285
+- msgid "malformed '#pragma pack(pop[,id])'"
+- msgstr ""
+-
+- #: c-pragma.c:298
+- msgid "malformed `#pragma weak'"
+- msgstr ""
+-
+- #: c-pragma.c:350 c-pragma.c:368
+- msgid "Out of memory parsing #pragma weak"
+- msgstr ""
+-
+- #: c-typeck.c:115
+- #, c-format
+- msgid "`%s' has an incomplete type"
+- msgstr ""
+-
+- #: c-typeck.c:137 cp/call.c:2254
+- msgid "invalid use of void expression"
+- msgstr ""
+-
+- #: c-typeck.c:146
+- msgid "invalid use of array with unspecified bounds"
+- msgstr ""
+-
+- #: c-typeck.c:154
+- #, c-format
+- msgid "invalid use of undefined type `%s %s'"
+- msgstr ""
+-
+- #. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL.
+- #: c-typeck.c:158
+- #, c-format
+- msgid "invalid use of incomplete typedef `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:385 c-typeck.c:399
+- msgid "function types not truly compatible in ANSI C"
+- msgstr ""
+-
+- #: c-typeck.c:543
+- msgid "types are not quite compatible"
+- msgstr ""
+-
+- #: c-typeck.c:820
+- msgid "sizeof applied to a function type"
+- msgstr ""
+-
+- #: c-typeck.c:826
+- msgid "sizeof applied to a void type"
+- msgstr ""
+-
+- #: c-typeck.c:833
+- msgid "sizeof applied to an incomplete type"
+- msgstr ""
+-
+- #: c-typeck.c:886 c-typeck.c:2767 cp/typeck.c:4245
+- msgid "arithmetic on pointer to an incomplete type"
+- msgstr ""
+-
+- #: c-typeck.c:931
+- msgid "`__alignof' applied to a bit-field"
+- msgstr ""
+-
+- #: c-typeck.c:1108 cp/typeck.c:1798
+- msgid "invalid use of non-lvalue array"
+- msgstr ""
+-
+- #: c-typeck.c:1284
+- #, c-format
+- msgid "structure has no member named `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:1285
+- #, c-format
+- msgid "union has no member named `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:1315
+- #, c-format
+- msgid "request for member `%s' in something not a structure or union"
+- msgstr ""
+-
+- #: c-typeck.c:1348
+- msgid "dereferencing pointer to incomplete type"
+- msgstr ""
+-
+- #: c-typeck.c:1352
+- msgid "dereferencing `void *' pointer"
+- msgstr ""
+-
+- #: c-typeck.c:1369 cp/typeck.c:2394
+- #, c-format
+- msgid "invalid type argument of `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:1388 cp/typeck.c:2420
+- msgid "subscript missing in array reference"
+- msgstr ""
+-
+- #: c-typeck.c:1409 cp/typeck.c:2441
+- msgid "array subscript has type `char'"
+- msgstr ""
+-
+- #: c-typeck.c:1417 c-typeck.c:1512 cp/typeck.c:2448 cp/typeck.c:2526
+- msgid "array subscript is not an integer"
+- msgstr ""
+-
+- #: c-typeck.c:1447
+- msgid "ANSI C forbids subscripting `register' array"
+- msgstr ""
+-
+- #: c-typeck.c:1449 c-typeck.c:1458
+- msgid "ANSI C forbids subscripting non-lvalue array"
+- msgstr ""
+-
+- #: c-typeck.c:1491
+- msgid "subscript has type `char'"
+- msgstr ""
+-
+- #: c-typeck.c:1507 cp/typeck.c:2521
+- msgid "subscripted value is neither array nor pointer"
+- msgstr ""
+-
+- #: c-typeck.c:1563
+- msgid "called object is not a function"
+- msgstr ""
+-
+- #: c-typeck.c:1651
+- #, c-format
+- msgid "too many arguments to function `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:1654 cp/typeck.c:3132
+- msgid "too many arguments to function"
+- msgstr ""
+-
+- #: c-typeck.c:1677
+- #, c-format
+- msgid "type of formal parameter %d is incomplete"
+- msgstr ""
+-
+- #: c-typeck.c:1690
+- #, c-format
+- msgid "%s as integer rather than floating due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1693
+- #, c-format
+- msgid "%s as complex rather than floating due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1696
+- #, c-format
+- msgid "%s as floating rather than integer due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1699
+- #, c-format
+- msgid "%s as floating rather than complex due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1709
+- #, c-format
+- msgid "%s as `float' rather than `double' due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1724
+- #, c-format
+- msgid "%s with different width due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1758
+- #, c-format
+- msgid "%s as unsigned due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1760
+- #, c-format
+- msgid "%s as signed due to prototype"
+- msgstr ""
+-
+- #: c-typeck.c:1793
+- #, c-format
+- msgid "too few arguments to function `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:1796 cp/typeck.c:3235
+- msgid "too few arguments to function"
+- msgstr ""
+-
+- #: c-typeck.c:1837
+- msgid "suggest parentheses around + or - inside shift"
+- msgstr ""
+-
+- #: c-typeck.c:1844
+- msgid "suggest parentheses around && within ||"
+- msgstr ""
+-
+- #: c-typeck.c:1853
+- msgid "suggest parentheses around arithmetic in operand of |"
+- msgstr ""
+-
+- #: c-typeck.c:1856
+- msgid "suggest parentheses around comparison in operand of |"
+- msgstr ""
+-
+- #: c-typeck.c:1865
+- msgid "suggest parentheses around arithmetic in operand of ^"
+- msgstr ""
+-
+- #: c-typeck.c:1868
+- msgid "suggest parentheses around comparison in operand of ^"
+- msgstr ""
+-
+- #: c-typeck.c:1875
+- msgid "suggest parentheses around + or - in operand of &"
+- msgstr ""
+-
+- #: c-typeck.c:1878
+- msgid "suggest parentheses around comparison in operand of &"
+- msgstr ""
+-
+- #: c-typeck.c:1885
+- msgid "comparisons like X<=Y<=Z do not have their mathematical meaning"
+- msgstr ""
+-
+- #: c-typeck.c:2143 cp/typeck.c:3526
+- msgid "right shift count is negative"
+- msgstr ""
+-
+- #: c-typeck.c:2151 cp/typeck.c:3534
+- msgid "right shift count >= width of type"
+- msgstr ""
+-
+- #: c-typeck.c:2175 cp/typeck.c:3553
+- msgid "left shift count is negative"
+- msgstr ""
+-
+- #: c-typeck.c:2179 cp/typeck.c:3557
+- msgid "left shift count >= width of type"
+- msgstr ""
+-
+- #: c-typeck.c:2203
+- msgid "shift count is negative"
+- msgstr ""
+-
+- #: c-typeck.c:2207
+- msgid "shift count >= width of type"
+- msgstr ""
+-
+- #: c-typeck.c:2249 c-typeck.c:2255
+- msgid "ANSI C forbids comparison of `void *' with function pointer"
+- msgstr ""
+-
+- #: c-typeck.c:2258 c-typeck.c:2300 c-typeck.c:2328
+- msgid "comparison of distinct pointer types lacks a cast"
+- msgstr ""
+-
+- #: c-typeck.c:2273 c-typeck.c:2279 c-typeck.c:2349 c-typeck.c:2355
+- msgid "comparison between pointer and integer"
+- msgstr ""
+-
+- #: c-typeck.c:2295 c-typeck.c:2323
+- msgid "ANSI C forbids ordered comparisons of pointers to functions"
+- msgstr ""
+-
+- #: c-typeck.c:2320
+- msgid "comparison of complete and incomplete pointers"
+- msgstr ""
+-
+- #: c-typeck.c:2336 c-typeck.c:2343
+- msgid "ordered comparison of pointer with integer zero"
+- msgstr ""
+-
+- #: c-typeck.c:2553 cp/typeck.c:3997
+- msgid "comparison between signed and unsigned"
+- msgstr ""
+-
+- #: c-typeck.c:2599 cp/typeck.c:4042
+- msgid "comparison of promoted ~unsigned with constant"
+- msgstr ""
+-
+- #: c-typeck.c:2607 cp/typeck.c:4050
+- msgid "comparison of promoted ~unsigned with unsigned"
+- msgstr ""
+-
+- #: c-typeck.c:2669
+- msgid "pointer of type `void *' used in arithmetic"
+- msgstr ""
+-
+- #: c-typeck.c:2675
+- msgid "pointer to a function used in arithmetic"
+- msgstr ""
+-
+- #: c-typeck.c:2753
+- msgid "pointer of type `void *' used in subtraction"
+- msgstr ""
+-
+- #: c-typeck.c:2755
+- msgid "pointer to a function used in subtraction"
+- msgstr ""
+-
+- #: c-typeck.c:2813
+- msgid "wrong type argument to unary plus"
+- msgstr ""
+-
+- #: c-typeck.c:2824
+- msgid "wrong type argument to unary minus"
+- msgstr ""
+-
+- #: c-typeck.c:2840
+- msgid "wrong type argument to bit-complement"
+- msgstr ""
+-
+- #: c-typeck.c:2851
+- msgid "wrong type argument to abs"
+- msgstr ""
+-
+- #: c-typeck.c:2863
+- msgid "wrong type argument to conjugation"
+- msgstr ""
+-
+- #: c-typeck.c:2877
+- msgid "wrong type argument to unary exclamation mark"
+- msgstr ""
+-
+- #: c-typeck.c:2932 c-typeck.c:2958
+- msgid "wrong type argument to increment"
+- msgstr ""
+-
+- #: c-typeck.c:2933 c-typeck.c:2959
+- msgid "wrong type argument to decrement"
+- msgstr ""
+-
+- #: c-typeck.c:2952
+- msgid "increment of pointer to unknown structure"
+- msgstr ""
+-
+- #: c-typeck.c:2953
+- msgid "decrement of pointer to unknown structure"
+- msgstr ""
+-
+- #: c-typeck.c:3016
+- msgid "invalid lvalue in increment"
+- msgstr ""
+-
+- #: c-typeck.c:3017
+- msgid "invalid lvalue in decrement"
+- msgstr ""
+-
+- #: c-typeck.c:3025 cp/typeck.c:4599
+- msgid "increment"
+- msgstr ""
+-
+- #: c-typeck.c:3025 cp/typeck.c:4599
+- msgid "decrement"
+- msgstr ""
+-
+- #: c-typeck.c:3078
+- msgid "ANSI C forbids the address of a cast expression"
+- msgstr ""
+-
+- #: c-typeck.c:3092
+- msgid "invalid lvalue in unary `&'"
+- msgstr ""
+-
+- #: c-typeck.c:3126
+- #, c-format
+- msgid "attempt to take address of bit-field structure member `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:3296
+- msgid "ANSI C forbids use of conditional expressions as lvalues"
+- msgstr ""
+-
+- #: c-typeck.c:3298
+- msgid "ANSI C forbids use of compound expressions as lvalues"
+- msgstr ""
+-
+- #: c-typeck.c:3299
+- msgid "ANSI C forbids use of cast expressions as lvalues"
+- msgstr ""
+-
+- #: c-typeck.c:3311
+- #, c-format
+- msgid "%s of iterator `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:3319
+- #, c-format
+- msgid "%s of read-only member `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:3323
+- #, c-format
+- msgid "%s of read-only variable `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:3326
+- #, c-format
+- msgid "%s of read-only location"
+- msgstr ""
+-
+- #: c-typeck.c:3344
+- #, c-format
+- msgid "cannot take address of bitfield `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:3371
+- #, c-format
+- msgid "global register variable `%s' used in nested function"
+- msgstr ""
+-
+- #: c-typeck.c:3375
+- #, c-format
+- msgid "register variable `%s' used in nested function"
+- msgstr ""
+-
+- #: c-typeck.c:3382
+- #, c-format
+- msgid "address of global register variable `%s' requested"
+- msgstr ""
+-
+- #: c-typeck.c:3394
+- msgid "cannot put object with volatile field into register"
+- msgstr ""
+-
+- #: c-typeck.c:3398
+- #, c-format
+- msgid "address of register variable `%s' requested"
+- msgstr ""
+-
+- #: c-typeck.c:3482
+- msgid "ANSI C forbids conditional expr with only one void side"
+- msgstr ""
+-
+- #: c-typeck.c:3498 c-typeck.c:3504
+- msgid "ANSI C forbids conditional expr between `void *' and function pointer"
+- msgstr ""
+-
+- #: c-typeck.c:3509 cp/typeck.c:5270
+- msgid "pointer type mismatch in conditional expression"
+- msgstr ""
+-
+- #: c-typeck.c:3516 c-typeck.c:3530 cp/typeck.c:5276 cp/typeck.c:5281
+- msgid "pointer/integer type mismatch in conditional expression"
+- msgstr ""
+-
+- #: c-typeck.c:3522 c-typeck.c:3536
+- msgid "ANSI C forbids conditional expr between 0 and function pointer"
+- msgstr ""
+-
+- #: c-typeck.c:3548 cp/typeck.c:5357
+- msgid "type mismatch in conditional expression"
+- msgstr ""
+-
+- #: c-typeck.c:3658 cp/typeck.c:5410
+- msgid "left-hand operand of comma expression has no effect"
+- msgstr ""
+-
+- #: c-typeck.c:3697
+- msgid "cast specifies array type"
+- msgstr ""
+-
+- #: c-typeck.c:3703
+- msgid "cast specifies function type"
+- msgstr ""
+-
+- #: c-typeck.c:3713
+- msgid "ANSI C forbids casting nonscalar to the same type"
+- msgstr ""
+-
+- #: c-typeck.c:3734
+- msgid "ANSI C forbids casts to union type"
+- msgstr ""
+-
+- #: c-typeck.c:3750
+- msgid "cast to union type from type not present in union"
+- msgstr ""
+-
+- #. There are qualifiers present in IN_OTYPE that are not
+- #. present in IN_TYPE.
+- #: c-typeck.c:3787
+- msgid "cast discards qualifiers from pointer target type"
+- msgstr ""
+-
+- #: c-typeck.c:3802 cp/typeck.c:5830
+- msgid "cast increases required alignment of target type"
+- msgstr ""
+-
+- #: c-typeck.c:3808 cp/typeck.c:5838
+- msgid "cast from pointer to integer of different size"
+- msgstr ""
+-
+- #: c-typeck.c:3813
+- msgid "cast does not match function type"
+- msgstr ""
+-
+- #: c-typeck.c:3825 cp/typeck.c:5846
+- msgid "cast to pointer from integer of different size"
+- msgstr ""
+-
+- #. Now we have handled acceptable kinds of LHS that are not truly lvalues.
+- #. Reject anything strange now.
+- #: c-typeck.c:3968
+- msgid "invalid lvalue in assignment"
+- msgstr ""
+-
+- #. Convert new value to destination type.
+- #: c-typeck.c:3977 c-typeck.c:4001 c-typeck.c:4016 cp/typeck.c:6103
+- msgid "assignment"
+- msgstr ""
+-
+- #: c-typeck.c:4161 c-typeck.c:4230
+- #, c-format
+- msgid "%s makes qualified function pointer from unqualified"
+- msgstr ""
+-
+- #: c-typeck.c:4165 c-typeck.c:4209
+- #, c-format
+- msgid "%s discards qualifiers from pointer target type"
+- msgstr ""
+-
+- #: c-typeck.c:4171
+- msgid "ANSI C prohibits argument conversion to union type"
+- msgstr ""
+-
+- #: c-typeck.c:4201
+- #, c-format
+- msgid "ANSI forbids %s between function pointer and `void *'"
+- msgstr ""
+-
+- #: c-typeck.c:4219
+- #, c-format
+- msgid "pointer targets in %s differ in signedness"
+- msgstr ""
+-
+- #: c-typeck.c:4235
+- #, c-format
+- msgid "%s from incompatible pointer type"
+- msgstr ""
+-
+- #: c-typeck.c:4251
+- #, c-format
+- msgid "%s makes pointer from integer without a cast"
+- msgstr ""
+-
+- #: c-typeck.c:4259
+- #, c-format
+- msgid "%s makes integer from pointer without a cast"
+- msgstr ""
+-
+- #: c-typeck.c:4271 c-typeck.c:4274
+- #, c-format
+- msgid "incompatible type for argument %d of `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:4278
+- #, c-format
+- msgid "incompatible type for argument %d of indirect function call"
+- msgstr ""
+-
+- #: c-typeck.c:4282
+- #, c-format
+- msgid "incompatible types in %s"
+- msgstr ""
+-
+- #. Function name is known; supply it.
+- #: c-typeck.c:4313
+- #, c-format
+- msgid "passing arg %d of `%s'"
+- msgstr ""
+-
+- #. Function name unknown (call through ptr); just give arg number.
+- #: c-typeck.c:4323
+- #, c-format
+- msgid "passing arg %d of pointer to function"
+- msgstr ""
+-
+- #: c-typeck.c:4529
+- msgid "initializer for static variable is not constant"
+- msgstr ""
+-
+- #: c-typeck.c:4535
+- msgid "initializer for static variable uses complicated arithmetic"
+- msgstr ""
+-
+- #: c-typeck.c:4543
+- msgid "aggregate initializer is not constant"
+- msgstr ""
+-
+- #: c-typeck.c:4545
+- msgid "aggregate initializer uses complicated arithmetic"
+- msgstr ""
+-
+- #: c-typeck.c:4709 c-typeck.c:4725 c-typeck.c:4741
+- #, c-format
+- msgid "(near initialization for `%s')"
+- msgstr ""
+-
+- #: c-typeck.c:4789 cp/typeck2.c:769
+- msgid "char-array initialized from wide string"
+- msgstr ""
+-
+- #: c-typeck.c:4796 cp/typeck2.c:776
+- msgid "int-array initialized from non-wide string"
+- msgstr ""
+-
+- #: c-typeck.c:4813 cp/typeck2.c:792
+- msgid "initializer-string for array of chars is too long"
+- msgstr ""
+-
+- #: c-typeck.c:4840
+- msgid "array initialized from non-constant array expression"
+- msgstr ""
+-
+- #: c-typeck.c:4857 c-typeck.c:4859 c-typeck.c:4865 c-typeck.c:4892
+- #: c-typeck.c:6112
+- msgid "initializer element is not constant"
+- msgstr ""
+-
+- #: c-typeck.c:4871 c-typeck.c:4898 c-typeck.c:6118
+- msgid "initializer element is not computable at load time"
+- msgstr ""
+-
+- #: c-typeck.c:4887
+- msgid "initialization"
+- msgstr ""
+-
+- #: c-typeck.c:4935 c-typeck.c:4951 cp/typeck2.c:870
+- msgid "invalid initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5428
+- msgid "extra brace group at end of initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5440
+- msgid "missing braces around initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5471
+- msgid "braces around scalar initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5552
+- msgid "missing initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5565
+- msgid "empty braces in initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5629
+- msgid "empty scalar initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5634
+- msgid "extra elements in scalar initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5697
+- #, c-format
+- msgid "zero or negative array size `%s'"
+- msgstr ""
+-
+- #: c-typeck.c:5768 c-typeck.c:5770
+- msgid "nonconstant array index in initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5772
+- msgid "array index in non-array initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5774
+- msgid "duplicate array index in initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5781
+- msgid "empty index range in initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5785
+- msgid "ANSI C forbids specifying element to initialize"
+- msgstr ""
+-
+- #: c-typeck.c:5815
+- #, c-format
+- msgid "unknown field `%s' specified in initializer"
+- msgstr ""
+-
+- #: c-typeck.c:5818
+- #, c-format
+- msgid "field `%s' already initialized"
+- msgstr ""
+-
+- #: c-typeck.c:5824
+- msgid "ANSI C forbids specifying structure member to initialize"
+- msgstr ""
+-
+- #: c-typeck.c:6134
+- msgid "duplicate initializer"
+- msgstr ""
+-
+- #: c-typeck.c:6487 c-typeck.c:6522
+- msgid "excess elements in struct initializer"
+- msgstr ""
+-
+- #: c-typeck.c:6586
+- msgid "excess elements in union initializer"
+- msgstr ""
+-
+- #: c-typeck.c:6660 c-typeck.c:6671
+- msgid "excess elements in array initializer"
+- msgstr ""
+-
+- #: c-typeck.c:6722
+- msgid "excess elements in scalar initializer"
+- msgstr ""
+-
+- #: c-typeck.c:6762
+- msgid "asm template is not a string constant"
+- msgstr ""
+-
+- #: c-typeck.c:6802
+- msgid "modification by `asm'"
+- msgstr ""
+-
+- #: c-typeck.c:6821 cp/typeck.c:7327
+- msgid "function declared `noreturn' has a `return' statement"
+- msgstr ""
+-
+- #: c-typeck.c:6827 cp/typeck.c:7375
+- msgid "`return' with no value, in function returning non-void"
+- msgstr ""
+-
+- #: c-typeck.c:6834 cp/typeck.c:7406
+- msgid "`return' with a value, in function returning void"
+- msgstr ""
+-
+- #: c-typeck.c:6839
+- msgid "return"
+- msgstr ""
+-
+- #: c-typeck.c:6890
+- msgid "function returns address of local variable"
+- msgstr ""
+-
+- #: c-typeck.c:6919 cp/typeck.c:7547
+- msgid "switch quantity not an integer"
+- msgstr ""
+-
+- #: c-typeck.c:6930
+- msgid "`long' switch expression not converted to `int' in ANSI C"
+- msgstr ""
+-
+- #: calls.c:1664
+- #, c-format
+- msgid "can't inline call to `%s'"
+- msgstr ""
+-
+- #: calls.c:1665 calls.c:1847
+- msgid "called from here"
+- msgstr ""
+-
+- #: calls.c:1703
+- msgid "function call has aggregate value"
+- msgstr ""
+-
+- #: calls.c:1846
+- #, c-format
+- msgid "inlining failed in call to `%s'"
+- msgstr ""
+-
+- #: cccp.c:1313
+- msgid "Too many arguments"
+- msgstr ""
+-
+- #: cccp.c:1327
+- msgid "Filename missing after `-include' option"
+- msgstr ""
+-
+- #: cccp.c:1335
+- msgid "Filename missing after `-imacros' option"
+- msgstr ""
+-
+- #: cccp.c:1341
+- msgid "Filename missing after `-iprefix' option"
+- msgstr ""
+-
+- #: cccp.c:1423
+- msgid "Output filename specified twice"
+- msgstr ""
+-
+- #: cccp.c:1425
+- msgid "Filename missing after -o option"
+- msgstr ""
+-
+- #: cccp.c:1440
+- msgid "Filename missing after -pcp option"
+- msgstr ""
+-
+- #: cccp.c:1571
+- #, c-format
+- msgid "Filename missing after %s option"
+- msgstr ""
+-
+- #: cccp.c:1621
+- #, c-format
+- msgid "GNU CPP version %s"
+- msgstr ""
+-
+- #: cccp.c:1637
+- msgid "Macro name missing after -D option"
+- msgstr ""
+-
+- #: cccp.c:1649
+- msgid "Assertion missing after -A option"
+- msgstr ""
+-
+- #: cccp.c:1672
+- msgid "Macro name missing after -U option"
+- msgstr ""
+-
+- #: cccp.c:1736 cppmain.c:68 toplev.c:1294 toplev.c:5102 toplev.c:5178
+- #: toplev.c:5347 toplev.c:5350 toplev.c:5503
+- #, c-format
+- msgid "Invalid option `%s'"
+- msgstr ""
+-
+- #: cccp.c:1914
+- msgid "#include \"...\" search starts here:\n"
+- msgstr ""
+-
+- #: cccp.c:1917
+- msgid "#include <...> search starts here:\n"
+- msgstr ""
+-
+- #: cccp.c:1926
+- msgid "End of search list.\n"
+- msgstr ""
+-
+- #: cccp.c:1929
+- msgid ""
+- "The following default directories have been omitted from the search path:\n"
+- msgstr ""
+-
+- #: cccp.c:1933
+- msgid "End of omitted list.\n"
+- msgstr ""
+-
+- #: cccp.c:1941
+- msgid "-MG must be specified with one of -M or -MM"
+- msgstr ""
+-
+- #: cccp.c:2080
+- #, c-format
+- msgid "Input file `%s' is a directory"
+- msgstr ""
+-
+- #: cccp.c:2154 cccp.c:5296
+- msgid "file does not end in newline"
+- msgstr ""
+-
+- #: cccp.c:2174 cccp.c:2184
+- msgid "I/O error on output"
+- msgstr ""
+-
+- #: cccp.c:2181
+- msgid "I/O error on `-pcp' output"
+- msgstr ""
+-
+- #: cccp.c:2329
+- #, c-format
+- msgid "%lu trigraph(s) encountered"
+- msgstr ""
+-
+- #: cccp.c:2639
+- msgid "preprocessing directive not recognized within macro arg"
+- msgstr ""
+-
+- #: cccp.c:2783 cccp.c:8068 cccp.c:8102
+- msgid "unterminated string or character constant"
+- msgstr ""
+-
+- #: cccp.c:2786 cccp.c:8070
+- msgid "possible real start of unterminated constant"
+- msgstr ""
+-
+- #: cccp.c:2805
+- msgid "unterminated character constant"
+- msgstr ""
+-
+- #: cccp.c:2811 cccp.c:8114
+- msgid "string constant runs past end of line"
+- msgstr ""
+-
+- #: cccp.c:2905 cccp.c:7584 cccp.c:7949 cccp.c:8938
+- msgid "multiline `//' comment"
+- msgstr ""
+-
+- #: cccp.c:2989 cccp.c:7560 cccp.c:8002 cccp.c:8909 cpplib.c:269 cpplib.c:343
+- msgid "`/*' within comment"
+- msgstr ""
+-
+- #: cccp.c:3009 cccp.c:8033
+- msgid "unterminated comment"
+- msgstr ""
+-
+- #: cccp.c:3298
+- #, c-format
+- msgid "recursive use of macro `%s'"
+- msgstr ""
+-
+- #: cccp.c:3548
+- #, c-format
+- msgid "unterminated `#%s' conditional"
+- msgstr ""
+-
+- #: cccp.c:3733 cccp.c:7641 cpplib.c:512
+- msgid "`#' followed by integer"
+- msgstr ""
+-
+- #: cccp.c:3745 cccp.c:7650
+- msgid "invalid preprocessing directive"
+- msgstr ""
+-
+- #: cccp.c:3751 cccp.c:7656 cccp.c:7718
+- msgid "invalid preprocessing directive name"
+- msgstr ""
+-
+- #: cccp.c:4130
+- #, c-format
+- msgid "Predefined macro `%s' used inside `#if' during precompilation"
+- msgstr ""
+-
+- #: cccp.c:4139
+- msgid "cccp error: not in any file?!"
+- msgstr ""
+-
+- #: cccp.c:4278 cppexp.c:475
+- msgid "`defined' without an identifier"
+- msgstr ""
+-
+- #: cccp.c:4282
+- msgid "cccp error: invalid special hash type"
+- msgstr ""
+-
+- #: cccp.c:4336 cpplib.c:972
+- msgid "ANSI C does not allow `#import'"
+- msgstr ""
+-
+- #: cccp.c:4338 cpplib.c:974
+- msgid "ANSI C does not allow `#include_next'"
+- msgstr ""
+-
+- #: cccp.c:4344
+- msgid "using `#import' is not recommended"
+- msgstr ""
+-
+- #: cccp.c:4345
+- msgid ""
+- "The fact that a certain header file need not be processed more than once\n"
+- "should be indicated in the header file, not where it is used.\n"
+- "The best way to do this is with a conditional of this form:\n"
+- "\n"
+- " #ifndef _FOO_H_INCLUDED\n"
+- " #define _FOO_H_INCLUDED\n"
+- " ... <real contents of file> ...\n"
+- " #endif /* Not _FOO_H_INCLUDED */\n"
+- "\n"
+- "Then users can use `#include' any number of times.\n"
+- "GNU C automatically avoids processing the file more than once\n"
+- "when it is equipped with such a conditional.\n"
+- msgstr ""
+-
+- #: cccp.c:4466
+- msgid "VAX-C-style include specification found, use '#include <filename.h>' !"
+- msgstr ""
+-
+- #: cccp.c:4518 cpplib.c:1011
+- #, c-format
+- msgid "`#%s' expects \"FILENAME\" or <FILENAME>"
+- msgstr ""
+-
+- #: cccp.c:4541 cpplib.c:1032
+- #, c-format
+- msgid "empty file name in `#%s'"
+- msgstr ""
+-
+- #: cccp.c:4681 cccp.c:4685 cpplib.c:1097 cpplib.c:1145
+- #, c-format
+- msgid "No include path in which to find %s"
+- msgstr ""
+-
+- #: cccp.c:5242
+- #, c-format
+- msgid "directory `%s' specified in #include"
+- msgstr ""
+-
+- #: cccp.c:5404 cccp.c:5439
+- msgid "Bad format encountered while reading precompiled file"
+- msgstr ""
+-
+- #: cccp.c:5732 cpphash.c:639
+- #, c-format
+- msgid "another parameter follows `%s'"
+- msgstr ""
+-
+- #: cccp.c:5746 cpphash.c:643
+- msgid "invalid character in macro parameter name"
+- msgstr ""
+-
+- #: cccp.c:5756
+- msgid "ANSI C does not allow macro with variable arguments"
+- msgstr ""
+-
+- #: cccp.c:5775 cccp.c:5785 cpphash.c:666
+- msgid "badly punctuated parameter list in `#define'"
+- msgstr ""
+-
+- #: cccp.c:5790 cpphash.c:676
+- msgid "unterminated parameter list in `#define'"
+- msgstr ""
+-
+- #: cccp.c:5800
+- #, c-format
+- msgid "duplicate argument name `%.*s' in `#define'"
+- msgstr ""
+-
+- #: cccp.c:5807
+- #, c-format
+- msgid "reserved name `%s' used as argument name in `#define'"
+- msgstr ""
+-
+- #: cccp.c:5852 cccp.c:5857 cpphash.c:740
+- #, c-format
+- msgid "missing white space after `#define %.*s'"
+- msgstr ""
+-
+- #: cccp.c:5929 cpplib.c:654
+- #, c-format
+- msgid "`%.*s' redefined"
+- msgstr ""
+-
+- #: cccp.c:5972 cpplib.c:590
+- msgid "invalid assertion name"
+- msgstr ""
+-
+- #: cccp.c:5972 cpplib.c:590
+- msgid "invalid macro name"
+- msgstr ""
+-
+- #: cccp.c:5976
+- #, c-format
+- msgid "invalid assertion name `%.*s'"
+- msgstr ""
+-
+- #: cccp.c:5977
+- #, c-format
+- msgid "invalid macro name `%.*s'"
+- msgstr ""
+-
+- #: cccp.c:6118 cpphash.c:326
+- msgid "`##' at start of macro definition"
+- msgstr ""
+-
+- #: cccp.c:6189 cpphash.c:379
+- msgid "`##' at end of macro definition"
+- msgstr ""
+-
+- #: cccp.c:6203 cpphash.c:391
+- msgid "`#' operator is not followed by a macro argument name"
+- msgstr ""
+-
+- #: cccp.c:6298 cpphash.c:481
+- #, c-format
+- msgid "macro argument `%.*s' is stringified."
+- msgstr ""
+-
+- #: cccp.c:6301 cpphash.c:487
+- #, c-format
+- msgid "macro arg `%.*s' would be stringified with -traditional."
+- msgstr ""
+-
+- #: cccp.c:6354 cpphash.c:537
+- msgid "`#' operator should be followed by a macro argument name"
+- msgstr ""
+-
+- #: cccp.c:6396 cpplib.c:2731
+- msgid "ANSI C does not allow `#assert'"
+- msgstr ""
+-
+- #: cccp.c:6414 cpplib.c:2740
+- msgid "missing token-sequence in `#assert'"
+- msgstr ""
+-
+- #: cccp.c:6428
+- msgid "empty token-sequence in `#assert'"
+- msgstr ""
+-
+- #: cccp.c:6448
+- msgid "`defined' redefined as assertion"
+- msgstr ""
+-
+- #: cccp.c:6475 cpplib.c:2797
+- msgid "ANSI C does not allow `#unassert'"
+- msgstr ""
+-
+- #: cccp.c:6502
+- msgid "empty token list in `#unassert'"
+- msgstr ""
+-
+- #: cccp.c:6572
+- msgid "ANSI C does not allow testing assertions"
+- msgstr ""
+-
+- #: cccp.c:6672
+- msgid "unterminated token sequence in `#assert' or `#unassert'"
+- msgstr ""
+-
+- #: cccp.c:6812 cccp.c:6831 cccp.c:6852 cccp.c:6888 cccp.c:6905 cccp.c:6929
+- msgid "invalid format `#line' directive"
+- msgstr ""
+-
+- #: cccp.c:6823
+- msgid "line number out of range in `#line' directive"
+- msgstr ""
+-
+- #: cccp.c:6878
+- msgid "garbage at end of `#line' directive"
+- msgstr ""
+-
+- #: cccp.c:6966 cpplib.c:1367
+- #, c-format
+- msgid "undefining `%s'"
+- msgstr ""
+-
+- #: cccp.c:6974
+- msgid "garbage after `#undef' directive"
+- msgstr ""
+-
+- #: cccp.c:6994 cpplib.c:1405
+- #, c-format
+- msgid "#error %s"
+- msgstr ""
+-
+- #: cccp.c:7015 cpplib.c:1427
+- msgid "ANSI C does not allow `#warning'"
+- msgstr ""
+-
+- #. Use `pedwarn' not `warning', because #warning isn't in the C Standard;
+- #. if -pedantic-errors is given, #warning should cause an error.
+- #: cccp.c:7019 cpplib.c:1431
+- #, c-format
+- msgid "#warning %s"
+- msgstr ""
+-
+- #: cccp.c:7051 cpplib.c:1448
+- msgid "ANSI C does not allow `#ident'"
+- msgstr ""
+-
+- #: cccp.c:7082 cpplib.c:1482
+- msgid "`#pragma once' is obsolete"
+- msgstr ""
+-
+- #: cccp.c:7104
+- #, c-format
+- msgid "`#pragma implementation' for \"%s\" appears after its #include"
+- msgstr ""
+-
+- #: cccp.c:7134
+- msgid "You are in a maze of twisty compiler features, all different"
+- msgstr ""
+-
+- #: cccp.c:7149 cpplib.c:1533
+- msgid "ANSI C does not allow `#sccs'"
+- msgstr ""
+-
+- #: cccp.c:7193 cpplib.c:1573
+- msgid "`#elif' not within a conditional"
+- msgstr ""
+-
+- #: cccp.c:7197 cpplib.c:1577
+- msgid "`#elif' after `#else'"
+- msgstr ""
+-
+- #: cccp.c:7305 cpplib.c:1661
+- #, c-format
+- msgid "`#%s' with no argument"
+- msgstr ""
+-
+- #: cccp.c:7306
+- #, c-format
+- msgid "`#%s' argument starts with punctuation"
+- msgstr ""
+-
+- #: cccp.c:7313
+- #, c-format
+- msgid "`#%s' argument starts with a digit"
+- msgstr ""
+-
+- #: cccp.c:7315 cpplib.c:1685
+- #, c-format
+- msgid "garbage at end of `#%s' argument"
+- msgstr ""
+-
+- #: cccp.c:7686
+- #, c-format
+- msgid "`#%s' not within a conditional"
+- msgstr ""
+-
+- #: cccp.c:7694
+- msgid "`#else' or `#elif' after `#else'"
+- msgstr ""
+-
+- #: cccp.c:7765
+- msgid "text following `#else' violates ANSI standard"
+- msgstr ""
+-
+- #: cccp.c:7769 cpplib.c:1916
+- msgid "`#else' not within a conditional"
+- msgstr ""
+-
+- #: cccp.c:7777 cpplib.c:1924
+- msgid "`#else' after `#else'"
+- msgstr ""
+-
+- #: cccp.c:7810
+- msgid "text following `#endif' violates ANSI standard"
+- msgstr ""
+-
+- #: cccp.c:7814 cpplib.c:1956
+- msgid "unbalanced `#endif'"
+- msgstr ""
+-
+- #: cccp.c:7909
+- msgid "text following `#else' or `#endif' violates ANSI standard"
+- msgstr ""
+-
+- #: cccp.c:8391
+- msgid "unterminated macro call"
+- msgstr ""
+-
+- #: cccp.c:8414 cpphash.c:1139
+- #, c-format
+- msgid "arguments given to macro `%s'"
+- msgstr ""
+-
+- #: cccp.c:8425 cpphash.c:1150
+- #, c-format
+- msgid "macro `%s' used without args"
+- msgstr ""
+-
+- #: cccp.c:8427 cpphash.c:1152
+- #, c-format
+- msgid "macro `%s' used with just one arg"
+- msgstr ""
+-
+- #: cccp.c:8429 cpphash.c:1154
+- #, c-format
+- msgid "macro `%s' used with only %d args"
+- msgstr ""
+-
+- #: cccp.c:8432 cpphash.c:1160
+- #, c-format
+- msgid "macro `%s' used with too many (%d) args"
+- msgstr ""
+-
+- #: cccp.c:9412 cccp.c:9511 cccp.c:9596 cpperror.c:107 toplev.c:1659
+- msgid "warning: "
+- msgstr ""
+-
+- #: cccp.c:9608
+- msgid "formfeed in preprocessing directive"
+- msgstr ""
+-
+- #: cccp.c:9609
+- msgid "carriage return in preprocessing directive"
+- msgstr ""
+-
+- #: cccp.c:9610
+- msgid "vertical tab in preprocessing directive"
+- msgstr ""
+-
+- #: cccp.c:9646
+- msgid "In file included from "
+- msgstr ""
+-
+- #: cccp.c:9648
+- msgid ""
+- ",\n"
+- " from "
+- msgstr ""
+-
+- #: cccp.c:10210 cccp.c:10226
+- #, c-format
+- msgid "malformed option `-D %s'"
+- msgstr ""
+-
+- #: cccp.c:10338 cccp.c:10345
+- #, c-format
+- msgid "malformed option `%s %s'"
+- msgstr ""
+-
+- #: cccp.c:10386
+- msgid "Directory name missing after command line option"
+- msgstr ""
+-
+- #: ../libiberty/cplus-dem.c:4395 cccp.c:10634 gcc.c:5316
+- msgid "Internal gcc abort."
+- msgstr ""
+-
+- #: cccp.c:10664 toplev.c:2511
+- msgid "output pipe has been closed"
+- msgstr ""
+-
+- #: cccp.c:10670
+- msgid "Memory exhausted."
+- msgstr ""
+-
+- #: cexp.y:197 cppexp.c:954
+- msgid "comma operator in operand of `#if'"
+- msgstr ""
+-
+- #: cexp.y:248 cexp.y:265 cppexp.c:861 cppexp.c:879
+- msgid "division by zero in #if"
+- msgstr ""
+-
+- #: cexp.y:367 cppexp.c:436
+- #, c-format
+- msgid "`%.*s' is not defined"
+- msgstr ""
+-
+- #: cexp.y:448
+- msgid "too many `l's in integer constant"
+- msgstr ""
+-
+- #: cexp.y:459
+- msgid "Floating point numbers not allowed in #if expressions"
+- msgstr ""
+-
+- #: cexp.y:461
+- #, c-format
+- msgid "missing white space after number `%.*s'"
+- msgstr ""
+-
+- #: cexp.y:480 cppexp.c:216
+- msgid "integer constant contains digits beyond the radix"
+- msgstr ""
+-
+- #: cexp.y:489 cppexp.c:226
+- msgid "integer constant is so large that it is unsigned"
+- msgstr ""
+-
+- #: cexp.y:539 cppexp.c:487
+- #, c-format
+- msgid "`%s' not allowed in operand of `#if'"
+- msgstr ""
+-
+- #: cexp.y:776 cppexp.c:423
+- msgid "string constants not allowed in #if expressions"
+- msgstr ""
+-
+- #: cexp.y:808
+- msgid "Invalid token in expression"
+- msgstr ""
+-
+- #: cexp.y:898 cppexp.c:573
+- msgid "octal escape sequence out of range"
+- msgstr ""
+-
+- #: cexp.y:929 cppexp.c:604
+- msgid "hex escape sequence out of range"
+- msgstr ""
+-
+- #: cexp.y:942 cppexp.c:618
+- msgid "integer overflow in preprocessor expression"
+- msgstr ""
+-
+- #: cexp.y:1000
+- msgid "Junk after end of expression."
+- msgstr ""
+-
+- #: collect2.c:501
+- msgid "internal error"
+- msgstr ""
+-
+- #: collect2.c:536 collect2.c:546
+- msgid "out of memory"
+- msgstr ""
+-
+- #: ../libiberty/cplus-dem.c:4601 ../libiberty/cplus-dem.c:4612 collect2.c:561
+- #: cp/decl.c:5474 gcc.c:5243 gcc.c:5258 toplev.c:2315 toplev.c:2332
+- #: toplev.c:2353 toplev.c:2367
+- msgid "virtual memory exhausted"
+- msgstr ""
+-
+- #: collect2.c:1072
+- msgid "no arguments"
+- msgstr ""
+-
+- #: collect2.c:1449 collect2.c:1601 collect2.c:1626
+- #, c-format
+- msgid "fopen %s"
+- msgstr ""
+-
+- #: collect2.c:1452 collect2.c:1458 collect2.c:1606 collect2.c:1629
+- #, c-format
+- msgid "fclose %s"
+- msgstr ""
+-
+- #: collect2.c:1455
+- #, c-format
+- msgid "%s"
+- msgstr ""
+-
+- #: collect2.c:1467
+- #, c-format
+- msgid "collect2 version %s"
+- msgstr ""
+-
+- #: collect2.c:1556
+- #, c-format
+- msgid "%d constructor(s) found\n"
+- msgstr ""
+-
+- #: collect2.c:1557
+- #, c-format
+- msgid "%d destructor(s) found\n"
+- msgstr ""
+-
+- #: collect2.c:1558
+- #, c-format
+- msgid "%d frame table(s) found\n"
+- msgstr ""
+-
+- #: collect2.c:1689
+- #, c-format
+- msgid "%s terminated with signal %d [%s]"
+- msgstr ""
+-
+- #: collect2.c:1690
+- #, c-format
+- msgid "%s terminated with signal %d [%s], core dumped"
+- msgstr ""
+-
+- #: collect2.c:1710
+- #, c-format
+- msgid "%s returned %d exit status"
+- msgstr ""
+-
+- #: collect2.c:1738
+- #, c-format
+- msgid "[cannot find %s]"
+- msgstr ""
+-
+- #: collect2.c:1753
+- #, c-format
+- msgid "cannot find `%s'"
+- msgstr ""
+-
+- #: collect2.c:1764 collect2.c:1767
+- #, c-format
+- msgid "redirecting stdout: %s"
+- msgstr ""
+-
+- #: collect2.c:1810
+- #, c-format
+- msgid "[Leaving %s]\n"
+- msgstr ""
+-
+- #: collect2.c:2032
+- #, c-format
+- msgid ""
+- "\n"
+- "write_c_file - output name is %s, prefix is %s\n"
+- msgstr ""
+-
+- #: collect2.c:2256
+- msgid "cannot find `nm'"
+- msgstr ""
+-
+- #: collect2.c:2266 collect2.c:2703
+- msgid "pipe"
+- msgstr ""
+-
+- #: collect2.c:2270 collect2.c:2707
+- msgid "fdopen"
+- msgstr ""
+-
+- #: collect2.c:2296 collect2.c:2733
+- #, c-format
+- msgid "dup2 %d 1"
+- msgstr ""
+-
+- #: collect2.c:2299 collect2.c:2302 collect2.c:2315 collect2.c:2736
+- #: collect2.c:2739 collect2.c:2752
+- #, c-format
+- msgid "close %d"
+- msgstr ""
+-
+- #: collect2.c:2305
+- #, c-format
+- msgid "execvp %s"
+- msgstr ""
+-
+- #: collect2.c:2359
+- #, c-format
+- msgid "init function found in object %s"
+- msgstr ""
+-
+- #: collect2.c:2367
+- #, c-format
+- msgid "fini function found in object %s"
+- msgstr ""
+-
+- #: collect2.c:2390 collect2.c:2791
+- msgid "fclose"
+- msgstr ""
+-
+- #: collect2.c:2433
+- #, c-format
+- msgid "unable to open file '%s'"
+- msgstr ""
+-
+- #: collect2.c:2435
+- #, c-format
+- msgid "unable to stat file '%s'"
+- msgstr ""
+-
+- #: collect2.c:2441
+- #, c-format
+- msgid "unable to mmap file '%s'"
+- msgstr ""
+-
+- #: collect2.c:2592
+- msgid "not found\n"
+- msgstr ""
+-
+- #: collect2.c:2594 collect2.c:2770
+- #, c-format
+- msgid "dynamic dependency %s not found"
+- msgstr ""
+-
+- #: collect2.c:2614
+- #, c-format
+- msgid "bad magic number in file '%s'"
+- msgstr ""
+-
+- #: collect2.c:2636
+- msgid "dynamic dependencies.\n"
+- msgstr ""
+-
+- #: collect2.c:2694
+- msgid "cannot find `ldd'"
+- msgstr ""
+-
+- #: collect2.c:2742
+- #, c-format
+- msgid "execv %s"
+- msgstr ""
+-
+- #: collect2.c:2755
+- msgid ""
+- "\n"
+- "ldd output with constructors/destructors.\n"
+- msgstr ""
+-
+- #: collect2.c:2782
+- #, c-format
+- msgid "unable to open dynamic dependency '%s'"
+- msgstr ""
+-
+- #: collect2.c:2883
+- #, c-format
+- msgid "%s: not a COFF file"
+- msgstr ""
+-
+- #: collect2.c:3030
+- #, c-format
+- msgid "%s: cannot open as COFF file"
+- msgstr ""
+-
+- #: collect2.c:3105
+- #, c-format
+- msgid "Library lib%s not found"
+- msgstr ""
+-
+- #: collect2.c:3229
+- #, c-format
+- msgid "open %s"
+- msgstr ""
+-
+- #: collect2.c:3252
+- msgid "incompatibilities between object file & expected values"
+- msgstr ""
+-
+- #: collect2.c:3325
+- #, c-format
+- msgid ""
+- "\n"
+- "Processing symbol table #%d, offset = 0x%.8lx, kind = %s\n"
+- msgstr ""
+-
+- #: collect2.c:3334
+- msgid "string section missing"
+- msgstr ""
+-
+- #: collect2.c:3337
+- msgid "section pointer missing"
+- msgstr ""
+-
+- #: collect2.c:3385
+- msgid "no symbol table found"
+- msgstr ""
+-
+- #: collect2.c:3398
+- msgid "no cmd_strings found"
+- msgstr ""
+-
+- #: collect2.c:3410
+- msgid ""
+- "\n"
+- "Updating header and load commands.\n"
+- "\n"
+- msgstr ""
+-
+- #: collect2.c:3417
+- #, c-format
+- msgid "load command map, %d cmds, new size %ld.\n"
+- msgstr ""
+-
+- #: collect2.c:3448
+- msgid ""
+- "writing load commands.\n"
+- "\n"
+- msgstr ""
+-
+- #: collect2.c:3468
+- #, c-format
+- msgid "close %s"
+- msgstr ""
+-
+- #: collect2.c:3542
+- msgid "could not convert 0x%l.8x into a region"
+- msgstr ""
+-
+- #: collect2.c:3546
+- #, c-format
+- msgid "%s function, region %d, offset = %ld (0x%.8lx)\n"
+- msgstr ""
+-
+- #: collect2.c:3673
+- msgid "bad magic number"
+- msgstr ""
+-
+- #: collect2.c:3674
+- msgid "bad header version"
+- msgstr ""
+-
+- #: collect2.c:3675
+- msgid "bad raw header version"
+- msgstr ""
+-
+- #: collect2.c:3676
+- msgid "raw header buffer too small"
+- msgstr ""
+-
+- #: collect2.c:3677
+- msgid "old raw header file"
+- msgstr ""
+-
+- #: collect2.c:3678
+- msgid "unsupported version"
+- msgstr ""
+-
+- #: collect2.c:3680
+- #, c-format
+- msgid "unknown {de,en}code_mach_o_hdr return value %d"
+- msgstr ""
+-
+- #: collect2.c:3700
+- #, c-format
+- msgid "fstat %s"
+- msgstr ""
+-
+- #: collect2.c:3737 collect2.c:3785
+- #, c-format
+- msgid "lseek %s 0"
+- msgstr ""
+-
+- #: collect2.c:3741
+- #, c-format
+- msgid "read %s"
+- msgstr ""
+-
+- #: collect2.c:3744
+- #, c-format
+- msgid "read %ld bytes, expected %ld, from %s"
+- msgstr ""
+-
+- #: collect2.c:3765
+- #, c-format
+- msgid "msync %s"
+- msgstr ""
+-
+- #: collect2.c:3772
+- #, c-format
+- msgid "munmap %s"
+- msgstr ""
+-
+- #: collect2.c:3789
+- #, c-format
+- msgid "write %s"
+- msgstr ""
+-
+- #: collect2.c:3792
+- #, c-format
+- msgid "wrote %ld bytes, expected %ld, to %s"
+- msgstr ""
+-
+- #: combine.c:12026
+- #, c-format
+- msgid ""
+- ";; Combiner statistics: %d attempts, %d substitutions (%d requiring new "
+- "space),\n"
+- ";; %d successes.\n"
+- "\n"
+- msgstr ""
+-
+- #: combine.c:12036
+- #, c-format
+- msgid ""
+- "\n"
+- ";; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n"
+- ";; %d successes.\n"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:996
+- msgid "invalid %%Q value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1002 config/alpha/alpha.c:2931
+- msgid "invalid %%C value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1008 config/alpha/alpha.c:2795
+- #: config/rs6000/rs6000.c:2781
+- msgid "invalid %%N value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1014 config/alpha/alpha.c:2866
+- #: config/rs6000/rs6000.c:2745
+- msgid "invalid %%M value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1020 config/alpha/alpha.c:2858
+- #: config/rs6000/rs6000.c:2710
+- msgid "invalid %%m value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1120 config/alpha/alpha.c:2819 config/romp/romp.c:675
+- msgid "invalid %%L value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1125 config/rs6000/rs6000.c:2789
+- msgid "invalid %%O value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1131 config/alpha/alpha.c:2803
+- #: config/rs6000/rs6000.c:2808
+- msgid "invalid %%P value"
+- msgstr ""
+-
+- #: config/a29k/a29k.c:1141
+- msgid "invalid %%V value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:162
+- #, c-format
+- msgid "bad value `%s' for -mtrap-precision switch"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:176
+- #, c-format
+- msgid "bad value `%s' for -mfp-rounding-mode switch"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:191
+- #, c-format
+- msgid "bad value `%s' for -mfp-trap-mode switch"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:240
+- #, c-format
+- msgid "bad value `%s' for -mcpu switch"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:248
+- msgid "fp software completion requires -mtrap-precision=i"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:256
+- msgid "rounding mode not supported for VAX floats"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:261
+- msgid "trap mode not supported for VAX floats"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:290
+- #, c-format
+- msgid "L%d cache latency unknown for %s"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:305
+- #, c-format
+- msgid "bad value `%s' for -mmemory-latency"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2777
+- msgid "invalid %%r value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2788 config/rs6000/rs6000.c:2816
+- msgid "invalid %%R value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2811 config/romp/romp.c:717 config/romp/romp.c:724
+- msgid "invalid %%h value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2901
+- msgid "invalid %%U value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2909 config/alpha/alpha.c:2920 config/romp/romp.c:683
+- #: config/rs6000/rs6000.c:2824
+- msgid "invalid %%s value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2966 config/rs6000/rs6000.c:2598
+- msgid "invalid %%E value"
+- msgstr ""
+-
+- #: config/alpha/alpha.c:2987 config/romp/romp.c:958
+- #: config/rs6000/rs6000.c:3107
+- msgid "invalid %%xn code"
+- msgstr ""
+-
+- #: config/arc/arc.c:103
+- #, c-format
+- msgid "bad value (%s) for -mcpu switch"
+- msgstr ""
+-
+- #: config/arc/arc.c:1649 config/m32r/m32r.c:1868
+- msgid "invalid operand to %R code"
+- msgstr ""
+-
+- #: config/arc/arc.c:1681 config/m32r/m32r.c:1891
+- msgid "invalid operand to %H/%L code"
+- msgstr ""
+-
+- #: config/arc/arc.c:1705 config/m32r/m32r.c:1968
+- msgid "invalid operand to %U code"
+- msgstr ""
+-
+- #: config/arc/arc.c:1716
+- msgid "invalid operand to %V code"
+- msgstr ""
+-
+- #. Unknown flag.
+- #: config/arc/arc.c:1723 config/m32r/m32r.c:2007 config/sparc/sparc.c:5161
+- msgid "invalid operand output code"
+- msgstr ""
+-
+- #: config/arm/arm.c:297
+- #, c-format
+- msgid "switch -mcpu=%s conflicts with -mtune= switch"
+- msgstr ""
+-
+- #: config/arm/arm.c:307 config/rs6000/rs6000.c:287 config/sparc/sparc.c:296
+- #, c-format
+- msgid "bad value (%s) for %s switch"
+- msgstr ""
+-
+- #: config/arm/arm.c:443
+- msgid "target CPU does not support APCS-32"
+- msgstr ""
+-
+- #: config/arm/arm.c:448
+- msgid "target CPU does not support APCS-26"
+- msgstr ""
+-
+- #: config/arm/arm.c:454
+- msgid "target CPU does not support interworking"
+- msgstr ""
+-
+- #: config/arm/arm.c:462
+- msgid "interworking forces APCS-32 to be used"
+- msgstr ""
+-
+- #: config/arm/arm.c:468
+- msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
+- msgstr ""
+-
+- #: config/arm/arm.c:473
+- msgid "-g with -fomit-frame-pointer may not give sensible debugging"
+- msgstr ""
+-
+- #: config/arm/arm.c:479
+- msgid "-fpic and -mapcs-reent are incompatible"
+- msgstr ""
+-
+- #: config/arm/arm.c:482
+- msgid "APCS reentrant code not supported. Ignored"
+- msgstr ""
+-
+- #: config/arm/arm.c:490
+- msgid "Passing floating point arguments in fp regs not yet supported"
+- msgstr ""
+-
+- #: config/arm/arm.c:515
+- #, c-format
+- msgid "Invalid floating point emulation option: -mfpe-%s"
+- msgstr ""
+-
+- #: config/arm/arm.c:538
+- msgid "Structure size boundary can only be set to 8 or 32"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:264
+- #, c-format
+- msgid "Invalid register class letter %c"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:367
+- msgid "ACCUM_HIGH_REGS class in limit_reload_class"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:394
+- msgid "YH_OR_ACCUM_HIGH_REGS found in limit_reload_class"
+- msgstr ""
+-
+- #. Register 'yl' is invalid for QImode, so we should never
+- #. see it.
+- #: config/dsp16xx/dsp16xx.c:403
+- msgid "YL found in limit_reload_class"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1220 config/dsp16xx/dsp16xx.c:1247
+- msgid "Stack size > 32k"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1476
+- msgid "Invalid addressing mode"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1635
+- msgid "Bad register extension code"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1693
+- msgid "Invalid offset in ybase addressing"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1696
+- msgid "Invalid register in ybase addressing"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1726 config/dsp16xx/dsp16xx.c:1962
+- msgid "inline float constants not supported on this host"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:1868
+- msgid "Invalid shift operator in emit_1600_core_shift"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:2147
+- msgid "Invalid mode for gen_tst_reg"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:2218
+- msgid "Invalid mode for integer comparison in gen_compare_reg"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.c:2246
+- msgid "Invalid register for compare"
+- msgstr ""
+-
+- #: config/h8300/h8300.c:2960 config/h8300/h8300.c:2972
+- msgid "Only initialized variables can be placed into the 8-bit area."
+- msgstr ""
+-
+- #: config/i370/i370.c:283
+- msgid "virtual memory exhausted\n"
+- msgstr ""
+-
+- #: config/i386/dgux.c:179
+- #, c-format
+- msgid "Internal gcc abort from %s:%d"
+- msgstr ""
+-
+- #: config/i386/dgux.c:183
+- msgid "The local variable `insn' has the value:"
+- msgstr ""
+-
+- #: config/i386/i386.c:282
+- #, c-format
+- msgid "Register '%c' is unknown"
+- msgstr ""
+-
+- #: config/i386/i386.c:286
+- #, c-format
+- msgid "Register '%c' already specified in allocation order"
+- msgstr ""
+-
+- #: config/i386/i386.c:310
+- #, c-format
+- msgid "bad value (%s) for -march= switch"
+- msgstr ""
+-
+- #: config/i386/i386.c:324
+- #, c-format
+- msgid "-mcpu=%s does not support -march=%s"
+- msgstr ""
+-
+- #: config/i386/i386.c:334 config/mips/mips.c:4266
+- #, c-format
+- msgid "bad value (%s) for -mcpu= switch"
+- msgstr ""
+-
+- #: config/i386/i386.c:344
+- #, c-format
+- msgid "-mregparm=%d is not between 0 and %d"
+- msgstr ""
+-
+- #: config/i386/i386.c:364
+- #, c-format
+- msgid "-malign-loops=%d is not between 0 and %d"
+- msgstr ""
+-
+- #: config/i386/i386.c:378
+- #, c-format
+- msgid "-malign-jumps=%d is not between 0 and %d"
+- msgstr ""
+-
+- #: config/i386/i386.c:388
+- #, c-format
+- msgid "-malign-functions=%d is not between 0 and %d"
+- msgstr ""
+-
+- #: config/i386/i386.c:399
+- #, c-format
+- msgid "-mpreferred_stack_boundary=%d is not between 2 and 31"
+- msgstr ""
+-
+- #: config/i386/i386.c:409
+- #, c-format
+- msgid "-mbranch-cost=%d is not between 0 and 5"
+- msgstr ""
+-
+- #: config/i386/i386.c:1228
+- msgid "Source is not offsettable"
+- msgstr ""
+-
+- #: config/i386/i386.c:1231
+- msgid "Pushing non-word aligned size"
+- msgstr ""
+-
+- #. We can't handle floating point constants;
+- #. PRINT_OPERAND must handle them.
+- #: config/i386/i386.c:2938 config/pdp11/pdp11.c:1474 dwarf2out.c:2821
+- #: final.c:3625
+- msgid "floating constant misused"
+- msgstr ""
+-
+- #: config/i386/i386.c:2981
+- msgid "invalid UNSPEC as operand"
+- msgstr ""
+-
+- #: config/i386/i386.c:2987 config/pdp11/pdp11.c:1521 dwarf2out.c:2870
+- #: final.c:3672
+- msgid "invalid expression as operand"
+- msgstr ""
+-
+- #: config/i386/i386.c:3170 config/i386/i386.c:3207 config/sparc/sparc.c:5111
+- msgid "Invalid %%C operand"
+- msgstr ""
+-
+- #: config/i386/winnt.c:298
+- #, c-format
+- msgid "`%s' declared as both exported to and imported from a DLL."
+- msgstr ""
+-
+- #: config/i386/winnt.c:326
+- #, c-format
+- msgid "initialized variable `%s' is marked dllimport"
+- msgstr ""
+-
+- #: config/i386/winnt.c:335
+- #, c-format
+- msgid "static variable `%s' is marked dllimport"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:79
+- #, c-format
+- msgid "bad value (%s) for -mmodel switch"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:88
+- #, c-format
+- msgid "bad value (%s) for -msdata switch"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:374
+- msgid "const objects cannot go in .sdata/.sbss"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:1838
+- #, c-format
+- msgid "invalid operand to %s code"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:1845
+- #, c-format
+- msgid "invalid operand to %p code"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:1953
+- msgid "invalid operand to %T/%B code"
+- msgstr ""
+-
+- #: config/m32r/m32r.c:1976
+- msgid "invalid operand to %N code"
+- msgstr ""
+-
+- #: config/m68k/m68k.c:100
+- #, c-format
+- msgid "-malign-loops=%d is not between 1 and %d"
+- msgstr ""
+-
+- #: config/m68k/m68k.c:111
+- #, c-format
+- msgid "-malign-jumps=%d is not between 1 and %d"
+- msgstr ""
+-
+- #: config/m68k/m68k.c:122
+- #, c-format
+- msgid "-malign-functions=%d is not between 1 and %d"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:866
+- #, c-format
+- msgid "Internal gcc monitor: short-branch(%x)"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2264
+- msgid "Internal gcc error: Can't express symbolic location"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2545
+- #, c-format
+- msgid "argument #%d is a structure"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2754
+- msgid "%R not followed by %B/C/D/E"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2822
+- #, c-format
+- msgid "invalid %x/X value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2827
+- msgid "invalid %H value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2833
+- msgid "invalid %h value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2839
+- msgid "invalid %Q value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2845
+- msgid "invalid %q value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2851
+- #, c-format
+- msgid "invalid %o value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2858
+- #, c-format
+- msgid "invalid %p value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2871 config/m88k/m88k.c:2876
+- #, c-format
+- msgid "invalid %s/S value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2887
+- msgid "invalid %P operand"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2918
+- msgid "invalid %B value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2935
+- msgid "invalid %C value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2948
+- msgid "invalid %D value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2956
+- #, c-format
+- msgid "invalid %E value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2961
+- #, c-format
+- msgid "`%d' operand isn't a register"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2972
+- msgid "invalid %r value"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2979
+- msgid "operand is r0"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:2993
+- msgid "operand is const_double"
+- msgstr ""
+-
+- #: config/m88k/m88k.c:3012
+- msgid "invalid code"
+- msgstr ""
+-
+- #: config/mips/mips.c:4067
+- #, c-format
+- msgid "-mips%d not supported"
+- msgstr ""
+-
+- #: config/mips/mips.c:4074
+- #, c-format
+- msgid "bad value (%s) for -mips switch"
+- msgstr ""
+-
+- #: config/mips/mips.c:4093
+- #, c-format
+- msgid "bad value (%s) for -mabi= switch"
+- msgstr ""
+-
+- #: config/mips/mips.c:4123
+- #, c-format
+- msgid "-mabi=%s does not support -mips%d"
+- msgstr ""
+-
+- #: config/mips/mips.c:4140
+- msgid "The -mabi=32 support does not work yet."
+- msgstr ""
+-
+- #: config/mips/mips.c:4144
+- msgid "This target does not support the -mabi switch."
+- msgstr ""
+-
+- #: config/mips/mips.c:4279
+- #, c-format
+- msgid "-mcpu=%s does not support -mips%d"
+- msgstr ""
+-
+- #: config/mips/mips.c:4285
+- msgid "Only MIPS-III or MIPS-IV CPUs can support 64 bit fp registers"
+- msgstr ""
+-
+- #: config/mips/mips.c:4288
+- msgid "Only MIPS-III or MIPS-IV CPUs can support 64 bit gp registers"
+- msgstr ""
+-
+- #: config/mips/mips.c:4307
+- msgid "-G is incompatible with PIC code which is the default"
+- msgstr ""
+-
+- #: config/mips/mips.c:4323
+- msgid "-membedded-pic and -mabicalls are incompatible"
+- msgstr ""
+-
+- #: config/mips/mips.c:4326
+- msgid "-G and -membedded-pic are incompatible"
+- msgstr ""
+-
+- #: config/mips/mips.c:4378
+- #, c-format
+- msgid "Invalid option `entry%s'"
+- msgstr ""
+-
+- #: config/mips/mips.c:4381
+- msgid "-mentry is only meaningful with -mips-16"
+- msgstr ""
+-
+- #: config/mips/mips.c:4696
+- msgid "internal error: %%) found without a %%( in assembler pattern"
+- msgstr ""
+-
+- #: config/mips/mips.c:4710
+- msgid "internal error: %%] found without a %%[ in assembler pattern"
+- msgstr ""
+-
+- #: config/mips/mips.c:4723
+- msgid "internal error: %%> found without a %%< in assembler pattern"
+- msgstr ""
+-
+- #: config/mips/mips.c:4736
+- msgid "internal error: %%} found without a %%{ in assembler pattern"
+- msgstr ""
+-
+- #: config/mips/mips.c:4743
+- #, c-format
+- msgid "PRINT_OPERAND: Unknown punctuation '%c'"
+- msgstr ""
+-
+- #: config/mips/mips.c:4752
+- msgid "PRINT_OPERAND null pointer"
+- msgstr ""
+-
+- #: config/mips/mips.c:4862
+- #, c-format
+- msgid "PRINT_OPERAND: letter %c was found & insn was not CONST_INT"
+- msgstr ""
+-
+- #: config/mips/mips.c:4906
+- msgid "PRINT_OPERAND_ADDRESS, null pointer"
+- msgstr ""
+-
+- #: config/mips/mips.c:5161
+- msgid ""
+- "MIPS ECOFF format does not allow changing filenames within functions with "
+- "#line"
+- msgstr ""
+-
+- #: config/mips/mips.c:5724
+- #, c-format
+- msgid "gp_offset (%ld) or end_offset (%ld) is less than zero."
+- msgstr ""
+-
+- #: config/mips/mips.c:5941
+- #, c-format
+- msgid "fp_offset (%ld) or end_offset (%ld) is less than zero."
+- msgstr ""
+-
+- #: config/mips/mips.c:7910
+- #, c-format
+- msgid "can not handle inconsistent calls to `%s'"
+- msgstr ""
+-
+- #: config/nextstep.c:65
+- msgid "optimization turned on"
+- msgstr ""
+-
+- #: config/nextstep.c:71
+- msgid "optimization turned off"
+- msgstr ""
+-
+- #: config/nextstep.c:86
+- msgid "optimization level restored"
+- msgstr ""
+-
+- #: config/pa/pa.c:134
+- #, c-format
+- msgid ""
+- "Unknown -mschedule= option (%s).\n"
+- "Valid options are 700, 7100, 7100LC, 7200, and 8000\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:159
+- #, c-format
+- msgid ""
+- "Unknown -march= option (%s).\n"
+- "Valid options are 1.0, 1.1, and 2.0\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:164
+- msgid "PIC code generation is not supported in the portable runtime model\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:169
+- msgid "PIC code generation is not compatible with fast indirect calls\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:174
+- msgid "PIC code generation is not compatible with profiling\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:179
+- msgid "Out of line entry/exit sequences are not compatible\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:180
+- msgid "with PIC or profiling\n"
+- msgstr ""
+-
+- #: config/pa/pa.c:185
+- msgid "-g is only supported when using GAS on this processor,"
+- msgstr ""
+-
+- #: config/pa/pa.c:186
+- msgid "-g option disabled."
+- msgstr ""
+-
+- #: config/romp/romp.c:667
+- msgid "invalid %%B value"
+- msgstr ""
+-
+- #: config/romp/romp.c:694 config/rs6000/rs6000.c:2834
+- msgid "invalid %%S value"
+- msgstr ""
+-
+- #: config/romp/romp.c:703 config/romp/romp.c:710 config/rs6000/rs6000.c:2548
+- msgid "invalid %%b value"
+- msgstr ""
+-
+- #: config/romp/romp.c:731 config/romp/romp.c:738
+- msgid "invalid %%H value"
+- msgstr ""
+-
+- #: config/romp/romp.c:750 config/romp/romp.c:761
+- msgid "invalid %%z value"
+- msgstr ""
+-
+- #: config/romp/romp.c:769 config/romp/romp.c:777
+- msgid "invalid %%Z value"
+- msgstr ""
+-
+- #: config/romp/romp.c:784 config/romp/romp.c:793 config/romp/romp.c:800
+- #: config/rs6000/rs6000.c:2680
+- msgid "invalid %%k value"
+- msgstr ""
+-
+- #: config/romp/romp.c:885 config/romp/romp.c:928
+- msgid "invalid %%j value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:317
+- msgid "-mmultiple is not supported on little endian systems"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:324
+- msgid "-mstring is not supported on little endian systems"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:330
+- #, c-format
+- msgid "-f%s ignored for AIX (all code is position independent)"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:345
+- #, c-format
+- msgid "Unknown -mdebug-%s switch"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2427
+- msgid "GOT/TOC register marker not removed:"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2607
+- msgid "invalid %%f value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2616
+- msgid "invalid %%F value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2625
+- msgid "invalid %%G value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2660
+- msgid "invalid %%j code"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2670
+- msgid "invalid %%J code"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2798
+- msgid "invalid %%p value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2860
+- msgid "%%S computed all 1's mask"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2886
+- msgid "%%S computed all 0's mask"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2896
+- msgid "invalid %%t value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2912
+- msgid "invalid %%T value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2927
+- msgid "invalid %%u value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:2935
+- msgid "invalid %%v value"
+- msgstr ""
+-
+- #: config/rs6000/rs6000.c:5729
+- msgid "bad address"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:227
+- #, c-format
+- msgid "%s is not supported by this configuration"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:235
+- #, c-format
+- msgid "-mptr%d not allowed on -m%d"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:259
+- #, c-format
+- msgid "bad value (%s) for -mcmodel= switch"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:264
+- msgid "-mcmodel= is not supported on 32 bit systems"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:326
+- #, c-format
+- msgid "-malign-loops=%s is not between 4 and 128 or is not a power of two"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:341
+- #, c-format
+- msgid "-malign-jumps=%s is not between 4 and 128 or is not a power of two"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:356
+- #, c-format
+- msgid "-malign-functions=%s is not between 4 and 128 or is not a power of two"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:372
+- msgid "profiling does not support code models other than medlow"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5000 config/sparc/sparc.c:5006
+- msgid "Invalid %%Y operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5076
+- msgid "Invalid %%A operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5086
+- msgid "Invalid %%B operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5110
+- msgid "Invalid %%c operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5132
+- msgid "Invalid %%d operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5133
+- msgid "Invalid %%D operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5151
+- msgid "Invalid %%f operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5202
+- msgid "long long constant not a valid immediate operand"
+- msgstr ""
+-
+- #: config/sparc/sparc.c:5205
+- msgid "floating point constant not a valid immediate operand"
+- msgstr ""
+-
+- #: config/v850/v850.c:138
+- #, c-format
+- msgid "%s=%s is not numeric."
+- msgstr ""
+-
+- #: config/v850/v850.c:145
+- #, c-format
+- msgid "%s=%s is too large."
+- msgstr ""
+-
+- #: config/v850/v850.c:301
+- msgid "const_double_split got a bad insn:"
+- msgstr ""
+-
+- #: config/v850/v850.c:792
+- msgid "output_move_single:"
+- msgstr ""
+-
+- #: config/v850/v850.c:2066
+- msgid "a data area attribute cannot be specified for local variables"
+- msgstr ""
+-
+- #: config/v850/v850.c:2074
+- #, c-format
+- msgid "data area of '%s' conflicts with previous declaration"
+- msgstr ""
+-
+- #: config/v850/v850.c:2278
+- #, c-format
+- msgid "Bogus JR construction: %d\n"
+- msgstr ""
+-
+- #: config/v850/v850.c:2299 config/v850/v850.c:2501
+- #, c-format
+- msgid "Bad amount of stack space removal: %d"
+- msgstr ""
+-
+- #: config/v850/v850.c:2477
+- #, c-format
+- msgid "Bogus JARL construction: %d\n"
+- msgstr ""
+-
+- #: config/v850/v850.c:2722
+- msgid "#pragma GHS endXXXX found without previous startXXX"
+- msgstr ""
+-
+- #: config/v850/v850.c:2724
+- msgid "#pragma GHS endXXX does not match previous startXXX"
+- msgstr ""
+-
+- #: config/v850/v850.c:2748
+- msgid "Cannot set interrupt attribute: no current function"
+- msgstr ""
+-
+- #: config/v850/v850.c:2756
+- msgid "Cannot set interrupt attribute: no such identifier"
+- msgstr ""
+-
+- #: config/v850/v850.c:2789
+- msgid "Incomplete #pragma ghs"
+- msgstr ""
+-
+- #: config/v850/v850.c:2796
+- msgid "Nothing follows #pragma ghs"
+- msgstr ""
+-
+- #: config/v850/v850.c:2888
+- #, c-format
+- msgid "Unrecognised GHS pragma: '%s'\n"
+- msgstr ""
+-
+- #: config/v850/v850.c:2894
+- #, c-format
+- msgid "Extra text after valid #pragma: '%s'"
+- msgstr ""
+-
+- #: config/v850/v850.c:2919
+- #, c-format
+- msgid "Unrecognised section name '%s' in GHS section pragma"
+- msgstr ""
+-
+- #: config/v850/v850.c:2930
+- msgid "Missing '=' in GHS section pragma"
+- msgstr ""
+-
+- #: config/v850/v850.c:2951
+- #, c-format
+- msgid "Malformed GHS section pragma: found '%s' instead of a comma"
+- msgstr ""
+-
+- #: config/v850/v850.c:3028
+- msgid "Missing trailing \" in #pragma ghs"
+- msgstr ""
+-
+- #: convert.c:65
+- msgid "cannot convert to a pointer type"
+- msgstr ""
+-
+- #: convert.c:98
+- msgid "pointer value used where a floating point value was expected"
+- msgstr ""
+-
+- #: convert.c:102
+- msgid "aggregate value used where a float was expected"
+- msgstr ""
+-
+- #: convert.c:128
+- msgid "conversion to incomplete type"
+- msgstr ""
+-
+- #: convert.c:385
+- msgid "aggregate value used where an integer was expected"
+- msgstr ""
+-
+- #: convert.c:437
+- msgid "pointer value used where a complex was expected"
+- msgstr ""
+-
+- #: convert.c:441
+- msgid "aggregate value used where a complex was expected"
+- msgstr ""
+-
+- #: cp/call.c:493
+- msgid "unable to call pointer to member function here"
+- msgstr ""
+-
+- #: cp/call.c:605
+- msgid "destructors take no parameters"
+- msgstr ""
+-
+- #: cp/class.c:450
+- msgid ""
+- "object size exceeds built-in limit for virtual function table implementation"
+- msgstr ""
+-
+- #: cp/class.c:452
+- msgid ""
+- "object size exceeds normal limit for virtual function table implementation, "
+- "recompile all source and use -fhuge-objects"
+- msgstr ""
+-
+- #: cp/class.c:899
+- msgid "internal inconsistency: binfo offset error for rtti"
+- msgstr ""
+-
+- #: cp/class.c:1435
+- #, c-format
+- msgid "conflicting access specifications for field `%s', ignored"
+- msgstr ""
+-
+- #. Only give error if the two offsets are different
+- #: cp/class.c:2253
+- msgid "every virtual function must have a unique final overrider"
+- msgstr ""
+-
+- #: cp/class.c:3138
+- msgid "anonymous class type not used to declare any objects"
+- msgstr ""
+-
+- #: cp/class.c:3477
+- #, c-format
+- msgid "bit-fields larger than %d bits"
+- msgstr ""
+-
+- #: cp/class.c:4232
+- msgid "trying to finish struct, but kicked out due to previous parse errors."
+- msgstr ""
+-
+- #: cp/class.c:4662
+- #, c-format
+- msgid "language string `\"%s\"' not recognized"
+- msgstr ""
+-
+- #: cp/class.c:4951 cp/class.c:5139 cp/class.c:5146
+- msgid "not enough type information"
+- msgstr ""
+-
+- #: cp/class.c:5123
+- msgid "invalid operation on uninstantiated type"
+- msgstr ""
+-
+- #: cp/decl.c:1413
+- msgid "internal compiler error: debugging info corrupted"
+- msgstr ""
+-
+- #: cp/decl.c:3888 cp/decl.c:13734
+- msgid "parse errors have confused me too much"
+- msgstr ""
+-
+- #: cp/decl.c:4175
+- #, c-format
+- msgid "variable `%s' shadows local"
+- msgstr ""
+-
+- #: cp/decl.c:4787
+- #, c-format
+- msgid "label `%s' referenced outside of any function"
+- msgstr ""
+-
+- #: cp/decl.c:5040
+- msgid "where case label appears here"
+- msgstr ""
+-
+- #: cp/decl.c:5043
+- msgid "(enclose actions of previous case statements requiring"
+- msgstr ""
+-
+- #: cp/decl.c:5044
+- msgid "destructors in their own binding contours.)"
+- msgstr ""
+-
+- #: cp/decl.c:5065
+- msgid "jump to case label"
+- msgstr ""
+-
+- #: cp/decl.c:7044
+- msgid "an anonymous union cannot have function members"
+- msgstr ""
+-
+- #: cp/decl.c:7094
+- msgid "multiple types in one declaration"
+- msgstr ""
+-
+- #: cp/decl.c:7099
+- msgid "declaration does not declare anything"
+- msgstr ""
+-
+- #: cp/decl.c:7746
+- msgid "assignment (not initialization) in declaration"
+- msgstr ""
+-
+- #: cp/decl.c:8794
+- msgid "cannot declare `main' to be a template"
+- msgstr ""
+-
+- #: cp/decl.c:8796
+- msgid "cannot declare `main' to be inline"
+- msgstr ""
+-
+- #: cp/decl.c:8798
+- msgid "cannot declare `main' to be static"
+- msgstr ""
+-
+- #: cp/decl.c:9371
+- msgid "destructors must be member functions"
+- msgstr ""
+-
+- #: cp/decl.c:9700
+- msgid "`bool' is now a keyword"
+- msgstr ""
+-
+- #: cp/decl.c:9731
+- msgid "ANSI C++ does not support `long long'"
+- msgstr ""
+-
+- #: cp/decl.c:9844
+- msgid "return type specification for destructor invalid"
+- msgstr ""
+-
+- #: cp/decl.c:9849
+- msgid "return type specification for constructor invalid"
+- msgstr ""
+-
+- #: cp/decl.c:9889
+- #, c-format
+- msgid "short, signed or unsigned invalid for `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:9894
+- #, c-format
+- msgid "long and short specified together for `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:9905
+- #, c-format
+- msgid "signed and unsigned given together for `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:10037
+- msgid "only declarations of constructors can be `explicit'"
+- msgstr ""
+-
+- #: cp/decl.c:10043
+- #, c-format
+- msgid "non-member `%s' cannot be declared `mutable'"
+- msgstr ""
+-
+- #: cp/decl.c:10048
+- #, c-format
+- msgid "non-object member `%s' cannot be declared `mutable'"
+- msgstr ""
+-
+- #: cp/decl.c:10060
+- msgid "storage class specifiers invalid in parameter declarations"
+- msgstr ""
+-
+- #: cp/decl.c:10064
+- msgid "typedef declaration invalid in parameter declaration"
+- msgstr ""
+-
+- #: cp/decl.c:10075
+- msgid "virtual outside class declaration"
+- msgstr ""
+-
+- #: cp/decl.c:10080
+- msgid "only members can be declared mutable"
+- msgstr ""
+-
+- #: cp/decl.c:10098
+- #, c-format
+- msgid "type qualifiers specified for signature member function `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:10103
+- #, c-format
+- msgid "`inline' specified for signature member function `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:10109 cp/friend.c:248
+- msgid "`friend' declaration in signature definition"
+- msgstr ""
+-
+- #: cp/decl.c:10114
+- #, c-format
+- msgid "`virtual' specified for signature member function `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:10157
+- #, c-format
+- msgid "storage class specified for %s `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:10202
+- msgid "storage class specifiers invalid in friend function declarations"
+- msgstr ""
+-
+- #: cp/decl.c:10445
+- msgid "overflow in array dimension"
+- msgstr ""
+-
+- #: cp/decl.c:10540
+- msgid "destructor cannot be static member function"
+- msgstr ""
+-
+- #: cp/decl.c:10562
+- msgid "constructor cannot be static member function"
+- msgstr ""
+-
+- #: cp/decl.c:10565
+- msgid "constructors cannot be declared virtual"
+- msgstr ""
+-
+- #: cp/decl.c:10580
+- msgid "return value type specifier for constructor ignored"
+- msgstr ""
+-
+- #: cp/decl.c:10586
+- msgid "constructor not allowed in signature"
+- msgstr ""
+-
+- #: cp/decl.c:10605
+- #, c-format
+- msgid "can't initialize friend function `%s'"
+- msgstr ""
+-
+- #. Cannot be both friend and virtual.
+- #: cp/decl.c:10609
+- msgid "virtual functions cannot be friends"
+- msgstr ""
+-
+- #: cp/decl.c:10614
+- msgid "friend declaration not in class definition"
+- msgstr ""
+-
+- #: cp/decl.c:10673
+- #, c-format
+- msgid "cannot declare %s to references"
+- msgstr ""
+-
+- #: cp/decl.c:10707
+- msgid "signature reference"
+- msgstr ""
+-
+- #: cp/decl.c:10723
+- msgid "invalid type: `void &'"
+- msgstr ""
+-
+- #: cp/decl.c:10774
+- msgid "discarding `const' applied to a reference"
+- msgstr ""
+-
+- #: cp/decl.c:10776
+- msgid "discarding `volatile' applied to a reference"
+- msgstr ""
+-
+- #: cp/decl.c:10979
+- msgid "only constructors can be declared `explicit'"
+- msgstr ""
+-
+- #: cp/decl.c:10987
+- #, c-format
+- msgid "const `%s' cannot be declared `mutable'"
+- msgstr ""
+-
+- #: cp/decl.c:10992
+- #, c-format
+- msgid "static `%s' cannot be declared `mutable'"
+- msgstr ""
+-
+- #: cp/decl.c:11115
+- #, c-format
+- msgid "non-object member `%s' cannot be declared mutable"
+- msgstr ""
+-
+- #: cp/decl.c:11121
+- msgid "typedef declaration includes an initializer"
+- msgstr ""
+-
+- #: cp/decl.c:11148
+- msgid "type qualifiers specified for signature type"
+- msgstr ""
+-
+- #: cp/decl.c:11173
+- #, c-format
+- msgid "trying to make class `%s' a friend of global scope"
+- msgstr ""
+-
+- #: cp/decl.c:11209
+- msgid "unnamed variable or field declared void"
+- msgstr ""
+-
+- #: cp/decl.c:11218
+- msgid "variable or field declared void"
+- msgstr ""
+-
+- #: cp/decl.c:11228
+- msgid "cannot use `::' in parameter declaration"
+- msgstr ""
+-
+- #: cp/decl.c:11246
+- #, c-format
+- msgid "declaration of `%s' as void"
+- msgstr ""
+-
+- #: cp/decl.c:11264
+- msgid "parameter of signature member function declared `inline'"
+- msgstr ""
+-
+- #: cp/decl.c:11266
+- msgid "parameter of signature member function declared `auto'"
+- msgstr ""
+-
+- #: cp/decl.c:11268
+- msgid "parameter of signature member function declared `register'"
+- msgstr ""
+-
+- #: cp/decl.c:11435
+- #, c-format
+- msgid "`%s' is neither function nor method; cannot be declared friend"
+- msgstr ""
+-
+- #: cp/decl.c:11446
+- msgid "member functions are implicitly friends of their class"
+- msgstr ""
+-
+- #: cp/decl.c:11560
+- #, c-format
+- msgid "storage class `auto' invalid for function `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:11562
+- #, c-format
+- msgid "storage class `register' invalid for function `%s'"
+- msgstr ""
+-
+- #: cp/decl.c:11573
+- #, c-format
+- msgid ""
+- "storage class `static' invalid for function `%s' declared out of global scope"
+- msgstr ""
+-
+- #: cp/decl.c:11575
+- #, c-format
+- msgid ""
+- "storage class `inline' invalid for function `%s' declared out of global scope"
+- msgstr ""
+-
+- #: cp/decl.c:11582
+- #, c-format
+- msgid "virtual non-class function `%s'"
+- msgstr ""
+-
+- #. FIXME need arm citation
+- #: cp/decl.c:11617
+- msgid "cannot declare static function inside another function"
+- msgstr ""
+-
+- #: cp/decl.c:11665
+- #, c-format
+- msgid "`%s' cannot be declared mutable"
+- msgstr ""
+-
+- #: cp/decl.c:11921
+- msgid ""
+- "invalid integer constant in parameter list, did you forget to give parameter "
+- "name?"
+- msgstr ""
+-
+- #: cp/decl.c:11948
+- msgid "parameter invalidly declared method type"
+- msgstr ""
+-
+- #: cp/decl.c:11958
+- msgid "parameter invalidly declared offset type"
+- msgstr ""
+-
+- #: cp/decl.c:12004
+- msgid "`void' in parameter list must be entire list"
+- msgstr ""
+-
+- #: cp/decl.c:12336
+- msgid "void is not a valid type conversion operator"
+- msgstr ""
+-
+- #: cp/decl.c:12353
+- #, c-format
+- msgid "conversion to %s%s will never use a type conversion operator"
+- msgstr ""
+-
+- #. 13.4.0.3
+- #: cp/decl.c:12381
+- msgid "ANSI C++ prohibits overloading operator ?:"
+- msgstr ""
+-
+- #: cp/decl.c:13392
+- msgid "return type for `main' changed to `int'"
+- msgstr ""
+-
+- #. Give this error as many times as there are occurrences,
+- #. so that users can use Emacs compilation buffers to find
+- #. and fix all such places.
+- #: cp/decl.c:13886
+- msgid "ANSI C++ does not permit named return values"
+- msgstr ""
+-
+- #: cp/decl.c:13902
+- msgid "can't redefine default return value for constructors"
+- msgstr ""
+-
+- #: cp/decl.c:14837 cp/init.c:1782 cp/typeck.c:3129 cp/typeck.c:3232
+- msgid "at this point in file"
+- msgstr ""
+-
+- #: cp/decl2.c:573
+- msgid ""
+- "-fhandle-exceptions has been renamed to -fexceptions (and is now on by "
+- "default)"
+- msgstr ""
+-
+- #: cp/decl2.c:592
+- #, c-format
+- msgid "-f%s is no longer supported"
+- msgstr ""
+-
+- #: cp/decl2.c:990
+- msgid "name missing for member function"
+- msgstr ""
+-
+- #: cp/decl2.c:1060
+- msgid "`__alignof__' applied to a bit-field"
+- msgstr ""
+-
+- #. Something has gone very wrong. Assume we are mistakenly reducing
+- #. an expression instead of a declaration.
+- #: cp/decl2.c:1112
+- msgid "parser may be lost: is there a '{' missing somewhere?"
+- msgstr ""
+-
+- #: cp/decl2.c:1143 cp/decl2.c:1157
+- msgid "ambiguous conversion for array subscript"
+- msgstr ""
+-
+- #: cp/decl2.c:1207
+- msgid "anachronistic use of array size in vector delete"
+- msgstr ""
+-
+- #: cp/decl2.c:1217
+- msgid "cannot delete a function"
+- msgstr ""
+-
+- #: cp/decl2.c:1537
+- msgid "initializer invalid for static member with constructor"
+- msgstr ""
+-
+- #: cp/decl2.c:1539
+- msgid "(you really want to initialize it separately)"
+- msgstr ""
+-
+- #: cp/decl2.c:1648 cp/decl2.c:1817
+- msgid "field declaration not allowed in signature"
+- msgstr ""
+-
+- #: cp/decl2.c:1667
+- msgid "function declarations cannot have initializers in signature"
+- msgstr ""
+-
+- #: cp/decl2.c:1713
+- msgid "field initializer is not constant"
+- msgstr ""
+-
+- #: cp/decl2.c:2245
+- msgid "global anonymous unions must be declared static"
+- msgstr ""
+-
+- #: cp/decl2.c:2254
+- msgid "anonymous union with no members"
+- msgstr ""
+-
+- #: cp/decl2.c:2319
+- msgid "`operator new' must return type `void *'"
+- msgstr ""
+-
+- #: cp/decl2.c:2324
+- msgid "`operator new' takes type `size_t' parameter"
+- msgstr ""
+-
+- #: cp/decl2.c:2326
+- msgid "`operator new' takes type `size_t' as first parameter"
+- msgstr ""
+-
+- #: cp/decl2.c:2351
+- msgid "`operator delete' must return type `void'"
+- msgstr ""
+-
+- #: cp/decl2.c:2355
+- msgid "`operator delete' takes type `void *' as first parameter"
+- msgstr ""
+-
+- #: cp/decl2.c:2366
+- msgid "second argument to `operator delete' must be of type `size_t'"
+- msgstr ""
+-
+- #: cp/decl2.c:2371
+- msgid "too many arguments in declaration of `operator delete'"
+- msgstr ""
+-
+- #: cp/decl2.c:2373
+- msgid "`...' invalid in specification of `operator delete'"
+- msgstr ""
+-
+- #. Overflow occurred. That means there are at least 4 billion
+- #. initialization functions.
+- #: cp/decl2.c:3031
+- msgid "too many initialization functions required"
+- msgstr ""
+-
+- #: cp/decl2.c:3797 cp/typeck.c:5770
+- msgid "cast specifies signature type"
+- msgstr ""
+-
+- #: cp/decl2.c:3818
+- msgid "use of old-style cast"
+- msgstr ""
+-
+- #: cp/error.c:339
+- #, c-format
+- msgid "`%s' not supported by dump_type"
+- msgstr ""
+-
+- #: cp/error.c:530
+- #, c-format
+- msgid "`%s' not supported by dump_type_prefix"
+- msgstr ""
+-
+- #: cp/error.c:613
+- #, c-format
+- msgid "`%s' not supported by dump_type_suffix"
+- msgstr ""
+-
+- #: cp/error.c:947
+- #, c-format
+- msgid "`%s' not supported by dump_decl"
+- msgstr ""
+-
+- #: cp/error.c:1794
+- #, c-format
+- msgid "`%s' not supported by dump_expr"
+- msgstr ""
+-
+- #: cp/except.c:627
+- msgid "invalid catch parameter"
+- msgstr ""
+-
+- #: cp/except.c:1046
+- msgid " in thrown expression"
+- msgstr ""
+-
+- #: cp/expr.c:386
+- msgid "pointers are not permitted as case values"
+- msgstr ""
+-
+- #: cp/expr.c:389
+- msgid "ANSI C++ forbids range expressions in switch statement"
+- msgstr ""
+-
+- #: cp/expr.c:431
+- msgid "duplicate (or overlapping) case value"
+- msgstr ""
+-
+- #: cp/expr.c:449
+- msgid "empty range specified"
+- msgstr ""
+-
+- #: cp/expr.c:455
+- msgid "`default' label within scope of cleanup or variable array"
+- msgstr ""
+-
+- #: cp/friend.c:208
+- #, c-format
+- msgid "method `%s::%s' is already a friend of class"
+- msgstr ""
+-
+- #: cp/friend.c:212
+- #, c-format
+- msgid "function `%s' is already a friend of class `%s'"
+- msgstr ""
+-
+- #: cp/friend.c:277
+- #, c-format
+- msgid "class `%s' is implicitly friends with itself"
+- msgstr ""
+-
+- #: cp/friend.c:431
+- msgid " declares a non-template function"
+- msgstr ""
+-
+- #: cp/friend.c:434
+- msgid " (if this is not what you intended, make sure"
+- msgstr ""
+-
+- #: cp/friend.c:435
+- msgid " the function template has already been declared,"
+- msgstr ""
+-
+- #: cp/friend.c:436
+- msgid " and add <> after the function name here)"
+- msgstr ""
+-
+- #: cp/friend.c:437
+- msgid " -Wno-non-template-friend disables this warning."
+- msgstr ""
+-
+- #: cp/init.c:208
+- msgid "initializer list treated as compound expression"
+- msgstr ""
+-
+- #: cp/init.c:301
+- msgid " will be re-ordered to match declaration order"
+- msgstr ""
+-
+- #: cp/init.c:456
+- msgid " will be re-ordered to match inheritance order"
+- msgstr ""
+-
+- #: cp/init.c:942
+- msgid "base class initializer specified, but no base class to initialize"
+- msgstr ""
+-
+- #: cp/init.c:948
+- msgid "initializer for unnamed base class ambiguous"
+- msgstr ""
+-
+- #: cp/init.c:975
+- msgid "no base class to initialize"
+- msgstr ""
+-
+- #: cp/init.c:1006
+- msgid " will be re-ordered to precede member initializations"
+- msgstr ""
+-
+- #. Handle bad initializers like:
+- #. class COMPLEX {
+- #. public:
+- #. double re, im;
+- #. COMPLEX(double r = 0.0, double i = 0.0) {re = r; im = i;};
+- #. ~COMPLEX() {};
+- #. };
+- #.
+- #. int main(int argc, char **argv) {
+- #. COMPLEX zees(1.0, 0.0)[10];
+- #. }
+- #.
+- #: cp/init.c:1114
+- msgid "bad array initializer"
+- msgstr ""
+-
+- #: cp/init.c:1739
+- msgid "object missing in use of pointer-to-member construct"
+- msgstr ""
+-
+- #: cp/init.c:1976
+- msgid "new of array type fails to specify size"
+- msgstr ""
+-
+- #: cp/init.c:1987
+- msgid "size in array new must have integral type"
+- msgstr ""
+-
+- #: cp/init.c:1993
+- msgid "zero size array reserves no space"
+- msgstr ""
+-
+- #: cp/init.c:2068
+- msgid "new cannot be applied to a reference type"
+- msgstr ""
+-
+- #: cp/init.c:2074
+- msgid "new cannot be applied to a function type"
+- msgstr ""
+-
+- #: cp/init.c:2126
+- msgid "call to Java constructor, while `jclass' undefined"
+- msgstr ""
+-
+- #: cp/init.c:2201
+- msgid "invalid type `void' for new"
+- msgstr ""
+-
+- #: cp/init.c:2257
+- msgid "constructors take parameter lists"
+- msgstr ""
+-
+- #: cp/init.c:2270
+- #, c-format
+- msgid "call to Java constructor, while `%s' undefined"
+- msgstr ""
+-
+- #: cp/init.c:2385 cp/typeck2.c:626 cp/typeck2.c:1470
+- msgid "initializer list being treated as compound expression"
+- msgstr ""
+-
+- #: cp/init.c:2388
+- msgid "initializer list appears where operand should be used"
+- msgstr ""
+-
+- #: cp/init.c:2859
+- msgid "initialization of array from dissimilar array type"
+- msgstr ""
+-
+- #: cp/init.c:2873
+- msgid "initializer ends prematurely"
+- msgstr ""
+-
+- #: cp/init.c:2923
+- msgid "cannot initialize multi-dimensional array with initializer"
+- msgstr ""
+-
+- #: cp/init.c:3063
+- msgid "unknown array size in delete"
+- msgstr ""
+-
+- #: cp/init.c:3315
+- msgid "type to vector delete is neither pointer or array type"
+- msgstr ""
+-
+- #: cp/lex.c:186
+- msgid "type name expected before `*'"
+- msgstr ""
+-
+- #: cp/lex.c:208
+- msgid "cannot declare references to references"
+- msgstr ""
+-
+- #: cp/lex.c:213
+- msgid "cannot declare pointers to references"
+- msgstr ""
+-
+- #: cp/lex.c:217
+- msgid "type name expected before `&'"
+- msgstr ""
+-
+- #: cp/lex.c:1260 cp/lex.c:1830
+- msgid "parse error at end of saved function text"
+- msgstr ""
+-
+- #: cp/lex.c:1301
+- msgid "end of file encountered inside string constant"
+- msgstr ""
+-
+- #: cp/lex.c:1303
+- msgid "end of file encountered inside character constant"
+- msgstr ""
+-
+- #: cp/lex.c:1320 cp/lex.c:4179
+- msgid "ANSI C++ forbids newline in string constant"
+- msgstr ""
+-
+- #: cp/lex.c:1516
+- msgid "parse error in method specification"
+- msgstr ""
+-
+- #: cp/lex.c:1613
+- msgid "function body for constructor missing"
+- msgstr ""
+-
+- #: cp/lex.c:2058
+- #, c-format
+- msgid "semicolon missing after %s declaration"
+- msgstr ""
+-
+- #. Used to test incremental compilation.
+- #: cp/lex.c:2368
+- msgid "#pragma newworld"
+- msgstr ""
+-
+- #: cp/lex.c:2579
+- msgid "badly nested C headers from preprocessor"
+- msgstr ""
+-
+- #: cp/lex.c:2963
+- #, c-format
+- msgid "name lookup of `%s' changed"
+- msgstr ""
+-
+- #: cp/lex.c:3178 cp/lex.c:3881
+- msgid "ANSI C++ forbids imaginary numeric constants"
+- msgstr ""
+-
+- #: cp/lex.c:3427
+- #, c-format
+- msgid "invalid modifier `%s' for language string"
+- msgstr ""
+-
+- #: cp/lex.c:3526
+- #, c-format
+- msgid "identifier name `%s' conflicts with GNU C++ internal naming strategy"
+- msgstr ""
+-
+- #: cp/lex.c:3825
+- #, c-format
+- msgid "floating point number exceeds range of `%s'"
+- msgstr ""
+-
+- #: cp/lex.c:3871
+- msgid "ANSI C++ forbids long long integer constants"
+- msgstr ""
+-
+- #: cp/lex.c:3956
+- msgid "decimal integer constant is so large that it is unsigned"
+- msgstr ""
+-
+- #: cp/lex.c:3967
+- msgid "complex integer constant is too wide for `__complex int'"
+- msgstr ""
+-
+- #: cp/lex.c:4252
+- msgid "Unterminated string"
+- msgstr ""
+-
+- #: cp/lex.c:4401
+- #, c-format
+- msgid "use of `operator %s' is not standard C++"
+- msgstr ""
+-
+- #: cp/lex.c:4794
+- msgid "invalid #pragma vtable"
+- msgstr ""
+-
+- #: cp/lex.c:4800
+- msgid "use `+e2' option to enable #pragma vtable"
+- msgstr ""
+-
+- #: cp/lex.c:4809 cp/lex.c:4823
+- msgid "trailing characters ignored"
+- msgstr ""
+-
+- #: cp/lex.c:4818
+- msgid "invalid #pragma unit"
+- msgstr ""
+-
+- #: cp/lex.c:4841
+- msgid "invalid `#pragma interface'"
+- msgstr ""
+-
+- #: cp/lex.c:4849
+- msgid "garbage after `#pragma interface' ignored"
+- msgstr ""
+-
+- #: cp/lex.c:4898
+- msgid "invalid `#pragma implementation'"
+- msgstr ""
+-
+- #: cp/lex.c:4906
+- msgid "garbage after `#pragma implementation' ignored"
+- msgstr ""
+-
+- #: cp/lex.c:4938
+- msgid "`#pragma implementation' can only appear at top-level"
+- msgstr ""
+-
+- #: cp/method.c:762
+- msgid "ANSI C++ forbids floating-point template arguments"
+- msgstr ""
+-
+- #: cp/method.c:905
+- #, c-format
+- msgid "conversion of %s as template parameter"
+- msgstr ""
+-
+- #: cp/method.c:1897
+- msgid "methods cannot be converted to function pointers"
+- msgstr ""
+-
+- #: cp/method.c:1902
+- #, c-format
+- msgid "ambiguous request for method pointer `%s'"
+- msgstr ""
+-
+- #: cp/method.c:2019
+- #, c-format
+- msgid "request for member `%s' is ambiguous in multiple inheritance lattice"
+- msgstr ""
+-
+- #: parse.y:560
+- msgid "invalid default template argument"
+- msgstr ""
+-
+- #: parse.y:780
+- msgid "no base initializers given following ':'"
+- msgstr ""
+-
+- #: parse.y:803
+- msgid "base initializers not allowed for non-member functions"
+- msgstr ""
+-
+- #: parse.y:805
+- msgid "only constructors take base initializers"
+- msgstr ""
+-
+- #: parse.y:822 parse.y:828
+- msgid "anachronistic old style base class initializer"
+- msgstr ""
+-
+- #. Handle `Class<Class<Type>>' without space in the `>>'
+- #: parse.y:945
+- msgid "`>>' should be `> >' in template class name"
+- msgstr ""
+-
+- #: parse.y:992 parse.y:1001
+- #, c-format
+- msgid "ANSI C++ forbids an empty condition for `%s'"
+- msgstr ""
+-
+- #: parse.y:1098
+- msgid "ANSI C++ forbids `&&'"
+- msgstr ""
+-
+- #: parse.y:1204
+- msgid "ANSI C++ forbids initialization of new expression with `='"
+- msgstr ""
+-
+- #: parse.y:1234
+- msgid "ANSI C++ forbids constructor-expressions"
+- msgstr ""
+-
+- #: parse.y:1433
+- msgid "ANSI C++ forbids braced-groups within expressions"
+- msgstr ""
+-
+- #: parse.y:1837 parse.y:1852
+- msgid "sigof type specifier"
+- msgstr ""
+-
+- #: parse.y:1842 parse.y:2371 parse.y:2392
+- msgid "`sigof' applied to non-aggregate expression"
+- msgstr ""
+-
+- #: parse.y:1857
+- msgid "`sigof' applied to non-aggregate type"
+- msgstr ""
+-
+- #: parse.y:2203
+- #, c-format
+- msgid "storage class specifier `%s' not allowed after struct or class"
+- msgstr ""
+-
+- #: parse.y:2205
+- #, c-format
+- msgid "type specifier `%s' not allowed after struct or class"
+- msgstr ""
+-
+- #: parse.y:2207
+- #, c-format
+- msgid "type qualifier `%s' not allowed after struct or class"
+- msgstr ""
+-
+- #: parse.y:2209
+- msgid "no body nor ';' separates two class, struct or union declarations"
+- msgstr ""
+-
+- #: parse.y:2366 parse.y:2387
+- msgid "`sigof' as base signature specifier"
+- msgstr ""
+-
+- #: parse.y:2377 parse.y:2398
+- msgid "`sigof' in struct or class declaration"
+- msgstr ""
+-
+- #: parse.y:2413
+- msgid "multiple access specifiers"
+- msgstr ""
+-
+- #: parse.y:2431
+- msgid "multiple `virtual' specifiers"
+- msgstr ""
+-
+- #: parse.y:2446
+- msgid "access specifier not allowed in signature"
+- msgstr ""
+-
+- #: parse.y:2470
+- msgid "missing ';' before right brace"
+- msgstr ""
+-
+- #: parse.y:2712
+- msgid "ANSI C++ forbids array dimensions with parenthesized type in new"
+- msgstr ""
+-
+- #: parse.y:3218
+- msgid "ANSI C++ forbids label declarations"
+- msgstr ""
+-
+- #: parse.y:3364
+- msgid "ANSI C++ forbids computed gotos"
+- msgstr ""
+-
+- #: parse.y:3372
+- msgid "label must be followed by statement"
+- msgstr ""
+-
+- #: parse.y:3475
+- msgid "ANSI C++ forbids compound statements inside for initializations"
+- msgstr ""
+-
+- #. This helps us recover from really nasty
+- #. parse errors, for example, a missing right
+- #. parenthesis.
+- #: parse.y:3560 parse.y:3570
+- msgid "possibly missing ')'"
+- msgstr ""
+-
+- #: parse.y:3667 parse.y:3672
+- msgid "type specifier omitted for parameter"
+- msgstr ""
+-
+- #: cp/pt.c:1787
+- msgid " a template type parameter must begin with `class' or `typename'"
+- msgstr ""
+-
+- #: cp/pt.c:2704
+- msgid "because it is the address of an object with static linkage"
+- msgstr ""
+-
+- #: cp/pt.c:4238
+- #, c-format
+- msgid "testing %s for template parms"
+- msgstr ""
+-
+- #: cp/pt.c:4335
+- #, c-format
+- msgid "template instantiation depth exceeds maximum of %d"
+- msgstr ""
+-
+- #: cp/pt.c:4337
+- msgid " (use -ftemplate-depth-NN to increase the maximum)"
+- msgstr ""
+-
+- #: cp/pt.c:6150
+- msgid "creating array with size zero"
+- msgstr ""
+-
+- #: cp/pt.c:6618
+- #, c-format
+- msgid "use of `%s' in template"
+- msgstr ""
+-
+- #: cp/pt.c:7656
+- msgid "incomplete type unification"
+- msgstr ""
+-
+- #: cp/pt.c:8493
+- #, c-format
+- msgid "use of `%s' in template type unification"
+- msgstr ""
+-
+- #: cp/repo.c:263
+- msgid "-frepo must be used with -c"
+- msgstr ""
+-
+- #: cp/repo.c:353
+- #, c-format
+- msgid "mysterious repository information in %s"
+- msgstr ""
+-
+- #: cp/repo.c:368
+- #, c-format
+- msgid "can't create repository information file `%s'"
+- msgstr ""
+-
+- #: cp/rtti.c:104
+- msgid "`headof' applied to non-pointer type"
+- msgstr ""
+-
+- #: cp/rtti.c:197
+- msgid "typeid of overloaded function"
+- msgstr ""
+-
+- #: cp/rtti.c:223
+- msgid "taking dynamic typeid of object with -fno-rtti"
+- msgstr ""
+-
+- #: cp/rtti.c:269
+- msgid "cannot use typeid with -fno-rtti"
+- msgstr ""
+-
+- #: cp/rtti.c:275 cp/rtti.c:425
+- msgid "must #include <typeinfo> before using typeid"
+- msgstr ""
+-
+- #: cp/rtti.c:430
+- msgid "requesting typeid with -fno-rtti"
+- msgstr ""
+-
+- #: cp/search.c:1919
+- msgid "adjusting pointers for covariant returns"
+- msgstr ""
+-
+- #: cp/search.c:1930
+- msgid "invalid covariant return type (must use pointer or reference)"
+- msgstr ""
+-
+- #. This shouldn't happen, I don't want errors!
+- #: cp/search.c:2438
+- msgid "recoverable compiler error, fixups for virtual function"
+- msgstr ""
+-
+- #: cp/search.c:2714
+- msgid "recoverable internal compiler error, nobody's in charge!"
+- msgstr ""
+-
+- #: cp/sig.c:473
+- msgid "conformance check with signature containing class declarations"
+- msgstr ""
+-
+- #: cp/sig.c:736
+- msgid "signature with opaque type implemented by multiple classes"
+- msgstr ""
+-
+- #: cp/sig.c:807
+- msgid "invalid assignment to signature pointer or reference"
+- msgstr ""
+-
+- #: cp/spew.c:367
+- msgid "keyword 'export' not implemented and will be ignored"
+- msgstr ""
+-
+- #: cp/tree.c:177
+- #, c-format
+- msgid "non-lvalue in %s"
+- msgstr ""
+-
+- #: cp/tree.c:1690 cp/tree.c:1982
+- msgid "initializer contains unrecognized tree code"
+- msgstr ""
+-
+- #: cp/tree.c:2723
+- msgid "`com_interface' only supported with -fvtable-thunks"
+- msgstr ""
+-
+- #: cp/tree.c:2732
+- msgid "`com_interface' attribute can only be applied to class definitions"
+- msgstr ""
+-
+- #: cp/tree.c:2749
+- msgid "requested init_priority is not an integer constant"
+- msgstr ""
+-
+- #: cp/tree.c:2770
+- msgid ""
+- "can only use init_priority attribute on file-scope definitions of objects of "
+- "class type"
+- msgstr ""
+-
+- #: cp/tree.c:2776
+- msgid "requested init_priority is out of range"
+- msgstr ""
+-
+- #: cp/tree.c:2785
+- msgid "requested init_priority is reserved for internal use"
+- msgstr ""
+-
+- #: cp/typeck.c:1561 cp/typeck.c:1638
+- msgid "ANSI C++ forbids taking the sizeof a function type"
+- msgstr ""
+-
+- #: cp/typeck.c:1567
+- msgid "ANSI C++ forbids taking the sizeof a method type"
+- msgstr ""
+-
+- #: cp/typeck.c:1573
+- msgid "ANSI C++ forbids taking the sizeof a void type"
+- msgstr ""
+-
+- #: cp/typeck.c:1598
+- msgid "`sizeof' applied to a signature type"
+- msgstr ""
+-
+- #: cp/typeck.c:1627
+- msgid "sizeof applied to a bit-field"
+- msgstr ""
+-
+- #: cp/typeck.c:1703
+- msgid "`__alignof' applied to a signature type"
+- msgstr ""
+-
+- #: cp/typeck.c:1923
+- msgid "signature name in scope resolution ignored"
+- msgstr ""
+-
+- #: cp/typeck.c:2230
+- msgid "invalid reference to NULL ptr, use ptr-to-member instead"
+- msgstr ""
+-
+- #: cp/typeck.c:2387
+- #, c-format
+- msgid "invalid use of `%s' on pointer to member"
+- msgstr ""
+-
+- #: cp/typeck.c:2390
+- msgid "cannot dereference signature pointer/reference"
+- msgstr ""
+-
+- #: cp/typeck.c:2396
+- msgid "invalid type argument"
+- msgstr ""
+-
+- #: cp/typeck.c:2477
+- msgid "ANSI C++ forbids subscripting non-lvalue array"
+- msgstr ""
+-
+- #: cp/typeck.c:2488
+- msgid "subscripting array declared `register'"
+- msgstr ""
+-
+- #: cp/typeck.c:2660 cp/typeck.c:2800
+- msgid "pointer to member function called, but not in class scope"
+- msgstr ""
+-
+- #: cp/typeck.c:2798
+- msgid ""
+- "invalid call to member function needing `this' in static member function "
+- "scope"
+- msgstr ""
+-
+- #: cp/typeck.c:2956
+- msgid "ANSI C++ forbids calling `main' from within program"
+- msgstr ""
+-
+- #: cp/typeck.c:3168
+- msgid "parameter type of called function is incomplete"
+- msgstr ""
+-
+- #: cp/typeck.c:3576
+- #, c-format
+- msgid "%s rotate count is negative"
+- msgstr ""
+-
+- #: cp/typeck.c:3581
+- #, c-format
+- msgid "%s rotate count >= width of type"
+- msgstr ""
+-
+- #: cp/typeck.c:3610 cp/typeck.c:3618
+- msgid "ANSI C++ forbids comparison of `void *' with function pointer"
+- msgstr ""
+-
+- #: cp/typeck.c:3612
+- msgid "ANSI C++ forbids conversion of a pointer to member to `void *'"
+- msgstr ""
+-
+- #: cp/typeck.c:3636 cp/typeck.c:3641 cp/typeck.c:3791 cp/typeck.c:3796
+- msgid "ANSI C++ forbids comparison between pointer and integer"
+- msgstr ""
+-
+- #: cp/typeck.c:4137
+- msgid "ANSI C++ forbids using pointer of type `void *' in arithmetic"
+- msgstr ""
+-
+- #: cp/typeck.c:4143
+- msgid "ANSI C++ forbids using pointer to a function in arithmetic"
+- msgstr ""
+-
+- #: cp/typeck.c:4149
+- msgid "ANSI C++ forbids using pointer to a method in arithmetic"
+- msgstr ""
+-
+- #: cp/typeck.c:4155
+- msgid "ANSI C++ forbids using pointer to a member in arithmetic"
+- msgstr ""
+-
+- #: cp/typeck.c:4228
+- msgid "ANSI C++ forbids using pointer of type `void *' in subtraction"
+- msgstr ""
+-
+- #: cp/typeck.c:4230
+- msgid "ANSI C++ forbids using pointer to a function in subtraction"
+- msgstr ""
+-
+- #: cp/typeck.c:4232
+- msgid "ANSI C++ forbids using pointer to a method in subtraction"
+- msgstr ""
+-
+- #: cp/typeck.c:4234
+- msgid "ANSI C++ forbids using pointer to a member in subtraction"
+- msgstr ""
+-
+- #: cp/typeck.c:4347
+- msgid "taking address of temporary"
+- msgstr ""
+-
+- #: cp/typeck.c:4530
+- #, c-format
+- msgid "ANSI C++ forbids %sing an enum"
+- msgstr ""
+-
+- #: cp/typeck.c:4572
+- msgid "cast to non-reference type used as lvalue"
+- msgstr ""
+-
+- #. ARM $3.4
+- #: cp/typeck.c:4652
+- msgid "taking address of function `main'"
+- msgstr ""
+-
+- #. An expression like &memfn.
+- #: cp/typeck.c:4708
+- msgid "taking the address of a non-static member function"
+- msgstr ""
+-
+- #: cp/typeck.c:4710
+- msgid "taking the address of a bound member function"
+- msgstr ""
+-
+- #: cp/typeck.c:4739
+- msgid "taking the address of a cast to non-reference type"
+- msgstr ""
+-
+- #: cp/typeck.c:4755
+- msgid "unary `&'"
+- msgstr ""
+-
+- #: cp/typeck.c:4977
+- msgid "address of `this' not available"
+- msgstr ""
+-
+- #: cp/typeck.c:5076
+- msgid "ANSI C++ forbids omitting the middle term of a ?: expression"
+- msgstr ""
+-
+- #: cp/typeck.c:5164 cp/typeck.c:5169
+- msgid "enumeral and non-enumeral type in conditional expression"
+- msgstr ""
+-
+- #: cp/typeck.c:5220
+- msgid "ANSI C++ forbids conditional expr with only one void side"
+- msgstr ""
+-
+- #: cp/typeck.c:5234 cp/typeck.c:5240
+- msgid "ANSI C++ forbids conditional expr between `void *' and function pointer"
+- msgstr ""
+-
+- #: cp/typeck.c:5321 cp/typeck.c:5347
+- msgid "ambiguous pointer conversion"
+- msgstr ""
+-
+- #: cp/typeck.c:5632
+- msgid "ANSI C++ forbids casting between pointers to functions and objects"
+- msgstr ""
+-
+- #: cp/typeck.c:5751 cp/typeck.c:5756
+- msgid "ANSI C++ forbids casting to an array type"
+- msgstr ""
+-
+- #: cp/typeck.c:6086
+- msgid "ANSI C++ forbids cast to non-reference type used as lvalue"
+- msgstr ""
+-
+- #: cp/typeck.c:6156
+- msgid "assignment to `this' not in constructor or destructor"
+- msgstr ""
+-
+- #: cp/typeck.c:6209
+- msgid "ANSI C++ forbids assignment of arrays"
+- msgstr ""
+-
+- #: cp/typeck.c:6246
+- msgid "return value from function receives multiple initializations"
+- msgstr ""
+-
+- #: cp/typeck.c:6384
+- msgid " in pointer to member function conversion"
+- msgstr ""
+-
+- #: cp/typeck.c:6392
+- msgid " in pointer to member conversion"
+- msgstr ""
+-
+- #: cp/typeck.c:6404 cp/typeck.c:6420
+- msgid " will only work if you are very careful"
+- msgstr ""
+-
+- #: cp/typeck.c:6904
+- #, c-format
+- msgid "ANSI C++ forbids implicit conversion from `void *' in %s"
+- msgstr ""
+-
+- #: cp/typeck.c:6916
+- #, c-format
+- msgid "%s between pointer to members converting across virtual baseclasses"
+- msgstr ""
+-
+- #: cp/typeck.c:7019
+- #, c-format
+- msgid "conflicting function types in %s:"
+- msgstr ""
+-
+- #: cp/typeck.c:7344
+- msgid "returning a value from a destructor"
+- msgstr ""
+-
+- #: cp/typeck.c:7390
+- msgid "return from a constructor: use `this = ...' instead"
+- msgstr ""
+-
+- #: cp/typeck.c:7392
+- msgid "returning a value from a constructor"
+- msgstr ""
+-
+- #: cp/typeck.c:7424
+- msgid "return of void value in function returning non-void"
+- msgstr ""
+-
+- #: cp/typeck.c:7481
+- msgid "returning reference to temporary"
+- msgstr ""
+-
+- #: cp/typeck.c:7488
+- msgid "reference to non-lvalue returned"
+- msgstr ""
+-
+- #: cp/typeck2.c:167
+- msgid " since the following virtual functions are abstract:"
+- msgstr ""
+-
+- #: cp/typeck2.c:350
+- msgid "confused by earlier errors, bailing out"
+- msgstr ""
+-
+- #: cp/typeck2.c:357
+- msgid "Internal compiler error."
+- msgstr ""
+-
+- #: cp/typeck2.c:359
+- #, c-format
+- msgid "Internal compiler error %d."
+- msgstr ""
+-
+- #: cp/typeck2.c:361
+- msgid "Please submit a full bug report."
+- msgstr ""
+-
+- #: cp/typeck2.c:362
+- msgid "See <URL:http://egcs.cygnus.com/faq.html#bugreport> for instructions."
+- msgstr ""
+-
+- #: cp/typeck2.c:584
+- msgid "due to the presence of a constructor"
+- msgstr ""
+-
+- #: cp/typeck2.c:608
+- msgid "comma expression used to initialize return value"
+- msgstr ""
+-
+- #: cp/typeck2.c:617
+- msgid "cannot initialize arrays using this syntax"
+- msgstr ""
+-
+- #: cp/typeck2.c:679
+- msgid "ANSI C++ forbids non-constant aggregate initializer expressions"
+- msgstr ""
+-
+- #: cp/typeck2.c:750
+- msgid "initializing array with parameter list"
+- msgstr ""
+-
+- #: cp/typeck2.c:812
+- msgid "initializer for scalar variable requires one element"
+- msgstr ""
+-
+- #: cp/typeck2.c:909
+- msgid "aggregate has a partly bracketed initializer"
+- msgstr ""
+-
+- #: cp/typeck2.c:939 cp/typeck2.c:1040
+- msgid "non-trivial labeled initializers"
+- msgstr ""
+-
+- #: cp/typeck2.c:956
+- msgid "non-empty initializer for array of empty elements"
+- msgstr ""
+-
+- #: cp/typeck2.c:1006
+- msgid "initializer list for object of class with virtual baseclasses"
+- msgstr ""
+-
+- #: cp/typeck2.c:1012
+- msgid "initializer list for object of class with baseclasses"
+- msgstr ""
+-
+- #: cp/typeck2.c:1018
+- msgid "initializer list for object using virtual functions"
+- msgstr ""
+-
+- #: cp/typeck2.c:1126
+- msgid "index value instead of field name in union initializer"
+- msgstr ""
+-
+- #: cp/typeck2.c:1182
+- msgid "excess elements in aggregate initializer"
+- msgstr ""
+-
+- #: cp/typeck2.c:1309
+- msgid "circular pointer delegation detected"
+- msgstr ""
+-
+- #: cp/typeck2.c:1341
+- msgid "result of `operator->()' yields non-pointer result"
+- msgstr ""
+-
+- #: cp/typeck2.c:1343
+- msgid "base operand of `->' is not a pointer"
+- msgstr ""
+-
+- #: cp/typeck2.c:1458
+- msgid "signature type not allowed in cast or constructor expression"
+- msgstr ""
+-
+- #: cp/typeck2.c:1622
+- #, c-format
+- msgid "duplicate label `%s' in switch statement"
+- msgstr ""
+-
+- #: cp/typeck2.c:1625
+- #, c-format
+- msgid "duplicate label (%d) in switch statement"
+- msgstr ""
+-
+- #: cp/typeck2.c:1632
+- #, c-format
+- msgid "case value out of range for enum %s"
+- msgstr ""
+-
+- #: cp/typeck2.c:1640
+- #, c-format
+- msgid "range values `%s' and `%s' reversed"
+- msgstr ""
+-
+- #: cp/typeck2.c:1644
+- msgid "range values reversed"
+- msgstr ""
+-
+- #: cp/typeck2.c:1659
+- #, c-format
+- msgid "ANSI C++ forbids defining types within %s"
+- msgstr ""
+-
+- #: cp/xref.c:838
+- #, c-format
+- msgid "Can't create cross-reference file `%s'"
+- msgstr ""
+-
+- #: cppalloc.c:34
+- #, c-format
+- msgid "%s: Memory exhausted.\n"
+- msgstr ""
+-
+- #: cpperror.c:66
+- #, c-format
+- msgid "In file included from %s:%ld"
+- msgstr ""
+-
+- #: cpperror.c:70
+- #, c-format
+- msgid ""
+- ",\n"
+- " from %s:%ld"
+- msgstr ""
+-
+- #: cpperror.c:117
+- #, c-format
+- msgid "internal error: bad is_error(%d) in v_cpp_message"
+- msgstr ""
+-
+- #: cppexp.c:164
+- msgid "floating point numbers are not allowed in #if expressions"
+- msgstr ""
+-
+- #: cppexp.c:201
+- msgid "invalid number in #if expression"
+- msgstr ""
+-
+- #: cppexp.c:206
+- msgid "too many `l' suffixes in integer constant"
+- msgstr ""
+-
+- #: cppexp.c:211
+- msgid "too many `u' suffixes in integer constant"
+- msgstr ""
+-
+- #: cppexp.c:724
+- msgid "internal error: cpp_lex returns a NAME"
+- msgstr ""
+-
+- #: cppexp.c:773
+- msgid "invalid character in #if"
+- msgstr ""
+-
+- #: cppexp.c:781 cppexp.c:959
+- msgid "syntax error in #if"
+- msgstr ""
+-
+- #: cppexp.c:797
+- msgid "syntax error - missing left operand"
+- msgstr ""
+-
+- #: cppexp.c:803
+- msgid "syntax error - missing right operand"
+- msgstr ""
+-
+- #: cppexp.c:891 cppexp.c:901
+- msgid "syntax error"
+- msgstr ""
+-
+- #: cppexp.c:965
+- msgid "syntax error ':' without preceding '?'"
+- msgstr ""
+-
+- #: cppexp.c:972
+- msgid "bad syntax for ?: operator"
+- msgstr ""
+-
+- #: cppexp.c:989
+- msgid "mismatched parentheses in #if"
+- msgstr ""
+-
+- #: cppexp.c:1003
+- #, c-format
+- msgid "unimplemented operator '%c'\n"
+- msgstr ""
+-
+- #: cppexp.c:1004
+- #, c-format
+- msgid "unimplemented operator '\\%03o'\n"
+- msgstr ""
+-
+- #: cppexp.c:1011
+- msgid "internal error in #if expression"
+- msgstr ""
+-
+- #: cpphash.c:295
+- msgid "internal error: limit < buf in collect_expansion"
+- msgstr ""
+-
+- #: cpphash.c:692
+- #, c-format
+- msgid "duplicate argument name `%s' in `#define'"
+- msgstr ""
+-
+- #: cpphash.c:1015
+- msgid "cpplib internal error: invalid special hash type"
+- msgstr ""
+-
+- #: cpphash.c:1413
+- msgid "internal_error: buffer overrun in macroexpand"
+- msgstr ""
+-
+- #: cpplib.c:394 cpplib.c:470
+- #, c-format
+- msgid "%s in preprocessing directive"
+- msgstr ""
+-
+- #: cpplib.c:599
+- #, c-format
+- msgid "invalid assertion name `%s'"
+- msgstr ""
+-
+- #: cpplib.c:600
+- #, c-format
+- msgid "invalid macro name `%s'"
+- msgstr ""
+-
+- #: cpplib.c:696
+- msgid "macro or `#include' recursion too deep"
+- msgstr ""
+-
+- #: cpplib.c:773
+- msgid "internal error: length < 0 in cpp_expand_to_buffer"
+- msgstr ""
+-
+- #: cpplib.c:983
+- msgid "#import is obsolete, use an #ifndef wrapper in the header file"
+- msgstr ""
+-
+- #: cpplib.c:1001
+- msgid "`#include filename' is obsolete, use `#include <filename.h>'"
+- msgstr ""
+-
+- #: cpplib.c:1024
+- msgid "junk at end of `#include'"
+- msgstr ""
+-
+- #: cpplib.c:1063
+- msgid "cpp internal error: fp == NULL_BUFFER in do_include"
+- msgstr ""
+-
+- #: cpplib.c:1079
+- msgid "#include_next in primary source file"
+- msgstr ""
+-
+- #: cpplib.c:1209 cpplib.c:1216
+- msgid "token after `#line' is not an integer"
+- msgstr ""
+-
+- #: cpplib.c:1222
+- msgid "line number out of range in `#line' command"
+- msgstr ""
+-
+- #: cpplib.c:1237
+- msgid "garbage at end of `#line' command"
+- msgstr ""
+-
+- #: cpplib.c:1241 cpplib.c:1263
+- msgid "invalid format `#line' command"
+- msgstr ""
+-
+- #: cpplib.c:1298
+- #, c-format
+- msgid "token after `#line %d' is not a string"
+- msgstr ""
+-
+- #: cpplib.c:1335
+- msgid "token after #undef is not an identifier"
+- msgstr ""
+-
+- #: cpplib.c:1352
+- msgid "junk on line after #undef"
+- msgstr ""
+-
+- #: cpplib.c:1493
+- msgid "`#pragma once' outside include file"
+- msgstr ""
+-
+- #: cpplib.c:1517
+- #, c-format
+- msgid "`#pragma implementation' for `%s' appears after file is included"
+- msgstr ""
+-
+- #: cpplib.c:1677
+- #, c-format
+- msgid "`#%s' with invalid argument"
+- msgstr ""
+-
+- #: cpplib.c:1784
+- #, c-format
+- msgid "`%s' after `#else'"
+- msgstr ""
+-
+- #: cpplib.c:1812
+- msgid "invalid preprocessor directive name"
+- msgstr ""
+-
+- #: cpplib.c:2011
+- #, c-format
+- msgid "text following `%s' violates ANSI standard"
+- msgstr ""
+-
+- #: cpplib.c:2191
+- msgid "missing '>' in `#include <FILENAME>'"
+- msgstr ""
+-
+- #: cpplib.c:2209 cpplib.c:2462
+- #, c-format
+- msgid "internal error: unrecognized escape \\r%c"
+- msgstr ""
+-
+- #: cpplib.c:2621
+- msgid "internal error: \\r escape inside string constant"
+- msgstr ""
+-
+- #: cpplib.c:2659
+- msgid "assertion predicate is not an identifier"
+- msgstr ""
+-
+- #: cpplib.c:2692
+- msgid "un-terminated assertion answer"
+- msgstr ""
+-
+- #: cpplib.c:2709
+- msgid "empty token sequence in assertion"
+- msgstr ""
+-
+- #: cpplib.c:2748
+- msgid "junk at end of `#assert'"
+- msgstr ""
+-
+- #: cpplib.c:2757
+- #, c-format
+- msgid "`%s' re-asserted"
+- msgstr ""
+-
+- #: cpplib.c:2768
+- msgid "cpp internal error: base->type != T_ASSERT in do_assert"
+- msgstr ""
+-
+- #: cpplib.c:2809
+- msgid "junk at end of `#unassert'"
+- msgstr ""
+-
+- #: cpplib.c:2898
+- msgid "cpp internal error: ip->mark != -1 in parse_set_mark"
+- msgstr ""
+-
+- #: cpplib.c:2912
+- msgid "cpp internal error: ip->mark == -1 in parse_clear_mark"
+- msgstr ""
+-
+- #: cpplib.c:2927
+- msgid "cpp internal error: ip->mark == -1 in parse_goto_mark"
+- msgstr ""
+-
+- #: cpplib.c:3254 gcc.c:5287
+- #, c-format
+- msgid "%s: %s"
+- msgstr ""
+-
+- #: cpplib.c:3262
+- #, c-format
+- msgid "%s: %s: %s"
+- msgstr ""
+-
+- #: cse.c:8798
+- #, c-format
+- msgid ";; Processing block from %d to %d, %d sets.\n"
+- msgstr ""
+-
+- #: dwarf2out.c:554 dwarfout.c:1679
+- #, c-format
+- msgid "internal regno botch: regno = %d\n"
+- msgstr ""
+-
+- #: emit-rtl.c:973
+- msgid ""
+- "Unable to access real part of complex value in a hard register on this target"
+- msgstr ""
+-
+- #: emit-rtl.c:996
+- msgid ""
+- "Unable to access imaginary part of complex value in a hard register on this "
+- "target"
+- msgstr ""
+-
+- #: except.c:816
+- msgid "additional handler after ..."
+- msgstr ""
+-
+- #: except.c:989
+- msgid "Cannot duplicate non-existant exception region."
+- msgstr ""
+-
+- #: except.c:1084
+- msgid "exception handling disabled, use -fexceptions to enable"
+- msgstr ""
+-
+- #: except.c:1760
+- msgid "Compiler Bug: Never issued previous false_label"
+- msgstr ""
+-
+- #: except.c:2389
+- #, c-format
+- msgid "Counted %d copies of EH region %d in list.\n"
+- msgstr ""
+-
+- #: except.c:2778
+- msgid "Duplicate call to __builtin_eh_return"
+- msgstr ""
+-
+- #: except.c:2798
+- msgid "function uses __builtin_eh_return"
+- msgstr ""
+-
+- #: expr.c:5459 expr.c:5468 expr.c:5477 expr.c:5482 expr.c:5637 expr.c:5650
+- msgid "unsupported wide integer operation"
+- msgstr ""
+-
+- #: expr.c:5702
+- #, c-format
+- msgid "prior parameter's size depends on `%s'"
+- msgstr ""
+-
+- #: expr.c:6098
+- msgid "returned value in block_exit_expr"
+- msgstr ""
+-
+- #: expr.c:8411
+- msgid "offset outside bounds of constant string"
+- msgstr ""
+-
+- #: expr.c:9006
+- #, c-format
+- msgid "CUMULATIVE_ARGS type defined badly; see %s, line %d"
+- msgstr ""
+-
+- #: expr.c:9013
+- msgid "argument of `__builtin_args_info' must be constant"
+- msgstr ""
+-
+- #: expr.c:9019
+- msgid "argument of `__builtin_args_info' out of range"
+- msgstr ""
+-
+- #: expr.c:9025
+- msgid "missing argument in `__builtin_args_info'"
+- msgstr ""
+-
+- #: expr.c:9054
+- msgid "`va_start' used in function with fixed args"
+- msgstr ""
+-
+- #: expr.c:9073
+- msgid "second parameter of `va_start' not last named argument"
+- msgstr ""
+-
+- #. Evidently an out of date version of <stdarg.h>; can't validate
+- #. va_start's second argument, but can still work as intended.
+- #: expr.c:9078
+- msgid "`__builtin_next_arg' called without an argument"
+- msgstr ""
+-
+- #: expr.c:9189
+- msgid "invalid arg to `__builtin_frame_address'"
+- msgstr ""
+-
+- #: expr.c:9191
+- msgid "invalid arg to `__builtin_return_address'"
+- msgstr ""
+-
+- #: expr.c:9204
+- msgid "unsupported arg to `__builtin_frame_address'"
+- msgstr ""
+-
+- #: expr.c:9206
+- msgid "unsupported arg to `__builtin_return_address'"
+- msgstr ""
+-
+- #: expr.c:9664
+- msgid "__builtin_longjmp second argument must be 1"
+- msgstr ""
+-
+- #: expr.c:9678
+- msgid "__builtin_trap not supported by this target"
+- msgstr ""
+-
+- #. just do library call, if unknown builtin
+- #: expr.c:9705
+- #, c-format
+- msgid "built-in function `%s' not currently supported"
+- msgstr ""
+-
+- #: final.c:1324
+- msgid "Negative insn length"
+- msgstr ""
+-
+- #: final.c:2914
+- msgid "Could not split insn"
+- msgstr ""
+-
+- #: final.c:3310
+- #, c-format
+- msgid "invalid `asm': %s"
+- msgstr ""
+-
+- #: final.c:3312
+- #, c-format
+- msgid "Internal compiler error, output_operand_lossage `%s'"
+- msgstr ""
+-
+- #: final.c:3448
+- #, c-format
+- msgid "operand number missing after %-letter"
+- msgstr ""
+-
+- #: final.c:3450 final.c:3483
+- msgid "operand number out of range"
+- msgstr ""
+-
+- #: final.c:3496
+- msgid "invalid %%-code"
+- msgstr ""
+-
+- #: final.c:3521
+- msgid "`%l' operand isn't a label"
+- msgstr ""
+-
+- #: flow.c:5074
+- #, c-format
+- msgid ""
+- "verify_flow_info: Head insn %d for block %d not found in the insn stream.\n"
+- msgstr ""
+-
+- #: flow.c:5084
+- #, c-format
+- msgid "verify_flow_info: Insn %d is in multiple basic blocks (%d and %d)"
+- msgstr ""
+-
+- #: flow.c:5094
+- #, c-format
+- msgid ""
+- "verify_flow_info: End insn %d for block %d not found in the insn stream.\n"
+- msgstr ""
+-
+- #: flow.c:5127 flow.c:5155
+- #, c-format
+- msgid "verify_flow_info: Basic block %i edge lists are corrupted\n"
+- msgstr ""
+-
+- #: flow.c:5170
+- msgid ""
+- "verify_flow_info: Basic block contains only CODE_LABEL and no "
+- "NOTE_INSN_BASIC_BLOCK note\n"
+- msgstr ""
+-
+- #: flow.c:5178
+- #, c-format
+- msgid "verify_flow_info: NOTE_INSN_BASIC_BLOCK is missing for block %d\n"
+- msgstr ""
+-
+- #: flow.c:5194
+- #, c-format
+- msgid ""
+- "verify_flow_info: NOTE_INSN_BASIC_BLOCK %d in the middle of basic block %d\n"
+- msgstr ""
+-
+- #: flow.c:5205
+- #, c-format
+- msgid "verify_flow_info: Incorrect insn in the middle of basic block %d\n"
+- msgstr ""
+-
+- #: flow.c:5239
+- msgid "verify_flow_info: Insn outside basic block\n"
+- msgstr ""
+-
+- #: fold-const.c:2817 fold-const.c:2830
+- #, c-format
+- msgid "comparison is always %d due to width of bitfield"
+- msgstr ""
+-
+- #: fold-const.c:3868 fold-const.c:3885
+- #, c-format
+- msgid "comparison is always %d"
+- msgstr ""
+-
+- #: fold-const.c:4016
+- msgid "`or' of unmatched not-equal tests is always 1"
+- msgstr ""
+-
+- #: fold-const.c:4021
+- msgid "`and' of mutually exclusive equal-tests is always 0"
+- msgstr ""
+-
+- #: function.c:5407
+- #, c-format
+- msgid "`%s' might be used uninitialized in this function"
+- msgstr ""
+-
+- #: function.c:5413
+- #, c-format
+- msgid "variable `%s' might be clobbered by `longjmp' or `vfork'"
+- msgstr ""
+-
+- #: function.c:5431
+- #, c-format
+- msgid "argument `%s' might be clobbered by `longjmp' or `vfork'"
+- msgstr ""
+-
+- #: function.c:6004
+- msgid "function returns an aggregate"
+- msgstr ""
+-
+- #: function.c:6422
+- #, c-format
+- msgid "unused parameter `%s'"
+- msgstr ""
+-
+- #: gcc.c:941
+- #, c-format
+- msgid "Ambiguous abbreviation %s"
+- msgstr ""
+-
+- #: gcc.c:968
+- #, c-format
+- msgid "Incomplete `%s' option"
+- msgstr ""
+-
+- #: gcc.c:979
+- #, c-format
+- msgid "Missing argument to `%s' option"
+- msgstr ""
+-
+- #: gcc.c:992
+- #, c-format
+- msgid "Extraneous argument to `%s' option"
+- msgstr ""
+-
+- #: gcc.c:1177
+- msgid "Using builtin specs.\n"
+- msgstr ""
+-
+- #: gcc.c:1262
+- #, c-format
+- msgid ""
+- "Setting spec %s to '%s'\n"
+- "\n"
+- msgstr ""
+-
+- #: gcc.c:1460
+- #, c-format
+- msgid "Reading specs from %s\n"
+- msgstr ""
+-
+- #: gcc.c:1512 gcc.c:1530
+- msgid "specs %%include syntax malformed after %ld characters"
+- msgstr ""
+-
+- #: gcc.c:1538
+- #, c-format
+- msgid "Could not find specs file %s\n"
+- msgstr ""
+-
+- #: gcc.c:1554 gcc.c:1562 gcc.c:1571 gcc.c:1580
+- msgid "specs %%rename syntax malformed after %ld characters"
+- msgstr ""
+-
+- #: gcc.c:1589
+- #, c-format
+- msgid "specs %s spec was not found to be renamed"
+- msgstr ""
+-
+- #: gcc.c:1596
+- #, c-format
+- msgid "rename spec %s to %s\n"
+- msgstr ""
+-
+- #: gcc.c:1598
+- #, c-format
+- msgid ""
+- "spec is '%s'\n"
+- "\n"
+- msgstr ""
+-
+- #: gcc.c:1611
+- msgid "specs unknown %% command after %ld characters"
+- msgstr ""
+-
+- #: gcc.c:1622 gcc.c:1635
+- #, c-format
+- msgid "specs file malformed after %ld characters"
+- msgstr ""
+-
+- #: gcc.c:1692
+- msgid "spec file has no spec for linking"
+- msgstr ""
+-
+- #: gcc.c:2178
+- #, c-format
+- msgid "file path prefix `%s%s' never used"
+- msgstr ""
+-
+- #: gcc.c:2181
+- #, c-format
+- msgid "file path prefix `%s' never used"
+- msgstr ""
+-
+- #: gcc.c:2237
+- msgid "-pipe not supported"
+- msgstr ""
+-
+- #: gcc.c:2273
+- msgid ""
+- "\n"
+- "Go ahead? (y or n) "
+- msgstr ""
+-
+- #: gcc.c:2337
+- #, c-format
+- msgid "Internal compiler error: program %s got fatal signal %d"
+- msgstr ""
+-
+- #: gcc.c:2828
+- msgid "argument to `-Xlinker' is missing"
+- msgstr ""
+-
+- #: gcc.c:2845
+- msgid "argument to `-specs' is missing"
+- msgstr ""
+-
+- #: gcc.c:2860
+- msgid "argument to `-specs=' is missing"
+- msgstr ""
+-
+- #: gcc.c:2880
+- msgid "argument to `-b' is missing"
+- msgstr ""
+-
+- #: gcc.c:2893
+- msgid "argument to `-B' is missing"
+- msgstr ""
+-
+- #: gcc.c:2945
+- msgid "argument to `-V' is missing"
+- msgstr ""
+-
+- #: gcc.c:2966 gcc.c:2973 gcc.c:2980
+- msgid "invalid version number format"
+- msgstr ""
+-
+- #: gcc.c:3051
+- msgid "cannot specify -o with -c or -S and multiple compilations"
+- msgstr ""
+-
+- #: gcc.c:3212
+- msgid "Warning: -pipe ignored since -save-temps specified"
+- msgstr ""
+-
+- #: gcc.c:3221
+- msgid "argument to `-x' is missing"
+- msgstr ""
+-
+- #: gcc.c:3249
+- #, c-format
+- msgid "argument to `-%s' is missing"
+- msgstr ""
+-
+- #: gcc.c:3307
+- #, c-format
+- msgid "Warning: `-x %s' after last input file has no effect"
+- msgstr ""
+-
+- #: gcc.c:3503
+- msgid "Invalid specification! Bug in cc."
+- msgstr ""
+-
+- #: gcc.c:4083
+- msgid "Warning: use of obsolete %%[ operator in specs"
+- msgstr ""
+-
+- #: gcc.c:4101
+- #, c-format
+- msgid "Processing spec %c%s%c, which is '%s'\n"
+- msgstr ""
+-
+- #: gcc.c:4919
+- #, c-format
+- msgid "unrecognized option `-%s'"
+- msgstr ""
+-
+- #: gcc.c:4989
+- #, c-format
+- msgid "gcc version %s\n"
+- msgstr ""
+-
+- #: gcc.c:4991
+- #, c-format
+- msgid "gcc driver version %s executing gcc version %s\n"
+- msgstr ""
+-
+- #: gcc.c:4999
+- msgid "No input files"
+- msgstr ""
+-
+- #: gcc.c:5042
+- #, c-format
+- msgid "%s: %s compiler not installed on this system"
+- msgstr ""
+-
+- #: gcc.c:5147
+- #, c-format
+- msgid "%s: linker input file unused since linking not done"
+- msgstr ""
+-
+- #: gcc.c:5190
+- #, c-format
+- msgid "language %s not recognized"
+- msgstr ""
+-
+- #: gcov.c:277
+- msgid "error: virtual memory exhausted"
+- msgstr ""
+-
+- #: gcov.c:289
+- msgid "Internal gcc abort.\n"
+- msgstr ""
+-
+- #: gcov.c:298
+- msgid "gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] file\n"
+- msgstr ""
+-
+- #: gcov.c:416
+- #, c-format
+- msgid "Could not open basic block file %s.\n"
+- msgstr ""
+-
+- #: gcov.c:425
+- #, c-format
+- msgid "Could not open data file %s.\n"
+- msgstr ""
+-
+- #: gcov.c:426
+- msgid "Assuming that all execution counts are zero.\n"
+- msgstr ""
+-
+- #: gcov.c:432
+- #, c-format
+- msgid "Could not open program flow graph file %s.\n"
+- msgstr ""
+-
+- #: gcov.c:443
+- #, c-format
+- msgid "No executable code associated with file %s.\n"
+- msgstr ""
+-
+- #: gcov.c:744 profile.c:1495
+- msgid ".da file contents exhausted too early\n"
+- msgstr ""
+-
+- #: gcov.c:747 profile.c:1498
+- msgid ".da file contents not exhausted\n"
+- msgstr ""
+-
+- #: gcov.c:928
+- msgid "%6.2f%% of %d source lines executed in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:932
+- #, c-format
+- msgid "No executable source lines in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:939
+- msgid "%6.2f%% of %d branches executed in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:943
+- msgid "%6.2f%% of %d branches taken at least once in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:948
+- #, c-format
+- msgid "No branches in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:950
+- msgid "%6.2f%% of %d calls executed in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:954
+- #, c-format
+- msgid "No calls in function %s\n"
+- msgstr ""
+-
+- #: gcov.c:1086
+- #, c-format
+- msgid "didn't use all bb entries of graph, function %s\n"
+- msgstr ""
+-
+- #: gcov.c:1088
+- #, c-format
+- msgid "block_num = %ld, num_blocks = %d\n"
+- msgstr ""
+-
+- #: gcov.c:1126
+- #, c-format
+- msgid "ERROR: too many basic blocks in .bb file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1203
+- msgid "%6.2f%% of %d source lines executed in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1207
+- #, c-format
+- msgid "No executable source lines in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1214
+- msgid "%6.2f%% of %d branches executed in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1218
+- msgid "%6.2f%% of %d branches taken at least once in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1223
+- #, c-format
+- msgid "No branches in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1225
+- msgid "%6.2f%% of %d calls executed in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1229
+- #, c-format
+- msgid "No calls in file %s\n"
+- msgstr ""
+-
+- #: gcov.c:1241
+- #, c-format
+- msgid "Could not open source file %s.\n"
+- msgstr ""
+-
+- #: gcov.c:1291
+- #, c-format
+- msgid "Could not open output file %s.\n"
+- msgstr ""
+-
+- #: gcov.c:1299
+- #, c-format
+- msgid "Creating %s.\n"
+- msgstr ""
+-
+- #: gcov.c:1343
+- #, c-format
+- msgid "call %d never executed\n"
+- msgstr ""
+-
+- #: gcov.c:1346
+- msgid "call %d returns = %d%%\n"
+- msgstr ""
+-
+- #: gcov.c:1352
+- #, c-format
+- msgid "branch %d never executed\n"
+- msgstr ""
+-
+- #: gcov.c:1355
+- msgid "branch %d taken = %d%%\n"
+- msgstr ""
+-
+- #: gcov.c:1365
+- #, c-format
+- msgid "Unexpected EOF while reading source file %s.\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:682
+- #, c-format
+- msgid "%s: option `%s' is ambiguous\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:707
+- #, c-format
+- msgid "%s: option `--%s' doesn't allow an argument\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:712
+- #, c-format
+- msgid "%s: option `%c%s' doesn't allow an argument\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:730 ../libiberty/getopt.c:903
+- #, c-format
+- msgid "%s: option `%s' requires an argument\n"
+- msgstr ""
+-
+- #. --option
+- #: ../libiberty/getopt.c:759
+- #, c-format
+- msgid "%s: unrecognized option `--%s'\n"
+- msgstr ""
+-
+- #. +option or -option
+- #: ../libiberty/getopt.c:763
+- #, c-format
+- msgid "%s: unrecognized option `%c%s'\n"
+- msgstr ""
+-
+- #. 1003.2 specifies the format of this message.
+- #: ../libiberty/getopt.c:789
+- #, c-format
+- msgid "%s: illegal option -- %c\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:792
+- #, c-format
+- msgid "%s: invalid option -- %c\n"
+- msgstr ""
+-
+- #. 1003.2 specifies the format of this message.
+- #: ../libiberty/getopt.c:822 ../libiberty/getopt.c:952
+- #, c-format
+- msgid "%s: option requires an argument -- %c\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:869
+- #, c-format
+- msgid "%s: option `-W %s' is ambiguous\n"
+- msgstr ""
+-
+- #: ../libiberty/getopt.c:887
+- #, c-format
+- msgid "%s: option `-W %s' doesn't allow an argument\n"
+- msgstr ""
+-
+- #: integrate.c:146
+- msgid "varargs function cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:149
+- msgid "function using alloca cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:152
+- msgid "function with nested functions cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:159 integrate.c:201
+- msgid "function too large to be inline"
+- msgstr ""
+-
+- #: integrate.c:169
+- msgid "no prototype, and parameter address used; cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:176 integrate.c:230
+- msgid "inline functions not supported for this return value type"
+- msgstr ""
+-
+- #: integrate.c:180
+- msgid "function with varying-size return value cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:187
+- msgid "function with varying-size parameter cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:189
+- msgid "function with transparent unit parameter cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:208
+- msgid "function with computed jump cannot inline"
+- msgstr ""
+-
+- #: integrate.c:212
+- msgid "function with nonlocal goto cannot be inline"
+- msgstr ""
+-
+- #: integrate.c:224
+- msgid "function with complex parameters cannot be inline"
+- msgstr ""
+-
+- #: objc/objc-act.c:667
+- msgid "Objective-C text in C source file"
+- msgstr ""
+-
+- #: objc/objc-act.c:878
+- #, c-format
+- msgid "object does not conform to the `%s' protocol"
+- msgstr ""
+-
+- #: objc/objc-act.c:916
+- #, c-format
+- msgid "class `%s' does not implement the `%s' protocol"
+- msgstr ""
+-
+- #: objc/objc-act.c:998
+- #, c-format
+- msgid "`%s' cannot be statically allocated"
+- msgstr ""
+-
+- #: objc/objc-act.c:999
+- msgid "statically allocated objects not supported"
+- msgstr ""
+-
+- #: objc/objc-act.c:1060
+- #, c-format
+- msgid "Unexpected type for `id' (%s)"
+- msgstr ""
+-
+- #: objc/objc-act.c:1064
+- msgid "Undefined type `id', please import <objc/objc.h>"
+- msgstr ""
+-
+- #: objc/objc-act.c:1113 objc/objc-act.c:5363
+- #, c-format
+- msgid "Cannot find protocol declaration for `%s'"
+- msgstr ""
+-
+- #: objc-parse.y:1490 objc/objc-act.c:1350 objc/objc-act.c:5897
+- #: objc/objc-act.c:6207 objc/objc-act.c:6255 objc/objc-act.c:6291
+- #, c-format
+- msgid "Cannot find interface declaration for `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:2425
+- #, c-format
+- msgid "Cannot find class `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:2427
+- #, c-format
+- msgid "Class `%s' already exists"
+- msgstr ""
+-
+- #. fatal did not work with 2 args...should fix
+- #: objc/objc-act.c:2559
+- #, c-format
+- msgid "Cannot find interface declaration for `%s', superclass of `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:2567
+- #, c-format
+- msgid "Circular inheritance in interface declaration for `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:3616 objc/objc-act.c:3633
+- msgid "inconsistent instance variable specification"
+- msgstr ""
+-
+- #: objc/objc-act.c:4846
+- #, c-format
+- msgid "multiple declarations for method `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:4963
+- #, c-format
+- msgid "invalid receiver type `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5031 objc/objc-act.c:5057 objc/objc-act.c:5105
+- #, c-format
+- msgid "`%s' does not respond to `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5037 objc/objc-act.c:7329
+- #, c-format
+- msgid "no super class declared in interface for `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5135
+- msgid "cannot find class (factory) method."
+- msgstr ""
+-
+- #: objc/objc-act.c:5136 objc/objc-act.c:5180
+- #, c-format
+- msgid "return type for `%s' defaults to id"
+- msgstr ""
+-
+- #: objc/objc-act.c:5153
+- #, c-format
+- msgid "method `%s' not implemented by protocol."
+- msgstr ""
+-
+- #: objc/objc-act.c:5162
+- msgid "return type defaults to id"
+- msgstr ""
+-
+- #: objc/objc-act.c:5179
+- msgid "cannot find method."
+- msgstr ""
+-
+- #. Historically, a class method that produced objects (factory
+- #. method) would assign `self' to the instance that it
+- #. allocated. This would effectively turn the class method into
+- #. an instance method. Following this assignment, the instance
+- #. variables could be accessed. That practice, while safe,
+- #. violates the simple rule that a class method should not refer
+- #. to an instance variable. It's better to catch the cases
+- #. where this is done unknowingly than to support the above
+- #. paradigm.
+- #: objc/objc-act.c:5438
+- #, c-format
+- msgid "instance variable `%s' accessed in class method"
+- msgstr ""
+-
+- #: objc/objc-act.c:5694
+- #, c-format
+- msgid "duplicate definition of class method `%s'."
+- msgstr ""
+-
+- #: objc/objc-act.c:5700
+- #, c-format
+- msgid "duplicate declaration of class method `%s'."
+- msgstr ""
+-
+- #: objc/objc-act.c:5740
+- #, c-format
+- msgid "duplicate definition of instance method `%s'."
+- msgstr ""
+-
+- #: objc/objc-act.c:5746
+- #, c-format
+- msgid "duplicate declaration of instance method `%s'."
+- msgstr ""
+-
+- #: objc/objc-act.c:5786
+- #, c-format
+- msgid "duplicate interface declaration for category `%s(%s)'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5872
+- #, c-format
+- msgid "instance variable `%s' is declared private"
+- msgstr ""
+-
+- #: objc/objc-act.c:5919
+- #, c-format
+- msgid "instance variable `%s' is declared %s"
+- msgstr ""
+-
+- #: objc/objc-act.c:5929
+- msgid "static access to object of type `id'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5966 objc/objc-act.c:6060
+- #, c-format
+- msgid "incomplete implementation of class `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5970 objc/objc-act.c:6065
+- #, c-format
+- msgid "incomplete implementation of category `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:5975 objc/objc-act.c:6070
+- #, c-format
+- msgid "method definition for `%c%s' not found"
+- msgstr ""
+-
+- #: objc/objc-act.c:6111
+- #, c-format
+- msgid "%s `%s' does not fully implement the `%s' protocol"
+- msgstr ""
+-
+- #: objc/objc-act.c:6179
+- #, c-format
+- msgid "reimplementation of class `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:6220
+- #, c-format
+- msgid "conflicting super class name `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:6235
+- #, c-format
+- msgid "duplicate interface declaration for class `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:6481
+- #, c-format
+- msgid "duplicate declaration for protocol `%s'"
+- msgstr ""
+-
+- #: objc/objc-act.c:7370
+- msgid "[super ...] must appear in a method context"
+- msgstr ""
+-
+- #: objc/objc-act.c:8325 objc/objc-act.c:8341
+- #, c-format
+- msgid "potential selector conflict for method `%s'"
+- msgstr ""
+-
+- #: objc-parse.y:677
+- #, c-format
+- msgid "Instance variable `%s' implicitly declared as function"
+- msgstr ""
+-
+- #: objc-parse.y:719
+- #, c-format
+- msgid "local declaration of `%s' hides instance variable"
+- msgstr ""
+-
+- #: objc-parse.y:2364
+- msgid "`@end' must appear in an implementation context"
+- msgstr ""
+-
+- #: objc-parse.y:2632 objc-parse.y:2657
+- msgid "method definition not in class context"
+- msgstr ""
+-
+- #: profile.c:805
+- msgid "-fprofile-arcs does not support computed gotos"
+- msgstr ""
+-
+- #: profile.c:1215
+- msgid "Arc profiling: some arc counts were bad."
+- msgstr ""
+-
+- #: profile.c:1448
+- #, c-format
+- msgid "file %s not found, execution counts assumed to be zero."
+- msgstr ""
+-
+- #: protoize.c:622 protoize.c:642
+- #, c-format
+- msgid ""
+- "\n"
+- "%s: virtual memory exceeded\n"
+- msgstr ""
+-
+- #: protoize.c:693
+- #, c-format
+- msgid "%s: internal abort\n"
+- msgstr ""
+-
+- #: protoize.c:783
+- #, c-format
+- msgid "%s: error writing file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:827
+- #, c-format
+- msgid "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n"
+- msgstr ""
+-
+- #: protoize.c:830
+- #, c-format
+- msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n"
+- msgstr ""
+-
+- #: protoize.c:917
+- #, c-format
+- msgid "%s: warning: no read access for file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:925
+- #, c-format
+- msgid "%s: warning: no write access for file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:933
+- #, c-format
+- msgid "%s: warning: no write access for dir containing `%s'\n"
+- msgstr ""
+-
+- #. Catch cases like /.. where we try to backup to a
+- #. point above the absolute root of the logical file
+- #. system.
+- #: protoize.c:1325
+- #, c-format
+- msgid "%s: invalid file name: %s\n"
+- msgstr ""
+-
+- #: protoize.c:1476
+- #, c-format
+- msgid "%s: %s: can't get status: %s\n"
+- msgstr ""
+-
+- #: protoize.c:1497
+- #, c-format
+- msgid ""
+- "\n"
+- "%s: fatal error: aux info file corrupted at line %d\n"
+- msgstr ""
+-
+- #: protoize.c:1821
+- #, c-format
+- msgid "%s:%d: declaration of function `%s' takes different forms\n"
+- msgstr ""
+-
+- #: protoize.c:2072
+- #, c-format
+- msgid "%s: compiling `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2096
+- #, c-format
+- msgid "%s: wait: %s\n"
+- msgstr ""
+-
+- #: protoize.c:2101
+- #, c-format
+- msgid "%s: subprocess got fatal signal %d\n"
+- msgstr ""
+-
+- #: protoize.c:2109
+- #, c-format
+- msgid "%s: %s exited with status %d\n"
+- msgstr ""
+-
+- #: protoize.c:2161
+- #, c-format
+- msgid "%s: warning: missing SYSCALLS file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2170 protoize.c:2199
+- #, c-format
+- msgid "%s: can't read aux info file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2215 protoize.c:2243
+- #, c-format
+- msgid "%s: can't get status of aux info file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2265
+- #, c-format
+- msgid "%s: can't open aux info file `%s' for reading: %s\n"
+- msgstr ""
+-
+- #: protoize.c:2283
+- #, c-format
+- msgid "%s: error reading aux info file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2296
+- #, c-format
+- msgid "%s: error closing aux info file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2312
+- #, c-format
+- msgid "%s: can't delete aux info file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2380 protoize.c:4376
+- #, c-format
+- msgid "%s: can't delete file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2457
+- #, c-format
+- msgid "%s: warning: can't link file `%s' to `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2467
+- #, c-format
+- msgid "%s: warning: can't delete file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:2591
+- #, c-format
+- msgid "%s: conflicting extern definitions of '%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2595
+- #, c-format
+- msgid "%s: declarations of '%s' will not be converted\n"
+- msgstr ""
+-
+- #: protoize.c:2597
+- #, c-format
+- msgid "%s: conflict list for '%s' follows:\n"
+- msgstr ""
+-
+- #: protoize.c:2630
+- #, c-format
+- msgid "%s: warning: using formals list from %s(%d) for function `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2670
+- #, c-format
+- msgid "%s: %d: `%s' used but missing from SYSCALLS\n"
+- msgstr ""
+-
+- #: protoize.c:2676
+- #, c-format
+- msgid "%s: %d: warning: no extern definition for `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2707
+- #, c-format
+- msgid "%s: warning: no static definition for `%s' in file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2713
+- #, c-format
+- msgid "%s: multiple static defs of `%s' in file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:2886 protoize.c:2889
+- #, c-format
+- msgid "%s: %d: warning: source too confusing\n"
+- msgstr ""
+-
+- #: protoize.c:3095
+- #, c-format
+- msgid "%s: %d: warning: varargs function declaration not converted\n"
+- msgstr ""
+-
+- #: protoize.c:3110
+- #, c-format
+- msgid "%s: declaration of function `%s' not converted\n"
+- msgstr ""
+-
+- #: protoize.c:3233
+- #, c-format
+- msgid "%s: warning: too many parameter lists in declaration of `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:3254
+- #, c-format
+- msgid ""
+- "\n"
+- "%s: warning: too few parameter lists in declaration of `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:3352
+- #, c-format
+- msgid "%s: %d: warning: found `%s' but expected `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:3530
+- #, c-format
+- msgid "%s: local declaration for function `%s' not inserted\n"
+- msgstr ""
+-
+- #: protoize.c:3557
+- #, c-format
+- msgid ""
+- "\n"
+- "%s: %d: warning: can't add declaration of `%s' into macro call\n"
+- msgstr ""
+-
+- #: protoize.c:3631
+- #, c-format
+- msgid "%s: global declarations for file `%s' not inserted\n"
+- msgstr ""
+-
+- #: protoize.c:3722 protoize.c:3752
+- #, c-format
+- msgid "%s: definition of function `%s' not converted\n"
+- msgstr ""
+-
+- #: protoize.c:3741
+- #, c-format
+- msgid "%s: %d: warning: definition of %s not converted\n"
+- msgstr ""
+-
+- #: protoize.c:4071
+- #, c-format
+- msgid "%s: found definition of `%s' at %s(%d)\n"
+- msgstr ""
+-
+- #. If we make it here, then we did not know about this
+- #. function definition.
+- #: protoize.c:4087
+- #, c-format
+- msgid "%s: %d: warning: `%s' excluded by preprocessing\n"
+- msgstr ""
+-
+- #: protoize.c:4090
+- #, c-format
+- msgid "%s: function definition not converted\n"
+- msgstr ""
+-
+- #: protoize.c:4149
+- #, c-format
+- msgid "%s: `%s' not converted\n"
+- msgstr ""
+-
+- #: protoize.c:4157
+- #, c-format
+- msgid "%s: would convert file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:4160
+- #, c-format
+- msgid "%s: converting file `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:4170
+- #, c-format
+- msgid "%s: can't get status for file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:4206
+- #, c-format
+- msgid "%s: can't open file `%s' for reading: %s\n"
+- msgstr ""
+-
+- #: protoize.c:4221
+- #, c-format
+- msgid ""
+- "\n"
+- "%s: error reading input file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:4255
+- #, c-format
+- msgid "%s: can't create/open clean file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:4356
+- #, c-format
+- msgid "%s: warning: file `%s' already saved in `%s'\n"
+- msgstr ""
+-
+- #: protoize.c:4363
+- #, c-format
+- msgid "%s: can't link file `%s' to `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:4390
+- #, c-format
+- msgid "%s: can't create/open output file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:4419
+- #, c-format
+- msgid "%s: can't change mode of file `%s': %s\n"
+- msgstr ""
+-
+- #: protoize.c:4570
+- #, c-format
+- msgid "%s: cannot get working directory: %s\n"
+- msgstr ""
+-
+- #: protoize.c:4668
+- #, c-format
+- msgid "%s: input file names must have .c suffixes: %s\n"
+- msgstr ""
+-
+- #: real.c:770 real.c:937
+- msgid "conversion from NaN to int"
+- msgstr ""
+-
+- #: real.c:793
+- msgid "conversion from NaN to unsigned int"
+- msgstr ""
+-
+- #: real.c:2646
+- msgid "floating point overflow"
+- msgstr ""
+-
+- #: real.c:4275 real.c:6548 real.c:6629
+- msgid "overflow on truncation to integer"
+- msgstr ""
+-
+- #: real.c:4347
+- msgid "overflow on truncation to unsigned integer"
+- msgstr ""
+-
+- #: real.c:5693
+- #, c-format
+- msgid "%s: argument domain error"
+- msgstr ""
+-
+- #: real.c:5694
+- #, c-format
+- msgid "%s: function singularity"
+- msgstr ""
+-
+- #: real.c:5695
+- #, c-format
+- msgid "%s: overflow range error"
+- msgstr ""
+-
+- #: real.c:5696
+- #, c-format
+- msgid "%s: underflow range error"
+- msgstr ""
+-
+- #: real.c:5697
+- #, c-format
+- msgid "%s: total loss of precision"
+- msgstr ""
+-
+- #: real.c:5698
+- #, c-format
+- msgid "%s: partial loss of precision"
+- msgstr ""
+-
+- #: real.c:5699
+- #, c-format
+- msgid "%s: NaN - producing operation"
+- msgstr ""
+-
+- #: reg-stack.c:764
+- #, c-format
+- msgid "Output constraint %d must specify a single register"
+- msgstr ""
+-
+- #: reg-stack.c:784
+- msgid "Output regs must be grouped at top of stack"
+- msgstr ""
+-
+- #: reg-stack.c:821
+- msgid "Implicitly popped regs must be grouped at top of stack"
+- msgstr ""
+-
+- #: reg-stack.c:840
+- #, c-format
+- msgid "Output operand %d must use `&' constraint"
+- msgstr ""
+-
+- #: regclass.c:593
+- #, c-format
+- msgid "can't use '%s' as a %s register"
+- msgstr ""
+-
+- #: regclass.c:604
+- #, c-format
+- msgid "unknown register name: %s"
+- msgstr ""
+-
+- #: regclass.c:616
+- msgid "register used for two global register variables"
+- msgstr ""
+-
+- #: regclass.c:621
+- msgid "call-clobbered register used for global register variable"
+- msgstr ""
+-
+- #: reload.c:1242
+- msgid "cannot reload integer constant operand in `asm'"
+- msgstr ""
+-
+- #: reload.c:1264
+- msgid "impossible register constraint in `asm'"
+- msgstr ""
+-
+- #: reload.c:3389
+- msgid "`&' constraint used with no register class"
+- msgstr ""
+-
+- #: reload.c:3537
+- msgid "Unable to generate reloads for:"
+- msgstr ""
+-
+- #: reload.c:3538 reload.c:3754
+- msgid "inconsistent operand constraints in an `asm'"
+- msgstr ""
+-
+- #: reload1.c:1192
+- msgid "frame size too large for reliable stack checking"
+- msgstr ""
+-
+- #: reload1.c:1195
+- msgid "try reducing the number of local variables"
+- msgstr ""
+-
+- #: reload1.c:1606
+- msgid ""
+- "Two dissimilar machine modes both need groups of consecutive regs of the "
+- "same class"
+- msgstr ""
+-
+- #: reload1.c:2264
+- msgid "`asm' needs too many reloads"
+- msgstr ""
+-
+- #: reload1.c:2266
+- msgid "Unable to find a register to spill."
+- msgstr ""
+-
+- #. The error message is still correct - we know only that it wasn't
+- #. an asm statement that caused the problem, but one of the global
+- #. registers declared by the users might have screwed us.
+- #: reload1.c:2304 reload1.c:2312
+- #, c-format
+- msgid "fixed or forbidden register %d (%s) was spilled for class %s."
+- msgstr ""
+-
+- #: reload1.c:2306
+- msgid "This may be due to a compiler bug or to impossible asm"
+- msgstr ""
+-
+- #: reload1.c:2307
+- msgid "statements or clauses."
+- msgstr ""
+-
+- #: reload1.c:2308
+- msgid "This is the instruction:"
+- msgstr ""
+-
+- #: reload1.c:2310
+- msgid "Invalid `asm' statement:"
+- msgstr ""
+-
+- #: reload1.c:4319
+- msgid "`asm' operand requires impossible reload"
+- msgstr ""
+-
+- #. It's the compiler's fault.
+- #: reload1.c:5583
+- msgid "Could not find a spill register"
+- msgstr ""
+-
+- #: reload1.c:5588
+- msgid "`asm' operand constraint incompatible with operand size"
+- msgstr ""
+-
+- #. It's the compiler's fault.
+- #: reload1.c:7181
+- msgid "VOIDmode on an output"
+- msgstr ""
+-
+- #: reload1.c:7182
+- msgid "output operand is constant in `asm'"
+- msgstr ""
+-
+- #: stmt.c:749
+- #, c-format
+- msgid "jump to `%s' invalidly jumps into binding contour"
+- msgstr ""
+-
+- #: stmt.c:976 stmt.c:3398
+- #, c-format
+- msgid "label `%s' used before containing binding contour"
+- msgstr ""
+-
+- #: stmt.c:1102 stmt.c:1159
+- msgid "`asm' cannot be used with `-fcheck-memory-usage'"
+- msgstr ""
+-
+- #: stmt.c:1173
+- #, c-format
+- msgid "unknown register name `%s' in `asm'"
+- msgstr ""
+-
+- #: stmt.c:1188
+- msgid "too many alternatives in `asm'"
+- msgstr ""
+-
+- #: stmt.c:1198
+- msgid "operand constraints for `asm' differ in number of alternatives"
+- msgstr ""
+-
+- #: stmt.c:1244
+- msgid "output operand constraint lacks `='"
+- msgstr ""
+-
+- #: stmt.c:1254
+- #, c-format
+- msgid "output constraint `%c' for operand %d is not at the beginning"
+- msgstr ""
+-
+- #: stmt.c:1263
+- #, c-format
+- msgid "output operand constraint %d contains `+'"
+- msgstr ""
+-
+- #: stmt.c:1272
+- msgid "operand constraint contains '+' or '=' at illegal position."
+- msgstr ""
+-
+- #: stmt.c:1278 stmt.c:1430
+- msgid "`%%' constraint used with last operand"
+- msgstr ""
+-
+- #: stmt.c:1295
+- msgid "matching constraint not valid in output operand"
+- msgstr ""
+-
+- #: stmt.c:1343
+- #, c-format
+- msgid "output number %d not directly addressable"
+- msgstr ""
+-
+- #: stmt.c:1368
+- #, c-format
+- msgid "more than %d operands in `asm'"
+- msgstr ""
+-
+- #: stmt.c:1404
+- #, c-format
+- msgid "hard register `%s' listed as input operand to `asm'"
+- msgstr ""
+-
+- #: stmt.c:1421
+- #, c-format
+- msgid "input operand constraint contains `%c'"
+- msgstr ""
+-
+- #: stmt.c:1460
+- msgid "matching constraint references invalid operand number"
+- msgstr ""
+-
+- #. ??? Leave this only until we have experience with what
+- #. happens in combine and elsewhere when constraints are
+- #. not satisfied.
+- #: stmt.c:1501 stmt.c:1525
+- #, c-format
+- msgid "asm operand %d probably doesn't match constraints"
+- msgstr ""
+-
+- #: stmt.c:3360
+- #, c-format
+- msgid "unused variable `%s'"
+- msgstr ""
+-
+- #: stmt.c:4912
+- #, c-format
+- msgid "enumeration value `%s' not handled in switch"
+- msgstr ""
+-
+- #: stmt.c:4939 stmt.c:4959
+- #, c-format
+- msgid "case value `%ld' not in enumerated type"
+- msgstr ""
+-
+- #: stmt.c:4942 stmt.c:4962
+- #, c-format
+- msgid "case value `%ld' not in enumerated type `%s'"
+- msgstr ""
+-
+- #: stor-layout.c:110
+- msgid "type size can't be explicitly evaluated"
+- msgstr ""
+-
+- #: stor-layout.c:112
+- msgid "variable-size type declared outside of any function"
+- msgstr ""
+-
+- #: toplev.c:1429
+- #, c-format
+- msgid "%s: warnings being treated as errors\n"
+- msgstr ""
+-
+- #: toplev.c:1454
+- #, c-format
+- msgid "%s: %s: I/O error\n"
+- msgstr ""
+-
+- #: toplev.c:1491
+- msgid "internal error--unrecognizable insn:"
+- msgstr ""
+-
+- #: toplev.c:1493
+- msgid "internal error--insn does not satisfy its constraints:"
+- msgstr ""
+-
+- #: toplev.c:1548
+- msgid "At top level:\n"
+- msgstr ""
+-
+- #: toplev.c:1551
+- #, c-format
+- msgid "In method `%s':\n"
+- msgstr ""
+-
+- #: toplev.c:1552
+- #, c-format
+- msgid "In function `%s':\n"
+- msgstr ""
+-
+- #: toplev.c:1586
+- #, c-format
+- msgid "In file included from %s:%d"
+- msgstr ""
+-
+- #: toplev.c:1587
+- #, c-format
+- msgid ""
+- ",\n"
+- " from %s:%d"
+- msgstr ""
+-
+- #: toplev.c:2224
+- msgid "sorry, not implemented: "
+- msgstr ""
+-
+- #: toplev.c:2280
+- msgid "internal gcc abort"
+- msgstr ""
+-
+- #: toplev.c:2829
+- #, c-format
+- msgid "`%s' used but never defined"
+- msgstr ""
+-
+- #: toplev.c:2832
+- #, c-format
+- msgid "`%s' declared `static' but never defined"
+- msgstr ""
+-
+- #: toplev.c:2853
+- #, c-format
+- msgid "`%s' defined but not used"
+- msgstr ""
+-
+- #: toplev.c:3186
+- msgid "-ffunction-sections not supported for this target."
+- msgstr ""
+-
+- #: toplev.c:3191
+- msgid "-fdata-sections not supported for this target."
+- msgstr ""
+-
+- #: toplev.c:3199
+- msgid "-ffunction-sections disabled; it makes profiling impossible."
+- msgstr ""
+-
+- #: toplev.c:3205
+- msgid "-ffunction-sections may affect debugging on some targets."
+- msgstr ""
+-
+- #: toplev.c:3268
+- msgid "Errors detected in input file (your bison.simple is out of date)\n"
+- msgstr ""
+-
+- #: toplev.c:3552
+- #, c-format
+- msgid "invalid register name `%s' for register variable"
+- msgstr ""
+-
+- #: toplev.c:5052
+- #, c-format
+- msgid "unrecognised gcc debugging option: %c"
+- msgstr ""
+-
+- #: toplev.c:5187
+- msgid "`-a' option (basic block profile) not supported"
+- msgstr ""
+-
+- #: toplev.c:5195
+- msgid "`-ax' option (jump profiling) not supported"
+- msgstr ""
+-
+- #: toplev.c:5252
+- #, c-format
+- msgid "use -gdwarf -g%d for DWARF v1, level %d"
+- msgstr ""
+-
+- #: toplev.c:5255
+- msgid "use -gdwarf-2 for DWARF v2"
+- msgstr ""
+-
+- #: toplev.c:5260
+- #, c-format
+- msgid "ignoring option `%s' due to invalid debug level specification"
+- msgstr ""
+-
+- #: toplev.c:5281 toplev.c:5313
+- #, c-format
+- msgid "`-%s' not supported by this configuration of GCC"
+- msgstr ""
+-
+- #: toplev.c:5289
+- #, c-format
+- msgid "`-%s' ignored, conflicts with `-g%s'"
+- msgstr ""
+-
+- #: toplev.c:5333
+- #, c-format
+- msgid "Invalid option `-%s'"
+- msgstr ""
+-
+- #: toplev.c:5370
+- msgid "-Wuninitialized is not supported without -O"
+- msgstr ""
+-
+- #: toplev.c:5389
+- msgid "`-ax' and `-a' are conflicting options. `-a' ignored."
+- msgstr ""
+-
+- #: toplev.c:5410
+- msgid "instruction scheduling not supported on this target machine"
+- msgstr ""
+-
+- #: toplev.c:5414
+- msgid "this target machine does not have delayed branches"
+- msgstr ""
+-
+- #: toplev.c:5428
+- #, c-format
+- msgid "-f%sleading-underscore not supported on this target machine"
+- msgstr ""
+-
+- #: toplev.c:5448
+- #, c-format
+- msgid "Data size %ld.\n"
+- msgstr ""
+-
+- #: toplev.c:5520
+- #, c-format
+- msgid ""
+- "%s%s%s version %s (%s) compiled by GNU C version %s.\n"
+- "%s%s%s version %s (%s) compiled by CC.\n"
+- msgstr ""
+-
+- #: toplev.c:5575
+- msgid "options passed: "
+- msgstr ""
+-
+- #: toplev.c:5604
+- msgid "options enabled: "
+- msgstr ""
+-
+- #: tree.c:1282
+- #, c-format
+- msgid "`%s' and `%s' identical in first %d characters"
+- msgstr ""
+-
+- #: tree.c:4264
+- msgid "arrays of functions are not meaningful"
+- msgstr ""
+-
+- #: tree.c:4321
+- msgid "function return type cannot be function"
+- msgstr ""
+-
+- #: tree.c:5015
+- msgid "invalid initializer for bit string"
+- msgstr ""
+-
+- #: tree.c:5084
+- #, c-format
+- msgid "%s:%d: Expect %s, have %s\n"
+- msgstr ""
+-
+- #: tree.c:5104
+- #, c-format
+- msgid "%s:%d: Expect '%c', have '%s'\n"
+- msgstr ""
+-
+- #: tree.c:5132
+- #, c-format
+- msgid "%s:%d: Expect expression, have '%s'\n"
+- msgstr ""
+-
+- #: varasm.c:657
+- #, c-format
+- msgid "register name not specified for `%s'"
+- msgstr ""
+-
+- #: varasm.c:661
+- #, c-format
+- msgid "invalid register name for `%s'"
+- msgstr ""
+-
+- #: varasm.c:666
+- #, c-format
+- msgid "register name given for non-register variable `%s'"
+- msgstr ""
+-
+- #: varasm.c:671
+- #, c-format
+- msgid "data type of `%s' isn't suitable for a register"
+- msgstr ""
+-
+- #: varasm.c:676
+- #, c-format
+- msgid "register number for `%s' isn't suitable for data type"
+- msgstr ""
+-
+- #: varasm.c:685
+- msgid "global register variable has initial value"
+- msgstr ""
+-
+- #: varasm.c:689
+- msgid "global register variable follows a function definition"
+- msgstr ""
+-
+- #: varasm.c:691
+- msgid "volatile register variables don't work as you might wish"
+- msgstr ""
+-
+- #: varasm.c:1266
+- #, c-format
+- msgid "size of variable `%s' is too large"
+- msgstr ""
+-
+- #: varasm.c:1306
+- #, c-format
+- msgid ""
+- "alignment of `%s' is greater than maximum object file alignment. Using %d."
+- msgstr ""
+-
+- #: varasm.c:1350
+- #, c-format
+- msgid "requested alignment for %s is greater than implemented alignment of %d."
+- msgstr ""
+-
+- #: varasm.c:1890
+- msgid "floating point trap outputting a constant"
+- msgstr ""
+-
+- #: varasm.c:3948
+- msgid "initializer for integer value is too complicated"
+- msgstr ""
+-
+- #: varasm.c:3954
+- msgid "initializer for floating value is not a floating constant"
+- msgstr ""
+-
+- #: varasm.c:4011
+- msgid "unknown set constructor type"
+- msgstr ""
+-
+- #: varasm.c:4169
+- #, c-format
+- msgid "invalid initial value for member `%s'"
+- msgstr ""
+-
+- #: varasm.c:4342
+- #, c-format
+- msgid "weak declaration of `%s' must be public"
+- msgstr ""
+-
+- #: varasm.c:4344
+- #, c-format
+- msgid "weak declaration of `%s' must precede definition"
+- msgstr ""
+-
+- #: varasm.c:4431
+- msgid "only weak aliases are supported in this configuration"
+- msgstr ""
+-
+- #: varasm.c:4436
+- msgid "alias definitions not supported in this configuration; ignored"
+- msgstr ""
+-
+- #: config/arc/arc.h:59 config/mips/mips.h:954
+- msgid "may not use both -EB and -EL"
+- msgstr ""
+-
+- #: config/arm/arm.h:183
+- msgid "-mapcs-26 and -mapcs-32 may not be used together"
+- msgstr ""
+-
+- #: config/arm/arm.h:195
+- msgid "-msoft-float and -mhard_float may not be used together"
+- msgstr ""
+-
+- #: config/arm/arm.h:206
+- msgid "-mbig-endian and -mlittle-endian may not be used together"
+- msgstr ""
+-
+- #: config/arm/riscix.h:72 config/arm/riscix.h:140
+- msgid "-mbsd and -pedantic incompatible"
+- msgstr ""
+-
+- #: config/arm/riscix.h:73 config/arm/riscix.h:141
+- msgid "-mbsd and -mxopen incompatible"
+- msgstr ""
+-
+- #: config/arm/riscix.h:74 config/arm/riscix.h:142
+- msgid "-mxopen and -pedantic incompatible"
+- msgstr ""
+-
+- #: config/dsp16xx/dsp16xx.h:126 config/dsp16xx/dsp16xx.h:135
+- msgid "A -ifile option requires a -map option"
+- msgstr ""
+-
+- #: config/i386/freebsd.h:239
+- msgid "`-p' not supported; use `-pg' and gprof(1)"
+- msgstr ""
+-
+- #: config/i386/sco5.h:804 config/i386/sco5.h:879
+- msgid "-static not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i386/sco5.h:805 config/i386/sco5.h:880
+- msgid "-shared not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i386/sco5.h:806 config/i386/sco5.h:881
+- msgid "-symbolic not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i386/sco5.h:844
+- msgid "-fpic is not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i386/sco5.h:845
+- msgid "-fPIC is not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i386/sco5.h:882
+- msgid "-fpic not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i386/sco5.h:883
+- msgid "-fPIC not valid with -mcoff"
+- msgstr ""
+-
+- #: config/i860/fx2800.h:305
+- msgid "-p option not supported: use -pg instead"
+- msgstr ""
+-
+- #: config/mips/mips.h:811
+- msgid "-pipe is not supported."
+- msgstr ""
+-
+- #: config/mips/mips.h:949
+- msgid "may not use both -mfp64 and -msingle-float"
+- msgstr ""
+-
+- #: config/mips/mips.h:950
+- msgid "may not use both -mfp64 and -m4650"
+- msgstr ""
+-
+- #: config/mips/r3900.h:27 config/mips/r3900.h:41
+- msgid "-mhard-float not supported."
+- msgstr ""
+-
+- #: config/mips/r3900.h:29 config/mips/r3900.h:43
+- msgid "-msingle-float and -msoft-float can not both be specified."
+- msgstr ""
+-
+- #: config/nextstep.h:166 config/nextstep.h:169
+- msgid "-p profiling is no longer supported. Use -pg instead."
+- msgstr ""
+-
+- #: config/vax/vax.h:36 config/vax/vax.h:37
+- msgid "profiling not supported with -mg\n"
+- msgstr ""
+-
+- #: cp/lang-specs.h:34 cp/lang-specs.h:66
+- msgid "GNU C++ does not support -C without using -E"
+- msgstr ""
+-
+- #: cp/lang-specs.h:59 cp/lang-specs.h:81 cp/lang-specs.h:93 gcc.c:627
+- #: gcc.c:653 gcc.c:698
+- msgid "-pg and -fomit-frame-pointer are incompatible"
+- msgstr ""
+-
+- #: gcc.c:599 gcc.c:635 gcc.c:663 gcc.c:680 gcc.c:711
+- msgid "GNU C does not support -C without using -E"
+- msgstr ""
+-
+- #: gcc.c:675
+- msgid "-E required when input is from standard input"
+- msgstr ""
+-
+- #: gcc.c:678
+- msgid "Compilation of header file requested"
+- msgstr ""
+--- 0 ----
+diff -c3rpN gcc-2.95.3.orig/gcc/reload1.c gcc-2.95.4/gcc/reload1.c
+*** gcc-2.95.3.orig/gcc/reload1.c Thu Jan 25 14:03:21 2001
+--- gcc-2.95.4/gcc/reload1.c Wed Jun 6 01:38:24 2001
+*************** reload_as_needed (live_known)
+*** 4278,4286 ****
+ spill_reg_order);
+ }
+
+- if (num_eliminable && chain->need_elim)
+- update_eliminable_offsets ();
+-
+ if (n_reloads > 0)
+ {
+ rtx next = NEXT_INSN (insn);
+--- 4278,4283 ----
+*************** reload_as_needed (live_known)
+*** 4327,4332 ****
+--- 4324,4333 ----
+ NOTE_LINE_NUMBER (p) = NOTE_INSN_DELETED;
+ }
+ }
++
++ if (num_eliminable && chain->need_elim)
++ update_eliminable_offsets ();
++
+ /* Any previously reloaded spilled pseudo reg, stored in this insn,
+ is no longer validly lying around to save a future reload.
+ Note that this does not detect pseudos that were reloaded
+*************** delete_output_reload (insn, j, last_relo
+*** 8071,8077 ****
+ }
+ n_occurrences = count_occurrences (PATTERN (insn), reg);
+ if (substed)
+! n_occurrences += count_occurrences (PATTERN (insn), substed);
+ if (n_occurrences > n_inherited)
+ return;
+
+--- 8072,8080 ----
+ }
+ n_occurrences = count_occurrences (PATTERN (insn), reg);
+ if (substed)
+! n_occurrences += count_occurrences (PATTERN (insn),
+! eliminate_regs (substed, 0,
+! NULL_RTX));
+ if (n_occurrences > n_inherited)
+ return;
+
+*************** reload_combine_note_use (xp, insn)
+*** 9967,9972 ****
+--- 9970,9990 ----
+ }
+ break;
+
++ case USE:
++ /* If this is the USE of a return value, we can't change it. */
++ if (GET_CODE (XEXP (x, 0)) == REG && REG_FUNCTION_VALUE_P (XEXP (x, 0)))
++ {
++ /* Mark the return register as used in an unknown fashion. */
++ rtx reg = XEXP (x, 0);
++ int regno = REGNO (reg);
++ int nregs = HARD_REGNO_NREGS (regno, GET_MODE (reg));
++
++ while (--nregs >= 0)
++ reg_state[regno + nregs].use_index = -1;
++ return;
++ }
++ break;
++
+ case CLOBBER:
+ if (GET_CODE (SET_DEST (x)) == REG)
+ return;
+*************** reload_combine_note_use (xp, insn)
+*** 9983,9993 ****
+--- 10001,10022 ----
+ {
+ int regno = REGNO (x);
+ int use_index;
++ int nregs;
+
+ /* Some spurious USEs of pseudo registers might remain.
+ Just ignore them. */
+ if (regno >= FIRST_PSEUDO_REGISTER)
+ return;
++
++ nregs = HARD_REGNO_NREGS (regno, GET_MODE (x));
++
++ /* We can't substitute into multi-hard-reg uses. */
++ if (nregs > 1)
++ {
++ while (--nregs >= 0)
++ reg_state[regno + nregs].use_index = -1;
++ return;
++ }
+
+ /* If this register is already used in some unknown fashion, we
+ can't do anything.
+diff -c3rpN gcc-2.95.3.orig/gcc/rtl.h gcc-2.95.4/gcc/rtl.h
+*** gcc-2.95.3.orig/gcc/rtl.h Thu Jan 25 14:03:22 2001
+--- gcc-2.95.4/gcc/rtl.h Wed Jun 6 01:38:25 2001
+*************** extern char *note_insn_name[];
+*** 888,893 ****
+--- 888,899 ----
+ /* For a NOTE_INSN_LIVE note, the original basic block number. */
+ #define RANGE_LIVE_ORIG_BLOCK(INSN) (XINT (INSN, 1))
+
++ /* Nonzero if we need to distinguish between the return value of this function
++ and the return value of a function called by this function. This helps
++ integrate.c.
++ This is 1 until after the rtl generation pass. */
++ extern int rtx_equal_function_value_matters;
++
+ /* Generally useful functions. */
+
+ /* The following functions accept a wide integer argument. Rather than
+diff -c3rpN gcc-2.95.3.orig/gcc/texinfo.tex gcc-2.95.4/gcc/texinfo.tex
+*** gcc-2.95.3.orig/gcc/texinfo.tex Wed Dec 16 20:58:28 1998
+--- gcc-2.95.4/gcc/texinfo.tex Wed Jun 6 01:38:27 2001
+***************
+*** 1,5 ****
+ % texinfo.tex -- TeX macros to handle Texinfo files.
+! % $Id: texinfo.tex,v 1.5 1998/06/29 21:40:12 law Exp $
+ %
+ % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
+ % Free Software Foundation, Inc.
+--- 1,5 ----
+ % texinfo.tex -- TeX macros to handle Texinfo files.
+! % $Id: texinfo.tex,v 1.6 1998/12/16 20:58:28 law Exp $
+ %
+ % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
+ % Free Software Foundation, Inc.
+***************
+*** 58,64 ****
+
+ % This automatically updates the version number based on RCS.
+ \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
+! \deftexinfoversion$Revision: 1.5 $
+ \message{Loading texinfo package [Version \texinfoversion]:}
+
+ % If in a .fmt file, print the version number
+--- 58,64 ----
+
+ % This automatically updates the version number based on RCS.
+ \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
+! \deftexinfoversion$Revision: 1.6 $
+ \message{Loading texinfo package [Version \texinfoversion]:}
+
+ % If in a .fmt file, print the version number
+diff -c3rpN gcc-2.95.3.orig/gcc/tm.texi gcc-2.95.4/gcc/tm.texi
+*** gcc-2.95.3.orig/gcc/tm.texi Mon May 31 03:56:15 1999
+--- gcc-2.95.4/gcc/tm.texi Wed Jun 6 01:38:27 2001
+*************** includes @file{tm.h} and most compiler s
+*** 49,54 ****
+--- 49,67 ----
+ You can control the compilation driver.
+
+ @table @code
++ @findex TARGET_OBJECT_SUFFIX
++ @item TARGET_OBJECT_SUFFIX
++ Define this macro to be a C string representing the suffix for object
++ files on your target machine. If you do not define this macro, GCC will
++ use @samp{.o} as the suffix for object files.
++
++ @findex TARGET_EXECUTABLE_SUFFIX
++ @item TARGET_EXECUTABLE_SUFFIX
++ Define this macro to be a C string representing the suffix to be
++ automatically added to executable files on your target machine. If you
++ do not define this macro, GCC will use the null string as the suffix for
++ executable files.
++
+ @findex SWITCH_TAKES_ARG
+ @item SWITCH_TAKES_ARG (@var{char})
+ A C expression which determines whether the option @samp{-@var{char}}
+*************** determined by your operating system envi
+*** 3463,3468 ****
+--- 3476,3488 ----
+ figure them out, compile a small program for profiling using the
+ system's installed C compiler and look at the assembler code that
+ results.
++
++ @findex NO_PROFILE_COUNTERS
++ @item NO_PROFILE_COUNTERS
++ Define this macro if the @code{mcount} subroutine on your system does
++ not need a counter variable allocated for each function. This is true
++ for almost all modern implementations. If you define this macro, you
++ must not use the @var{labelno} argument to @code{FUNCTION_PROFILER}.
+
+ @findex PROFILE_BEFORE_PROLOGUE
+ @item PROFILE_BEFORE_PROLOGUE
+diff -c3rpN gcc-2.95.3.orig/gcc/toplev.c gcc-2.95.4/gcc/toplev.c
+*** gcc-2.95.3.orig/gcc/toplev.c Thu Jan 25 14:03:23 2001
+--- gcc-2.95.4/gcc/toplev.c Wed Jun 6 01:38:27 2001
+*************** You Lose! You must define PREFERRED_DEB
+*** 137,144 ****
+ #define DIR_SEPARATOR '/'
+ #endif
+
+- extern int rtx_equal_function_value_matters;
+-
+ #if ! (defined (VMS) || defined (OS2))
+ extern char **environ;
+ #endif
+--- 137,142 ----
+*************** int flag_instrument_function_entry_exit
+*** 772,777 ****
+--- 770,777 ----
+
+ int flag_no_ident = 0;
+
++ int flag_keep_file_path = 0;
++
+ /* Table of supported debugging formats. */
+ static struct
+ {
+*************** lang_independent_options f_options[] =
+*** 978,983 ****
+--- 978,985 ----
+ "Instrument function entry/exit with profiling calls"},
+ {"leading-underscore", &flag_leading_underscore, 1,
+ "External symbols have a leading underscore" },
++ {"keep-file-path", &flag_keep_file_path,1,
++ "Do not strip path in .file directive"},
+ {"ident", &flag_no_ident, 0,
+ "Process #ident directives"}
+ };
+*************** output_file_directive (asm_file, input_n
+*** 2563,2582 ****
+ FILE *asm_file;
+ const char *input_name;
+ {
+! int len = strlen (input_name);
+! const char *na = input_name + len;
+
+! /* NA gets INPUT_NAME sans directory names. */
+! while (na > input_name)
+! {
+! if (na[-1] == '/')
+! break;
+ #ifdef DIR_SEPARATOR
+! if (na[-1] == DIR_SEPARATOR)
+! break;
+ #endif
+! na--;
+! }
+
+ #ifdef ASM_OUTPUT_MAIN_SOURCE_FILENAME
+ ASM_OUTPUT_MAIN_SOURCE_FILENAME (asm_file, na);
+--- 2565,2591 ----
+ FILE *asm_file;
+ const char *input_name;
+ {
+! const char *na;
+
+! if ( flag_keep_file_path) /* leave the input_name unchanged */
+! na = input_name;
+! else /* strip leadin path from input_name - default behaviour */
+! {
+! int len = strlen (input_name);
+! na = input_name + len;
+!
+! /* NA gets INPUT_NAME sans directory names. */
+! while (na > input_name)
+! {
+! if (na[-1] == '/')
+! break;
+ #ifdef DIR_SEPARATOR
+! if (na[-1] == DIR_SEPARATOR)
+! break;
+ #endif
+! na--;
+! }
+! }
+
+ #ifdef ASM_OUTPUT_MAIN_SOURCE_FILENAME
+ ASM_OUTPUT_MAIN_SOURCE_FILENAME (asm_file, na);
+diff -c3rpN gcc-2.95.3.orig/gcc/varasm.c gcc-2.95.4/gcc/varasm.c
+*** gcc-2.95.3.orig/gcc/varasm.c Mon Feb 19 14:02:02 2001
+--- gcc-2.95.4/gcc/varasm.c Wed Jun 6 01:38:28 2001
+*************** force_const_mem (mode, x)
+*** 3495,3500 ****
+--- 3495,3503 ----
+ pop_obstacks ();
+ }
+
++ if (GET_CODE (x) == LABEL_REF)
++ LABEL_PRESERVE_P (XEXP (x, 0)) = 1;
++
+ /* Allocate a pool constant descriptor, fill it in, and chain it in. */
+
+ pool = (struct pool_constant *) savealloc (sizeof (struct pool_constant));
+diff -c3rpN gcc-2.95.3.orig/gcc/version.c gcc-2.95.4/gcc/version.c
+*** gcc-2.95.3.orig/gcc/version.c Fri Mar 16 12:52:12 2001
+--- gcc-2.95.4/gcc/version.c Wed Jun 6 01:38:28 2001
+***************
+*** 1 ****
+! char *version_string = "2.95.3 20010315 (release)";
+--- 1 ----
+! char *version_string = "2.95.4 20010319 (prerelease-DaveK)";
+diff -c3rpN gcc-2.95.3.orig/libf2c/libF77/Version.c gcc-2.95.4/libf2c/libF77/Version.c
+*** gcc-2.95.3.orig/libf2c/libF77/Version.c Fri Mar 16 12:52:18 2001
+--- gcc-2.95.4/libf2c/libF77/Version.c Wed Jun 6 01:38:50 2001
+*************** static char junk[] = "\n@(#)LIBF77 VERSI
+*** 3,9 ****
+ /*
+ */
+
+! char __G77_LIBF77_VERSION__[] = "0.5.25 20010315 (release)";
+
+ /*
+ 2.00 11 June 1980. File version.c added to library.
+--- 3,9 ----
+ /*
+ */
+
+! char __G77_LIBF77_VERSION__[] = "0.5.25 20010319 (prerelease)";
+
+ /*
+ 2.00 11 June 1980. File version.c added to library.
+diff -c3rpN gcc-2.95.3.orig/libf2c/libI77/Version.c gcc-2.95.4/libf2c/libI77/Version.c
+*** gcc-2.95.3.orig/libf2c/libI77/Version.c Fri Mar 16 12:52:18 2001
+--- gcc-2.95.4/libf2c/libI77/Version.c Wed Jun 6 01:38:54 2001
+*************** static char junk[] = "\n@(#) LIBI77 VERS
+*** 3,9 ****
+ /*
+ */
+
+! char __G77_LIBI77_VERSION__[] = "0.5.25 20010315 (release)";
+
+ /*
+ 2.01 $ format added
+--- 3,9 ----
+ /*
+ */
+
+! char __G77_LIBI77_VERSION__[] = "0.5.25 20010319 (prerelease)";
+
+ /*
+ 2.01 $ format added
+diff -c3rpN gcc-2.95.3.orig/libf2c/libU77/Version.c gcc-2.95.4/libf2c/libU77/Version.c
+*** gcc-2.95.3.orig/libf2c/libU77/Version.c Fri Mar 16 12:52:18 2001
+--- gcc-2.95.4/libf2c/libU77/Version.c Wed Jun 6 01:39:00 2001
+***************
+*** 1,6 ****
+ static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n";
+
+! char __G77_LIBU77_VERSION__[] = "0.5.25 20010315 (release)";
+
+ #include <stdio.h>
+
+--- 1,6 ----
+ static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n";
+
+! char __G77_LIBU77_VERSION__[] = "0.5.25 20010319 (prerelease)";
+
+ #include <stdio.h>
+
+diff -c3rpN gcc-2.95.3.orig/libiberty/ChangeLog gcc-2.95.4/libiberty/ChangeLog
+*** gcc-2.95.3.orig/libiberty/ChangeLog Fri Mar 16 12:52:19 2001
+--- gcc-2.95.4/libiberty/ChangeLog Wed Jun 6 01:39:02 2001
+***************
+*** 1,3 ****
+--- 1,7 ----
++ 2001-03-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
++
++ * memchr.c (memchr): Adjust condition to avoid infinite loop.
++
+ Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
+
+ * gcc-2.95.3 Released.
+diff -c3rpN gcc-2.95.3.orig/libiberty/configure.bat gcc-2.95.4/libiberty/configure.bat
+*** gcc-2.95.3.orig/libiberty/configure.bat Sat May 16 00:42:31 1998
+--- gcc-2.95.4/libiberty/configure.bat Wed Jun 6 01:39:03 2001
+***************
+*** 1,14 ****
+! @echo off
+! if "%1" == "h8/300" goto h8300
+!
+! echo Configuring libiberty for go32
+! copy Makefile.dos Makefile
+! echo #define NEED_sys_siglist 1 >> config.h
+! echo #define NEED_psignal 1 >> config.h
+! goto exit
+!
+! :h8300
+! echo Configuring libiberty for H8/300
+! copy Makefile.dos Makefile
+!
+! :exit
+--- 1,14 ----
+! @echo off
+! if "%1" == "h8/300" goto h8300
+!
+! echo Configuring libiberty for go32
+! copy Makefile.dos Makefile
+! echo #define NEED_sys_siglist 1 >> config.h
+! echo #define NEED_psignal 1 >> config.h
+! goto exit
+!
+! :h8300
+! echo Configuring libiberty for H8/300
+! copy Makefile.dos Makefile
+!
+! :exit
+diff -c3rpN gcc-2.95.3.orig/libiberty/makefile.dos gcc-2.95.4/libiberty/makefile.dos
+*** gcc-2.95.3.orig/libiberty/makefile.dos Sat May 16 00:14:17 1998
+--- gcc-2.95.4/libiberty/makefile.dos Thu Jan 1 00:00:00 1970
+***************
+*** 1,29 ****
+- CFLAGS=-O2
+-
+- OBJS = \
+- argv.o \
+- basename.o \
+- concat.o \
+- cplus-dem.o \
+- fdmatch.o \
+- floatformat.o \
+- getopt.o \
+- getopt1.o \
+- getruntime.o \
+- hex.o \
+- msdos.o \
+- obstack.o \
+- spaces.o \
+- strerror.o \
+- strsignal.o \
+- xatexit.o \
+- xexit.o \
+- xmalloc.o \
+- $E
+-
+- .c.o:
+- gcc -I../include $(CFLAGS) -c $<
+-
+- libiberty.a : $(OBJS)
+- -rm libiberty.a
+- ar rvs libiberty.a $(OBJS)
+--- 0 ----
+diff -c3rpN gcc-2.95.3.orig/libiberty/memchr.c gcc-2.95.4/libiberty/memchr.c
+*** gcc-2.95.3.orig/libiberty/memchr.c Mon Dec 14 07:00:53 1998
+--- gcc-2.95.4/libiberty/memchr.c Wed Jun 6 01:39:04 2001
+*************** memchr (src_void, c, length)
+*** 50,56 ****
+ {
+ const unsigned char *src = (const unsigned char *)src_void;
+
+! while (--length >= 0)
+ {
+ if (*src == c)
+ return (PTR)src;
+--- 50,56 ----
+ {
+ const unsigned char *src = (const unsigned char *)src_void;
+
+! while (length-- > 0)
+ {
+ if (*src == c)
+ return (PTR)src;
+diff -c3rpN gcc-2.95.3.orig/libio/dbz/dbzmain.c gcc-2.95.4/libio/dbz/dbzmain.c
+*** gcc-2.95.3.orig/libio/dbz/dbzmain.c Sun Feb 1 12:20:13 1998
+--- gcc-2.95.4/libio/dbz/dbzmain.c Wed Jun 6 01:39:11 2001
+***************
+*** 19,25 ****
+ #define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
+
+ #ifndef lint
+! static char RCSid[] = "$Header: /egcs/carton/cvsfiles/egcs/./libio/dbz/dbzmain.c,v 1.1.1.1 1997/08/21 22:58:23 jason Exp $";
+ #endif
+
+ char *progname;
+--- 19,25 ----
+ #define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
+
+ #ifndef lint
+! static char RCSid[] = "$Header: /cvs/gcc/gcc/libio/dbz/dbzmain.c,v 1.2 1998/02/01 12:20:13 law Exp $";
+ #endif
+
+ char *progname;
+diff -c3rpN gcc-2.95.3.orig/libio/dbz/fake.c gcc-2.95.4/libio/dbz/fake.c
+*** gcc-2.95.3.orig/libio/dbz/fake.c Thu Aug 21 23:58:23 1997
+--- gcc-2.95.4/libio/dbz/fake.c Wed Jun 6 01:39:11 2001
+***************
+*** 13,19 ****
+ #define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
+
+ #ifndef lint
+! static char RCSid[] = "$Header: /rel/cvsfiles/devo/libio/dbz/fake.c,v 1.2 1993/10/25 20:02:42 bothner Exp $";
+ #endif
+
+ int midonly = 0; /* just message ids, rest not realistic */
+--- 13,19 ----
+ #define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
+
+ #ifndef lint
+! static char RCSid[] = "$Header: /cvs/gcc/gcc/libio/dbz/fake.c,v 1.1.1.1 1997/08/21 22:58:23 jason Exp $";
+ #endif
+
+ int midonly = 0; /* just message ids, rest not realistic */
+diff -c3rpN gcc-2.95.3.orig/libio/editbuf.cc gcc-2.95.4/libio/editbuf.cc
+*** gcc-2.95.3.orig/libio/editbuf.cc Thu Aug 21 23:58:14 1997
+--- gcc-2.95.4/libio/editbuf.cc Wed Jun 6 01:39:12 2001
+*************** Written by Per Bothner (bothner@cygnus.c
+*** 31,36 ****
+--- 31,37 ----
+ #include "editbuf.h"
+ #include <stddef.h>
+ #include <stdlib.h>
++ #include <string.h>
+
+ /* NOTE: Some of the code here is taken from GNU emacs */
+ /* Hence this file falls under the GNU License! */
+diff -c3rpN gcc-2.95.3.orig/libio/filebuf.cc gcc-2.95.4/libio/filebuf.cc
+*** gcc-2.95.3.orig/libio/filebuf.cc Tue Dec 21 18:13:32 1999
+--- gcc-2.95.4/libio/filebuf.cc Wed Jun 6 01:39:12 2001
+*************** Written by Per Bothner (bothner@cygnus.c
+*** 30,35 ****
+--- 30,39 ----
+ #include <fcntl.h>
+ #include <errno.h>
+ #include "builtinbuf.h"
++ /* We replace new by new (nothrow) when exceptions aren't turned on */
++ #ifndef _IO_THROW
++ #include <new>
++ #endif
+
+ void filebuf::init()
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/filedoalloc.c gcc-2.95.4/libio/filedoalloc.c
+*** gcc-2.95.3.orig/libio/filedoalloc.c Mon Apr 12 19:27:48 1999
+--- gcc-2.95.4/libio/filedoalloc.c Wed Jun 6 01:39:12 2001
+***************
+*** 1,3 ****
+--- 1,4 ----
++
+ /* Copyright (C) 1993, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU IO Library.
+
+diff -c3rpN gcc-2.95.3.orig/libio/fileops.c gcc-2.95.4/libio/fileops.c
+*** gcc-2.95.3.orig/libio/fileops.c Mon Apr 12 19:27:49 1999
+--- gcc-2.95.4/libio/fileops.c Wed Jun 6 01:39:12 2001
+*************** _IO_file_sync (fp)
+*** 415,420 ****
+--- 415,423 ----
+ fp->_offset = _IO_pos_BAD;
+ /* FIXME: Cleanup - can this be shared? */
+ /* setg(base(), ptr, ptr); */
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return retval;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/gen-params gcc-2.95.4/libio/gen-params
+*** gcc-2.95.3.orig/libio/gen-params Tue Mar 23 23:58:21 1999
+--- gcc-2.95.4/libio/gen-params Wed Jun 6 01:39:13 2001
+*************** CXX=${CXX-`if [ -f ${gccdir}/xgcc ] ; \
+*** 55,62 ****
+ then echo ${gccdir}/xgcc -B${gccdir}/ ; \
+ else echo gcc ; fi`}
+ CPP=${CPP-`echo ${CC} -E`}
+! CONFIG_NM=${CONFIG_NM-`if [ -f ${binutilsdir}/nm.new ] ; \
+! then echo ${binutilsdir}/nm.new ; \
+ else echo nm ; fi`}
+
+ cat <<!EOF!
+--- 55,62 ----
+ then echo ${gccdir}/xgcc -B${gccdir}/ ; \
+ else echo gcc ; fi`}
+ CPP=${CPP-`echo ${CC} -E`}
+! CONFIG_NM=${CONFIG_NM-`if [ -f ${binutilsdir}/nm-new ] ; \
+! then echo ${binutilsdir}/nm-new ; \
+ else echo nm ; fi`}
+
+ cat <<!EOF!
+*************** fi
+*** 710,722 ****
+
+ # A little test program to check if __printf_fp is available.
+ cat >dummy.c <<EOF
+ int main()
+ {
+ return __printf_fp ();
+ }
+ EOF
+
+! if ${CC} dummy.c >/dev/null 2>&1 ; then
+ echo "#define ${macro_prefix}HAVE_PRINTF_FP 1"
+ echo "#define ${macro_prefix}HAVE_LONG_DOUBLE_IO 1"
+ else
+--- 710,723 ----
+
+ # A little test program to check if __printf_fp is available.
+ cat >dummy.c <<EOF
++ #include <printf.h>
+ int main()
+ {
+ return __printf_fp ();
+ }
+ EOF
+
+! if ${CC} dummy.c -Wimplicit -Werror >/dev/null 2>&1 ; then
+ echo "#define ${macro_prefix}HAVE_PRINTF_FP 1"
+ echo "#define ${macro_prefix}HAVE_LONG_DOUBLE_IO 1"
+ else
+diff -c3rpN gcc-2.95.3.orig/libio/ioextend.cc gcc-2.95.4/libio/ioextend.cc
+*** gcc-2.95.3.orig/libio/ioextend.cc Thu Aug 21 23:58:16 1997
+--- gcc-2.95.4/libio/ioextend.cc Wed Jun 6 01:39:13 2001
+*************** This exception does not however invalida
+*** 23,28 ****
+--- 23,32 ----
+ the executable file might be covered by the GNU General Public License. */
+
+ #include <iostream.h>
++ /* We replace new by new (nothrow) when exceptions aren't turned on */
++ #ifndef _IO_THROW
++ #include <new>
++ #endif
+
+ static int __xalloc = 0;
+
+diff -c3rpN gcc-2.95.3.orig/libio/iofclose.c gcc-2.95.4/libio/iofclose.c
+*** gcc-2.95.3.orig/libio/iofclose.c Fri Mar 5 00:19:09 1999
+--- gcc-2.95.4/libio/iofclose.c Wed Jun 6 01:39:13 2001
+*************** _IO_fclose (fp)
+*** 43,48 ****
+--- 43,51 ----
+ else
+ status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
+ _IO_FINISH (fp);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/iofflush.c gcc-2.95.4/libio/iofflush.c
+*** gcc-2.95.3.orig/libio/iofflush.c Sat Sep 6 08:42:58 1997
+--- gcc-2.95.4/libio/iofflush.c Wed Jun 6 01:39:14 2001
+*************** _IO_fflush (fp)
+*** 39,44 ****
+--- 39,47 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ result = _IO_SYNC (fp) ? EOF : 0;
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iofgetpos.c gcc-2.95.4/libio/iofgetpos.c
+*** gcc-2.95.3.orig/libio/iofgetpos.c Sat Sep 6 08:43:00 1997
+--- gcc-2.95.4/libio/iofgetpos.c Wed Jun 6 01:39:14 2001
+*************** _IO_fgetpos (fp, posp)
+*** 37,42 ****
+--- 37,45 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ pos = _IO_seekoff (fp, 0, _IO_seek_cur, 0);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ if (pos == _IO_pos_BAD)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/iofgets.c gcc-2.95.4/libio/iofgets.c
+*** gcc-2.95.3.orig/libio/iofgets.c Sat Sep 6 08:43:01 1997
+--- gcc-2.95.4/libio/iofgets.c Wed Jun 6 01:39:14 2001
+*************** _IO_fgets (buf, n, fp)
+*** 47,52 ****
+--- 47,55 ----
+ buf[count] = '\0';
+ result = buf;
+ }
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iofputs.c gcc-2.95.4/libio/iofputs.c
+*** gcc-2.95.3.orig/libio/iofputs.c Sat Sep 6 08:43:06 1997
+--- gcc-2.95.4/libio/iofputs.c Wed Jun 6 01:39:14 2001
+*************** _IO_fputs (str, fp)
+*** 40,45 ****
+--- 40,48 ----
+ result = EOF;
+ else
+ result = 1;
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iofread.c gcc-2.95.4/libio/iofread.c
+*** gcc-2.95.3.orig/libio/iofread.c Sat Sep 6 08:43:08 1997
+--- gcc-2.95.4/libio/iofread.c Wed Jun 6 01:39:14 2001
+*************** _IO_fread (buf, size, count, fp)
+*** 40,45 ****
+--- 40,48 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ bytes_read = _IO_sgetn (fp, (char *) buf, bytes_requested);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return bytes_requested == bytes_read ? count : bytes_read / size;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iofsetpos.c gcc-2.95.4/libio/iofsetpos.c
+*** gcc-2.95.3.orig/libio/iofsetpos.c Sat Sep 6 08:43:10 1997
+--- gcc-2.95.4/libio/iofsetpos.c Wed Jun 6 01:39:14 2001
+*************** _IO_fsetpos (fp, posp)
+*** 47,52 ****
+--- 47,55 ----
+ }
+ else
+ result = 0;
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/ioftell.c gcc-2.95.4/libio/ioftell.c
+*** gcc-2.95.3.orig/libio/ioftell.c Sat Sep 6 08:43:12 1997
+--- gcc-2.95.4/libio/ioftell.c Wed Jun 6 01:39:14 2001
+*************** _IO_ftell (fp)
+*** 36,41 ****
+--- 36,44 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ pos = _IO_seekoff (fp, 0, _IO_seek_cur, 0);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ if (pos == _IO_pos_BAD)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/iofwrite.c gcc-2.95.4/libio/iofwrite.c
+*** gcc-2.95.3.orig/libio/iofwrite.c Sat Sep 6 08:43:13 1997
+--- gcc-2.95.4/libio/iofwrite.c Wed Jun 6 01:39:15 2001
+*************** _IO_fwrite (buf, size, count, fp)
+*** 40,45 ****
+--- 40,48 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ written = _IO_sputn (fp, (const char *) buf, request);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ /* Many traditional implementations return 0 if size==0 && count > 0,
+ but ANSI requires us to return count in this case. */
+diff -c3rpN gcc-2.95.3.orig/libio/iogetc.c gcc-2.95.4/libio/iogetc.c
+*** gcc-2.95.3.orig/libio/iogetc.c Fri Mar 5 00:19:12 1999
+--- gcc-2.95.4/libio/iogetc.c Wed Jun 6 01:39:15 2001
+*************** _IO_getc (fp)
+*** 37,42 ****
+--- 37,45 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ result = _IO_getc_unlocked (fp);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iogetdelim.c gcc-2.95.4/libio/iogetdelim.c
+*** gcc-2.95.3.orig/libio/iogetdelim.c Sat Sep 6 08:43:17 1997
+--- gcc-2.95.4/libio/iogetdelim.c Wed Jun 6 01:39:15 2001
+*************** _IO_getdelim (lineptr, n, delimiter, fp)
+*** 115,120 ****
+--- 115,123 ----
+ result = cur_len;
+
+ unlock_return:
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iogets.c gcc-2.95.4/libio/iogets.c
+*** gcc-2.95.3.orig/libio/iogets.c Sat Sep 6 08:43:20 1997
+--- gcc-2.95.4/libio/iogets.c Wed Jun 6 01:39:15 2001
+*************** _IO_gets (buf)
+*** 58,63 ****
+--- 58,67 ----
+ buf[count] = 0;
+ retval = buf;
+ unlock_return:
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (
++ _IO_stdin);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return retval;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/ioputc.c gcc-2.95.4/libio/ioputc.c
+*** gcc-2.95.3.orig/libio/ioputc.c Fri Mar 5 00:19:13 1999
+--- gcc-2.95.4/libio/ioputc.c Wed Jun 6 01:39:16 2001
+*************** _IO_putc (c, fp)
+*** 31,36 ****
+--- 31,39 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ result = _IO_putc_unlocked (c, fp);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/ioputs.c gcc-2.95.4/libio/ioputs.c
+*** gcc-2.95.3.orig/libio/ioputs.c Sat Sep 6 08:43:26 1997
+--- gcc-2.95.4/libio/ioputs.c Wed Jun 6 01:39:16 2001
+*************** _IO_puts (str)
+*** 40,45 ****
+--- 40,49 ----
+ result = len + 1;
+ else
+ result = EOF;
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (
++ _IO_stdout);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/ioseekoff.c gcc-2.95.4/libio/ioseekoff.c
+*** gcc-2.95.3.orig/libio/ioseekoff.c Tue Sep 16 17:00:21 1997
+--- gcc-2.95.4/libio/ioseekoff.c Wed Jun 6 01:39:17 2001
+*************** _IO_seekoff (fp, offset, dir, mode)
+*** 49,54 ****
+--- 49,57 ----
+ }
+ retval = _IO_SEEKOFF (fp, offset, dir, mode);
+
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return retval;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/ioseekpos.c gcc-2.95.4/libio/ioseekpos.c
+*** gcc-2.95.3.orig/libio/ioseekpos.c Tue Sep 16 17:00:23 1997
+--- gcc-2.95.4/libio/ioseekpos.c Wed Jun 6 01:39:17 2001
+*************** _IO_seekpos (fp, pos, mode)
+*** 43,48 ****
+--- 43,51 ----
+ _IO_free_backup_area (fp);
+ retval = _IO_SEEKPOS (fp, pos, mode);
+
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return retval;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iosetbuffer.c gcc-2.95.4/libio/iosetbuffer.c
+*** gcc-2.95.3.orig/libio/iosetbuffer.c Sat Sep 6 08:43:30 1997
+--- gcc-2.95.4/libio/iosetbuffer.c Wed Jun 6 01:39:17 2001
+*************** _IO_setbuffer (fp, buf, size)
+*** 38,43 ****
+--- 38,46 ----
+ if (!buf)
+ size = 0;
+ (void) _IO_SETBUF (fp, buf, size);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ }
+
+diff -c3rpN gcc-2.95.3.orig/libio/iosetvbuf.c gcc-2.95.4/libio/iosetvbuf.c
+*** gcc-2.95.3.orig/libio/iosetvbuf.c Sat Sep 6 08:43:32 1997
+--- gcc-2.95.4/libio/iosetvbuf.c Wed Jun 6 01:39:17 2001
+*************** _IO_setvbuf (fp, buf, mode, size)
+*** 91,96 ****
+--- 91,99 ----
+ }
+ result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0;
+ unlock_return:
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iostream.cc gcc-2.95.4/libio/iostream.cc
+*** gcc-2.95.3.orig/libio/iostream.cc Sun Dec 10 17:45:08 2000
+--- gcc-2.95.4/libio/iostream.cc Wed Jun 6 01:39:17 2001
+*************** READ_INT(unsigned long long)
+*** 361,366 ****
+--- 361,368 ----
+ READ_INT(bool)
+ #endif
+
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ istream& istream::operator>>(long double& x)
+ {
+ if (ipfx0())
+*************** istream& istream::operator>>(long double
+*** 379,384 ****
+--- 381,388 ----
+ }
+ return *this;
+ }
++ #endif
++ /* End VxWorks specific */
+
+ istream& istream::operator>>(double& x)
+ {
+*************** ostream& ostream::operator<<(double n)
+*** 761,766 ****
+--- 765,772 ----
+ return *this;
+ }
+
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ #if _G_HAVE_LONG_DOUBLE_IO
+ ostream& ostream::operator<<(long double n)
+ {
+*************** ostream& ostream::operator<<(long double
+*** 819,824 ****
+--- 825,832 ----
+ return *this;
+ }
+ #endif
++ #endif
++ /* End VxWorks specific */
+
+ ostream& ostream::operator<<(const char *s)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/iostream.h gcc-2.95.4/libio/iostream.h
+*** gcc-2.95.3.orig/libio/iostream.h Sat Aug 7 07:01:46 1999
+--- gcc-2.95.4/libio/iostream.h Wed Jun 6 01:39:17 2001
+*************** class ostream : virtual public ios
+*** 98,108 ****
+--- 98,113 ----
+ #endif
+ ostream& operator<<(double n);
+ ostream& operator<<(float n) { return operator<<((double)n); }
++
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ #if _G_HAVE_LONG_DOUBLE_IO
+ ostream& operator<<(long double n);
+ #else
+ ostream& operator<<(long double n) { return operator<<((double)n); }
+ #endif
++ #endif
++ /* End VxWorks specific */
+ ostream& operator<<(__omanip func) { return (*func)(*this); }
+ ostream& operator<<(__manip func) {(*func)(*this); return *this;}
+ ostream& operator<<(streambuf*);
+*************** protected:
+*** 218,224 ****
+--- 223,233 ----
+ #endif
+ istream& operator>>(float&);
+ istream& operator>>(double&);
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ istream& operator>>(long double&);
++ #endif
++ /* End VxWorks specific */
+ istream& operator>>( __manip func) {(*func)(*this); return *this;}
+ istream& operator>>(__imanip func) { return (*func)(*this); }
+ istream& operator>>(streambuf*);
+diff -c3rpN gcc-2.95.3.orig/libio/ioungetc.c gcc-2.95.4/libio/ioungetc.c
+*** gcc-2.95.3.orig/libio/ioungetc.c Sat Sep 6 08:43:37 1997
+--- gcc-2.95.4/libio/ioungetc.c Wed Jun 6 01:39:18 2001
+*************** _IO_ungetc (c, fp)
+*** 37,42 ****
+--- 37,45 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ result = _IO_sputbackc (fp, (unsigned char) c);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iovsprintf.c gcc-2.95.4/libio/iovsprintf.c
+*** gcc-2.95.3.orig/libio/iovsprintf.c Fri Mar 5 00:19:14 1999
+--- gcc-2.95.4/libio/iovsprintf.c Wed Jun 6 01:39:18 2001
+*************** _IO_vsprintf (string, format, args)
+*** 48,53 ****
+--- 48,56 ----
+ _IO_flockfile (&sf._sbf._f);
+ ret = _IO_vfprintf (&sf._sbf._f, format, args);
+ _IO_putc_unlocked ('\0', &sf._sbf._f);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (&sf._sbf._f);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return ret;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/iovsscanf.c gcc-2.95.4/libio/iovsscanf.c
+*** gcc-2.95.3.orig/libio/iovsscanf.c Fri Mar 5 00:19:15 1999
+--- gcc-2.95.4/libio/iovsscanf.c Wed Jun 6 01:39:18 2001
+*************** _IO_vsscanf (string, format, args)
+*** 44,49 ****
+--- 44,52 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, &sf);
+ _IO_flockfile (&sf._sbf._f);
+ ret = _IO_vfscanf (&sf._sbf._f, format, args, NULL);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (&sf._sbf._f);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return ret;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/isgetline.cc gcc-2.95.4/libio/isgetline.cc
+*** gcc-2.95.3.orig/libio/isgetline.cc Sat Aug 7 07:01:46 1999
+--- gcc-2.95.4/libio/isgetline.cc Wed Jun 6 01:39:18 2001
+*************** the executable file might be covered by
+*** 25,30 ****
+--- 25,34 ----
+ #include <libioP.h>
+ #include "iostream.h"
+ #include <string.h>
++ /* We replace new by new (nothrow) when exceptions aren't turned on */
++ #ifndef _IO_THROW
++ #include <new>
++ #endif
+
+ istream& istream::getline(char* buf, int len, char delim)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/libio.h gcc-2.95.4/libio/libio.h
+*** gcc-2.95.3.orig/libio/libio.h Sun Dec 10 17:45:08 2000
+--- gcc-2.95.4/libio/libio.h Wed Jun 6 01:39:19 2001
+***************
+*** 160,168 ****
+
+ struct _IO_jump_t; struct _IO_FILE;
+
+ /* Handle lock. */
+ #ifdef _IO_MTSAFE_IO
+! # if defined __GLIBC__ && __GLIBC__ >= 2
+ # if __GLIBC_MINOR__ > 0
+ # include <bits/stdio-lock.h>
+ # else
+--- 160,178 ----
+
+ struct _IO_jump_t; struct _IO_FILE;
+
++ #ifdef __vxworks
++ #define _IO_VXW_THREADS
++ #define _IO_MTSAFE_IO
++ #endif
++
+ /* Handle lock. */
+ #ifdef _IO_MTSAFE_IO
+! /* Begin VxWorks specific */
+! # ifdef _IO_VXW_THREADS
+! # include <stdio-lock.h>
+! /* End VxWorks specific */
+! # else
+! # if (defined __GLIBC__ && __GLIBC__ >= 2) || defined(_IO_VXW_THREADS)
+ # if __GLIBC_MINOR__ > 0
+ # include <bits/stdio-lock.h>
+ # else
+*************** struct _IO_jump_t; struct _IO_FILE;
+*** 171,178 ****
+ # define _IO_LOCK_T _IO_lock_t *
+ # else
+ /*# include <comthread.h>*/
+- # endif
+- #else
+ # if defined(__GLIBC__) && __GLIBC__ >= 2
+ typedef void _IO_lock_t;
+ # define _IO_LOCK_T void *
+--- 181,186 ----
+*************** struct _IO_jump_t; struct _IO_FILE;
+*** 185,191 ****
+ # endif
+ # endif
+ #endif
+!
+
+ /* A streammarker remembers a position in a buffer. */
+
+--- 193,200 ----
+ # endif
+ # endif
+ #endif
+! # endif
+! #endif
+
+ /* A streammarker remembers a position in a buffer. */
+
+*************** extern int _IO_peekc_locked __P ((_IO_FI
+*** 327,335 ****
+--- 336,348 ----
+ #define _IO_PENDING_OUTPUT_COUNT(_fp) \
+ ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
+
++ /* Begin VxWorks specific */
++ #if !(defined(_IO_MTSAFE_IO) && defined(_IO_VXW_THREADS))
+ extern void _IO_flockfile __P ((_IO_FILE *));
+ extern void _IO_funlockfile __P ((_IO_FILE *));
+ extern int _IO_ftrylockfile __P ((_IO_FILE *));
++ #endif
++ /* End VxWorks specific */
+
+ #ifdef _IO_MTSAFE_IO
+ # define _IO_peekc(_fp) _IO_peekc_locked (_fp)
+diff -c3rpN gcc-2.95.3.orig/libio/parsestream.cc gcc-2.95.4/libio/parsestream.cc
+*** gcc-2.95.3.orig/libio/parsestream.cc Sat Sep 6 08:43:48 1997
+--- gcc-2.95.4/libio/parsestream.cc Wed Jun 6 01:39:19 2001
+*************** Written by Per Bothner (bothner@cygnus.c
+*** 30,35 ****
+--- 30,40 ----
+ #include "libioP.h"
+ #include "parsestream.h"
+ #include <stdlib.h>
++ #include <string.h>
++ /* We replace new by new (nothrow) when exceptions aren't turned on */
++ #ifndef _IO_THROW
++ #include <new>
++ #endif
+
+ streambuf* parsebuf::setbuf(char*, int)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/peekc.c gcc-2.95.4/libio/peekc.c
+*** gcc-2.95.3.orig/libio/peekc.c Sat Sep 6 08:43:49 1997
+--- gcc-2.95.4/libio/peekc.c Wed Jun 6 01:39:19 2001
+*************** _IO_peekc_locked (fp)
+*** 37,42 ****
+--- 37,45 ----
+ _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+ _IO_flockfile (fp);
+ result = _IO_peekc_unlocked (fp);
++ #ifdef _IO_VXW_THREADS
++ _IO_funlockfile (fp);
++ #endif /* _IO_VXW_THREADS */
+ _IO_cleanup_region_end (1);
+ return result;
+ }
+diff -c3rpN gcc-2.95.3.orig/libio/stdstrbufs.cc gcc-2.95.4/libio/stdstrbufs.cc
+*** gcc-2.95.3.orig/libio/stdstrbufs.cc Tue Nov 18 16:53:45 1997
+--- gcc-2.95.4/libio/stdstrbufs.cc Wed Jun 6 01:39:25 2001
+*************** DEF_STDFILE(_IO_stdout_, 1, &_IO_stdin_.
+*** 69,74 ****
+--- 69,81 ----
+ DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_.file,
+ _IO_NO_READS+_IO_UNBUFFERED);
+
++ /* Begin VxWorks specific */
++ /* We define this because we want the standard streams to use streambufs
++ * (that write to file descriptors which are valid across all threads) rather
++ * than stdiobufs */
++ #define _STDIO_USES_IOSTREAM
++ /* End VxWorks specific */
++
+ #ifdef _STDIO_USES_IOSTREAM
+ _IO_FILE *_IO_list_all = &_IO_stderr_.file;
+ #else /* !_STDIO_USES_IOSTREAM */
+*************** extern struct _IO_jump_t stdiobuf_vtable
+*** 104,114 ****
+
+ #ifdef _IO_MTSAFE_IO
+ #define DEF_STDIOFILE(NAME, FD, FILE, FLAGS, CHAIN) \
+- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
+ struct _IO_fake_stdiobuf NAME = \
+ {{{ _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+_IO_UNBUFFERED+FLAGS, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHAIN, FD, \
+! 0, 0, 0, 0, { 0 }, _IO_stdfile_##FD##_lock},\
+ &stdiobuf_vtable}, FILE}
+ #else
+ #define DEF_STDIOFILE(NAME, FD, FILE, FLAGS, CHAIN) \
+--- 111,120 ----
+
+ #ifdef _IO_MTSAFE_IO
+ #define DEF_STDIOFILE(NAME, FD, FILE, FLAGS, CHAIN) \
+ struct _IO_fake_stdiobuf NAME = \
+ {{{ _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+_IO_UNBUFFERED+FLAGS, \
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CHAIN, FD, \
+! 0, 0, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock},\
+ &stdiobuf_vtable}, FILE}
+ #else
+ #define DEF_STDIOFILE(NAME, FD, FILE, FLAGS, CHAIN) \
+diff -c3rpN gcc-2.95.3.orig/libio/stdstreams.cc gcc-2.95.4/libio/stdstreams.cc
+*** gcc-2.95.3.orig/libio/stdstreams.cc Sun Dec 10 17:45:08 2000
+--- gcc-2.95.4/libio/stdstreams.cc Wed Jun 6 01:39:25 2001
+*************** the executable file might be covered by
+*** 38,43 ****
+--- 38,54 ----
+
+ #include <libio.h>
+
++ /* Begin VxWorks specific */
++ /* We define this because we want the standard streams to use streambufs
++ * (that write to file descriptors which are valid across all threads) rather
++ * than stdiobufs
++ * VxWorks has thread private stdio FILE structures. On other hand
++ * cout/cin/cerr are global to all threads. We must therefore initialize
++ * them with streambufs (that write to thread global file descriptors)
++ * rather than stdiobufs. */
++ #define _STDIO_USES_IOSTREAM
++ /* End VxWorks specific */
++
+ #ifdef _STDIO_USES_IOSTREAM
+ #define CIN_SBUF _IO_stdin_
+ #define COUT_SBUF _IO_stdout_
+diff -c3rpN gcc-2.95.3.orig/libio/streambuf.cc gcc-2.95.4/libio/streambuf.cc
+*** gcc-2.95.3.orig/libio/streambuf.cc Wed May 6 22:08:52 1998
+--- gcc-2.95.4/libio/streambuf.cc Wed Jun 6 01:39:25 2001
+***************
+*** 1,3 ****
+--- 1,4 ----
++
+ /* This is part of libio/iostream, providing -*- C++ -*- input/output.
+ Copyright (C) 1991, 1992, 1993, 1995 Free Software Foundation
+
+*************** the executable file might be covered by
+*** 24,29 ****
+--- 25,43 ----
+
+ /* Written by Per Bothner (bothner@cygnus.com). */
+
++ /*
++ * This hack ensures that VxWorks contains a symbol called fd. Customers
++ * often want to type
++ * -> fd = 0
++ * at the Wind Shell. Because of the screwy way the Wind Shell
++ * lexer looks up names in the symbol table this will give
++ * a syntax error due to the conflict between fd and filebuf::fd -
++ * unless `fd' is already in the symbol table.
++ * Here we define fd as a `common' symbol so customers can
++ * still use fd in their code.
++ */
++ int fd;
++
+ #define _STREAM_COMPAT
+ #ifdef __GNUG__
+ #pragma implementation
+*************** the executable file might be covered by
+*** 34,39 ****
+--- 48,57 ----
+ #include <errno.h>
+ #ifndef errno
+ extern int errno;
++ #endif
++ /* We replace new by new (nothrow) when exceptions aren't turned on */
++ #ifndef _IO_THROW
++ #include <new>
+ #endif
+
+ void streambuf::_un_link() { _IO_un_link(this); }
+diff -c3rpN gcc-2.95.3.orig/libio/streambuf.h gcc-2.95.4/libio/streambuf.h
+*** gcc-2.95.3.orig/libio/streambuf.h Sun Dec 10 17:45:08 2000
+--- gcc-2.95.4/libio/streambuf.h Wed Jun 6 01:39:25 2001
+*************** the executable file might be covered by
+*** 35,40 ****
+--- 35,41 ----
+ extern "C" {
+ #include <libio.h>
+ }
++ #include <string.h>
+ //#include <_G_config.h>
+ #ifdef _G_NEED_STDARG_H
+ #include <stdarg.h>
+diff -c3rpN gcc-2.95.3.orig/libio/strstream.cc gcc-2.95.4/libio/strstream.cc
+*** gcc-2.95.3.orig/libio/strstream.cc Thu Aug 21 23:58:22 1997
+--- gcc-2.95.4/libio/strstream.cc Wed Jun 6 01:39:25 2001
+*************** the executable file might be covered by
+*** 30,35 ****
+--- 30,39 ----
+ #include "iostreamP.h"
+ #include "strstream.h"
+ #include <string.h>
++ /* We replace new by new (nothrow) when exceptions aren't turned on */
++ #ifndef _IO_THROW
++ #include <new>
++ #endif
+
+ static void* default_alloc(_IO_size_t size)
+ {
+diff -c3rpN gcc-2.95.3.orig/libio/tests/tiomisc.cc gcc-2.95.4/libio/tests/tiomisc.cc
+*** gcc-2.95.3.orig/libio/tests/tiomisc.cc Thu Aug 21 23:58:30 1997
+--- gcc-2.95.4/libio/tests/tiomisc.cc Wed Jun 6 01:39:27 2001
+*************** void
+*** 128,134 ****
+ reread_test ()
+ { // This is PR 5486.
+ int tag_char;
+! char *fname = "Makefile";
+ int mode = O_RDONLY;
+ filebuf file_p;
+
+--- 128,137 ----
+ reread_test ()
+ { // This is PR 5486.
+ int tag_char;
+! #if 0
+! #define FNAME "Makefile"
+! #endif
+! char *fname = FNAME;
+ int mode = O_RDONLY;
+ filebuf file_p;
+
+diff -c3rpN gcc-2.95.3.orig/libio/testsuite/libio.tests/tiomisc.exp gcc-2.95.4/libio/testsuite/libio.tests/tiomisc.exp
+*** gcc-2.95.3.orig/libio/testsuite/libio.tests/tiomisc.exp Thu Aug 21 23:58:31 1997
+--- gcc-2.95.4/libio/testsuite/libio.tests/tiomisc.exp Wed Jun 6 01:39:28 2001
+***************
+*** 1 ****
+! test_libio tiomisc.cc "-w" "" tiomisc.exp ""
+--- 1,2 ----
+! set FNAME [remote_download target "Makefile"]
+! test_libio tiomisc.cc "-w -DFNAME=\\\"$FNAME\\\"" "" tiomisc.exp ""
+diff -c3rpN gcc-2.95.3.orig/libobjc/makefile.dos gcc-2.95.4/libobjc/makefile.dos
+*** gcc-2.95.3.orig/libobjc/makefile.dos Mon Sep 21 02:22:07 1998
+--- gcc-2.95.4/libobjc/makefile.dos Thu Jan 1 00:00:00 1970
+***************
+*** 1,56 ****
+- # GNU Objective C Runtime Makefile for compiling with djgpp
+- # Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
+- #
+- # 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.
+-
+- # This Makefile is configured for GnuMAKE
+-
+- GCC_FOR_TARGET=gcc
+-
+- .SUFFIXES: .o .m
+-
+- OPTIMIZE = -O2
+-
+- # Always search these dirs when compiling.
+- SUBDIR_INCLUDES = -I. -I.. -I../config
+-
+- .c.o:
+- $(GCC_FOR_TARGET) $(OPTIMIZE) \
+- -c $(GCC_CFLAGS) $(SUBDIR_INCLUDES) $<
+-
+- .m.o:
+- $(GCC_FOR_TARGET) $(OPTIMIZE) -fgnu-runtime \
+- -c $(GCC_CFLAGS) $(SUBDIR_INCLUDES) $<
+-
+- OBJC_O = hash.o sarray.o class.o sendmsg.o init.o archive.o \
+- selector.o objects.o misc.o object.o protocol.o encoding.o thread.o
+-
+- libobjc.a: $(OBJC_O)
+- -rm -f libobjc.a
+- ar rc libobjc.a $(OBJC_O)
+- ranlib libobjc.a
+-
+- OBJC_H = hash.h objc-list.h sarray.h objc.h \
+- objc-api.h \
+- object.h protocol.h mutex.h \
+- typedstream.h thread.h
+-
+- mostlyclean:
+- -rm -f *.o libobjc.a xforward fflags
+- clean: mostlyclean
+- distclean: mostlyclean
+- extraclean: mostlyclean
+--- 0 ----
+diff -c3rpN gcc-2.95.3.orig/libstdc++/ChangeLog gcc-2.95.4/libstdc++/ChangeLog
+*** gcc-2.95.3.orig/libstdc++/ChangeLog Fri Mar 16 12:52:21 2001
+--- gcc-2.95.4/libstdc++/ChangeLog Wed Jun 6 01:39:33 2001
+***************
+*** 1,3 ****
+--- 1,10 ----
++ 2001-04-06 Matthias Klose <doko@debian.org>
++
++ From <sicard@bigruth.solsoft.fr>:
++ * std/bastring.h: remove some compiler warnings.
++ * std/bastring.cc: Likewise.
++ * stl/stl_hashtable.h: Likewise.
++
+ Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
+
+ * gcc-2.95.3 Released.
+diff -c3rpN gcc-2.95.3.orig/libstdc++/cinst.cc gcc-2.95.4/libstdc++/cinst.cc
+*** gcc-2.95.3.orig/libstdc++/cinst.cc Sun Aug 23 13:47:19 1998
+--- gcc-2.95.4/libstdc++/cinst.cc Wed Jun 6 01:39:33 2001
+***************
+*** 1,6 ****
+--- 1,10 ----
+ // Instantiation file for the -*- C++ -*- complex number classes.
+ // Copyright (C) 1994 Free Software Foundation
+
++ /* Begin VxWorks specific */
++ #if !defined (_NO_LONG_DOUBLE_) || ! defined (LD)
++ /* End VxWorks specific */
++
+ #ifdef F
+ typedef float f;
+ #endif
+*************** template istream& operator>> (istream&,
+*** 152,154 ****
+--- 156,161 ----
+ #ifdef INSERT
+ template ostream& operator<< (ostream&, const complex<f>&);
+ #endif
++ /* Begin VxWorks specific */
++ #endif /* #if !defined (_NO_LONG_DOUBLE_) || !defined (LD)
++ /* End VxWorks specific */
+diff -c3rpN gcc-2.95.3.orig/libstdc++/cmath gcc-2.95.4/libstdc++/cmath
+*** gcc-2.95.3.orig/libstdc++/cmath Thu Aug 21 23:58:32 1997
+--- gcc-2.95.4/libstdc++/cmath Wed Jun 6 01:39:34 2001
+*************** long double sqrt (long double);
+*** 69,76 ****
+ long double tan (long double);
+ long double tanh (long double);
+ #endif
+ inline long double abs (long double x) { return fabs (x); }
+!
+ } // extern "C++"
+
+ #endif
+--- 69,79 ----
+ long double tan (long double);
+ long double tanh (long double);
+ #endif
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ inline long double abs (long double x) { return fabs (x); }
+! #endif
+! /* End VxWorks specific */
+ } // extern "C++"
+
+ #endif
+diff -c3rpN gcc-2.95.3.orig/libstdc++/complex gcc-2.95.4/libstdc++/complex
+*** gcc-2.95.3.orig/libstdc++/complex Thu Aug 21 23:58:33 1997
+--- gcc-2.95.4/libstdc++/complex Wed Jun 6 01:39:34 2001
+*************** extern "C++" {
+*** 12,18 ****
+--- 12,22 ----
+ // ANSI complex types
+ typedef complex<float> float_complex;
+ typedef complex<double> double_complex;
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ typedef complex<long double> long_double_complex;
++ #endif
++ /* End VxWorks specific */
+ }
+
+ #endif
+diff -c3rpN gcc-2.95.3.orig/libstdc++/std/bastring.cc gcc-2.95.4/libstdc++/std/bastring.cc
+*** gcc-2.95.3.orig/libstdc++/std/bastring.cc Wed Dec 15 07:42:12 1999
+--- gcc-2.95.4/libstdc++/std/bastring.cc Wed Jun 6 01:39:37 2001
+*************** template <class charT, class traits, cla
+*** 116,134 ****
+ basic_string <charT, traits, Allocator>&
+ basic_string <charT, traits, Allocator>::
+ replace (size_type pos1, size_type n1,
+! const basic_string& str, size_type pos2, size_type n2)
+ {
+! const size_t len2 = str.length ();
+
+ if (pos1 == 0 && n1 >= length () && pos2 == 0 && n2 >= len2)
+! return operator= (str);
+
+ OUTOFRANGE (pos2 > len2);
+
+ if (n2 > len2 - pos2)
+ n2 = len2 - pos2;
+
+! return replace (pos1, n1, str.data () + pos2, n2);
+ }
+
+ template <class charT, class traits, class Allocator>
+--- 116,134 ----
+ basic_string <charT, traits, Allocator>&
+ basic_string <charT, traits, Allocator>::
+ replace (size_type pos1, size_type n1,
+! const basic_string& _str, size_type pos2, size_type n2)
+ {
+! const size_t len2 = _str.length ();
+
+ if (pos1 == 0 && n1 >= length () && pos2 == 0 && n2 >= len2)
+! return operator= (_str);
+
+ OUTOFRANGE (pos2 > len2);
+
+ if (n2 > len2 - pos2)
+ n2 = len2 - pos2;
+
+! return replace (pos1, n1, _str.data () + pos2, n2);
+ }
+
+ template <class charT, class traits, class Allocator>
+*************** find_last_not_of (charT c, size_type pos
+*** 394,414 ****
+
+ template <class charT, class traits, class Allocator>
+ int basic_string <charT, traits, Allocator>::
+! compare (const basic_string& str, size_type pos, size_type n) const
+ {
+ OUTOFRANGE (pos > length ());
+
+ size_t rlen = length () - pos;
+ if (rlen > n)
+ rlen = n;
+! if (rlen > str.length ())
+! rlen = str.length ();
+! int r = traits::compare (data () + pos, str.data (), rlen);
+ if (r != 0)
+ return r;
+ if (rlen == n)
+ return 0;
+! return (length () - pos) - str.length ();
+ }
+
+ template <class charT, class traits, class Allocator>
+--- 394,414 ----
+
+ template <class charT, class traits, class Allocator>
+ int basic_string <charT, traits, Allocator>::
+! compare (const basic_string& _str, size_type pos, size_type n) const
+ {
+ OUTOFRANGE (pos > length ());
+
+ size_t rlen = length () - pos;
+ if (rlen > n)
+ rlen = n;
+! if (rlen > _str.length ())
+! rlen = _str.length ();
+! int r = traits::compare (data () + pos, _str.data (), rlen);
+ if (r != 0)
+ return r;
+ if (rlen == n)
+ return 0;
+! return (length () - pos) - _str.length ();
+ }
+
+ template <class charT, class traits, class Allocator>
+*************** getline (istream &is, basic_string <char
+*** 476,482 ****
+ {
+ if (is.ipfx1 ())
+ {
+! _IO_size_t count = 0;
+ streambuf *sb = is.rdbuf ();
+ s.resize (0);
+
+--- 476,482 ----
+ {
+ if (is.ipfx1 ())
+ {
+! _IO_size_t _count = 0;
+ streambuf *sb = is.rdbuf ();
+ s.resize (0);
+
+*************** getline (istream &is, basic_string <char
+*** 485,497 ****
+ int ch = sb->sbumpc ();
+ if (ch == EOF)
+ {
+! is.setstate (count == 0
+ ? (ios::failbit|ios::eofbit)
+ : ios::eofbit);
+ break;
+ }
+
+! ++count;
+
+ if (ch == delim)
+ break;
+--- 485,497 ----
+ int ch = sb->sbumpc ();
+ if (ch == EOF)
+ {
+! is.setstate (_count == 0
+ ? (ios::failbit|ios::eofbit)
+ : ios::eofbit);
+ break;
+ }
+
+! ++_count;
+
+ if (ch == delim)
+ break;
+*************** getline (istream &is, basic_string <char
+*** 507,513 ****
+ }
+
+ // We need to be friends with istream to do this.
+! // is._gcount = count;
+ is.isfx ();
+
+ return is;
+--- 507,513 ----
+ }
+
+ // We need to be friends with istream to do this.
+! // is._gcount = _count;
+ is.isfx ();
+
+ return is;
+diff -c3rpN gcc-2.95.3.orig/libstdc++/std/bastring.h gcc-2.95.4/libstdc++/std/bastring.h
+*** gcc-2.95.3.orig/libstdc++/std/bastring.h Sun Mar 12 16:36:14 2000
+--- gcc-2.95.4/libstdc++/std/bastring.h Wed Jun 6 01:39:37 2001
+*************** public:
+*** 169,177 ****
+ }
+
+ explicit basic_string (): dat (nilRep.grab ()) { }
+! basic_string (const basic_string& str): dat (str.rep ()->grab ()) { }
+! basic_string (const basic_string& str, size_type pos, size_type n = npos)
+! : dat (nilRep.grab ()) { assign (str, pos, n); }
+ basic_string (const charT* s, size_type n)
+ : dat (nilRep.grab ()) { assign (s, n); }
+ basic_string (const charT* s)
+--- 169,177 ----
+ }
+
+ explicit basic_string (): dat (nilRep.grab ()) { }
+! basic_string (const basic_string& _str): dat (_str.rep ()->grab ()) { }
+! basic_string (const basic_string& _str, size_type pos, size_type n = npos)
+! : dat (nilRep.grab ()) { assign (_str, pos, n); }
+ basic_string (const charT* s, size_type n)
+ : dat (nilRep.grab ()) { assign (s, n); }
+ basic_string (const charT* s)
+*************** public:
+*** 191,199 ****
+
+ void swap (basic_string &s) { charT *d = dat; dat = s.dat; s.dat = d; }
+
+! basic_string& append (const basic_string& str, size_type pos = 0,
+ size_type n = npos)
+! { return replace (length (), 0, str, pos, n); }
+ basic_string& append (const charT* s, size_type n)
+ { return replace (length (), 0, s, n); }
+ basic_string& append (const charT* s)
+--- 191,199 ----
+
+ void swap (basic_string &s) { charT *d = dat; dat = s.dat; s.dat = d; }
+
+! basic_string& append (const basic_string& _str, size_type pos = 0,
+ size_type n = npos)
+! { return replace (length (), 0, _str, pos, n); }
+ basic_string& append (const charT* s, size_type n)
+ { return replace (length (), 0, s, n); }
+ basic_string& append (const charT* s)
+*************** public:
+*** 346,353 ****
+ size_type find (const basic_string& str, size_type pos = 0) const
+ { return find (str.data(), pos, str.length()); }
+ size_type find (const charT* s, size_type pos, size_type n) const;
+! size_type find (const charT* s, size_type pos = 0) const
+! { return find (s, pos, traits::length (s)); }
+ size_type find (charT c, size_type pos = 0) const;
+
+ size_type rfind (const basic_string& str, size_type pos = npos) const
+--- 346,353 ----
+ size_type find (const basic_string& str, size_type pos = 0) const
+ { return find (str.data(), pos, str.length()); }
+ size_type find (const charT* s, size_type pos, size_type n) const;
+! size_type find (const charT* _s, size_type pos = 0) const
+! { return find (_s, pos, traits::length (_s)); }
+ size_type find (charT c, size_type pos = 0) const;
+
+ size_type rfind (const basic_string& str, size_type pos = npos) const
+*************** inline basic_string <charT, traits, Allo
+*** 469,504 ****
+ operator+ (const basic_string <charT, traits, Allocator>& lhs,
+ const basic_string <charT, traits, Allocator>& rhs)
+ {
+! basic_string <charT, traits, Allocator> str (lhs);
+! str.append (rhs);
+! return str;
+ }
+
+ template <class charT, class traits, class Allocator>
+ inline basic_string <charT, traits, Allocator>
+ operator+ (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
+ {
+! basic_string <charT, traits, Allocator> str (lhs);
+! str.append (rhs);
+! return str;
+ }
+
+ template <class charT, class traits, class Allocator>
+ inline basic_string <charT, traits, Allocator>
+ operator+ (charT lhs, const basic_string <charT, traits, Allocator>& rhs)
+ {
+! basic_string <charT, traits, Allocator> str (1, lhs);
+! str.append (rhs);
+! return str;
+ }
+
+ template <class charT, class traits, class Allocator>
+ inline basic_string <charT, traits, Allocator>
+ operator+ (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
+ {
+! basic_string <charT, traits, Allocator> str (lhs);
+! str.append (rhs);
+! return str;
+ }
+
+ template <class charT, class traits, class Allocator>
+--- 469,504 ----
+ operator+ (const basic_string <charT, traits, Allocator>& lhs,
+ const basic_string <charT, traits, Allocator>& rhs)
+ {
+! basic_string <charT, traits, Allocator> _str (lhs);
+! _str.append (rhs);
+! return _str;
+ }
+
+ template <class charT, class traits, class Allocator>
+ inline basic_string <charT, traits, Allocator>
+ operator+ (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
+ {
+! basic_string <charT, traits, Allocator> _str (lhs);
+! _str.append (rhs);
+! return _str;
+ }
+
+ template <class charT, class traits, class Allocator>
+ inline basic_string <charT, traits, Allocator>
+ operator+ (charT lhs, const basic_string <charT, traits, Allocator>& rhs)
+ {
+! basic_string <charT, traits, Allocator> _str (1, lhs);
+! _str.append (rhs);
+! return _str;
+ }
+
+ template <class charT, class traits, class Allocator>
+ inline basic_string <charT, traits, Allocator>
+ operator+ (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
+ {
+! basic_string <charT, traits, Allocator> _str (lhs);
+! _str.append (rhs);
+! return _str;
+ }
+
+ template <class charT, class traits, class Allocator>
+diff -c3rpN gcc-2.95.3.orig/libstdc++/std/complext.h gcc-2.95.4/libstdc++/std/complext.h
+*** gcc-2.95.3.orig/libstdc++/std/complext.h Sun Sep 28 20:21:47 1997
+--- gcc-2.95.4/libstdc++/std/complext.h Wed Jun 6 01:39:38 2001
+*************** private:
+*** 74,80 ****
+--- 74,84 ----
+ // Declare specializations.
+ class complex<float>;
+ class complex<double>;
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ class complex<long double>;
++ #endif
++ /* End VxWorks specific */
+
+ template <class _FLT>
+ inline complex<_FLT>&
+*************** abs (const complex<_FLT>& x) __attribute
+*** 319,325 ****
+--- 323,335 ----
+ template <class _FLT> inline _FLT
+ abs (const complex<_FLT>& x)
+ {
++ /* Begin VxWorks specific */
++ #ifndef __vxworks
+ return hypot (real (x), imag (x));
++ #else
++ return sqrt (real (x) * real (x) + imag (x) * imag (x));
++ #endif
++ /* End VxWorks specific */
+ }
+
+ template <class _FLT> inline _FLT
+*************** template <class _FLT> ostream& operator
+*** 395,400 ****
+
+ #include <std/fcomplex.h>
+ #include <std/dcomplex.h>
+ #include <std/ldcomplex.h>
+!
+ #endif
+--- 405,413 ----
+
+ #include <std/fcomplex.h>
+ #include <std/dcomplex.h>
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ #include <std/ldcomplex.h>
+! #endif
+! /* End VxWorks specific */
+ #endif
+diff -c3rpN gcc-2.95.3.orig/libstdc++/std/dcomplex.h gcc-2.95.4/libstdc++/std/dcomplex.h
+*** gcc-2.95.3.orig/libstdc++/std/dcomplex.h Fri Oct 10 07:56:55 1997
+--- gcc-2.95.4/libstdc++/std/dcomplex.h Wed Jun 6 01:39:38 2001
+*************** class complex<double>
+*** 38,44 ****
+--- 38,49 ----
+ public:
+ complex (double r = 0, double i = 0): re (r), im (i) { }
+ complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { }
++
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ explicit complex (const complex<long double>& r);
++ #endif
++ /* End VxWorks specific */
+
+ complex& operator+= (const complex& r) { return __doapl (this, r); }
+ complex& operator-= (const complex& r) { return __doami (this, r); }
+diff -c3rpN gcc-2.95.3.orig/libstdc++/std/fcomplex.h gcc-2.95.4/libstdc++/std/fcomplex.h
+*** gcc-2.95.3.orig/libstdc++/std/fcomplex.h Fri Oct 10 07:56:55 1997
+--- gcc-2.95.4/libstdc++/std/fcomplex.h Wed Jun 6 01:39:38 2001
+*************** class complex<float>
+*** 38,44 ****
+--- 38,48 ----
+ public:
+ complex (float r = 0, float i = 0): re (r), im (i) { }
+ explicit complex (const complex<double>& r);
++ /* Begin VxWorks specific */
++ #ifndef _NO_LONG_DOUBLE_
+ explicit complex (const complex<long double>& r);
++ #endif
++ /* End VxWorks specific */
+
+ complex& operator+= (const complex& r) { return __doapl (this, r); }
+ complex& operator-= (const complex& r) { return __doami (this, r); }
+diff -c3rpN gcc-2.95.3.orig/libstdc++/stl/stl_alloc.h gcc-2.95.4/libstdc++/stl/stl_alloc.h
+*** gcc-2.95.3.orig/libstdc++/stl/stl_alloc.h Fri May 7 11:13:28 1999
+--- gcc-2.95.4/libstdc++/stl/stl_alloc.h Wed Jun 6 01:39:43 2001
+***************
+*** 38,55 ****
+ // The allocation primitives are intended to allocate individual objects,
+ // not larger arenas as with the original STL allocators.
+
+! #if 0
+ # include <new>
+ # define __THROW_BAD_ALLOC throw bad_alloc()
+ #elif !defined(__THROW_BAD_ALLOC)
+ # include <iostream.h>
+ # define __THROW_BAD_ALLOC cerr << "out of memory" << endl; exit(1)
+ #endif
+
+ #ifdef __STL_WIN32THREADS
+ # include <windows.h>
+ #endif
+!
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- 38,62 ----
+ // The allocation primitives are intended to allocate individual objects,
+ // not larger arenas as with the original STL allocators.
+
+! #ifdef __STL_USE_EXCEPTIONS
+ # include <new>
+ # define __THROW_BAD_ALLOC throw bad_alloc()
+ #elif !defined(__THROW_BAD_ALLOC)
++ #ifdef __vxworks
++ # define __THROW_BAD_ALLOC return (void *) 0
++ #elif
+ # include <iostream.h>
+ # define __THROW_BAD_ALLOC cerr << "out of memory" << endl; exit(1)
+ #endif
++ #endif
+
+ #ifdef __STL_WIN32THREADS
+ # include <windows.h>
+ #endif
+! #ifdef __STL_VXW_THREADS
+! # include <taskLib.h>
+! # include <vxwMutex.h>
+! #endif
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+***************
+*** 58,69 ****
+ # define __RESTRICT
+ #endif
+
+ #if !defined(__STL_PTHREADS) && !defined(__STL_SOLTHREADS) \
+ && !defined(_NOTHREADS) \
+! && !defined(__STL_SGI_THREADS) && !defined(__STL_WIN32THREADS)
+ # define _NOTHREADS
+ #endif
+
+ # ifdef __STL_PTHREADS
+ // POSIX Threads
+ // This is dubious, since this is likely to be a high contention
+--- 65,109 ----
+ # define __RESTRICT
+ #endif
+
++ /* Begin VxWorks specific */
+ #if !defined(__STL_PTHREADS) && !defined(__STL_SOLTHREADS) \
+ && !defined(_NOTHREADS) \
+! && !defined(__STL_SGI_THREADS) && !defined(__STL_WIN32THREADS) \
+! && !defined(__STL_VXW_THREADS)
+! /* End VxWorks specific */
+ # define _NOTHREADS
+ #endif
+
++ /* Begin VxWorks specific */
++ #ifdef __STL_VXW_THREADS
++
++ /* In this scheme every __default_alloc_template class gets its mutex
++ * initialized when the static member _S_node_allocator_lock is constructed.
++ */
++
++ # define __NODE_ALLOCATOR_LOCK \
++ if (threads) _S_node_allocator_lock.lock();
++ # define __NODE_ALLOCATOR_UNLOCK \
++ if (threads) _S_node_allocator_lock.unlock();
++ # define __NODE_ALLOCATOR_THREADS true
++ # define __VOLATILE volatile // may not be needed
++
++ #ifdef __STL_TEMPLATE_NESTED_CLASS_BUG
++ template <bool threads, int inst>
++ class vxw_lock
++ {
++ public:
++ static vxw_mutex_t& _S_node_allocator_lock;
++ vxw_lock () { __NODE_ALLOCATOR_LOCK; }
++ ~vxw_lock () { __NODE_ALLOCATOR_UNLOCK; }
++ };
++
++
++ #endif /* __STL_TEMPLATE_NESTED_CLASS_BUG */
++
++ #endif /* __STL_VXW_THREADS */
++ /* End VxWorks specific */
++
+ # ifdef __STL_PTHREADS
+ // POSIX Threads
+ // This is dubious, since this is likely to be a high contention
+*************** private:
+*** 358,363 ****
+--- 398,409 ----
+ static char* _S_end_free;
+ static size_t _S_heap_size;
+
++ /* Begin VxWorks specific */
++ # ifdef __STL_VXW_THREADS
++ static vxw_mutex_t _S_node_allocator_lock;
++ # endif
++ /* End VxWorks specific */
++
+ # ifdef __STL_SGI_THREADS
+ static volatile unsigned long _S_node_allocator_lock;
+ static void _S_lock(volatile unsigned long*);
+*************** private:
+*** 388,398 ****
+--- 434,449 ----
+ private:
+ # endif
+
++
++ #ifndef __STL_TEMPLATE_NESTED_CLASS_BUG
+ class _Lock {
+ public:
+ _Lock() { __NODE_ALLOCATOR_LOCK; }
+ ~_Lock() { __NODE_ALLOCATOR_UNLOCK; }
+ };
++ #else
++ typedef vxw_lock<threads, inst> _Lock;
++ #endif
+ friend class _Lock;
+
+ public:
+*************** __default_alloc_template<threads, inst>:
+*** 573,578 ****
+--- 624,642 ----
+ deallocate(__p, __old_sz);
+ return(__result);
+ }
++
++ /* Begin VxWorks specific */
++ #ifdef __STL_VXW_THREADS
++ template <bool threads, int inst>
++ vxw_mutex_t __default_alloc_template<threads, inst>::_S_node_allocator_lock;
++
++ #ifdef __STL_TEMPLATE_NESTED_CLASS_BUG
++ template <bool threads, int inst>
++ vxw_mutex_t& vxw_lock<threads, inst>::_S_node_allocator_lock = __default_alloc_template<threads, inst>::_S_node_allocator_lock;
++ #endif
++
++ #endif
++ /* End VxWorks specific */
+
+ #ifdef __STL_PTHREADS
+ template <bool __threads, int __inst>
+diff -c3rpN gcc-2.95.3.orig/libstdc++/stl/stl_config.h gcc-2.95.4/libstdc++/stl/stl_config.h
+*** gcc-2.95.3.orig/libstdc++/stl/stl_config.h Tue May 18 00:03:48 1999
+--- gcc-2.95.4/libstdc++/stl/stl_config.h Wed Jun 6 01:39:43 2001
+***************
+*** 104,109 ****
+--- 104,113 ----
+ # define __STL_SOLTHREADS
+ #endif
+
++ #ifdef __vxworks
++ # define __STL_VXW_THREADS
++ #endif
++
+ # if defined(__sgi) && !defined(__GNUC__)
+ # if !defined(_BOOL)
+ # define __STL_NO_BOOL
+diff -c3rpN gcc-2.95.3.orig/libstdc++/stl/stl_hashtable.h gcc-2.95.4/libstdc++/stl/stl_hashtable.h
+*** gcc-2.95.3.orig/libstdc++/stl/stl_hashtable.h Wed Sep 2 18:24:53 1998
+--- gcc-2.95.4/libstdc++/stl/stl_hashtable.h Wed Jun 6 01:39:44 2001
+*************** void hashtable<_Val,_Key,_HF,_Ex,_Eq,_Al
+*** 1014,1027 ****
+ __STL_TRY {
+ for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
+ if (const _Node* __cur = __ht._M_buckets[__i]) {
+! _Node* __copy = _M_new_node(__cur->_M_val);
+! _M_buckets[__i] = __copy;
+
+ for (_Node* __next = __cur->_M_next;
+ __next;
+ __cur = __next, __next = __cur->_M_next) {
+! __copy->_M_next = _M_new_node(__next->_M_val);
+! __copy = __copy->_M_next;
+ }
+ }
+ }
+--- 1014,1027 ----
+ __STL_TRY {
+ for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
+ if (const _Node* __cur = __ht._M_buckets[__i]) {
+! _Node* ___copy = _M_new_node(__cur->_M_val);
+! _M_buckets[__i] = ___copy;
+
+ for (_Node* __next = __cur->_M_next;
+ __next;
+ __cur = __next, __next = __cur->_M_next) {
+! ___copy->_M_next = _M_new_node(__next->_M_val);
+! ___copy = ___copy->_M_next;
+ }
+ }
+ }
+diff -c3rpN gcc-2.95.3.orig/libstdc++/stl/stl_rope.h gcc-2.95.4/libstdc++/stl/stl_rope.h
+*** gcc-2.95.3.orig/libstdc++/stl/stl_rope.h Mon Jan 1 17:48:22 2001
+--- gcc-2.95.4/libstdc++/stl/stl_rope.h Wed Jun 6 01:39:45 2001
+***************
+*** 32,37 ****
+--- 32,42 ----
+ # ifdef __STL_SGI_THREADS
+ # include <mutex.h>
+ # endif
++ /* Begin VxWorks specific */
++ # ifdef __STL_VXW_THREADS
++ # include <taskLib.h>
++ # endif
++ /* End VxWorks specific */
+
+ __STL_BEGIN_NAMESPACE
+
+*************** struct _Rope_RopeRep : public _Rope_rep_
+*** 466,471 ****
+--- 471,493 ----
+ pthread_mutex_unlock(&_M_refcount_lock);
+ return __result;
+ }
++ # elif defined(__STL_VXW_THREADS)
++ // Begin VxWorks specific code
++ void _M_init_refcount_lock() { }
++ void _M_incr_refcount ()
++ {
++ taskLock ();
++ ++_M_refcount;
++ taskUnlock ();
++ }
++ size_t _M_decr_refcount ()
++ {
++ size_t __result;
++ taskLock ();
++ __result = --_M_refcount;
++ taskUnlock ();
++ return __result;
++ }
+ # else
+ void _M_init_refcount_lock() {}
+ void _M_incr_refcount ()
+*************** class rope : public _Rope_base<_CharT,_A
+*** 1314,1319 ****
+--- 1336,1351 ----
+ pthread_mutex_unlock(&_S_swap_lock);
+ return __result;
+ }
++ /* Begin VxWorks specific */
++ # elif defined(__STL_VXW_THREADS)
++ static _Cstrptr _S_atomic_swap(_Cstrptr* __p, _Cstrptr __q) {
++ taskLock ();
++ _Cstrptr __result = *__p;
++ *__p = __q;
++ taskUnlock ();
++ return __result;
++ }
++ /* End VxWorks specific */
+ # else
+ static _Cstrptr _S_atomic_swap(_Cstrptr* __p, _Cstrptr __q) {
+ _Cstrptr __result = *__p;
+diff -c3rpN gcc-2.95.3.orig/libstdc++/stlinst.cc gcc-2.95.4/libstdc++/stlinst.cc
+*** gcc-2.95.3.orig/libstdc++/stlinst.cc Fri May 7 11:13:49 1999
+--- gcc-2.95.4/libstdc++/stlinst.cc Wed Jun 6 01:39:47 2001
+***************
+*** 1,10 ****
+ // Instantiation file for the -*- C++ -*- Standard Library allocator templates
+ // This file is part of the GNU ANSI C++ Library.
+
+ #include <alloc.h>
+
+ #ifndef __USE_MALLOC
+! template class __default_alloc_template<__NODE_ALLOCATOR_THREADS, 0>;
+ #endif
+-
+ template class __malloc_alloc_template<0>;
+--- 1,23 ----
+ // Instantiation file for the -*- C++ -*- Standard Library allocator templates
+ // This file is part of the GNU ANSI C++ Library.
+
++ #if 0
+ #include <alloc.h>
+
+ #ifndef __USE_MALLOC
+! #ifdef VXW_EXPLICIT_TEMPLATES
+! /* These classes cannot be instantiated implicitly on
+! * some targets because static template data must
+! * be defined in exactly one module. We
+! * explicitly instantiate the most common usages.
+! */
+! template class __default_alloc_template<false, 0>;
+! template class __default_alloc_template<true, 0>;
+! #ifdef __STL_TEMPLATE_NESTED_CLASS_BUG
+! template class vxw_lock <false, 0>;
+! template class vxw_lock <true, 0>;
+! #endif
+ #endif
+ template class __malloc_alloc_template<0>;
++ #endif
++ #endif