+
+ * reload.c (find_reloads ): Pass operand_mode to
+ find_reloads_address.
+
+ 2002-09-07 Scott Snyder
+
+ PR target/7374
+ * config/alpha/alpha.md (abstf2): Fix typo: 'neg' for 'abs'.
+
+ 2002-09-07 Glen Nakamura
+
+ PR opt/7814
+ * sched-deps.c (sched_analyze_insn): Make sure to add insn
+ to reg_last->sets after flushing the dependency lists to guarantee
+ that subsequent clobbers will be dependent on it.
+
+ 2002-09-07 Alan Modra
+
+ * config/rs6000/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
+
+ 2002-09-06 Jakub Jelinek
+
+ * configure.in (HAVE_AS_OFFSETABLE_LO10): Use -xarch=v9
+ unconditionally when gcc_cv_as_flags64 checks are gone.
+ * configure: Rebuilt.
+
+ 2002-09-04 Eric Botcazou
+
+ PR c/7102
+ * optabs.c (expand_binop): Convert CONST_INTs in all cases.
+
+ 2002-09-04 Jason Thorpe
+
+ * config/sparc/t-netbsd64: Disable multilib for now.
+
+ 2002-09-01 Alexandre Oliva
+
+ * c-tree.h (skip_evaluation): Move declaration...
+ * c-common.h: ... here.
+ * c-typeck.c (build_external_ref): Don't assemble_external nor
+ mark a tree as used if skip_evaluation is set.
+ * c-parse.in (typeof): New non-terminal to set skip_evaluation
+ around TYPEOF.
+ (typespec_nonreserved_nonattr): Use it.
+
+ 2002-09-01 Marek Michalkiewicz
+
+ 2002-08-13 Denis Chertykov
+ * config/avr/avr.md: Call CC_STATUS_INIT in all peepnoles
+ which can change CC0.
+
+ 2002-08-29 Rodney Brown
+
+ * doc/install.texi (Specific, alpha*-dec-osf*): Add "virtual
+ memory exhausted" workarounds.
+
+ 2002-08-29 John David Anglin
+
+ * install.texi (hppa64-hp-hpux11*): Document installation procedure.
+
+ 2002-08-28 Jason Merrill
+
+ * c-common.c (c_expand_expr) [STMT_EXPR]: If the last expression is
+ a VAR_DECL with RTL that matches the target, just return that RTL.
+
+ 2002-08-28 Daniel Berlin
+
+ * tree-inline.c (expand_call_inline): Make the statement
+ expression we generate have a COMPOUND_STMT.
+
+ 2002-08-27 Mark Mitchell
+
+ * doc/invoke.texi: Document -Wabi.
+
+ 2002-08-23 David Edelsohn
+
+ * config/rs6000/rs6000.c (rs6000_select_section): Treat
+ DEFAULT_ABI == ABI_AIX like PIC. Test PIC & reloc for readonly
+ default.
+ (rs6000_unique_section): Likewise.
+
+ 2002-08-22 Jason Merrill
+
+ * langhooks-def.h (LANG_HOOKS_EXPR_SIZE): New macro.
+ * langhooks.c (lhd_expr_size): Define default.
+ * langhooks.h (struct lang_hooks): Add expr_size.
+ * explow.c (expr_size): Call it.
+ (int_expr_size): New fn.
+ * expr.h: Declare it.
+ * expr.c (expand_expr) [CONSTRUCTOR]: Use it to calculate how
+ much to store.
+
+ 2002-08-23 Alan Modra
+
+ * config/rs6000/rs6000.c (output_mi_thunk): Don't determine insns
+ for loading delta with num_insns_constant_wide. Calculate
+ delta_low, delta_high without using a conditional.
+
+ 2002-08-20 Andreas Jaeger
+
+ Merge from trunk:
+ Wed Jul 17 00:20:48 CEST 2002 Jan Hubicka
+
+ * i386.md (prefetch): Fix for 64bit mode.
+ (prefetch_sse_rex, prefetch_3dnow_rex): New patterns.
+
+ 2002-08-11 Andreas Jaeger
+ PR target/7531:
+ * doc/invoke.texi (i386 and x86-64 Options): Document -mcmodel.
+
+ 2002-06-24 Jeff Law
+
+ * flow.c (propagate_one_insn): When removing an insn
+ with a REG_LIBCALL note but not the entire libcall sequence,
+ delete the associated REG_RETVAL note.
+
+ 2002-06-04 Jeff Law
+ Michael Matz
+
+ * sched-int.h (struct deps): New field libcall_block_tail_insn.
+ * sched_deps.c (init_deps): Initialize libcall_block_tail_insn.
+ * sched_deps.c (sched_analyze_insn): If libcall_block_tail_insn
+ is set, then mark the current insn as being part of a libcall
+ scheduling group.
+ (sched_analyze): Set and clear libcall_block_tail_insn appropriately.
+
+ * haifa-sched.c (schedule_block): Do not count USE or CLOBBER
+ insns against the issue rate.
+
+ 2002-05-30 Jeff Law
+
+ * flow.c (propagate_one_insn): Revise yesterday's patch. Delete
+ a dead insn with a REG_RETVAL note when the entire libcall is not
+ dead and remove the associated REG_LIBCALL note at the same time.
+
+ 2002-05-29 Jeff Law
+
+ * flow.c (propagate_one_insn): Do not remove a dead insn if it
+ contains a REG_RETVAL note.
+
+ * haifa-sched (sched_analyze): Remove another useless clearing
+ of SCHED_GROUP_P I missed yesterday.
+
+ 2002-05-28 David Edelsohn
+ Jeff Law
+
+ * optabs.c (expand_binop): Fix nwords sign warnings.
+ generate pseudo for add_optab.
+
+ * sched-deps.c (sched_analyze): Do not clear SCHED_GROUP_P.
+ * haifa-sched.c (move_insn): Clear SCHED_GROUP_P after it is used.
+
+ 2002-08-18 Neil Booth
+
+ PR preprocessor/7602
+ * cppinit.c (path_include): Treat the system environment
+ variables as being cxx_aware.
+
+ 2002-08-16 David Edelsohn
+
+ * collect2.c (is_ctor_dtor): Add other possible JOINER values.
+
+ * config/rs6000/rs6000.c (output_mi_thunk): Return to function
+ section on TARGET_ELF.
+
+ * doc/install.texi (*-ibm-aix*): Explain AIX shared object versioning.
+ (Binaries): Update Bull Freeware URL.
+
+ 2002-08-15 Neil Booth
+
+ PR preprocessor/7358
+ PR preprocessor/7357
+ PR preprocessor/7526
+ * cppfiles.c (stack_include_file): Ignore main file if
+ appropriate. Correct test of whether a dependency should
+ be output.
+ * cppinit.c (init_dependency_output): Ignore main file
+ for SUNPRO_DEPENDENCIES.
+ (struct lang_flags): Rename trigraphs std.
+ (set_lang): Update.
+ * cpplib.c (run_directive): Kludge so _Pragma dependency works.
+ * cpplib.h (struct cpp_options): New members.
+ * cppmacro.c (collect_args): Flag whether to swallow a possible
+ future comma pasted with varargs.
+ (replace_args): Use this flag.
+ * doc/cpp.texi: Update varargs extension documentation.
+ * doc/cppenv.texi: Update.
+
2002-08-14 Release Manager
* GCC 3.2 Released.
***************
*** 105,111 ****
instead of gen_rtx_SUBREG.
(arm_reload_out_hi): Use gen_lowpart instead of
gen_rtx_SUBREG to access QImode components.
! * config/arm/arm.md: Disable zero_extend split for QImode
subregs in BIG_ENDIAN mode.
(storehi_bigend): Match use of least significant byte.
(storeinthi): Remove extraneous SUBREG.
--- 1103,1109 ----
instead of gen_rtx_SUBREG.
(arm_reload_out_hi): Use gen_lowpart instead of
gen_rtx_SUBREG to access QImode components.
! * config/arm/arm.md: Disable zero_extend split for QImode
subregs in BIG_ENDIAN mode.
(storehi_bigend): Match use of least significant byte.
(storeinthi): Remove extraneous SUBREG.
***************
*** 191,197 ****
* config/m68hc11/m68hc11.md ("*movqi_68hc12"): Avoid allocating
QI mode registers in soft registers.
! ("zero_extendqihi2"): Do not take into account soft registers
for register allocation (use '*' constraint).
2002-07-05 Stephane Carrez
--- 1189,1195 ----
* config/m68hc11/m68hc11.md ("*movqi_68hc12"): Avoid allocating
QI mode registers in soft registers.
! ("zero_extendqihi2"): Do not take into account soft registers
for register allocation (use '*' constraint).
2002-07-05 Stephane Carrez
***************
*** 212,218 ****
* dwarfout.c (output_reg_number): Fix warning message.
(output_bound_representation): Check SAVE_EXPR_RTL is not NULL
before using it.
!
2002-07-03 Richard Henderson
* config/i386/i386.md (prologue_get_pc): Issue pop here ...
--- 1210,1216 ----
* dwarfout.c (output_reg_number): Fix warning message.
(output_bound_representation): Check SAVE_EXPR_RTL is not NULL
before using it.
!
2002-07-03 Richard Henderson
* config/i386/i386.md (prologue_get_pc): Issue pop here ...
***************
*** 255,261 ****
* config/m68hc11/m68hc11.md ("*addsi3"): Use 'o' constraint to
avoid the auto increment addressing modes.
("*subsi3"): Likewise.
! (split for add/sub on address): For 68HC12 push the value on
the stack and do the operation with a pop.
2002-06-28 Stephane Carrez
--- 1253,1259 ----
* config/m68hc11/m68hc11.md ("*addsi3"): Use 'o' constraint to
avoid the auto increment addressing modes.
("*subsi3"): Likewise.
! (split for add/sub on address): For 68HC12 push the value on
the stack and do the operation with a pop.
2002-06-28 Stephane Carrez
***************
*** 302,308 ****
* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Pass
flag_function_sections as new 3rd arg to resolve_unique_section.
!
2002-06-27 Neil Booth
PR preprocessor/7070
--- 1300,1306 ----
* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Pass
flag_function_sections as new 3rd arg to resolve_unique_section.
!
2002-06-27 Neil Booth
PR preprocessor/7070
***************
*** 318,324 ****
* doc/install.texi: Change ` bit' to `-bit'.
* doc/md.texi: Change `-bits' to `-bit'.
* doc/tm.texi: Change `-bits' to ` bits'.
!
2002-06-24 David S. Miller
* config/sparc/sparc.h (INIT_TARGET_OPTABS): If ARCH64, set the
--- 1316,1322 ----
* doc/install.texi: Change ` bit' to `-bit'.
* doc/md.texi: Change `-bits' to `-bit'.
* doc/tm.texi: Change `-bits' to ` bits'.
!
2002-06-24 David S. Miller
* config/sparc/sparc.h (INIT_TARGET_OPTABS): If ARCH64, set the
diff -Nrc3pad gcc-3.2/gcc/Makefile.in gcc-3.2.1/gcc/Makefile.in
*** gcc-3.2/gcc/Makefile.in Thu May 23 17:57:21 2002
--- gcc-3.2.1/gcc/Makefile.in Mon Oct 14 21:04:16 2002
*************** libgcc.mk: config.status Makefile mklibg
*** 1003,1009 ****
SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \
SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \
SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \
! SHLIB_SLIBDIR_SUFFIXES='$(SHLIB_SLIBDIR_SUFFIXES)' \
mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \
$(SHELL) mklibgcc > tmp-libgcc.mk
mv tmp-libgcc.mk libgcc.mk
--- 1003,1009 ----
SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \
SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \
SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \
! MULTILIB_OSDIRNAMES='$(MULTILIB_OSDIRNAMES)' \
mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \
$(SHELL) mklibgcc > tmp-libgcc.mk
mv tmp-libgcc.mk libgcc.mk
*************** libgcc.a: $(LIBGCC_DEPS)
*** 1037,1043 ****
# switches.
multilib.h: s-mlib; @true
s-mlib: $(srcdir)/genmultilib Makefile
! if test @enable_multilib@ = yes; then \
$(SHELL) $(srcdir)/genmultilib \
"$(MULTILIB_OPTIONS)" \
"$(MULTILIB_DIRNAMES)" \
--- 1037,1044 ----
# switches.
multilib.h: s-mlib; @true
s-mlib: $(srcdir)/genmultilib Makefile
! if test @enable_multilib@ = yes \
! || test -n "$(MULTILIB_OSDIRNAMES)"; then \
$(SHELL) $(srcdir)/genmultilib \
"$(MULTILIB_OPTIONS)" \
"$(MULTILIB_DIRNAMES)" \
*************** s-mlib: $(srcdir)/genmultilib Makefile
*** 1045,1053 ****
"$(MULTILIB_EXCEPTIONS)" \
"$(MULTILIB_EXTRA_OPTS)" \
"$(MULTILIB_EXCLUSIONS)" \
> tmp-mlib.h; \
else \
! $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' > tmp-mlib.h; \
fi
$(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h
$(STAMP) s-mlib
--- 1046,1057 ----
"$(MULTILIB_EXCEPTIONS)" \
"$(MULTILIB_EXTRA_OPTS)" \
"$(MULTILIB_EXCLUSIONS)" \
+ "$(MULTILIB_OSDIRNAMES)" \
+ "@enable_multilib@" \
> tmp-mlib.h; \
else \
! $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
! > tmp-mlib.h; \
fi
$(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h
$(STAMP) s-mlib
*************** varasm.o : varasm.c $(CONFIG_H) $(SYSTEM
*** 1379,1385 ****
$(HASHTAB_H) $(TARGET_H) langhooks.h
function.o : function.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
function.h $(EXPR_H) libfuncs.h $(REGS_H) hard-reg-set.h \
! insn-config.h $(RECOG_H) output.h toplev.h except.h hash.h $(GGC_H) $(TM_P_H)
stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \
insn-config.h hard-reg-set.h $(EXPR_H) libfuncs.h except.h \
$(LOOP_H) $(RECOG_H) toplev.h output.h varray.h $(GGC_H) $(TM_P_H)
--- 1383,1390 ----
$(HASHTAB_H) $(TARGET_H) langhooks.h
function.o : function.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
function.h $(EXPR_H) libfuncs.h $(REGS_H) hard-reg-set.h \
! insn-config.h $(RECOG_H) output.h toplev.h except.h hash.h $(GGC_H) \
! $(TM_P_H) langhooks.h
stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \
insn-config.h hard-reg-set.h $(EXPR_H) libfuncs.h except.h \
$(LOOP_H) $(RECOG_H) toplev.h output.h varray.h $(GGC_H) $(TM_P_H)
*************** $(docdir)/gcc.info: $(docdir)/gcc.texi $
*** 2273,2279 ****
$(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \
$(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \
$(docdir)/bugreport.texi $(docdir)/service.texi \
! $(docdir)/contribute.texi $(docdir)/vms.texi \
$(docdir)/include/funding.texi $(docdir)/gnu.texi \
$(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
$(docdir)/contrib.texi $(docdir)/cppenv.texi $(docdir)/cppopts.texi
--- 2278,2284 ----
$(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \
$(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \
$(docdir)/bugreport.texi $(docdir)/service.texi \
! $(docdir)/contribute.texi $(docdir)/vms.texi $(docdir)/compat.texi \
$(docdir)/include/funding.texi $(docdir)/gnu.texi \
$(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
$(docdir)/contrib.texi $(docdir)/cppenv.texi $(docdir)/cppopts.texi
diff -Nrc3pad gcc-3.2/gcc/NEWS gcc-3.2.1/gcc/NEWS
*** gcc-3.2/gcc/NEWS Wed Aug 14 09:31:23 2002
--- gcc-3.2.1/gcc/NEWS Tue Nov 19 18:12:06 2002
*************** http://gcc.gnu.org/gcc-3.2/index.html
*** 9,47 ****
GCC 3.2
! August 14, 2002
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 3.2.
GCC used to stand for the GNU C Compiler, but since the compiler
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
! A list of [2]successful builds is updated as new information becomes
available.
The GCC developers would like to thank the numerous people that have
! contributed [3]new features, improvements, bug fixes, and other
! changes as well as test results to GCC. This [4]amazing group of
volunteers is what makes GCC successful.
! For additional information about GCC please refer to the [5]GCC
! project web site or contact the [6]GCC development mailing list.
! To obtain GCC please use [7]our mirror sites, one of the [8]GNU mirror
! sites, or [9]our CVS server.
_________________________________________________________________
_________________________________________________________________
! Please send FSF & GNU inquiries & questions to [10]gnu@gnu.org. There
! are also [11]other ways to contact the FSF.
! These pages are maintained by [12]The GCC team.
! Please send comments on these web pages and GCC to [13]gcc@gnu.org
! or [14]gcc@gcc.gnu.org, send other questions to [15]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 9,55 ----
GCC 3.2
! November 19, 2002
The [1]GNU project and the GCC developers are pleased to announce the
+ release of GCC 3.2.1.
+
+ The links below still apply to GCC 3.2.1.
+
+ August 14, 2002
+
+ The [2]GNU project and the GCC developers are pleased to announce the
release of GCC 3.2.
GCC used to stand for the GNU C Compiler, but since the compiler
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
! A list of [3]successful builds is updated as new information becomes
available.
The GCC developers would like to thank the numerous people that have
! contributed [4]new features, improvements, bug fixes, and other
! changes as well as test results to GCC. This [5]amazing group of
volunteers is what makes GCC successful.
! For additional information about GCC please refer to the [6]GCC
! project web site or contact the [7]GCC development mailing list.
! To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
! sites, or [10]our CVS server.
_________________________________________________________________
_________________________________________________________________
! Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
! are also [12]other ways to contact the FSF.
! These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
! questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/gcc-3.2/index.html
*** 49,87 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-08-14 [16]Valid XHTML 1.0
References
1. http://www.gnu.org/
! 2. http://gcc.gnu.org/gcc-3.2/buildstat.html
! 3. http://gcc.gnu.org/gcc-3.2/changes.html
! 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
! 5. http://gcc.gnu.org/index.html
! 6. mailto:gcc@gcc.gnu.org
! 7. http://gcc.gnu.org/mirrors.html
! 8. http://www.gnu.org/order/ftp.html
! 9. http://gcc.gnu.org/cvs.html
! 10. mailto:gnu@gnu.org
! 11. http://www.gnu.org/home.html#ContactInfo
! 12. http://gcc.gnu.org/about.html
! 13. mailto:gcc@gnu.org
! 14. mailto:gcc@gcc.gnu.org
! 15. mailto:gnu@gnu.org
! 16. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.2/changes.html
! GCC 3.2 Changes, New Features, and Fixes
! Relase Notes
! See [1]this message for a list of bugs fixed in this released.
Caveats
* This GCC release is based on the GCC 3.1 sourcebase, and thus has
! all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
a number of C++ ABI fixes which make its C++ compiler generate
binary code which is incompatible with the C++ compilers found in
earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
--- 57,144 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-18 [17]Valid XHTML 1.0
References
1. http://www.gnu.org/
! 2. http://www.gnu.org/
! 3. http://gcc.gnu.org/gcc-3.2/buildstat.html
! 4. http://gcc.gnu.org/gcc-3.2/changes.html
! 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
! 6. http://gcc.gnu.org/index.html
! 7. mailto:gcc@gcc.gnu.org
! 8. http://gcc.gnu.org/mirrors.html
! 9. http://www.gnu.org/order/ftp.html
! 10. http://gcc.gnu.org/cvs.html
! 11. mailto:gnu@gnu.org
! 12. http://www.gnu.org/home.html#ContactInfo
! 13. http://gcc.gnu.org/about.html
! 14. mailto:gcc@gnu.org
! 15. mailto:gcc@gcc.gnu.org
! 16. mailto:gnu@gnu.org
! 17. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.2/changes.html
! Changes in GCC 3.2.1
! C/C++/Objective-C
! * The method of constructing the list of directories to be searched
! for header files has been revised. If a directory named by a -I
! option is a standard system include directory, the option is
! ignored to ensure that the default search order for system
! directories and the special treatment of system header files are
! not defeated.
! * The C and Objective-C compilers no longer accept the "Naming
! Types" extension (typedef foo = bar); it was already unavailable
! in C++. Code which uses it will need to be changed to use the
! "typeof" extension instead: typedef typeof(bar) foo. (We have
! removed this extension without a period of deprecation because it
! has caused the compiler to crash since version 3.0 and no one
! noticed until very recently. Thus we conclude it is not in
! widespread use.)
!
! New Targets and Target Specific Improvements
!
! IA-32
!
! * Fixed a number of bugs in SSE and MMX intrinsics.
! * Fixed common compiler crashes with SSE instruction set enabled
! (implied by -march=pentium3, pentium4, athlon-xp)
! * __m128 and __m128i is not 128bit aligned when used in structures.
!
! x86-64
!
! * A bug whereby the compiler could generate bad code for bzero has
! been fixed.
! * ABI fixes (implying ABI incompatibilities with previous version in
! some corner cases)
! * Fixed prefetch code generation
!
! Bug Fixes
!
! See [1]this message for a list of bugs fixed in this release.
!
! Changes in GCC 3.2
!
! Bug Fixes
!
! See [2]this message for a list of bugs fixed in this release.
Caveats
+ * The C++ compiler does not correctly zero-initialize
+ pointers-to-data members. You must explicitly initialize them. For
+ example:
+ int S::*m(0);
+
+ will work, but depending on default-initialization to zero will
+ not work. This bug cannot be fixed in GCC 3.2 without inducing
+ unacceptable risks. It will be fixed in GCC 3.3.
* This GCC release is based on the GCC 3.1 sourcebase, and thus has
! all the [3]changes in the GCC 3.1 series. In addition, GCC 3.2 has
a number of C++ ABI fixes which make its C++ compiler generate
binary code which is incompatible with the C++ compilers found in
earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
*************** New Languages and Language specific impr
*** 99,123 ****
they are necessary for correct compilation of C++, as opposed to
conformance to the ABI documents.
* For details on how to build an ABI compliant compiler for
! GNU/Linux systems, check the [3]common C++ ABI page.
!
! New Targets and Target Specific Improvements
!
! x86-64
!
! * A bug whereby the complier could generated bad code for bzero has
! been fixed.
! *
_________________________________________________________________
! Please send FSF & GNU inquiries & questions to [4]gnu@gnu.org. There
! are also [5]other ways to contact the FSF.
! These pages are maintained by [6]The GCC team.
! Please send comments on these web pages and GCC to [7]gcc@gnu.org or
! [8]gcc@gcc.gnu.org, send other questions to [9]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 156,173 ----
they are necessary for correct compilation of C++, as opposed to
conformance to the ABI documents.
* For details on how to build an ABI compliant compiler for
! GNU/Linux systems, check the [4]common C++ ABI page.
_________________________________________________________________
! Please send FSF & GNU inquiries & questions to [5]gnu@gnu.org. There
! are also [6]other ways to contact the FSF.
! These pages are maintained by [7]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [8]gcc@gnu.org or [9]gcc@gcc.gnu.org, send other
! questions to [10]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** New Targets and Target Specific Improvem
*** 125,144 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-08-14 [10]Valid XHTML 1.0
References
! 1. http://gcc.gnu.org/ml/gcc/2002-08/msg00405.html
! 2. http://gcc.gnu.org/gcc-3.1/changes.html
! 3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
! 4. mailto:gnu@gnu.org
! 5. http://www.gnu.org/home.html#ContactInfo
! 6. http://gcc.gnu.org/about.html
! 7. mailto:gcc@gnu.org
! 8. mailto:gcc@gcc.gnu.org
! 9. mailto:gnu@gnu.org
! 10. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.1/index.html
--- 175,195 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-18 [11]Valid XHTML 1.0
References
! 1. http://gcc.gnu.org/ml/gcc/2002-11/msg00445.html
! 2. http://gcc.gnu.org/ml/gcc/2002-08/msg00405.html
! 3. http://gcc.gnu.org/gcc-3.1/changes.html
! 4. http://gcc.gnu.org/gcc-3.2/c++-abi.html
! 5. mailto:gnu@gnu.org
! 6. http://www.gnu.org/home.html#ContactInfo
! 7. http://gcc.gnu.org/about.html
! 8. mailto:gcc@gnu.org
! 9. mailto:gcc@gcc.gnu.org
! 10. mailto:gnu@gnu.org
! 11. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.1/index.html
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 182,189 ****
These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to [14]gcc@gnu.org
! or [15]gcc@gcc.gnu.org, send other questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 233,241 ----
These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
! questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 191,197 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-28 [17]Valid XHTML 1.0
References
--- 243,249 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [17]Valid XHTML 1.0
References
*************** Documentation improvements
*** 544,551 ****
These pages are maintained by [21]The GCC team.
! Please send comments on these web pages and GCC to [22]gcc@gnu.org
! or [23]gcc@gcc.gnu.org, send other questions to [24]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 596,604 ----
These pages are maintained by [21]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [22]gcc@gnu.org or [23]gcc@gcc.gnu.org, send other
! questions to [24]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** Documentation improvements
*** 553,559 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-26 [25]Valid XHTML 1.0
References
--- 606,612 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [25]Valid XHTML 1.0
References
*************** References
*** 565,571 ****
6. http://www.codesourcery.com/
7. http://gcc.gnu.org/gcc-3.1/c99status.html
8. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_1
! 9. http://gcc.gnu.org/onlinedocs/g77_news.html
10. http://www.gnat.com/
11. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
12. http://www.axis.com/
--- 618,624 ----
6. http://www.codesourcery.com/
7. http://gcc.gnu.org/gcc-3.1/c99status.html
8. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_1
! 9. http://gcc.gnu.org/onlinedocs/g77/News.html
10. http://www.gnat.com/
11. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
12. http://www.axis.com/
*************** Previous 3.0.x Releases
*** 632,639 ****
These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to [14]gcc@gnu.org
! or [15]gcc@gcc.gnu.org, send other questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 685,693 ----
These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
! questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** Previous 3.0.x Releases
*** 641,647 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [17]Valid XHTML 1.0
References
--- 695,701 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [17]Valid XHTML 1.0
References
*************** Other significant improvements
*** 832,839 ****
These pages are maintained by [16]The GCC team.
! Please send comments on these web pages and GCC to [17]gcc@gnu.org
! or [18]gcc@gcc.gnu.org, send other questions to [19]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 886,894 ----
These pages are maintained by [16]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [17]gcc@gnu.org or [18]gcc@gcc.gnu.org, send other
! questions to [19]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** Other significant improvements
*** 841,847 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [20]Valid XHTML 1.0
References
--- 896,902 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [20]Valid XHTML 1.0
References
*************** References
*** 855,861 ****
8. http://gcc.gnu.org/news/inlining.html
9. http://gcc.gnu.org/news/dependencies.html
10. http://gcc.gnu.org/gcc-3.0/c99status.html
! 11. http://gcc.gnu.org/onlinedocs/g77_news.html
12. http://gcc.gnu.org/gcc-3.0/libgcc.html
13. http://gcc.gnu.org/gcc-2.95/features.html
14. mailto:gnu@gnu.org
--- 910,916 ----
8. http://gcc.gnu.org/news/inlining.html
9. http://gcc.gnu.org/news/dependencies.html
10. http://gcc.gnu.org/gcc-3.0/c99status.html
! 11. http://gcc.gnu.org/onlinedocs/g77/News.html
12. http://gcc.gnu.org/gcc-3.0/libgcc.html
13. http://gcc.gnu.org/gcc-2.95/features.html
14. mailto:gnu@gnu.org
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 910,917 ****
These pages are maintained by [6]The GCC team.
! Please send comments on these web pages and GCC to [7]gcc@gnu.org or
! [8]gcc@gcc.gnu.org, send other questions to [9]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 965,973 ----
These pages are maintained by [6]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [7]gcc@gnu.org or [8]gcc@gcc.gnu.org, send other
! questions to [9]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 919,925 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-08-14 [10]Valid XHTML 1.0
References
--- 975,981 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [10]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/gcc-2.95/index.html
*** 988,995 ****
These pages are maintained by [15]The GCC team.
! Please send comments on these web pages and GCC to [16]gcc@gnu.org
! or [17]gcc@gcc.gnu.org, send other questions to [18]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1044,1052 ----
These pages are maintained by [15]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [16]gcc@gnu.org or [17]gcc@gcc.gnu.org, send other
! questions to [18]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/gcc-2.95/index.html
*** 997,1003 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [19]Valid XHTML 1.0
References
--- 1054,1060 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [19]Valid XHTML 1.0
References
*************** Additional Changes in GCC 2.95.3
*** 1261,1268 ****
These pages are maintained by [20]The GCC team.
! Please send comments on these web pages and GCC to [21]gcc@gnu.org
! or [22]gcc@gcc.gnu.org, send other questions to [23]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1318,1326 ----
These pages are maintained by [20]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [21]gcc@gnu.org or [22]gcc@gcc.gnu.org, send other
! questions to [23]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** Additional Changes in GCC 2.95.3
*** 1270,1276 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [24]Valid XHTML 1.0
References
--- 1328,1334 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [24]Valid XHTML 1.0
References
*************** References
*** 1283,1289 ****
7. http://gcc.gnu.org/news/alias.html
8. http://gcc.gnu.org/fom_serv/cache/24.html
9. http://gcc.gnu.org/gcc-2.95/c++features.html
! 10. http://gcc.gnu.org/onlinedocs/g77_news.html
11. http://gcc.gnu.org/java/gcj-announce.txt
12. http://gcc.gnu.org/news/javaannounce.html
13. http://gcc.gnu.org/c99status.html
--- 1341,1347 ----
7. http://gcc.gnu.org/news/alias.html
8. http://gcc.gnu.org/fom_serv/cache/24.html
9. http://gcc.gnu.org/gcc-2.95/c++features.html
! 10. http://gcc.gnu.org/onlinedocs/g77/News.html
11. http://gcc.gnu.org/java/gcj-announce.txt
12. http://gcc.gnu.org/news/javaannounce.html
13. http://gcc.gnu.org/c99status.html
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 1350,1357 ****
These pages are maintained by [6]The GCC team.
! Please send comments on these web pages and GCC to [7]gcc@gnu.org or
! [8]gcc@gcc.gnu.org, send other questions to [9]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1408,1416 ----
These pages are maintained by [6]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [7]gcc@gnu.org or [8]gcc@gcc.gnu.org, send other
! questions to [9]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 1359,1365 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [10]Valid XHTML 1.0
References
--- 1418,1424 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [10]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 1578,1585 ****
These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to [14]gcc@gnu.org
! or [15]gcc@gcc.gnu.org, send other questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1637,1645 ----
These pages are maintained by [13]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
! questions to [16]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 1587,1593 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [17]Valid XHTML 1.0
References
--- 1647,1653 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [17]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 1684,1691 ****
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to [9]gcc@gnu.org or
! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1744,1752 ----
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
! questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 1693,1703 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [12]Valid XHTML 1.0
References
! 1. http://gcc.gnu.org/onlinedocs/g77_news.html
2. http://gcc.gnu.org/egcs-1.1/c++features.html
3. http://gcc.gnu.org/news/gcse.html
4. http://gcc.gnu.org/news/alias.html
--- 1754,1764 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [12]Valid XHTML 1.0
References
! 1. http://gcc.gnu.org/onlinedocs/g77/News.html
2. http://gcc.gnu.org/egcs-1.1/c++features.html
3. http://gcc.gnu.org/news/gcse.html
4. http://gcc.gnu.org/news/alias.html
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 1744,1751 ****
These pages are maintained by [4]The GCC team.
! Please send comments on these web pages and GCC to [5]gcc@gnu.org or
! [6]gcc@gcc.gnu.org, send other questions to [7]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1805,1813 ----
These pages are maintained by [4]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [5]gcc@gnu.org or [6]gcc@gcc.gnu.org, send other
! questions to [7]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 1753,1759 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [8]Valid XHTML 1.0
References
--- 1815,1821 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [8]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.h
*** 1848,1855 ****
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to [9]gcc@gnu.org or
! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 1910,1918 ----
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
! questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.h
*** 1857,1863 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [12]Valid XHTML 1.0
References
--- 1920,1926 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [12]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.h
*** 1987,1994 ****
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to [9]gcc@gnu.org or
! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 2050,2058 ----
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
! questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.h
*** 1996,2002 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [12]Valid XHTML 1.0
References
--- 2060,2066 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [12]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.h
*** 2126,2133 ****
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to [9]gcc@gnu.org or
! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 2190,2198 ----
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
! questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.h
*** 2135,2141 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [12]Valid XHTML 1.0
References
--- 2200,2206 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [12]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.htm
*** 2222,2229 ****
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to [9]gcc@gnu.org or
! [10]gcc@gcc.gnu.org, send other questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 2287,2295 ----
These pages are maintained by [8]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
! questions to [11]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.0/egcs-1.0.htm
*** 2231,2237 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [12]Valid XHTML 1.0
References
--- 2297,2303 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [12]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 2295,2302 ****
These pages are maintained by [5]The GCC team.
! Please send comments on these web pages and GCC to [6]gcc@gnu.org or
! [7]gcc@gcc.gnu.org, send other questions to [8]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 2361,2369 ----
These pages are maintained by [5]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [6]gcc@gnu.org or [7]gcc@gcc.gnu.org, send other
! questions to [8]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 2304,2310 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [9]Valid XHTML 1.0
References
--- 2371,2377 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [9]Valid XHTML 1.0
References
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 2354,2361 ****
These pages are maintained by [4]The GCC team.
! Please send comments on these web pages and GCC to [5]gcc@gnu.org or
! [6]gcc@gcc.gnu.org, send other questions to [7]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
--- 2421,2429 ----
These pages are maintained by [4]The GCC team.
! Please send comments on these web pages and GCC to our public
! mailing list at [5]gcc@gnu.org or [6]gcc@gcc.gnu.org, send other
! questions to [7]gnu@gnu.org.
Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 2363,2369 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [8]Valid XHTML 1.0
References
--- 2431,2437 ----
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-11-11 [8]Valid XHTML 1.0
References
diff -Nrc3pad gcc-3.2/gcc/alias.c gcc-3.2.1/gcc/alias.c
*** gcc-3.2/gcc/alias.c Thu Jun 20 07:35:41 2002
--- gcc-3.2.1/gcc/alias.c Mon Oct 14 21:04:16 2002
***************
*** 1,5 ****
/* Alias analysis for GNU C
! Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
Contributed by John Carr (jfc@mit.edu).
This file is part of GCC.
--- 1,5 ----
/* Alias analysis for GNU C
! Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Contributed by John Carr (jfc@mit.edu).
This file is part of GCC.
*************** objects_must_conflict_p (t1, t2)
*** 321,328 ****
then they may not conflict. */
if ((t1 != 0 && readonly_fields_p (t1))
|| (t2 != 0 && readonly_fields_p (t2))
! || (t1 != 0 && TYPE_READONLY (t1))
! || (t2 != 0 && TYPE_READONLY (t2)))
return 0;
/* If they are the same type, they must conflict. */
--- 321,328 ----
then they may not conflict. */
if ((t1 != 0 && readonly_fields_p (t1))
|| (t2 != 0 && readonly_fields_p (t2))
! || (t1 != 0 && lang_hooks.honor_readonly && TYPE_READONLY (t1))
! || (t2 != 0 && lang_hooks.honor_readonly && TYPE_READONLY (t2)))
return 0;
/* If they are the same type, they must conflict. */
diff -Nrc3pad gcc-3.2/gcc/c-common.c gcc-3.2.1/gcc/c-common.c
*** gcc-3.2/gcc/c-common.c Thu Jun 20 07:35:43 2002
--- gcc-3.2.1/gcc/c-common.c Wed Aug 28 21:17:12 2002
*************** c_expand_expr (exp, target, tmode, modif
*** 3564,3569 ****
--- 3564,3570 ----
tree rtl_expr;
rtx result;
bool preserve_result = false;
+ bool return_target = false;
/* Since expand_expr_stmt calls free_temp_slots after every
expression statement, we must call push_temp_slots here.
*************** c_expand_expr (exp, target, tmode, modif
*** 3591,3598 ****
if (TREE_CODE (last) == SCOPE_STMT
&& TREE_CODE (expr) == EXPR_STMT)
{
! TREE_ADDRESSABLE (expr) = 1;
! preserve_result = true;
}
}
--- 3592,3611 ----
if (TREE_CODE (last) == SCOPE_STMT
&& TREE_CODE (expr) == EXPR_STMT)
{
! if (target && TREE_CODE (EXPR_STMT_EXPR (expr)) == VAR_DECL
! && DECL_RTL_IF_SET (EXPR_STMT_EXPR (expr)) == target)
! /* If the last expression is a variable whose RTL is the
! same as our target, just return the target; if it
! isn't valid expanding the decl would produce different
! RTL, and store_expr would try to do a copy. */
! return_target = true;
! else
! {
! /* Otherwise, note that we want the value from the last
! expression. */
! TREE_ADDRESSABLE (expr) = 1;
! preserve_result = true;
! }
}
}
*************** c_expand_expr (exp, target, tmode, modif
*** 3600,3606 ****
expand_end_stmt_expr (rtl_expr);
result = expand_expr (rtl_expr, target, tmode, modifier);
! if (preserve_result && GET_CODE (result) == MEM)
{
if (GET_MODE (result) != BLKmode)
result = copy_to_reg (result);
--- 3613,3621 ----
expand_end_stmt_expr (rtl_expr);
result = expand_expr (rtl_expr, target, tmode, modifier);
! if (return_target)
! result = target;
! else if (preserve_result && GET_CODE (result) == MEM)
{
if (GET_MODE (result) != BLKmode)
result = copy_to_reg (result);
diff -Nrc3pad gcc-3.2/gcc/c-common.h gcc-3.2.1/gcc/c-common.h
*** gcc-3.2/gcc/c-common.h Wed Apr 17 01:43:56 2002
--- gcc-3.2.1/gcc/c-common.h Sun Sep 1 20:11:06 2002
*************** extern int warn_conversion;
*** 464,469 ****
--- 464,474 ----
extern int warn_long_long;
+ /* Nonzero means the expression being parsed will never be evaluated.
+ This is a count, since unevaluated expressions can nest. */
+
+ extern int skip_evaluation;
+
/* C types are partitioned into three subsets: object, function, and
incomplete types. */
#define C_TYPE_OBJECT_P(type) \
diff -Nrc3pad gcc-3.2/gcc/c-decl.c gcc-3.2.1/gcc/c-decl.c
*** gcc-3.2/gcc/c-decl.c Fri Jul 26 23:23:03 2002
--- gcc-3.2.1/gcc/c-decl.c Sat Oct 19 03:17:39 2002
*************** start_decl (declarator, declspecs, initi
*** 3485,3499 ****
switch (TREE_CODE (decl))
{
case TYPE_DECL:
! /* typedef foo = bar means give foo the same type as bar.
! We haven't parsed bar yet, so `finish_decl' will fix that up.
! Any other case of an initialization in a TYPE_DECL is an error. */
! if (pedantic || list_length (declspecs) > 1)
! {
! error ("typedef `%s' is initialized",
! IDENTIFIER_POINTER (DECL_NAME (decl)));
! initialized = 0;
! }
break;
case FUNCTION_DECL:
--- 3485,3493 ----
switch (TREE_CODE (decl))
{
case TYPE_DECL:
! error ("typedef `%s' is initialized (use __typeof__ instead)",
! IDENTIFIER_POINTER (DECL_NAME (decl)));
! initialized = 0;
break;
case FUNCTION_DECL:
*************** finish_decl (decl, init, asmspec_tree)
*** 3642,3657 ****
init = 0;
if (init)
! {
! if (TREE_CODE (decl) != TYPE_DECL)
! store_init_value (decl, init);
! else
! {
! /* typedef foo = bar; store the type of bar as the type of foo. */
! TREE_TYPE (decl) = TREE_TYPE (init);
! DECL_INITIAL (decl) = init = 0;
! }
! }
/* Deduce size of array from initialization, if not already known */
if (TREE_CODE (type) == ARRAY_TYPE
--- 3636,3642 ----
init = 0;
if (init)
! store_init_value (decl, init);
/* Deduce size of array from initialization, if not already known */
if (TREE_CODE (type) == ARRAY_TYPE
diff -Nrc3pad gcc-3.2/gcc/c-objc-common.c gcc-3.2.1/gcc/c-objc-common.c
*** gcc-3.2/gcc/c-objc-common.c Thu Mar 28 18:49:58 2002
--- gcc-3.2.1/gcc/c-objc-common.c Fri Oct 25 22:11:08 2002
*************** inline_forbidden_p (nodep, walk_subtrees
*** 131,136 ****
--- 131,152 ----
break;
+ case RECORD_TYPE:
+ case UNION_TYPE:
+ /* We cannot inline a function of the form
+
+ void F (int i) { struct S { int ar[i]; } s; }
+
+ Attempting to do so produces a catch-22 in tree-inline.c.
+ If walk_tree examines the TYPE_FIELDS chain of RECORD_TYPE/
+ UNION_TYPE nodes, then it goes into infinite recursion on a
+ structure containing a pointer to its own type. If it doesn't,
+ then the type node for S doesn't get adjusted properly when
+ F is inlined, and we abort in find_function_data. */
+ for (t = TYPE_FIELDS (node); t; t = TREE_CHAIN (t))
+ if (variably_modified_type_p (TREE_TYPE (t)))
+ return node;
+
default:
break;
}
*************** c_cannot_inline_tree_fn (fnp)
*** 149,154 ****
--- 165,178 ----
&& lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL)
return 1;
+ /* Don't auto-inline anything that might not be bound within
+ this unit of translation. */
+ if (!DECL_DECLARED_INLINE_P (fn) && flag_pic && TREE_PUBLIC (fn))
+ {
+ DECL_UNINLINABLE (fn) = 1;
+ return 1;
+ }
+
if (! function_attribute_inlinable_p (fn))
{
DECL_UNINLINABLE (fn) = 1;
diff -Nrc3pad gcc-3.2/gcc/c-parse.c gcc-3.2.1/gcc/c-parse.c
*** gcc-3.2/gcc/c-parse.c Wed Aug 14 09:32:35 2002
--- gcc-3.2.1/gcc/c-parse.c Tue Nov 19 18:13:17 2002
*************** c_parse_init ()
*** 199,209 ****
! #define YYFINAL 900
#define YYFLAG -32768
#define YYNTBASE 91
! #define YYTRANSLATE(x) ((unsigned)(x) <= 322 ? yytranslate[x] : 289)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
--- 199,209 ----
! #define YYFINAL 901
#define YYFLAG -32768
#define YYNTBASE 91
! #define YYTRANSLATE(x) ((unsigned)(x) <= 322 ? yytranslate[x] : 290)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
*************** static const short yyprhs[] = { 0,
*** 248,480 ****
62, 67, 68, 69, 79, 84, 85, 86, 95, 99,
101, 103, 105, 107, 109, 111, 113, 115, 117, 119,
120, 122, 124, 128, 130, 133, 136, 139, 142, 145,
! 150, 153, 158, 161, 164, 166, 168, 170, 175, 177,
! 181, 185, 189, 193, 197, 201, 205, 209, 213, 217,
! 221, 225, 226, 231, 232, 237, 238, 239, 247, 248,
! 254, 258, 262, 264, 266, 268, 270, 271, 279, 283,
! 287, 291, 295, 300, 307, 316, 323, 328, 332, 336,
! 339, 342, 344, 347, 348, 350, 353, 357, 359, 361,
! 364, 367, 372, 377, 380, 383, 387, 388, 390, 395,
! 400, 404, 408, 411, 414, 416, 419, 422, 425, 428,
! 431, 433, 436, 438, 441, 444, 447, 450, 453, 456,
! 458, 461, 464, 467, 470, 473, 476, 479, 482, 485,
! 488, 491, 494, 497, 500, 503, 506, 508, 511, 514,
! 517, 520, 523, 526, 529, 532, 535, 538, 541, 544,
! 547, 550, 553, 556, 559, 562, 565, 568, 571, 574,
! 577, 580, 583, 586, 589, 592, 595, 598, 601, 604,
! 607, 610, 613, 616, 619, 622, 625, 628, 631, 634,
! 637, 640, 642, 644, 646, 648, 650, 652, 654, 656,
658, 660, 662, 664, 666, 668, 670, 672, 674, 676,
678, 680, 682, 684, 686, 688, 690, 692, 694, 696,
698, 700, 702, 704, 706, 708, 710, 712, 714, 716,
718, 720, 722, 724, 726, 728, 730, 732, 734, 736,
! 738, 740, 742, 744, 746, 748, 750, 752, 753, 755,
! 757, 759, 761, 763, 765, 767, 769, 774, 779, 781,
! 786, 788, 793, 794, 799, 800, 807, 811, 812, 819,
! 823, 824, 826, 828, 831, 838, 840, 844, 845, 847,
! 852, 859, 864, 866, 868, 870, 872, 874, 875, 880,
! 882, 883, 886, 888, 892, 896, 899, 900, 905, 907,
! 908, 913, 915, 917, 919, 922, 925, 931, 935, 936,
! 937, 945, 946, 947, 955, 957, 959, 964, 968, 971,
! 975, 977, 979, 981, 985, 988, 990, 994, 997, 1001,
! 1005, 1010, 1014, 1019, 1023, 1026, 1028, 1030, 1033, 1035,
! 1038, 1040, 1043, 1044, 1052, 1058, 1059, 1067, 1073, 1074,
! 1083, 1084, 1092, 1095, 1098, 1101, 1102, 1104, 1105, 1107,
! 1109, 1112, 1113, 1117, 1120, 1124, 1129, 1133, 1135, 1137,
! 1140, 1142, 1147, 1149, 1154, 1159, 1166, 1172, 1177, 1184,
! 1190, 1192, 1196, 1198, 1200, 1204, 1205, 1209, 1210, 1212,
! 1213, 1215, 1218, 1220, 1222, 1224, 1228, 1231, 1235, 1240,
! 1244, 1247, 1250, 1252, 1256, 1261, 1264, 1268, 1272, 1277,
! 1282, 1288, 1294, 1296, 1298, 1300, 1302, 1304, 1307, 1310,
! 1313, 1316, 1318, 1321, 1324, 1327, 1329, 1332, 1335, 1338,
! 1341, 1343, 1346, 1348, 1350, 1352, 1354, 1357, 1358, 1359,
! 1360, 1361, 1362, 1364, 1366, 1369, 1373, 1375, 1378, 1380,
! 1382, 1388, 1390, 1392, 1395, 1398, 1401, 1404, 1405, 1411,
! 1412, 1417, 1418, 1419, 1421, 1424, 1428, 1432, 1436, 1437,
! 1442, 1444, 1448, 1449, 1450, 1458, 1464, 1467, 1468, 1469,
! 1470, 1471, 1484, 1485, 1492, 1495, 1497, 1499, 1502, 1506,
! 1509, 1512, 1515, 1519, 1526, 1535, 1546, 1559, 1563, 1568,
! 1570, 1574, 1580, 1583, 1589, 1590, 1592, 1593, 1595, 1596,
! 1598, 1600, 1604, 1609, 1617, 1619, 1623, 1624, 1628, 1631,
! 1632, 1633, 1640, 1643, 1644, 1646, 1648, 1652, 1654, 1658,
! 1663, 1668, 1672, 1677, 1681, 1686, 1691, 1695, 1700, 1704,
! 1706, 1707, 1711, 1713, 1716, 1718, 1722, 1724, 1728
};
static const short yyrhs[] = { -1,
92, 0, 0, 93, 95, 0, 0, 92, 94, 95,
0, 97, 0, 96, 0, 27, 67, 106, 83, 84,
! 0, 288, 95, 0, 127, 161, 84, 0, 147, 127,
! 161, 84, 0, 146, 127, 160, 84, 0, 153, 84,
0, 1, 84, 0, 1, 85, 0, 84, 0, 0,
! 0, 146, 127, 189, 98, 122, 99, 249, 250, 238,
! 0, 146, 127, 189, 1, 0, 0, 0, 147, 127,
! 194, 100, 122, 101, 249, 250, 238, 0, 147, 127,
! 194, 1, 0, 0, 0, 127, 194, 102, 122, 103,
! 249, 250, 238, 0, 127, 194, 1, 0, 3, 0,
4, 0, 51, 0, 57, 0, 56, 0, 62, 0,
63, 0, 86, 0, 87, 0, 108, 0, 0, 108,
! 0, 113, 0, 108, 88, 113, 0, 119, 0, 58,
! 112, 0, 288, 112, 0, 105, 112, 0, 48, 104,
! 0, 110, 109, 0, 110, 67, 215, 83, 0, 111,
! 109, 0, 111, 67, 215, 83, 0, 33, 112, 0,
! 34, 112, 0, 11, 0, 29, 0, 109, 0, 67,
! 215, 83, 112, 0, 112, 0, 113, 56, 113, 0,
! 113, 57, 113, 0, 113, 58, 113, 0, 113, 59,
! 113, 0, 113, 60, 113, 0, 113, 54, 113, 0,
! 113, 55, 113, 0, 113, 53, 113, 0, 113, 52,
! 113, 0, 113, 51, 113, 0, 113, 49, 113, 0,
! 113, 50, 113, 0, 0, 113, 48, 114, 113, 0,
! 0, 113, 47, 115, 113, 0, 0, 0, 113, 45,
! 116, 106, 46, 117, 113, 0, 0, 113, 45, 118,
! 46, 113, 0, 113, 44, 113, 0, 113, 43, 113,
! 0, 3, 0, 8, 0, 121, 0, 42, 0, 0,
! 67, 215, 83, 89, 120, 175, 85, 0, 67, 106,
! 83, 0, 67, 1, 83, 0, 242, 240, 83, 0,
! 242, 1, 83, 0, 119, 67, 107, 83, 0, 35,
! 67, 113, 88, 215, 83, 0, 36, 67, 113, 88,
! 113, 88, 113, 83, 0, 37, 67, 215, 88, 215,
! 83, 0, 119, 68, 106, 90, 0, 119, 66, 104,
! 0, 119, 65, 104, 0, 119, 62, 0, 119, 63,
! 0, 9, 0, 121, 9, 0, 0, 124, 0, 124,
! 10, 0, 249, 250, 125, 0, 123, 0, 230, 0,
! 124, 123, 0, 123, 230, 0, 148, 127, 160, 84,
! 0, 149, 127, 161, 84, 0, 148, 84, 0, 149,
! 84, 0, 249, 250, 129, 0, 0, 167, 0, 146,
! 127, 160, 84, 0, 147, 127, 161, 84, 0, 146,
! 127, 183, 0, 147, 127, 186, 0, 153, 84, 0,
! 288, 129, 0, 7, 0, 130, 7, 0, 131, 7,
! 0, 130, 168, 0, 132, 7, 0, 133, 7, 0,
! 168, 0, 132, 168, 0, 155, 0, 134, 7, 0,
! 135, 7, 0, 134, 157, 0, 135, 157, 0, 130,
! 155, 0, 131, 155, 0, 156, 0, 134, 168, 0,
! 134, 158, 0, 135, 158, 0, 130, 156, 0, 131,
! 156, 0, 136, 7, 0, 137, 7, 0, 136, 157,
! 0, 137, 157, 0, 132, 155, 0, 133, 155, 0,
! 136, 168, 0, 136, 158, 0, 137, 158, 0, 132,
! 156, 0, 133, 156, 0, 5, 0, 138, 7, 0,
! 139, 7, 0, 130, 5, 0, 131, 5, 0, 138,
! 5, 0, 139, 5, 0, 138, 168, 0, 140, 7,
! 0, 141, 7, 0, 132, 5, 0, 133, 5, 0,
! 140, 5, 0, 141, 5, 0, 140, 168, 0, 142,
! 7, 0, 143, 7, 0, 142, 157, 0, 143, 157,
! 0, 138, 155, 0, 139, 155, 0, 134, 5, 0,
! 135, 5, 0, 142, 5, 0, 143, 5, 0, 142,
! 168, 0, 142, 158, 0, 143, 158, 0, 138, 156,
! 0, 139, 156, 0, 144, 7, 0, 145, 7, 0,
! 144, 157, 0, 145, 157, 0, 140, 155, 0, 141,
! 155, 0, 136, 5, 0, 137, 5, 0, 144, 5,
! 0, 145, 5, 0, 144, 168, 0, 144, 158, 0,
! 145, 158, 0, 140, 156, 0, 141, 156, 0, 134,
! 0, 135, 0, 136, 0, 137, 0, 142, 0, 143,
! 0, 144, 0, 145, 0, 130, 0, 131, 0, 132,
! 0, 133, 0, 138, 0, 139, 0, 140, 0, 141,
! 0, 134, 0, 135, 0, 142, 0, 143, 0, 130,
! 0, 131, 0, 138, 0, 139, 0, 134, 0, 135,
! 0, 136, 0, 137, 0, 130, 0, 131, 0, 132,
0, 133, 0, 134, 0, 135, 0, 136, 0, 137,
! 0, 130, 0, 131, 0, 132, 0, 133, 0, 130,
0, 131, 0, 132, 0, 133, 0, 134, 0, 135,
0, 136, 0, 137, 0, 138, 0, 139, 0, 140,
0, 141, 0, 142, 0, 143, 0, 144, 0, 145,
! 0, 0, 151, 0, 157, 0, 159, 0, 158, 0,
! 6, 0, 203, 0, 198, 0, 4, 0, 28, 67,
! 106, 83, 0, 28, 67, 215, 83, 0, 163, 0,
! 160, 88, 128, 163, 0, 165, 0, 161, 88, 128,
! 165, 0, 0, 27, 67, 121, 83, 0, 0, 189,
! 162, 167, 44, 164, 173, 0, 189, 162, 167, 0,
! 0, 194, 162, 167, 44, 166, 173, 0, 194, 162,
! 167, 0, 0, 168, 0, 169, 0, 168, 169, 0,
! 30, 67, 67, 170, 83, 83, 0, 171, 0, 170,
! 88, 171, 0, 0, 172, 0, 172, 67, 3, 83,
! 0, 172, 67, 3, 88, 108, 83, 0, 172, 67,
! 107, 83, 0, 104, 0, 5, 0, 6, 0, 7,
! 0, 113, 0, 0, 89, 174, 175, 85, 0, 1,
! 0, 0, 176, 204, 0, 177, 0, 176, 88, 177,
! 0, 181, 44, 179, 0, 182, 179, 0, 0, 104,
! 46, 178, 179, 0, 179, 0, 0, 89, 180, 175,
! 85, 0, 113, 0, 1, 0, 182, 0, 181, 182,
! 0, 66, 104, 0, 68, 113, 10, 113, 90, 0,
! 68, 113, 90, 0, 0, 0, 189, 184, 122, 185,
! 249, 250, 243, 0, 0, 0, 194, 187, 122, 188,
! 249, 250, 243, 0, 190, 0, 194, 0, 67, 167,
! 190, 83, 0, 190, 67, 283, 0, 190, 223, 0,
! 58, 154, 190, 0, 4, 0, 192, 0, 193, 0,
! 192, 67, 283, 0, 192, 223, 0, 4, 0, 193,
! 67, 283, 0, 193, 223, 0, 58, 154, 192, 0,
! 58, 154, 193, 0, 67, 167, 193, 83, 0, 194,
! 67, 283, 0, 67, 167, 194, 83, 0, 58, 154,
! 194, 0, 194, 223, 0, 3, 0, 13, 0, 13,
! 168, 0, 14, 0, 14, 168, 0, 12, 0, 12,
! 168, 0, 0, 195, 104, 89, 199, 206, 85, 167,
! 0, 195, 89, 206, 85, 167, 0, 0, 196, 104,
! 89, 200, 206, 85, 167, 0, 196, 89, 206, 85,
! 167, 0, 0, 197, 104, 89, 201, 213, 205, 85,
! 167, 0, 0, 197, 89, 202, 213, 205, 85, 167,
! 0, 195, 104, 0, 196, 104, 0, 197, 104, 0,
! 0, 88, 0, 0, 88, 0, 207, 0, 207, 208,
! 0, 0, 207, 208, 84, 0, 207, 84, 0, 150,
! 127, 209, 0, 150, 127, 249, 250, 0, 151, 127,
! 210, 0, 151, 0, 1, 0, 288, 208, 0, 211,
! 0, 209, 88, 128, 211, 0, 212, 0, 210, 88,
! 128, 212, 0, 249, 250, 189, 167, 0, 249, 250,
! 189, 46, 113, 167, 0, 249, 250, 46, 113, 167,
! 0, 249, 250, 194, 167, 0, 249, 250, 194, 46,
! 113, 167, 0, 249, 250, 46, 113, 167, 0, 214,
! 0, 213, 88, 214, 0, 1, 0, 104, 0, 104,
! 44, 113, 0, 0, 152, 216, 217, 0, 0, 219,
! 0, 0, 219, 0, 220, 168, 0, 221, 0, 220,
! 0, 222, 0, 58, 154, 220, 0, 58, 154, 0,
! 58, 154, 221, 0, 67, 167, 219, 83, 0, 222,
! 67, 273, 0, 222, 223, 0, 67, 273, 0, 223,
! 0, 68, 106, 90, 0, 68, 152, 106, 90, 0,
! 68, 90, 0, 68, 152, 90, 0, 68, 58, 90,
! 0, 68, 152, 58, 90, 0, 68, 5, 106, 90,
! 0, 68, 5, 152, 106, 90, 0, 68, 152, 5,
! 106, 90, 0, 225, 0, 226, 0, 227, 0, 228,
! 0, 253, 0, 225, 253, 0, 226, 253, 0, 227,
! 253, 0, 228, 253, 0, 126, 0, 225, 126, 0,
! 226, 126, 0, 228, 126, 0, 254, 0, 225, 254,
! 0, 226, 254, 0, 227, 254, 0, 228, 254, 0,
! 230, 0, 229, 230, 0, 225, 0, 226, 0, 227,
! 0, 228, 0, 1, 84, 0, 0, 0, 0, 0,
! 0, 236, 0, 237, 0, 236, 237, 0, 32, 287,
! 84, 0, 243, 0, 1, 243, 0, 89, 0, 85,
! 0, 231, 235, 241, 85, 232, 0, 224, 0, 1,
! 0, 67, 89, 0, 239, 240, 0, 245, 252, 0,
! 245, 1, 0, 0, 15, 246, 67, 106, 83, 0,
! 0, 18, 248, 252, 17, 0, 0, 0, 253, 0,
! 254, 251, 0, 233, 251, 234, 0, 249, 250, 265,
! 0, 249, 250, 266, 0, 0, 244, 16, 256, 252,
! 0, 244, 0, 244, 16, 1, 0, 0, 0, 17,
! 257, 67, 106, 83, 258, 252, 0, 247, 67, 106,
! 83, 84, 0, 247, 1, 0, 0, 0, 0, 0,
! 19, 259, 67, 264, 260, 268, 84, 261, 268, 83,
! 262, 252, 0, 0, 20, 67, 106, 83, 263, 252,
! 0, 268, 84, 0, 129, 0, 243, 0, 106, 84,
! 0, 233, 255, 234, 0, 23, 84, 0, 24, 84,
! 0, 25, 84, 0, 25, 106, 84, 0, 27, 267,
! 67, 106, 83, 84, 0, 27, 267, 67, 106, 46,
! 269, 83, 84, 0, 27, 267, 67, 106, 46, 269,
! 46, 269, 83, 84, 0, 27, 267, 67, 106, 46,
! 269, 46, 269, 46, 272, 83, 84, 0, 26, 104,
! 84, 0, 26, 58, 106, 84, 0, 84, 0, 21,
! 113, 46, 0, 21, 113, 10, 113, 46, 0, 22,
! 46, 0, 104, 249, 250, 46, 167, 0, 0, 7,
! 0, 0, 106, 0, 0, 270, 0, 271, 0, 270,
! 88, 271, 0, 9, 67, 106, 83, 0, 68, 104,
! 90, 9, 67, 106, 83, 0, 121, 0, 272, 88,
! 121, 0, 0, 167, 274, 275, 0, 278, 83, 0,
! 0, 0, 279, 84, 276, 167, 277, 275, 0, 1,
! 83, 0, 0, 10, 0, 279, 0, 279, 88, 10,
! 0, 281, 0, 279, 88, 280, 0, 146, 127, 191,
! 167, 0, 146, 127, 194, 167, 0, 146, 127, 218,
! 0, 147, 127, 194, 167, 0, 147, 127, 218, 0,
! 148, 282, 191, 167, 0, 148, 282, 194, 167, 0,
! 148, 282, 218, 0, 149, 282, 194, 167, 0, 149,
! 282, 218, 0, 127, 0, 0, 167, 284, 285, 0,
! 275, 0, 286, 83, 0, 3, 0, 286, 88, 3,
! 0, 104, 0, 287, 88, 104, 0, 31, 0
};
#endif
--- 248,481 ----
62, 67, 68, 69, 79, 84, 85, 86, 95, 99,
101, 103, 105, 107, 109, 111, 113, 115, 117, 119,
120, 122, 124, 128, 130, 133, 136, 139, 142, 145,
! 150, 153, 158, 161, 164, 166, 168, 170, 172, 177,
! 179, 183, 187, 191, 195, 199, 203, 207, 211, 215,
! 219, 223, 227, 228, 233, 234, 239, 240, 241, 249,
! 250, 256, 260, 264, 266, 268, 270, 272, 273, 281,
! 285, 289, 293, 297, 302, 309, 318, 325, 330, 334,
! 338, 341, 344, 346, 349, 350, 352, 355, 359, 361,
! 363, 366, 369, 374, 379, 382, 385, 389, 390, 392,
! 397, 402, 406, 410, 413, 416, 418, 421, 424, 427,
! 430, 433, 435, 438, 440, 443, 446, 449, 452, 455,
! 458, 460, 463, 466, 469, 472, 475, 478, 481, 484,
! 487, 490, 493, 496, 499, 502, 505, 508, 510, 513,
! 516, 519, 522, 525, 528, 531, 534, 537, 540, 543,
! 546, 549, 552, 555, 558, 561, 564, 567, 570, 573,
! 576, 579, 582, 585, 588, 591, 594, 597, 600, 603,
! 606, 609, 612, 615, 618, 621, 624, 627, 630, 633,
! 636, 639, 642, 644, 646, 648, 650, 652, 654, 656,
658, 660, 662, 664, 666, 668, 670, 672, 674, 676,
678, 680, 682, 684, 686, 688, 690, 692, 694, 696,
698, 700, 702, 704, 706, 708, 710, 712, 714, 716,
718, 720, 722, 724, 726, 728, 730, 732, 734, 736,
! 738, 740, 742, 744, 746, 748, 750, 752, 754, 755,
! 757, 759, 761, 763, 765, 767, 769, 771, 776, 781,
! 783, 788, 790, 795, 796, 801, 802, 809, 813, 814,
! 821, 825, 826, 828, 830, 833, 840, 842, 846, 847,
! 849, 854, 861, 866, 868, 870, 872, 874, 876, 877,
! 882, 884, 885, 888, 890, 894, 898, 901, 902, 907,
! 909, 910, 915, 917, 919, 921, 924, 927, 933, 937,
! 938, 939, 947, 948, 949, 957, 959, 961, 966, 970,
! 973, 977, 979, 981, 983, 987, 990, 992, 996, 999,
! 1003, 1007, 1012, 1016, 1021, 1025, 1028, 1030, 1032, 1035,
! 1037, 1040, 1042, 1045, 1046, 1054, 1060, 1061, 1069, 1075,
! 1076, 1085, 1086, 1094, 1097, 1100, 1103, 1104, 1106, 1107,
! 1109, 1111, 1114, 1115, 1119, 1122, 1126, 1131, 1135, 1137,
! 1139, 1142, 1144, 1149, 1151, 1156, 1161, 1168, 1174, 1179,
! 1186, 1192, 1194, 1198, 1200, 1202, 1206, 1207, 1211, 1212,
! 1214, 1215, 1217, 1220, 1222, 1224, 1226, 1230, 1233, 1237,
! 1242, 1246, 1249, 1252, 1254, 1258, 1263, 1266, 1270, 1274,
! 1279, 1284, 1290, 1296, 1298, 1300, 1302, 1304, 1306, 1309,
! 1312, 1315, 1318, 1320, 1323, 1326, 1329, 1331, 1334, 1337,
! 1340, 1343, 1345, 1348, 1350, 1352, 1354, 1356, 1359, 1360,
! 1361, 1362, 1363, 1364, 1366, 1368, 1371, 1375, 1377, 1380,
! 1382, 1384, 1390, 1392, 1394, 1397, 1400, 1403, 1406, 1407,
! 1413, 1414, 1419, 1420, 1421, 1423, 1426, 1430, 1434, 1438,
! 1439, 1444, 1446, 1450, 1451, 1452, 1460, 1466, 1469, 1470,
! 1471, 1472, 1473, 1486, 1487, 1494, 1497, 1499, 1501, 1504,
! 1508, 1511, 1514, 1517, 1521, 1528, 1537, 1548, 1561, 1565,
! 1570, 1572, 1576, 1582, 1585, 1591, 1592, 1594, 1595, 1597,
! 1598, 1600, 1602, 1606, 1611, 1619, 1621, 1625, 1626, 1630,
! 1633, 1634, 1635, 1642, 1645, 1646, 1648, 1650, 1654, 1656,
! 1660, 1665, 1670, 1674, 1679, 1683, 1688, 1693, 1697, 1702,
! 1706, 1708, 1709, 1713, 1715, 1718, 1720, 1724, 1726, 1730
};
static const short yyrhs[] = { -1,
92, 0, 0, 93, 95, 0, 0, 92, 94, 95,
0, 97, 0, 96, 0, 27, 67, 106, 83, 84,
! 0, 289, 95, 0, 128, 162, 84, 0, 148, 128,
! 162, 84, 0, 147, 128, 161, 84, 0, 154, 84,
0, 1, 84, 0, 1, 85, 0, 84, 0, 0,
! 0, 147, 128, 190, 98, 123, 99, 250, 251, 239,
! 0, 147, 128, 190, 1, 0, 0, 0, 148, 128,
! 195, 100, 123, 101, 250, 251, 239, 0, 148, 128,
! 195, 1, 0, 0, 0, 128, 195, 102, 123, 103,
! 250, 251, 239, 0, 128, 195, 1, 0, 3, 0,
4, 0, 51, 0, 57, 0, 56, 0, 62, 0,
63, 0, 86, 0, 87, 0, 108, 0, 0, 108,
! 0, 114, 0, 108, 88, 114, 0, 120, 0, 58,
! 113, 0, 289, 113, 0, 105, 113, 0, 48, 104,
! 0, 110, 109, 0, 110, 67, 216, 83, 0, 111,
! 109, 0, 111, 67, 216, 83, 0, 33, 113, 0,
! 34, 113, 0, 11, 0, 29, 0, 28, 0, 109,
! 0, 67, 216, 83, 113, 0, 113, 0, 114, 56,
! 114, 0, 114, 57, 114, 0, 114, 58, 114, 0,
! 114, 59, 114, 0, 114, 60, 114, 0, 114, 54,
! 114, 0, 114, 55, 114, 0, 114, 53, 114, 0,
! 114, 52, 114, 0, 114, 51, 114, 0, 114, 49,
! 114, 0, 114, 50, 114, 0, 0, 114, 48, 115,
! 114, 0, 0, 114, 47, 116, 114, 0, 0, 0,
! 114, 45, 117, 106, 46, 118, 114, 0, 0, 114,
! 45, 119, 46, 114, 0, 114, 44, 114, 0, 114,
! 43, 114, 0, 3, 0, 8, 0, 122, 0, 42,
! 0, 0, 67, 216, 83, 89, 121, 176, 85, 0,
! 67, 106, 83, 0, 67, 1, 83, 0, 243, 241,
! 83, 0, 243, 1, 83, 0, 120, 67, 107, 83,
! 0, 35, 67, 114, 88, 216, 83, 0, 36, 67,
! 114, 88, 114, 88, 114, 83, 0, 37, 67, 216,
! 88, 216, 83, 0, 120, 68, 106, 90, 0, 120,
! 66, 104, 0, 120, 65, 104, 0, 120, 62, 0,
! 120, 63, 0, 9, 0, 122, 9, 0, 0, 125,
! 0, 125, 10, 0, 250, 251, 126, 0, 124, 0,
! 231, 0, 125, 124, 0, 124, 231, 0, 149, 128,
! 161, 84, 0, 150, 128, 162, 84, 0, 149, 84,
! 0, 150, 84, 0, 250, 251, 130, 0, 0, 168,
! 0, 147, 128, 161, 84, 0, 148, 128, 162, 84,
! 0, 147, 128, 184, 0, 148, 128, 187, 0, 154,
! 84, 0, 289, 130, 0, 7, 0, 131, 7, 0,
! 132, 7, 0, 131, 169, 0, 133, 7, 0, 134,
! 7, 0, 169, 0, 133, 169, 0, 156, 0, 135,
! 7, 0, 136, 7, 0, 135, 158, 0, 136, 158,
! 0, 131, 156, 0, 132, 156, 0, 157, 0, 135,
! 169, 0, 135, 159, 0, 136, 159, 0, 131, 157,
! 0, 132, 157, 0, 137, 7, 0, 138, 7, 0,
! 137, 158, 0, 138, 158, 0, 133, 156, 0, 134,
! 156, 0, 137, 169, 0, 137, 159, 0, 138, 159,
! 0, 133, 157, 0, 134, 157, 0, 5, 0, 139,
! 7, 0, 140, 7, 0, 131, 5, 0, 132, 5,
! 0, 139, 5, 0, 140, 5, 0, 139, 169, 0,
! 141, 7, 0, 142, 7, 0, 133, 5, 0, 134,
! 5, 0, 141, 5, 0, 142, 5, 0, 141, 169,
! 0, 143, 7, 0, 144, 7, 0, 143, 158, 0,
! 144, 158, 0, 139, 156, 0, 140, 156, 0, 135,
! 5, 0, 136, 5, 0, 143, 5, 0, 144, 5,
! 0, 143, 169, 0, 143, 159, 0, 144, 159, 0,
! 139, 157, 0, 140, 157, 0, 145, 7, 0, 146,
! 7, 0, 145, 158, 0, 146, 158, 0, 141, 156,
! 0, 142, 156, 0, 137, 5, 0, 138, 5, 0,
! 145, 5, 0, 146, 5, 0, 145, 169, 0, 145,
! 159, 0, 146, 159, 0, 141, 157, 0, 142, 157,
! 0, 135, 0, 136, 0, 137, 0, 138, 0, 143,
! 0, 144, 0, 145, 0, 146, 0, 131, 0, 132,
! 0, 133, 0, 134, 0, 139, 0, 140, 0, 141,
! 0, 142, 0, 135, 0, 136, 0, 143, 0, 144,
! 0, 131, 0, 132, 0, 139, 0, 140, 0, 135,
! 0, 136, 0, 137, 0, 138, 0, 131, 0, 132,
0, 133, 0, 134, 0, 135, 0, 136, 0, 137,
! 0, 138, 0, 131, 0, 132, 0, 133, 0, 134,
0, 131, 0, 132, 0, 133, 0, 134, 0, 135,
0, 136, 0, 137, 0, 138, 0, 139, 0, 140,
0, 141, 0, 142, 0, 143, 0, 144, 0, 145,
! 0, 146, 0, 0, 152, 0, 158, 0, 160, 0,
! 159, 0, 6, 0, 204, 0, 199, 0, 4, 0,
! 112, 67, 106, 83, 0, 112, 67, 216, 83, 0,
! 164, 0, 161, 88, 129, 164, 0, 166, 0, 162,
! 88, 129, 166, 0, 0, 27, 67, 122, 83, 0,
! 0, 190, 163, 168, 44, 165, 174, 0, 190, 163,
! 168, 0, 0, 195, 163, 168, 44, 167, 174, 0,
! 195, 163, 168, 0, 0, 169, 0, 170, 0, 169,
! 170, 0, 30, 67, 67, 171, 83, 83, 0, 172,
! 0, 171, 88, 172, 0, 0, 173, 0, 173, 67,
! 3, 83, 0, 173, 67, 3, 88, 108, 83, 0,
! 173, 67, 107, 83, 0, 104, 0, 5, 0, 6,
! 0, 7, 0, 114, 0, 0, 89, 175, 176, 85,
! 0, 1, 0, 0, 177, 205, 0, 178, 0, 177,
! 88, 178, 0, 182, 44, 180, 0, 183, 180, 0,
! 0, 104, 46, 179, 180, 0, 180, 0, 0, 89,
! 181, 176, 85, 0, 114, 0, 1, 0, 183, 0,
! 182, 183, 0, 66, 104, 0, 68, 114, 10, 114,
! 90, 0, 68, 114, 90, 0, 0, 0, 190, 185,
! 123, 186, 250, 251, 244, 0, 0, 0, 195, 188,
! 123, 189, 250, 251, 244, 0, 191, 0, 195, 0,
! 67, 168, 191, 83, 0, 191, 67, 284, 0, 191,
! 224, 0, 58, 155, 191, 0, 4, 0, 193, 0,
! 194, 0, 193, 67, 284, 0, 193, 224, 0, 4,
! 0, 194, 67, 284, 0, 194, 224, 0, 58, 155,
! 193, 0, 58, 155, 194, 0, 67, 168, 194, 83,
! 0, 195, 67, 284, 0, 67, 168, 195, 83, 0,
! 58, 155, 195, 0, 195, 224, 0, 3, 0, 13,
! 0, 13, 169, 0, 14, 0, 14, 169, 0, 12,
! 0, 12, 169, 0, 0, 196, 104, 89, 200, 207,
! 85, 168, 0, 196, 89, 207, 85, 168, 0, 0,
! 197, 104, 89, 201, 207, 85, 168, 0, 197, 89,
! 207, 85, 168, 0, 0, 198, 104, 89, 202, 214,
! 206, 85, 168, 0, 0, 198, 89, 203, 214, 206,
! 85, 168, 0, 196, 104, 0, 197, 104, 0, 198,
! 104, 0, 0, 88, 0, 0, 88, 0, 208, 0,
! 208, 209, 0, 0, 208, 209, 84, 0, 208, 84,
! 0, 151, 128, 210, 0, 151, 128, 250, 251, 0,
! 152, 128, 211, 0, 152, 0, 1, 0, 289, 209,
! 0, 212, 0, 210, 88, 129, 212, 0, 213, 0,
! 211, 88, 129, 213, 0, 250, 251, 190, 168, 0,
! 250, 251, 190, 46, 114, 168, 0, 250, 251, 46,
! 114, 168, 0, 250, 251, 195, 168, 0, 250, 251,
! 195, 46, 114, 168, 0, 250, 251, 46, 114, 168,
! 0, 215, 0, 214, 88, 215, 0, 1, 0, 104,
! 0, 104, 44, 114, 0, 0, 153, 217, 218, 0,
! 0, 220, 0, 0, 220, 0, 221, 169, 0, 222,
! 0, 221, 0, 223, 0, 58, 155, 221, 0, 58,
! 155, 0, 58, 155, 222, 0, 67, 168, 220, 83,
! 0, 223, 67, 274, 0, 223, 224, 0, 67, 274,
! 0, 224, 0, 68, 106, 90, 0, 68, 153, 106,
! 90, 0, 68, 90, 0, 68, 153, 90, 0, 68,
! 58, 90, 0, 68, 153, 58, 90, 0, 68, 5,
! 106, 90, 0, 68, 5, 153, 106, 90, 0, 68,
! 153, 5, 106, 90, 0, 226, 0, 227, 0, 228,
! 0, 229, 0, 254, 0, 226, 254, 0, 227, 254,
! 0, 228, 254, 0, 229, 254, 0, 127, 0, 226,
! 127, 0, 227, 127, 0, 229, 127, 0, 255, 0,
! 226, 255, 0, 227, 255, 0, 228, 255, 0, 229,
! 255, 0, 231, 0, 230, 231, 0, 226, 0, 227,
! 0, 228, 0, 229, 0, 1, 84, 0, 0, 0,
! 0, 0, 0, 237, 0, 238, 0, 237, 238, 0,
! 32, 288, 84, 0, 244, 0, 1, 244, 0, 89,
! 0, 85, 0, 232, 236, 242, 85, 233, 0, 225,
! 0, 1, 0, 67, 89, 0, 240, 241, 0, 246,
! 253, 0, 246, 1, 0, 0, 15, 247, 67, 106,
! 83, 0, 0, 18, 249, 253, 17, 0, 0, 0,
! 254, 0, 255, 252, 0, 234, 252, 235, 0, 250,
! 251, 266, 0, 250, 251, 267, 0, 0, 245, 16,
! 257, 253, 0, 245, 0, 245, 16, 1, 0, 0,
! 0, 17, 258, 67, 106, 83, 259, 253, 0, 248,
! 67, 106, 83, 84, 0, 248, 1, 0, 0, 0,
! 0, 0, 19, 260, 67, 265, 261, 269, 84, 262,
! 269, 83, 263, 253, 0, 0, 20, 67, 106, 83,
! 264, 253, 0, 269, 84, 0, 130, 0, 244, 0,
! 106, 84, 0, 234, 256, 235, 0, 23, 84, 0,
! 24, 84, 0, 25, 84, 0, 25, 106, 84, 0,
! 27, 268, 67, 106, 83, 84, 0, 27, 268, 67,
! 106, 46, 270, 83, 84, 0, 27, 268, 67, 106,
! 46, 270, 46, 270, 83, 84, 0, 27, 268, 67,
! 106, 46, 270, 46, 270, 46, 273, 83, 84, 0,
! 26, 104, 84, 0, 26, 58, 106, 84, 0, 84,
! 0, 21, 114, 46, 0, 21, 114, 10, 114, 46,
! 0, 22, 46, 0, 104, 250, 251, 46, 168, 0,
! 0, 7, 0, 0, 106, 0, 0, 271, 0, 272,
! 0, 271, 88, 272, 0, 9, 67, 106, 83, 0,
! 68, 104, 90, 9, 67, 106, 83, 0, 122, 0,
! 273, 88, 122, 0, 0, 168, 275, 276, 0, 279,
! 83, 0, 0, 0, 280, 84, 277, 168, 278, 276,
! 0, 1, 83, 0, 0, 10, 0, 280, 0, 280,
! 88, 10, 0, 282, 0, 280, 88, 281, 0, 147,
! 128, 192, 168, 0, 147, 128, 195, 168, 0, 147,
! 128, 219, 0, 148, 128, 195, 168, 0, 148, 128,
! 219, 0, 149, 283, 192, 168, 0, 149, 283, 195,
! 168, 0, 149, 283, 219, 0, 150, 283, 195, 168,
! 0, 150, 283, 219, 0, 128, 0, 0, 168, 285,
! 286, 0, 276, 0, 287, 83, 0, 3, 0, 287,
! 88, 3, 0, 104, 0, 288, 88, 104, 0, 31,
! 0
};
#endif
*************** static const short yyrline[] = { 0,
*** 486,542 ****
360, 362, 368, 369, 374, 376, 382, 383, 388, 392,
394, 397, 399, 401, 406, 408, 410, 412, 416, 420,
423, 426, 429, 433, 435, 438, 441, 445, 462, 468,
! 471, 474, 477, 479, 483, 487, 491, 493, 497, 499,
! 501, 503, 505, 507, 509, 511, 513, 515, 517, 519,
! 521, 523, 527, 529, 533, 535, 538, 542, 544, 551,
! 554, 561, 571, 578, 579, 581, 583, 587, 596, 601,
! 603, 619, 626, 628, 631, 641, 651, 653, 657, 663,
! 665, 670, 672, 689, 691, 692, 702, 707, 709, 710,
! 711, 718, 721, 723, 726, 734, 743, 753, 758, 761,
! 763, 765, 767, 769, 825, 829, 832, 837, 843, 847,
! 852, 856, 861, 865, 868, 871, 874, 877, 880, 885,
! 889, 892, 895, 898, 901, 906, 910, 913, 916, 919,
! 922, 927, 931, 934, 937, 940, 945, 949, 952, 955,
! 961, 967, 973, 981, 987, 991, 994, 1000, 1006, 1012,
! 1020, 1026, 1030, 1033, 1036, 1039, 1042, 1045, 1051, 1057,
! 1063, 1071, 1075, 1078, 1081, 1084, 1089, 1093, 1096, 1099,
! 1102, 1105, 1108, 1114, 1120, 1126, 1134, 1138, 1141, 1144,
! 1147, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1164,
! 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1175, 1177, 1178,
! 1179, 1182, 1184, 1185, 1186, 1189, 1191, 1192, 1193, 1196,
! 1198, 1199, 1200, 1203, 1205, 1206, 1207, 1208, 1209, 1210,
! 1211, 1214, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
! 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1234, 1237, 1262,
! 1264, 1267, 1271, 1274, 1277, 1281, 1286, 1288, 1294, 1296,
! 1299, 1301, 1304, 1307, 1313, 1320, 1322, 1329, 1336, 1338,
! 1345, 1348, 1352, 1355, 1359, 1364, 1367, 1371, 1374, 1376,
! 1378, 1380, 1387, 1389, 1390, 1391, 1396, 1398, 1400, 1402,
! 1407, 1411, 1414, 1416, 1421, 1425, 1428, 1433, 1433, 1436,
! 1439, 1441, 1443, 1446, 1448, 1451, 1457, 1461, 1465, 1479,
! 1486, 1495, 1509, 1516, 1528, 1530, 1535, 1538, 1543, 1545,
! 1547, 1554, 1556, 1559, 1565, 1567, 1570, 1576, 1578, 1580,
! 1582, 1589, 1595, 1597, 1599, 1601, 1604, 1607, 1611, 1614,
! 1618, 1621, 1631, 1636, 1638, 1642, 1644, 1646, 1650, 1652,
! 1655, 1657, 1662, 1665, 1667, 1675, 1677, 1680, 1682, 1687,
! 1690, 1695, 1697, 1699, 1704, 1708, 1718, 1721, 1726, 1728,
! 1733, 1735, 1739, 1741, 1745, 1749, 1753, 1758, 1762, 1766,
! 1776, 1778, 1783, 1788, 1791, 1795, 1800, 1803, 1806, 1809,
! 1814, 1818, 1824, 1826, 1829, 1831, 1835, 1838, 1842, 1845,
! 1847, 1849, 1851, 1857, 1860, 1862, 1864, 1866, 1868, 1870,
! 1874, 1878, 1890, 1892, 1893, 1897, 1900, 1902, 1903, 1904,
! 1905, 1908, 1910, 1913, 1914, 1917, 1919, 1920, 1921, 1922,
! 1925, 1927, 1930, 1932, 1933, 1934, 1937, 1940, 1947, 1952,
! 1968, 1983, 1985, 1990, 1992, 1995, 2009, 2012, 2015, 2019,
! 2021, 2028, 2030, 2033, 2051, 2058, 2064, 2067, 2078, 2089,
! 2101, 2109, 2115, 2121, 2123, 2127, 2133, 2147, 2156, 2161,
! 2165, 2177, 2187, 2190, 2196, 2197, 2200, 2202, 2206, 2209,
! 2212, 2215, 2216, 2220, 2223, 2226, 2231, 2234, 2237, 2241,
! 2244, 2247, 2250, 2253, 2257, 2261, 2266, 2270, 2282, 2288,
! 2296, 2299, 2302, 2305, 2320, 2324, 2328, 2331, 2336, 2338,
! 2341, 2343, 2347, 2350, 2354, 2357, 2366, 2372, 2377, 2379,
! 2388, 2391, 2392, 2398, 2400, 2410, 2412, 2416, 2419, 2425,
! 2431, 2436, 2439, 2445, 2452, 2458, 2463, 2466, 2472, 2477,
! 2486, 2492, 2497, 2499, 2516, 2519, 2524, 2527, 2531
};
#endif
--- 487,543 ----
360, 362, 368, 369, 374, 376, 382, 383, 388, 392,
394, 397, 399, 401, 406, 408, 410, 412, 416, 420,
423, 426, 429, 433, 435, 438, 441, 445, 462, 468,
! 471, 474, 477, 479, 483, 487, 491, 495, 497, 501,
! 503, 505, 507, 509, 511, 513, 515, 517, 519, 521,
! 523, 525, 527, 531, 533, 537, 539, 542, 546, 548,
! 555, 558, 565, 575, 582, 583, 585, 587, 591, 600,
! 605, 607, 623, 630, 632, 635, 645, 655, 657, 661,
! 667, 669, 674, 676, 693, 695, 696, 706, 711, 713,
! 714, 715, 722, 725, 727, 730, 738, 747, 757, 762,
! 765, 767, 769, 771, 773, 829, 833, 836, 841, 847,
! 851, 856, 860, 865, 869, 872, 875, 878, 881, 884,
! 889, 893, 896, 899, 902, 905, 910, 914, 917, 920,
! 923, 926, 931, 935, 938, 941, 944, 949, 953, 956,
! 959, 965, 971, 977, 985, 991, 995, 998, 1004, 1010,
! 1016, 1024, 1030, 1034, 1037, 1040, 1043, 1046, 1049, 1055,
! 1061, 1067, 1075, 1079, 1082, 1085, 1088, 1093, 1097, 1100,
! 1103, 1106, 1109, 1112, 1118, 1124, 1130, 1138, 1142, 1145,
! 1148, 1151, 1157, 1159, 1160, 1161, 1162, 1163, 1164, 1165,
! 1168, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1179, 1181,
! 1182, 1183, 1186, 1188, 1189, 1190, 1193, 1195, 1196, 1197,
! 1200, 1202, 1203, 1204, 1207, 1209, 1210, 1211, 1212, 1213,
! 1214, 1215, 1218, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
! 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1238, 1241,
! 1266, 1268, 1271, 1275, 1278, 1281, 1285, 1290, 1292, 1298,
! 1300, 1303, 1305, 1308, 1311, 1317, 1324, 1326, 1333, 1340,
! 1342, 1349, 1352, 1356, 1359, 1363, 1368, 1371, 1375, 1378,
! 1380, 1382, 1384, 1391, 1393, 1394, 1395, 1400, 1402, 1404,
! 1406, 1411, 1415, 1418, 1420, 1425, 1429, 1432, 1437, 1438,
! 1441, 1444, 1446, 1448, 1451, 1453, 1456, 1462, 1466, 1470,
! 1484, 1491, 1500, 1514, 1521, 1533, 1535, 1540, 1543, 1548,
! 1550, 1552, 1559, 1561, 1564, 1570, 1572, 1575, 1581, 1583,
! 1585, 1587, 1594, 1600, 1602, 1604, 1606, 1609, 1612, 1616,
! 1619, 1623, 1626, 1636, 1641, 1643, 1647, 1649, 1651, 1655,
! 1657, 1660, 1662, 1667, 1670, 1672, 1680, 1682, 1685, 1687,
! 1692, 1695, 1700, 1702, 1704, 1709, 1713, 1723, 1726, 1731,
! 1733, 1738, 1740, 1744, 1746, 1750, 1754, 1758, 1763, 1767,
! 1771, 1781, 1783, 1788, 1793, 1796, 1800, 1805, 1808, 1811,
! 1814, 1819, 1823, 1829, 1831, 1834, 1836, 1840, 1843, 1847,
! 1850, 1852, 1854, 1856, 1862, 1865, 1867, 1869, 1871, 1873,
! 1875, 1879, 1883, 1895, 1897, 1898, 1902, 1905, 1907, 1908,
! 1909, 1910, 1913, 1915, 1918, 1919, 1922, 1924, 1925, 1926,
! 1927, 1930, 1932, 1935, 1937, 1938, 1939, 1942, 1945, 1952,
! 1957, 1973, 1988, 1990, 1995, 1997, 2000, 2014, 2017, 2020,
! 2024, 2026, 2033, 2035, 2038, 2056, 2063, 2069, 2072, 2083,
! 2094, 2106, 2114, 2120, 2126, 2128, 2132, 2138, 2152, 2161,
! 2166, 2170, 2182, 2192, 2195, 2201, 2202, 2205, 2207, 2211,
! 2214, 2217, 2220, 2221, 2225, 2228, 2231, 2236, 2239, 2242,
! 2246, 2249, 2252, 2255, 2258, 2262, 2266, 2271, 2275, 2287,
! 2293, 2301, 2304, 2307, 2310, 2325, 2329, 2333, 2336, 2341,
! 2343, 2346, 2348, 2352, 2355, 2359, 2362, 2371, 2377, 2382,
! 2384, 2393, 2396, 2397, 2403, 2405, 2415, 2417, 2421, 2424,
! 2430, 2436, 2441, 2444, 2450, 2457, 2463, 2468, 2471, 2477,
! 2482, 2491, 2497, 2502, 2504, 2521, 2524, 2529, 2532, 2536
};
#endif
*************** static const char * const yytname[] = {
*** 556,563 ****
"OBJECTNAME","CLASS","ALIAS","')'","';'","'}'","'~'","'!'","','","'{'","']'",
"program","extdefs","@1","@2","extdef","datadef","fndef","@3","@4","@5","@6",
"@7","@8","identifier","unop","expr","exprlist","nonnull_exprlist","unary_expr",
! "sizeof","alignof","cast_expr","expr_no_commas","@9","@10","@11","@12","@13",
! "primary","@14","string","old_style_parm_decls","lineno_datadecl","datadecls",
"datadecl","lineno_decl","setspecs","maybe_resetattrs","decl","declspecs_nosc_nots_nosa_noea",
"declspecs_nosc_nots_nosa_ea","declspecs_nosc_nots_sa_noea","declspecs_nosc_nots_sa_ea",
"declspecs_nosc_ts_nosa_noea","declspecs_nosc_ts_nosa_ea","declspecs_nosc_ts_sa_noea",
--- 557,564 ----
"OBJECTNAME","CLASS","ALIAS","')'","';'","'}'","'~'","'!'","','","'{'","']'",
"program","extdefs","@1","@2","extdef","datadef","fndef","@3","@4","@5","@6",
"@7","@8","identifier","unop","expr","exprlist","nonnull_exprlist","unary_expr",
! "sizeof","alignof","typeof","cast_expr","expr_no_commas","@9","@10","@11","@12",
! "@13","primary","@14","string","old_style_parm_decls","lineno_datadecl","datadecls",
"datadecl","lineno_decl","setspecs","maybe_resetattrs","decl","declspecs_nosc_nots_nosa_noea",
"declspecs_nosc_nots_nosa_ea","declspecs_nosc_nots_sa_noea","declspecs_nosc_nots_sa_ea",
"declspecs_nosc_ts_nosa_noea","declspecs_nosc_ts_nosa_ea","declspecs_nosc_ts_sa_noea",
*************** static const short yyr1[] = { 0,
*** 600,656 ****
97, 100, 101, 97, 97, 102, 103, 97, 97, 104,
104, 105, 105, 105, 105, 105, 105, 105, 106, 107,
107, 108, 108, 109, 109, 109, 109, 109, 109, 109,
! 109, 109, 109, 109, 110, 111, 112, 112, 113, 113,
! 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
! 113, 114, 113, 115, 113, 116, 117, 113, 118, 113,
! 113, 113, 119, 119, 119, 119, 120, 119, 119, 119,
! 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
! 119, 121, 121, 122, 122, 122, 123, 124, 124, 124,
! 124, 125, 125, 125, 125, 126, 127, 128, 129, 129,
! 129, 129, 129, 129, 130, 130, 130, 131, 132, 132,
! 133, 133, 134, 134, 134, 134, 134, 134, 134, 135,
! 135, 135, 135, 135, 135, 136, 136, 136, 136, 136,
! 136, 137, 137, 137, 137, 137, 138, 138, 138, 138,
! 138, 138, 138, 139, 140, 140, 140, 140, 140, 140,
! 141, 142, 142, 142, 142, 142, 142, 142, 142, 142,
! 142, 143, 143, 143, 143, 143, 144, 144, 144, 144,
! 144, 144, 144, 144, 144, 144, 145, 145, 145, 145,
! 145, 146, 146, 146, 146, 146, 146, 146, 146, 147,
! 147, 147, 147, 147, 147, 147, 147, 148, 148, 148,
! 148, 149, 149, 149, 149, 150, 150, 150, 150, 151,
! 151, 151, 151, 152, 152, 152, 152, 152, 152, 152,
! 152, 153, 153, 153, 153, 153, 153, 153, 153, 153,
! 153, 153, 153, 153, 153, 153, 153, 154, 154, 155,
! 155, 156, 157, 157, 158, 159, 159, 159, 160, 160,
! 161, 161, 162, 162, 164, 163, 163, 166, 165, 165,
! 167, 167, 168, 168, 169, 170, 170, 171, 171, 171,
! 171, 171, 172, 172, 172, 172, 173, 174, 173, 173,
! 175, 175, 176, 176, 177, 177, 178, 177, 177, 180,
! 179, 179, 179, 181, 181, 182, 182, 182, 184, 185,
! 183, 187, 188, 186, 189, 189, 190, 190, 190, 190,
! 190, 191, 191, 192, 192, 192, 193, 193, 193, 193,
! 193, 194, 194, 194, 194, 194, 195, 195, 196, 196,
! 197, 197, 199, 198, 198, 200, 198, 198, 201, 198,
! 202, 198, 203, 203, 203, 204, 204, 205, 205, 206,
! 206, 207, 207, 207, 208, 208, 208, 208, 208, 208,
! 209, 209, 210, 210, 211, 211, 211, 212, 212, 212,
! 213, 213, 213, 214, 214, 216, 215, 217, 217, 218,
! 218, 218, 219, 219, 220, 220, 221, 221, 222, 222,
! 222, 222, 222, 223, 223, 223, 223, 223, 223, 223,
! 223, 223, 224, 224, 224, 224, 225, 225, 225, 225,
! 225, 226, 226, 226, 226, 227, 227, 227, 227, 227,
! 228, 228, 229, 229, 229, 229, 230, 231, 232, 233,
! 234, 235, 235, 236, 236, 237, 238, 238, 239, 240,
! 240, 241, 241, 242, 243, 244, 244, 246, 245, 248,
! 247, 249, 250, 251, 251, 252, 253, 254, 256, 255,
! 255, 255, 257, 258, 255, 255, 255, 259, 260, 261,
! 262, 255, 263, 255, 264, 264, 265, 265, 265, 265,
! 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
! 266, 266, 266, 266, 267, 267, 268, 268, 269, 269,
! 270, 270, 271, 271, 272, 272, 274, 273, 275, 276,
! 277, 275, 275, 278, 278, 278, 278, 279, 279, 280,
! 280, 280, 280, 280, 281, 281, 281, 281, 281, 282,
! 284, 283, 285, 285, 286, 286, 287, 287, 288
};
static const short yyr2[] = { 0,
--- 601,657 ----
97, 100, 101, 97, 97, 102, 103, 97, 97, 104,
104, 105, 105, 105, 105, 105, 105, 105, 106, 107,
107, 108, 108, 109, 109, 109, 109, 109, 109, 109,
! 109, 109, 109, 109, 110, 111, 112, 113, 113, 114,
! 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
! 114, 114, 115, 114, 116, 114, 117, 118, 114, 119,
! 114, 114, 114, 120, 120, 120, 120, 121, 120, 120,
! 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
! 120, 120, 122, 122, 123, 123, 123, 124, 125, 125,
! 125, 125, 126, 126, 126, 126, 127, 128, 129, 130,
! 130, 130, 130, 130, 130, 131, 131, 131, 132, 133,
! 133, 134, 134, 135, 135, 135, 135, 135, 135, 135,
! 136, 136, 136, 136, 136, 136, 137, 137, 137, 137,
! 137, 137, 138, 138, 138, 138, 138, 139, 139, 139,
! 139, 139, 139, 139, 140, 141, 141, 141, 141, 141,
! 141, 142, 143, 143, 143, 143, 143, 143, 143, 143,
! 143, 143, 144, 144, 144, 144, 144, 145, 145, 145,
! 145, 145, 145, 145, 145, 145, 145, 146, 146, 146,
! 146, 146, 147, 147, 147, 147, 147, 147, 147, 147,
! 148, 148, 148, 148, 148, 148, 148, 148, 149, 149,
! 149, 149, 150, 150, 150, 150, 151, 151, 151, 151,
! 152, 152, 152, 152, 153, 153, 153, 153, 153, 153,
! 153, 153, 154, 154, 154, 154, 154, 154, 154, 154,
! 154, 154, 154, 154, 154, 154, 154, 154, 155, 155,
! 156, 156, 157, 158, 158, 159, 160, 160, 160, 161,
! 161, 162, 162, 163, 163, 165, 164, 164, 167, 166,
! 166, 168, 168, 169, 169, 170, 171, 171, 172, 172,
! 172, 172, 172, 173, 173, 173, 173, 174, 175, 174,
! 174, 176, 176, 177, 177, 178, 178, 179, 178, 178,
! 181, 180, 180, 180, 182, 182, 183, 183, 183, 185,
! 186, 184, 188, 189, 187, 190, 190, 191, 191, 191,
! 191, 191, 192, 192, 193, 193, 193, 194, 194, 194,
! 194, 194, 195, 195, 195, 195, 195, 196, 196, 197,
! 197, 198, 198, 200, 199, 199, 201, 199, 199, 202,
! 199, 203, 199, 204, 204, 204, 205, 205, 206, 206,
! 207, 207, 208, 208, 208, 209, 209, 209, 209, 209,
! 209, 210, 210, 211, 211, 212, 212, 212, 213, 213,
! 213, 214, 214, 214, 215, 215, 217, 216, 218, 218,
! 219, 219, 219, 220, 220, 221, 221, 222, 222, 223,
! 223, 223, 223, 223, 224, 224, 224, 224, 224, 224,
! 224, 224, 224, 225, 225, 225, 225, 226, 226, 226,
! 226, 226, 227, 227, 227, 227, 228, 228, 228, 228,
! 228, 229, 229, 230, 230, 230, 230, 231, 232, 233,
! 234, 235, 236, 236, 237, 237, 238, 239, 239, 240,
! 241, 241, 242, 242, 243, 244, 245, 245, 247, 246,
! 249, 248, 250, 251, 252, 252, 253, 254, 255, 257,
! 256, 256, 256, 258, 259, 256, 256, 256, 260, 261,
! 262, 263, 256, 264, 256, 265, 265, 266, 266, 266,
! 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
! 266, 267, 267, 267, 267, 268, 268, 269, 269, 270,
! 270, 271, 271, 272, 272, 273, 273, 275, 274, 276,
! 277, 278, 276, 276, 279, 279, 279, 279, 280, 280,
! 281, 281, 281, 281, 281, 282, 282, 282, 282, 282,
! 283, 285, 284, 286, 286, 287, 287, 288, 288, 289
};
static const short yyr2[] = { 0,
*************** static const short yyr2[] = { 0,
*** 659,1552 ****
4, 0, 0, 9, 4, 0, 0, 8, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 3, 1, 2, 2, 2, 2, 2, 4,
! 2, 4, 2, 2, 1, 1, 1, 4, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
! 3, 0, 4, 0, 4, 0, 0, 7, 0, 5,
! 3, 3, 1, 1, 1, 1, 0, 7, 3, 3,
! 3, 3, 4, 6, 8, 6, 4, 3, 3, 2,
! 2, 1, 2, 0, 1, 2, 3, 1, 1, 2,
! 2, 4, 4, 2, 2, 3, 0, 1, 4, 4,
! 3, 3, 2, 2, 1, 2, 2, 2, 2, 2,
! 1, 2, 1, 2, 2, 2, 2, 2, 2, 1,
! 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
! 1, 1, 1, 1, 1, 1, 4, 4, 1, 4,
! 1, 4, 0, 4, 0, 6, 3, 0, 6, 3,
! 0, 1, 1, 2, 6, 1, 3, 0, 1, 4,
! 6, 4, 1, 1, 1, 1, 1, 0, 4, 1,
! 0, 2, 1, 3, 3, 2, 0, 4, 1, 0,
! 4, 1, 1, 1, 2, 2, 5, 3, 0, 0,
! 7, 0, 0, 7, 1, 1, 4, 3, 2, 3,
! 1, 1, 1, 3, 2, 1, 3, 2, 3, 3,
! 4, 3, 4, 3, 2, 1, 1, 2, 1, 2,
! 1, 2, 0, 7, 5, 0, 7, 5, 0, 8,
! 0, 7, 2, 2, 2, 0, 1, 0, 1, 1,
! 2, 0, 3, 2, 3, 4, 3, 1, 1, 2,
! 1, 4, 1, 4, 4, 6, 5, 4, 6, 5,
! 1, 3, 1, 1, 3, 0, 3, 0, 1, 0,
! 1, 2, 1, 1, 1, 3, 2, 3, 4, 3,
! 2, 2, 1, 3, 4, 2, 3, 3, 4, 4,
! 5, 5, 1, 1, 1, 1, 1, 2, 2, 2,
! 2, 1, 2, 2, 2, 1, 2, 2, 2, 2,
! 1, 2, 1, 1, 1, 1, 2, 0, 0, 0,
! 0, 0, 1, 1, 2, 3, 1, 2, 1, 1,
! 5, 1, 1, 2, 2, 2, 2, 0, 5, 0,
! 4, 0, 0, 1, 2, 3, 3, 3, 0, 4,
! 1, 3, 0, 0, 7, 5, 2, 0, 0, 0,
! 0, 12, 0, 6, 2, 1, 1, 2, 3, 2,
! 2, 2, 3, 6, 8, 10, 12, 3, 4, 1,
! 3, 5, 2, 5, 0, 1, 0, 1, 0, 1,
! 1, 3, 4, 7, 1, 3, 0, 3, 2, 0,
! 0, 6, 2, 0, 1, 1, 3, 1, 3, 4,
! 4, 3, 4, 3, 4, 4, 3, 4, 3, 1,
! 0, 3, 1, 2, 1, 3, 1, 3, 1
};
static const short yydefact[] = { 3,
! 5, 0, 0, 0, 266, 157, 263, 125, 351, 347,
! 349, 0, 0, 0, 559, 17, 4, 8, 7, 0,
! 210, 211, 212, 213, 202, 203, 204, 205, 214, 215,
! 216, 217, 206, 207, 208, 209, 117, 117, 0, 133,
! 140, 260, 262, 261, 131, 283, 0, 0, 0, 265,
! 264, 0, 6, 15, 16, 352, 348, 350, 0, 0,
! 0, 346, 258, 281, 0, 271, 0, 160, 126, 138,
! 144, 128, 161, 127, 139, 145, 167, 129, 150, 155,
! 132, 168, 130, 151, 156, 178, 134, 136, 142, 141,
! 179, 135, 137, 143, 193, 146, 148, 153, 152, 194,
! 147, 149, 154, 162, 158, 176, 185, 164, 163, 159,
! 177, 186, 169, 165, 191, 200, 171, 170, 166, 192,
! 201, 180, 172, 174, 183, 182, 181, 173, 175, 184,
! 195, 187, 189, 198, 197, 196, 188, 190, 199, 0,
! 0, 14, 284, 30, 31, 372, 363, 372, 364, 361,
! 365, 10, 83, 84, 102, 55, 56, 0, 0, 0,
! 0, 0, 86, 0, 32, 34, 33, 0, 35, 36,
! 0, 37, 38, 0, 0, 39, 57, 0, 0, 59,
! 42, 44, 85, 0, 0, 0, 238, 239, 240, 241,
! 234, 235, 236, 237, 396, 0, 288, 230, 231, 232,
! 233, 259, 0, 0, 282, 11, 281, 29, 0, 281,
! 0, 0, 281, 345, 331, 258, 281, 0, 269, 0,
! 325, 326, 0, 0, 0, 0, 353, 0, 356, 0,
! 359, 53, 54, 0, 0, 0, 48, 45, 0, 464,
! 0, 0, 47, 0, 0, 0, 49, 0, 51, 0,
! 0, 76, 74, 72, 0, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 0, 0, 100, 101, 0, 0,
! 40, 0, 103, 0, 460, 452, 0, 46, 267, 398,
! 268, 294, 295, 296, 293, 0, 286, 289, 344, 0,
! 0, 118, 0, 551, 342, 0, 0, 416, 0, 0,
! 0, 27, 0, 472, 109, 473, 280, 0, 0, 13,
! 281, 21, 0, 281, 281, 329, 12, 25, 0, 281,
! 379, 374, 230, 231, 232, 233, 226, 227, 228, 229,
! 117, 117, 371, 0, 372, 281, 372, 393, 394, 368,
! 391, 0, 0, 0, 0, 90, 89, 0, 9, 43,
! 0, 0, 82, 81, 0, 0, 0, 0, 70, 71,
! 69, 68, 67, 65, 66, 60, 61, 62, 63, 64,
! 99, 98, 0, 41, 0, 92, 0, 0, 453, 454,
! 91, 258, 281, 397, 399, 404, 403, 405, 413, 0,
! 288, 40, 343, 272, 273, 0, 0, 0, 0, 418,
! 414, 0, 0, 417, 0, 447, 472, 111, 106, 110,
! 0, 278, 330, 0, 0, 19, 277, 328, 23, 355,
! 472, 472, 373, 380, 0, 358, 0, 0, 369, 0,
! 368, 0, 0, 0, 87, 58, 50, 52, 0, 0,
! 75, 73, 93, 97, 557, 0, 463, 432, 462, 472,
! 472, 472, 472, 0, 441, 0, 473, 427, 436, 455,
! 407, 527, 412, 281, 411, 285, 287, 83, 0, 274,
! 0, 555, 535, 222, 223, 218, 219, 224, 225, 220,
! 221, 117, 117, 553, 0, 536, 538, 552, 0, 420,
! 0, 0, 419, 415, 473, 107, 117, 117, 0, 327,
! 270, 273, 472, 275, 472, 375, 381, 473, 377, 383,
! 473, 281, 281, 395, 392, 281, 0, 0, 0, 0,
! 0, 77, 80, 456, 0, 433, 428, 437, 434, 429,
! 438, 473, 430, 439, 435, 431, 440, 442, 449, 450,
! 406, 408, 0, 0, 527, 410, 290, 0, 292, 533,
! 550, 400, 400, 529, 530, 0, 554, 0, 421, 422,
! 0, 114, 0, 115, 0, 300, 298, 297, 279, 473,
! 0, 473, 281, 376, 281, 0, 354, 357, 362, 281,
! 94, 0, 96, 313, 83, 0, 0, 310, 0, 312,
! 0, 366, 303, 309, 0, 0, 0, 558, 450, 461,
! 266, 0, 0, 0, 0, 0, 0, 515, 510, 459,
! 472, 0, 116, 117, 117, 0, 0, 448, 497, 477,
! 478, 0, 409, 528, 0, 336, 258, 281, 281, 332,
! 333, 281, 547, 401, 404, 258, 281, 281, 549, 281,
! 537, 210, 211, 212, 213, 202, 203, 204, 205, 214,
! 215, 216, 217, 206, 207, 208, 209, 117, 117, 539,
! 556, 0, 28, 457, 0, 0, 0, 0, 276, 0,
! 472, 0, 281, 472, 0, 281, 360, 0, 316, 0,
! 0, 307, 88, 0, 302, 0, 315, 306, 78, 0,
! 513, 500, 501, 502, 0, 0, 0, 516, 0, 473,
! 498, 0, 0, 123, 468, 483, 470, 488, 0, 481,
! 0, 0, 451, 465, 124, 291, 407, 527, 545, 281,
! 335, 281, 338, 546, 402, 407, 527, 548, 531, 400,
! 400, 458, 112, 113, 0, 20, 24, 382, 473, 281,
! 0, 385, 384, 281, 0, 388, 95, 0, 318, 0,
! 0, 304, 305, 0, 511, 503, 0, 508, 0, 0,
! 0, 121, 319, 0, 122, 322, 0, 0, 450, 0,
! 0, 0, 467, 472, 466, 487, 0, 499, 339, 340,
! 0, 334, 337, 0, 281, 281, 542, 281, 544, 299,
! 0, 387, 281, 390, 281, 0, 311, 308, 0, 509,
! 0, 281, 119, 0, 120, 0, 0, 0, 0, 517,
! 0, 482, 450, 451, 474, 472, 0, 341, 532, 540,
! 541, 543, 386, 389, 317, 512, 519, 0, 514, 320,
! 323, 0, 0, 471, 518, 496, 489, 0, 493, 480,
! 476, 475, 0, 0, 0, 0, 520, 521, 504, 472,
! 472, 469, 484, 517, 495, 450, 486, 0, 0, 519,
! 0, 0, 473, 473, 450, 0, 494, 0, 0, 0,
! 505, 522, 0, 0, 485, 490, 523, 0, 0, 0,
! 321, 324, 517, 0, 525, 0, 506, 0, 0, 0,
! 0, 491, 524, 507, 526, 450, 492, 0, 0, 0
};
! static const short yydefgoto[] = { 898,
! 1, 2, 3, 17, 18, 19, 313, 503, 319, 505,
! 212, 407, 589, 174, 241, 373, 176, 177, 178, 179,
! 180, 181, 358, 357, 355, 597, 356, 182, 521, 183,
! 302, 303, 304, 496, 448, 20, 291, 613, 187, 188,
! 189, 190, 191, 192, 193, 194, 29, 30, 31, 32,
! 33, 34, 35, 36, 37, 38, 482, 483, 331, 202,
! 195, 39, 203, 40, 41, 42, 43, 44, 218, 65,
! 213, 219, 571, 66, 499, 292, 205, 46, 286, 287,
! 288, 569, 667, 591, 592, 593, 751, 594, 681, 595,
! 596, 762, 804, 850, 765, 806, 851, 502, 221, 629,
! 630, 631, 222, 47, 48, 49, 50, 335, 337, 342,
! 230, 51, 685, 430, 225, 226, 333, 506, 509, 507,
! 510, 340, 341, 196, 280, 384, 633, 634, 386, 387,
! 388, 214, 449, 450, 451, 452, 453, 454, 305, 276,
! 600, 774, 778, 378, 379, 380, 663, 618, 277, 456,
! 184, 664, 710, 711, 767, 712, 769, 306, 411, 814,
! 775, 815, 816, 713, 813, 768, 865, 770, 854, 883,
! 896, 856, 837, 620, 621, 699, 838, 846, 847, 848,
! 886, 463, 544, 484, 640, 784, 485, 486, 660, 487,
! 552, 295, 397, 488, 489, 446, 185
};
! static const short yypact[] = { 131,
! 137, 2099, 2099, 229,-32768,-32768,-32768,-32768, 129, 129,
! 129, 101, 123, 147,-32768,-32768,-32768,-32768,-32768, 263,
! 1218, 731, 1314, 941, 390, 303, 525, 827, 1631, 1037,
! 2396, 1360, 696, 917, 716, 1008,-32768,-32768, 138,-32768,
! -32768,-32768,-32768,-32768, 129,-32768, 83, 85, 107,-32768,
! -32768, 2099,-32768,-32768,-32768, 129, 129, 129, 2695, 2613,
! 165,-32768, 112, 129, 170,-32768, 914,-32768,-32768,-32768,
! -32768, 129,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! 129,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 129,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 129,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 129,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768, 129,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768, 129,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768, 129,-32768,-32768,-32768,-32768, 290,
! 263,-32768,-32768,-32768,-32768,-32768, 146,-32768, 149,-32768,
! 159,-32768,-32768,-32768,-32768,-32768,-32768, 2695, 2695, 205,
! 212, 214,-32768, 377,-32768,-32768,-32768, 2695,-32768,-32768,
! 1719,-32768,-32768, 2695, 204, 235,-32768, 2736, 2777,-32768,
! 3116, 1771, 317, 1480, 2695, 224, 1413, 859, 3041, 1050,
! 1230, 784, 1694, 1227,-32768, 249, 684, 136, 328, 219,
! 358,-32768, 263, 263, 129,-32768, 129,-32768, 307, 129,
! 2142, 357, 129,-32768,-32768, 112, 129, 257,-32768, 2080,
! 401, 454, 284, 2052, 293, 855,-32768, 306,-32768, 298,
! -32768,-32768,-32768, 2695, 2695, 3066,-32768,-32768, 305,-32768,
! 323, 346,-32768, 316, 2695, 1719,-32768, 1719,-32768, 2695,
! 2695, 393,-32768,-32768, 2695, 2695, 2695, 2695, 2695, 2695,
! 2695, 2695, 2695, 2695, 2695, 2695,-32768,-32768, 377, 377,
! 2695, 2695,-32768, 366,-32768, 409, 372,-32768,-32768, 425,
! -32768,-32768,-32768,-32768,-32768, 197,-32768, 399, 454, 215,
! 263,-32768, 470,-32768,-32768, 2613, 2245,-32768, 398, 2183,
! 445,-32768, 759, 65,-32768,-32768, 497, 290, 290,-32768,
! 129,-32768, 357, 129, 129,-32768,-32768,-32768, 357, 129,
! -32768,-32768, 1413, 859, 3041, 1050, 1230, 784, 1694, 1227,
! -32768, 330, 459, 1417,-32768, 129,-32768,-32768, 529, 488,
! -32768, 298, 2883, 2901, 490,-32768,-32768, 2486,-32768, 3116,
! 501, 503, 3116, 3116, 2695, 534, 2695, 2695, 2448, 3077,
! 2576, 2961, 1820, 818, 818, 452, 452,-32768,-32768,-32768,
! -32768,-32768, 515, 235, 513,-32768, 377, 1567, 409,-32768,
! -32768, 112, 129,-32768,-32768,-32768,-32768, 456,-32768, 522,
! 684, 2818,-32768,-32768, 209, 87, 1090, 516, 2695,-32768,
! -32768, 2695, 2286,-32768, 517,-32768,-32768,-32768,-32768,-32768,
! 2465,-32768, 401, 251, 290,-32768, 564,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768, 527,-32768, 528, 2695, 377, 530,
! 488, 3066, 2695, 3066,-32768,-32768, 532, 532, 576, 2695,
! 3145, 2208,-32768,-32768,-32768, 324, 445,-32768,-32768, 78,
! 116, 121, 134, 624,-32768, 542,-32768,-32768,-32768,-32768,
! 425, 425,-32768, 129,-32768,-32768,-32768, 339, 545,-32768,
! 549,-32768,-32768, 1797, 3070, 1146, 1600, 1998, 3095, 1185,
! 1614,-32768,-32768,-32768, 553, 347,-32768,-32768, 374,-32768,
! 552, 555,-32768,-32768,-32768,-32768, 563, 565, 1348,-32768,
! -32768, 626,-32768,-32768,-32768, 567,-32768,-32768, 569,-32768,
! -32768, 129, 129, 3116,-32768, 129, 566, 579, 2925, 581,
! 1784,-32768, 3132,-32768, 377,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2356,
! -32768,-32768, 586, 1207,-32768,-32768,-32768, 2695,-32768,-32768,
! -32768, 175, 325,-32768,-32768, 1520,-32768, 673,-32768,-32768,
! 76,-32768, 290,-32768, 263,-32768,-32768, 3116,-32768,-32768,
! 1348,-32768, 129, 343, 129, 431,-32768,-32768,-32768, 129,
! -32768, 2695,-32768,-32768, 632, 377, 2695,-32768, 633, 3116,
! 595, 593,-32768,-32768, 185, 1920, 2695,-32768, 2425,-32768,
! 646, 2695, 649, 612, 614, 2654, 158, 699,-32768,-32768,
! -32768, 623,-32768,-32768,-32768, 627, 482, 628,-32768,-32768,
! -32768, 2551,-32768,-32768, 407,-32768, 112, 129, 129, 468,
! 483, 238,-32768,-32768, 129, 112, 129, 238,-32768, 129,
! -32768, 1797, 3070, 2564, 3099, 1146, 1600, 1547, 1752, 1998,
! 3095, 3037, 3112, 1185, 1614, 1634, 1766,-32768,-32768,-32768,
! -32768, 625,-32768,-32768, 478, 479, 1784, 76,-32768, 76,
! -32768, 2695, 109,-32768, 2695, 418,-32768, 2943,-32768, 1406,
! 1784,-32768,-32768, 1852,-32768, 1988,-32768,-32768, 3132, 2863,
! -32768,-32768,-32768,-32768, 640, 2695, 641,-32768, 650,-32768,
! -32768, 290, 263,-32768,-32768,-32768,-32768,-32768, 660, 700,
! 1250, 97,-32768,-32768,-32768,-32768, 175, 349,-32768, 129,
! -32768, 129,-32768,-32768, 129, 325, 325,-32768,-32768, 175,
! 325,-32768,-32768,-32768, 662,-32768,-32768,-32768,-32768, 2980,
! 2695,-32768,-32768, 2980, 2695,-32768,-32768, 2695,-32768, 665,
! 1988,-32768,-32768, 2695,-32768,-32768, 674,-32768, 2695, 711,
! 484,-32768, 403, 487,-32768, 1087, 701, 703,-32768, 707,
! 2695, 1654,-32768,-32768,-32768,-32768, 2695,-32768, 468, 483,
! 466,-32768,-32768, 1207, 129, 238,-32768, 238,-32768,-32768,
! 343,-32768, 2980,-32768, 2980, 2839,-32768,-32768, 3098,-32768,
! 62, 129,-32768, 357,-32768, 357, 2695, 2695, 750, 2551,
! 694,-32768,-32768,-32768,-32768,-32768, 695,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768, 31, 697,-32768,-32768,
! -32768, 718, 719,-32768,-32768,-32768,-32768, 698,-32768,-32768,
! -32768,-32768, 710, 712, 377, 127, 715,-32768,-32768,-32768,
! -32768,-32768,-32768, 2695,-32768,-32768,-32768, 2695, 693, 31,
! 720, 31,-32768,-32768,-32768, 722,-32768, 730, 802, 163,
! -32768,-32768, 625, 625,-32768,-32768,-32768, 749, 470, 733,
! -32768,-32768, 2695, 2695, 317, 421,-32768, 740, 743, 744,
! 470,-32768,-32768,-32768, 317,-32768,-32768, 829, 830,-32768
};
static const short yypgoto[] = {-32768,
! -32768,-32768,-32768, 98,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768, 34,-32768, -59, 443, -259, 378,-32768,-32768,
! -53, 728,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -277,
! -310, 538,-32768,-32768, -97, 222, -283, -565, 2, 8,
! 39, 41, 21, 43, 45, 48, -375, -339, 288, 289,
! -317, -281, 291, 294, -488, -466, 427, 435,-32768, -177,
! -119, -519, -199, 429, 496, 480, 706,-32768, -510, -121,
! -218, 437,-32768, 591,-32768, 379, 4, 68,-32768, 463,
! -32768, 286,-32768, -411,-32768, 176,-32768, -526,-32768,-32768,
! 299,-32768,-32768,-32768,-32768,-32768,-32768, -132, 282, 154,
! 171, -124, 58,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768, 462, -114,-32768, 562,-32768,-32768, 230,
! 228, 568, 477, -95,-32768,-32768, -523, -262, -406, -429,
! -32768, 476,-32768,-32768,-32768,-32768,-32768,-32768, -242,-32768,
! -32768, -481, 91,-32768,-32768, 533, -541,-32768, 295,-32768,
! -32768, -514,-32768,-32768,-32768,-32768,-32768, 617, -388, 93,
! -685, -264, 20,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768, -745, 54,-32768, 55,
! -32768, 461,-32768, -506,-32768,-32768,-32768,-32768,-32768,-32768,
! 433, -296,-32768,-32768,-32768,-32768, 60
};
! #define YYLAST 3205
! static const short yytable[] = { 175,
! 186, 314, 416, 21, 21, 45, 45, 220, 419, 22,
! 22, 374, 56, 57, 58, 396, 308, 385, 418, 223,
! 616, 478, 25, 25, 72, 619, 81, 415, 90, 639,
! 99, 542, 108, 228, 117, 478, 126, 624, 135, 844,
! 23, 23, 24, 24, 26, 26, 27, 27, 332, 28,
! 28, 614, 665, 21, 541, 45, 715, 479, 617, 22,
! 408, 52, 52, 45, 198, -105, 45, 658, 540, 688,
! 199, 479, 25, 615, 409, 242, 662, 67, -443, 480,
! 147, 149, 151, 809, 619, 144, 145, 144, 145, 659,
! 23, 300, 24, 480, 26, 273, 27, 776, 845, 28,
! 53, 200, 616, 201, 232, 233, 561, 827, 866, 144,
! 145, 52, 143, 458, 238, 481, -444, 617, 8, 574,
! 243, -445, 576, 143, 143, 143, 736, 840, 737, 481,
! -1, 278, 374, 614, -446, 455, -2, 888, 14, 143,
! 345, 14, 69, 599, 828, 635, 635, 732, 143, 152,
! 351, 299, 352, -105, 741, 615, 332, 143, 14, 753,
! 144, 145, -423, 777, 610, 14, 143, 59, 478, 470,
! 867, 146, 860, 148, 45, 143, 399, 62, 626, 875,
! 650, 668, 461, 670, 143, 527, 530, 533, 536, 60,
! 72, 761, 81, 143, 90, 150, 99, 237, 224, 543,
! -424, 72, 143, 81, 479, -425, 787, 789, 879, 861,
! 897, 538, 375, 61, 45, 696, 651, 198, -426, 45,
! 425, 142, 427, 199, 798, 78, 480, 323, 686, 45,
! 285, 197, 627, 324, 227, 209, 398, 229, 654, 45,
! 405, 628, 211, 238, 836, 880, 327, 231, 14, 45,
! 586, 45, 587, 206, 200, 735, 201, 207, 140, 141,
! 289, 290, 481, 339, 325, 62, 326, 14, 328, 750,
! 329, 234, 143, 330, 655, 210, 211, 819, 235, 390,
! 236, 210, 211, 314, 391, 334, 244, 542, 625, 671,
! 616, 674, 62, 215, 436, 439, 542, 393, 338, 45,
! 144, 145, 371, 372, 210, 211, 279, 91, 7, 92,
! 541, 760, 54, 55, 9, 10, 11, 315, 211, 541,
! 63, 614, 245, 635, 635, 273, 72, 62, 81, 64,
! 90, 281, 99, 500, 74, 323, 518, 45, 520, 491,
! 310, 324, 492, 615, 311, 62, 215, 216, 395, 238,
! 791, 62, 526, 529, 327, 535, 217, 301, 881, 882,
! -472, -472, -472, -472, 83, 289, 290, 317, -472, -472,
! -472, 207, 325, 293, 326, 339, 328, 320, 329, 144,
! 145, 330, 636, 198, -472, 45, -247, 346, 672, 199,
! 336, 637, 211, 334, 86, 7, 87, 459, 474, 349,
! 216, 9, 10, 11, 475, 347, 627, 524, 478, 217,
! 445, 525, 474, -378, -378, 628, 211, 476, 475, 14,
! 200, 547, 201, 782, 285, 783, 548, 717, 348, 209,
! 555, 476, -273, 62, 556, 45, 726, 45, -79, 477,
! 377, 673, 204, 666, 479, -104, -273, 14, 376, 70,
! 75, 79, 84, 477, 381, 543, 557, 106, 111, 115,
! 120, 558, 339, 745, 543, 392, 480, 315, 211, 528,
! 531, 534, 537, -246, 873, 874, 675, 72, 155, 90,
! 612, 108, 382, 126, 210, 211, -273, 401, 63, 716,
! -273, 383, 211, 830, 245, 831, 705, 64, 706, 707,
! 708, 709, 481, 890, 88, 93, 97, 102, 891, 264,
! 265, 266, 124, 129, 133, 138, 71, 76, 80, 85,
! 210, 211, 464, 211, 107, 112, 116, 121, 406, 95,
! 7, 96, 722, 211, 720, 211, 9, 10, 11, 612,
! 412, 21, 423, 45, 314, 474, 695, 22, 818, 722,
! 211, 475, 421, 422, 14, 247, 249, 642, 598, 45,
! 25, 733, 734, 643, 476, 311, 207, 803, 278, 763,
! 805, 311, 428, 611, 207, 429, 646, 434, 23, 440,
! 24, 764, 26, 437, 27, 438, 477, 28, 294, 413,
! 414, 307, 780, 781, 644, 309, 645, 443, 647, 622,
! 648, 885, 444, 649, 466, 490, 494, 504, -248, 632,
! 638, 512, 513, 895, 516, 70, 75, 79, 84, 679,
! 435, 522, 395, 21, 301, 45, 539, 549, 198, 22,
! 45, 550, 611, 676, 199, 554, 757, 198, 725, 45,
! 697, 559, 25, 199, 560, 72, 562, 81, 564, 90,
! 580, 99, 209, 108, 573, 117, 575, 126, 673, 135,
! 23, 581, 24, 583, 26, 200, 27, 201, 623, 28,
! 88, 93, 97, 102, 200, 661, 201, -30, 682, 683,
! 684, 622, 71, 76, 80, 85, 144, 145, 282, 283,
! 284, -31, 417, 294, 691, 692, 316, 693, 420, 801,
! 122, 7, 123, 551, 551, 698, 701, 9, 10, 11,
! 704, 811, 275, 610, 426, 772, 759, 817, 563, 565,
! 131, 7, 132, 756, 758, 14, 771, 9, 10, 11,
! 89, 94, 98, 103, 5, 73, 7, 74, 125, 130,
! 134, 139, 9, 10, 11, 14, 790, 832, 833, 797,
! 835, 70, 75, 79, 84, 389, 802, 800, 13, 301,
! 766, 462, -108, -108, -108, -108, 834, 807, -108, 808,
! -108, -108, -108, 810, 289, 290, 839, 843, 858, -254,
! 849, 855, 869, 289, 290, 474, -108, 786, 788, 7,
! 92, 475, 143, 857, 835, 9, 10, 11, 868, -256,
! 852, 853, 862, 871, 476, 876, 88, 93, 97, 102,
! 878, 21, 877, 45, -243, 884, 887, 22, 71, 76,
! 80, 85, 892, 835, 889, 893, 477, 894, 899, 900,
! 25, 100, 7, 101, 469, 702, 703, 497, 9, 10,
! 11, 410, 545, 652, 653, 498, 656, -108, 23, 657,
! 24, 501, 26, 467, 27, 321, 669, 28, 5, 752,
! 7, 8, 5, 465, 7, 74, 9, 10, 11, 622,
! 9, 10, 11, 262, 263, 264, 265, 266, 859, 730,
! 731, 394, 13, 785, 14, 15, 13, 779, 316, 316,
! 577, 578, 517, 687, 579, 424, 89, 94, 98, 103,
! 738, 743, 70, 75, 841, 515, 106, 111, 842, 431,
! -249, 460, 714, 870, 208, 553, 872, -26, -26, -26,
! -26, 127, 7, 128, 546, -26, -26, -26, 9, 10,
! 11, 0, 0, 0, 0, 0, 389, 389, 322, -370,
! 209, -26, 0, -273, 5, 82, 7, 83, 0, 0,
! 0, 0, 9, 10, 11, 88, 93, -273, 677, 124,
! 129, 343, 344, 0, 0, 0, 0, 0, 13, 71,
! 76, 0, 350, 107, 112, 0, 0, 353, 354, 0,
! 210, 211, 359, 360, 361, 362, 363, 364, 365, 366,
! 367, 368, 369, 370, 457, 0, 0, -273, 0, 0,
! -255, -273, -26, 0, 0, 0, 718, 719, 0, 0,
! 724, 0, 136, 7, 137, 727, 728, 0, 729, 9,
! 10, 11, 0, 495, -245, 0, 0, 389, 389, 0,
! 0, 0, 89, 94, 98, 103, 0, 508, 511, 0,
! 5, 109, 7, 110, 0, 0, 0, 0, 9, 10,
! 11, 742, 0, 5, 746, 7, 83, 0, 0, 0,
! 0, 9, 10, 11, 13, 0, 457, 457, 532, 457,
! 70, 75, 79, 84, 0, 0, 0, 13, 106, 111,
! 115, 120, 0, 0, 441, 442, 0, 0, 0, 0,
! 471, -257, 472, 5, 6, 7, 8, 0, 294, 473,
! 294, 9, 10, 11, 0, 721, 723, 0, 0, 0,
! 0, 0, 0, 209, 0, 0, -273, 13, 792, 570,
! -251, 572, 794, 0, 0, 88, 93, 97, 102, 0,
! -273, 0, 0, 124, 129, 133, 138, 71, 76, 80,
! 85, 0, 0, 0, 0, 107, 112, 116, 121, 0,
! 86, 7, 87, 210, 211, 514, 0, 9, 10, 11,
! 519, 0, 0, 820, 821, 0, 822, 523, 0, 0,
! -273, 823, -534, 824, -273, 14, 0, 0, 0, 0,
! 829, 89, 94, 0, 0, 125, 130, 0, 0, 122,
! 7, 123, 389, 389, 0, 0, 9, 10, 11, 0,
! 0, 389, 389, 0, 0, 389, 389, 471, 0, 0,
! 5, 6, 7, 8, 14, 0, 473, 0, 9, 10,
! 11, 5, 68, 7, 69, 0, 568, 700, 0, 9,
! 10, 11, 7, 101, 13, 7, 87, 0, 9, 10,
! 11, 9, 10, 11, 0, 13, 0, 14, 590, 0,
! 773, 0, -450, -450, 721, 723, 723, -450, -450, 14,
! -450, 0, 0, 0, -450, 0, -450, -450, -450, -450,
! -450, -450, -450, -450, -450, -450, -450, 0, -450, 0,
! -450, 0, -450, -450, -450, -450, -450, 739, 0, -534,
! 511, -450, 0, 0, 0, 0, 0, -450, 568, 0,
! -450, -242, 0, 0, 0, -450, -450, -450, 0, 678,
! 0, -450, -450, 0, 680, 0, -450, 5, 77, 7,
! 78, 0, 0, 590, 689, 9, 10, 11, 0, 690,
! 0, 0, 0, -450, 0, -450, -450, 0, -450, 0,
! 0, 13, 0, 14, 0, 0, 0, 0, 566, 0,
! 153, 89, 94, 98, 103, 154, 155, 0, 156, 125,
! 130, 134, 139, 5, 118, 7, 119, 0, 0, 0,
! 0, 9, 10, 11, 0, 0, 157, 0, 15, 0,
! 158, 159, 160, 161, 162, 0, 0, 13, 0, 163,
! 532, 0, 0, 0, 590, 164, 0, -244, 165, 740,
! 0, 0, 744, 166, 167, 168, 0, 0, 590, 169,
! 170, 590, 0, 590, 171, 748, 5, 321, 7, 69,
! 5, 0, 7, 8, 9, 10, 11, 0, 9, 10,
! 11, 0, 532, 172, 173, 0, 567, 0, 0, 0,
! 13, 0, 14, -253, 13, 0, 14, 15, 250, 251,
! 252, 0, 253, 254, 255, 256, 257, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 863, 864, 793, 0,
! 0, 0, 795, 0, 0, 796, 0, 0, 590, 0,
! 274, 799, -448, -448, -448, -448, -448, -448, -448, 0,
! -448, -448, -448, -448, -448, 749, -448, -448, -448, -448,
! -448, -448, -448, -448, -448, -448, -448, -448, -448, -448,
! -448, -448, -448, -448, -448, -448, -448, 0, 0, 0,
! 0, -448, 0, 5, 6, 7, 8, -448, 0, 641,
! -448, 9, 10, 11, 0, -448, -448, -448, 0, 0,
! 0, -448, -448, 0, 0, 0, -448, 13, 0, 14,
! 0, 95, 7, 96, 0, 0, 0, 0, 9, 10,
! 11, 0, 0, -448, 275, -448, -448, 447, -448, -472,
! -472, -472, -472, -472, -472, -472, 14, -472, -472, -472,
! -472, -472, 0, -472, -472, -472, -472, -472, -472, -472,
! -472, -472, -472, -472, -472, -472, -472, -472, 0, -472,
! -472, -472, -472, -472, 91, 7, 92, 0, -472, 0,
! 0, 9, 10, 11, -472, 0, 0, -472, 127, 7,
! 128, 0, -472, -472, -472, 9, 10, 11, -472, -472,
! 0, 0, 0, -472, 5, 104, 7, 105, 131, 7,
! 132, 0, 9, 10, 11, 9, 10, 11, 0, 0,
! -472, 0, -472, -472, 812, -472, -479, -479, 13, 0,
! 14, -479, -479, 14, -479, 0, 0, 0, -479, 0,
! -479, -479, -479, -479, -479, -479, -479, -479, -479, -479,
! -479, 0, -479, 0, -479, 0, -479, -479, -479, -479,
! -479, 0, 0, 0, 0, -479, 0, 0, 0, 7,
! 96, -479, 0, 0, -479, 9, 10, 11, 0, -479,
! -479, -479, 0, 0, -250, -479, -479, 0, 0, 239,
! -479, 153, 5, 14, 7, 8, 154, 155, 0, 156,
! 9, 10, 11, 0, 0, 0, 0, -479, 0, -479,
! -479, 0, -479, 0, 0, 0, 13, 157, 14, 15,
! 0, 158, 159, 160, 161, 162, 100, 7, 101, 0,
! 163, 0, 0, 9, 10, 11, 164, 0, 0, 165,
! 136, 7, 137, 0, 166, 167, 168, 9, 10, 11,
! 169, 170, 0, 0, 584, 171, 585, 145, 0, 0,
! 0, 154, 155, 0, 156, 0, 0, 0, 0, 0,
! 5, 68, 7, 69, 172, 173, 0, 240, 9, 10,
! 11, 0, 157, 0, 15, 0, 158, 159, 160, 161,
! 162, 0, 0, 0, 13, 163, 14, 0, 0, 0,
! 0, 164, 267, 268, 165, 269, 270, 271, 272, 166,
! 167, 168, 0, 0, 0, 169, 170, 0, 0, 586,
! 171, 587, 584, 0, 585, 145, 0, 0, 0, 154,
! 155, 0, 156, 0, 0, 0, 0, 0, -301, 172,
! 173, 0, 588, 260, 261, 262, 263, 264, 265, 266,
! 157, 0, 15, 0, 158, 159, 160, 161, 162, 0,
! 0, 0, 0, 163, 0, 0, 0, 0, 0, 164,
! 0, 0, 165, 0, 0, 0, 0, 166, 167, 168,
! 0, 0, 0, 169, 170, 0, 0, 586, 171, 587,
! 584, 0, 153, 0, 0, 0, 0, 154, 155, 0,
! 156, 0, 0, 0, 0, 0, -367, 172, 173, 0,
! 588, 0, 0, 0, 0, 0, 0, 0, 157, 0,
! 15, 0, 158, 159, 160, 161, 162, 0, 0, 0,
! 0, 163, 0, -314, 0, 0, 0, 164, 0, 0,
! 165, 0, 0, 0, 0, 166, 167, 168, 0, 0,
! 0, 169, 170, 0, 0, -314, 171, -314, 584, 0,
! 153, 0, 0, 0, 0, 154, 155, 0, 156, 0,
! 0, 5, 104, 7, 105, 172, 173, 0, 588, 9,
! 10, 11, 0, 0, 0, 0, 157, 0, 15, 0,
! 158, 159, 160, 161, 162, 13, 0, 14, 0, 163,
! 0, 0, 0, 0, 0, 164, 0, 0, 165, 0,
! 0, 0, 0, 166, 167, 168, 0, 0, 0, 169,
! 170, 0, 318, 0, 171, -22, -22, -22, -22, 0,
! 0, 0, 0, -22, -22, -22, 0, 0, 0, 0,
! 0, 0, 0, 172, 173, 0, 588, 0, 209, -22,
! 312, -273, 0, -18, -18, -18, -18, 0, 0, 0,
! 0, -18, -18, -18, 0, -273, 0, 0, 0, 4,
! 0, -117, 5, 6, 7, 8, 209, -18, 0, -273,
! 9, 10, 11, 0, 0, 0, 0, 0, 210, 211,
! 0, 0, 0, -273, 0, 12, 13, 0, 14, 15,
! 0, 0, 0, 0, 0, -273, 0, 0, 0, -273,
! -22, 0, 0, 0, 153, 5, 296, 7, 8, 154,
! 155, 0, 156, 9, 10, 11, -117, 0, 0, 0,
! 0, 0, 0, -273, 0, -117, 0, -273, -18, 13,
! 157, 14, 15, 0, 158, 159, 160, 161, 162, 0,
! 0, 0, 16, 163, 0, 153, 0, 402, 0, 164,
! 154, 155, 165, 156, 0, 0, 0, 166, 167, 297,
! 0, 0, 0, 169, 170, 0, 0, 0, 171, 0,
! 0, 157, 0, 15, 0, 158, 159, 160, 161, 162,
! 0, 0, 0, 0, 163, 0, 0, 172, 173, 0,
! 164, 298, 0, 165, 0, 0, 0, 0, 166, 167,
! 403, 0, 0, 0, 169, 170, 0, 153, 0, 171,
! 0, 0, 154, 155, 0, 156, 255, 256, 257, 258,
! 259, 260, 261, 262, 263, 264, 265, 266, 172, 173,
! 0, 0, 404, 157, 0, 15, 0, 158, 159, 160,
! 161, 162, 0, 0, 0, 0, 163, 0, 153, 0,
! 0, 0, 164, 154, 155, 165, 156, 0, 0, 0,
! 166, 167, 168, 0, 0, 0, 169, 170, 0, 0,
! 0, 171, 0, 0, 157, 0, 15, 0, 158, 159,
! 160, 161, 162, 0, 0, 0, 0, 163, 0, 0,
! 172, 173, 0, 164, 400, 0, 165, 0, 0, 0,
! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0,
! 0, 0, 171, 0, 0, 0, 0, 0, 585, 601,
! 6, 7, 8, 154, 155, 0, 156, 9, 10, 11,
! 0, 172, 173, 0, 0, 493, 602, 603, 604, 605,
! 606, 607, 608, 13, 157, 14, 15, 0, 158, 159,
! 160, 161, 162, 0, 0, 0, 0, 163, 0, 5,
! 113, 7, 114, 164, 0, 0, 165, 9, 10, 11,
! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0,
! 0, 0, 171, 13, 0, 14, 0, 585, 145, 0,
! 0, 0, 154, 155, 0, 156, 0, 0, 0, 609,
! 0, 172, 173, 0, 610, 602, 603, 604, 605, 606,
! 607, 608, 0, 157, 0, 15, 0, 158, 159, 160,
! 161, 162, 0, 0, 0, 0, 163, 0, 5, 6,
! 7, 8, 164, 0, 0, 165, 9, 10, 11, -252,
! 166, 167, 168, 0, 0, 0, 169, 170, 153, 0,
! 0, 171, 13, 154, 155, 0, 156, 256, 257, 258,
! 259, 260, 261, 262, 263, 264, 265, 266, 609, 0,
! 172, 173, 0, 610, 157, 0, 15, 0, 158, 159,
! 160, 161, 162, 0, 0, 0, 0, 163, 0, 0,
! 0, 0, 0, 164, 0, 0, 165, 0, 0, 0,
! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0,
! 0, 0, 171, 153, 5, 6, 7, 8, 154, 155,
! 0, 156, 9, 10, 11, 0, 0, 5, 77, 7,
! 78, 172, 173, 0, 435, 9, 10, 11, 13, 157,
! 14, 15, 0, 158, 159, 160, 161, 162, 0, 0,
! 0, 13, 163, 14, 0, 0, 0, 0, 164, 0,
! 0, 165, 0, 0, 0, 0, 166, 167, 168, 0,
! 0, 0, 169, 170, 0, 153, 5, 171, 7, 8,
! 154, 155, 0, 156, 9, 10, 11, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 172, 173, 0, 0,
! 13, 157, 14, 15, 0, 158, 159, 160, 161, 162,
! 0, 0, 0, 0, 163, 0, 153, 0, 0, 0,
! 164, 154, 155, 165, 156, 0, 0, 0, 166, 167,
! 168, 0, 0, 0, 169, 170, 0, 0, 0, 171,
! 0, 0, 157, 0, 15, 0, 158, 159, 160, 161,
! 162, 0, 0, 0, 0, 163, 0, 153, 172, 173,
! 0, 164, 154, 155, 165, 156, 0, 0, 0, 166,
! 167, 168, 0, 0, 0, 169, 170, 0, 0, 0,
! 171, 0, 0, 157, 0, 15, 0, 158, 159, 160,
! 161, 162, 0, 0, 0, 0, 163, 694, 153, 172,
! 173, 0, 164, 154, 155, 165, 156, 0, 0, 0,
! 166, 167, 168, 0, 0, 0, 169, 170, 0, 0,
! 0, 171, 0, 0, 157, 0, 15, 0, 158, 159,
! 160, 161, 162, 0, 0, 0, 0, 163, 0, 153,
! 172, 173, 0, 164, 154, 155, 165, 156, 0, 0,
! 0, 166, 167, 168, 0, 0, 0, 169, 170, 0,
! 0, 0, 246, 0, 0, 157, 0, 15, 0, 158,
! 159, 160, 161, 162, 0, 0, 0, 0, 163, 0,
! 468, 172, 173, 0, 164, 154, 155, 165, 156, 0,
! 0, 0, 166, 167, 168, 0, 0, 0, 169, 170,
! 0, 0, 0, 248, 0, 0, 157, 0, 15, 0,
! 158, 159, 160, 161, 162, 0, 0, 0, 0, 163,
! 0, 0, 172, 173, 0, 164, 0, 0, 165, 0,
! 0, 0, 754, 166, 167, 168, 0, 0, 0, 169,
! 170, 250, 251, 252, 171, 253, 254, 255, 256, 257,
! 258, 259, 260, 261, 262, 263, 264, 265, 266, 0,
! 0, 0, 0, 172, 173, 250, 251, 252, 755, 253,
! 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 0, 0, 250, 251, 252, 825, 253,
! 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 250, 251, 252, 0, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 0, 0, 0, 0, 0, 0, 250, 251, 252,
! 432, 253, 254, 255, 256, 257, 258, 259, 260, 261,
! 262, 263, 264, 265, 266, 250, 251, 252, 433, 253,
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 0, 0, 0, 0, 0, 0, 14,
! 0, 0, 582, 259, 260, 261, 262, 263, 264, 265,
! 266, 0, 250, 251, 252, 747, 253, 254, 255, 256,
! 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
! 5, 113, 7, 114, 5, 0, 7, 78, 9, 10,
! 11, 0, 9, 10, 11, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 13, 0, 14, 0, 13, 5,
! 14, 7, 8, 5, 73, 7, 74, 9, 10, 11,
0, 9, 10, 11, 0, 0, 0, 0, 0, 0,
! 0, 0, 0, 13, 0, 14, 0, 13, 5, 109,
! 7, 110, 5, 82, 7, 83, 9, 10, 11, 0,
! 9, 10, 11, 0, 0, 5, 118, 7, 119, 0,
! 0, 0, 13, 9, 10, 11, 13, 257, 258, 259,
! 260, 261, 262, 263, 264, 265, 266, 0, 0, 13,
! 250, 251, 252, 826, 253, 254, 255, 256, 257, 258,
! 259, 260, 261, 262, 263, 264, 265, 266, 250, 251,
! 252, 0, 253, 254, 255, 256, 257, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 252, 0, 253, 254,
! 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
! 265, 266, 254, 255, 256, 257, 258, 259, 260, 261,
! 262, 263, 264, 265, 266
};
! static const short yycheck[] = { 59,
! 60, 220, 313, 2, 3, 2, 3, 140, 319, 2,
! 3, 271, 9, 10, 11, 293, 216, 280, 315, 141,
! 540, 397, 2, 3, 21, 540, 23, 311, 25, 553,
! 27, 461, 29, 148, 31, 411, 33, 544, 35, 9,
! 2, 3, 2, 3, 2, 3, 2, 3, 226, 2,
! 3, 540, 563, 52, 461, 52, 622, 397, 540, 52,
! 303, 2, 3, 60, 63, 1, 63, 556, 457, 596,
! 63, 411, 52, 540, 10, 171, 1, 20, 1, 397,
! 47, 48, 49, 769, 599, 3, 4, 3, 4, 556,
! 52, 211, 52, 411, 52, 9, 52, 1, 68, 52,
! 3, 63, 622, 63, 158, 159, 495, 46, 854, 3,
! 4, 52, 45, 378, 168, 397, 1, 599, 7, 508,
! 174, 1, 511, 56, 57, 58, 668, 813, 670, 411,
! 0, 185, 392, 622, 1, 378, 0, 883, 30, 72,
! 236, 30, 7, 532, 83, 552, 553, 662, 81, 52,
! 246, 211, 248, 89, 46, 622, 334, 90, 30, 686,
! 3, 4, 85, 67, 89, 30, 99, 67, 544, 83,
! 856, 89, 46, 89, 171, 108, 296, 3, 4, 865,
! 556, 570, 382, 572, 117, 450, 451, 452, 453, 67,
! 187, 702, 189, 126, 191, 89, 193, 164, 141, 462,
! 85, 198, 135, 200, 544, 85, 730, 731, 46, 83,
! 896, 454, 272, 67, 211, 58, 556, 216, 85, 216,
! 335, 84, 337, 216, 751, 7, 544, 226, 44, 226,
! 197, 67, 58, 226, 89, 27, 296, 89, 556, 236,
! 300, 67, 68, 297, 810, 83, 226, 89, 30, 246,
! 66, 248, 68, 84, 216, 667, 216, 88, 37, 38,
! 203, 204, 544, 230, 226, 3, 226, 30, 226, 681,
! 226, 67, 205, 226, 556, 67, 68, 784, 67, 83,
! 67, 67, 68, 502, 88, 226, 83, 717, 548, 573,
! 810, 575, 3, 4, 348, 355, 726, 83, 1, 296,
! 3, 4, 269, 270, 67, 68, 83, 5, 6, 7,
! 717, 700, 84, 85, 12, 13, 14, 67, 68, 726,
! 58, 810, 88, 730, 731, 9, 323, 3, 325, 67,
! 327, 83, 329, 83, 7, 334, 432, 334, 434, 399,
! 84, 334, 402, 810, 88, 3, 4, 58, 291, 403,
! 739, 3, 450, 451, 334, 453, 67, 1, 873, 874,
! 4, 5, 6, 7, 7, 308, 309, 84, 12, 13,
! 14, 88, 334, 67, 334, 342, 334, 85, 334, 3,
! 4, 334, 58, 382, 28, 382, 84, 83, 46, 382,
! 85, 67, 68, 334, 5, 6, 7, 378, 397, 84,
! 58, 12, 13, 14, 397, 83, 58, 84, 784, 67,
! 377, 88, 411, 84, 85, 67, 68, 397, 411, 30,
! 382, 83, 382, 720, 391, 722, 88, 627, 83, 27,
! 84, 411, 30, 3, 88, 432, 636, 434, 46, 397,
! 32, 574, 64, 565, 784, 89, 44, 30, 83, 21,
! 22, 23, 24, 411, 83, 718, 83, 29, 30, 31,
! 32, 88, 429, 46, 727, 67, 784, 67, 68, 450,
! 451, 452, 453, 84, 863, 864, 46, 474, 9, 476,
! 540, 478, 58, 480, 67, 68, 84, 90, 58, 83,
! 88, 67, 68, 804, 88, 806, 15, 67, 17, 18,
! 19, 20, 784, 83, 25, 26, 27, 28, 88, 58,
! 59, 60, 33, 34, 35, 36, 21, 22, 23, 24,
! 67, 68, 67, 68, 29, 30, 31, 32, 84, 5,
! 6, 7, 67, 68, 67, 68, 12, 13, 14, 599,
! 44, 540, 84, 540, 763, 544, 606, 540, 83, 67,
! 68, 544, 331, 332, 30, 178, 179, 556, 525, 556,
! 540, 84, 84, 556, 544, 88, 88, 84, 622, 702,
! 84, 88, 44, 540, 88, 88, 556, 88, 540, 46,
! 540, 703, 540, 83, 540, 83, 544, 540, 210, 308,
! 309, 213, 717, 718, 556, 217, 556, 83, 556, 540,
! 556, 879, 90, 556, 83, 90, 90, 44, 84, 552,
! 553, 85, 85, 891, 85, 187, 188, 189, 190, 586,
! 89, 46, 565, 622, 1, 622, 85, 83, 627, 622,
! 627, 83, 599, 576, 627, 83, 696, 636, 635, 636,
! 607, 90, 622, 636, 90, 642, 84, 644, 84, 646,
! 85, 648, 27, 650, 88, 652, 88, 654, 791, 656,
! 622, 83, 622, 83, 622, 627, 622, 627, 83, 622,
! 191, 192, 193, 194, 636, 3, 636, 46, 46, 85,
! 88, 622, 187, 188, 189, 190, 3, 4, 5, 6,
! 7, 46, 314, 315, 46, 84, 221, 84, 320, 759,
! 5, 6, 7, 482, 483, 7, 84, 12, 13, 14,
! 84, 771, 85, 89, 336, 16, 67, 777, 497, 498,
! 5, 6, 7, 84, 84, 30, 67, 12, 13, 14,
! 25, 26, 27, 28, 4, 5, 6, 7, 33, 34,
! 35, 36, 12, 13, 14, 30, 85, 807, 808, 85,
! 810, 323, 324, 325, 326, 280, 46, 84, 28, 1,
! 703, 383, 4, 5, 6, 7, 17, 67, 10, 67,
! 12, 13, 14, 67, 717, 718, 83, 83, 67, 84,
! 84, 84, 90, 726, 727, 784, 28, 730, 731, 6,
! 7, 784, 725, 84, 854, 12, 13, 14, 858, 84,
! 83, 83, 88, 84, 784, 84, 327, 328, 329, 330,
! 9, 810, 83, 810, 84, 67, 84, 810, 323, 324,
! 325, 326, 83, 883, 884, 83, 784, 84, 0, 0,
! 810, 5, 6, 7, 392, 614, 615, 411, 12, 13,
! 14, 304, 464, 556, 556, 411, 556, 89, 810, 556,
! 810, 415, 810, 391, 810, 1, 571, 810, 4, 684,
! 6, 7, 4, 388, 6, 7, 12, 13, 14, 810,
! 12, 13, 14, 56, 57, 58, 59, 60, 845, 658,
! 659, 291, 28, 730, 30, 31, 28, 717, 413, 414,
! 512, 513, 431, 595, 516, 334, 191, 192, 193, 194,
! 671, 674, 474, 475, 814, 429, 478, 479, 816, 342,
! 84, 379, 618, 860, 1, 483, 862, 4, 5, 6,
! 7, 5, 6, 7, 464, 12, 13, 14, 12, 13,
! 14, -1, -1, -1, -1, -1, 461, 462, 84, 85,
! 27, 28, -1, 30, 4, 5, 6, 7, -1, -1,
! -1, -1, 12, 13, 14, 476, 477, 44, 580, 480,
! 481, 234, 235, -1, -1, -1, -1, -1, 28, 474,
! 475, -1, 245, 478, 479, -1, -1, 250, 251, -1,
! 67, 68, 255, 256, 257, 258, 259, 260, 261, 262,
! 263, 264, 265, 266, 378, -1, -1, 84, -1, -1,
! 84, 88, 89, -1, -1, -1, 628, 629, -1, -1,
! 632, -1, 5, 6, 7, 637, 638, -1, 640, 12,
! 13, 14, -1, 407, 84, -1, -1, 552, 553, -1,
! -1, -1, 327, 328, 329, 330, -1, 421, 422, -1,
! 4, 5, 6, 7, -1, -1, -1, -1, 12, 13,
! 14, 673, -1, 4, 676, 6, 7, -1, -1, -1,
! -1, 12, 13, 14, 28, -1, 450, 451, 452, 453,
! 642, 643, 644, 645, -1, -1, -1, 28, 650, 651,
! 652, 653, -1, -1, 357, 358, -1, -1, -1, -1,
! 1, 84, 3, 4, 5, 6, 7, -1, 720, 10,
! 722, 12, 13, 14, -1, 630, 631, -1, -1, -1,
! -1, -1, -1, 27, -1, -1, 30, 28, 740, 503,
! 84, 505, 744, -1, -1, 646, 647, 648, 649, -1,
! 44, -1, -1, 654, 655, 656, 657, 642, 643, 644,
! 645, -1, -1, -1, -1, 650, 651, 652, 653, -1,
! 5, 6, 7, 67, 68, 428, -1, 12, 13, 14,
! 433, -1, -1, 785, 786, -1, 788, 440, -1, -1,
! 84, 793, 83, 795, 88, 30, -1, -1, -1, -1,
! 802, 476, 477, -1, -1, 480, 481, -1, -1, 5,
! 6, 7, 717, 718, -1, -1, 12, 13, 14, -1,
! -1, 726, 727, -1, -1, 730, 731, 1, -1, -1,
! 4, 5, 6, 7, 30, -1, 10, -1, 12, 13,
! 14, 4, 5, 6, 7, -1, 499, 611, -1, 12,
! 13, 14, 6, 7, 28, 6, 7, -1, 12, 13,
! 14, 12, 13, 14, -1, 28, -1, 30, 521, -1,
! 1, -1, 3, 4, 779, 780, 781, 8, 9, 30,
! 11, -1, -1, -1, 15, -1, 17, 18, 19, 20,
! 21, 22, 23, 24, 25, 26, 27, -1, 29, -1,
! 31, -1, 33, 34, 35, 36, 37, 671, -1, 83,
! 674, 42, -1, -1, -1, -1, -1, 48, 571, -1,
! 51, 84, -1, -1, -1, 56, 57, 58, -1, 582,
! -1, 62, 63, -1, 587, -1, 67, 4, 5, 6,
! 7, -1, -1, 596, 597, 12, 13, 14, -1, 602,
! -1, -1, -1, 84, -1, 86, 87, -1, 89, -1,
! -1, 28, -1, 30, -1, -1, -1, -1, 1, -1,
! 3, 646, 647, 648, 649, 8, 9, -1, 11, 654,
! 655, 656, 657, 4, 5, 6, 7, -1, -1, -1,
! -1, 12, 13, 14, -1, -1, 29, -1, 31, -1,
! 33, 34, 35, 36, 37, -1, -1, 28, -1, 42,
! 774, -1, -1, -1, 667, 48, -1, 84, 51, 672,
! -1, -1, 675, 56, 57, 58, -1, -1, 681, 62,
! 63, 684, -1, 686, 67, 10, 4, 1, 6, 7,
! 4, -1, 6, 7, 12, 13, 14, -1, 12, 13,
! 14, -1, 816, 86, 87, -1, 89, -1, -1, -1,
! 28, -1, 30, 84, 28, -1, 30, 31, 43, 44,
! 45, -1, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, 850, 851, 741, -1,
! -1, -1, 745, -1, -1, 748, -1, -1, 751, -1,
! 1, 754, 3, 4, 5, 6, 7, 8, 9, -1,
! 11, 12, 13, 14, 15, 90, 17, 18, 19, 20,
! 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
! 31, 32, 33, 34, 35, 36, 37, -1, -1, -1,
! -1, 42, -1, 4, 5, 6, 7, 48, -1, 10,
! 51, 12, 13, 14, -1, 56, 57, 58, -1, -1,
! -1, 62, 63, -1, -1, -1, 67, 28, -1, 30,
! -1, 5, 6, 7, -1, -1, -1, -1, 12, 13,
! 14, -1, -1, 84, 85, 86, 87, 1, 89, 3,
! 4, 5, 6, 7, 8, 9, 30, 11, 12, 13,
! 14, 15, -1, 17, 18, 19, 20, 21, 22, 23,
! 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
! 34, 35, 36, 37, 5, 6, 7, -1, 42, -1,
! -1, 12, 13, 14, 48, -1, -1, 51, 5, 6,
! 7, -1, 56, 57, 58, 12, 13, 14, 62, 63,
! -1, -1, -1, 67, 4, 5, 6, 7, 5, 6,
! 7, -1, 12, 13, 14, 12, 13, 14, -1, -1,
! 84, -1, 86, 87, 1, 89, 3, 4, 28, -1,
! 30, 8, 9, 30, 11, -1, -1, -1, 15, -1,
! 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
! 27, -1, 29, -1, 31, -1, 33, 34, 35, 36,
! 37, -1, -1, -1, -1, 42, -1, -1, -1, 6,
! 7, 48, -1, -1, 51, 12, 13, 14, -1, 56,
! 57, 58, -1, -1, 84, 62, 63, -1, -1, 1,
! 67, 3, 4, 30, 6, 7, 8, 9, -1, 11,
! 12, 13, 14, -1, -1, -1, -1, 84, -1, 86,
! 87, -1, 89, -1, -1, -1, 28, 29, 30, 31,
! -1, 33, 34, 35, 36, 37, 5, 6, 7, -1,
! 42, -1, -1, 12, 13, 14, 48, -1, -1, 51,
! 5, 6, 7, -1, 56, 57, 58, 12, 13, 14,
! 62, 63, -1, -1, 1, 67, 3, 4, -1, -1,
! -1, 8, 9, -1, 11, -1, -1, -1, -1, -1,
! 4, 5, 6, 7, 86, 87, -1, 89, 12, 13,
! 14, -1, 29, -1, 31, -1, 33, 34, 35, 36,
! 37, -1, -1, -1, 28, 42, 30, -1, -1, -1,
! -1, 48, 62, 63, 51, 65, 66, 67, 68, 56,
! 57, 58, -1, -1, -1, 62, 63, -1, -1, 66,
! 67, 68, 1, -1, 3, 4, -1, -1, -1, 8,
! 9, -1, 11, -1, -1, -1, -1, -1, 85, 86,
! 87, -1, 89, 54, 55, 56, 57, 58, 59, 60,
29, -1, 31, -1, 33, 34, 35, 36, 37, -1,
! -1, -1, -1, 42, -1, -1, -1, -1, -1, 48,
-1, -1, 51, -1, -1, -1, -1, 56, 57, 58,
-1, -1, -1, 62, 63, -1, -1, 66, 67, 68,
! 1, -1, 3, -1, -1, -1, -1, 8, 9, -1,
11, -1, -1, -1, -1, -1, 85, 86, 87, -1,
89, -1, -1, -1, -1, -1, -1, -1, 29, -1,
31, -1, 33, 34, 35, 36, 37, -1, -1, -1,
! -1, 42, -1, 44, -1, -1, -1, 48, -1, -1,
51, -1, -1, -1, -1, 56, 57, 58, -1, -1,
-1, 62, 63, -1, -1, 66, 67, 68, 1, -1,
3, -1, -1, -1, -1, 8, 9, -1, 11, -1,
! -1, 4, 5, 6, 7, 86, 87, -1, 89, 12,
! 13, 14, -1, -1, -1, -1, 29, -1, 31, -1,
! 33, 34, 35, 36, 37, 28, -1, 30, -1, 42,
! -1, -1, -1, -1, -1, 48, -1, -1, 51, -1,
-1, -1, -1, 56, 57, 58, -1, -1, -1, 62,
! 63, -1, 1, -1, 67, 4, 5, 6, 7, -1,
! -1, -1, -1, 12, 13, 14, -1, -1, -1, -1,
! -1, -1, -1, 86, 87, -1, 89, -1, 27, 28,
! 1, 30, -1, 4, 5, 6, 7, -1, -1, -1,
! -1, 12, 13, 14, -1, 44, -1, -1, -1, 1,
! -1, 3, 4, 5, 6, 7, 27, 28, -1, 30,
! 12, 13, 14, -1, -1, -1, -1, -1, 67, 68,
! -1, -1, -1, 44, -1, 27, 28, -1, 30, 31,
! -1, -1, -1, -1, -1, 84, -1, -1, -1, 88,
! 89, -1, -1, -1, 3, 4, 5, 6, 7, 8,
! 9, -1, 11, 12, 13, 14, 58, -1, -1, -1,
! -1, -1, -1, 84, -1, 67, -1, 88, 89, 28,
! 29, 30, 31, -1, 33, 34, 35, 36, 37, -1,
! -1, -1, 84, 42, -1, 3, -1, 5, -1, 48,
! 8, 9, 51, 11, -1, -1, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, -1, -1, 67, -1,
! -1, 29, -1, 31, -1, 33, 34, 35, 36, 37,
! -1, -1, -1, -1, 42, -1, -1, 86, 87, -1,
! 48, 90, -1, 51, -1, -1, -1, -1, 56, 57,
! 58, -1, -1, -1, 62, 63, -1, 3, -1, 67,
! -1, -1, 8, 9, -1, 11, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 86, 87,
! -1, -1, 90, 29, -1, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, -1, 3, -1,
! -1, -1, 48, 8, 9, 51, 11, -1, -1, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, -1, -1, 29, -1, 31, -1, 33, 34,
! 35, 36, 37, -1, -1, -1, -1, 42, -1, -1,
! 86, 87, -1, 48, 90, -1, 51, -1, -1, -1,
! -1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
! -1, -1, 67, -1, -1, -1, -1, -1, 3, 4,
! 5, 6, 7, 8, 9, -1, 11, 12, 13, 14,
! -1, 86, 87, -1, -1, 90, 21, 22, 23, 24,
! 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
! 35, 36, 37, -1, -1, -1, -1, 42, -1, 4,
! 5, 6, 7, 48, -1, -1, 51, 12, 13, 14,
! -1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
! -1, -1, 67, 28, -1, 30, -1, 3, 4, -1,
! -1, -1, 8, 9, -1, 11, -1, -1, -1, 84,
! -1, 86, 87, -1, 89, 21, 22, 23, 24, 25,
! 26, 27, -1, 29, -1, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, -1, 4, 5,
! 6, 7, 48, -1, -1, 51, 12, 13, 14, 84,
! 56, 57, 58, -1, -1, -1, 62, 63, 3, -1,
! -1, 67, 28, 8, 9, -1, 11, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 84, -1,
! 86, 87, -1, 89, 29, -1, 31, -1, 33, 34,
! 35, 36, 37, -1, -1, -1, -1, 42, -1, -1,
-1, -1, -1, 48, -1, -1, 51, -1, -1, -1,
-1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
-1, -1, 67, 3, 4, 5, 6, 7, 8, 9,
-1, 11, 12, 13, 14, -1, -1, 4, 5, 6,
7, 86, 87, -1, 89, 12, 13, 14, 28, 29,
30, 31, -1, 33, 34, 35, 36, 37, -1, -1,
! -1, 28, 42, 30, -1, -1, -1, -1, 48, -1,
! -1, 51, -1, -1, -1, -1, 56, 57, 58, -1,
! -1, -1, 62, 63, -1, 3, 4, 67, 6, 7,
! 8, 9, -1, 11, 12, 13, 14, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, 86, 87, -1, -1,
! 28, 29, 30, 31, -1, 33, 34, 35, 36, 37,
! -1, -1, -1, -1, 42, -1, 3, -1, -1, -1,
48, 8, 9, 51, 11, -1, -1, -1, 56, 57,
58, -1, -1, -1, 62, 63, -1, -1, -1, 67,
-1, -1, 29, -1, 31, -1, 33, 34, 35, 36,
! 37, -1, -1, -1, -1, 42, -1, 3, 86, 87,
-1, 48, 8, 9, 51, 11, -1, -1, -1, 56,
57, 58, -1, -1, -1, 62, 63, -1, -1, -1,
67, -1, -1, 29, -1, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, 84, 3, 86,
87, -1, 48, 8, 9, 51, 11, -1, -1, -1,
56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
-1, 67, -1, -1, 29, -1, 31, -1, 33, 34,
--- 660,1556 ----
4, 0, 0, 9, 4, 0, 0, 8, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 3, 1, 2, 2, 2, 2, 2, 4,
! 2, 4, 2, 2, 1, 1, 1, 1, 4, 1,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
! 3, 3, 0, 4, 0, 4, 0, 0, 7, 0,
! 5, 3, 3, 1, 1, 1, 1, 0, 7, 3,
! 3, 3, 3, 4, 6, 8, 6, 4, 3, 3,
! 2, 2, 1, 2, 0, 1, 2, 3, 1, 1,
! 2, 2, 4, 4, 2, 2, 3, 0, 1, 4,
! 4, 3, 3, 2, 2, 1, 2, 2, 2, 2,
! 2, 1, 2, 1, 2, 2, 2, 2, 2, 2,
! 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 2, 2, 2, 2, 2, 1, 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, 2, 2, 2, 2, 2, 2, 2,
! 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
! 1, 1, 1, 1, 1, 1, 1, 4, 4, 1,
! 4, 1, 4, 0, 4, 0, 6, 3, 0, 6,
! 3, 0, 1, 1, 2, 6, 1, 3, 0, 1,
! 4, 6, 4, 1, 1, 1, 1, 1, 0, 4,
! 1, 0, 2, 1, 3, 3, 2, 0, 4, 1,
! 0, 4, 1, 1, 1, 2, 2, 5, 3, 0,
! 0, 7, 0, 0, 7, 1, 1, 4, 3, 2,
! 3, 1, 1, 1, 3, 2, 1, 3, 2, 3,
! 3, 4, 3, 4, 3, 2, 1, 1, 2, 1,
! 2, 1, 2, 0, 7, 5, 0, 7, 5, 0,
! 8, 0, 7, 2, 2, 2, 0, 1, 0, 1,
! 1, 2, 0, 3, 2, 3, 4, 3, 1, 1,
! 2, 1, 4, 1, 4, 4, 6, 5, 4, 6,
! 5, 1, 3, 1, 1, 3, 0, 3, 0, 1,
! 0, 1, 2, 1, 1, 1, 3, 2, 3, 4,
! 3, 2, 2, 1, 3, 4, 2, 3, 3, 4,
! 4, 5, 5, 1, 1, 1, 1, 1, 2, 2,
! 2, 2, 1, 2, 2, 2, 1, 2, 2, 2,
! 2, 1, 2, 1, 1, 1, 1, 2, 0, 0,
! 0, 0, 0, 1, 1, 2, 3, 1, 2, 1,
! 1, 5, 1, 1, 2, 2, 2, 2, 0, 5,
! 0, 4, 0, 0, 1, 2, 3, 3, 3, 0,
! 4, 1, 3, 0, 0, 7, 5, 2, 0, 0,
! 0, 0, 12, 0, 6, 2, 1, 1, 2, 3,
! 2, 2, 2, 3, 6, 8, 10, 12, 3, 4,
! 1, 3, 5, 2, 5, 0, 1, 0, 1, 0,
! 1, 1, 3, 4, 7, 1, 3, 0, 3, 2,
! 0, 0, 6, 2, 0, 1, 1, 3, 1, 3,
! 4, 4, 3, 4, 3, 4, 4, 3, 4, 3,
! 1, 0, 3, 1, 2, 1, 3, 1, 3, 1
};
static const short yydefact[] = { 3,
! 5, 0, 0, 0, 267, 158, 264, 126, 352, 348,
! 350, 0, 57, 0, 560, 17, 4, 8, 7, 0,
! 0, 211, 212, 213, 214, 203, 204, 205, 206, 215,
! 216, 217, 218, 207, 208, 209, 210, 118, 118, 0,
! 134, 141, 261, 263, 262, 132, 284, 0, 0, 0,
! 266, 265, 0, 6, 15, 16, 353, 349, 351, 0,
! 0, 0, 347, 259, 282, 0, 272, 0, 161, 127,
! 139, 145, 129, 162, 128, 140, 146, 168, 130, 151,
! 156, 133, 169, 131, 152, 157, 179, 135, 137, 143,
! 142, 180, 136, 138, 144, 194, 147, 149, 154, 153,
! 195, 148, 150, 155, 163, 159, 177, 186, 165, 164,
! 160, 178, 187, 170, 166, 192, 201, 172, 171, 167,
! 193, 202, 181, 173, 175, 184, 183, 182, 174, 176,
! 185, 196, 188, 190, 199, 198, 197, 189, 191, 200,
! 0, 0, 14, 285, 30, 31, 373, 364, 373, 365,
! 362, 366, 10, 84, 85, 103, 55, 56, 0, 0,
! 0, 0, 0, 87, 0, 32, 34, 33, 0, 35,
! 36, 0, 37, 38, 0, 0, 39, 58, 0, 0,
! 60, 42, 44, 86, 0, 0, 289, 0, 239, 240,
! 241, 242, 235, 236, 237, 238, 397, 0, 231, 232,
! 233, 234, 260, 0, 0, 283, 11, 282, 29, 0,
! 282, 0, 0, 282, 346, 332, 259, 282, 0, 270,
! 0, 326, 327, 0, 0, 0, 0, 354, 0, 357,
! 0, 360, 53, 54, 0, 0, 0, 48, 45, 0,
! 465, 0, 0, 47, 0, 0, 0, 49, 0, 51,
! 0, 0, 77, 75, 73, 0, 0, 0, 0, 0,
! 0, 0, 0, 0, 0, 0, 0, 101, 102, 0,
! 0, 40, 0, 104, 0, 461, 453, 0, 46, 295,
! 296, 297, 294, 0, 287, 290, 268, 399, 269, 345,
! 0, 0, 119, 0, 552, 343, 0, 0, 417, 0,
! 0, 0, 27, 0, 473, 110, 474, 281, 0, 0,
! 13, 282, 21, 0, 282, 282, 330, 12, 25, 0,
! 282, 380, 375, 231, 232, 233, 234, 227, 228, 229,
! 230, 118, 118, 372, 0, 373, 282, 373, 394, 395,
! 369, 392, 0, 0, 0, 0, 91, 90, 0, 9,
! 43, 0, 0, 83, 82, 0, 0, 0, 0, 71,
! 72, 70, 69, 68, 66, 67, 61, 62, 63, 64,
! 65, 100, 99, 0, 41, 0, 93, 0, 0, 454,
! 455, 92, 0, 289, 40, 259, 282, 398, 400, 405,
! 404, 406, 414, 344, 273, 274, 0, 0, 0, 0,
! 419, 415, 0, 0, 418, 0, 448, 473, 112, 107,
! 111, 0, 279, 331, 0, 0, 19, 278, 329, 23,
! 356, 473, 473, 374, 381, 0, 359, 0, 0, 370,
! 0, 369, 0, 0, 0, 88, 59, 50, 52, 0,
! 0, 76, 74, 94, 98, 558, 0, 464, 433, 463,
! 473, 473, 473, 473, 0, 442, 0, 474, 428, 437,
! 456, 286, 288, 84, 0, 408, 528, 413, 282, 412,
! 275, 0, 556, 536, 223, 224, 219, 220, 225, 226,
! 221, 222, 118, 118, 554, 0, 537, 539, 553, 0,
! 421, 0, 0, 420, 416, 474, 108, 118, 118, 0,
! 328, 271, 274, 473, 276, 473, 376, 382, 474, 378,
! 384, 474, 282, 282, 396, 393, 282, 0, 0, 0,
! 0, 0, 78, 81, 457, 0, 434, 429, 438, 435,
! 430, 439, 474, 431, 440, 436, 432, 441, 443, 450,
! 451, 291, 0, 293, 407, 409, 0, 0, 528, 411,
! 534, 551, 401, 401, 530, 531, 0, 555, 0, 422,
! 423, 0, 115, 0, 116, 0, 301, 299, 298, 280,
! 474, 0, 474, 282, 377, 282, 0, 355, 358, 363,
! 282, 95, 0, 97, 314, 84, 0, 0, 311, 0,
! 313, 0, 367, 304, 310, 0, 0, 0, 559, 451,
! 462, 267, 0, 0, 0, 0, 0, 0, 516, 511,
! 460, 473, 0, 117, 118, 118, 0, 0, 449, 498,
! 478, 479, 0, 0, 410, 529, 337, 259, 282, 282,
! 333, 334, 282, 548, 402, 405, 259, 282, 282, 550,
! 282, 538, 211, 212, 213, 214, 203, 204, 205, 206,
! 215, 216, 217, 218, 207, 208, 209, 210, 118, 118,
! 540, 557, 0, 28, 458, 0, 0, 0, 0, 277,
! 0, 473, 0, 282, 473, 0, 282, 361, 0, 317,
! 0, 0, 308, 89, 0, 303, 0, 316, 307, 79,
! 0, 514, 501, 502, 503, 0, 0, 0, 517, 0,
! 474, 499, 0, 0, 124, 469, 484, 471, 489, 0,
! 482, 0, 0, 452, 466, 125, 292, 408, 528, 546,
! 282, 336, 282, 339, 547, 403, 408, 528, 549, 532,
! 401, 401, 459, 113, 114, 0, 20, 24, 383, 474,
! 282, 0, 386, 385, 282, 0, 389, 96, 0, 319,
! 0, 0, 305, 306, 0, 512, 504, 0, 509, 0,
! 0, 0, 122, 320, 0, 123, 323, 0, 0, 451,
! 0, 0, 0, 468, 473, 467, 488, 0, 500, 340,
! 341, 0, 335, 338, 0, 282, 282, 543, 282, 545,
! 300, 0, 388, 282, 391, 282, 0, 312, 309, 0,
! 510, 0, 282, 120, 0, 121, 0, 0, 0, 0,
! 518, 0, 483, 451, 452, 475, 473, 0, 342, 533,
! 541, 542, 544, 387, 390, 318, 513, 520, 0, 515,
! 321, 324, 0, 0, 472, 519, 497, 490, 0, 494,
! 481, 477, 476, 0, 0, 0, 0, 521, 522, 505,
! 473, 473, 470, 485, 518, 496, 451, 487, 0, 0,
! 520, 0, 0, 474, 474, 451, 0, 495, 0, 0,
! 0, 506, 523, 0, 0, 486, 491, 524, 0, 0,
! 0, 322, 325, 518, 0, 526, 0, 507, 0, 0,
! 0, 0, 492, 525, 508, 527, 451, 493, 0, 0,
! 0
};
! static const short yydefgoto[] = { 899,
! 1, 2, 3, 17, 18, 19, 314, 504, 320, 506,
! 213, 408, 590, 175, 242, 374, 177, 178, 179, 180,
! 20, 181, 182, 359, 358, 356, 598, 357, 183, 522,
! 184, 303, 304, 305, 497, 449, 21, 292, 614, 189,
! 190, 191, 192, 193, 194, 195, 196, 30, 31, 32,
! 33, 34, 35, 36, 37, 38, 39, 483, 484, 332,
! 203, 197, 40, 204, 41, 42, 43, 44, 45, 219,
! 66, 214, 220, 572, 67, 500, 293, 206, 47, 284,
! 285, 286, 570, 668, 592, 593, 594, 752, 595, 682,
! 596, 597, 763, 805, 851, 766, 807, 852, 503, 222,
! 630, 631, 632, 223, 48, 49, 50, 51, 336, 338,
! 343, 231, 52, 686, 431, 226, 227, 334, 507, 510,
! 508, 511, 341, 342, 198, 288, 388, 634, 635, 390,
! 391, 392, 215, 450, 451, 452, 453, 454, 455, 306,
! 277, 601, 775, 779, 379, 380, 381, 664, 619, 278,
! 457, 185, 665, 711, 712, 768, 713, 770, 307, 412,
! 815, 776, 816, 817, 714, 814, 769, 866, 771, 855,
! 884, 897, 857, 838, 621, 622, 700, 839, 847, 848,
! 849, 887, 468, 548, 485, 641, 785, 486, 487, 661,
! 488, 553, 296, 398, 489, 490, 447, 186
};
! static const short yypact[] = { 57,
! 92, 986, 986, 379,-32768,-32768,-32768,-32768, 109, 109,
! 109, 105,-32768, 123,-32768,-32768,-32768,-32768,-32768, 165,
! 316, 509, 1138, 1295, 1166, 311, 1055, 833, 1206, 1326,
! 1453, 1379, 1540, 1605, 1298, 1625, 1591,-32768,-32768, 63,
! -32768,-32768,-32768,-32768,-32768, 109,-32768, 71, 80, 125,
! -32768,-32768, 986,-32768,-32768,-32768, 109, 109, 109, 2684,
! 176, 2602,-32768, 129, 109, 203,-32768, 896,-32768,-32768,
! -32768,-32768, 109,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768, 109,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! 109,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 109,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 109,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 109,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768, 109,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768, 109,-32768,-32768,-32768,-32768,
! 206, 316,-32768,-32768,-32768,-32768,-32768, 42,-32768, 162,
! -32768, 189,-32768,-32768,-32768,-32768,-32768,-32768, 2684, 2684,
! 230, 238, 246,-32768, 483,-32768,-32768,-32768, 2684,-32768,
! -32768, 1797,-32768,-32768, 2684, 254, 270,-32768, 2725, 2766,
! -32768, 3099, 1053, 355, 1471, 2684, 908, 284, 2385, 3084,
! 2553, 3095, 690, 485, 732, 605,-32768, 295, 242, 373,
! 279, 409,-32768, 316, 316, 109,-32768, 109,-32768, 323,
! 109, 2131, 461, 109,-32768,-32768, 129, 109, 293,-32768,
! 1080, 504, 513, 304, 1045, 349, 489,-32768, 358,-32768,
! 542,-32768,-32768,-32768, 2684, 2684, 3026,-32768,-32768, 363,
! -32768, 369, 371,-32768, 387, 2684, 1797,-32768, 1797,-32768,
! 2684, 2684, 464,-32768,-32768, 2684, 2684, 2684, 2684, 2684,
! 2684, 2684, 2684, 2684, 2684, 2684, 2684,-32768,-32768, 483,
! 483, 2684, 2684,-32768, 405,-32768, 486, 424,-32768,-32768,
! -32768,-32768,-32768, 201,-32768, 457,-32768, 390,-32768, 513,
! 186, 316,-32768, 529,-32768,-32768, 2602, 2234,-32768, 466,
! 2172, 478,-32768, 356, 114,-32768,-32768, 532, 206, 206,
! -32768, 109,-32768, 461, 109, 109,-32768,-32768,-32768, 461,
! 109,-32768,-32768, 2385, 3084, 2553, 3095, 690, 485, 732,
! 605,-32768, 499, 502, 1413,-32768, 109,-32768,-32768, 546,
! 506,-32768, 542, 2872, 2890, 508,-32768,-32768, 2475,-32768,
! 3099, 517, 525, 3099, 3099, 2684, 568, 2684, 2684, 2437,
! 3062, 1208, 2564, 983, 879, 879, 288, 288,-32768,-32768,
! -32768,-32768,-32768, 555, 270, 551,-32768, 483, 1558, 486,
! -32768,-32768, 562, 908, 2807, 129, 109,-32768,-32768,-32768,
! -32768, 535,-32768,-32768,-32768, 99, 33, 1230, 557, 2684,
! -32768,-32768, 2684, 2275,-32768, 559,-32768,-32768,-32768,-32768,
! -32768, 2454,-32768, 504, 192, 206,-32768, 581,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768, 566,-32768, 570, 2684, 483,
! 572, 506, 3026, 2684, 3026,-32768,-32768, 564, 564, 616,
! 2684, 3128, 2197,-32768,-32768,-32768, 314, 478,-32768,-32768,
! 94, 98, 112, 132, 662,-32768, 580,-32768,-32768,-32768,
! -32768,-32768,-32768, 326, 585, 390, 390,-32768, 109,-32768,
! -32768, 588,-32768,-32768, 1709, 3030, 1194, 864, 1875, 3055,
! 1712, 989,-32768,-32768,-32768, 591, 338,-32768,-32768, 327,
! -32768, 586, 590,-32768,-32768,-32768,-32768, 598, 601, 1313,
! -32768,-32768, 659,-32768,-32768,-32768, 602,-32768,-32768, 603,
! -32768,-32768, 109, 109, 3099,-32768, 109, 604, 615, 2914,
! 627, 1862,-32768, 3115,-32768, 483,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! 2345,-32768, 2684,-32768,-32768,-32768, 628, 753,-32768,-32768,
! -32768,-32768, 383, 178,-32768,-32768, 945,-32768, 696,-32768,
! -32768, 69,-32768, 206,-32768, 316,-32768,-32768, 3099,-32768,
! -32768, 1313,-32768, 109, 253, 109, 362,-32768,-32768,-32768,
! 109,-32768, 2684,-32768,-32768, 671, 483, 2684,-32768, 684,
! 3099, 646, 644,-32768,-32768, 167, 1998, 2684,-32768, 2414,
! -32768, 687, 2684, 694, 652, 657, 2643, 141, 735,-32768,
! -32768,-32768, 663,-32768,-32768,-32768, 666, 704, 658,-32768,
! -32768,-32768, 2540, 352,-32768,-32768,-32768, 129, 109, 109,
! 538, 553, 158,-32768,-32768, 109, 129, 109, 158,-32768,
! 109,-32768, 1709, 3030, 2076, 3059, 1194, 864, 1772, 1536,
! 1875, 3055, 2144, 3072, 1712, 989, 1837, 1678,-32768,-32768,
! -32768,-32768, 672,-32768,-32768, 416, 421, 1862, 69,-32768,
! 69,-32768, 2684, 88,-32768, 2684, 329,-32768, 2932,-32768,
! 1228, 1862,-32768,-32768, 1930,-32768, 2066,-32768,-32768, 3115,
! 2852,-32768,-32768,-32768,-32768, 668, 2684, 680,-32768, 702,
! -32768,-32768, 206, 316,-32768,-32768,-32768,-32768,-32768, 705,
! 755, 1645, 118,-32768,-32768,-32768,-32768, 383, 336,-32768,
! 109,-32768, 109,-32768,-32768, 109, 178, 178,-32768,-32768,
! 383, 178,-32768,-32768,-32768, 693,-32768,-32768,-32768,-32768,
! 2969, 2684,-32768,-32768, 2969, 2684,-32768,-32768, 2684,-32768,
! 695, 2066,-32768,-32768, 2684,-32768,-32768, 703,-32768, 2684,
! 742, 469,-32768, 268, 475,-32768, 548, 722, 724,-32768,
! 726, 2684, 1732,-32768,-32768,-32768,-32768, 2684,-32768, 538,
! 553, 393,-32768,-32768, 753, 109, 158,-32768, 158,-32768,
! -32768, 253,-32768, 2969,-32768, 2969, 2828,-32768,-32768, 3081,
! -32768, 52, 109,-32768, 461,-32768, 461, 2684, 2684, 777,
! 2540, 713,-32768,-32768,-32768,-32768,-32768, 714,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768, 121, 720,-32768,
! -32768,-32768, 715, 723,-32768,-32768,-32768,-32768, 729,-32768,
! -32768,-32768,-32768, 731, 740, 483, 97, 728,-32768,-32768,
! -32768,-32768,-32768,-32768, 2684,-32768,-32768,-32768, 2684, 730,
! 121, 738, 121,-32768,-32768,-32768, 739,-32768, 749, 824,
! 155,-32768,-32768, 672, 672,-32768,-32768,-32768, 767, 529,
! 751,-32768,-32768, 2684, 2684, 355, 389,-32768, 759, 760,
! 764, 529,-32768,-32768,-32768, 355,-32768,-32768, 844, 851,
! -32768
};
static const short yypgoto[] = {-32768,
! -32768,-32768,-32768, 87,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768, 101,-32768, -60, 468, -253, 443,-32768,-32768,
! -32768, -82, 769,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -293, -299, 549,-32768,-32768, 78, 68, -282, -572, 7,
! 41, 38, 44, 1, 20, 47, 50, -364, -336, 299,
! 302, -330, -326, 303, 305, -496, -461, 454, 456,-32768,
! -161, -127, -503, -200, 503, 683, 748, 774,-32768, -532,
! -135, -210, 470,-32768, 589,-32768, 96, 3, 64,-32768,
! 500,-32768, 315,-32768, -420,-32768, 204,-32768, -533,-32768,
! -32768, 292,-32768,-32768,-32768,-32768,-32768,-32768, -133, 319,
! 160, 180, -85, 202,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768, 472, -94,-32768, 583,-32768,-32768,
! 233, 232, 573, 492, -84,-32768,-32768, -526, -272, -397,
! -442,-32768, 465,-32768,-32768,-32768,-32768,-32768,-32768, -268,
! -32768,-32768, -452, 104,-32768,-32768, 545, -343,-32768, 308,
! -32768,-32768, -521,-32768,-32768,-32768,-32768,-32768, 442, -395,
! 111, -689, -172, -150,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768, -743, 84,-32768,
! 90,-32768, 487,-32768, -522,-32768,-32768,-32768,-32768,-32768,
! -32768, 476, -298,-32768,-32768,-32768,-32768, 56
};
! #define YYLAST 3188
! static const short yytable[] = { 176,
! 397, 188, 26, 26, 46, 46, 224, 221, 22, 22,
! 315, 57, 58, 59, 417, 389, 309, 419, 375, 620,
! 420, 27, 27, 546, 73, 626, 82, 640, 91, 416,
! 100, 666, 109, 479, 118, 409, 127, 617, 136, 24,
! 24, 274, 23, 23, 615, 25, 25, 479, 28, 28,
! 716, 29, 29, 26, 229, 46, -1, 53, 53, 22,
! 659, 480, 541, 689, 46, 333, 46, 481, 545, 663,
! 199, 482, 27, 145, 146, 480, 233, 234, 620, 616,
! 810, 481, 145, 146, 301, 482, 239, 243, 618, 54,
! 24, -2, 244, 23, -444, 660, 25, 828, -445, 28,
! 562, 201, 29, 279, 200, 141, 142, 202, 53, 144,
! 456, 867, -446, 575, -106, 471, 577, 14, 777, 617,
! 144, 144, 144, 410, 841, 210, 615, 145, 146, 845,
! 228, 375, -447, 742, 829, 8, 144, 600, 14, 153,
! 889, 733, 861, 145, 146, 144, 143, 618, 148, 150,
! 152, 300, 346, 754, 144, 636, 636, 611, 14, 147,
! 205, 616, 352, 144, 353, 211, 212, 868, 149, 400,
! 762, 60, 144, 333, 46, 669, 876, 671, -424, 862,
! 63, 144, -425, 479, 778, 466, 539, 14, 846, 61,
! 144, 73, 651, 82, 547, 91, -426, 100, 697, 144,
! 880, 73, -106, 82, 788, 790, 459, 898, 63, 216,
! 687, 480, 376, 151, 46, 239, -427, 481, 799, 46,
! 652, 482, 68, 199, 211, 212, 655, 328, 460, 46,
! 656, 62, 587, 324, 588, 637, 399, 881, 837, 46,
! 406, 426, 187, 428, 638, 212, 329, 736, 70, 46,
! 230, 46, 211, 212, 201, 63, 216, 200, 316, 212,
! 202, 751, 820, 217, 326, 238, 437, 325, 394, 144,
! 327, 14, 218, 330, 501, 546, 331, 232, 528, 531,
! 534, 537, 335, 383, 546, 79, 207, 283, 384, 624,
! 208, 672, 315, 675, 210, 440, 235, -274, 673, 46,
! 529, 532, 535, 538, 236, 761, 295, 617, 14, 308,
! 217, -274, 237, 310, 615, 87, 7, 88, 63, 218,
! 545, 239, 9, 10, 11, 737, 73, 738, 82, 545,
! 91, 340, 100, 636, 636, 328, 245, 46, 63, 492,
! 14, 324, 493, 225, 792, 265, 266, 267, 519, 616,
! 521, -274, 882, 883, 329, -274, 302, 246, 14, -109,
! -109, -109, -109, 274, 63, -109, 287, -109, -109, -109,
! 372, 373, 326, 64, 746, 325, 311, 289, 327, 75,
! 312, 330, 65, -109, 331, 63, 627, 318, 46, 294,
! 335, 208, 199, 628, -247, 211, 212, 525, 477, 422,
! 423, 526, 629, 212, 475, 290, 291, 676, 542, 558,
! 418, 295, 477, 543, 559, 84, 421, 478, 475, 64,
! 479, 556, 783, 201, 784, 557, 200, 718, 65, 202,
! 667, 478, 427, 321, 717, 46, 727, 46, 476, 246,
! 628, 674, 337, 340, -109, 347, 547, 386, 480, 629,
! 212, 348, 476, 349, 481, 547, 387, 212, 482, 723,
! 212, 302, 55, 56, -473, -473, -473, -473, 874, 875,
! 350, 891, -473, -473, -473, 819, 892, 73, 446, 91,
! 613, 109, 467, 127, 283, 145, 146, 377, -473, 322,
! 7, 93, 5, 396, 7, 8, 9, 10, 11, 734,
! 9, 10, 11, 312, 735, 831, 382, 832, 208, -80,
! 290, 291, 5, 69, 7, 70, 13, 378, 14, 15,
! 9, 10, 11, 385, 71, 76, 80, 85, 527, 530,
! 340, 536, 107, 112, 116, 121, 13, 156, 14, 613,
! 279, 26, 339, 46, 145, 146, 696, 22, 477, -105,
! 552, 552, 804, 315, 475, 402, 312, 647, 806, 46,
! 27, 407, 208, 643, 549, 564, 566, 478, 765, 764,
! 316, 212, 323, -371, 210, 413, 648, -274, 24, 211,
! 212, 23, -379, -379, 25, 424, 886, 28, 476, 429,
! 29, -274, -243, 430, 645, 435, 623, 644, 896, 438,
! 646, 469, 212, 649, 721, 212, 650, 439, 578, 579,
! 7, 102, 580, 441, 211, 212, 9, 10, 11, 723,
! 212, 248, 250, 26, 505, 46, 599, 414, 415, 22,
! 46, -274, 781, 782, 199, -274, 758, 444, 726, 46,
! 445, 612, 27, 199, 462, 73, 491, 82, 495, 91,
! 513, 100, 436, 109, 514, 118, 517, 127, 674, 136,
! 24, 523, 302, 23, 540, 201, 25, 544, 200, 28,
! 551, 202, 29, 555, 201, 560, 678, 200, 623, 561,
! 202, 563, 703, 704, 565, 210, 317, 680, 581, 574,
! 576, 71, 76, 80, 85, 7, 88, 582, 662, 802,
! 612, 9, 10, 11, 72, 77, 81, 86, 698, 584,
! 625, 812, 108, 113, 117, 122, -30, 818, 706, 14,
! 707, 708, 709, 710, 719, 720, 731, 732, 725, 683,
! 684, 685, -31, 728, 729, 693, 730, 7, 97, 692,
! 694, 699, 276, 9, 10, 11, 702, 833, 834, 705,
! 836, 757, 393, 472, 633, 639, 5, 6, 7, 8,
! 611, 14, 474, 759, 9, 10, 11, 396, 760, 743,
! 773, 772, 747, 89, 94, 98, 103, 791, 677, 798,
! 13, 125, 130, 134, 139, 477, 801, 803, 808, 144,
! 809, 475, 811, 835, 836, 840, 844, 853, 869, 90,
! 95, 99, 104, 850, 478, 854, 859, 126, 131, 135,
! 140, 26, 856, 46, 858, 863, 295, 22, 295, 870,
! 458, 872, 877, 836, 890, 476, 71, 76, 80, 85,
! 27, 878, 879, 885, 888, -535, 793, 96, 7, 97,
! 795, 893, 894, 900, 9, 10, 11, 895, 24, 496,
! 901, 23, 465, 411, 25, 653, 470, 28, 654, 657,
! 29, 658, 14, 509, 512, 498, 623, 499, 92, 7,
! 93, 72, 77, 81, 86, 9, 10, 11, 317, 317,
! 395, 821, 822, 463, 823, 502, 670, 688, 753, 824,
! 786, 825, 458, 458, 533, 458, 209, 780, 830, -26,
! -26, -26, -26, 518, 739, 767, 744, -26, -26, -26,
! 145, 146, 280, 281, 282, 432, -249, 425, 842, 290,
! 291, 516, 210, -26, 461, -274, 715, 843, 290, 291,
! 393, 393, 787, 789, 263, 264, 265, 266, 267, -274,
! 89, 94, 98, 103, 871, 571, 860, 573, 5, 6,
! 7, 8, 873, 0, 642, 550, 9, 10, 11, 554,
! 0, 0, 211, 212, 0, 0, 90, 95, 99, 104,
! 0, 0, 13, 0, 14, 0, 0, 71, 76, -274,
! 0, 107, 112, -274, -26, 0, 4, 0, -118, 5,
! 6, 7, 8, 128, 7, 129, 0, 9, 10, 11,
! 9, 10, 11, 344, 345, 0, 72, 77, 81, 86,
! 0, 0, 12, 13, 351, 14, 15, 393, 393, 354,
! 355, 0, 0, 0, 360, 361, 362, 363, 364, 365,
! 366, 367, 368, 369, 370, 371, 261, 262, 263, 264,
! 265, 266, 267, -118, 0, 319, 0, 0, -22, -22,
! -22, -22, -118, 701, 0, 0, -22, -22, -22, 92,
! 7, 93, 0, 0, 0, 0, 9, 10, 11, 16,
! 0, 210, -22, 0, -274, 89, 94, 98, 103, 0,
! 313, 0, 0, -18, -18, -18, -18, 0, -274, 0,
! 0, -18, -18, -18, 0, 722, 724, 0, 0, 0,
! 0, 90, 95, 99, 104, 0, 210, -18, 0, -274,
! 0, 211, 212, 740, 268, 269, 512, 270, 271, 272,
! 273, 0, 0, -274, 0, 0, 442, 443, -274, 0,
! 0, 0, -274, -22, 0, 0, 0, 0, -248, 0,
! 0, 5, 74, 7, 75, 71, 76, 80, 85, 9,
! 10, 11, 0, 107, 112, 116, 121, 72, 77, 0,
! 0, 108, 113, -274, 0, 13, 0, -274, -18, 5,
! 83, 7, 84, 0, 0, 0, 0, 9, 10, 11,
! 0, 0, 393, 393, 0, 0, 0, 0, 0, 0,
! 0, 393, 393, 13, 0, 393, 393, 515, 87, 7,
! 88, 0, 520, 0, 0, 9, 10, 11, 0, 524,
! 101, 7, 102, 0, 0, 0, 533, 9, 10, 11,
! 0, -244, 0, 14, 89, 94, 0, 0, 125, 130,
! 472, 0, 473, 5, 6, 7, 8, 749, 0, 474,
! 0, 9, 10, 11, 722, 724, 724, 0, 0, -246,
! 90, 95, 0, 0, 126, 131, 0, 13, 533, 259,
! 260, 261, 262, 263, 264, 265, 266, 267, 569, 0,
! 251, 252, 253, 0, 254, 255, 256, 257, 258, 259,
! 260, 261, 262, 263, 264, 265, 266, 267, 0, -250,
! 591, 0, 864, 865, 0, 0, 0, 0, 5, 78,
! 7, 79, 128, 7, 129, 0, 9, 10, 11, 9,
! 10, 11, -535, 567, 0, 154, 0, 750, 0, 0,
! 155, 156, 13, 157, 14, 72, 77, 81, 86, 5,
! 105, 7, 106, 108, 113, 117, 122, 9, 10, 11,
! 569, 158, 0, 15, 0, 159, 160, 161, 162, 163,
! 0, 679, 0, 13, 164, 14, 681, 0, 0, 0,
! 165, 0, 0, 166, 0, 591, 690, 0, 167, 168,
! 169, 691, 0, 0, 170, 171, 0, 0, -245, 172,
! 0, -256, 5, 114, 7, 115, 0, 0, 0, 0,
! 9, 10, 11, 0, 89, 94, 98, 103, 173, 174,
! 0, 568, 125, 130, 134, 139, 13, 0, 14, -251,
! 0, 0, 0, 322, 0, 0, 5, 0, 7, 8,
! 90, 95, 99, 104, 9, 10, 11, 0, 126, 131,
! 135, 140, 0, 0, 0, 0, 591, 0, 0, 0,
! 13, 741, 14, 15, 745, 0, 0, 0, 0, 0,
! 591, 0, 0, 591, 0, 591, 5, 110, 7, 111,
! 0, 0, -253, 0, 9, 10, 11, 0, 0, 0,
! 0, 275, 0, -449, -449, -449, -449, -449, -449, -449,
! 13, -449, -449, -449, -449, -449, 0, -449, -449, -449,
! -449, -449, -449, -449, -449, -449, -449, -449, -449, -449,
! -449, -449, -449, -449, -449, -449, -449, -449, 0, 0,
! 794, 0, -449, 0, 796, 0, 0, 797, -449, 0,
! 591, -449, 0, 800, 0, 0, -449, -449, -449, 0,
! 0, 0, -449, -449, 0, 0, -252, -449, 0, 0,
! 101, 7, 102, 5, 119, 7, 120, 9, 10, 11,
! 0, 9, 10, 11, -449, 276, -449, -449, 448, -449,
! -473, -473, -473, -473, -473, -473, -473, 13, -473, -473,
! -473, -473, -473, 0, -473, -473, -473, -473, -473, -473,
! -473, -473, -473, -473, -473, -473, -473, -473, -473, 0,
! -473, -473, -473, -473, -473, 137, 7, 138, 0, -473,
! 0, 0, 9, 10, 11, -473, 0, 0, -473, 123,
! 7, 124, 0, -473, -473, -473, 9, 10, 11, -473,
! -473, 0, 0, -254, -473, 0, 0, 0, 0, 132,
! 7, 133, 0, 0, 14, 0, 9, 10, 11, 0,
! 0, -473, 0, -473, -473, 774, -473, -451, -451, 0,
! 0, 0, -451, -451, 14, -451, 0, 0, 0, -451,
! 0, -451, -451, -451, -451, -451, -451, -451, -451, -451,
! -451, -451, 0, -451, -258, -451, 0, -451, -451, -451,
! -451, -451, 137, 7, 138, 0, -451, 0, -255, 9,
! 10, 11, -451, 0, 0, -451, 0, 0, 0, 0,
! -451, -451, -451, 0, 0, 0, -451, -451, -257, 0,
! 0, -451, 5, 69, 7, 70, 123, 7, 124, 0,
! 9, 10, 11, 9, 10, 11, 0, 0, -451, 0,
! -451, -451, 813, -451, -480, -480, 13, 0, 14, -480,
! -480, 14, -480, 0, 0, 0, -480, 0, -480, -480,
! -480, -480, -480, -480, -480, -480, -480, -480, -480, 0,
! -480, 0, -480, 0, -480, -480, -480, -480, -480, 0,
! 0, 0, 0, -480, 0, 0, 96, 7, 97, -480,
! 0, 0, -480, 9, 10, 11, 0, -480, -480, -480,
! 0, 0, 0, -480, -480, 0, 0, 240, -480, 154,
! 5, 14, 7, 8, 155, 156, 0, 157, 9, 10,
! 11, 0, 0, 0, 0, -480, 0, -480, -480, 0,
! -480, 0, 0, 0, 13, 158, 14, 15, 0, 159,
! 160, 161, 162, 163, 0, 0, 0, 0, 164, 0,
! 0, 132, 7, 133, 165, 0, 0, 166, 9, 10,
! 11, 0, 167, 168, 169, 0, 0, 0, 170, 171,
! 0, 0, 585, 172, 586, 146, 14, 0, 0, 155,
! 156, 0, 157, 0, 0, 0, 0, 0, 5, 105,
! 7, 106, 173, 174, 0, 241, 9, 10, 11, 0,
! 158, 0, 15, 0, 159, 160, 161, 162, 163, 0,
! 0, 0, 13, 164, 14, 0, 0, 0, 0, 165,
! 0, 0, 166, 0, 0, 0, 0, 167, 168, 169,
! 0, 0, 0, 170, 171, 0, 0, 587, 172, 588,
! 585, 0, 586, 146, 0, 0, 0, 155, 156, 0,
! 157, 0, 0, 0, 0, 0, -302, 173, 174, 0,
! 589, 0, 0, 0, 0, 0, 0, 0, 158, 0,
! 15, 0, 159, 160, 161, 162, 163, 0, 0, 0,
! 0, 164, 0, 0, 0, 0, 0, 165, 0, 0,
! 166, 0, 0, 0, 0, 167, 168, 169, 0, 0,
! 0, 170, 171, 0, 0, 587, 172, 588, 585, 0,
! 154, 0, 0, 0, 0, 155, 156, 0, 157, 0,
! 0, 0, 0, 0, -368, 173, 174, 0, 589, 0,
! 0, 0, 0, 0, 0, 0, 158, 0, 15, 0,
! 159, 160, 161, 162, 163, 0, 0, 0, 0, 164,
! 0, -315, 0, 0, 0, 165, 0, 0, 166, 0,
! 0, 0, 0, 167, 168, 169, 0, 0, 0, 170,
! 171, 0, 0, -315, 172, -315, 585, 0, 154, 0,
! 0, 0, 0, 155, 156, 0, 157, 0, 0, 5,
! 78, 7, 79, 173, 174, 0, 589, 9, 10, 11,
! 0, 0, 0, 0, 158, 0, 15, 0, 159, 160,
! 161, 162, 163, 13, 0, 14, 0, 164, 0, 0,
! 0, 0, 0, 165, 0, 0, 166, 0, 0, 0,
! 0, 167, 168, 169, 0, 0, 0, 170, 171, 0,
! 0, 0, 172, 154, 5, 297, 7, 8, 155, 156,
! 0, 157, 9, 10, 11, 0, 0, 5, 114, 7,
! 115, 173, 174, 0, 589, 9, 10, 11, 13, 158,
! 14, 15, 0, 159, 160, 161, 162, 163, 0, 0,
! 0, 13, 164, 14, 154, 0, 403, 0, 165, 155,
! 156, 166, 157, 0, 0, 0, 167, 168, 298, 0,
! 0, 0, 170, 171, 0, 0, 0, 172, 0, 0,
! 158, 0, 15, 0, 159, 160, 161, 162, 163, 0,
! 0, 0, 0, 164, 0, 0, 173, 174, 0, 165,
! 299, 0, 166, 0, 0, 0, 0, 167, 168, 404,
! 0, 0, 0, 170, 171, 0, 154, 0, 172, 0,
! 0, 155, 156, 0, 157, 256, 257, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 267, 173, 174, 0,
! 0, 405, 158, 0, 15, 0, 159, 160, 161, 162,
! 163, 0, 0, 0, 0, 164, 0, 154, 0, 0,
! 0, 165, 155, 156, 166, 157, 0, 0, 0, 167,
! 168, 169, 0, 0, 0, 170, 171, 0, 0, 0,
! 172, 0, 0, 158, 0, 15, 0, 159, 160, 161,
! 162, 163, 0, 0, 0, 0, 164, 0, 0, 173,
! 174, 0, 165, 401, 0, 166, 0, 0, 0, 0,
! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0,
! 0, 172, 0, 0, 0, 0, 0, 586, 602, 6,
! 7, 8, 155, 156, 0, 157, 9, 10, 11, 0,
! 173, 174, 0, 0, 494, 603, 604, 605, 606, 607,
! 608, 609, 13, 158, 14, 15, 0, 159, 160, 161,
! 162, 163, 0, 0, 0, 0, 164, 0, 5, 0,
! 7, 70, 165, 0, 0, 166, 9, 10, 11, 0,
! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0,
! 0, 172, 13, 0, 14, 0, 586, 146, 0, 0,
! 0, 155, 156, 0, 157, 0, 0, 0, 610, 0,
! 173, 174, 0, 611, 603, 604, 605, 606, 607, 608,
! 609, 0, 158, 0, 15, 0, 159, 160, 161, 162,
! 163, 0, 0, 0, 0, 164, 0, 5, 6, 7,
! 8, 165, 0, 0, 166, 9, 10, 11, 0, 167,
! 168, 169, 0, 0, 0, 170, 171, 154, 0, 0,
! 172, 13, 155, 156, 0, 157, 257, 258, 259, 260,
! 261, 262, 263, 264, 265, 266, 267, 610, 0, 173,
! 174, 0, 611, 158, 0, 15, 0, 159, 160, 161,
! 162, 163, 0, 0, 0, 0, 164, 0, 0, 0,
! 0, 0, 165, 0, 0, 166, 0, 0, 0, 0,
! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0,
! 0, 172, 154, 5, 6, 7, 8, 155, 156, 0,
! 157, 9, 10, 11, 0, 0, 5, 0, 7, 79,
! 173, 174, 0, 436, 9, 10, 11, 13, 158, 14,
! 15, 0, 159, 160, 161, 162, 163, 0, 0, 0,
! 13, 164, 14, 0, 0, 0, 0, 165, 0, 0,
! 166, 0, 0, 0, 0, 167, 168, 169, 0, 0,
! 0, 170, 171, 0, 154, 5, 172, 7, 8, 155,
! 156, 0, 157, 9, 10, 11, 260, 261, 262, 263,
! 264, 265, 266, 267, 0, 173, 174, 0, 0, 13,
! 158, 14, 15, 0, 159, 160, 161, 162, 163, 0,
! 0, 0, 0, 164, 0, 154, 0, 0, 0, 165,
! 155, 156, 166, 157, 0, 0, 0, 167, 168, 169,
! 0, 0, 0, 170, 171, 0, 0, 0, 172, 0,
! 0, 158, 0, 15, 0, 159, 160, 161, 162, 163,
! 0, 0, 0, 0, 164, 0, 154, 173, 174, 0,
! 165, 155, 156, 166, 157, 0, 0, 0, 167, 168,
! 169, 0, 0, 0, 170, 171, 0, 0, 0, 172,
! 0, 0, 158, 0, 15, 0, 159, 160, 161, 162,
! 163, 0, 0, 0, 0, 164, 695, 154, 173, 174,
! 0, 165, 155, 156, 166, 157, 0, 0, 0, 167,
! 168, 169, 0, 0, 0, 170, 171, 0, 0, 0,
! 172, 0, 0, 158, 0, 15, 0, 159, 160, 161,
! 162, 163, 0, 0, 0, 0, 164, 0, 154, 173,
! 174, 0, 165, 155, 156, 166, 157, 0, 0, 0,
! 167, 168, 169, 0, 0, 0, 170, 171, 0, 0,
! 0, 247, 0, 0, 158, 0, 15, 0, 159, 160,
! 161, 162, 163, 0, 0, 0, 0, 164, 0, 464,
! 173, 174, 0, 165, 155, 156, 166, 157, 0, 0,
! 0, 167, 168, 169, 0, 0, 0, 170, 171, 0,
! 0, 0, 249, 0, 0, 158, 0, 15, 0, 159,
! 160, 161, 162, 163, 0, 0, 0, 0, 164, 0,
! 0, 173, 174, 0, 165, 0, 0, 166, 0, 0,
! 0, 755, 167, 168, 169, 0, 0, 0, 170, 171,
! 251, 252, 253, 172, 254, 255, 256, 257, 258, 259,
! 260, 261, 262, 263, 264, 265, 266, 267, 0, 0,
! 0, 0, 173, 174, 251, 252, 253, 756, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 0, 0, 251, 252, 253, 826, 254, 255,
! 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 251, 252, 253, 0, 254, 255, 256, 257,
! 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
! 0, 0, 0, 0, 0, 0, 251, 252, 253, 433,
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
! 264, 265, 266, 267, 251, 252, 253, 434, 254, 255,
! 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 0, 0, 0, 0, 0, 0, 14, 0,
! 0, 583, 0, 0, 0, 0, 0, 0, 0, 0,
! 0, 251, 252, 253, 748, 254, 255, 256, 257, 258,
! 259, 260, 261, 262, 263, 264, 265, 266, 267, 5,
! 0, 7, 8, 5, 74, 7, 75, 9, 10, 11,
0, 9, 10, 11, 0, 0, 0, 0, 0, 0,
! 0, 0, 0, 13, 0, 14, 0, 13, 5, 110,
! 7, 111, 5, 83, 7, 84, 9, 10, 11, 0,
! 9, 10, 11, 0, 0, 5, 119, 7, 120, 0,
! 0, 0, 13, 9, 10, 11, 13, 5, 0, 7,
! 75, 0, 0, 0, 0, 9, 10, 11, 5, 13,
! 7, 84, 0, 0, 0, 0, 9, 10, 11, 0,
! 0, 13, 258, 259, 260, 261, 262, 263, 264, 265,
! 266, 267, 13, 251, 252, 253, 827, 254, 255, 256,
! 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
! 267, 251, 252, 253, 0, 254, 255, 256, 257, 258,
! 259, 260, 261, 262, 263, 264, 265, 266, 267, 253,
! 0, 254, 255, 256, 257, 258, 259, 260, 261, 262,
! 263, 264, 265, 266, 267, 255, 256, 257, 258, 259,
! 260, 261, 262, 263, 264, 265, 266, 267
};
! static const short yycheck[] = { 60,
! 294, 62, 2, 3, 2, 3, 142, 141, 2, 3,
! 221, 9, 10, 11, 314, 288, 217, 316, 272, 541,
! 320, 2, 3, 466, 22, 548, 24, 554, 26, 312,
! 28, 564, 30, 398, 32, 304, 34, 541, 36, 2,
! 3, 9, 2, 3, 541, 2, 3, 412, 2, 3,
! 623, 2, 3, 53, 149, 53, 0, 2, 3, 53,
! 557, 398, 458, 597, 62, 227, 64, 398, 466, 1,
! 64, 398, 53, 3, 4, 412, 159, 160, 600, 541,
! 770, 412, 3, 4, 212, 412, 169, 172, 541, 3,
! 53, 0, 175, 53, 1, 557, 53, 46, 1, 53,
! 496, 64, 53, 186, 64, 38, 39, 64, 53, 46,
! 379, 855, 1, 509, 1, 83, 512, 30, 1, 623,
! 57, 58, 59, 10, 814, 27, 623, 3, 4, 9,
! 89, 385, 1, 46, 83, 7, 73, 533, 30, 53,
! 884, 663, 46, 3, 4, 82, 84, 600, 48, 49,
! 50, 212, 237, 687, 91, 553, 554, 89, 30, 89,
! 65, 623, 247, 100, 249, 67, 68, 857, 89, 297,
! 703, 67, 109, 335, 172, 571, 866, 573, 85, 83,
! 3, 118, 85, 548, 67, 386, 455, 30, 68, 67,
! 127, 189, 557, 191, 467, 193, 85, 195, 58, 136,
! 46, 199, 89, 201, 731, 732, 379, 897, 3, 4,
! 44, 548, 273, 89, 212, 298, 85, 548, 752, 217,
! 557, 548, 21, 217, 67, 68, 557, 227, 379, 227,
! 557, 67, 66, 227, 68, 58, 297, 83, 811, 237,
! 301, 336, 67, 338, 67, 68, 227, 668, 7, 247,
! 89, 249, 67, 68, 217, 3, 4, 217, 67, 68,
! 217, 682, 785, 58, 227, 165, 349, 227, 83, 206,
! 227, 30, 67, 227, 83, 718, 227, 89, 451, 452,
! 453, 454, 227, 83, 727, 7, 84, 187, 88, 543,
! 88, 574, 503, 576, 27, 356, 67, 30, 46, 297,
! 451, 452, 453, 454, 67, 701, 211, 811, 30, 214,
! 58, 44, 67, 218, 811, 5, 6, 7, 3, 67,
! 718, 404, 12, 13, 14, 669, 324, 671, 326, 727,
! 328, 231, 330, 731, 732, 335, 83, 335, 3, 400,
! 30, 335, 403, 142, 740, 58, 59, 60, 433, 811,
! 435, 84, 874, 875, 335, 88, 1, 88, 30, 4,
! 5, 6, 7, 9, 3, 10, 83, 12, 13, 14,
! 270, 271, 335, 58, 46, 335, 84, 83, 335, 7,
! 88, 335, 67, 28, 335, 3, 4, 84, 386, 67,
! 335, 88, 386, 58, 84, 67, 68, 84, 398, 332,
! 333, 88, 67, 68, 398, 204, 205, 46, 83, 83,
! 315, 316, 412, 88, 88, 7, 321, 398, 412, 58,
! 785, 84, 721, 386, 723, 88, 386, 628, 67, 386,
! 566, 412, 337, 85, 83, 433, 637, 435, 398, 88,
! 58, 575, 85, 343, 89, 83, 719, 58, 785, 67,
! 68, 83, 412, 83, 785, 728, 67, 68, 785, 67,
! 68, 1, 84, 85, 4, 5, 6, 7, 864, 865,
! 84, 83, 12, 13, 14, 83, 88, 475, 378, 477,
! 541, 479, 387, 481, 384, 3, 4, 83, 28, 1,
! 6, 7, 4, 292, 6, 7, 12, 13, 14, 84,
! 12, 13, 14, 88, 84, 805, 83, 807, 88, 46,
! 309, 310, 4, 5, 6, 7, 28, 32, 30, 31,
! 12, 13, 14, 67, 22, 23, 24, 25, 451, 452,
! 430, 454, 30, 31, 32, 33, 28, 9, 30, 600,
! 623, 541, 1, 541, 3, 4, 607, 541, 548, 89,
! 483, 484, 84, 764, 548, 90, 88, 557, 84, 557,
! 541, 84, 88, 557, 469, 498, 499, 548, 704, 703,
! 67, 68, 84, 85, 27, 44, 557, 30, 541, 67,
! 68, 541, 84, 85, 541, 84, 880, 541, 548, 44,
! 541, 44, 84, 88, 557, 88, 541, 557, 892, 83,
! 557, 67, 68, 557, 67, 68, 557, 83, 513, 514,
! 6, 7, 517, 46, 67, 68, 12, 13, 14, 67,
! 68, 179, 180, 623, 44, 623, 526, 309, 310, 623,
! 628, 84, 718, 719, 628, 88, 697, 83, 636, 637,
! 90, 541, 623, 637, 83, 643, 90, 645, 90, 647,
! 85, 649, 89, 651, 85, 653, 85, 655, 792, 657,
! 623, 46, 1, 623, 85, 628, 623, 83, 628, 623,
! 83, 628, 623, 83, 637, 90, 581, 637, 623, 90,
! 637, 84, 615, 616, 84, 27, 222, 587, 85, 88,
! 88, 189, 190, 191, 192, 6, 7, 83, 3, 760,
! 600, 12, 13, 14, 22, 23, 24, 25, 608, 83,
! 83, 772, 30, 31, 32, 33, 46, 778, 15, 30,
! 17, 18, 19, 20, 629, 630, 659, 660, 633, 46,
! 85, 88, 46, 638, 639, 84, 641, 6, 7, 46,
! 84, 7, 85, 12, 13, 14, 84, 808, 809, 84,
! 811, 84, 288, 1, 553, 554, 4, 5, 6, 7,
! 89, 30, 10, 84, 12, 13, 14, 566, 67, 674,
! 16, 67, 677, 26, 27, 28, 29, 85, 577, 85,
! 28, 34, 35, 36, 37, 785, 84, 46, 67, 726,
! 67, 785, 67, 17, 855, 83, 83, 83, 859, 26,
! 27, 28, 29, 84, 785, 83, 67, 34, 35, 36,
! 37, 811, 84, 811, 84, 88, 721, 811, 723, 90,
! 379, 84, 84, 884, 885, 785, 324, 325, 326, 327,
! 811, 83, 9, 67, 84, 83, 741, 5, 6, 7,
! 745, 83, 83, 0, 12, 13, 14, 84, 811, 408,
! 0, 811, 385, 305, 811, 557, 392, 811, 557, 557,
! 811, 557, 30, 422, 423, 412, 811, 412, 5, 6,
! 7, 189, 190, 191, 192, 12, 13, 14, 414, 415,
! 292, 786, 787, 384, 789, 416, 572, 596, 685, 794,
! 731, 796, 451, 452, 453, 454, 1, 718, 803, 4,
! 5, 6, 7, 432, 672, 704, 675, 12, 13, 14,
! 3, 4, 5, 6, 7, 343, 84, 335, 815, 718,
! 719, 430, 27, 28, 380, 30, 619, 817, 727, 728,
! 466, 467, 731, 732, 56, 57, 58, 59, 60, 44,
! 193, 194, 195, 196, 861, 504, 846, 506, 4, 5,
! 6, 7, 863, -1, 10, 469, 12, 13, 14, 484,
! -1, -1, 67, 68, -1, -1, 193, 194, 195, 196,
! -1, -1, 28, -1, 30, -1, -1, 475, 476, 84,
! -1, 479, 480, 88, 89, -1, 1, -1, 3, 4,
! 5, 6, 7, 5, 6, 7, -1, 12, 13, 14,
! 12, 13, 14, 235, 236, -1, 324, 325, 326, 327,
! -1, -1, 27, 28, 246, 30, 31, 553, 554, 251,
! 252, -1, -1, -1, 256, 257, 258, 259, 260, 261,
! 262, 263, 264, 265, 266, 267, 54, 55, 56, 57,
! 58, 59, 60, 58, -1, 1, -1, -1, 4, 5,
! 6, 7, 67, 612, -1, -1, 12, 13, 14, 5,
! 6, 7, -1, -1, -1, -1, 12, 13, 14, 84,
! -1, 27, 28, -1, 30, 328, 329, 330, 331, -1,
! 1, -1, -1, 4, 5, 6, 7, -1, 44, -1,
! -1, 12, 13, 14, -1, 631, 632, -1, -1, -1,
! -1, 328, 329, 330, 331, -1, 27, 28, -1, 30,
! -1, 67, 68, 672, 62, 63, 675, 65, 66, 67,
! 68, -1, -1, 44, -1, -1, 358, 359, 84, -1,
! -1, -1, 88, 89, -1, -1, -1, -1, 84, -1,
! -1, 4, 5, 6, 7, 643, 644, 645, 646, 12,
! 13, 14, -1, 651, 652, 653, 654, 475, 476, -1,
! -1, 479, 480, 84, -1, 28, -1, 88, 89, 4,
! 5, 6, 7, -1, -1, -1, -1, 12, 13, 14,
! -1, -1, 718, 719, -1, -1, -1, -1, -1, -1,
! -1, 727, 728, 28, -1, 731, 732, 429, 5, 6,
! 7, -1, 434, -1, -1, 12, 13, 14, -1, 441,
! 5, 6, 7, -1, -1, -1, 775, 12, 13, 14,
! -1, 84, -1, 30, 477, 478, -1, -1, 481, 482,
! 1, -1, 3, 4, 5, 6, 7, 10, -1, 10,
! -1, 12, 13, 14, 780, 781, 782, -1, -1, 84,
! 477, 478, -1, -1, 481, 482, -1, 28, 817, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 500, -1,
! 43, 44, 45, -1, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, -1, 84,
! 522, -1, 851, 852, -1, -1, -1, -1, 4, 5,
! 6, 7, 5, 6, 7, -1, 12, 13, 14, 12,
! 13, 14, 83, 1, -1, 3, -1, 90, -1, -1,
! 8, 9, 28, 11, 30, 643, 644, 645, 646, 4,
! 5, 6, 7, 651, 652, 653, 654, 12, 13, 14,
! 572, 29, -1, 31, -1, 33, 34, 35, 36, 37,
! -1, 583, -1, 28, 42, 30, 588, -1, -1, -1,
! 48, -1, -1, 51, -1, 597, 598, -1, 56, 57,
! 58, 603, -1, -1, 62, 63, -1, -1, 84, 67,
! -1, 84, 4, 5, 6, 7, -1, -1, -1, -1,
! 12, 13, 14, -1, 647, 648, 649, 650, 86, 87,
! -1, 89, 655, 656, 657, 658, 28, -1, 30, 84,
! -1, -1, -1, 1, -1, -1, 4, -1, 6, 7,
! 647, 648, 649, 650, 12, 13, 14, -1, 655, 656,
! 657, 658, -1, -1, -1, -1, 668, -1, -1, -1,
! 28, 673, 30, 31, 676, -1, -1, -1, -1, -1,
! 682, -1, -1, 685, -1, 687, 4, 5, 6, 7,
! -1, -1, 84, -1, 12, 13, 14, -1, -1, -1,
! -1, 1, -1, 3, 4, 5, 6, 7, 8, 9,
! 28, 11, 12, 13, 14, 15, -1, 17, 18, 19,
! 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
! 30, 31, 32, 33, 34, 35, 36, 37, -1, -1,
! 742, -1, 42, -1, 746, -1, -1, 749, 48, -1,
! 752, 51, -1, 755, -1, -1, 56, 57, 58, -1,
! -1, -1, 62, 63, -1, -1, 84, 67, -1, -1,
! 5, 6, 7, 4, 5, 6, 7, 12, 13, 14,
! -1, 12, 13, 14, 84, 85, 86, 87, 1, 89,
! 3, 4, 5, 6, 7, 8, 9, 28, 11, 12,
! 13, 14, 15, -1, 17, 18, 19, 20, 21, 22,
! 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
! 33, 34, 35, 36, 37, 5, 6, 7, -1, 42,
! -1, -1, 12, 13, 14, 48, -1, -1, 51, 5,
! 6, 7, -1, 56, 57, 58, 12, 13, 14, 62,
! 63, -1, -1, 84, 67, -1, -1, -1, -1, 5,
! 6, 7, -1, -1, 30, -1, 12, 13, 14, -1,
! -1, 84, -1, 86, 87, 1, 89, 3, 4, -1,
! -1, -1, 8, 9, 30, 11, -1, -1, -1, 15,
! -1, 17, 18, 19, 20, 21, 22, 23, 24, 25,
! 26, 27, -1, 29, 84, 31, -1, 33, 34, 35,
! 36, 37, 5, 6, 7, -1, 42, -1, 84, 12,
! 13, 14, 48, -1, -1, 51, -1, -1, -1, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, 84, -1,
! -1, 67, 4, 5, 6, 7, 5, 6, 7, -1,
! 12, 13, 14, 12, 13, 14, -1, -1, 84, -1,
! 86, 87, 1, 89, 3, 4, 28, -1, 30, 8,
! 9, 30, 11, -1, -1, -1, 15, -1, 17, 18,
! 19, 20, 21, 22, 23, 24, 25, 26, 27, -1,
29, -1, 31, -1, 33, 34, 35, 36, 37, -1,
! -1, -1, -1, 42, -1, -1, 5, 6, 7, 48,
! -1, -1, 51, 12, 13, 14, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, -1, 1, 67, 3,
! 4, 30, 6, 7, 8, 9, -1, 11, 12, 13,
! 14, -1, -1, -1, -1, 84, -1, 86, 87, -1,
! 89, -1, -1, -1, 28, 29, 30, 31, -1, 33,
! 34, 35, 36, 37, -1, -1, -1, -1, 42, -1,
! -1, 5, 6, 7, 48, -1, -1, 51, 12, 13,
! 14, -1, 56, 57, 58, -1, -1, -1, 62, 63,
! -1, -1, 1, 67, 3, 4, 30, -1, -1, 8,
! 9, -1, 11, -1, -1, -1, -1, -1, 4, 5,
! 6, 7, 86, 87, -1, 89, 12, 13, 14, -1,
! 29, -1, 31, -1, 33, 34, 35, 36, 37, -1,
! -1, -1, 28, 42, 30, -1, -1, -1, -1, 48,
-1, -1, 51, -1, -1, -1, -1, 56, 57, 58,
-1, -1, -1, 62, 63, -1, -1, 66, 67, 68,
! 1, -1, 3, 4, -1, -1, -1, 8, 9, -1,
11, -1, -1, -1, -1, -1, 85, 86, 87, -1,
89, -1, -1, -1, -1, -1, -1, -1, 29, -1,
31, -1, 33, 34, 35, 36, 37, -1, -1, -1,
! -1, 42, -1, -1, -1, -1, -1, 48, -1, -1,
51, -1, -1, -1, -1, 56, 57, 58, -1, -1,
-1, 62, 63, -1, -1, 66, 67, 68, 1, -1,
3, -1, -1, -1, -1, 8, 9, -1, 11, -1,
! -1, -1, -1, -1, 85, 86, 87, -1, 89, -1,
! -1, -1, -1, -1, -1, -1, 29, -1, 31, -1,
! 33, 34, 35, 36, 37, -1, -1, -1, -1, 42,
! -1, 44, -1, -1, -1, 48, -1, -1, 51, -1,
-1, -1, -1, 56, 57, 58, -1, -1, -1, 62,
! 63, -1, -1, 66, 67, 68, 1, -1, 3, -1,
! -1, -1, -1, 8, 9, -1, 11, -1, -1, 4,
! 5, 6, 7, 86, 87, -1, 89, 12, 13, 14,
! -1, -1, -1, -1, 29, -1, 31, -1, 33, 34,
! 35, 36, 37, 28, -1, 30, -1, 42, -1, -1,
-1, -1, -1, 48, -1, -1, 51, -1, -1, -1,
-1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
-1, -1, 67, 3, 4, 5, 6, 7, 8, 9,
-1, 11, 12, 13, 14, -1, -1, 4, 5, 6,
7, 86, 87, -1, 89, 12, 13, 14, 28, 29,
30, 31, -1, 33, 34, 35, 36, 37, -1, -1,
! -1, 28, 42, 30, 3, -1, 5, -1, 48, 8,
! 9, 51, 11, -1, -1, -1, 56, 57, 58, -1,
! -1, -1, 62, 63, -1, -1, -1, 67, -1, -1,
! 29, -1, 31, -1, 33, 34, 35, 36, 37, -1,
! -1, -1, -1, 42, -1, -1, 86, 87, -1, 48,
! 90, -1, 51, -1, -1, -1, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, 3, -1, 67, -1,
! -1, 8, 9, -1, 11, 49, 50, 51, 52, 53,
! 54, 55, 56, 57, 58, 59, 60, 86, 87, -1,
! -1, 90, 29, -1, 31, -1, 33, 34, 35, 36,
! 37, -1, -1, -1, -1, 42, -1, 3, -1, -1,
! -1, 48, 8, 9, 51, 11, -1, -1, -1, 56,
! 57, 58, -1, -1, -1, 62, 63, -1, -1, -1,
! 67, -1, -1, 29, -1, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, -1, -1, 86,
! 87, -1, 48, 90, -1, 51, -1, -1, -1, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, -1, -1, -1, -1, -1, 3, 4, 5,
! 6, 7, 8, 9, -1, 11, 12, 13, 14, -1,
! 86, 87, -1, -1, 90, 21, 22, 23, 24, 25,
! 26, 27, 28, 29, 30, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, -1, 4, -1,
! 6, 7, 48, -1, -1, 51, 12, 13, 14, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, 28, -1, 30, -1, 3, 4, -1, -1,
! -1, 8, 9, -1, 11, -1, -1, -1, 84, -1,
! 86, 87, -1, 89, 21, 22, 23, 24, 25, 26,
! 27, -1, 29, -1, 31, -1, 33, 34, 35, 36,
! 37, -1, -1, -1, -1, 42, -1, 4, 5, 6,
! 7, 48, -1, -1, 51, 12, 13, 14, -1, 56,
! 57, 58, -1, -1, -1, 62, 63, 3, -1, -1,
! 67, 28, 8, 9, -1, 11, 50, 51, 52, 53,
! 54, 55, 56, 57, 58, 59, 60, 84, -1, 86,
! 87, -1, 89, 29, -1, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, -1, -1, -1,
! -1, -1, 48, -1, -1, 51, -1, -1, -1, -1,
! 56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
! -1, 67, 3, 4, 5, 6, 7, 8, 9, -1,
! 11, 12, 13, 14, -1, -1, 4, -1, 6, 7,
! 86, 87, -1, 89, 12, 13, 14, 28, 29, 30,
! 31, -1, 33, 34, 35, 36, 37, -1, -1, -1,
! 28, 42, 30, -1, -1, -1, -1, 48, -1, -1,
! 51, -1, -1, -1, -1, 56, 57, 58, -1, -1,
! -1, 62, 63, -1, 3, 4, 67, 6, 7, 8,
! 9, -1, 11, 12, 13, 14, 53, 54, 55, 56,
! 57, 58, 59, 60, -1, 86, 87, -1, -1, 28,
! 29, 30, 31, -1, 33, 34, 35, 36, 37, -1,
! -1, -1, -1, 42, -1, 3, -1, -1, -1, 48,
! 8, 9, 51, 11, -1, -1, -1, 56, 57, 58,
! -1, -1, -1, 62, 63, -1, -1, -1, 67, -1,
! -1, 29, -1, 31, -1, 33, 34, 35, 36, 37,
! -1, -1, -1, -1, 42, -1, 3, 86, 87, -1,
48, 8, 9, 51, 11, -1, -1, -1, 56, 57,
58, -1, -1, -1, 62, 63, -1, -1, -1, 67,
-1, -1, 29, -1, 31, -1, 33, 34, 35, 36,
! 37, -1, -1, -1, -1, 42, 84, 3, 86, 87,
-1, 48, 8, 9, 51, 11, -1, -1, -1, 56,
57, 58, -1, -1, -1, 62, 63, -1, -1, -1,
67, -1, -1, 29, -1, 31, -1, 33, 34, 35,
! 36, 37, -1, -1, -1, -1, 42, -1, 3, 86,
87, -1, 48, 8, 9, 51, 11, -1, -1, -1,
56, 57, 58, -1, -1, -1, 62, 63, -1, -1,
-1, 67, -1, -1, 29, -1, 31, -1, 33, 34,
*************** static const short yycheck[] = { 59,
*** 1555,1599 ****
-1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
-1, -1, 67, -1, -1, 29, -1, 31, -1, 33,
34, 35, 36, 37, -1, -1, -1, -1, 42, -1,
! 3, 86, 87, -1, 48, 8, 9, 51, 11, -1,
! -1, -1, 56, 57, 58, -1, -1, -1, 62, 63,
! -1, -1, -1, 67, -1, -1, 29, -1, 31, -1,
! 33, 34, 35, 36, 37, -1, -1, -1, -1, 42,
! -1, -1, 86, 87, -1, 48, -1, -1, 51, -1,
! -1, -1, 10, 56, 57, 58, -1, -1, -1, 62,
! 63, 43, 44, 45, 67, 47, 48, 49, 50, 51,
! 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
! -1, -1, -1, 86, 87, 43, 44, 45, 46, 47,
! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
! 58, 59, 60, -1, -1, 43, 44, 45, 90, 47,
! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
! 58, 59, 60, 43, 44, 45, -1, 47, 48, 49,
! 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
! 60, -1, -1, -1, -1, -1, -1, 43, 44, 45,
! 88, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, 43, 44, 45, 88, 47,
! 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
! 58, 59, 60, -1, -1, -1, -1, -1, -1, 30,
! -1, -1, 88, 53, 54, 55, 56, 57, 58, 59,
! 60, -1, 43, 44, 45, 83, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
! 4, 5, 6, 7, 4, -1, 6, 7, 12, 13,
! 14, -1, 12, 13, 14, -1, -1, -1, -1, -1,
! -1, -1, -1, -1, 28, -1, 30, -1, 28, 4,
! 30, 6, 7, 4, 5, 6, 7, 12, 13, 14,
-1, 12, 13, 14, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 28, -1, 30, -1, 28, 4, 5,
6, 7, 4, 5, 6, 7, 12, 13, 14, -1,
12, 13, 14, -1, -1, 4, 5, 6, 7, -1,
! -1, -1, 28, 12, 13, 14, 28, 51, 52, 53,
! 54, 55, 56, 57, 58, 59, 60, -1, -1, 28,
! 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, 43, 44,
! 45, -1, 47, 48, 49, 50, 51, 52, 53, 54,
! 55, 56, 57, 58, 59, 60, 45, -1, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple"
--- 1559,1598 ----
-1, 56, 57, 58, -1, -1, -1, 62, 63, -1,
-1, -1, 67, -1, -1, 29, -1, 31, -1, 33,
34, 35, 36, 37, -1, -1, -1, -1, 42, -1,
! -1, 86, 87, -1, 48, -1, -1, 51, -1, -1,
! -1, 10, 56, 57, 58, -1, -1, -1, 62, 63,
! 43, 44, 45, 67, 47, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60, -1, -1,
! -1, -1, 86, 87, 43, 44, 45, 46, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, -1, -1, 43, 44, 45, 90, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, 43, 44, 45, -1, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
! -1, -1, -1, -1, -1, -1, 43, 44, 45, 88,
! 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
! 57, 58, 59, 60, 43, 44, 45, 88, 47, 48,
! 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, -1, -1, -1, -1, -1, -1, 30, -1,
! -1, 88, -1, -1, -1, -1, -1, -1, -1, -1,
! -1, 43, 44, 45, 83, 47, 48, 49, 50, 51,
! 52, 53, 54, 55, 56, 57, 58, 59, 60, 4,
! -1, 6, 7, 4, 5, 6, 7, 12, 13, 14,
-1, 12, 13, 14, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 28, -1, 30, -1, 28, 4, 5,
6, 7, 4, 5, 6, 7, 12, 13, 14, -1,
12, 13, 14, -1, -1, 4, 5, 6, 7, -1,
! -1, -1, 28, 12, 13, 14, 28, 4, -1, 6,
! 7, -1, -1, -1, -1, 12, 13, 14, 4, 28,
! 6, 7, -1, -1, -1, -1, 12, 13, 14, -1,
! -1, 28, 51, 52, 53, 54, 55, 56, 57, 58,
! 59, 60, 28, 43, 44, 45, 46, 47, 48, 49,
! 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
! 60, 43, 44, 45, -1, 47, 48, 49, 50, 51,
! 52, 53, 54, 55, 56, 57, 58, 59, 60, 45,
! -1, 47, 48, 49, 50, 51, 52, 53, 54, 55,
! 56, 57, 58, 59, 60, 48, 49, 50, 51, 52,
! 53, 54, 55, 56, 57, 58, 59, 60
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/lib/bison.simple"
*************** case 56:
*** 2374,2468 ****
#line 488 "c-parse.y"
{ skip_evaluation++; ;
break;}
! case 58:
! #line 494 "c-parse.y"
! { yyval.ttype = c_cast_expr (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
! case 60:
! #line 500 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 61:
! #line 502 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 62:
! #line 504 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 63:
! #line 506 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 64:
! #line 508 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 65:
! #line 510 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 66:
! #line 512 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 67:
! #line 514 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 68:
! #line 516 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 69:
! #line 518 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 70:
! #line 520 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 71:
! #line 522 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 72:
! #line 524 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
break;}
! case 73:
! #line 527 "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 74:
! #line 530 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
break;}
! case 75:
! #line 533 "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 76:
! #line 536 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
break;}
! case 77:
! #line 539 "c-parse.y"
{ skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
- (yyvsp[-4].ttype == boolean_false_node)); ;
break;}
! case 78:
! #line 542 "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 79:
! #line 545 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids omitting the middle term of a ?: expression");
/* Make sure first operand is calculated only once. */
--- 2373,2471 ----
#line 488 "c-parse.y"
{ skip_evaluation++; ;
break;}
! case 57:
! #line 492 "c-parse.y"
! { skip_evaluation++; ;
break;}
! case 59:
! #line 498 "c-parse.y"
! { yyval.ttype = c_cast_expr (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 61:
! #line 504 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 62:
! #line 506 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 63:
! #line 508 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 64:
! #line 510 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 65:
! #line 512 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 66:
! #line 514 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 67:
! #line 516 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 68:
! #line 518 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 69:
! #line 520 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 70:
! #line 522 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 71:
! #line 524 "c-parse.y"
{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 72:
! #line 526 "c-parse.y"
! { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
! break;}
! case 73:
! #line 528 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
break;}
! case 74:
! #line 531 "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 75:
! #line 534 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
break;}
! case 76:
! #line 537 "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 77:
! #line 540 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
break;}
! case 78:
! #line 543 "c-parse.y"
{ skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
- (yyvsp[-4].ttype == boolean_false_node)); ;
break;}
! case 79:
! #line 546 "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 80:
! #line 549 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids omitting the middle term of a ?: expression");
/* Make sure first operand is calculated only once. */
*************** case 79:
*** 2470,2482 ****
yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
break;}
! case 80:
! #line 552 "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 81:
! #line 555 "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));
--- 2473,2485 ----
yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype));
skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
break;}
! case 81:
! #line 556 "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 82:
! #line 559 "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 81:
*** 2484,2491 ****
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR);
;
break;}
! case 82:
! #line 562 "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. */
--- 2487,2494 ----
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR);
;
break;}
! case 83:
! #line 566 "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 82:
*** 2494,2523 ****
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK);
;
break;}
! case 83:
! #line 573 "c-parse.y"
{
if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.ttype = build_external_ref (yyvsp[0].ttype, yychar == '(');
;
break;}
! case 85:
! #line 580 "c-parse.y"
{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
break;}
! case 86:
! #line 582 "c-parse.y"
{ yyval.ttype = fname_decl (C_RID_CODE (yyval.ttype), yyval.ttype); ;
break;}
! case 87:
! #line 584 "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 88:
! #line 588 "c-parse.y"
{ tree constructor = pop_init_level (0);
tree type = yyvsp[-5].ttype;
finish_init ();
--- 2497,2526 ----
C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK);
;
break;}
! case 84:
! #line 577 "c-parse.y"
{
if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.ttype = build_external_ref (yyvsp[0].ttype, yychar == '(');
;
break;}
! case 86:
! #line 584 "c-parse.y"
{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
break;}
! case 87:
! #line 586 "c-parse.y"
{ yyval.ttype = fname_decl (C_RID_CODE (yyval.ttype), yyval.ttype); ;
break;}
! case 88:
! #line 588 "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 89:
! #line 592 "c-parse.y"
{ tree constructor = pop_init_level (0);
tree type = yyvsp[-5].ttype;
finish_init ();
*************** case 88:
*** 2527,2545 ****
yyval.ttype = build_compound_literal (type, constructor);
;
break;}
! case 89:
! #line 597 "c-parse.y"
{ char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
yyval.ttype = yyvsp[-1].ttype; ;
break;}
! case 90:
! #line 602 "c-parse.y"
{ yyval.ttype = error_mark_node; ;
break;}
! case 91:
! #line 604 "c-parse.y"
{ tree saved_last_tree;
if (pedantic)
--- 2530,2548 ----
yyval.ttype = build_compound_literal (type, constructor);
;
break;}
! case 90:
! #line 601 "c-parse.y"
{ char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
if (IS_EXPR_CODE_CLASS (class))
C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
yyval.ttype = yyvsp[-1].ttype; ;
break;}
! case 91:
! #line 606 "c-parse.y"
{ yyval.ttype = error_mark_node; ;
break;}
! case 92:
! #line 608 "c-parse.y"
{ tree saved_last_tree;
if (pedantic)
*************** case 91:
*** 2556,2563 ****
TREE_SIDE_EFFECTS (yyval.ttype) = 1;
;
break;}
! case 92:
! #line 620 "c-parse.y"
{
pop_label_level ();
last_tree = COMPOUND_BODY (yyvsp[-2].ttype);
--- 2559,2566 ----
TREE_SIDE_EFFECTS (yyval.ttype) = 1;
;
break;}
! case 93:
! #line 624 "c-parse.y"
{
pop_label_level ();
last_tree = COMPOUND_BODY (yyvsp[-2].ttype);
*************** case 92:
*** 2565,2580 ****
yyval.ttype = error_mark_node;
;
break;}
! case 93:
! #line 627 "c-parse.y"
{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 94:
! #line 629 "c-parse.y"
{ yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ;
break;}
! case 95:
! #line 632 "c-parse.y"
{
tree c;
--- 2568,2583 ----
yyval.ttype = error_mark_node;
;
break;}
! case 94:
! #line 631 "c-parse.y"
{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 95:
! #line 633 "c-parse.y"
{ yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ;
break;}
! case 96:
! #line 636 "c-parse.y"
{
tree c;
*************** case 95:
*** 2585,2592 ****
yyval.ttype = integer_zerop (c) ? yyvsp[-1].ttype : yyvsp[-3].ttype;
;
break;}
! case 96:
! #line 642 "c-parse.y"
{
tree e1, e2;
--- 2588,2595 ----
yyval.ttype = integer_zerop (c) ? yyvsp[-1].ttype : yyvsp[-3].ttype;
;
break;}
! case 97:
! #line 646 "c-parse.y"
{
tree e1, e2;
*************** case 96:
*** 2597,2630 ****
? build_int_2 (1, 0) : build_int_2 (0, 0);
;
break;}
! case 97:
! #line 652 "c-parse.y"
{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 98:
! #line 654 "c-parse.y"
{
yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
;
break;}
! case 99:
! #line 658 "c-parse.y"
{
tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
;
break;}
! case 100:
! #line 664 "c-parse.y"
{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
break;}
! case 101:
! #line 666 "c-parse.y"
{ yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
break;}
! case 103:
! #line 673 "c-parse.y"
{
static int last_lineno = 0;
static const char *last_input_filename = 0;
--- 2600,2633 ----
? build_int_2 (1, 0) : build_int_2 (0, 0);
;
break;}
! case 98:
! #line 656 "c-parse.y"
{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 99:
! #line 658 "c-parse.y"
{
yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
;
break;}
! case 100:
! #line 662 "c-parse.y"
{
tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
;
break;}
! case 101:
! #line 668 "c-parse.y"
{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
break;}
! case 102:
! #line 670 "c-parse.y"
{ yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
break;}
! case 104:
! #line 677 "c-parse.y"
{
static int last_lineno = 0;
static const char *last_input_filename = 0;
*************** case 103:
*** 2639,3010 ****
}
;
break;}
! case 106:
! #line 694 "c-parse.y"
{ c_mark_varargs ();
if (pedantic)
pedwarn ("ISO C does not permit use of `varargs.h'"); ;
break;}
! case 107:
! #line 704 "c-parse.y"
{ ;
break;}
- case 112:
- #line 720 "c-parse.y"
- { POP_DECLSPEC_STACK; ;
- break;}
case 113:
! #line 722 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 114:
! #line 724 "c-parse.y"
{ shadow_tag_warned (yyvsp[-1].ttype, 1);
pedwarn ("empty declaration"); ;
break;}
! case 115:
! #line 727 "c-parse.y"
{ pedwarn ("empty declaration"); ;
break;}
! case 116:
! #line 736 "c-parse.y"
{ ;
break;}
! case 117:
! #line 744 "c-parse.y"
{ pending_xref_error ();
PUSH_DECLSPEC_STACK;
split_specs_attrs (yyvsp[0].ttype,
¤t_declspecs, &prefix_attributes);
all_prefix_attributes = prefix_attributes; ;
break;}
- case 118:
- #line 755 "c-parse.y"
- { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ;
- break;}
case 119:
! #line 760 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
break;}
case 120:
! #line 762 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 121:
! #line 764 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 122:
! #line 766 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 123:
! #line 768 "c-parse.y"
! { shadow_tag (yyvsp[-1].ttype); ;
break;}
case 124:
! #line 770 "c-parse.y"
! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
break;}
case 125:
! #line 827 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 126:
! #line 830 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 127:
! #line 833 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 128:
! #line 839 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 129:
! #line 845 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 130:
! #line 848 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 131:
! #line 854 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE);
TREE_STATIC (yyval.ttype) = 0; ;
break;}
! case 132:
! #line 857 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
- case 133:
- #line 863 "c-parse.y"
- { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
- TREE_STATIC (yyval.ttype) = 1; ;
- break;}
case 134:
! #line 866 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 135:
! #line 869 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 136:
! #line 872 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 137:
! #line 875 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 138:
! #line 878 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 139:
! #line 881 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 140:
! #line 887 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 141:
! #line 890 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 142:
! #line 893 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 143:
! #line 896 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 144:
! #line 899 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 145:
! #line 902 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 146:
! #line 908 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 147:
! #line 911 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 148:
! #line 914 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 149:
! #line 917 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 150:
! #line 920 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 151:
! #line 923 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 152:
! #line 929 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
! break;}
! case 153:
! #line 932 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 154:
! #line 935 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 155:
! #line 938 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 156:
! #line 941 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 157:
! #line 947 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
TREE_STATIC (yyval.ttype) = 0; ;
break;}
! case 158:
! #line 950 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 159:
! #line 953 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 160:
! #line 956 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 161:
! #line 962 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 162:
! #line 968 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 163:
! #line 974 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 164:
! #line 983 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 165:
! #line 989 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 166:
! #line 992 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 167:
! #line 995 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 168:
! #line 1001 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 169:
! #line 1007 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 170:
! #line 1013 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 171:
! #line 1022 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
- case 172:
- #line 1028 "c-parse.y"
- { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
- TREE_STATIC (yyval.ttype) = 1; ;
- break;}
case 173:
! #line 1031 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 174:
! #line 1034 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 175:
! #line 1037 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 176:
! #line 1040 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 177:
! #line 1043 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 178:
! #line 1046 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
! 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);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 179:
! #line 1052 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
--- 2642,3005 ----
}
;
break;}
! case 107:
! #line 698 "c-parse.y"
{ c_mark_varargs ();
if (pedantic)
pedwarn ("ISO C does not permit use of `varargs.h'"); ;
break;}
! case 108:
! #line 708 "c-parse.y"
{ ;
break;}
case 113:
! #line 724 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 114:
! #line 726 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
! break;}
! case 115:
! #line 728 "c-parse.y"
{ shadow_tag_warned (yyvsp[-1].ttype, 1);
pedwarn ("empty declaration"); ;
break;}
! case 116:
! #line 731 "c-parse.y"
{ pedwarn ("empty declaration"); ;
break;}
! case 117:
! #line 740 "c-parse.y"
{ ;
break;}
! case 118:
! #line 748 "c-parse.y"
{ pending_xref_error ();
PUSH_DECLSPEC_STACK;
split_specs_attrs (yyvsp[0].ttype,
¤t_declspecs, &prefix_attributes);
all_prefix_attributes = prefix_attributes; ;
break;}
case 119:
! #line 759 "c-parse.y"
! { all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ;
break;}
case 120:
! #line 764 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 121:
! #line 766 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 122:
! #line 768 "c-parse.y"
{ POP_DECLSPEC_STACK; ;
break;}
case 123:
! #line 770 "c-parse.y"
! { POP_DECLSPEC_STACK; ;
break;}
case 124:
! #line 772 "c-parse.y"
! { shadow_tag (yyvsp[-1].ttype); ;
break;}
case 125:
! #line 774 "c-parse.y"
! { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
break;}
case 126:
! #line 831 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 127:
! #line 834 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 128:
! #line 837 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 129:
! #line 843 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 130:
! #line 849 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 131:
! #line 852 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 132:
! #line 858 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE);
TREE_STATIC (yyval.ttype) = 0; ;
break;}
! case 133:
! #line 861 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 134:
! #line 867 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 135:
! #line 870 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 136:
! #line 873 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 137:
! #line 876 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 138:
! #line 879 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 139:
! #line 882 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 140:
! #line 885 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 141:
! #line 891 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 142:
! #line 894 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 143:
! #line 897 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 144:
! #line 900 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 145:
! #line 903 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 146:
! #line 906 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 147:
! #line 912 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 148:
! #line 915 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 149:
! #line 918 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 150:
! #line 921 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 151:
! #line 924 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 152:
! #line 927 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
+ case 153:
+ #line 933 "c-parse.y"
+ { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
+ TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+ break;}
case 154:
! #line 936 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 155:
! #line 939 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 156:
! #line 942 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 157:
! #line 945 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
! break;}
! case 158:
! #line 951 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
TREE_STATIC (yyval.ttype) = 0; ;
break;}
! case 159:
! #line 954 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 160:
! #line 957 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 161:
! #line 960 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 162:
! #line 966 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 163:
! #line 972 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 164:
! #line 978 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 165:
! #line 987 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 166:
! #line 993 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 167:
! #line 996 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 168:
! #line 999 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 169:
! #line 1005 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 170:
! #line 1011 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 171:
! #line 1017 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
! case 172:
! #line 1026 "c-parse.y"
{ yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 173:
! #line 1032 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 174:
! #line 1035 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 175:
! #line 1038 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 176:
! #line 1041 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 177:
! #line 1044 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 178:
! #line 1047 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 179:
! #line 1050 "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 179:
*** 3012,3018 ****
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 180:
! #line 1058 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
--- 3007,3013 ----
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 180:
! #line 1056 "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 180:
*** 3020,3026 ****
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 181:
! #line 1064 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
--- 3015,3021 ----
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 181:
! #line 1062 "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 181:
*** 3028,3097 ****
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 182:
! #line 1073 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 183:
! #line 1076 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 184:
! #line 1079 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 185:
! #line 1082 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 186:
! #line 1085 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 187:
! #line 1091 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 188:
! #line 1094 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 189:
! #line 1097 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 190:
! #line 1100 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 191:
! #line 1103 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 192:
! #line 1106 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 193:
! #line 1109 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
! 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);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 194:
! #line 1115 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
--- 3023,3092 ----
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 182:
! #line 1068 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
! 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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 183:
! #line 1077 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 184:
! #line 1080 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 185:
! #line 1083 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 186:
! #line 1086 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 187:
! #line 1089 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 188:
! #line 1095 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 189:
! #line 1098 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 190:
! #line 1101 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 191:
! #line 1104 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 192:
! #line 1107 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 193:
! #line 1110 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 194:
! #line 1113 "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 194:
*** 3099,3105 ****
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 195:
! #line 1121 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
--- 3094,3100 ----
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 195:
! #line 1119 "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 195:
*** 3107,3113 ****
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 196:
! #line 1127 "c-parse.y"
{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype));
--- 3102,3108 ----
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 196:
! #line 1125 "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 196:
*** 3115,3324 ****
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 197:
! #line 1136 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 198:
! #line 1139 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 199:
! #line 1142 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 200:
! #line 1145 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 201:
! #line 1148 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 258:
! #line 1236 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 259:
! #line 1238 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
! case 263:
! #line 1273 "c-parse.y"
{ OBJC_NEED_RAW_IDENTIFIER (1); ;
break;}
! case 266:
! #line 1283 "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 267:
- #line 1287 "c-parse.y"
- { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
- break;}
case 268:
! #line 1289 "c-parse.y"
! { yyval.ttype = groktypename (yyvsp[-1].ttype); ;
break;}
! case 273:
! #line 1306 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 274:
! #line 1308 "c-parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
yyval.ttype = yyvsp[-1].ttype;
;
break;}
! case 275:
! #line 1315 "c-parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
break;}
! case 276:
! #line 1320 "c-parse.y"
{ finish_init ();
finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
break;}
! case 277:
! #line 1323 "c-parse.y"
{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
;
break;}
! case 278:
! #line 1331 "c-parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
break;}
! case 279:
! #line 1336 "c-parse.y"
{ finish_init ();
finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
break;}
! case 280:
! #line 1339 "c-parse.y"
{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
break;}
- case 281:
- #line 1347 "c-parse.y"
- { yyval.ttype = NULL_TREE; ;
- break;}
case 282:
! #line 1349 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 283:
! #line 1354 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 284:
! #line 1356 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 285:
! #line 1361 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype; ;
break;}
case 286:
! #line 1366 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 287:
! #line 1368 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 288:
! #line 1373 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 289:
! #line 1375 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 290:
! #line 1377 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
break;}
case 291:
! #line 1379 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
break;}
case 292:
! #line 1381 "c-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 298:
! #line 1399 "c-parse.y"
{ really_start_incremental_init (NULL_TREE); ;
break;}
! case 299:
! #line 1401 "c-parse.y"
{ yyval.ttype = pop_init_level (0); ;
break;}
! case 300:
! #line 1403 "c-parse.y"
{ yyval.ttype = error_mark_node; ;
break;}
! case 301:
! #line 1409 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids empty initializer braces"); ;
break;}
! case 305:
! #line 1423 "c-parse.y"
{ if (pedantic && ! flag_isoc99)
pedwarn ("ISO C89 forbids specifying subobject to initialize"); ;
break;}
! case 306:
! #line 1426 "c-parse.y"
{ if (pedantic)
pedwarn ("obsolete use of designated initializer without `='"); ;
break;}
! case 307:
! #line 1429 "c-parse.y"
{ set_init_label (yyvsp[-1].ttype);
if (pedantic)
pedwarn ("obsolete use of designated initializer with `:'"); ;
break;}
! case 310:
! #line 1438 "c-parse.y"
! { push_init_level (0); ;
break;}
case 311:
! #line 1440 "c-parse.y"
! { process_init_element (pop_init_level (0)); ;
break;}
case 312:
! #line 1442 "c-parse.y"
! { process_init_element (yyvsp[0].ttype); ;
break;}
! case 316:
! #line 1453 "c-parse.y"
! { set_init_label (yyvsp[0].ttype); ;
break;}
case 317:
#line 1458 "c-parse.y"
{ set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype);
if (pedantic)
pedwarn ("ISO C forbids specifying range of elements to initialize"); ;
break;}
- case 318:
- #line 1462 "c-parse.y"
- { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
- break;}
case 319:
#line 1467 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids nested functions");
--- 3110,3331 ----
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 197:
! #line 1131 "c-parse.y"
! { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
! 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);
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 198:
! #line 1140 "c-parse.y"
! { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;}
case 199:
! #line 1143 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 200:
! #line 1146 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 201:
! #line 1149 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
TREE_STATIC (yyval.ttype) = 1; ;
break;}
! case 202:
! #line 1152 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
! TREE_STATIC (yyval.ttype) = 1; ;
break;}
case 259:
! #line 1240 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 260:
! #line 1242 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
! case 264:
! #line 1277 "c-parse.y"
{ OBJC_NEED_RAW_IDENTIFIER (1); ;
break;}
! case 267:
! #line 1287 "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 268:
! #line 1291 "c-parse.y"
! { skip_evaluation--; yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
break;}
! case 269:
! #line 1293 "c-parse.y"
! { skip_evaluation--; yyval.ttype = groktypename (yyvsp[-1].ttype); ;
break;}
case 274:
! #line 1310 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
! break;}
! case 275:
! #line 1312 "c-parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
yyval.ttype = yyvsp[-1].ttype;
;
break;}
! case 276:
! #line 1319 "c-parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
break;}
! case 277:
! #line 1324 "c-parse.y"
{ finish_init ();
finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
break;}
! case 278:
! #line 1327 "c-parse.y"
{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
;
break;}
! case 279:
! #line 1335 "c-parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
chainon (yyvsp[-1].ttype, all_prefix_attributes));
start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
break;}
! case 280:
! #line 1340 "c-parse.y"
{ finish_init ();
finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
break;}
! case 281:
! #line 1343 "c-parse.y"
{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
chainon (yyvsp[0].ttype, all_prefix_attributes));
finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 282:
! #line 1351 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 283:
! #line 1353 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 284:
! #line 1358 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 285:
! #line 1360 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 286:
! #line 1365 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype; ;
break;}
case 287:
! #line 1370 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 288:
! #line 1372 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 289:
! #line 1377 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 290:
! #line 1379 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 291:
! #line 1381 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
break;}
case 292:
! #line 1383 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
! break;}
! case 293:
! #line 1385 "c-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 299:
! #line 1403 "c-parse.y"
{ really_start_incremental_init (NULL_TREE); ;
break;}
! case 300:
! #line 1405 "c-parse.y"
{ yyval.ttype = pop_init_level (0); ;
break;}
! case 301:
! #line 1407 "c-parse.y"
{ yyval.ttype = error_mark_node; ;
break;}
! case 302:
! #line 1413 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids empty initializer braces"); ;
break;}
! case 306:
! #line 1427 "c-parse.y"
{ if (pedantic && ! flag_isoc99)
pedwarn ("ISO C89 forbids specifying subobject to initialize"); ;
break;}
! case 307:
! #line 1430 "c-parse.y"
{ if (pedantic)
pedwarn ("obsolete use of designated initializer without `='"); ;
break;}
! case 308:
! #line 1433 "c-parse.y"
{ set_init_label (yyvsp[-1].ttype);
if (pedantic)
pedwarn ("obsolete use of designated initializer with `:'"); ;
break;}
! case 309:
! #line 1437 "c-parse.y"
! {;
break;}
case 311:
! #line 1443 "c-parse.y"
! { push_init_level (0); ;
break;}
case 312:
! #line 1445 "c-parse.y"
! { process_init_element (pop_init_level (0)); ;
break;}
! case 313:
! #line 1447 "c-parse.y"
! { process_init_element (yyvsp[0].ttype); ;
break;}
case 317:
#line 1458 "c-parse.y"
+ { set_init_label (yyvsp[0].ttype); ;
+ break;}
+ case 318:
+ #line 1463 "c-parse.y"
{ set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype);
if (pedantic)
pedwarn ("ISO C forbids specifying range of elements to initialize"); ;
break;}
case 319:
#line 1467 "c-parse.y"
+ { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+ break;}
+ case 320:
+ #line 1472 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids nested functions");
*************** case 319:
*** 3331,3342 ****
}
;
break;}
! case 320:
! #line 1479 "c-parse.y"
{ store_parm_decls (); ;
break;}
! case 321:
! #line 1487 "c-parse.y"
{ tree decl = current_function_decl;
DECL_SOURCE_FILE (decl) = yyvsp[-2].filename;
DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno;
--- 3338,3349 ----
}
;
break;}
! case 321:
! #line 1484 "c-parse.y"
{ store_parm_decls (); ;
break;}
! case 322:
! #line 1492 "c-parse.y"
{ tree decl = current_function_decl;
DECL_SOURCE_FILE (decl) = yyvsp[-2].filename;
DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno;
*************** case 321:
*** 3344,3351 ****
pop_function_context ();
add_decl_stmt (decl); ;
break;}
! case 322:
! #line 1497 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids nested functions");
--- 3351,3358 ----
pop_function_context ();
add_decl_stmt (decl); ;
break;}
! case 323:
! #line 1502 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids nested functions");
*************** case 322:
*** 3358,3369 ****
}
;
break;}
! case 323:
! #line 1509 "c-parse.y"
{ store_parm_decls (); ;
break;}
! case 324:
! #line 1517 "c-parse.y"
{ tree decl = current_function_decl;
DECL_SOURCE_FILE (decl) = yyvsp[-2].filename;
DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno;
--- 3365,3376 ----
}
;
break;}
! case 324:
! #line 1514 "c-parse.y"
{ store_parm_decls (); ;
break;}
! case 325:
! #line 1522 "c-parse.y"
{ tree decl = current_function_decl;
DECL_SOURCE_FILE (decl) = yyvsp[-2].filename;
DECL_SOURCE_LINE (decl) = yyvsp[-1].lineno;
*************** case 324:
*** 3371,3558 ****
pop_function_context ();
add_decl_stmt (decl); ;
break;}
- case 327:
- #line 1537 "c-parse.y"
- { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
- break;}
case 328:
! #line 1539 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 329:
#line 1544 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
break;}
case 330:
! #line 1546 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
! case 334:
! #line 1561 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 335:
#line 1566 "c-parse.y"
- { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
- break;}
- case 337:
- #line 1572 "c-parse.y"
{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 338:
#line 1577 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
break;}
case 339:
! #line 1579 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 340:
! #line 1581 "c-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 341:
! #line 1583 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 342:
! #line 1591 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 343:
#line 1596 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 344:
! #line 1598 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 345:
! #line 1600 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
break;}
! case 347:
! #line 1606 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 348:
! #line 1608 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 349:
#line 1613 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 350:
! #line 1615 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 351:
#line 1620 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 352:
! #line 1622 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 353:
! #line 1633 "c-parse.y"
{ yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
/* Start scope of tag before parsing components. */
;
break;}
! case 354:
! #line 1637 "c-parse.y"
{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
break;}
! case 355:
! #line 1639 "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 356:
! #line 1643 "c-parse.y"
{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
break;}
! case 357:
! #line 1645 "c-parse.y"
{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
break;}
! case 358:
! #line 1647 "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 359:
! #line 1651 "c-parse.y"
{ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
break;}
! case 360:
! #line 1653 "c-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ;
break;}
! case 361:
! #line 1656 "c-parse.y"
{ yyval.ttype = start_enum (NULL_TREE); ;
break;}
! case 362:
! #line 1658 "c-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
break;}
! case 363:
! #line 1664 "c-parse.y"
{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
break;}
! case 364:
! #line 1666 "c-parse.y"
{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
break;}
! case 365:
! #line 1668 "c-parse.y"
{ yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype);
/* In ISO C, enumerated types can be referred to
only if already defined. */
if (pedantic && !COMPLETE_TYPE_P (yyval.ttype))
pedwarn ("ISO C forbids forward references to `enum' types"); ;
break;}
! case 369:
! #line 1683 "c-parse.y"
{ if (pedantic && ! flag_isoc99)
pedwarn ("comma at end of enumerator list"); ;
break;}
! case 370:
! #line 1689 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
! case 371:
! #line 1691 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
pedwarn ("no semicolon at end of struct or union"); ;
break;}
! case 372:
! #line 1696 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 373:
! #line 1698 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;}
! case 374:
! #line 1700 "c-parse.y"
{ if (pedantic)
pedwarn ("extra semicolon in struct or union specified"); ;
break;}
! case 375:
! #line 1706 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 376:
! #line 1709 "c-parse.y"
{
/* Support for unnamed structs or unions as members of
structs or unions (which is [a] useful and [b] supports
--- 3378,3565 ----
pop_function_context ();
add_decl_stmt (decl); ;
break;}
case 328:
! #line 1542 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 329:
#line 1544 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 330:
! #line 1549 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
break;}
! case 331:
! #line 1551 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 335:
#line 1566 "c-parse.y"
{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
+ case 336:
+ #line 1571 "c-parse.y"
+ { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
+ break;}
case 338:
#line 1577 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 339:
! #line 1582 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
break;}
case 340:
! #line 1584 "c-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 341:
! #line 1586 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 342:
! #line 1588 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 343:
#line 1596 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 344:
! #line 1601 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 345:
! #line 1603 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
! case 346:
! #line 1605 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 0); ;
break;}
case 348:
! #line 1611 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 349:
#line 1613 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 350:
! #line 1618 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 351:
#line 1620 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
break;}
case 352:
! #line 1625 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 353:
! #line 1627 "c-parse.y"
! { yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 354:
! #line 1638 "c-parse.y"
{ yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
/* Start scope of tag before parsing components. */
;
break;}
! case 355:
! #line 1642 "c-parse.y"
{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
break;}
! case 356:
! #line 1644 "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 357:
! #line 1648 "c-parse.y"
{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
break;}
! case 358:
! #line 1650 "c-parse.y"
{ yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
break;}
! case 359:
! #line 1652 "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 360:
! #line 1656 "c-parse.y"
{ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
break;}
! case 361:
! #line 1658 "c-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ;
break;}
! case 362:
! #line 1661 "c-parse.y"
{ yyval.ttype = start_enum (NULL_TREE); ;
break;}
! case 363:
! #line 1663 "c-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
break;}
! case 364:
! #line 1669 "c-parse.y"
{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
break;}
! case 365:
! #line 1671 "c-parse.y"
{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
break;}
! case 366:
! #line 1673 "c-parse.y"
{ yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype);
/* In ISO C, enumerated types can be referred to
only if already defined. */
if (pedantic && !COMPLETE_TYPE_P (yyval.ttype))
pedwarn ("ISO C forbids forward references to `enum' types"); ;
break;}
! case 370:
! #line 1688 "c-parse.y"
{ if (pedantic && ! flag_isoc99)
pedwarn ("comma at end of enumerator list"); ;
break;}
! case 371:
! #line 1694 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
! case 372:
! #line 1696 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
pedwarn ("no semicolon at end of struct or union"); ;
break;}
! case 373:
! #line 1701 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 374:
! #line 1703 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;}
! case 375:
! #line 1705 "c-parse.y"
{ if (pedantic)
pedwarn ("extra semicolon in struct or union specified"); ;
break;}
! case 376:
! #line 1711 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 377:
! #line 1714 "c-parse.y"
{
/* Support for unnamed structs or unions as members of
structs or unions (which is [a] useful and [b] supports
*************** case 376:
*** 3563,3775 ****
yyval.ttype = grokfield(yyvsp[-1].filename, yyvsp[0].lineno, NULL, current_declspecs, NULL_TREE);
POP_DECLSPEC_STACK; ;
break;}
! case 377:
! #line 1719 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 378:
! #line 1722 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids member declarations with no members");
shadow_tag(yyvsp[0].ttype);
yyval.ttype = NULL_TREE; ;
break;}
! case 379:
! #line 1727 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 380:
! #line 1729 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
break;}
! case 382:
! #line 1736 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ;
! break;}
! case 384:
! #line 1742 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ;
break;}
case 385:
#line 1747 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 386:
! #line 1751 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 387:
! #line 1754 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 388:
! #line 1760 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 389:
! #line 1764 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 390:
! #line 1767 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 392:
! #line 1779 "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 393:
- #line 1784 "c-parse.y"
- { yyval.ttype = error_mark_node; ;
- break;}
case 394:
! #line 1790 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 395:
! #line 1792 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 396:
#line 1797 "c-parse.y"
! { pending_xref_error ();
! yyval.ttype = yyvsp[0].ttype; ;
break;}
case 397:
! #line 1800 "c-parse.y"
! { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 398:
#line 1805 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 400:
! #line 1811 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
NULL_TREE),
all_prefix_attributes); ;
break;}
! case 401:
! #line 1815 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[0].ttype),
all_prefix_attributes); ;
break;}
! case 402:
! #line 1819 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes)); ;
break;}
- case 406:
- #line 1832 "c-parse.y"
- { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
- break;}
case 407:
#line 1837 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 408:
! #line 1839 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 409:
#line 1844 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 410:
! #line 1846 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 411:
! #line 1848 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 1); ;
break;}
case 412:
! #line 1850 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 413:
! #line 1852 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, NULL_TREE, 1); ;
break;}
case 414:
! #line 1859 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 0, 0); ;
break;}
case 415:
! #line 1861 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0); ;
break;}
case 416:
! #line 1863 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 0); ;
break;}
case 417:
! #line 1865 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
break;}
case 418:
! #line 1867 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 1); ;
break;}
case 419:
! #line 1869 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-2].ttype, 0, 1); ;
break;}
case 420:
! #line 1871 "c-parse.y"
{ if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC)
error ("storage class specifier in array declarator");
yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 1, 0); ;
break;}
! case 421:
! #line 1875 "c-parse.y"
{ if (C_RID_CODE (yyvsp[-3].ttype) != RID_STATIC)
error ("storage class specifier in array declarator");
yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 1, 0); ;
break;}
! case 422:
! #line 1879 "c-parse.y"
{ if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC)
error ("storage class specifier in array declarator");
yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-3].ttype, 1, 0); ;
break;}
! case 425:
! #line 1894 "c-parse.y"
{
pedwarn ("deprecated use of label at end of compound statement");
;
break;}
! case 433:
! #line 1911 "c-parse.y"
{ if (pedantic && !flag_isoc99)
pedwarn ("ISO C89 forbids mixed declarations and code"); ;
break;}
! case 448:
! #line 1941 "c-parse.y"
{ pushlevel (0);
clear_last_expr ();
add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0);
;
break;}
- case 449:
- #line 1948 "c-parse.y"
- { yyval.ttype = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); ;
- break;}
case 450:
#line 1953 "c-parse.y"
{ if (flag_isoc99)
{
yyval.ttype = c_begin_compound_stmt ();
--- 3570,3782 ----
yyval.ttype = grokfield(yyvsp[-1].filename, yyvsp[0].lineno, NULL, current_declspecs, NULL_TREE);
POP_DECLSPEC_STACK; ;
break;}
! case 378:
! #line 1724 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 379:
! #line 1727 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids member declarations with no members");
shadow_tag(yyvsp[0].ttype);
yyval.ttype = NULL_TREE; ;
break;}
! case 380:
! #line 1732 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 381:
! #line 1734 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ;
break;}
! case 383:
! #line 1741 "c-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ;
break;}
case 385:
#line 1747 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-3].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 386:
+ #line 1752 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 387:
! #line 1756 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 388:
! #line 1759 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 389:
! #line 1765 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 390:
! #line 1769 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 391:
! #line 1772 "c-parse.y"
{ yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
decl_attributes (&yyval.ttype, chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
break;}
! case 393:
! #line 1784 "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 394:
! #line 1789 "c-parse.y"
! { yyval.ttype = error_mark_node; ;
break;}
case 395:
! #line 1795 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 396:
#line 1797 "c-parse.y"
! { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 397:
! #line 1802 "c-parse.y"
! { pending_xref_error ();
! yyval.ttype = yyvsp[0].ttype; ;
break;}
case 398:
#line 1805 "c-parse.y"
+ { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+ break;}
+ case 399:
+ #line 1810 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 401:
! #line 1816 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
NULL_TREE),
all_prefix_attributes); ;
break;}
! case 402:
! #line 1820 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[0].ttype),
all_prefix_attributes); ;
break;}
! case 403:
! #line 1824 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes)); ;
break;}
case 407:
#line 1837 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 408:
! #line 1842 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 409:
#line 1844 "c-parse.y"
! { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 410:
! #line 1849 "c-parse.y"
! { yyval.ttype = yyvsp[-2].ttype ? tree_cons (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE) : yyvsp[-1].ttype; ;
break;}
case 411:
! #line 1851 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 412:
! #line 1853 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, yyvsp[-1].ttype, 1); ;
break;}
case 413:
! #line 1855 "c-parse.y"
! { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 414:
! #line 1857 "c-parse.y"
! { yyval.ttype = set_array_declarator_type (yyvsp[0].ttype, NULL_TREE, 1); ;
break;}
case 415:
! #line 1864 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 0, 0); ;
break;}
case 416:
! #line 1866 "c-parse.y"
! { yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0); ;
break;}
case 417:
! #line 1868 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 0); ;
break;}
case 418:
! #line 1870 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
break;}
case 419:
! #line 1872 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, NULL_TREE, 0, 1); ;
break;}
case 420:
! #line 1874 "c-parse.y"
! { yyval.ttype = build_array_declarator (NULL_TREE, yyvsp[-2].ttype, 0, 1); ;
! break;}
! case 421:
! #line 1876 "c-parse.y"
{ if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC)
error ("storage class specifier in array declarator");
yyval.ttype = build_array_declarator (yyvsp[-1].ttype, NULL_TREE, 1, 0); ;
break;}
! case 422:
! #line 1880 "c-parse.y"
{ if (C_RID_CODE (yyvsp[-3].ttype) != RID_STATIC)
error ("storage class specifier in array declarator");
yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-2].ttype, 1, 0); ;
break;}
! case 423:
! #line 1884 "c-parse.y"
{ if (C_RID_CODE (yyvsp[-2].ttype) != RID_STATIC)
error ("storage class specifier in array declarator");
yyval.ttype = build_array_declarator (yyvsp[-1].ttype, yyvsp[-3].ttype, 1, 0); ;
break;}
! case 426:
! #line 1899 "c-parse.y"
{
pedwarn ("deprecated use of label at end of compound statement");
;
break;}
! case 434:
! #line 1916 "c-parse.y"
{ if (pedantic && !flag_isoc99)
pedwarn ("ISO C89 forbids mixed declarations and code"); ;
break;}
! case 449:
! #line 1946 "c-parse.y"
{ pushlevel (0);
clear_last_expr ();
add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0);
;
break;}
case 450:
#line 1953 "c-parse.y"
+ { yyval.ttype = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); ;
+ break;}
+ case 451:
+ #line 1958 "c-parse.y"
{ if (flag_isoc99)
{
yyval.ttype = c_begin_compound_stmt ();
*************** case 450:
*** 3781,3788 ****
yyval.ttype = NULL_TREE;
;
break;}
! case 451:
! #line 1969 "c-parse.y"
{ if (flag_isoc99)
{
tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
--- 3788,3795 ----
yyval.ttype = NULL_TREE;
;
break;}
! case 452:
! #line 1974 "c-parse.y"
{ if (flag_isoc99)
{
tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
*************** case 451:
*** 3794,3806 ****
else
yyval.ttype = NULL_TREE; ;
break;}
! case 453:
! #line 1986 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids label declarations"); ;
break;}
! case 456:
! #line 1997 "c-parse.y"
{ tree link;
for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
{
--- 3801,3813 ----
else
yyval.ttype = NULL_TREE; ;
break;}
! case 454:
! #line 1991 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids label declarations"); ;
break;}
! case 457:
! #line 2002 "c-parse.y"
{ tree link;
for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
{
*************** case 456:
*** 3810,3837 ****
}
;
break;}
! case 457:
! #line 2011 "c-parse.y"
{;
break;}
! case 459:
! #line 2015 "c-parse.y"
{ compstmt_count++;
yyval.ttype = c_begin_compound_stmt (); ;
break;}
! case 460:
! #line 2020 "c-parse.y"
{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
break;}
! case 461:
! #line 2022 "c-parse.y"
{ yyval.ttype = poplevel (kept_level_p (), 1, 0);
SCOPE_STMT_BLOCK (TREE_PURPOSE (yyvsp[0].ttype))
= SCOPE_STMT_BLOCK (TREE_VALUE (yyvsp[0].ttype))
= yyval.ttype; ;
break;}
! case 464:
! #line 2035 "c-parse.y"
{ if (current_function_decl == 0)
{
error ("braced-group within expression allowed only inside a function");
--- 3817,3844 ----
}
;
break;}
! case 458:
! #line 2016 "c-parse.y"
{;
break;}
! case 460:
! #line 2020 "c-parse.y"
{ compstmt_count++;
yyval.ttype = c_begin_compound_stmt (); ;
break;}
! case 461:
! #line 2025 "c-parse.y"
{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
break;}
! case 462:
! #line 2027 "c-parse.y"
{ yyval.ttype = poplevel (kept_level_p (), 1, 0);
SCOPE_STMT_BLOCK (TREE_PURPOSE (yyvsp[0].ttype))
= SCOPE_STMT_BLOCK (TREE_VALUE (yyvsp[0].ttype))
= yyval.ttype; ;
break;}
! case 465:
! #line 2040 "c-parse.y"
{ if (current_function_decl == 0)
{
error ("braced-group within expression allowed only inside a function");
*************** case 464:
*** 3847,3876 ****
yyval.ttype = add_stmt (build_stmt (COMPOUND_STMT, last_tree));
;
break;}
! case 465:
! #line 2052 "c-parse.y"
{ RECHAIN_STMTS (yyvsp[-1].ttype, COMPOUND_BODY (yyvsp[-1].ttype));
last_expr_type = NULL_TREE;
yyval.ttype = yyvsp[-1].ttype; ;
break;}
! case 466:
! #line 2060 "c-parse.y"
{ c_finish_then (); ;
break;}
! case 468:
! #line 2077 "c-parse.y"
{ yyval.ttype = c_begin_if_stmt (); ;
break;}
! case 469:
! #line 2079 "c-parse.y"
{ c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype),
compstmt_count,yyvsp[-3].ttype);
yyval.itype = stmt_count;
if_stmt_file = yyvsp[-7].filename;
if_stmt_line = yyvsp[-6].lineno; ;
break;}
! case 470:
! #line 2091 "c-parse.y"
{ stmt_count++;
compstmt_count++;
yyval.ttype
--- 3854,3883 ----
yyval.ttype = add_stmt (build_stmt (COMPOUND_STMT, last_tree));
;
break;}
! case 466:
! #line 2057 "c-parse.y"
{ RECHAIN_STMTS (yyvsp[-1].ttype, COMPOUND_BODY (yyvsp[-1].ttype));
last_expr_type = NULL_TREE;
yyval.ttype = yyvsp[-1].ttype; ;
break;}
! case 467:
! #line 2065 "c-parse.y"
{ c_finish_then (); ;
break;}
! case 469:
! #line 2082 "c-parse.y"
{ yyval.ttype = c_begin_if_stmt (); ;
break;}
! case 470:
! #line 2084 "c-parse.y"
{ c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype),
compstmt_count,yyvsp[-3].ttype);
yyval.itype = stmt_count;
if_stmt_file = yyvsp[-7].filename;
if_stmt_line = yyvsp[-6].lineno; ;
break;}
! case 471:
! #line 2096 "c-parse.y"
{ stmt_count++;
compstmt_count++;
yyval.ttype
*************** case 470:
*** 3882,3911 ****
RTL-generation time. */
DO_COND (yyval.ttype) = error_mark_node; ;
break;}
! case 471:
! #line 2102 "c-parse.y"
{ yyval.ttype = yyvsp[-2].ttype;
RECHAIN_STMTS (yyval.ttype, DO_BODY (yyval.ttype)); ;
break;}
! case 472:
! #line 2110 "c-parse.y"
{ if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.filename = input_filename; ;
break;}
! case 473:
! #line 2116 "c-parse.y"
{ if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.lineno = lineno; ;
break;}
! case 476:
! #line 2129 "c-parse.y"
{ if (flag_isoc99)
RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); ;
break;}
! case 477:
! #line 2135 "c-parse.y"
{ if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno;
--- 3889,3918 ----
RTL-generation time. */
DO_COND (yyval.ttype) = error_mark_node; ;
break;}
! case 472:
! #line 2107 "c-parse.y"
{ yyval.ttype = yyvsp[-2].ttype;
RECHAIN_STMTS (yyval.ttype, DO_BODY (yyval.ttype)); ;
break;}
! case 473:
! #line 2115 "c-parse.y"
{ if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.filename = input_filename; ;
break;}
! case 474:
! #line 2121 "c-parse.y"
{ if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.lineno = lineno; ;
break;}
! case 477:
! #line 2134 "c-parse.y"
{ if (flag_isoc99)
RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype)); ;
break;}
! case 478:
! #line 2140 "c-parse.y"
{ if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno;
*************** case 477:
*** 3917,3944 ****
}
;
break;}
! case 478:
! #line 2149 "c-parse.y"
{ if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno;
}
;
break;}
! case 479:
! #line 2158 "c-parse.y"
{ c_expand_start_else ();
yyvsp[-1].itype = stmt_count; ;
break;}
! case 480:
! #line 2161 "c-parse.y"
{ c_finish_else ();
c_expand_end_cond ();
if (extra_warnings && stmt_count == yyvsp[-3].itype)
warning ("empty body in an else-statement"); ;
break;}
! case 481:
! #line 2166 "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
--- 3924,3951 ----
}
;
break;}
! case 479:
! #line 2154 "c-parse.y"
{ if (yyvsp[0].ttype)
{
STMT_LINENO (yyvsp[0].ttype) = yyvsp[-1].lineno;
}
;
break;}
! case 480:
! #line 2163 "c-parse.y"
{ c_expand_start_else ();
yyvsp[-1].itype = stmt_count; ;
break;}
! case 481:
! #line 2166 "c-parse.y"
{ c_finish_else ();
c_expand_end_cond ();
if (extra_warnings && stmt_count == yyvsp[-3].itype)
warning ("empty body in an else-statement"); ;
break;}
! case 482:
! #line 2171 "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 481:
*** 3948,4079 ****
warning_with_file_and_line (if_stmt_file, if_stmt_line,
"empty body in an if-statement"); ;
break;}
! case 482:
! #line 2178 "c-parse.y"
{ c_expand_end_cond (); ;
break;}
! case 483:
! #line 2188 "c-parse.y"
{ stmt_count++;
yyval.ttype = c_begin_while_stmt (); ;
break;}
! case 484:
! #line 2191 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (yyvsp[-1].ttype);
c_finish_while_stmt_cond (truthvalue_conversion (yyvsp[-1].ttype),
yyvsp[-3].ttype);
yyval.ttype = add_stmt (yyvsp[-3].ttype); ;
break;}
! case 485:
! #line 2196 "c-parse.y"
{ RECHAIN_STMTS (yyvsp[-1].ttype, WHILE_BODY (yyvsp[-1].ttype)); ;
break;}
! case 486:
! #line 2199 "c-parse.y"
{ DO_COND (yyvsp[-4].ttype) = truthvalue_conversion (yyvsp[-2].ttype); ;
break;}
! case 487:
! #line 2201 "c-parse.y"
{ ;
break;}
! case 488:
! #line 2203 "c-parse.y"
{ yyval.ttype = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE,
NULL_TREE, NULL_TREE);
add_stmt (yyval.ttype); ;
break;}
! case 489:
! #line 2207 "c-parse.y"
{ stmt_count++;
RECHAIN_STMTS (yyvsp[-2].ttype, FOR_INIT_STMT (yyvsp[-2].ttype)); ;
break;}
! case 490:
! #line 2210 "c-parse.y"
{ if (yyvsp[-1].ttype)
FOR_COND (yyvsp[-5].ttype) = truthvalue_conversion (yyvsp[-1].ttype); ;
break;}
! case 491:
! #line 2213 "c-parse.y"
{ FOR_EXPR (yyvsp[-8].ttype) = yyvsp[-1].ttype; ;
break;}
! case 492:
! #line 2215 "c-parse.y"
{ RECHAIN_STMTS (yyvsp[-10].ttype, FOR_BODY (yyvsp[-10].ttype)); ;
break;}
! case 493:
! #line 2217 "c-parse.y"
{ stmt_count++;
yyval.ttype = c_start_case (yyvsp[-1].ttype); ;
break;}
- case 494:
- #line 2220 "c-parse.y"
- { c_finish_case (); ;
- break;}
case 495:
#line 2225 "c-parse.y"
! { add_stmt (build_stmt (EXPR_STMT, yyvsp[-1].ttype)); ;
break;}
case 496:
! #line 2227 "c-parse.y"
! { check_for_loop_decls (); ;
break;}
case 497:
! #line 2233 "c-parse.y"
! { stmt_count++; yyval.ttype = yyvsp[0].ttype; ;
break;}
case 498:
! #line 2235 "c-parse.y"
{ stmt_count++;
yyval.ttype = c_expand_expr_stmt (yyvsp[-1].ttype); ;
break;}
! case 499:
! #line 2238 "c-parse.y"
{ if (flag_isoc99)
RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype));
yyval.ttype = NULL_TREE; ;
break;}
- case 500:
- #line 2242 "c-parse.y"
- { stmt_count++;
- yyval.ttype = add_stmt (build_break_stmt ()); ;
- break;}
case 501:
! #line 2245 "c-parse.y"
{ stmt_count++;
! yyval.ttype = add_stmt (build_continue_stmt ()); ;
break;}
case 502:
! #line 2248 "c-parse.y"
{ stmt_count++;
! yyval.ttype = c_expand_return (NULL_TREE); ;
break;}
case 503:
! #line 2251 "c-parse.y"
{ stmt_count++;
! yyval.ttype = c_expand_return (yyvsp[-1].ttype); ;
break;}
case 504:
! #line 2254 "c-parse.y"
{ stmt_count++;
! yyval.ttype = simple_asm_stmt (yyvsp[-2].ttype); ;
break;}
case 505:
! #line 2258 "c-parse.y"
{ stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 506:
#line 2263 "c-parse.y"
{ stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 507:
#line 2268 "c-parse.y"
{ stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;}
case 508:
! #line 2271 "c-parse.y"
{ tree decl;
stmt_count++;
decl = lookup_label (yyvsp[-1].ttype);
--- 3955,4086 ----
warning_with_file_and_line (if_stmt_file, if_stmt_line,
"empty body in an if-statement"); ;
break;}
! case 483:
! #line 2183 "c-parse.y"
{ c_expand_end_cond (); ;
break;}
! case 484:
! #line 2193 "c-parse.y"
{ stmt_count++;
yyval.ttype = c_begin_while_stmt (); ;
break;}
! case 485:
! #line 2196 "c-parse.y"
{ yyvsp[-1].ttype = truthvalue_conversion (yyvsp[-1].ttype);
c_finish_while_stmt_cond (truthvalue_conversion (yyvsp[-1].ttype),
yyvsp[-3].ttype);
yyval.ttype = add_stmt (yyvsp[-3].ttype); ;
break;}
! case 486:
! #line 2201 "c-parse.y"
{ RECHAIN_STMTS (yyvsp[-1].ttype, WHILE_BODY (yyvsp[-1].ttype)); ;
break;}
! case 487:
! #line 2204 "c-parse.y"
{ DO_COND (yyvsp[-4].ttype) = truthvalue_conversion (yyvsp[-2].ttype); ;
break;}
! case 488:
! #line 2206 "c-parse.y"
{ ;
break;}
! case 489:
! #line 2208 "c-parse.y"
{ yyval.ttype = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE,
NULL_TREE, NULL_TREE);
add_stmt (yyval.ttype); ;
break;}
! case 490:
! #line 2212 "c-parse.y"
{ stmt_count++;
RECHAIN_STMTS (yyvsp[-2].ttype, FOR_INIT_STMT (yyvsp[-2].ttype)); ;
break;}
! case 491:
! #line 2215 "c-parse.y"
{ if (yyvsp[-1].ttype)
FOR_COND (yyvsp[-5].ttype) = truthvalue_conversion (yyvsp[-1].ttype); ;
break;}
! case 492:
! #line 2218 "c-parse.y"
{ FOR_EXPR (yyvsp[-8].ttype) = yyvsp[-1].ttype; ;
break;}
! case 493:
! #line 2220 "c-parse.y"
{ RECHAIN_STMTS (yyvsp[-10].ttype, FOR_BODY (yyvsp[-10].ttype)); ;
break;}
! case 494:
! #line 2222 "c-parse.y"
{ stmt_count++;
yyval.ttype = c_start_case (yyvsp[-1].ttype); ;
break;}
case 495:
#line 2225 "c-parse.y"
! { c_finish_case (); ;
break;}
case 496:
! #line 2230 "c-parse.y"
! { add_stmt (build_stmt (EXPR_STMT, yyvsp[-1].ttype)); ;
break;}
case 497:
! #line 2232 "c-parse.y"
! { check_for_loop_decls (); ;
break;}
case 498:
! #line 2238 "c-parse.y"
! { stmt_count++; yyval.ttype = yyvsp[0].ttype; ;
! break;}
! case 499:
! #line 2240 "c-parse.y"
{ stmt_count++;
yyval.ttype = c_expand_expr_stmt (yyvsp[-1].ttype); ;
break;}
! case 500:
! #line 2243 "c-parse.y"
{ if (flag_isoc99)
RECHAIN_STMTS (yyvsp[-2].ttype, COMPOUND_BODY (yyvsp[-2].ttype));
yyval.ttype = NULL_TREE; ;
break;}
case 501:
! #line 2247 "c-parse.y"
{ stmt_count++;
! yyval.ttype = add_stmt (build_break_stmt ()); ;
break;}
case 502:
! #line 2250 "c-parse.y"
{ stmt_count++;
! yyval.ttype = add_stmt (build_continue_stmt ()); ;
break;}
case 503:
! #line 2253 "c-parse.y"
{ stmt_count++;
! yyval.ttype = c_expand_return (NULL_TREE); ;
break;}
case 504:
! #line 2256 "c-parse.y"
{ stmt_count++;
! yyval.ttype = c_expand_return (yyvsp[-1].ttype); ;
break;}
case 505:
! #line 2259 "c-parse.y"
{ stmt_count++;
! yyval.ttype = simple_asm_stmt (yyvsp[-2].ttype); ;
break;}
case 506:
#line 2263 "c-parse.y"
{ stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 507:
#line 2268 "c-parse.y"
{ stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 508:
! #line 2273 "c-parse.y"
! { stmt_count++;
! yyval.ttype = build_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
! break;}
! case 509:
! #line 2276 "c-parse.y"
{ tree decl;
stmt_count++;
decl = lookup_label (yyvsp[-1].ttype);
*************** case 508:
*** 4086,4120 ****
yyval.ttype = NULL_TREE;
;
break;}
! case 509:
! #line 2283 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids `goto *expr;'");
stmt_count++;
yyvsp[-1].ttype = convert (ptr_type_node, yyvsp[-1].ttype);
yyval.ttype = add_stmt (build_stmt (GOTO_STMT, yyvsp[-1].ttype)); ;
break;}
! case 510:
! #line 2289 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 511:
! #line 2297 "c-parse.y"
{ stmt_count++;
yyval.ttype = do_case (yyvsp[-1].ttype, NULL_TREE); ;
break;}
! case 512:
! #line 2300 "c-parse.y"
{ stmt_count++;
yyval.ttype = do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 513:
! #line 2303 "c-parse.y"
{ stmt_count++;
yyval.ttype = do_case (NULL_TREE, NULL_TREE); ;
break;}
! case 514:
! #line 2306 "c-parse.y"
{ tree label = define_label (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-4].ttype);
stmt_count++;
if (label)
--- 4093,4127 ----
yyval.ttype = NULL_TREE;
;
break;}
! case 510:
! #line 2288 "c-parse.y"
{ if (pedantic)
pedwarn ("ISO C forbids `goto *expr;'");
stmt_count++;
yyvsp[-1].ttype = convert (ptr_type_node, yyvsp[-1].ttype);
yyval.ttype = add_stmt (build_stmt (GOTO_STMT, yyvsp[-1].ttype)); ;
break;}
! case 511:
! #line 2294 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 512:
! #line 2302 "c-parse.y"
{ stmt_count++;
yyval.ttype = do_case (yyvsp[-1].ttype, NULL_TREE); ;
break;}
! case 513:
! #line 2305 "c-parse.y"
{ stmt_count++;
yyval.ttype = do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
! case 514:
! #line 2308 "c-parse.y"
{ stmt_count++;
yyval.ttype = do_case (NULL_TREE, NULL_TREE); ;
break;}
! case 515:
! #line 2311 "c-parse.y"
{ tree label = define_label (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-4].ttype);
stmt_count++;
if (label)
*************** case 514:
*** 4126,4182 ****
yyval.ttype = NULL_TREE;
;
break;}
! case 515:
! #line 2322 "c-parse.y"
{ emit_line_note (input_filename, lineno);
yyval.ttype = NULL_TREE; ;
break;}
- case 516:
- #line 2325 "c-parse.y"
- { emit_line_note (input_filename, lineno); ;
- break;}
case 517:
#line 2330 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
! case 519:
! #line 2337 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 522:
! #line 2344 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 523:
#line 2349 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ;
break;}
case 524:
! #line 2351 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ;
break;}
case 525:
#line 2356 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
break;}
case 526:
! #line 2358 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
break;}
case 527:
! #line 2368 "c-parse.y"
{ pushlevel (0);
clear_parm_order ();
declare_parm_level (0); ;
break;}
! case 528:
! #line 2372 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
parmlist_tags_warning ();
poplevel (0, 0, 0); ;
break;}
! case 530:
! #line 2380 "c-parse.y"
{ tree parm;
if (pedantic)
pedwarn ("ISO C forbids forward parameter declarations");
--- 4133,4189 ----
yyval.ttype = NULL_TREE;
;
break;}
! case 516:
! #line 2327 "c-parse.y"
{ emit_line_note (input_filename, lineno);
yyval.ttype = NULL_TREE; ;
break;}
case 517:
#line 2330 "c-parse.y"
! { emit_line_note (input_filename, lineno); ;
break;}
! case 518:
! #line 2335 "c-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
! case 520:
! #line 2342 "c-parse.y"
! { yyval.ttype = NULL_TREE; ;
break;}
case 523:
#line 2349 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 524:
! #line 2354 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-3].ttype), yyvsp[-1].ttype); ;
break;}
case 525:
#line 2356 "c-parse.y"
! { yyval.ttype = build_tree_list (build_tree_list (yyvsp[-5].ttype, yyvsp[-3].ttype), yyvsp[-1].ttype); ;
break;}
case 526:
! #line 2361 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
break;}
case 527:
! #line 2363 "c-parse.y"
! { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
! break;}
! case 528:
! #line 2373 "c-parse.y"
{ pushlevel (0);
clear_parm_order ();
declare_parm_level (0); ;
break;}
! case 529:
! #line 2377 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
parmlist_tags_warning ();
poplevel (0, 0, 0); ;
break;}
! case 531:
! #line 2385 "c-parse.y"
{ tree parm;
if (pedantic)
pedwarn ("ISO C forbids forward parameter declarations");
*************** case 530:
*** 4185,4209 ****
TREE_ASM_WRITTEN (parm) = 1;
clear_parm_order (); ;
break;}
! case 531:
! #line 2388 "c-parse.y"
{ /* Dummy action so attributes are in known place
on parser stack. */ ;
break;}
! case 532:
! #line 2391 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
! case 533:
! #line 2393 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
break;}
! case 534:
! #line 2399 "c-parse.y"
{ yyval.ttype = get_parm_info (0); ;
break;}
! case 535:
! #line 2401 "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.
--- 4192,4216 ----
TREE_ASM_WRITTEN (parm) = 1;
clear_parm_order (); ;
break;}
! case 532:
! #line 2393 "c-parse.y"
{ /* Dummy action so attributes are in known place
on parser stack. */ ;
break;}
! case 533:
! #line 2396 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
! case 534:
! #line 2398 "c-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
break;}
! case 535:
! #line 2404 "c-parse.y"
{ yyval.ttype = get_parm_info (0); ;
break;}
! case 536:
! #line 2406 "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 535:
*** 4214,4316 ****
error ("ISO C requires a named argument before `...'");
;
break;}
- case 536:
- #line 2411 "c-parse.y"
- { yyval.ttype = get_parm_info (1); ;
- break;}
case 537:
! #line 2413 "c-parse.y"
! { yyval.ttype = get_parm_info (0); ;
break;}
case 538:
#line 2418 "c-parse.y"
! { push_parm_decl (yyvsp[0].ttype); ;
break;}
case 539:
! #line 2420 "c-parse.y"
{ push_parm_decl (yyvsp[0].ttype); ;
break;}
case 540:
! #line 2427 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 541:
! #line 2432 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 542:
! #line 2437 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 543:
! #line 2440 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 544:
! #line 2446 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 545:
! #line 2454 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 546:
! #line 2459 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 547:
! #line 2464 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 548:
! #line 2467 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 549:
! #line 2473 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 550:
! #line 2479 "c-parse.y"
{ prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype);
all_prefix_attributes = prefix_attributes; ;
break;}
! case 551:
! #line 2488 "c-parse.y"
{ pushlevel (0);
clear_parm_order ();
declare_parm_level (1); ;
break;}
! case 552:
! #line 2492 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
parmlist_tags_warning ();
poplevel (0, 0, 0); ;
break;}
! case 554:
! #line 2500 "c-parse.y"
{ tree t;
for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
if (TREE_VALUE (t) == NULL_TREE)
--- 4221,4323 ----
error ("ISO C requires a named argument before `...'");
;
break;}
case 537:
! #line 2416 "c-parse.y"
! { yyval.ttype = get_parm_info (1); ;
break;}
case 538:
#line 2418 "c-parse.y"
! { yyval.ttype = get_parm_info (0); ;
break;}
case 539:
! #line 2423 "c-parse.y"
{ push_parm_decl (yyvsp[0].ttype); ;
break;}
case 540:
! #line 2425 "c-parse.y"
! { push_parm_decl (yyvsp[0].ttype); ;
! break;}
! case 541:
! #line 2432 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 542:
! #line 2437 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 543:
! #line 2442 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 544:
! #line 2445 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 545:
! #line 2451 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 546:
! #line 2459 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 547:
! #line 2464 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 548:
! #line 2469 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 549:
! #line 2472 "c-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
yyvsp[-1].ttype),
chainon (yyvsp[0].ttype, all_prefix_attributes));
POP_DECLSPEC_STACK; ;
break;}
! case 550:
! #line 2478 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
POP_DECLSPEC_STACK; ;
break;}
! case 551:
! #line 2484 "c-parse.y"
{ prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype);
all_prefix_attributes = prefix_attributes; ;
break;}
! case 552:
! #line 2493 "c-parse.y"
{ pushlevel (0);
clear_parm_order ();
declare_parm_level (1); ;
break;}
! case 553:
! #line 2497 "c-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
parmlist_tags_warning ();
poplevel (0, 0, 0); ;
break;}
! case 555:
! #line 2505 "c-parse.y"
{ tree t;
for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
if (TREE_VALUE (t) == NULL_TREE)
*************** case 554:
*** 4325,4348 ****
YYERROR1;
;
break;}
- case 555:
- #line 2518 "c-parse.y"
- { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
- break;}
case 556:
! #line 2520 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;}
case 557:
! #line 2526 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 558:
! #line 2528 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;}
case 559:
#line 2533 "c-parse.y"
{ yyval.ttype = SAVE_WARN_FLAGS();
pedantic = 0;
warn_pointer_arith = 0;
--- 4332,4355 ----
YYERROR1;
;
break;}
case 556:
! #line 2523 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 557:
! #line 2525 "c-parse.y"
! { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;}
case 558:
! #line 2531 "c-parse.y"
! { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 559:
#line 2533 "c-parse.y"
+ { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+ break;}
+ case 560:
+ #line 2538 "c-parse.y"
{ yyval.ttype = SAVE_WARN_FLAGS();
pedantic = 0;
warn_pointer_arith = 0;
*************** yyerrhandle:
*** 4570,4576 ****
}
return 1;
}
! #line 2539 "c-parse.y"
/* yylex() is a thin wrapper around c_lex(), all it does is translate
--- 4577,4583 ----
}
return 1;
}
! #line 2544 "c-parse.y"
/* yylex() is a thin wrapper around c_lex(), all it does is translate
diff -Nrc3pad gcc-3.2/gcc/c-parse.in gcc-3.2.1/gcc/c-parse.in
*** gcc-3.2/gcc/c-parse.in Tue Apr 16 22:05:54 2002
--- gcc-3.2.1/gcc/c-parse.in Mon Oct 21 18:37:41 2002
*************** alignof:
*** 534,539 ****
--- 534,543 ----
ALIGNOF { skip_evaluation++; }
;
+ typeof:
+ TYPEOF { skip_evaluation++; }
+ ;
+
cast_expr:
unary_expr
| '(' typename ')' cast_expr %prec UNARY
*************** ifobjc
*** 1376,1385 ****
| non_empty_protocolrefs
{ $$ = get_object_reference ($1); }
end ifobjc
! | TYPEOF '(' expr ')'
! { $$ = TREE_TYPE ($3); }
! | TYPEOF '(' typename ')'
! { $$ = groktypename ($3); }
;
/* typespec_nonreserved_attr does not exist. */
--- 1380,1389 ----
| non_empty_protocolrefs
{ $$ = get_object_reference ($1); }
end ifobjc
! | typeof '(' expr ')'
! { skip_evaluation--; $$ = TREE_TYPE ($3); }
! | typeof '(' typename ')'
! { skip_evaluation--; $$ = groktypename ($3); }
;
/* typespec_nonreserved_attr does not exist. */
*************** initelt:
*** 1523,1528 ****
--- 1527,1533 ----
if (pedantic)
pedwarn ("obsolete use of designated initializer with `:'"); }
initval
+ {}
| initval
;
*************** classdecl:
*** 2696,2707 ****
--- 2701,2714 ----
{
objc_declare_class ($2);
}
+ ;
aliasdecl:
ALIAS identifier identifier ';'
{
objc_declare_alias ($2, $3);
}
+ ;
classdef:
INTERFACE identifier protocolrefs '{'
diff -Nrc3pad gcc-3.2/gcc/c-parse.y gcc-3.2.1/gcc/c-parse.y
*** gcc-3.2/gcc/c-parse.y Wed Aug 14 09:32:35 2002
--- gcc-3.2.1/gcc/c-parse.y Tue Nov 19 18:13:17 2002
*************** alignof:
*** 488,493 ****
--- 488,497 ----
ALIGNOF { skip_evaluation++; }
;
+ typeof:
+ TYPEOF { skip_evaluation++; }
+ ;
+
cast_expr:
unary_expr
| '(' typename ')' cast_expr %prec UNARY
*************** typespec_nonreserved_nonattr:
*** 1283,1292 ****
{ /* For a typedef name, record the meaning, not the name.
In case of `foo foo, bar;'. */
$$ = lookup_name ($1); }
! | TYPEOF '(' expr ')'
! { $$ = TREE_TYPE ($3); }
! | TYPEOF '(' typename ')'
! { $$ = groktypename ($3); }
;
/* typespec_nonreserved_attr does not exist. */
--- 1287,1296 ----
{ /* For a typedef name, record the meaning, not the name.
In case of `foo foo, bar;'. */
$$ = lookup_name ($1); }
! | typeof '(' expr ')'
! { skip_evaluation--; $$ = TREE_TYPE ($3); }
! | typeof '(' typename ')'
! { skip_evaluation--; $$ = groktypename ($3); }
;
/* typespec_nonreserved_attr does not exist. */
*************** initelt:
*** 1430,1435 ****
--- 1434,1440 ----
if (pedantic)
pedwarn ("obsolete use of designated initializer with `:'"); }
initval
+ {}
| initval
;
diff -Nrc3pad gcc-3.2/gcc/c-tree.h gcc-3.2.1/gcc/c-tree.h
*** gcc-3.2/gcc/c-tree.h Thu Mar 28 18:49:58 2002
--- gcc-3.2.1/gcc/c-tree.h Sun Sep 1 20:11:07 2002
*************** extern int current_function_returns_null
*** 287,297 ****
extern int current_function_returns_abnormally;
- /* Nonzero means the expression being parsed will never be evaluated.
- This is a count, since unevaluated expressions can nest. */
-
- extern int skip_evaluation;
-
/* Nonzero means `$' can be in an identifier. */
extern int dollars_in_ident;
--- 287,292 ----
diff -Nrc3pad gcc-3.2/gcc/c-typeck.c gcc-3.2.1/gcc/c-typeck.c
*** gcc-3.2/gcc/c-typeck.c Fri Mar 22 01:53:39 2002
--- gcc-3.2.1/gcc/c-typeck.c Sun Sep 1 20:11:07 2002
*************** build_external_ref (id, fun)
*** 1493,1499 ****
if (TREE_TYPE (ref) == error_mark_node)
return error_mark_node;
! assemble_external (ref);
TREE_USED (ref) = 1;
if (TREE_CODE (ref) == CONST_DECL)
--- 1493,1500 ----
if (TREE_TYPE (ref) == error_mark_node)
return error_mark_node;
! if (!skip_evaluation)
! assemble_external (ref);
TREE_USED (ref) = 1;
if (TREE_CODE (ref) == CONST_DECL)
diff -Nrc3pad gcc-3.2/gcc/calls.c gcc-3.2.1/gcc/calls.c
*** gcc-3.2/gcc/calls.c Thu Apr 4 23:28:47 2002
--- gcc-3.2.1/gcc/calls.c Fri Nov 8 22:12:37 2002
*************** Software Foundation, 59 Temple Place - S
*** 46,54 ****
--- 46,56 ----
#ifdef PUSH_ROUNDING
+ #ifndef PUSH_ARGS_REVERSED
#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
#define PUSH_ARGS_REVERSED PUSH_ARGS
#endif
+ #endif
#endif
*************** expand_call (exp, target, ignore)
*** 2708,2713 ****
--- 2710,2721 ----
if (pass == 0)
{
argblock = virtual_incoming_args_rtx;
+ argblock
+ #ifdef STACK_GROWS_DOWNWARD
+ = plus_constant (argblock, current_function_pretend_args_size);
+ #else
+ = plus_constant (argblock, -current_function_pretend_args_size);
+ #endif
stored_args_map = sbitmap_alloc (args_size.constant);
sbitmap_zero (stored_args_map);
}
*************** emit_library_call_value_1 (retval, orgfu
*** 3666,3671 ****
--- 3674,3687 ----
#endif
;
+ /* If this was a CONST function, it is now PURE since
+ it now reads memory. */
+ if (flags & ECF_CONST)
+ {
+ flags &= ~ECF_CONST;
+ flags |= ECF_PURE;
+ }
+
if (GET_MODE (val) == MEM && ! must_copy)
slot = val;
else if (must_copy)
*************** store_one_arg (arg, argblock, flags, var
*** 4268,4274 ****
struct arg_data *arg;
rtx argblock;
int flags;
! int variable_size ATTRIBUTE_UNUSED;
int reg_parm_stack_space;
{
tree pval = arg->tree_value;
--- 4284,4290 ----
struct arg_data *arg;
rtx argblock;
int flags;
! int variable_size;
int reg_parm_stack_space;
{
tree pval = arg->tree_value;
*************** store_one_arg (arg, argblock, flags, var
*** 4343,4356 ****
emit_move_insn (arg->save_area, stack_area);
}
}
}
- /* Now that we have saved any slots that will be overwritten by this
- store, mark all slots this store will use. We must do this before
- we actually expand the argument since the expansion itself may
- trigger library calls which might need to use the same stack slot. */
- if (argblock && ! variable_size && arg->stack)
- for (i = lower_bound; i < upper_bound; i++)
- stack_usage_map[i] = 1;
}
/* If this isn't going to be placed on both the stack and in registers,
--- 4359,4380 ----
emit_move_insn (arg->save_area, stack_area);
}
}
+
+ /* Now that we have saved any slots that will be overwritten
+ by this store, mark all slots this store will use. We
+ must do this before we actually expand the argument since
+ the expansion itself may trigger library calls which might
+ need to use the same stack slot. We only do it if we can't
+ pass all arguments to a library call in registers. */
+ if (arg->partial)
+ {
+ for (i = lower_bound; i < upper_bound; i++)
+ stack_usage_map[i] = 1;
+
+ /* Set it so that we don't do it again. */
+ variable_size = 1;
+ }
}
}
/* If this isn't going to be placed on both the stack and in registers,
*************** store_one_arg (arg, argblock, flags, var
*** 4491,4497 ****
emit_push_insn for BLKmode is careful to avoid it. */
excess = (arg->size.constant - int_size_in_bytes (TREE_TYPE (pval))
+ partial * UNITS_PER_WORD);
! size_rtx = expr_size (pval);
}
if ((flags & ECF_SIBCALL) && GET_CODE (arg->value) == MEM)
--- 4515,4522 ----
emit_push_insn for BLKmode is careful to avoid it. */
excess = (arg->size.constant - int_size_in_bytes (TREE_TYPE (pval))
+ partial * UNITS_PER_WORD);
! size_rtx = expand_expr (size_in_bytes (TREE_TYPE (pval)),
! NULL_RTX, TYPE_MODE (sizetype), 0);
}
if ((flags & ECF_SIBCALL) && GET_CODE (arg->value) == MEM)
*************** store_one_arg (arg, argblock, flags, var
*** 4577,4582 ****
--- 4602,4612 ----
arg->value = arg->stack_slot;
}
+ if (ACCUMULATE_OUTGOING_ARGS && !(flags & ECF_SIBCALL)
+ && argblock && ! variable_size && arg->stack)
+ for (i = lower_bound; i < upper_bound; i++)
+ stack_usage_map[i] = 1;
+
/* Once we have pushed something, pops can't safely
be deferred during the rest of the arguments. */
NO_DEFER_POP;
diff -Nrc3pad gcc-3.2/gcc/cfganal.c gcc-3.2.1/gcc/cfganal.c
*** gcc-3.2/gcc/cfganal.c Fri Feb 8 00:35:15 2002
--- gcc-3.2.1/gcc/cfganal.c Thu Nov 7 00:22:48 2002
*************** static void flow_dfs_compute_reverse_fin
*** 56,62 ****
--- 56,86 ----
static void remove_fake_successors PARAMS ((basic_block));
static bool need_fake_edge_p PARAMS ((rtx));
static bool keep_with_call_p PARAMS ((rtx));
+ static bool flow_active_insn_p PARAMS ((rtx));
+ /* Like active_insn_p, except keep the return value clobber around
+ even after reload. */
+
+ static bool
+ flow_active_insn_p (insn)
+ rtx insn;
+ {
+ if (active_insn_p (insn))
+ return true;
+
+ /* A clobber of the function return value exists for buggy
+ programs that fail to return a value. It's effect is to
+ keep the return value from being live across the entire
+ function. If we allow it to be skipped, we introduce the
+ possibility for register livetime aborts. */
+ if (GET_CODE (PATTERN (insn)) == CLOBBER
+ && GET_CODE (XEXP (PATTERN (insn), 0)) == REG
+ && REG_FUNCTION_VALUE_P (XEXP (PATTERN (insn), 0)))
+ return true;
+
+ return false;
+ }
+
/* Return true if the block has no effect and only forwards control flow to
its single destination. */
*************** forwarder_block_p (bb)
*** 71,82 ****
return false;
for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn))
! if (INSN_P (insn) && active_insn_p (insn))
return false;
return (!INSN_P (insn)
|| (GET_CODE (insn) == JUMP_INSN && simplejump_p (insn))
! || !active_insn_p (insn));
}
/* Return nonzero if we can reach target from src by falling through. */
--- 95,106 ----
return false;
for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn))
! if (INSN_P (insn) && flow_active_insn_p (insn))
return false;
return (!INSN_P (insn)
|| (GET_CODE (insn) == JUMP_INSN && simplejump_p (insn))
! || !flow_active_insn_p (insn));
}
/* Return nonzero if we can reach target from src by falling through. */
diff -Nrc3pad gcc-3.2/gcc/cfgcleanup.c gcc-3.2.1/gcc/cfgcleanup.c
*** gcc-3.2/gcc/cfgcleanup.c Mon Jun 10 21:39:45 2002
--- gcc-3.2.1/gcc/cfgcleanup.c Sat Nov 16 01:55:47 2002
*************** try_optimize_cfg (mode)
*** 1638,1644 ****
/* If the jump insn has side effects,
we can't kill the edge. */
&& (GET_CODE (b->end) != JUMP_INSN
! || onlyjump_p (b->end))
&& merge_blocks (s, b, c, mode))
changed_here = true;
--- 1638,1645 ----
/* If the jump insn has side effects,
we can't kill the edge. */
&& (GET_CODE (b->end) != JUMP_INSN
! || (onlyjump_p (b->end)
! && !tablejump_p (b->end)))
&& merge_blocks (s, b, c, mode))
changed_here = true;
diff -Nrc3pad gcc-3.2/gcc/cfgrtl.c gcc-3.2.1/gcc/cfgrtl.c
*** gcc-3.2/gcc/cfgrtl.c Mon Jul 15 16:19:38 2002
--- gcc-3.2.1/gcc/cfgrtl.c Mon Nov 11 03:35:59 2002
*************** try_redirect_by_replacing_jump (e, targe
*** 665,670 ****
--- 665,671 ----
edge tmp;
rtx set;
int fallthru = 0;
+ rtx table;
/* Verify that all targets will be TARGET. */
for (tmp = src->succ; tmp; tmp = tmp->succ_next)
*************** try_redirect_by_replacing_jump (e, targe
*** 674,679 ****
--- 675,687 ----
if (tmp || !onlyjump_p (insn))
return false;
+ if (reload_completed && JUMP_LABEL (insn)
+ && (table = NEXT_INSN (JUMP_LABEL (insn))) != NULL_RTX
+ && GET_CODE (table) == JUMP_INSN
+ && (GET_CODE (PATTERN (table)) == ADDR_VEC
+ || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC))
+ return false;
+
/* Avoid removing branch with side effects. */
set = single_set (insn);
if (!set || side_effects_p (set))
diff -Nrc3pad gcc-3.2/gcc/collect2.c gcc-3.2.1/gcc/collect2.c
*** gcc-3.2/gcc/collect2.c Tue Feb 5 16:33:31 2002
--- gcc-3.2.1/gcc/collect2.c Fri Aug 16 18:03:06 2002
*************** is_ctor_dtor (s)
*** 577,582 ****
--- 577,591 ----
const char *orig_s = s;
static const struct names special[] = {
+ #ifndef NO_DOLLAR_IN_LABEL
+ { "GLOBAL__I$", sizeof ("GLOBAL__I$")-1, 1, 0 },
+ { "GLOBAL__D$", sizeof ("GLOBAL__D$")-1, 2, 0 },
+ #else
+ #ifndef NO_DOT_IN_LABEL
+ { "GLOBAL__I.", sizeof ("GLOBAL__I.")-1, 1, 0 },
+ { "GLOBAL__D.", sizeof ("GLOBAL__D.")-1, 2, 0 },
+ #endif /* NO_DOT_IN_LABEL */
+ #endif /* NO_DOLLAR_IN_LABEL */
{ "GLOBAL__I_", sizeof ("GLOBAL__I_")-1, 1, 0 },
{ "GLOBAL__D_", sizeof ("GLOBAL__D_")-1, 2, 0 },
{ "GLOBAL__F_", sizeof ("GLOBAL__F_")-1, 5, 0 },
diff -Nrc3pad gcc-3.2/gcc/config/alpha/alpha.md gcc-3.2.1/gcc/config/alpha/alpha.md
*** gcc-3.2/gcc/config/alpha/alpha.md Wed Apr 10 05:14:55 2002
--- gcc-3.2.1/gcc/config/alpha/alpha.md Sun Sep 8 05:30:19 2002
*************** fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi
*** 2374,2380 ****
(define_expand "abstf2"
[(parallel [(set (match_operand:TF 0 "register_operand" "")
! (neg:TF (match_operand:TF 1 "reg_or_fp0_operand" "")))
(use (match_dup 2))])]
"TARGET_HAS_XFLOATING_LIBS"
{
--- 2374,2380 ----
(define_expand "abstf2"
[(parallel [(set (match_operand:TF 0 "register_operand" "")
! (abs:TF (match_operand:TF 1 "reg_or_fp0_operand" "")))
(use (match_dup 2))])]
"TARGET_HAS_XFLOATING_LIBS"
{
diff -Nrc3pad gcc-3.2/gcc/config/arm/arm.c gcc-3.2.1/gcc/config/arm/arm.c
*** gcc-3.2/gcc/config/arm/arm.c Sun Jul 21 12:09:02 2002
--- gcc-3.2.1/gcc/config/arm/arm.c Fri Nov 1 14:40:23 2002
*************** use_return_insn (iscond)
*** 890,895 ****
--- 890,896 ----
{
int regno;
unsigned int func_type;
+ unsigned long saved_int_regs;
/* Never use a return instruction before reload has run. */
if (!reload_completed)
*************** use_return_insn (iscond)
*** 912,934 ****
&& !frame_pointer_needed))
return 0;
/* Can't be done if interworking with Thumb, and any registers have been
! stacked. Similarly, on StrongARM, conditional returns are expensive
! if they aren't taken and registers have been stacked. */
! if (iscond && arm_is_strong && frame_pointer_needed)
return 0;
!
! if ((iscond && arm_is_strong)
! || TARGET_INTERWORK)
{
! for (regno = 0; regno <= LAST_ARM_REGNUM; regno++)
! if (regs_ever_live[regno] && !call_used_regs[regno])
! return 0;
if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
return 0;
}
!
/* Can't be done if any of the FPU regs are pushed,
since this also requires an insn. */
if (TARGET_HARD_FLOAT)
--- 913,943 ----
&& !frame_pointer_needed))
return 0;
+ saved_int_regs = arm_compute_save_reg_mask ();
+
/* Can't be done if interworking with Thumb, and any registers have been
! stacked. */
! if (TARGET_INTERWORK && saved_int_regs != 0)
return 0;
!
! /* On StrongARM, conditional returns are expensive if they aren't
! taken and multiple registers have been stacked. */
! if (iscond && arm_is_strong)
{
! /* Conditional return when just the LR is stored is a simple
! conditional-load instruction, that's not expensive. */
! if (saved_int_regs != 0 && saved_int_regs != (1 << LR_REGNUM))
! return 0;
if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
return 0;
}
!
! /* If there are saved registers but the LR isn't saved, then we need
! two instructions for the return. */
! if (saved_int_regs && !(saved_int_regs & (1 << LR_REGNUM)))
! return 0;
!
/* Can't be done if any of the FPU regs are pushed,
since this also requires an insn. */
if (TARGET_HARD_FLOAT)
diff -Nrc3pad gcc-3.2/gcc/config/arm/arm.h gcc-3.2.1/gcc/config/arm/arm.h
*** gcc-3.2/gcc/config/arm/arm.h Wed Mar 13 05:35:51 2002
--- gcc-3.2.1/gcc/config/arm/arm.h Mon Sep 30 11:54:00 2002
*************** enum reg_class
*** 1093,1106 ****
/* The class value for index registers, and the one for base regs. */
#define INDEX_REG_CLASS (TARGET_THUMB ? LO_REGS : GENERAL_REGS)
! #define BASE_REG_CLASS (TARGET_THUMB ? BASE_REGS : GENERAL_REGS)
! /* For the Thumb the high registers cannot be used as base
! registers when addressing quanitities in QI or HI mode. */
#define MODE_BASE_REG_CLASS(MODE) \
! (TARGET_ARM ? BASE_REGS : \
! (((MODE) == QImode || (MODE) == HImode || (MODE) == VOIDmode) \
! ? LO_REGS : BASE_REGS))
/* When SMALL_REGISTER_CLASSES is nonzero, the compiler allows
registers explicitly used in the rtl to be used as spill registers
--- 1093,1108 ----
/* The class value for index registers, and the one for base regs. */
#define INDEX_REG_CLASS (TARGET_THUMB ? LO_REGS : GENERAL_REGS)
! #define BASE_REG_CLASS (TARGET_THUMB ? LO_REGS : GENERAL_REGS)
! /* For the Thumb the high registers cannot be used as base registers
! when addressing quanitities in QI or HI mode; if we don't know the
! mode, then we must be conservative. After reload we must also be
! conservative, since we can't support SP+reg addressing, and we
! can't fix up any bad substitutions. */
#define MODE_BASE_REG_CLASS(MODE) \
! (TARGET_ARM ? GENERAL_REGS : \
! (((MODE) == SImode && !reload_completed) ? BASE_REGS : LO_REGS))
/* When SMALL_REGISTER_CLASSES is nonzero, the compiler allows
registers explicitly used in the rtl to be used as spill registers
diff -Nrc3pad gcc-3.2/gcc/config/arm/arm.md gcc-3.2.1/gcc/config/arm/arm.md
*** gcc-3.2/gcc/config/arm/arm.md Sun Jul 21 12:09:03 2002
--- gcc-3.2.1/gcc/config/arm/arm.md Fri Sep 20 14:01:24 2002
***************
*** 1837,1843 ****
(match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "const_int_operand" "n")
(match_operand:SI 3 "const_int_operand" "n"))
! (const_int 0)))]
"TARGET_ARM
&& (INTVAL (operands[3]) >= 0 && INTVAL (operands[3]) < 32
&& INTVAL (operands[2]) > 0
--- 1837,1844 ----
(match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "const_int_operand" "n")
(match_operand:SI 3 "const_int_operand" "n"))
! (const_int 0)))
! (clobber (reg:CC CC_REGNUM))]
"TARGET_ARM
&& (INTVAL (operands[3]) >= 0 && INTVAL (operands[3]) < 32
&& INTVAL (operands[2]) > 0
***************
*** 8947,8953 ****
[(set (match_operand:SI 0 "s_register_operand" "=r")
(sign_extract:SI (match_operand:SI 1 "s_register_operand" "r")
(const_int 1)
! (match_operand:SI 2 "const_int_operand" "n")))]
"TARGET_ARM"
"*
operands[2] = GEN_INT (1 << INTVAL (operands[2]));
--- 8948,8955 ----
[(set (match_operand:SI 0 "s_register_operand" "=r")
(sign_extract:SI (match_operand:SI 1 "s_register_operand" "r")
(const_int 1)
! (match_operand:SI 2 "const_int_operand" "n")))
! (clobber (reg:CC CC_REGNUM))]
"TARGET_ARM"
"*
operands[2] = GEN_INT (1 << INTVAL (operands[2]));
***************
*** 8963,8969 ****
(not:SI
(sign_extract:SI (match_operand:SI 1 "s_register_operand" "r")
(const_int 1)
! (match_operand:SI 2 "const_int_operand" "n"))))]
"TARGET_ARM"
"*
operands[2] = GEN_INT (1 << INTVAL (operands[2]));
--- 8965,8972 ----
(not:SI
(sign_extract:SI (match_operand:SI 1 "s_register_operand" "r")
(const_int 1)
! (match_operand:SI 2 "const_int_operand" "n"))))
! (clobber (reg:CC CC_REGNUM))]
"TARGET_ARM"
"*
operands[2] = GEN_INT (1 << INTVAL (operands[2]));
diff -Nrc3pad gcc-3.2/gcc/config/avr/avr.md gcc-3.2.1/gcc/config/avr/avr.md
*** gcc-3.2/gcc/config/avr/avr.md Thu Mar 21 22:14:07 2002
--- gcc-3.2.1/gcc/config/avr/avr.md Sun Sep 1 18:46:20 2002
***************
*** 1,7 ****
;; -*- Mode: Scheme -*-
;; Machine description for GNU compiler,
;; for ATMEL AVR micro controllers.
! ;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
;; Contributed by Denis Chertykov (denisc@overta.ru)
;; This file is part of GNU CC.
--- 1,7 ----
;; -*- Mode: Scheme -*-
;; Machine description for GNU compiler,
;; for ATMEL AVR micro controllers.
! ;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
;; Contributed by Denis Chertykov (denisc@overta.ru)
;; This file is part of GNU CC.
***************
*** 2250,2255 ****
--- 2250,2256 ----
&& test_hard_reg_class (LD_REGS, operands[1]))"
"*
{
+ CC_STATUS_INIT;
if (test_hard_reg_class (ADDW_REGS, operands[0]))
output_asm_insn (AS2 (sbiw,%0,1) CR_TAB
AS2 (sbc,%C0,__zero_reg__) CR_TAB
***************
*** 2288,2293 ****
--- 2289,2295 ----
&& test_hard_reg_class (LD_REGS, operands[1]))"
"*
{
+ CC_STATUS_INIT;
if (test_hard_reg_class (ADDW_REGS, operands[0]))
output_asm_insn (AS2 (sbiw,%0,1), operands);
else
***************
*** 2319,2324 ****
--- 2321,2329 ----
"test_hard_reg_class (LD_REGS, operands[0])"
"*
{
+ CC_STATUS_INIT;
+ cc_status.value1 = operands[0];
+ cc_status.flags |= CC_OVERFLOW_UNUSABLE;
output_asm_insn (AS2 (subi,%A0,1), operands);
switch (avr_jump_mode (operands[1],insn))
{
diff -Nrc3pad gcc-3.2/gcc/config/i386/i386.c gcc-3.2.1/gcc/config/i386/i386.c
*** gcc-3.2/gcc/config/i386/i386.c Wed Aug 7 18:10:57 2002
--- gcc-3.2.1/gcc/config/i386/i386.c Thu Oct 31 18:39:32 2002
*************** struct processor_costs athlon_cost = {
*** 284,308 ****
8, /* "large" insn */
9, /* MOVE_RATIO */
4, /* cost for loading QImode using movzbl */
! {4, 5, 4}, /* cost of loading integer registers
in QImode, HImode and SImode.
Relative to reg-reg move (2). */
! {2, 3, 2}, /* cost of storing integer registers */
4, /* cost of reg,reg fld/fst */
! {6, 6, 20}, /* cost of loading fp registers
in SFmode, DFmode and XFmode */
! {4, 4, 16}, /* cost of loading integer registers */
2, /* cost of moving MMX register */
! {2, 2}, /* cost of loading MMX registers
in SImode and DImode */
! {2, 2}, /* cost of storing MMX registers
in SImode and DImode */
2, /* cost of moving SSE register */
! {2, 2, 8}, /* cost of loading SSE registers
in SImode, DImode and TImode */
! {2, 2, 8}, /* cost of storing SSE registers
in SImode, DImode and TImode */
! 6, /* MMX or SSE register to integer */
64, /* size of prefetch block */
6, /* number of parallel prefetches */
};
--- 284,308 ----
8, /* "large" insn */
9, /* MOVE_RATIO */
4, /* cost for loading QImode using movzbl */
! {3, 4, 3}, /* cost of loading integer registers
in QImode, HImode and SImode.
Relative to reg-reg move (2). */
! {3, 4, 3}, /* cost of storing integer registers */
4, /* cost of reg,reg fld/fst */
! {4, 4, 12}, /* cost of loading fp registers
in SFmode, DFmode and XFmode */
! {6, 6, 8}, /* cost of loading integer registers */
2, /* cost of moving MMX register */
! {4, 4}, /* cost of loading MMX registers
in SImode and DImode */
! {4, 4}, /* cost of storing MMX registers
in SImode and DImode */
2, /* cost of moving SSE register */
! {4, 4, 6}, /* cost of loading SSE registers
in SImode, DImode and TImode */
! {4, 4, 5}, /* cost of storing SSE registers
in SImode, DImode and TImode */
! 5, /* MMX or SSE register to integer */
64, /* size of prefetch block */
6, /* number of parallel prefetches */
};
*************** override_options ()
*** 906,911 ****
--- 906,932 ----
int const pta_size = sizeof (processor_alias_table) / sizeof (struct pta);
+ /* Set the default values for switches whose default depends on TARGET_64BIT
+ in case they weren't overwriten by command line options. */
+ if (TARGET_64BIT)
+ {
+ if (flag_omit_frame_pointer == 2)
+ flag_omit_frame_pointer = 1;
+ if (flag_asynchronous_unwind_tables == 2)
+ flag_asynchronous_unwind_tables = 1;
+ if (flag_pcc_struct_return == 2)
+ flag_pcc_struct_return = 0;
+ }
+ else
+ {
+ if (flag_omit_frame_pointer == 2)
+ flag_omit_frame_pointer = 0;
+ if (flag_asynchronous_unwind_tables == 2)
+ flag_asynchronous_unwind_tables = 0;
+ if (flag_pcc_struct_return == 2)
+ flag_pcc_struct_return = 1;
+ }
+
#ifdef SUBTARGET_OVERRIDE_OPTIONS
SUBTARGET_OVERRIDE_OPTIONS;
#endif
*************** optimization_options (level, size)
*** 1213,1225 ****
if (level > 1)
flag_schedule_insns = 0;
#endif
! if (TARGET_64BIT && optimize >= 1)
! flag_omit_frame_pointer = 1;
! if (TARGET_64BIT)
! {
! flag_pcc_struct_return = 0;
! flag_asynchronous_unwind_tables = 1;
! }
}
/* Table of valid machine attributes. */
--- 1234,1247 ----
if (level > 1)
flag_schedule_insns = 0;
#endif
! /* The default values of these switches depend on the TARGET_64BIT
! that is not known at this moment. Mark these values with 2 and
! let user the to override these. In case there is no command line option
! specifying them, we will set the defaults in override_options. */
! if (optimize >= 1)
! flag_omit_frame_pointer = 2;
! flag_pcc_struct_return = 2;
! flag_asynchronous_unwind_tables = 2;
}
/* Table of valid machine attributes. */
*************** classify_argument (mode, type, classes,
*** 1649,1655 ****
{
int bytes =
(mode == BLKmode) ? int_size_in_bytes (type) : (int) GET_MODE_SIZE (mode);
! int words = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
if (type && AGGREGATE_TYPE_P (type))
{
--- 1671,1681 ----
{
int bytes =
(mode == BLKmode) ? int_size_in_bytes (type) : (int) GET_MODE_SIZE (mode);
! int words = (bytes + (bit_offset % 64) / 8 + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
!
! /* Variable sized structures are always passed on the stack. */
! if (mode == BLKmode && type && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
! return 0;
if (type && AGGREGATE_TYPE_P (type))
{
*************** q_regs_operand (op, mode)
*** 3206,3212 ****
return 0;
if (GET_CODE (op) == SUBREG)
op = SUBREG_REG (op);
! return QI_REG_P (op);
}
/* Return true if op is a NON_Q_REGS class register. */
--- 3232,3238 ----
return 0;
if (GET_CODE (op) == SUBREG)
op = SUBREG_REG (op);
! return ANY_QI_REG_P (op);
}
/* Return true if op is a NON_Q_REGS class register. */
*************** print_operand_address (file, addr)
*** 6123,6129 ****
int scale;
if (! ix86_decompose_address (addr, &parts))
! abort ();
base = parts.base;
index = parts.index;
--- 6149,6158 ----
int scale;
if (! ix86_decompose_address (addr, &parts))
! {
! output_operand_lossage ("Wrong address expression or operand constraint");
! return;
! }
base = parts.base;
index = parts.index;
*************** ix86_expand_vector_move (mode, operands)
*** 6855,6862 ****
/* Make operand1 a register if it isn't already. */
if ((reload_in_progress | reload_completed) == 0
&& !register_operand (operands[0], mode)
! && !register_operand (operands[1], mode)
! && operands[1] != CONST0_RTX (mode))
{
rtx temp = force_reg (GET_MODE (operands[1]), operands[1]);
emit_move_insn (operands[0], temp);
--- 6884,6890 ----
/* Make operand1 a register if it isn't already. */
if ((reload_in_progress | reload_completed) == 0
&& !register_operand (operands[0], mode)
! && !register_operand (operands[1], mode))
{
rtx temp = force_reg (GET_MODE (operands[1]), operands[1]);
emit_move_insn (operands[0], temp);
*************** ix86_expand_int_movcc (operands)
*** 8237,8243 ****
clob = gen_rtx_CLOBBER (VOIDmode, clob);
tmp = gen_rtx_SET (VOIDmode, out, tmp);
! tmp = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, tmp, clob));
emit_insn (tmp);
}
else
--- 8265,8271 ----
clob = gen_rtx_CLOBBER (VOIDmode, clob);
tmp = gen_rtx_SET (VOIDmode, out, tmp);
! tmp = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, copy_rtx (tmp), clob));
emit_insn (tmp);
}
else
*************** static const struct builtin_description
*** 10954,10967 ****
{ MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpeqss", IX86_BUILTIN_CMPEQSS, EQ, 0 },
{ MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpltss", IX86_BUILTIN_CMPLTSS, LT, 0 },
{ MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpless", IX86_BUILTIN_CMPLESS, LE, 0 },
- { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgtss", IX86_BUILTIN_CMPGTSS, LT, 1 },
- { MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpgess", IX86_BUILTIN_CMPGESS, LE, 1 },
{ MASK_SSE, CODE_FOR_vmmaskcmpv4sf3, "__builtin_ia32_cmpunordss", IX86_BUILTIN_CMPUNORDSS, UNORDERED, 0 },
{ MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpneqss", IX86_BUILTIN_CMPNEQSS, EQ, 0 },
{ MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnltss", IX86_BUILTIN_CMPNLTSS, LT, 0 },
{ MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpnless", IX86_BUILTIN_CMPNLESS, LE, 0 },
- { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngtss", IX86_BUILTIN_CMPNGTSS, LT, 1 },
- { MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpngess", IX86_BUILTIN_CMPNGESS, LE, 1 },
{ MASK_SSE, CODE_FOR_vmmaskncmpv4sf3, "__builtin_ia32_cmpordss", IX86_BUILTIN_CMPORDSS, UNORDERED, 0 },
{ MASK_SSE, CODE_FOR_sminv4sf3, "__builtin_ia32_minps", IX86_BUILTIN_MINPS, 0, 0 },
--- 10982,10991 ----
*************** ix86_register_move_cost (mode, class1, c
*** 12355,12371 ****
enum reg_class class1, class2;
{
/* In case we require secondary memory, compute cost of the store followed
! by load. In case of copying from general_purpose_register we may emit
! multiple stores followed by single load causing memory size mismatch
! stall. Count this as arbitarily high cost of 20. */
if (ix86_secondary_memory_needed (class1, class2, mode, 0))
{
! int add_cost = 0;
if (CLASS_MAX_NREGS (class1, mode) > CLASS_MAX_NREGS (class2, mode))
! add_cost = 20;
! return (MEMORY_MOVE_COST (mode, class1, 0)
! + MEMORY_MOVE_COST (mode, class2, 1) + add_cost);
}
/* Moves between SSE/MMX and integer unit are expensive. */
if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2)
|| SSE_CLASS_P (class1) != SSE_CLASS_P (class2))
--- 12379,12411 ----
enum reg_class class1, class2;
{
/* In case we require secondary memory, compute cost of the store followed
! by load. In order to avoid bad register allocation choices, we need
! for this to be *at least* as high as the symmetric MEMORY_MOVE_COST. */
!
if (ix86_secondary_memory_needed (class1, class2, mode, 0))
{
! int cost = 1;
!
! cost += MAX (MEMORY_MOVE_COST (mode, class1, 0),
! MEMORY_MOVE_COST (mode, class1, 1));
! cost += MAX (MEMORY_MOVE_COST (mode, class2, 0),
! MEMORY_MOVE_COST (mode, class2, 1));
!
! /* In case of copying from general_purpose_register we may emit multiple
! stores followed by single load causing memory size mismatch stall.
! Count this as arbitarily high cost of 20. */
if (CLASS_MAX_NREGS (class1, mode) > CLASS_MAX_NREGS (class2, mode))
! cost += 20;
!
! /* In the case of FP/MMX moves, the registers actually overlap, and we
! have to switch modes in order to treat them differently. */
! if ((MMX_CLASS_P (class1) && MAYBE_FLOAT_CLASS_P (class2))
! || (MMX_CLASS_P (class2) && MAYBE_FLOAT_CLASS_P (class1)))
! cost += 20;
!
! return cost;
}
+
/* Moves between SSE/MMX and integer unit are expensive. */
if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2)
|| SSE_CLASS_P (class1) != SSE_CLASS_P (class2))
diff -Nrc3pad gcc-3.2/gcc/config/i386/i386.h gcc-3.2.1/gcc/config/i386/i386.h
*** gcc-3.2/gcc/config/i386/i386.h Mon Jul 15 06:54:36 2002
--- gcc-3.2.1/gcc/config/i386/i386.h Thu Nov 7 17:46:18 2002
*************** extern int ix86_arch;
*** 584,592 ****
%{march=pentium-mmx:-D__i586 -D__i586__ -D__pentium -D__pentium__ \
-D__pentium__mmx__ \
%{!mcpu*:-D__tune_i586__ -D__tune_pentium__ -D__tune_pentium_mmx__}}\
! %{march=pentiumpro|march=i686:-D__i686 -D__i686__ \
-D__pentiumpro -D__pentiumpro__ \
%{!mcpu*:-D__tune_i686__ -D__tune_pentiumpro__ }}\
%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-D__tune_k6__ }}\
%{march=k6-2:-D__k6 -D__k6__ -D__k6_2__ \
%{!mcpu*:-D__tune_k6__ -D__tune_k6_2__ }}\
--- 584,596 ----
%{march=pentium-mmx:-D__i586 -D__i586__ -D__pentium -D__pentium__ \
-D__pentium__mmx__ \
%{!mcpu*:-D__tune_i586__ -D__tune_pentium__ -D__tune_pentium_mmx__}}\
! %{march=pentiumpro|march=i686|march=pentium2|march=pentium3:-D__i686 -D__i686__ \
-D__pentiumpro -D__pentiumpro__ \
%{!mcpu*:-D__tune_i686__ -D__tune_pentiumpro__ }}\
+ %{march=march=pentium2|march=pentium3: -D__pentium2 -D__pentium2__\
+ %{!mcpu*:-D__tune_pentium2__ }}\
+ %{march=pentium3: -D__pentium3 -D__pentium3__\
+ %{!mcpu*:-D__tune_pentium3__ }}\
%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-D__tune_k6__ }}\
%{march=k6-2:-D__k6 -D__k6__ -D__k6_2__ \
%{!mcpu*:-D__tune_k6__ -D__tune_k6_2__ }}\
*************** extern int ix86_arch;
*** 601,607 ****
%{m386|mcpu=i386:-D__tune_i386__ }\
%{m486|mcpu=i486:-D__tune_i486__ }\
%{mpentium|mcpu=pentium|mcpu=i586|mcpu=pentium-mmx:-D__tune_i586__ -D__tune_pentium__ }\
! %{mpentiumpro|mcpu=pentiumpro|mcpu=i686|cpu=pentium2|cpu=pentium3:-D__tune_i686__ \
-D__tune_pentiumpro__ }\
%{mcpu=k6|mcpu=k6-2|mcpu=k6-3:-D__tune_k6__ }\
%{mcpu=athlon|mcpu=athlon-tbird|mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:\
--- 605,611 ----
%{m386|mcpu=i386:-D__tune_i386__ }\
%{m486|mcpu=i486:-D__tune_i486__ }\
%{mpentium|mcpu=pentium|mcpu=i586|mcpu=pentium-mmx:-D__tune_i586__ -D__tune_pentium__ }\
! %{mpentiumpro|mcpu=pentiumpro|mcpu=i686|mcpu=pentium2|mcpu=pentium3:-D__tune_i686__ \
-D__tune_pentiumpro__ }\
%{mcpu=k6|mcpu=k6-2|mcpu=k6-3:-D__tune_k6__ }\
%{mcpu=athlon|mcpu=athlon-tbird|mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:\
*************** extern int ix86_arch;
*** 609,625 ****
%{mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:\
-D__tune_athlon_sse__ }\
%{mcpu=pentium4:-D__tune_pentium4__ }\
! %{march=athlon-xp|march=athlon-mp|march=pentium3|march=pentium4:\
-D__SSE__ }\
%{march=pentium-mmx|march=k6|march=k6-2|march=k6-3\
|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
! |march=athlon-mp|march=pentium2|march=pentium3|march=pentium4: -D__MMX__ }\
%{march=k6-2|march=k6-3\
|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
! |march=athlon-mp: -D__3dNOW__ }\
%{march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
|march=athlon-mp: -D__3dNOW_A__ }\
! %{march=pentium4: -D__SSE2__ }\
%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}"
#ifndef CPP_CPU_SPEC
--- 613,629 ----
%{mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:\
-D__tune_athlon_sse__ }\
%{mcpu=pentium4:-D__tune_pentium4__ }\
! %{march=athlon-xp|march=athlon-mp|march=pentium3|march=pentium4|msse|msse2:\
-D__SSE__ }\
%{march=pentium-mmx|march=k6|march=k6-2|march=k6-3\
|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
! |march=athlon-mp|march=pentium2|march=pentium3|march=pentium4|mmx|msse|m3dnow: -D__MMX__ }\
%{march=k6-2|march=k6-3\
|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
! |march=athlon-mp|m3dnow: -D__3dNOW__ }\
%{march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp\
|march=athlon-mp: -D__3dNOW_A__ }\
! %{march=pentium4|msse2: -D__SSE2__ }\
%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}"
#ifndef CPP_CPU_SPEC
*************** extern int ix86_arch;
*** 756,763 ****
#define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN \
(ix86_preferred_stack_boundary > STACK_BOUNDARY && !TARGET_64BIT)
! /* Allocation boundary for the code of a function. */
! #define FUNCTION_BOUNDARY 16
/* Alignment of field after `int : 0' in a structure. */
--- 760,770 ----
#define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN \
(ix86_preferred_stack_boundary > STACK_BOUNDARY && !TARGET_64BIT)
! /* Minimum allocation boundary for the code of a function. */
! #define FUNCTION_BOUNDARY 8
!
! /* C++ stores the virtual bit in the lowest bit of function pointers. */
! #define TARGET_PTRMEMFUNC_VBIT_LOCATION ptrmemfunc_vbit_in_pfn
/* Alignment of field after `int : 0' in a structure. */
*************** enum reg_class
*** 1581,1586 ****
--- 1588,1597 ----
#define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS)
+ /* We want the stack and args grow in opposite directions, even if
+ PUSH_ARGS is 0. */
+ #define PUSH_ARGS_REVERSED 1
+
/* Offset of first parameter from the argument pointer register value. */
#define FIRST_PARM_OFFSET(FNDECL) 0
*************** enum ix86_builtins
*** 2053,2065 ****
IX86_BUILTIN_CMPEQSS,
IX86_BUILTIN_CMPLTSS,
IX86_BUILTIN_CMPLESS,
- IX86_BUILTIN_CMPGTSS,
- IX86_BUILTIN_CMPGESS,
IX86_BUILTIN_CMPNEQSS,
IX86_BUILTIN_CMPNLTSS,
IX86_BUILTIN_CMPNLESS,
- IX86_BUILTIN_CMPNGTSS,
- IX86_BUILTIN_CMPNGESS,
IX86_BUILTIN_CMPORDSS,
IX86_BUILTIN_CMPUNORDSS,
IX86_BUILTIN_CMPNESS,
--- 2064,2072 ----
*************** extern int const svr4_dbx_register_map[F
*** 2871,2883 ****
It need not be very fast code. */
#define ASM_OUTPUT_REG_PUSH(FILE, REGNO) \
! asm_fprintf ((FILE), "\tpush{l}\t%%e%s\n", reg_names[(REGNO)])
/* This is how to output an insn to pop a register from the stack.
It need not be very fast code. */
#define ASM_OUTPUT_REG_POP(FILE, REGNO) \
! asm_fprintf ((FILE), "\tpop{l}\t%%e%s\n", reg_names[(REGNO)])
/* This is how to output an element of a case-vector that is absolute. */
--- 2878,2902 ----
It need not be very fast code. */
#define ASM_OUTPUT_REG_PUSH(FILE, REGNO) \
! do { \
! if (TARGET_64BIT) \
! asm_fprintf ((FILE), "\tpush{q}\t%%r%s\n", \
! reg_names[(REGNO)] + (REX_INT_REGNO_P (REGNO) != 0)); \
! else \
! asm_fprintf ((FILE), "\tpush{l}\t%%e%s\n", reg_names[(REGNO)]); \
! } while (0)
/* This is how to output an insn to pop a register from the stack.
It need not be very fast code. */
#define ASM_OUTPUT_REG_POP(FILE, REGNO) \
! do { \
! if (TARGET_64BIT) \
! asm_fprintf ((FILE), "\tpop{q}\t%%r%s\n", \
! reg_names[(REGNO)] + (REX_INT_REGNO_P (REGNO) != 0)); \
! else \
! asm_fprintf ((FILE), "\tpop{l}\t%%e%s\n", reg_names[(REGNO)]); \
! } while (0)
/* This is how to output an element of a case-vector that is absolute. */
diff -Nrc3pad gcc-3.2/gcc/config/i386/i386.md gcc-3.2.1/gcc/config/i386/i386.md
*** gcc-3.2/gcc/config/i386/i386.md Mon Jul 15 06:54:36 2002
--- gcc-3.2.1/gcc/config/i386/i386.md Thu Oct 24 17:11:54 2002
***************
*** 5311,5317 ****
(plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
(match_operand:DI 2 "general_operand" "roiF,riF")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT"
"#")
(define_split
--- 5311,5317 ----
(plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0")
(match_operand:DI 2 "general_operand" "roiF,riF")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)"
"#")
(define_split
***************
*** 6940,6946 ****
(minus:DI (match_operand:DI 1 "nonimmediate_operand" "0,0")
(match_operand:DI 2 "general_operand" "roiF,riF")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT"
"#")
(define_split
--- 6940,6946 ----
(minus:DI (match_operand:DI 1 "nonimmediate_operand" "0,0")
(match_operand:DI 2 "general_operand" "roiF,riF")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT && ix86_binary_operator_ok (MINUS, DImode, operands)"
"#")
(define_split
***************
*** 19783,19789 ****
[(set_attr "type" "mmx")])
(define_expand "prefetch"
! [(prefetch (match_operand:SI 0 "address_operand" "")
(match_operand:SI 1 "const_int_operand" "")
(match_operand:SI 2 "const_int_operand" ""))]
"TARGET_PREFETCH_SSE || TARGET_3DNOW"
--- 19783,19789 ----
[(set_attr "type" "mmx")])
(define_expand "prefetch"
! [(prefetch (match_operand 0 "address_operand" "")
(match_operand:SI 1 "const_int_operand" "")
(match_operand:SI 2 "const_int_operand" ""))]
"TARGET_PREFETCH_SSE || TARGET_3DNOW"
***************
*** 19795,19800 ****
--- 19795,19802 ----
abort ();
if (locality < 0 || locality > 3)
abort ();
+ if (GET_MODE (operands[0]) != Pmode && GET_MODE (operands[0]) != VOIDmode)
+ abort ();
/* Use 3dNOW prefetch in case we are asking for write prefetch not
suported by SSE counterpart or the SSE prefetch is not available
***************
*** 19810,19816 ****
[(prefetch (match_operand:SI 0 "address_operand" "p")
(const_int 0)
(match_operand:SI 1 "const_int_operand" ""))]
! "TARGET_PREFETCH_SSE"
{
static const char * const patterns[4] = {
"prefetchnta\t%a0", "prefetcht2\t%a0", "prefetcht1\t%a0", "prefetcht0\t%a0"
--- 19812,19837 ----
[(prefetch (match_operand:SI 0 "address_operand" "p")
(const_int 0)
(match_operand:SI 1 "const_int_operand" ""))]
! "TARGET_PREFETCH_SSE && !TARGET_64BIT"
! {
! static const char * const patterns[4] = {
! "prefetchnta\t%a0", "prefetcht2\t%a0", "prefetcht1\t%a0", "prefetcht0\t%a0"
! };
!
! int locality = INTVAL (operands[1]);
! if (locality < 0 || locality > 3)
! abort ();
!
! return patterns[locality];
! }
! [(set_attr "type" "sse")
! (set_attr "memory" "none")])
!
! (define_insn "*prefetch_sse_rex"
! [(prefetch (match_operand:DI 0 "address_operand" "p")
! (const_int 0)
! (match_operand:SI 1 "const_int_operand" ""))]
! "TARGET_PREFETCH_SSE && TARGET_64BIT"
{
static const char * const patterns[4] = {
"prefetchnta\t%a0", "prefetcht2\t%a0", "prefetcht1\t%a0", "prefetcht0\t%a0"
***************
*** 19828,19834 ****
[(prefetch (match_operand:SI 0 "address_operand" "p")
(match_operand:SI 1 "const_int_operand" "n")
(const_int 3))]
! "TARGET_3DNOW"
{
if (INTVAL (operands[1]) == 0)
return "prefetch\t%a0";
--- 19849,19869 ----
[(prefetch (match_operand:SI 0 "address_operand" "p")
(match_operand:SI 1 "const_int_operand" "n")
(const_int 3))]
! "TARGET_3DNOW && !TARGET_64BIT"
! {
! if (INTVAL (operands[1]) == 0)
! return "prefetch\t%a0";
! else
! return "prefetchw\t%a0";
! }
! [(set_attr "type" "mmx")
! (set_attr "memory" "none")])
!
! (define_insn "*prefetch_3dnow_rex"
! [(prefetch (match_operand:DI 0 "address_operand" "p")
! (match_operand:SI 1 "const_int_operand" "n")
! (const_int 3))]
! "TARGET_3DNOW && TARGET_64BIT"
{
if (INTVAL (operands[1]) == 0)
return "prefetch\t%a0";
diff -Nrc3pad gcc-3.2/gcc/config/i386/linux64.h gcc-3.2.1/gcc/config/i386/linux64.h
*** gcc-3.2/gcc/config/i386/linux64.h Fri Jun 21 07:04:46 2002
--- gcc-3.2.1/gcc/config/i386/linux64.h Sun Oct 27 09:24:50 2002
*************** Boston, MA 02111-1307, USA. */
*** 30,35 ****
--- 30,41 ----
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} %{!m32:-D__LONG_MAX__=9223372036854775807L}"
+ /* The svr4 ABI for the i386 says that records and unions are returned
+ in memory. In the 64bit compilation we will turn this flag off in
+ override_options, as we never do pcc_struct_return scheme on this target. */
+ #undef DEFAULT_PCC_STRUCT_RETURN
+ #define DEFAULT_PCC_STRUCT_RETURN 1
+
/* Provide a LINK_SPEC. Here we provide support for the special GCC
options -static and -shared, which allow us to link things in one
of these three modes by applying the appropriate combinations of
*************** Boston, MA 02111-1307, USA. */
*** 50,70 ****
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
! "%{m32:%{!shared: \
! %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
! %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} \
! crti.o%s %{static:crtbeginT.o%s}\
! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}} \
! %{!m32:%{!shared: \
! %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s} \
! %{!p:%{profile:/usr/lib64/gcrt1.o%s} %{!profile:/usr/lib64/crt1.o%s}}}}\
! /usr/lib64/crti.o%s %{static:crtbeginT.o%s} \
! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}}"
#undef ENDFILE_SPEC
! #define ENDFILE_SPEC "\
! %{m32:%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s} \
! %{!m32:%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s}"
#define MULTILIB_DEFAULTS { "m64" }
--- 56,69 ----
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
! "%{!shared: \
! %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
! %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} \
! crti.o%s %{static:crtbeginT.o%s} \
! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
#undef ENDFILE_SPEC
! #define ENDFILE_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
#define MULTILIB_DEFAULTS { "m64" }
diff -Nrc3pad gcc-3.2/gcc/config/i386/mmintrin.h gcc-3.2.1/gcc/config/i386/mmintrin.h
*** gcc-3.2/gcc/config/i386/mmintrin.h Tue Aug 6 18:30:43 2002
--- gcc-3.2.1/gcc/config/i386/mmintrin.h Sat Oct 19 13:51:34 2002
***************
*** 31,37 ****
#define _MMINTRIN_H_INCLUDED
/* The data type intended for user use. */
! typedef unsigned long long __m64 __attribute__ ((__aligned__ (8)));
/* Internal data types for implementing the intrinsics. */
typedef int __v2si __attribute__ ((__mode__ (__V2SI__)));
--- 31,37 ----
#define _MMINTRIN_H_INCLUDED
/* The data type intended for user use. */
! typedef int __m64 __attribute__ ((__mode__ (__V2SI__)));
/* Internal data types for implementing the intrinsics. */
typedef int __v2si __attribute__ ((__mode__ (__V2SI__)));
*************** _mm_empty (void)
*** 49,62 ****
static __inline __m64
_mm_cvtsi32_si64 (int __i)
{
! return (unsigned int) __i;
}
/* Convert the lower 32 bits of the __m64 object into an integer. */
static __inline int
_mm_cvtsi64_si32 (__m64 __i)
{
! return __i;
}
/* Pack the four 16-bit values from M1 into the lower four 8-bit values of
--- 49,64 ----
static __inline __m64
_mm_cvtsi32_si64 (int __i)
{
! long long __tmp = (unsigned int)__i;
! return (__m64) __tmp;
}
/* Convert the lower 32 bits of the __m64 object into an integer. */
static __inline int
_mm_cvtsi64_si32 (__m64 __i)
{
! long long __tmp = (long long)__i;
! return __tmp;
}
/* Pack the four 16-bit values from M1 into the lower four 8-bit values of
*************** _mm_mullo_pi16 (__m64 __m1, __m64 __m2)
*** 269,275 ****
static __inline __m64
_mm_sll_pi16 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psllw ((__v4hi)__m, __count);
}
static __inline __m64
--- 271,277 ----
static __inline __m64
_mm_sll_pi16 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (long long)__count);
}
static __inline __m64
*************** _mm_slli_pi16 (__m64 __m, int __count)
*** 282,288 ****
static __inline __m64
_mm_sll_pi32 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_pslld ((__v2si)__m, __count);
}
static __inline __m64
--- 284,290 ----
static __inline __m64
_mm_sll_pi32 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_pslld ((__v2si)__m, (long long)__count);
}
static __inline __m64
*************** _mm_slli_pi32 (__m64 __m, int __count)
*** 293,314 ****
/* Shift the 64-bit value in M left by COUNT. */
static __inline __m64
! _mm_sll_pi64 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psllq (__m, __count);
}
static __inline __m64
! _mm_slli_pi64 (__m64 __m, int __count)
{
! return (__m64) __builtin_ia32_psllq (__m, __count);
}
/* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */
static __inline __m64
_mm_sra_pi16 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psraw ((__v4hi)__m, __count);
}
static __inline __m64
--- 295,316 ----
/* Shift the 64-bit value in M left by COUNT. */
static __inline __m64
! _mm_sll_si64 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count);
}
static __inline __m64
! _mm_slli_si64 (__m64 __m, int __count)
{
! return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count);
}
/* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */
static __inline __m64
_mm_sra_pi16 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psraw ((__v4hi)__m, (long long)__count);
}
static __inline __m64
*************** _mm_srai_pi16 (__m64 __m, int __count)
*** 321,327 ****
static __inline __m64
_mm_sra_pi32 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrad ((__v2si)__m, __count);
}
static __inline __m64
--- 323,329 ----
static __inline __m64
_mm_sra_pi32 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrad ((__v2si)__m, (long long)__count);
}
static __inline __m64
*************** _mm_srai_pi32 (__m64 __m, int __count)
*** 334,340 ****
static __inline __m64
_mm_srl_pi16 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, __count);
}
static __inline __m64
--- 336,342 ----
static __inline __m64
_mm_srl_pi16 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, (long long)__count);
}
static __inline __m64
*************** _mm_srli_pi16 (__m64 __m, int __count)
*** 347,353 ****
static __inline __m64
_mm_srl_pi32 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrld ((__v2si)__m, __count);
}
static __inline __m64
--- 349,355 ----
static __inline __m64
_mm_srl_pi32 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrld ((__v2si)__m, (long long)__count);
}
static __inline __m64
*************** _mm_srli_pi32 (__m64 __m, int __count)
*** 358,379 ****
/* Shift the 64-bit value in M left by COUNT; shift in zeros. */
static __inline __m64
! _mm_srl_pi64 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrlq (__m, __count);
}
static __inline __m64
! _mm_srli_pi64 (__m64 __m, int __count)
{
! return (__m64) __builtin_ia32_psrlq (__m, __count);
}
/* Bit-wise AND the 64-bit values in M1 and M2. */
static __inline __m64
_mm_and_si64 (__m64 __m1, __m64 __m2)
{
! return __builtin_ia32_pand (__m1, __m2);
}
/* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the
--- 360,381 ----
/* Shift the 64-bit value in M left by COUNT; shift in zeros. */
static __inline __m64
! _mm_srl_si64 (__m64 __m, __m64 __count)
{
! return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count);
}
static __inline __m64
! _mm_srli_si64 (__m64 __m, int __count)
{
! return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count);
}
/* Bit-wise AND the 64-bit values in M1 and M2. */
static __inline __m64
_mm_and_si64 (__m64 __m1, __m64 __m2)
{
! return (__m64) __builtin_ia32_pand ((long long)__m1, (long long)__m2);
}
/* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the
*************** _mm_and_si64 (__m64 __m1, __m64 __m2)
*** 381,401 ****
static __inline __m64
_mm_andnot_si64 (__m64 __m1, __m64 __m2)
{
! return __builtin_ia32_pandn (__m1, __m2);
}
/* Bit-wise inclusive OR the 64-bit values in M1 and M2. */
static __inline __m64
_mm_or_si64 (__m64 __m1, __m64 __m2)
{
! return __builtin_ia32_por (__m1, __m2);
}
/* Bit-wise exclusive OR the 64-bit values in M1 and M2. */
static __inline __m64
_mm_xor_si64 (__m64 __m1, __m64 __m2)
{
! return __builtin_ia32_pxor (__m1, __m2);
}
/* Compare eight 8-bit values. The result of the comparison is 0xFF if the
--- 383,403 ----
static __inline __m64
_mm_andnot_si64 (__m64 __m1, __m64 __m2)
{
! return (__m64) __builtin_ia32_pandn ((long long)__m1, (long long)__m2);
}
/* Bit-wise inclusive OR the 64-bit values in M1 and M2. */
static __inline __m64
_mm_or_si64 (__m64 __m1, __m64 __m2)
{
! return (__m64)__builtin_ia32_por ((long long)__m1, (long long)__m2);
}
/* Bit-wise exclusive OR the 64-bit values in M1 and M2. */
static __inline __m64
_mm_xor_si64 (__m64 __m1, __m64 __m2)
{
! return (__m64)__builtin_ia32_pxor ((long long)__m1, (long long)__m2);
}
/* Compare eight 8-bit values. The result of the comparison is 0xFF if the
*************** _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2)
*** 444,450 ****
static __inline __m64
_mm_setzero_si64 (void)
{
! return __builtin_ia32_mmx_zero ();
}
/* Creates a vector of two 32-bit values; I0 is least significant. */
--- 446,452 ----
static __inline __m64
_mm_setzero_si64 (void)
{
! return (__m64)__builtin_ia32_mmx_zero ();
}
/* Creates a vector of two 32-bit values; I0 is least significant. */
diff -Nrc3pad gcc-3.2/gcc/config/i386/t-linux64 gcc-3.2.1/gcc/config/i386/t-linux64
*** gcc-3.2/gcc/config/i386/t-linux64 Wed May 8 23:23:20 2002
--- gcc-3.2.1/gcc/config/i386/t-linux64 Sat Oct 5 21:32:08 2002
*************** SHLIB_MAPFILES = $(srcdir)/libgcc-std.ve
*** 6,15 ****
MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-
- SHLIB_SLIBDIR_SUFFIXES = 64:64 32:
--- 6,14 ----
MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
+ MULTILIB_OSDIRNAMES = ../lib64 ../lib
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
diff -Nrc3pad gcc-3.2/gcc/config/i386/winnt.c gcc-3.2.1/gcc/config/i386/winnt.c
*** gcc-3.2/gcc/config/i386/winnt.c Mon Dec 3 19:13:32 2001
--- gcc-3.2.1/gcc/config/i386/winnt.c Mon Sep 16 22:24:43 2002
*************** ix86_handle_dll_attribute (node, name, a
*** 76,81 ****
--- 76,90 ----
}
}
+ /* `extern' needn't be specified with dllimport.
+ Specify `extern' now and hope for the best. Sigh. */
+ else if (TREE_CODE (*node) == VAR_DECL
+ && is_attribute_p ("dllimport", name))
+ {
+ DECL_EXTERNAL (*node) = 1;
+ TREE_PUBLIC (*node) = 1;
+ }
+
return NULL_TREE;
}
*************** i386_pe_mark_dllimport (decl)
*** 300,315 ****
return;
}
- /* `extern' needn't be specified with dllimport.
- Specify `extern' now and hope for the best. Sigh. */
- if (TREE_CODE (decl) == VAR_DECL
- /* ??? Is this test for vtables needed? */
- && !DECL_VIRTUAL_P (decl))
- {
- DECL_EXTERNAL (decl) = 1;
- TREE_PUBLIC (decl) = 1;
- }
-
newname = alloca (strlen (oldname) + 11);
sprintf (newname, "@i._imp__%s", oldname);
--- 309,314 ----
diff -Nrc3pad gcc-3.2/gcc/config/i386/xmmintrin.h gcc-3.2.1/gcc/config/i386/xmmintrin.h
*** gcc-3.2/gcc/config/i386/xmmintrin.h Sat Jan 12 10:05:28 2002
--- gcc-3.2.1/gcc/config/i386/xmmintrin.h Sun Oct 27 09:28:12 2002
*************** _mm_cmple_ss (__m128 __A, __m128 __B)
*** 245,257 ****
static __inline __m128
_mm_cmpgt_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_cmpgtss ((__v4sf)__A, (__v4sf)__B);
}
static __inline __m128
_mm_cmpge_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_cmpgess ((__v4sf)__A, (__v4sf)__B);
}
static __inline __m128
--- 245,265 ----
static __inline __m128
_mm_cmpgt_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_movss ((__v4sf) __A,
! (__v4sf)
! __builtin_ia32_cmpltss ((__v4sf) __B,
! (__v4sf)
! __A));
}
static __inline __m128
_mm_cmpge_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_movss ((__v4sf) __A,
! (__v4sf)
! __builtin_ia32_cmpless ((__v4sf) __B,
! (__v4sf)
! __A));
}
static __inline __m128
*************** _mm_cmpnle_ss (__m128 __A, __m128 __B)
*** 275,287 ****
static __inline __m128
_mm_cmpngt_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_cmpngtss ((__v4sf)__A, (__v4sf)__B);
}
static __inline __m128
_mm_cmpnge_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_cmpngess ((__v4sf)__A, (__v4sf)__B);
}
static __inline __m128
--- 283,303 ----
static __inline __m128
_mm_cmpngt_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_movss ((__v4sf) __A,
! (__v4sf)
! __builtin_ia32_cmpnltss ((__v4sf) __B,
! (__v4sf)
! __A));
}
static __inline __m128
_mm_cmpnge_ss (__m128 __A, __m128 __B)
{
! return (__m128) __builtin_ia32_movss ((__v4sf) __A,
! (__v4sf)
! __builtin_ia32_cmpnless ((__v4sf) __B,
! (__v4sf)
! __A));
}
static __inline __m128
*************** _mm_prefetch (void *__P, enum _mm_hint _
*** 1017,1023 ****
static __inline void
_mm_stream_pi (__m64 *__P, __m64 __A)
{
! __builtin_ia32_movntq (__P, __A);
}
/* Likewise. The address must be 16-byte aligned. */
--- 1033,1039 ----
static __inline void
_mm_stream_pi (__m64 *__P, __m64 __A)
{
! __builtin_ia32_movntq (__P, (long long)__A);
}
/* Likewise. The address must be 16-byte aligned. */
*************** _mm_pause (void)
*** 1049,1056 ****
do { \
__v4sf __r0 = (row0), __r1 = (row1), __r2 = (row2), __r3 = (row3); \
__v4sf __t0 = __builtin_ia32_shufps (__r0, __r1, 0x44); \
! __v4sf __t1 = __builtin_ia32_shufps (__r0, __r1, 0xEE); \
! __v4sf __t2 = __builtin_ia32_shufps (__r2, __r3, 0x44); \
__v4sf __t3 = __builtin_ia32_shufps (__r2, __r3, 0xEE); \
(row0) = __builtin_ia32_shufps (__t0, __t1, 0x88); \
(row1) = __builtin_ia32_shufps (__t0, __t1, 0xDD); \
--- 1065,1072 ----
do { \
__v4sf __r0 = (row0), __r1 = (row1), __r2 = (row2), __r3 = (row3); \
__v4sf __t0 = __builtin_ia32_shufps (__r0, __r1, 0x44); \
! __v4sf __t2 = __builtin_ia32_shufps (__r0, __r1, 0xEE); \
! __v4sf __t1 = __builtin_ia32_shufps (__r2, __r3, 0x44); \
__v4sf __t3 = __builtin_ia32_shufps (__r2, __r3, 0xEE); \
(row0) = __builtin_ia32_shufps (__t0, __t1, 0x88); \
(row1) = __builtin_ia32_shufps (__t0, __t1, 0xDD); \
diff -Nrc3pad gcc-3.2/gcc/config/m68hc11/m68hc11.md gcc-3.2.1/gcc/config/m68hc11/m68hc11.md
*** gcc-3.2/gcc/config/m68hc11/m68hc11.md Fri Jul 12 20:43:54 2002
--- gcc-3.2.1/gcc/config/m68hc11/m68hc11.md Sat Sep 14 12:06:58 2002
***************
*** 651,657 ****
")
(define_insn "movdi_internal"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=uS,U,!u,U,m,m,!u")
(match_operand:DI 1 "general_operand" "K,iU,iU,!u,mi,!u,!mu"))
(clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
--- 651,657 ----
")
(define_insn "movdi_internal"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=ou,U,!u,U,m,m,!u")
(match_operand:DI 1 "general_operand" "K,iU,iU,!u,mi,!u,!mu"))
(clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
***************
*** 687,693 ****
")
(define_insn "movdf_internal"
! [(set (match_operand:DF 0 "nonimmediate_operand" "=uS,U,!u,U,m,m,!u")
(match_operand:DF 1 "general_operand" "G,iU,iU,!u,mi,!u,!mu"))
(clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
--- 687,693 ----
")
(define_insn "movdf_internal"
! [(set (match_operand:DF 0 "nonimmediate_operand" "=ou,U,!u,U,m,m,!u")
(match_operand:DF 1 "general_operand" "G,iU,iU,!u,mi,!u,!mu"))
(clobber (match_scratch:HI 2 "=X,&d,&d,&d,&d,&d,&d"))]
""
***************
*** 732,738 ****
")
(define_insn "movsi_internal"
! [(set (match_operand:SI 0 "nonimmediate_operand" "=uS,mu,?D,m,?D,?u,?u,!u,D")
(match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D"))
(clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
--- 732,738 ----
")
(define_insn "movsi_internal"
! [(set (match_operand:SI 0 "nonimmediate_operand" "=ou,mu,?D,m,?D,?u,?u,!u,D")
(match_operand:SI 1 "general_operand" "K,imu,im,?D,!u,?D,mi,!u,!D"))
(clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
***************
*** 768,774 ****
")
(define_insn "movsf_internal"
! [(set (match_operand:SF 0 "nonimmediate_operand" "=S!u,m,D,m,D,!u,!u,!u,D")
(match_operand:SF 1 "general_operand" "G,im,im,D,!u,D,mi,!u,!D"))
(clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
--- 768,774 ----
")
(define_insn "movsf_internal"
! [(set (match_operand:SF 0 "nonimmediate_operand" "=o!u,m,D,m,D,!u,!u,!u,D")
(match_operand:SF 1 "general_operand" "G,im,im,D,!u,D,mi,!u,!D"))
(clobber (match_scratch:HI 2 "=X,&d,X,X,X,X,&d,&d,X"))]
""
diff -Nrc3pad gcc-3.2/gcc/config/m68k/t-crtstuff gcc-3.2.1/gcc/config/m68k/t-crtstuff
*** gcc-3.2/gcc/config/m68k/t-crtstuff Tue Sep 14 09:52:09 1999
--- gcc-3.2.1/gcc/config/m68k/t-crtstuff Mon Nov 11 06:01:39 2002
***************
*** 1,11 ****
- # from ../t-svr4
- EXTRA_PARTS=crtbegin.o crtend.o crti.o crtn.o
-
# Add flags here as required.
CRTSTUFF_T_CFLAGS =
# Assemble startup files.
! crti.o: $(srcdir)/config/m68k/crti.s $(GCC_PASSES)
! $(GCC_FOR_TARGET) -c -o crti.o $(srcdir)/config/m68k/crti.s
! crtn.o: $(srcdir)/config/m68k/crtn.s $(GCC_PASSES)
! $(GCC_FOR_TARGET) -c -o crtn.o $(srcdir)/config/m68k/crtn.s
--- 1,8 ----
# Add flags here as required.
CRTSTUFF_T_CFLAGS =
# Assemble startup files.
! $(T)crti.o: $(srcdir)/config/m68k/crti.s $(GCC_PASSES)
! $(GCC_FOR_TARGET) -c -o $(T)crti.o $(srcdir)/config/m68k/crti.s
! $(T)crtn.o: $(srcdir)/config/m68k/crtn.s $(GCC_PASSES)
! $(GCC_FOR_TARGET) -c -o $(T)crtn.o $(srcdir)/config/m68k/crtn.s
diff -Nrc3pad gcc-3.2/gcc/config/mips/mips.md gcc-3.2.1/gcc/config/mips/mips.md
*** gcc-3.2/gcc/config/mips/mips.md Wed Apr 24 17:40:50 2002
--- gcc-3.2.1/gcc/config/mips/mips.md Mon Nov 11 05:57:14 2002
*************** move\\t%0,%z4\\n\\
*** 4882,4888 ****
if ((INTVAL (offset) & 7) == 0
&& (mem_addr == stack_pointer_rtx || mem_addr == frame_pointer_rtx))
! return \"sd\\t%1,%0\";
return \"usd\\t%z1,%0\";
}"
--- 4882,4888 ----
if ((INTVAL (offset) & 7) == 0
&& (mem_addr == stack_pointer_rtx || mem_addr == frame_pointer_rtx))
! return \"sd\\t%z1,%0\";
return \"usd\\t%z1,%0\";
}"
diff -Nrc3pad gcc-3.2/gcc/config/mips/t-iris6 gcc-3.2.1/gcc/config/mips/t-iris6
*** gcc-3.2/gcc/config/mips/t-iris6 Fri May 10 15:22:05 2002
--- gcc-3.2.1/gcc/config/mips/t-iris6 Tue Nov 12 11:14:07 2002
***************
*** 4,9 ****
--- 4,10 ----
MULTILIB_OPTIONS=mabi=n32/mabi=64
MULTILIB_DIRNAMES=
MULTILIB_MATCHES=
+ MULTILIB_OSDIRNAMES=. mabi=64
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
*************** SHLIB_NAME = @shlib_dir@@shlib_so_name@.
*** 22,28 ****
SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
- SHLIB_SLIBDIR_SUFFIXES = mabi=64:/mabi=64 mabi=n32:
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-soname,$(SHLIB_SONAME) \
--- 23,28 ----
diff -Nrc3pad gcc-3.2/gcc/config/rs6000/linux64.h gcc-3.2.1/gcc/config/rs6000/linux64.h
*** gcc-3.2/gcc/config/rs6000/linux64.h Thu Aug 8 17:52:40 2002
--- gcc-3.2.1/gcc/config/rs6000/linux64.h Sat Sep 14 00:26:39 2002
*************** Boston, MA 02111-1307, USA. */
*** 37,42 ****
--- 37,48 ----
#undef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC "-mppc64"
+ #undef ASM_SPEC
+ #define ASM_SPEC "%{.s: %{mregnames} %{mno-regnames}} \
+ %{.S: %{mregnames} %{mno-regnames}} \
+ %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} \
+ %{v:-V} %{Qy:} %{!Qn:-Qy} -a64 %(asm_cpu) %{Wa,*:%*}"
+
/* 64-bit PowerPC Linux always has a TOC. */
#undef TARGET_NO_TOC
#define TARGET_NO_TOC 0
*************** Boston, MA 02111-1307, USA. */
*** 65,70 ****
--- 71,77 ----
#define USER_LABEL_PREFIX ""
/* AIX word-aligns FP doubles but doubleword-aligns 64-bit ints. */
+ #undef ADJUST_FIELD_ALIGN
#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
(TYPE_MODE (TREE_CODE (TREE_TYPE (FIELD)) == ARRAY_TYPE \
? get_inner_array_type (FIELD) \
*************** do \
*** 327,329 ****
--- 334,382 ----
sym_lineno += 1; \
} \
while (0)
+
+ /* Similarly, we want the function code label here. */
+ #define DBX_OUTPUT_BRAC(FILE, NAME, BRAC) \
+ do \
+ { \
+ const char *flab; \
+ fprintf (FILE, "%s%d,0,0,", ASM_STABN_OP, BRAC); \
+ assemble_name (FILE, NAME); \
+ putc ('-', FILE); \
+ if (current_function_func_begin_label != NULL_TREE) \
+ flab = IDENTIFIER_POINTER (current_function_func_begin_label); \
+ else \
+ { \
+ putc ('.', FILE); \
+ flab = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \
+ } \
+ assemble_name (FILE, flab); \
+ putc ('\n', FILE); \
+ } \
+ while (0)
+
+ #define DBX_OUTPUT_LBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_LBRAC)
+ #define DBX_OUTPUT_RBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_RBRAC)
+
+ /* Another case where we want the dot name. */
+ #define DBX_OUTPUT_NFUN(FILE, LSCOPE, DECL) \
+ do \
+ { \
+ fprintf (FILE, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN); \
+ assemble_name (FILE, LSCOPE); \
+ fputs ("-.", FILE); \
+ assemble_name (FILE, XSTR (XEXP (DECL_RTL (DECL), 0), 0)); \
+ putc ('\n', FILE); \
+ } \
+ while (0)
+
+ /* Override sysv4.h as these are ABI_V4 only. */
+ #undef ASM_OUTPUT_REG_PUSH
+ #undef ASM_OUTPUT_REG_POP
+
+ /* Select a format to encode pointers in exception handling data. CODE
+ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
+ true if the symbol may be affected by dynamic relocations. */
+ #undef ASM_PREFERRED_EH_DATA_FORMAT
+ #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+ (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_udata8)
diff -Nrc3pad gcc-3.2/gcc/config/rs6000/rs6000.c gcc-3.2.1/gcc/config/rs6000/rs6000.c
*** gcc-3.2/gcc/config/rs6000/rs6000.c Thu Aug 8 14:51:47 2002
--- gcc-3.2.1/gcc/config/rs6000/rs6000.c Thu Nov 7 07:04:20 2002
*************** static int rs6000_sr_alias_set;
*** 120,126 ****
static void rs6000_add_gc_roots PARAMS ((void));
static int num_insns_constant_wide PARAMS ((HOST_WIDE_INT));
- static rtx expand_block_move_mem PARAMS ((enum machine_mode, rtx, rtx));
static void validate_condition_mode
PARAMS ((enum rtx_code, enum machine_mode));
static rtx rs6000_generate_compare PARAMS ((enum rtx_code));
--- 120,125 ----
*************** rs6000_legitimate_address (mode, x, reg_
*** 2012,2017 ****
--- 2011,2017 ----
if (LEGITIMATE_INDIRECT_ADDRESS_P (x, reg_ok_strict))
return 1;
if ((GET_CODE (x) == PRE_INC || GET_CODE (x) == PRE_DEC)
+ && !ALTIVEC_VECTOR_MODE (mode)
&& TARGET_UPDATE
&& LEGITIMATE_INDIRECT_ADDRESS_P (XEXP (x, 0), reg_ok_strict))
return 1;
*************** altivec_init_builtins (void)
*** 4909,4929 ****
}
- /* Generate a memory reference for expand_block_move, copying volatile,
- and other bits from an original memory reference. */
-
- static rtx
- expand_block_move_mem (mode, addr, orig_mem)
- enum machine_mode mode;
- rtx addr;
- rtx orig_mem;
- {
- rtx mem = gen_rtx_MEM (mode, addr);
-
- MEM_COPY_ATTRIBUTES (mem, orig_mem);
- return mem;
- }
-
/* Expand a block move operation, and return 1 if successful. Return 0
if we should let the compiler generate normal code.
--- 4909,4914 ----
*************** expand_block_move (operands)
*** 4946,4959 ****
int align;
int bytes;
int offset;
- int num_reg;
- int i;
- rtx src_reg;
- rtx dest_reg;
- rtx src_addr;
- rtx dest_addr;
- rtx tmp_reg;
- rtx stores[MAX_MOVE_REG];
int move_bytes;
/* If this is not a fixed size move, just call memcpy */
--- 4931,4936 ----
*************** expand_block_move (operands)
*** 4975,4988 ****
if (bytes > (TARGET_POWERPC64 ? 64 : 32))
return 0;
- /* Move the address into scratch registers. */
- dest_reg = copy_addr_to_reg (XEXP (orig_dest, 0));
- src_reg = copy_addr_to_reg (XEXP (orig_src, 0));
-
if (TARGET_STRING) /* string instructions are available */
{
! for ( ; bytes > 0; bytes -= move_bytes)
{
if (bytes > 24 /* move up to 32 bytes at a time */
&& ! fixed_regs[5]
&& ! fixed_regs[6]
--- 4952,4968 ----
if (bytes > (TARGET_POWERPC64 ? 64 : 32))
return 0;
if (TARGET_STRING) /* string instructions are available */
{
! for (offset = 0; bytes > 0; offset += move_bytes, bytes -= move_bytes)
{
+ union {
+ rtx (*movstrsi) PARAMS ((rtx, rtx, rtx, rtx));
+ rtx (*mov) PARAMS ((rtx, rtx));
+ } gen_func;
+ enum machine_mode mode = BLKmode;
+ rtx src, dest;
+
if (bytes > 24 /* move up to 32 bytes at a time */
&& ! fixed_regs[5]
&& ! fixed_regs[6]
*************** expand_block_move (operands)
*** 4994,5008 ****
&& ! fixed_regs[12])
{
move_bytes = (bytes > 32) ? 32 : bytes;
! emit_insn (gen_movstrsi_8reg (expand_block_move_mem (BLKmode,
! dest_reg,
! orig_dest),
! expand_block_move_mem (BLKmode,
! src_reg,
! orig_src),
! GEN_INT ((move_bytes == 32)
! ? 0 : move_bytes),
! align_rtx));
}
else if (bytes > 16 /* move up to 24 bytes at a time */
&& ! fixed_regs[5]
--- 4974,4980 ----
&& ! fixed_regs[12])
{
move_bytes = (bytes > 32) ? 32 : bytes;
! gen_func.movstrsi = gen_movstrsi_8reg;
}
else if (bytes > 16 /* move up to 24 bytes at a time */
&& ! fixed_regs[5]
*************** expand_block_move (operands)
*** 5013,5026 ****
&& ! fixed_regs[10])
{
move_bytes = (bytes > 24) ? 24 : bytes;
! emit_insn (gen_movstrsi_6reg (expand_block_move_mem (BLKmode,
! dest_reg,
! orig_dest),
! expand_block_move_mem (BLKmode,
! src_reg,
! orig_src),
! GEN_INT (move_bytes),
! align_rtx));
}
else if (bytes > 8 /* move up to 16 bytes at a time */
&& ! fixed_regs[5]
--- 4985,4991 ----
&& ! fixed_regs[10])
{
move_bytes = (bytes > 24) ? 24 : bytes;
! gen_func.movstrsi = gen_movstrsi_6reg;
}
else if (bytes > 8 /* move up to 16 bytes at a time */
&& ! fixed_regs[5]
*************** expand_block_move (operands)
*** 5029,5042 ****
&& ! fixed_regs[8])
{
move_bytes = (bytes > 16) ? 16 : bytes;
! emit_insn (gen_movstrsi_4reg (expand_block_move_mem (BLKmode,
! dest_reg,
! orig_dest),
! expand_block_move_mem (BLKmode,
! src_reg,
! orig_src),
! GEN_INT (move_bytes),
! align_rtx));
}
else if (bytes >= 8 && TARGET_POWERPC64
/* 64-bit loads and stores require word-aligned
--- 4994,5000 ----
&& ! fixed_regs[8])
{
move_bytes = (bytes > 16) ? 16 : bytes;
! gen_func.movstrsi = gen_movstrsi_4reg;
}
else if (bytes >= 8 && TARGET_POWERPC64
/* 64-bit loads and stores require word-aligned
*************** expand_block_move (operands)
*** 5044,5151 ****
&& (align >= 8 || (! STRICT_ALIGNMENT && align >= 4)))
{
move_bytes = 8;
! tmp_reg = gen_reg_rtx (DImode);
! emit_move_insn (tmp_reg,
! expand_block_move_mem (DImode,
! src_reg, orig_src));
! emit_move_insn (expand_block_move_mem (DImode,
! dest_reg, orig_dest),
! tmp_reg);
}
else if (bytes > 4 && !TARGET_POWERPC64)
{ /* move up to 8 bytes at a time */
move_bytes = (bytes > 8) ? 8 : bytes;
! emit_insn (gen_movstrsi_2reg (expand_block_move_mem (BLKmode,
! dest_reg,
! orig_dest),
! expand_block_move_mem (BLKmode,
! src_reg,
! orig_src),
! GEN_INT (move_bytes),
! align_rtx));
}
else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT))
{ /* move 4 bytes */
move_bytes = 4;
! tmp_reg = gen_reg_rtx (SImode);
! emit_move_insn (tmp_reg,
! expand_block_move_mem (SImode,
! src_reg, orig_src));
! emit_move_insn (expand_block_move_mem (SImode,
! dest_reg, orig_dest),
! tmp_reg);
}
else if (bytes == 2 && (align >= 2 || ! STRICT_ALIGNMENT))
{ /* move 2 bytes */
move_bytes = 2;
! tmp_reg = gen_reg_rtx (HImode);
! emit_move_insn (tmp_reg,
! expand_block_move_mem (HImode,
! src_reg, orig_src));
! emit_move_insn (expand_block_move_mem (HImode,
! dest_reg, orig_dest),
! tmp_reg);
}
else if (bytes == 1) /* move 1 byte */
{
move_bytes = 1;
! tmp_reg = gen_reg_rtx (QImode);
! emit_move_insn (tmp_reg,
! expand_block_move_mem (QImode,
! src_reg, orig_src));
! emit_move_insn (expand_block_move_mem (QImode,
! dest_reg, orig_dest),
! tmp_reg);
}
else
{ /* move up to 4 bytes at a time */
move_bytes = (bytes > 4) ? 4 : bytes;
! emit_insn (gen_movstrsi_1reg (expand_block_move_mem (BLKmode,
! dest_reg,
! orig_dest),
! expand_block_move_mem (BLKmode,
! src_reg,
! orig_src),
! GEN_INT (move_bytes),
! align_rtx));
}
! if (bytes > move_bytes)
{
! if (! TARGET_POWERPC64)
{
! emit_insn (gen_addsi3 (src_reg, src_reg,
! GEN_INT (move_bytes)));
! emit_insn (gen_addsi3 (dest_reg, dest_reg,
! GEN_INT (move_bytes)));
}
! else
{
! emit_insn (gen_adddi3 (src_reg, src_reg,
! GEN_INT (move_bytes)));
! emit_insn (gen_adddi3 (dest_reg, dest_reg,
! GEN_INT (move_bytes)));
}
}
}
}
else /* string instructions not available */
{
! num_reg = offset = 0;
! for ( ; bytes > 0; (bytes -= move_bytes), (offset += move_bytes))
{
! /* Calculate the correct offset for src/dest */
! if (offset == 0)
! {
! src_addr = src_reg;
! dest_addr = dest_reg;
! }
! else
! {
! src_addr = plus_constant (src_reg, offset);
! dest_addr = plus_constant (dest_reg, offset);
! }
/* Generate the appropriate load and store, saving the stores
for later. */
--- 5002,5085 ----
&& (align >= 8 || (! STRICT_ALIGNMENT && align >= 4)))
{
move_bytes = 8;
! mode = DImode;
! gen_func.mov = gen_movdi;
}
else if (bytes > 4 && !TARGET_POWERPC64)
{ /* move up to 8 bytes at a time */
move_bytes = (bytes > 8) ? 8 : bytes;
! gen_func.movstrsi = gen_movstrsi_2reg;
}
else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT))
{ /* move 4 bytes */
move_bytes = 4;
! mode = SImode;
! gen_func.mov = gen_movsi;
}
else if (bytes == 2 && (align >= 2 || ! STRICT_ALIGNMENT))
{ /* move 2 bytes */
move_bytes = 2;
! mode = HImode;
! gen_func.mov = gen_movhi;
}
else if (bytes == 1) /* move 1 byte */
{
move_bytes = 1;
! mode = QImode;
! gen_func.mov = gen_movqi;
}
else
{ /* move up to 4 bytes at a time */
move_bytes = (bytes > 4) ? 4 : bytes;
! gen_func.movstrsi = gen_movstrsi_1reg;
}
! src = adjust_address (orig_src, mode, offset);
! dest = adjust_address (orig_dest, mode, offset);
!
! if (mode == BLKmode)
{
! /* Move the address into scratch registers. The movstrsi
! patterns require zero offset. */
! if (!REG_P (XEXP (src, 0)))
{
! rtx src_reg = copy_addr_to_reg (XEXP (src, 0));
! src = replace_equiv_address (src, src_reg);
}
! set_mem_size (src, GEN_INT (move_bytes));
!
! if (!REG_P (XEXP (dest, 0)))
{
! rtx dest_reg = copy_addr_to_reg (XEXP (dest, 0));
! dest = replace_equiv_address (dest, dest_reg);
}
+ set_mem_size (dest, GEN_INT (move_bytes));
+
+ emit_insn ((*gen_func.movstrsi) (dest, src,
+ GEN_INT (move_bytes & 31),
+ align_rtx));
+ }
+ else
+ {
+ rtx tmp_reg = gen_reg_rtx (mode);
+
+ emit_insn ((*gen_func.mov) (tmp_reg, src));
+ emit_insn ((*gen_func.mov) (dest, tmp_reg));
}
}
}
else /* string instructions not available */
{
! rtx stores[MAX_MOVE_REG];
! int num_reg = 0;
! int i;
!
! for (offset = 0; bytes > 0; offset += move_bytes, bytes -= move_bytes)
{
! rtx (*gen_mov_func) PARAMS ((rtx, rtx));
! enum machine_mode mode;
! rtx src, dest, tmp_reg;
/* Generate the appropriate load and store, saving the stores
for later. */
*************** expand_block_move (operands)
*** 5155,5210 ****
&& (align >= 8 || (! STRICT_ALIGNMENT && align >= 4)))
{
move_bytes = 8;
! tmp_reg = gen_reg_rtx (DImode);
! emit_insn (gen_movdi (tmp_reg,
! expand_block_move_mem (DImode,
! src_addr,
! orig_src)));
! stores[num_reg++] = gen_movdi (expand_block_move_mem (DImode,
! dest_addr,
! orig_dest),
! tmp_reg);
}
else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT))
{
move_bytes = 4;
! tmp_reg = gen_reg_rtx (SImode);
! emit_insn (gen_movsi (tmp_reg,
! expand_block_move_mem (SImode,
! src_addr,
! orig_src)));
! stores[num_reg++] = gen_movsi (expand_block_move_mem (SImode,
! dest_addr,
! orig_dest),
! tmp_reg);
}
else if (bytes >= 2 && (align >= 2 || ! STRICT_ALIGNMENT))
{
move_bytes = 2;
! tmp_reg = gen_reg_rtx (HImode);
! emit_insn (gen_movhi (tmp_reg,
! expand_block_move_mem (HImode,
! src_addr,
! orig_src)));
! stores[num_reg++] = gen_movhi (expand_block_move_mem (HImode,
! dest_addr,
! orig_dest),
! tmp_reg);
}
else
{
move_bytes = 1;
! tmp_reg = gen_reg_rtx (QImode);
! emit_insn (gen_movqi (tmp_reg,
! expand_block_move_mem (QImode,
! src_addr,
! orig_src)));
! stores[num_reg++] = gen_movqi (expand_block_move_mem (QImode,
! dest_addr,
! orig_dest),
! tmp_reg);
}
if (num_reg >= MAX_MOVE_REG)
{
for (i = 0; i < num_reg; i++)
--- 5089,5123 ----
&& (align >= 8 || (! STRICT_ALIGNMENT && align >= 4)))
{
move_bytes = 8;
! mode = DImode;
! gen_mov_func = gen_movdi;
}
else if (bytes >= 4 && (align >= 4 || ! STRICT_ALIGNMENT))
{
move_bytes = 4;
! mode = SImode;
! gen_mov_func = gen_movsi;
}
else if (bytes >= 2 && (align >= 2 || ! STRICT_ALIGNMENT))
{
move_bytes = 2;
! mode = HImode;
! gen_mov_func = gen_movhi;
}
else
{
move_bytes = 1;
! mode = QImode;
! gen_mov_func = gen_movqi;
}
+ src = adjust_address (orig_src, mode, offset);
+ dest = adjust_address (orig_dest, mode, offset);
+ tmp_reg = gen_reg_rtx (mode);
+
+ emit_insn ((*gen_mov_func) (tmp_reg, src));
+ stores[num_reg++] = (*gen_mov_func) (dest, tmp_reg);
+
if (num_reg >= MAX_MOVE_REG)
{
for (i = 0; i < num_reg; i++)
*************** rs6000_reverse_condition (mode, code)
*** 7008,7014 ****
{
/* Reversal of FP compares takes care -- an ordered compare
becomes an unordered compare and vice versa. */
! if (mode == CCFPmode)
return reverse_condition_maybe_unordered (code);
else
return reverse_condition (code);
--- 6921,6927 ----
{
/* Reversal of FP compares takes care -- an ordered compare
becomes an unordered compare and vice versa. */
! if (mode == CCFPmode && !flag_unsafe_math_optimizations)
return reverse_condition_maybe_unordered (code);
else
return reverse_condition (code);
*************** output_cbranch (op, label, reversed, ins
*** 7161,7167 ****
reverse_condition_maybe_unordered here always but this
makes the resulting assembler clearer. */
if (really_reversed)
! code = rs6000_reverse_condition (mode, code);
switch (code)
{
--- 7074,7087 ----
reverse_condition_maybe_unordered here always but this
makes the resulting assembler clearer. */
if (really_reversed)
! {
! /* Reversal of FP compares takes care -- an ordered compare
! becomes an unordered compare and vice versa. */
! if (mode == CCFPmode)
! code = reverse_condition_maybe_unordered (code);
! else
! code = reverse_condition (code);
! }
switch (code)
{
*************** first_reg_to_save ()
*** 7434,7486 ****
|| (DEFAULT_ABI == ABI_DARWIN && flag_pic)))))
break;
- if (current_function_profile)
- {
- /* AIX must save/restore every register that contains a parameter
- before/after the .__mcount call plus an additional register
- for the static chain, if needed; use registers from 30 down to 22
- to do this. */
- if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN)
- {
- int last_parm_reg, profile_first_reg;
-
- /* Figure out last used parameter register. The proper thing
- to do is to walk incoming args of the function. A function
- might have live parameter registers even if it has no
- incoming args. */
- for (last_parm_reg = 10;
- last_parm_reg > 2 && ! regs_ever_live [last_parm_reg];
- last_parm_reg--)
- ;
-
- /* Calculate first reg for saving parameter registers
- and static chain.
- Skip reg 31 which may contain the frame pointer. */
- profile_first_reg = (33 - last_parm_reg
- - (current_function_needs_context ? 1 : 0));
- #if TARGET_MACHO
- /* Need to skip another reg to account for R31 being PICBASE
- (when flag_pic is set) or R30 being used as the frame
- pointer (when flag_pic is not set). */
- --profile_first_reg;
- #endif
- /* Do not save frame pointer if no parameters needs to be saved. */
- if (profile_first_reg == 31)
- profile_first_reg = 32;
-
- if (first_reg > profile_first_reg)
- first_reg = profile_first_reg;
- }
-
- /* SVR4 may need one register to preserve the static chain. */
- else if (current_function_needs_context)
- {
- /* Skip reg 31 which may contain the frame pointer. */
- if (first_reg > 30)
- first_reg = 30;
- }
- }
-
#if TARGET_MACHO
if (flag_pic && current_function_uses_pic_offset_table &&
(first_reg > RS6000_PIC_OFFSET_TABLE_REGNUM))
--- 7354,7359 ----
*************** rs6000_emit_load_toc_table (fromprolog)
*** 8124,8214 ****
rtx dest;
dest = gen_rtx_REG (Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM);
! if (TARGET_ELF && DEFAULT_ABI != ABI_AIX)
{
! if (DEFAULT_ABI == ABI_V4 && flag_pic == 1)
{
! rtx temp = (fromprolog
! ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
! : gen_reg_rtx (Pmode));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_pic_si (temp)));
! rs6000_maybe_dead (emit_move_insn (dest, temp));
}
- else if (flag_pic == 2)
- {
- char buf[30];
- rtx tempLR = (fromprolog
- ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
- : gen_reg_rtx (Pmode));
- rtx temp0 = (fromprolog
- ? gen_rtx_REG (Pmode, 0)
- : gen_reg_rtx (Pmode));
- rtx symF;
! /* possibly create the toc section */
! if (! toc_initialized)
! {
! toc_section ();
! function_section (current_function_decl);
! }
!
! if (fromprolog)
! {
! rtx symL;
!
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
! symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR,
! symF)));
! rs6000_maybe_dead (emit_move_insn (dest, tempLR));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest,
! symL,
! symF)));
! }
! else
! {
! rtx tocsym;
! static int reload_toc_labelno = 0;
! tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++);
! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1b (tempLR,
! symF,
! tocsym)));
! rs6000_maybe_dead (emit_move_insn (dest, tempLR));
! rs6000_maybe_dead (emit_move_insn (temp0,
! gen_rtx_MEM (Pmode, dest)));
! }
! rs6000_maybe_dead (emit_insn (gen_addsi3 (dest, temp0, dest)));
! }
! else if (flag_pic == 0 && TARGET_MINIMAL_TOC)
! {
! /* This is for AIX code running in non-PIC ELF. */
! char buf[30];
! rtx realsym;
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1);
! realsym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
!
! rs6000_maybe_dead (emit_insn (gen_elf_high (dest, realsym)));
! rs6000_maybe_dead (emit_insn (gen_elf_low (dest, dest, realsym)));
}
! else
! abort ();
}
! else
{
if (TARGET_32BIT)
! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_si (dest)));
else
! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_di (dest)));
}
}
int
--- 7997,8084 ----
rtx dest;
dest = gen_rtx_REG (Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM);
! if (TARGET_ELF && DEFAULT_ABI == ABI_V4 && flag_pic == 1)
{
! rtx temp = (fromprolog
! ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
! : gen_reg_rtx (Pmode));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_pic_si (temp)));
! rs6000_maybe_dead (emit_move_insn (dest, temp));
! }
! else if (TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2)
! {
! char buf[30];
! rtx tempLR = (fromprolog
! ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
! : gen_reg_rtx (Pmode));
! rtx temp0 = (fromprolog
! ? gen_rtx_REG (Pmode, 0)
! : gen_reg_rtx (Pmode));
! rtx symF;
!
! /* possibly create the toc section */
! if (! toc_initialized)
{
! toc_section ();
! function_section (current_function_decl);
}
! if (fromprolog)
! {
! rtx symL;
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
! symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR,
! symF)));
! rs6000_maybe_dead (emit_move_insn (dest, tempLR));
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest,
! symL,
! symF)));
! }
! else
! {
! rtx tocsym;
! static int reload_toc_labelno = 0;
! tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++);
! symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
!
! rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1b (tempLR,
! symF,
! tocsym)));
! rs6000_maybe_dead (emit_move_insn (dest, tempLR));
! rs6000_maybe_dead (emit_move_insn (temp0,
! gen_rtx_MEM (Pmode, dest)));
}
! rs6000_maybe_dead (emit_insn (gen_addsi3 (dest, temp0, dest)));
}
! else if (TARGET_ELF && !TARGET_AIX && flag_pic == 0 && TARGET_MINIMAL_TOC)
! {
! /* This is for AIX code running in non-PIC ELF32. */
! char buf[30];
! rtx realsym;
! ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1);
! realsym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
!
! rs6000_maybe_dead (emit_insn (gen_elf_high (dest, realsym)));
! rs6000_maybe_dead (emit_insn (gen_elf_low (dest, dest, realsym)));
! }
! else if (DEFAULT_ABI == ABI_AIX)
{
if (TARGET_32BIT)
! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_si (dest)));
else
! rs6000_maybe_dead (emit_insn (gen_load_toc_aix_di (dest)));
}
+ else
+ abort ();
}
int
*************** output_mi_thunk (file, thunk_fndecl, del
*** 9735,9757 ****
fprintf (file, "\taddi %s,%s,%d\n", this_reg, this_reg, delta);
}
/* Large constants that can be done by one addis instruction. */
! else if ((delta & 0xffff) == 0 && num_insns_constant_wide (delta) == 1)
asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg,
delta >> 16);
/* 32-bit constants that can be done by an add and addis instruction. */
! else if (TARGET_32BIT || num_insns_constant_wide (delta) == 1)
{
/* Break into two pieces, propagating the sign bit from the low
word to the upper word. */
! int delta_high = delta >> 16;
! int delta_low = delta & 0xffff;
! if ((delta_low & 0x8000) != 0)
! {
! delta_high++;
! delta_low = (delta_low ^ 0x8000) - 0x8000; /* sign extend */
! }
asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg,
delta_high);
--- 9605,9626 ----
fprintf (file, "\taddi %s,%s,%d\n", this_reg, this_reg, delta);
}
+ /* 64-bit constants. If "int" is 32 bits, we'll never hit this abort. */
+ else if (TARGET_64BIT && (delta < -2147483647 - 1 || delta > 2147483647))
+ abort ();
+
/* Large constants that can be done by one addis instruction. */
! else if ((delta & 0xffff) == 0)
asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg,
delta >> 16);
/* 32-bit constants that can be done by an add and addis instruction. */
! else
{
/* Break into two pieces, propagating the sign bit from the low
word to the upper word. */
! int delta_low = ((delta & 0xffff) ^ 0x8000) - 0x8000;
! int delta_high = (delta - delta_low) >> 16;
asm_fprintf (file, "\t{cau|addis} %s,%s,%d\n", this_reg, this_reg,
delta_high);
*************** output_mi_thunk (file, thunk_fndecl, del
*** 9762,9771 ****
fprintf (file, "\taddi %s,%s,%d\n", this_reg, this_reg, delta_low);
}
- /* 64-bit constants, fixme */
- else
- abort ();
-
/* Get the prefix in front of the names. */
switch (DEFAULT_ABI)
{
--- 9631,9636 ----
*************** output_mi_thunk (file, thunk_fndecl, del
*** 9821,9827 ****
}
assemble_name (file, fname);
putc ('\n', file);
! text_section ();
if (TARGET_MINIMAL_TOC)
asm_fprintf (file, (TARGET_32BIT)
? "\t{l|lwz} %s,%s(%s)\n" : "\tld %s,%s(%s)\n", r12,
--- 9686,9695 ----
}
assemble_name (file, fname);
putc ('\n', file);
! if (TARGET_ELF)
! function_section (current_function_decl);
! else
! text_section ();
if (TARGET_MINIMAL_TOC)
asm_fprintf (file, (TARGET_32BIT)
? "\t{l|lwz} %s,%s(%s)\n" : "\tld %s,%s(%s)\n", r12,
*************** output_toc (file, x, labelno, mode)
*** 10240,10247 ****
abort ();/* It would be easy to make this work, but it doesn't now. */
if (POINTER_SIZE > GET_MODE_BITSIZE (mode))
! lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode),
! POINTER_SIZE, &low, &high, 0);
if (TARGET_64BIT)
{
--- 10108,10124 ----
abort ();/* It would be easy to make this work, but it doesn't now. */
if (POINTER_SIZE > GET_MODE_BITSIZE (mode))
! {
! #if HOST_BITS_PER_WIDE_INT == 32
! lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode),
! POINTER_SIZE, &low, &high, 0);
! #else
! low |= high << 32;
! low <<= POINTER_SIZE - GET_MODE_BITSIZE (mode);
! high = (HOST_WIDE_INT) low >> 32;
! low &= 0xffffffff;
! #endif
! }
if (TARGET_64BIT)
{
*************** rs6000_gen_section_name (buf, filename,
*** 10459,10468 ****
void
output_profile_hook (labelno)
! int labelno;
{
if (DEFAULT_ABI == ABI_AIX)
{
char buf[30];
const char *label_name;
rtx fun;
--- 10336,10348 ----
void
output_profile_hook (labelno)
! int labelno ATTRIBUTE_UNUSED;
{
if (DEFAULT_ABI == ABI_AIX)
{
+ #ifdef NO_PROFILE_COUNTERS
+ emit_library_call (init_one_libfunc (RS6000_MCOUNT), 0, VOIDmode, 0);
+ #else
char buf[30];
const char *label_name;
rtx fun;
*************** output_profile_hook (labelno)
*** 10473,10478 ****
--- 10353,10359 ----
emit_library_call (init_one_libfunc (RS6000_MCOUNT), 0, VOIDmode, 1,
fun, Pmode);
+ #endif
}
else if (DEFAULT_ABI == ABI_DARWIN)
{
*************** output_function_profiler (file, labelno)
*** 10506,10511 ****
--- 10387,10393 ----
int labelno;
{
char buf[100];
+ int save_lr = 8;
ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno);
switch (DEFAULT_ABI)
*************** output_function_profiler (file, labelno)
*** 10514,10526 ****
abort ();
case ABI_V4:
case ABI_AIX_NODESC:
fprintf (file, "\tmflr %s\n", reg_names[0]);
if (flag_pic == 1)
{
fputs ("\tbl _GLOBAL_OFFSET_TABLE_@local-4\n", file);
! asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
! reg_names[0], reg_names[1]);
asm_fprintf (file, "\tmflr %s\n", reg_names[12]);
asm_fprintf (file, "\t{l|lwz} %s,", reg_names[0]);
assemble_name (file, buf);
--- 10396,10416 ----
abort ();
case ABI_V4:
+ save_lr = 4;
+ /* Fall through. */
+
case ABI_AIX_NODESC:
+ if (!TARGET_32BIT)
+ {
+ warning ("no profiling of 64-bit code for this ABI");
+ return;
+ }
fprintf (file, "\tmflr %s\n", reg_names[0]);
if (flag_pic == 1)
{
fputs ("\tbl _GLOBAL_OFFSET_TABLE_@local-4\n", file);
! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n",
! reg_names[0], save_lr, reg_names[1]);
asm_fprintf (file, "\tmflr %s\n", reg_names[12]);
asm_fprintf (file, "\t{l|lwz} %s,", reg_names[0]);
assemble_name (file, buf);
*************** output_function_profiler (file, labelno)
*** 10528,10535 ****
}
else if (flag_pic > 1)
{
! asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
! reg_names[0], reg_names[1]);
/* Now, we need to get the address of the label. */
fputs ("\tbl 1f\n\t.long ", file);
assemble_name (file, buf);
--- 10418,10425 ----
}
else if (flag_pic > 1)
{
! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n",
! reg_names[0], save_lr, reg_names[1]);
/* Now, we need to get the address of the label. */
fputs ("\tbl 1f\n\t.long ", file);
assemble_name (file, buf);
*************** output_function_profiler (file, labelno)
*** 10545,10571 ****
asm_fprintf (file, "\t{liu|lis} %s,", reg_names[12]);
assemble_name (file, buf);
fputs ("@ha\n", file);
! asm_fprintf (file, "\t{st|stw} %s,4(%s)\n",
! reg_names[0], reg_names[1]);
asm_fprintf (file, "\t{cal|la} %s,", reg_names[0]);
assemble_name (file, buf);
asm_fprintf (file, "@l(%s)\n", reg_names[12]);
}
! if (current_function_needs_context)
! asm_fprintf (file, "\tmr %s,%s\n",
! reg_names[30], reg_names[STATIC_CHAIN_REGNUM]);
! fprintf (file, "\tbl %s\n", RS6000_MCOUNT);
! if (current_function_needs_context)
! asm_fprintf (file, "\tmr %s,%s\n",
! reg_names[STATIC_CHAIN_REGNUM], reg_names[30]);
break;
case ABI_AIX:
case ABI_DARWIN:
/* Don't do anything, done in output_profile_hook (). */
break;
-
}
}
--- 10435,10466 ----
asm_fprintf (file, "\t{liu|lis} %s,", reg_names[12]);
assemble_name (file, buf);
fputs ("@ha\n", file);
! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n",
! reg_names[0], save_lr, reg_names[1]);
asm_fprintf (file, "\t{cal|la} %s,", reg_names[0]);
assemble_name (file, buf);
asm_fprintf (file, "@l(%s)\n", reg_names[12]);
}
! if (current_function_needs_context && DEFAULT_ABI == ABI_AIX_NODESC)
! {
! asm_fprintf (file, "\t{st|stw} %s,%d(%s)\n",
! reg_names[STATIC_CHAIN_REGNUM],
! 12, reg_names[1]);
! fprintf (file, "\tbl %s\n", RS6000_MCOUNT);
! asm_fprintf (file, "\t{l|lwz} %s,%d(%s)\n",
! reg_names[STATIC_CHAIN_REGNUM],
! 12, reg_names[1]);
! }
! else
! /* ABI_V4 saves the static chain reg with ASM_OUTPUT_REG_PUSH. */
! fprintf (file, "\tbl %s\n", RS6000_MCOUNT);
break;
case ABI_AIX:
case ABI_DARWIN:
/* Don't do anything, done in output_profile_hook (). */
break;
}
}
*************** rs6000_select_section (decl, reloc)
*** 10886,10903 ****
if (TREE_CODE (decl) == STRING_CST)
readonly = ! flag_writable_strings;
else if (TREE_CODE (decl) == VAR_DECL)
! readonly = (! (flag_pic && reloc)
&& TREE_READONLY (decl)
&& ! TREE_SIDE_EFFECTS (decl)
&& DECL_INITIAL (decl)
&& DECL_INITIAL (decl) != error_mark_node
&& TREE_CONSTANT (DECL_INITIAL (decl)));
else if (TREE_CODE (decl) == CONSTRUCTOR)
! readonly = (! (flag_pic && reloc)
&& ! TREE_SIDE_EFFECTS (decl)
&& TREE_CONSTANT (decl));
else
! readonly = 1;
if (needs_sdata && rs6000_sdata != SDATA_EABI)
readonly = 0;
--- 10781,10799 ----
if (TREE_CODE (decl) == STRING_CST)
readonly = ! flag_writable_strings;
else if (TREE_CODE (decl) == VAR_DECL)
! readonly = (! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc)
&& TREE_READONLY (decl)
&& ! TREE_SIDE_EFFECTS (decl)
&& DECL_INITIAL (decl)
&& DECL_INITIAL (decl) != error_mark_node
&& TREE_CONSTANT (DECL_INITIAL (decl)));
else if (TREE_CODE (decl) == CONSTRUCTOR)
! readonly = (! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc)
&& ! TREE_SIDE_EFFECTS (decl)
&& TREE_CONSTANT (decl));
else
! readonly = ! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc);
!
if (needs_sdata && rs6000_sdata != SDATA_EABI)
readonly = 0;
*************** rs6000_unique_section (decl, reloc)
*** 10942,10955 ****
int needs_sdata;
int size;
- readonly = 1;
if (TREE_CODE (decl) == STRING_CST)
readonly = ! flag_writable_strings;
else if (TREE_CODE (decl) == VAR_DECL)
! readonly = (! (flag_pic && reloc)
&& TREE_READONLY (decl)
&& ! TREE_SIDE_EFFECTS (decl)
&& TREE_CONSTANT (DECL_INITIAL (decl)));
size = int_size_in_bytes (TREE_TYPE (decl));
needs_sdata = (size > 0
--- 10838,10852 ----
int needs_sdata;
int size;
if (TREE_CODE (decl) == STRING_CST)
readonly = ! flag_writable_strings;
else if (TREE_CODE (decl) == VAR_DECL)
! readonly = (! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc)
&& TREE_READONLY (decl)
&& ! TREE_SIDE_EFFECTS (decl)
&& TREE_CONSTANT (DECL_INITIAL (decl)));
+ else
+ readonly = ! ((flag_pic || DEFAULT_ABI == ABI_AIX) && reloc);
size = int_size_in_bytes (TREE_TYPE (decl));
needs_sdata = (size > 0
diff -Nrc3pad gcc-3.2/gcc/config/rs6000/rs6000.md gcc-3.2.1/gcc/config/rs6000/rs6000.md
*** gcc-3.2/gcc/config/rs6000/rs6000.md Mon Jul 15 05:29:43 2002
--- gcc-3.2.1/gcc/config/rs6000/rs6000.md Mon Oct 7 04:21:05 2002
***************
*** 9641,9647 ****
[(set (match_operand:SI 0 "register_operand" "=l")
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1)] 7)]
! "TARGET_ELF && flag_pic == 2"
"bl %1\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
--- 9641,9647 ----
[(set (match_operand:SI 0 "register_operand" "=l")
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1)] 7)]
! "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
"bl %1\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
***************
*** 9650,9666 ****
[(set (match_operand:SI 0 "register_operand" "=l")
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] 6)]
! "TARGET_ELF && flag_pic == 2"
"bl %1\\n\\t.long %2-%1+4\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "8")])
(define_insn "load_toc_v4_PIC_2"
[(set (match_operand:SI 0 "register_operand" "=r")
! (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
(minus:SI (match_operand:SI 2 "immediate_operand" "s")
(match_operand:SI 3 "immediate_operand" "s")))))]
! "TARGET_ELF && flag_pic == 2"
"{l|lwz} %0,%2-%3(%1)"
[(set_attr "type" "load")])
--- 9650,9666 ----
[(set (match_operand:SI 0 "register_operand" "=l")
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] 6)]
! "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
"bl %1\\n\\t.long %2-%1+4\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "8")])
(define_insn "load_toc_v4_PIC_2"
[(set (match_operand:SI 0 "register_operand" "=r")
! (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "b")
(minus:SI (match_operand:SI 2 "immediate_operand" "s")
(match_operand:SI 3 "immediate_operand" "s")))))]
! "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
"{l|lwz} %0,%2-%3(%1)"
[(set_attr "type" "load")])
***************
*** 11253,11267 ****
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,O"))
! (match_operand:SI 3 "gpc_reg_operand" "r,r")))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"TARGET_POWER"
"@
! doz %4,%2,%1\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3
! {srai|srawi} %4,%1,31\;{sf|subfc} %4,%1,%4\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
--- 11253,11266 ----
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
(plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,O"))
! (match_operand:SI 3 "gpc_reg_operand" "r,r")))]
"TARGET_POWER"
"@
! doz %0,%2,%1\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3
! {srai|srawi} %0,%1,31\;{sf|subfc} %0,%1,%0\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 11292,11337 ****
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
(plus:SI (le:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,O,r,O"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"TARGET_POWER"
"@
! doz %4,%2,%1\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %0,%3
! {srai|srawi} %4,%1,31\;{sf|subfc} %4,%1,%4\;{aze.|addze.} %0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "12,12,16,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"TARGET_POWER && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 11291,11333 ----
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
(plus:SI (le:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,O,r,O"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER"
"@
! doz %0,%2,%1\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
! {srai|srawi} %0,%1,31\;{sf|subfc} %0,%1,%0\;{aze.|addze.} %0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "12,12,16,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (le:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER && reload_completed"
! [(set (match_dup 0)
(plus:SI (le:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 11481,11517 ****
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"! TARGET_POWERPC64"
"@
! {sf%I2|subf%I2c} %4,%1,%2\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 11477,11510 ----
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64"
"@
! {sf%I2|subf%I2c} %0,%1,%2\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (leu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:SI (leu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 11525,11538 ****
[(set_attr "length" "12")])
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(and:SI (neg:SI
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI")))
! (match_operand:SI 3 "gpc_reg_operand" "r")))
! (clobber (match_scratch:SI 4 "=&r"))]
"! TARGET_POWERPC64"
! "{sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4"
[(set_attr "length" "12")])
(define_insn ""
--- 11518,11530 ----
[(set_attr "length" "12")])
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
(and:SI (neg:SI
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI")))
! (match_operand:SI 3 "gpc_reg_operand" "r")))]
"! TARGET_POWERPC64"
! "{sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 11562,11595 ****
(clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
! (and:SI (neg:SI (leu:SI (match_dup 1)
! (match_dup 2)))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y")
(compare:CC
(and:SI (neg:SI
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI")))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"! TARGET_POWERPC64"
"@
! {sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(and:SI (neg:SI
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "")
--- 11554,11585 ----
(clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2)))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(and:SI (neg:SI
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI")))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))]
"! TARGET_POWERPC64"
"@
! {sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(and:SI (neg:SI
(leu:SI (match_operand:SI 1 "gpc_reg_operand" "")
***************
*** 11597,11609 ****
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 11587,11598 ----
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
! (and:SI (neg:SI (leu:SI (match_dup 1) (match_dup 2)))
! (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 11648,11660 ****
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))
! (match_operand:SI 3 "gpc_reg_operand" "r")))
! (clobber (match_scratch:SI 4 "=&r"))]
"TARGET_POWER"
! "doz%I2 %4,%1,%2\;{ai|addic} %4,%4,-1\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
--- 11637,11648 ----
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
(plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))
! (match_operand:SI 3 "gpc_reg_operand" "r")))]
"TARGET_POWER"
! "doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 11683,11726 ****
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
(plus:SI (lt:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"TARGET_POWER"
"@
! doz%I2 %4,%1,%2\;{ai|addic} %4,%4,-1\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"TARGET_POWER && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 11671,11711 ----
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
(plus:SI (lt:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER"
"@
! doz%I2 %0,%1,%2\;{ai|addic} %0,%0,-1\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (lt:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER && reload_completed"
! [(set (match_dup 0)
(plus:SI (lt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 11815,11860 ****
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
(plus:SI (ltu:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3
! {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "12,12,16,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_neg_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 11800,11842 ----
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
(plus:SI (ltu:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;{sf.|subfc.} %0,%0,%3
! {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;{sf.|subfc.} %0,%0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "12,12,16,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (ltu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_neg_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:SI (ltu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 11905,11925 ****
(clobber (match_scratch:SI 3 ""))]
"TARGET_POWER && reload_completed"
[(parallel [(set (match_dup 0)
! (ge:SI (match_dup 1) (match_dup 2)))
! (clobber (match_dup 3))])
(set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))
! (match_operand:SI 3 "gpc_reg_operand" "r")))
! (clobber (match_scratch:SI 4 "=&r"))]
"TARGET_POWER"
! "doz%I2 %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
--- 11887,11906 ----
(clobber (match_scratch:SI 3 ""))]
"TARGET_POWER && reload_completed"
[(parallel [(set (match_dup 0)
! (ge:SI (match_dup 1) (match_dup 2)))
! (clobber (match_dup 3))])
(set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
(plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "rI"))
! (match_operand:SI 3 "gpc_reg_operand" "r")))]
"TARGET_POWER"
! "doz%I2 %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 11948,11991 ****
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
(plus:SI (ge:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"TARGET_POWER"
"@
! doz%I2 %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"TARGET_POWER && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 11929,11969 ----
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
(plus:SI (ge:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "rI,rI"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER"
"@
! doz%I2 %0,%1,%2\;{sfi|subfic} %0,%0,0\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (ge:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER && reload_completed"
! [(set (match_dup 0)
(plus:SI (ge:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 12130,12168 ****
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %4,%2,%1\;{aze.|addze.} %0,%3
! {ai|addic} %4,%1,%n2\;{aze.|addze.} %0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "8,8,12,12")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_neg_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 12108,12143 ----
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %0,%2,%1\;{aze.|addze.} %0,%3
! {ai|addic} %0,%1,%n2\;{aze.|addze.} %0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "8,8,12,12")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (geu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_neg_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:SI (geu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 12178,12193 ****
[(set_attr "length" "12")])
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
(and:SI (neg:SI
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P")))
! (match_operand:SI 3 "gpc_reg_operand" "r,r")))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4
! {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc %0,%3,%4"
[(set_attr "length" "12")])
(define_insn ""
--- 12153,12167 ----
[(set_attr "length" "12")])
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
(and:SI (neg:SI
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P")))
! (match_operand:SI 3 "gpc_reg_operand" "r,r")))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0
! {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;andc %0,%3,%0"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 12219,12254 ****
(clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
! (and:SI (neg:SI (geu:SI (match_dup 1)
! (match_dup 2)))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(and:SI (neg:SI
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P")))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %4,%2,%1\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4
! {ai|addic} %4,%1,%n2\;{sfe|subfe} %4,%4,%4\;andc. %0,%3,%4
#
#"
[(set_attr "type" "compare")
(set_attr "length" "12,12,16,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(and:SI (neg:SI
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "")
--- 12193,12226 ----
(clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2)))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(and:SI (neg:SI
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_neg_short_operand" "r,P,r,P")))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))]
"! TARGET_POWERPC64"
"@
! {sf|subfc} %0,%2,%1\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0
! {ai|addic} %0,%1,%n2\;{sfe|subfe} %0,%0,%0\;andc. %0,%3,%0
#
#"
[(set_attr "type" "compare")
(set_attr "length" "12,12,16,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(and:SI (neg:SI
(geu:SI (match_operand:SI 1 "gpc_reg_operand" "")
***************
*** 12256,12268 ****
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 12228,12238 ----
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(and:SI (neg:SI (geu:SI (match_dup 1) (match_dup 2))) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 12394,12406 ****
[(set_attr "length" "12")])
(define_insn ""
! [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
(const_int 0))
! (match_operand:DI 2 "gpc_reg_operand" "r")))
! (clobber (match_scratch:DI 3 "=&r"))]
"TARGET_POWERPC64"
! "addc %3,%1,%1\;subfe %3,%1,%3\;addze %0,%2"
[(set_attr "length" "12")])
(define_insn ""
--- 12364,12375 ----
[(set_attr "length" "12")])
(define_insn ""
! [(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
(plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r")
(const_int 0))
! (match_operand:DI 2 "gpc_reg_operand" "r")))]
"TARGET_POWERPC64"
! "addc %0,%1,%1\;subfe %0,%1,%0\;addze %0,%2"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 12461,12552 ****
"TARGET_POWERPC64 && reload_completed"
[(set (match_dup 3)
(plus:DI (gt:DI (match_dup 1) (const_int 0))
! (match_dup 2)))
(set (match_dup 0)
(compare:CC (match_dup 3)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(const_int 0))
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))
! (clobber (match_scratch:SI 3 "=&r,&r"))]
"! TARGET_POWERPC64"
"@
! {a|addc} %3,%1,%1\;{sfe|subfe} %3,%1,%3\;{aze.|addze.} %0,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
(const_int 0))
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))
! (clobber (match_scratch:SI 3 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))
! (clobber (match_dup 3))])
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
(const_int 0))
(match_operand:DI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))
! (clobber (match_scratch:DI 3 "=&r,&r"))]
"TARGET_POWERPC64"
"@
! addc %3,%1,%1\;subfe %3,%1,%3\;addze. %0,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "")
(const_int 0))
(match_operand:DI 2 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "")
! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))
! (clobber (match_scratch:DI 3 ""))]
"TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))
! (clobber (match_dup 3))])
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "r"))
! (match_operand:SI 3 "gpc_reg_operand" "r")))
! (clobber (match_scratch:SI 4 "=&r"))]
"TARGET_POWER"
! "doz %4,%2,%1\;{ai|addic} %4,%4,-1\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
--- 12430,12514 ----
"TARGET_POWERPC64 && reload_completed"
[(set (match_dup 3)
(plus:DI (gt:DI (match_dup 1) (const_int 0))
! (match_dup 2)))
(set (match_dup 0)
(compare:CC (match_dup 3)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(const_int 0))
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))]
"! TARGET_POWERPC64"
"@
! {a|addc} %0,%1,%1\;{sfe|subfe} %0,%1,%0\;{aze.|addze.} %0,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
(const_int 0))
(match_operand:SI 2 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:SI (gt:SI (match_dup 1) (const_int 0)) (match_dup 2)))
! (set (match_dup 3)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
(const_int 0))
(match_operand:DI 2 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r")
! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))]
"TARGET_POWERPC64"
"@
! addc %0,%1,%1\;subfe %0,%1,%0\;addze. %0,%2
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 3 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:DI (gt:DI (match_operand:DI 1 "gpc_reg_operand" "")
(const_int 0))
(match_operand:DI 2 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "")
! (plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))]
"TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:DI (gt:DI (match_dup 1) (const_int 0)) (match_dup 2)))
! (set (match_dup 3)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(match_operand:SI 2 "reg_or_short_operand" "r"))
! (match_operand:SI 3 "gpc_reg_operand" "r")))]
"TARGET_POWER"
! "doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{aze|addze} %0,%3"
[(set_attr "length" "12")])
(define_insn ""
***************
*** 12574,12618 ****
(clobber (match_scratch:SI 4 ""))]
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
! (plus:SI (gt:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,r"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r"))]
"TARGET_POWER"
"@
! doz %4,%2,%1\;{ai|addic} %4,%4,-1\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"TARGET_POWER && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 12536,12576 ----
(clobber (match_scratch:SI 4 ""))]
"TARGET_POWER && reload_completed"
[(set (match_dup 4)
! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,?y")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
(match_operand:SI 2 "reg_or_short_operand" "r,r"))
(match_operand:SI 3 "gpc_reg_operand" "r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r")
! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER"
"@
! doz %0,%2,%1\;{ai|addic} %0,%0,-1\;{aze.|addze.} %0,%3
#"
[(set_attr "type" "compare")
(set_attr "length" "12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (gt:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWER && reload_completed"
! [(set (match_dup 0)
(plus:SI (gt:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
***************
*** 12731,12745 ****
[(set_attr "length" "8,12")])
(define_insn ""
! [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
(plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
(match_operand:DI 2 "reg_or_short_operand" "I,rI"))
! (match_operand:DI 3 "reg_or_short_operand" "r,rI")))
! (clobber (match_scratch:DI 4 "=&r,&r"))]
"TARGET_POWERPC64"
"@
! addic %4,%1,%k2\;addze %0,%3
! subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subf%I3c %0,%4,%3"
[(set_attr "length" "8,12")])
(define_insn ""
--- 12689,12702 ----
[(set_attr "length" "8,12")])
(define_insn ""
! [(set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r")
(plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
(match_operand:DI 2 "reg_or_short_operand" "I,rI"))
! (match_operand:DI 3 "reg_or_short_operand" "r,rI")))]
"TARGET_POWERPC64"
"@
! addic %0,%1,%k2\;addze %0,%3
! subf%I2c %0,%1,%2\;subfe %0,%0,%0\;subf%I3c %0,%0,%3"
[(set_attr "length" "8,12")])
(define_insn ""
***************
*** 12770,12776 ****
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
(plus:SI (gtu:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
--- 12727,12733 ----
"! TARGET_POWERPC64 && reload_completed"
[(set (match_dup 4)
(plus:SI (gtu:SI (match_dup 1) (match_dup 2))
! (match_dup 3)))
(set (match_dup 0)
(compare:CC (match_dup 4)
(const_int 0)))]
***************
*** 12811,12887 ****
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,r,I,r"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r")
! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 "=&r,&r,&r,&r"))]
"! TARGET_POWERPC64"
"@
! {ai|addic} %4,%1,%k2\;{aze.|addze.} %0,%3
! {sf%I2|subf%I2c} %4,%1,%2\;{sfe|subfe} %4,%4,%4\;{sf.|subfc.} %0,%4,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12,12,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:SI 4 ""))]
"! TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 5 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:DI 2 "reg_or_short_operand" "I,r,I,r"))
(match_operand:DI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,r")
! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:DI 4 "=&r,&r,&r,&r"))]
"TARGET_POWERPC64"
"@
! addic %4,%1,%k2\;addze. %0,%3
! subf%I2c %4,%1,%2\;subfe %4,%4,%4\;subfc. %0,%4,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12,12,16")])
(define_split
! [(set (match_operand:CC 5 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "")
(match_operand:DI 2 "reg_or_short_operand" ""))
(match_operand:DI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "")
! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_scratch:DI 4 ""))]
"TARGET_POWERPC64 && reload_completed"
! [(parallel [(set (match_dup 0)
(plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (clobber (match_dup 4))])
! (set (match_dup 5)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
--- 12768,12838 ----
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:SI 2 "reg_or_short_operand" "I,r,I,r"))
(match_operand:SI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:SI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64"
"@
! {ai|addic} %0,%1,%k2\;{aze.|addze.} %0,%3
! {sf%I2|subf%I2c} %0,%1,%2\;{sfe|subfe} %0,%0,%0\;{sf.|subfc.} %0,%0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12,12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:SI (gtu:SI (match_operand:SI 1 "gpc_reg_operand" "")
(match_operand:SI 2 "reg_or_short_operand" ""))
(match_operand:SI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:SI 0 "gpc_reg_operand" "")
! (plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"! TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:SI (gtu:SI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
(define_insn ""
! [(set (match_operand:CC 4 "cc_reg_operand" "=x,x,?y,?y")
(compare:CC
(plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "r,r,r,r")
(match_operand:DI 2 "reg_or_short_operand" "I,r,I,r"))
(match_operand:DI 3 "gpc_reg_operand" "r,r,r,r"))
(const_int 0)))
! (set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r,&r,&r")
! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWERPC64"
"@
! addic %0,%1,%k2\;addze. %0,%3
! subf%I2c %0,%1,%2\;subfe %0,%0,%0\;subfc. %0,%0,%3
#
#"
[(set_attr "type" "compare")
(set_attr "length" "8,12,12,16")])
(define_split
! [(set (match_operand:CC 4 "cc_reg_not_cr0_operand" "")
(compare:CC
(plus:DI (gtu:DI (match_operand:DI 1 "gpc_reg_operand" "")
(match_operand:DI 2 "reg_or_short_operand" ""))
(match_operand:DI 3 "gpc_reg_operand" ""))
(const_int 0)))
(set (match_operand:DI 0 "gpc_reg_operand" "")
! (plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))]
"TARGET_POWERPC64 && reload_completed"
! [(set (match_dup 0)
(plus:DI (gtu:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
! (set (match_dup 4)
(compare:CC (match_dup 0)
(const_int 0)))]
"")
diff -Nrc3pad gcc-3.2/gcc/config/rs6000/sysv4.h gcc-3.2.1/gcc/config/rs6000/sysv4.h
*** gcc-3.2/gcc/config/rs6000/sysv4.h Thu Aug 8 17:52:40 2002
--- gcc-3.2.1/gcc/config/rs6000/sysv4.h Fri Sep 13 06:53:05 2002
*************** do { \
*** 770,775 ****
--- 770,807 ----
ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN); \
} while (0)
+ /* This is how to output code to push a register on the stack.
+ It need not be very fast code.
+
+ On the rs6000, we must keep the backchain up to date. In order
+ to simplify things, always allocate 16 bytes for a push (System V
+ wants to keep stack aligned to a 16 byte boundary). */
+
+ #define ASM_OUTPUT_REG_PUSH(FILE, REGNO) \
+ do { \
+ if (DEFAULT_ABI == ABI_V4) \
+ asm_fprintf (FILE, \
+ (TARGET_32BIT \
+ ? "\t{stu|stwu} %s,-16(%s)\n\t{st|stw} %s,12(%s)\n" \
+ : "\tstdu %s,-32(%s)\n\tstd %s,24(%s)\n"), \
+ reg_names[1], reg_names[1], reg_names[REGNO], \
+ reg_names[1]); \
+ } while (0)
+
+ /* This is how to output an insn to pop a register from the stack.
+ It need not be very fast code. */
+
+ #define ASM_OUTPUT_REG_POP(FILE, REGNO) \
+ do { \
+ if (DEFAULT_ABI == ABI_V4) \
+ asm_fprintf (FILE, \
+ (TARGET_32BIT \
+ ? "\t{l|lwz} %s,12(%s)\n\t{ai|addic} %s,%s,16\n" \
+ : "\tld %s,24(%s)\n\t{ai|addic} %s,%s,32\n"), \
+ reg_names[REGNO], reg_names[1], reg_names[1], \
+ reg_names[1]); \
+ } while (0)
+
/* Switch Recognition by gcc.c. Add -G xx support. */
/* Override svr4.h definition. */
diff -Nrc3pad gcc-3.2/gcc/config/s390/s390.md gcc-3.2.1/gcc/config/s390/s390.md
*** gcc-3.2/gcc/config/s390/s390.md Tue Jun 11 14:49:17 2002
--- gcc-3.2.1/gcc/config/s390/s390.md Wed Oct 23 10:46:00 2002
***************
*** 957,963 ****
ldr\\t%0,%1
ld\\t%0,%1
std\\t%1,%0"
! [(set_attr "op_type" "RR,RXE,RXE,RR,RX,RX")
(set_attr "atype" "reg,mem,mem,reg,mem,mem")])
(define_insn "*movdi_31"
--- 957,963 ----
ldr\\t%0,%1
ld\\t%0,%1
std\\t%1,%0"
! [(set_attr "op_type" "RRE,RXE,RXE,RR,RX,RX")
(set_attr "atype" "reg,mem,mem,reg,mem,mem")])
(define_insn "*movdi_31"
***************
*** 1240,1246 ****
lgr\\t%0,%1
lg\\t%0,%1
stg\\t%1,%0"
! [(set_attr "op_type" "RR,RX,RX,RR,RXE,RXE")
(set_attr "atype" "reg,mem,mem,reg,mem,mem")])
(define_insn "*movdf_31"
--- 1240,1246 ----
lgr\\t%0,%1
lg\\t%0,%1
stg\\t%1,%0"
! [(set_attr "op_type" "RR,RX,RX,RRE,RXE,RXE")
(set_attr "atype" "reg,mem,mem,reg,mem,mem")])
(define_insn "*movdf_31"
***************
*** 2111,2125 ****
reg1 = gen_reg_rtx (DImode);
}
- if (! CONSTANT_P (len))
- len = force_reg (Pmode, len);
-
/* Load up the address+length pairs. */
emit_move_insn (gen_highpart (Pmode, reg0), addr0);
! emit_move_insn (gen_lowpart (Pmode, reg0), len);
emit_move_insn (gen_highpart (Pmode, reg1), addr1);
! emit_move_insn (gen_lowpart (Pmode, reg1), len);
/* Compare! */
if (TARGET_64BIT)
--- 2111,2122 ----
reg1 = gen_reg_rtx (DImode);
}
/* Load up the address+length pairs. */
emit_move_insn (gen_highpart (Pmode, reg0), addr0);
! convert_move (gen_lowpart (Pmode, reg0), len, 1);
emit_move_insn (gen_highpart (Pmode, reg1), addr1);
! convert_move (gen_lowpart (Pmode, reg1), len, 1);
/* Compare! */
if (TARGET_64BIT)
***************
*** 3226,3231 ****
--- 3223,3241 ----
[(set_attr "op_type" "RR,RI,RX")
(set_attr "atype" "reg,reg,mem")])
+ (define_insn "*addsi3_inv"
+ [(set (match_operand:SI 0 "register_operand" "=d,d,d")
+ (plus:SI (match_operand:SI 1 "general_operand" "%d,K,m")
+ (match_operand:SI 2 "register_operand" "0,0,0")))
+ (clobber (reg:CC 33))]
+ ""
+ "@
+ ar\\t%0,%1
+ ahi\\t%0,%h1
+ a\\t%0,%1"
+ [(set_attr "op_type" "RR,RI,RX")
+ (set_attr "atype" "reg,reg,mem")])
+
(define_insn "*la_31"
[(set (match_operand:SI 0 "register_operand" "=d")
(match_operand:QI 1 "address_operand" "p"))]
***************
*** 5462,5468 ****
"@
srlg\\t%0,%1,%c2
srlg\\t%0,%1,0(%2)"
! [(set_attr "op_type" "RS,RS")])
;
; lshrsi3 instruction pattern(s).
--- 5472,5478 ----
"@
srlg\\t%0,%1,%c2
srlg\\t%0,%1,0(%2)"
! [(set_attr "op_type" "RSE,RSE")])
;
; lshrsi3 instruction pattern(s).
diff -Nrc3pad gcc-3.2/gcc/config/sparc/freebsd.h gcc-3.2.1/gcc/config/sparc/freebsd.h
*** gcc-3.2/gcc/config/sparc/freebsd.h Mon Apr 8 17:17:18 2002
--- gcc-3.2.1/gcc/config/sparc/freebsd.h Wed Nov 6 21:30:59 2002
*************** You should have received a copy of the G
*** 18,28 ****
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
! /* FreeBSD needs's the platform name (sparc64) defined. */
#undef CPP_CPU64_DEFAULT_SPEC
! #define CPP_CPU64_DEFAULT_SPEC "-D__sparc64__ -D__sparc_v9__"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES FBSD_CPP_PREDEFINES
--- 18,30 ----
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
! /* FreeBSD needs the platform name (sparc64) defined.
! Emacs needs to know if the arch is 64 or 32-bits. */
#undef CPP_CPU64_DEFAULT_SPEC
! #define CPP_CPU64_DEFAULT_SPEC "-D__sparc64__ -D__sparc_v9__ -D__arch64__"
+ /* Because we include sparc/sysv4.h. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES FBSD_CPP_PREDEFINES
*************** the Free Software Foundation, 675 Mass A
*** 99,104 ****
--- 101,131 ----
#undef SPARC_DEFAULT_CMODEL
#define SPARC_DEFAULT_CMODEL CM_MEDLOW
+ #define TRANSFER_FROM_TRAMPOLINE \
+ static int need_enable_exec_stack; \
+ static void check_enabling(void) __attribute__ ((constructor)); \
+ static void check_enabling(void) \
+ { \
+ extern int sysctlbyname(const char *, void *, size_t *, void *, size_t);\
+ int prot = 0; \
+ size_t len = sizeof(prot); \
+ \
+ sysctlbyname ("kern.stackprot", &prot, &len, NULL, 0); \
+ if (prot != 7) \
+ need_enable_exec_stack = 1; \
+ } \
+ extern void __enable_execute_stack (void *); \
+ void __enable_execute_stack (void *addr) \
+ { \
+ if (!need_enable_exec_stack) \
+ return; \
+ else { \
+ /* 7 is PROT_READ | PROT_WRITE | PROT_EXEC */ \
+ if (mprotect (addr, TRAMPOLINE_SIZE, 7) < 0) \
+ perror ("mprotect of trampoline code"); \
+ } \
+ }
+
/************************[ Assembler stuff ]********************************/
diff -Nrc3pad gcc-3.2/gcc/config/sparc/linux64.h gcc-3.2.1/gcc/config/sparc/linux64.h
*** gcc-3.2/gcc/config/sparc/linux64.h Mon Apr 29 04:09:50 2002
--- gcc-3.2.1/gcc/config/sparc/linux64.h Sat Oct 5 21:32:10 2002
***************
*** 1,5 ****
/* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF.
! Copyright 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
Contributed by David S. Miller (davem@caip.rutgers.edu)
This file is part of GNU CC.
--- 1,5 ----
/* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF.
! Copyright 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
Contributed by David S. Miller (davem@caip.rutgers.edu)
This file is part of GNU CC.
*************** Boston, MA 02111-1307, USA. */
*** 56,93 ****
#undef STARTFILE_SPEC
! #define STARTFILE_SPEC32 \
! "%{!shared: \
! %{pg:/usr/lib/gcrt1.o%s} %{!pg:%{/usr/lib/p:gcrt1.o%s} %{!p:/usr/lib/crt1.o%s}}}\
! /usr/lib/crti.o%s %{static:crtbeginT.o%s}\
! %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
!
! #define STARTFILE_SPEC64 \
"%{!shared: \
! %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s} %{!p:/usr/lib64/crt1.o%s}}}\
! /usr/lib64/crti.o%s %{static:crtbeginT.o%s}\
%{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
- #ifdef SPARC_BI_ARCH
-
- #if DEFAULT_ARCH32_P
- #define STARTFILE_SPEC "\
- %{m32:" STARTFILE_SPEC32 "} \
- %{m64:" STARTFILE_SPEC64 "} \
- %{!m32:%{!m64:" STARTFILE_SPEC32 "}}"
- #else
- #define STARTFILE_SPEC "\
- %{m32:" STARTFILE_SPEC32 "} \
- %{m64:" STARTFILE_SPEC64 "} \
- %{!m32:%{!m64:" STARTFILE_SPEC64 "}}"
- #endif
-
- #else
-
- #define STARTFILE_SPEC STARTFILE_SPEC64
-
- #endif
-
/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on
the GNU/Linux magical crtend.o file (see crtstuff.c) which
provides part of the support for getting C++ file-scope static
--- 56,67 ----
#undef STARTFILE_SPEC
! #define STARTFILE_SPEC \
"%{!shared: \
! %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\
! crti.o%s %{static:crtbeginT.o%s}\
%{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on
the GNU/Linux magical crtend.o file (see crtstuff.c) which
provides part of the support for getting C++ file-scope static
*************** Boston, MA 02111-1307, USA. */
*** 96,131 ****
#undef ENDFILE_SPEC
! #define ENDFILE_SPEC32 \
! "%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib/crtn.o%s"
!
! #define ENDFILE_SPEC64 \
! "%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s"
!
! #define ENDFILE_SPEC_COMMON \
! "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
!
! #ifdef SPARC_BI_ARCH
!
! #if DEFAULT_ARCH32_P
! #define ENDFILE_SPEC "\
! %{m32:" ENDFILE_SPEC32 "} \
! %{m64:" ENDFILE_SPEC64 "} \
! %{!m32:%{!m64:" ENDFILE_SPEC32 "}} " \
! ENDFILE_SPEC_COMMON
! #else
! #define ENDFILE_SPEC "\
! %{m32:" ENDFILE_SPEC32 "} \
! %{m64:" ENDFILE_SPEC64 "} \
! %{!m32:%{!m64:" ENDFILE_SPEC64 "}} " \
! ENDFILE_SPEC_COMMON
! #endif
!
! #else
!
! #define ENDFILE_SPEC ENDFILE_SPEC64 " " ENDFILE_SPEC_COMMON
!
! #endif
/* The GNU C++ standard library requires that these macros be defined. */
#undef CPLUSPLUS_CPP_SPEC
--- 70,78 ----
#undef ENDFILE_SPEC
! #define ENDFILE_SPEC \
! "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s\
! %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
/* The GNU C++ standard library requires that these macros be defined. */
#undef CPLUSPLUS_CPP_SPEC
diff -Nrc3pad gcc-3.2/gcc/config/sparc/sol2-bi.h gcc-3.2.1/gcc/config/sparc/sol2-bi.h
*** gcc-3.2/gcc/config/sparc/sol2-bi.h Mon Apr 22 19:53:42 2002
--- gcc-3.2.1/gcc/config/sparc/sol2-bi.h Sat Oct 5 21:32:10 2002
***************
*** 72,101 ****
%{!mcpu*:%(asm_cpu_default)} \
"
- #define STARTFILE_SPEC32 "\
- %{ansi:values-Xc.o%s} \
- %{!ansi: \
- %{traditional:values-Xt.o%s} \
- %{!traditional:values-Xa.o%s}}"
-
- #define STARTFILE_SPEC64 "\
- %{ansi:/usr/lib/sparcv9/values-Xc.o%s} \
- %{!ansi: \
- %{traditional:/usr/lib/sparcv9/values-Xt.o%s} \
- %{!traditional:/usr/lib/sparcv9/values-Xa.o%s}}"
-
- #if DEFAULT_ARCH32_P
- #define STARTFILE_ARCH_SPEC "\
- %{m32:" STARTFILE_SPEC32 "} \
- %{m64:" STARTFILE_SPEC64 "} \
- %{!m32:%{!m64:" STARTFILE_SPEC32 "}}"
- #else
- #define STARTFILE_ARCH_SPEC "\
- %{m32:" STARTFILE_SPEC32 "} \
- %{m64:" STARTFILE_SPEC64 "} \
- %{!m32:%{!m64:" STARTFILE_SPEC64 "}}"
- #endif
-
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{!shared: \
%{!symbolic: \
--- 72,77 ----
***************
*** 103,109 ****
%{!p: \
%{pg:gcrt1.o%s gmon.o%s} \
%{!pg:crt1.o%s}}}} \
! crti.o%s " STARTFILE_ARCH_SPEC " \
crtbegin.o%s"
#undef CPP_CPU_DEFAULT_SPEC
--- 79,88 ----
%{!p: \
%{pg:gcrt1.o%s gmon.o%s} \
%{!pg:crt1.o%s}}}} \
! crti.o%s \
! %{ansi:values-Xc.o%s} \
! %{!ansi: %{traditional:values-Xt.o%s} \
! %{!traditional:values-Xa.o%s}} \
crtbegin.o%s"
#undef CPP_CPU_DEFAULT_SPEC
diff -Nrc3pad gcc-3.2/gcc/config/sparc/sparc.c gcc-3.2.1/gcc/config/sparc/sparc.c
*** gcc-3.2/gcc/config/sparc/sparc.c Sun May 26 02:42:21 2002
--- gcc-3.2.1/gcc/config/sparc/sparc.c Thu Sep 26 10:20:03 2002
*************** set_extends (insn)
*** 8650,8656 ****
return INTVAL (op1) >= 0;
return (GET_CODE (op1) == REG && sparc_check_64 (op1, insn) == 1);
}
- case ASHIFT:
case LSHIFTRT:
return GET_MODE (SET_SRC (pat)) == SImode;
/* Positive integers leave the high bits zero. */
--- 8650,8655 ----
diff -Nrc3pad gcc-3.2/gcc/config/sparc/sparc.md gcc-3.2.1/gcc/config/sparc/sparc.md
*** gcc-3.2/gcc/config/sparc/sparc.md Sun May 5 21:45:02 2002
--- gcc-3.2.1/gcc/config/sparc/sparc.md Wed Oct 2 03:47:05 2002
***************
*** 2517,2523 ****
;
}")
! ;; Be careful, fmovd does not exist when !arch64.
;; We match MEM moves directly when we have correct even
;; numbered registers, but fall into splits otherwise.
;; The constraint ordering here is really important to
--- 2517,2523 ----
;
}")
! ;; Be careful, fmovd does not exist when !v9.
;; We match MEM moves directly when we have correct even
;; numbered registers, but fall into splits otherwise.
;; The constraint ordering here is really important to
***************
*** 2531,2539 ****
(define_insn "*movdi_insn_sp32_v9"
[(set (match_operand:DI 0 "nonimmediate_operand"
! "=T,o,T,U,o,r,r,r,?T,?f,?f,?o,?f")
(match_operand:DI 1 "input_operand"
! " J,J,U,T,r,o,i,r, f, T, o, f, f"))]
"! TARGET_ARCH64 && TARGET_V9
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
--- 2531,2539 ----
(define_insn "*movdi_insn_sp32_v9"
[(set (match_operand:DI 0 "nonimmediate_operand"
! "=T,o,T,U,o,r,r,r,?T,?f,?f,?o,?f,?e,?e,?W")
(match_operand:DI 1 "input_operand"
! " J,J,U,T,r,o,i,r, f, T, o, f, f, e, W, e"))]
"! TARGET_ARCH64 && TARGET_V9
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"@
***************
*** 2549,2557 ****
ldd\\t%1, %0
#
#
! #"
! [(set_attr "type" "store,store,store,load,*,*,*,*,fpstore,fpload,*,*,*")
! (set_attr "length" "*,2,*,*,2,2,2,2,*,*,2,2,2")])
(define_insn "*movdi_insn_sp32"
[(set (match_operand:DI 0 "nonimmediate_operand"
--- 2549,2561 ----
ldd\\t%1, %0
#
#
! #
! fmovd\\t%1, %0
! ldd\\t%1, %0
! std\\t%1, %0"
! [(set_attr "type" "store,store,store,load,*,*,*,*,fpstore,fpload,*,*,*,fpmove,fpload,fpstore")
! (set_attr "length" "*,2,*,*,2,2,2,2,*,*,2,2,2,*,*,*")
! (set_attr "fptype" "*,*,*,*,*,*,*,*,*,*,*,*,*,double,*,*")])
(define_insn "*movdi_insn_sp32"
[(set (match_operand:DI 0 "nonimmediate_operand"
***************
*** 2861,2867 ****
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(match_operand:DI 1 "const_double_operand" ""))]
! "! TARGET_ARCH64 && reload_completed"
[(clobber (const_int 0))]
"
{
--- 2865,2878 ----
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(match_operand:DI 1 "const_double_operand" ""))]
! "reload_completed
! && (! TARGET_V9
! || (! TARGET_ARCH64
! && ((GET_CODE (operands[0]) == REG
! && REGNO (operands[0]) < 32)
! || (GET_CODE (operands[0]) == SUBREG
! && GET_CODE (SUBREG_REG (operands[0])) == REG
! && REGNO (SUBREG_REG (operands[0])) < 32))))"
[(clobber (const_int 0))]
"
{
diff -Nrc3pad gcc-3.2/gcc/config/sparc/t-linux64 gcc-3.2.1/gcc/config/sparc/t-linux64
*** gcc-3.2/gcc/config/sparc/t-linux64 Fri Jun 21 11:25:58 2002
--- gcc-3.2.1/gcc/config/sparc/t-linux64 Tue Oct 8 21:58:53 2002
***************
*** 1,8 ****
! MULTILIB_OPTIONS = m64/m32 mno-app-regs|mcmodel=medany
! MULTILIB_DIRNAMES = 64 32 alt
! MULTILIB_MATCHES = mcmodel?medany=mcmodel?medmid
! MULTILIB_EXCEPTIONS = m32/mno-app-regs* m32/mcmodel=*
! MULTILIB_EXCLUSIONS = m32/!m64/mno-app-regs m32/!m64/mcmodel=medany
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
--- 1,6 ----
! MULTILIB_OPTIONS = m64/m32
! MULTILIB_DIRNAMES = 64 32
! MULTILIB_OSDIRNAMES = ../lib64 ../lib
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
*************** INSTALL_LIBGCC = install-multilib
*** 10,19 ****
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
crtfastmath.o
- SHLIB_SLIBDIR_SUFFIXES = 64:64 32:
-
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
# Avoid the t-linux version file.
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
$(srcdir)/config/sparc/libgcc-sparc-glibc.ver
--- 8,19 ----
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
crtfastmath.o
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
# Avoid the t-linux version file.
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
$(srcdir)/config/sparc/libgcc-sparc-glibc.ver
+
+ CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \
+ -print-multi-os-directory) \
+ = x../lib64; then echo -mcmodel=medany; fi`
diff -Nrc3pad gcc-3.2/gcc/config/sparc/t-netbsd64 gcc-3.2.1/gcc/config/sparc/t-netbsd64
*** gcc-3.2/gcc/config/sparc/t-netbsd64 Tue Feb 19 17:43:25 2002
--- gcc-3.2.1/gcc/config/sparc/t-netbsd64 Wed Sep 4 21:34:47 2002
***************
*** 1,6 ****
! MULTILIB_OPTIONS = m32/m64
! MULTILIB_DIRNAMES = 32 64
! MULTILIB_MATCHES =
! LIBGCC = stmp-multilib
! INSTALL_LIBGCC = install-multilib
--- 1,8 ----
! # Disable multilib fow now, as NetBSD/sparc64 does not ship with
! # a 32-bit environment.
! #MULTILIB_OPTIONS = m32/m64
! #MULTILIB_DIRNAMES = 32 64
! #MULTILIB_MATCHES =
! #LIBGCC = stmp-multilib
! #INSTALL_LIBGCC = install-multilib
diff -Nrc3pad gcc-3.2/gcc/config/sparc/t-sol2-64 gcc-3.2.1/gcc/config/sparc/t-sol2-64
*** gcc-3.2/gcc/config/sparc/t-sol2-64 Fri Jun 21 11:25:58 2002
--- gcc-3.2.1/gcc/config/sparc/t-sol2-64 Sat Oct 5 21:32:10 2002
***************
*** 1,11 ****
MULTILIB_OPTIONS = m32/m64
MULTILIB_DIRNAMES = sparcv7 sparcv9
MULTILIB_MATCHES =
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o gmon.o crt1.o crti.o crtn.o gcrt1.o \
crtfastmath.o
-
- SHLIB_SLIBDIR_SUFFIXES = sparcv9:/sparcv9 sparcv7:
--- 1,10 ----
MULTILIB_OPTIONS = m32/m64
MULTILIB_DIRNAMES = sparcv7 sparcv9
MULTILIB_MATCHES =
+ MULTILIB_OSDIRNAMES = . sparcv9
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o gmon.o crt1.o crti.o crtn.o gcrt1.o \
crtfastmath.o
diff -Nrc3pad gcc-3.2/gcc/config/xtensa/elf.h gcc-3.2.1/gcc/config/xtensa/elf.h
*** gcc-3.2/gcc/config/xtensa/elf.h Wed Jan 23 21:03:50 2002
--- gcc-3.2.1/gcc/config/xtensa/elf.h Tue Nov 5 21:33:24 2002
*************** Software Foundation, 59 Temple Place - S
*** 58,64 ****
#undef ASM_FINAL_SPEC
#undef LIB_SPEC
! #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "crt1-sim%O%s crti%O%s crtbegin%O%s _vectors%O%s"
--- 58,64 ----
#undef ASM_FINAL_SPEC
#undef LIB_SPEC
! #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "crt1-sim%O%s crti%O%s crtbegin%O%s _vectors%O%s"
diff -Nrc3pad gcc-3.2/gcc/config/xtensa/xtensa-protos.h gcc-3.2.1/gcc/config/xtensa/xtensa-protos.h
*** gcc-3.2/gcc/config/xtensa/xtensa-protos.h Fri Jun 28 19:40:31 2002
--- gcc-3.2.1/gcc/config/xtensa/xtensa-protos.h Mon Sep 30 20:34:09 2002
***************
*** 1,5 ****
/* Prototypes of target machine for GNU compiler for Xtensa.
! Copyright (C) 2001 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
--- 1,5 ----
/* Prototypes of target machine for GNU compiler for Xtensa.
! Copyright 2001,2002 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
*************** extern void xtensa_reorg PARAMS ((rtx));
*** 89,95 ****
extern rtx xtensa_return_addr PARAMS ((int, rtx));
extern rtx xtensa_builtin_saveregs PARAMS ((void));
extern enum reg_class xtensa_preferred_reload_class
! PARAMS ((rtx, enum reg_class));
extern enum reg_class xtensa_secondary_reload_class
PARAMS ((enum reg_class, enum machine_mode, rtx, int));
extern int a7_overlap_mentioned_p PARAMS ((rtx x));
--- 89,95 ----
extern rtx xtensa_return_addr PARAMS ((int, rtx));
extern rtx xtensa_builtin_saveregs PARAMS ((void));
extern enum reg_class xtensa_preferred_reload_class
! PARAMS ((rtx, enum reg_class, int));
extern enum reg_class xtensa_secondary_reload_class
PARAMS ((enum reg_class, enum machine_mode, rtx, int));
extern int a7_overlap_mentioned_p PARAMS ((rtx x));
diff -Nrc3pad gcc-3.2/gcc/config/xtensa/xtensa.c gcc-3.2.1/gcc/config/xtensa/xtensa.c
*** gcc-3.2/gcc/config/xtensa/xtensa.c Fri Jun 28 19:40:31 2002
--- gcc-3.2.1/gcc/config/xtensa/xtensa.c Mon Sep 30 20:34:09 2002
***************
*** 1,5 ****
/* Subroutines for insn-output.c for Tensilica's Xtensa architecture.
! Copyright (C) 2001 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
--- 1,5 ----
/* Subroutines for insn-output.c for Tensilica's Xtensa architecture.
! Copyright 2001,2002 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
*************** const char xtensa_leaf_regs[FIRST_PSEUDO
*** 104,113 ****
/* Map hard register number to register class */
const enum reg_class xtensa_regno_to_class[FIRST_PSEUDO_REGISTER] =
{
! GR_REGS, SP_REG, GR_REGS, GR_REGS,
! GR_REGS, GR_REGS, GR_REGS, GR_REGS,
! GR_REGS, GR_REGS, GR_REGS, GR_REGS,
! GR_REGS, GR_REGS, GR_REGS, GR_REGS,
AR_REGS, AR_REGS, BR_REGS,
FP_REGS, FP_REGS, FP_REGS, FP_REGS,
FP_REGS, FP_REGS, FP_REGS, FP_REGS,
--- 104,113 ----
/* Map hard register number to register class */
const enum reg_class xtensa_regno_to_class[FIRST_PSEUDO_REGISTER] =
{
! RL_REGS, SP_REG, RL_REGS, RL_REGS,
! RL_REGS, RL_REGS, RL_REGS, GR_REGS,
! RL_REGS, RL_REGS, RL_REGS, RL_REGS,
! RL_REGS, RL_REGS, RL_REGS, RL_REGS,
AR_REGS, AR_REGS, BR_REGS,
FP_REGS, FP_REGS, FP_REGS, FP_REGS,
FP_REGS, FP_REGS, FP_REGS, FP_REGS,
*************** xtensa_va_arg (valist, type)
*** 2625,2640 ****
enum reg_class
! xtensa_preferred_reload_class (x, class)
rtx x;
enum reg_class class;
{
! if (CONSTANT_P (x) && GET_CODE (x) == CONST_DOUBLE)
return NO_REGS;
! /* Don't use sp for reloads! */
! if (class == AR_REGS)
! return GR_REGS;
return class;
}
--- 2625,2646 ----
enum reg_class
! xtensa_preferred_reload_class (x, class, isoutput)
rtx x;
enum reg_class class;
+ int isoutput;
{
! if (!isoutput && CONSTANT_P (x) && GET_CODE (x) == CONST_DOUBLE)
return NO_REGS;
! /* Don't use the stack pointer or hard frame pointer for reloads!
! The hard frame pointer would normally be OK except that it may
! briefly hold an incoming argument in the prologue, and reload
! won't know that it is live because the hard frame pointer is
! treated specially. */
!
! if (class == AR_REGS || class == GR_REGS)
! return RL_REGS;
return class;
}
*************** xtensa_secondary_reload_class (class, mo
*** 2656,2668 ****
if (!isoutput)
{
if (class == FP_REGS && constantpool_mem_p (x))
! return GR_REGS;
}
if (ACC_REG_P (regno))
! return (class == GR_REGS ? NO_REGS : GR_REGS);
if (class == ACC_REG)
! return (GP_REG_P (regno) ? NO_REGS : GR_REGS);
return NO_REGS;
}
--- 2662,2674 ----
if (!isoutput)
{
if (class == FP_REGS && constantpool_mem_p (x))
! return RL_REGS;
}
if (ACC_REG_P (regno))
! return ((class == GR_REGS || class == RL_REGS) ? NO_REGS : RL_REGS);
if (class == ACC_REG)
! return (GP_REG_P (regno) ? NO_REGS : RL_REGS);
return NO_REGS;
}
diff -Nrc3pad gcc-3.2/gcc/config/xtensa/xtensa.h gcc-3.2.1/gcc/config/xtensa/xtensa.h
*** gcc-3.2/gcc/config/xtensa/xtensa.h Fri Jun 28 19:40:31 2002
--- gcc-3.2.1/gcc/config/xtensa/xtensa.h Mon Sep 30 20:34:09 2002
***************
*** 1,5 ****
/* Definitions of Tensilica's Xtensa target machine for GNU compiler.
! Copyright (C) 2001 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
--- 1,5 ----
/* Definitions of Tensilica's Xtensa target machine for GNU compiler.
! Copyright 2001,2002 Free Software Foundation, Inc.
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
This file is part of GCC.
*************** enum reg_class
*** 570,575 ****
--- 570,576 ----
FP_REGS, /* floating point registers */
ACC_REG, /* MAC16 accumulator */
SP_REG, /* sp register (aka a1) */
+ RL_REGS, /* preferred reload regs (not sp or fp) */
GR_REGS, /* integer registers except sp */
AR_REGS, /* all integer registers */
ALL_REGS, /* all registers */
*************** enum reg_class
*** 590,595 ****
--- 591,597 ----
"FP_REGS", \
"ACC_REG", \
"SP_REG", \
+ "RL_REGS", \
"GR_REGS", \
"AR_REGS", \
"ALL_REGS" \
*************** enum reg_class
*** 605,610 ****
--- 607,613 ----
{ 0xfff80000, 0x00000007 }, /* floating-point registers */ \
{ 0x00000000, 0x00000008 }, /* MAC16 accumulator */ \
{ 0x00000002, 0x00000000 }, /* stack pointer register */ \
+ { 0x0000ff7d, 0x00000000 }, /* preferred reload registers */ \
{ 0x0000fffd, 0x00000000 }, /* general-purpose registers */ \
{ 0x0003ffff, 0x00000000 }, /* integer registers */ \
{ 0xffffffff, 0x0000000f } /* all registers */ \
*************** extern enum reg_class xtensa_char_to_cla
*** 720,729 ****
: FALSE)
#define PREFERRED_RELOAD_CLASS(X, CLASS) \
! xtensa_preferred_reload_class (X, CLASS)
#define PREFERRED_OUTPUT_RELOAD_CLASS(X, CLASS) \
! (CLASS)
#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \
xtensa_secondary_reload_class (CLASS, MODE, X, 0)
--- 723,732 ----
: FALSE)
#define PREFERRED_RELOAD_CLASS(X, CLASS) \
! xtensa_preferred_reload_class (X, CLASS, 0)
#define PREFERRED_OUTPUT_RELOAD_CLASS(X, CLASS) \
! xtensa_preferred_reload_class (X, CLASS, 1)
#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \
xtensa_secondary_reload_class (CLASS, MODE, X, 0)
diff -Nrc3pad gcc-3.2/gcc/config.gcc gcc-3.2.1/gcc/config.gcc
*** gcc-3.2/gcc/config.gcc Tue Aug 6 15:20:55 2002
--- gcc-3.2.1/gcc/config.gcc Wed Oct 23 17:28:29 2002
*************** i[34567]86-*-rtems*|i[34567]86-*-rtemsel
*** 1405,1411 ****
i[34567]86-*-sco3.2v5*) # 80386 running SCO Open Server 5
xm_defines=POSIX
install_headers_dir=install-headers-cpio
! tm_file=i386/sco5.h
if test x$gas = xyes
then
tm_file="usegas.h ${tm_file}"
--- 1405,1411 ----
i[34567]86-*-sco3.2v5*) # 80386 running SCO Open Server 5
xm_defines=POSIX
install_headers_dir=install-headers-cpio
! tm_file="${tm_file} i386/att.h i386/sco5.h"
if test x$gas = xyes
then
tm_file="usegas.h ${tm_file}"
diff -Nrc3pad gcc-3.2/gcc/configure gcc-3.2.1/gcc/configure
*** gcc-3.2/gcc/configure Sat Jun 29 00:20:11 2002
--- gcc-3.2.1/gcc/configure Fri Sep 6 10:58:48 2002
*************** EOF
*** 7578,7619 ****
fi
! if test "x$gcc_cv_as_flags64" != xno; then
! echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
echo "configure:7584: checking for assembler offsetable %lo() support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
! gcc_cv_as_offsetable_lo10=unknown
! if test "x$gcc_cv_as" != x; then
! # Check if assembler has offsetable %lo()
! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
! if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \
! > /dev/null 2>&1 &&
! $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \
! > /dev/null 2>&1; then
! if cmp conftest.o conftest1.o > /dev/null 2>&1; then
! gcc_cv_as_offsetable_lo10=no
! else
! gcc_cv_as_offsetable_lo10=yes
! fi
! else
gcc_cv_as_offsetable_lo10=no
fi
! rm -f conftest.s conftest.o conftest1.s conftest1.o
fi
!
fi
echo "$ac_t""$gcc_cv_as_offsetable_lo10" 1>&6
! if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
! cat >> confdefs.h <<\EOF
#define HAVE_AS_OFFSETABLE_LO10 1
EOF
- fi
fi
;;
--- 7578,7617 ----
fi
! echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
echo "configure:7584: checking for assembler offsetable %lo() support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
! gcc_cv_as_offsetable_lo10=unknown
! if test "x$gcc_cv_as" != x; then
! # Check if assembler has offsetable %lo()
! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
! if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \
! > /dev/null 2>&1 &&
! $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \
! > /dev/null 2>&1; then
! if cmp conftest.o conftest1.o > /dev/null 2>&1; then
gcc_cv_as_offsetable_lo10=no
+ else
+ gcc_cv_as_offsetable_lo10=yes
fi
! else
! gcc_cv_as_offsetable_lo10=no
fi
! rm -f conftest.s conftest.o conftest1.s conftest1.o
! fi
!
fi
echo "$ac_t""$gcc_cv_as_offsetable_lo10" 1>&6
! if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
! cat >> confdefs.h <<\EOF
#define HAVE_AS_OFFSETABLE_LO10 1
EOF
fi
;;
diff -Nrc3pad gcc-3.2/gcc/configure.in gcc-3.2.1/gcc/configure.in
*** gcc-3.2/gcc/configure.in Sat Jun 29 00:20:11 2002
--- gcc-3.2.1/gcc/configure.in Fri Sep 6 10:58:47 2002
*************** EOF
*** 1846,1878 ****
[Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
fi
! if test "x$gcc_cv_as_flags64" != xno; then
! AC_CACHE_CHECK([for assembler offsetable %lo() support],
! gcc_cv_as_offsetable_lo10, [
! gcc_cv_as_offsetable_lo10=unknown
! if test "x$gcc_cv_as" != x; then
! # Check if assembler has offsetable %lo()
! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
! if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \
! > /dev/null 2>&1 &&
! $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \
! > /dev/null 2>&1; then
! if cmp conftest.o conftest1.o > /dev/null 2>&1; then
! gcc_cv_as_offsetable_lo10=no
! else
! gcc_cv_as_offsetable_lo10=yes
! fi
! else
gcc_cv_as_offsetable_lo10=no
fi
! rm -f conftest.s conftest.o conftest1.s conftest1.o
fi
! ])
! if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
! AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
! [Define if your assembler supports offsetable %lo().])
fi
fi
;;
--- 1846,1876 ----
[Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
fi
! AC_CACHE_CHECK([for assembler offsetable %lo() support],
! gcc_cv_as_offsetable_lo10, [
! gcc_cv_as_offsetable_lo10=unknown
! if test "x$gcc_cv_as" != x; then
! # Check if assembler has offsetable %lo()
! echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
! echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
! if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \
! > /dev/null 2>&1 &&
! $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \
! > /dev/null 2>&1; then
! if cmp conftest.o conftest1.o > /dev/null 2>&1; then
gcc_cv_as_offsetable_lo10=no
+ else
+ gcc_cv_as_offsetable_lo10=yes
fi
! else
! gcc_cv_as_offsetable_lo10=no
fi
! rm -f conftest.s conftest.o conftest1.s conftest1.o
fi
+ ])
+ if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
+ AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
+ [Define if your assembler supports offsetable %lo().])
fi
;;
diff -Nrc3pad gcc-3.2/gcc/cppfiles.c gcc-3.2.1/gcc/cppfiles.c
*** gcc-3.2/gcc/cppfiles.c Fri Jan 18 13:40:28 2002
--- gcc-3.2.1/gcc/cppfiles.c Thu Aug 15 19:46:35 2002
*************** stack_include_file (pfile, inc)
*** 310,318 ****
sysp = MAX ((pfile->map ? pfile->map->sysp : 0),
(inc->foundhere ? inc->foundhere->sysp : 0));
! /* For -M, add the file to the dependencies on its first inclusion. */
! if (CPP_OPTION (pfile, print_deps) > sysp && !inc->include_count)
! deps_add_dep (pfile->deps, inc->name);
/* Not in cache? */
if (! inc->buffer)
--- 310,321 ----
sysp = MAX ((pfile->map ? pfile->map->sysp : 0),
(inc->foundhere ? inc->foundhere->sysp : 0));
! /* Add the file to the dependencies on its first inclusion. */
! if (CPP_OPTION (pfile, print_deps) > !!sysp && !inc->include_count)
! {
! if (pfile->buffer || CPP_OPTION (pfile, deps_ignore_main_file) == 0)
! deps_add_dep (pfile->deps, inc->name);
! }
/* Not in cache? */
if (! inc->buffer)
diff -Nrc3pad gcc-3.2/gcc/cppinit.c gcc-3.2.1/gcc/cppinit.c
*** gcc-3.2/gcc/cppinit.c Fri May 24 09:26:48 2002
--- gcc-3.2.1/gcc/cppinit.c Sun Oct 6 08:21:21 2002
*************** static void mark_named_operators PARAMS
*** 103,111 ****
static void append_include_chain PARAMS ((cpp_reader *,
char *, int, int));
static struct search_path * remove_dup_dir PARAMS ((cpp_reader *,
struct search_path *));
static struct search_path * remove_dup_dirs PARAMS ((cpp_reader *,
! struct search_path *));
static void merge_include_chains PARAMS ((cpp_reader *));
static bool push_include PARAMS ((cpp_reader *,
struct pending_option *));
--- 103,115 ----
static void append_include_chain PARAMS ((cpp_reader *,
char *, int, int));
static struct search_path * remove_dup_dir PARAMS ((cpp_reader *,
+ struct search_path *,
+ struct search_path **));
+ static struct search_path * remove_dup_nonsys_dirs PARAMS ((cpp_reader *,
+ struct search_path **,
struct search_path *));
static struct search_path * remove_dup_dirs PARAMS ((cpp_reader *,
! struct search_path **));
static void merge_include_chains PARAMS ((cpp_reader *));
static bool push_include PARAMS ((cpp_reader *,
struct pending_option *));
*************** path_include (pfile, list, path)
*** 189,195 ****
name[q - p] = 0;
}
! append_include_chain (pfile, name, path, 0);
/* Advance past this name. */
if (*q == 0)
--- 193,199 ----
name[q - p] = 0;
}
! append_include_chain (pfile, name, path, path == SYSTEM);
/* Advance past this name. */
if (*q == 0)
*************** append_include_chain (pfile, dir, path,
*** 272,326 ****
}
/* Handle a duplicated include path. PREV is the link in the chain
! before the duplicate. The duplicate is removed from the chain and
! freed. Returns PREV. */
static struct search_path *
! remove_dup_dir (pfile, prev)
cpp_reader *pfile;
struct search_path *prev;
{
! struct search_path *cur = prev->next;
if (CPP_OPTION (pfile, verbose))
fprintf (stderr, _("ignoring duplicate directory \"%s\"\n"), cur->name);
- prev->next = cur->next;
free ((PTR) cur->name);
free (cur);
return prev;
}
/* Remove duplicate directories from a chain. Returns the tail of the
chain, or NULL if the chain is empty. This algorithm is quadratic
in the number of -I switches, which is acceptable since there
aren't usually that many of them. */
static struct search_path *
! remove_dup_dirs (pfile, head)
cpp_reader *pfile;
! struct search_path *head;
{
struct search_path *prev = NULL, *cur, *other;
! for (cur = head; cur; cur = cur->next)
{
! for (other = head; other != cur; other = other->next)
if (INO_T_EQ (cur->ino, other->ino) && cur->dev == other->dev)
{
! if (cur->sysp && !other->sysp)
! {
! cpp_warning (pfile,
! "changing search order for system directory \"%s\"",
! cur->name);
! if (strcmp (cur->name, other->name))
! cpp_warning (pfile,
! " as it is the same as non-system directory \"%s\"",
! other->name);
! else
! cpp_warning (pfile,
! " as it has already been specified as a non-system directory");
! }
! cur = remove_dup_dir (pfile, prev);
break;
}
prev = cur;
--- 276,373 ----
}
/* Handle a duplicated include path. PREV is the link in the chain
! before the duplicate, or NULL if the duplicate is at the head of
! the chain. The duplicate is removed from the chain and freed.
! Returns PREV. */
static struct search_path *
! remove_dup_dir (pfile, prev, head_ptr)
cpp_reader *pfile;
struct search_path *prev;
+ struct search_path **head_ptr;
{
! struct search_path *cur;
!
! if (prev != NULL)
! {
! cur = prev->next;
! prev->next = cur->next;
! }
! else
! {
! cur = *head_ptr;
! *head_ptr = cur->next;
! }
if (CPP_OPTION (pfile, verbose))
fprintf (stderr, _("ignoring duplicate directory \"%s\"\n"), cur->name);
free ((PTR) cur->name);
free (cur);
return prev;
}
+ /* Remove duplicate non-system directories for which there is an equivalent
+ system directory later in the chain. The range for removal is between
+ *HEAD_PTR and END. Returns the directory before END, or NULL if none.
+ This algorithm is quadratic in the number of system directories, which is
+ acceptable since there aren't usually that many of them. */
+ static struct search_path *
+ remove_dup_nonsys_dirs (pfile, head_ptr, end)
+ cpp_reader *pfile;
+ struct search_path **head_ptr;
+ struct search_path *end;
+ {
+ int sysdir = 0;
+ struct search_path *prev = NULL, *cur, *other;
+
+ for (cur = *head_ptr; cur; cur = cur->next)
+ {
+ if (cur->sysp)
+ {
+ sysdir = 1;
+ for (other = *head_ptr, prev = NULL;
+ other != end;
+ other = other ? other->next : *head_ptr)
+ {
+ if (!other->sysp
+ && INO_T_EQ (cur->ino, other->ino)
+ && cur->dev == other->dev)
+ {
+ other = remove_dup_dir (pfile, prev, head_ptr);
+ if (CPP_OPTION (pfile, verbose))
+ fprintf (stderr,
+ _(" as it is a non-system directory that duplicates a system directory\n"));
+ }
+ prev = other;
+ }
+ }
+ }
+
+ if (!sysdir)
+ for (cur = *head_ptr; cur != end; cur = cur->next)
+ prev = cur;
+
+ return prev;
+ }
+
/* Remove duplicate directories from a chain. Returns the tail of the
chain, or NULL if the chain is empty. This algorithm is quadratic
in the number of -I switches, which is acceptable since there
aren't usually that many of them. */
static struct search_path *
! remove_dup_dirs (pfile, head_ptr)
cpp_reader *pfile;
! struct search_path **head_ptr;
{
struct search_path *prev = NULL, *cur, *other;
! for (cur = *head_ptr; cur; cur = cur->next)
{
! for (other = *head_ptr; other != cur; other = other->next)
if (INO_T_EQ (cur->ino, other->ino) && cur->dev == other->dev)
{
! cur = remove_dup_dir (pfile, prev, head_ptr);
break;
}
prev = cur;
*************** merge_include_chains (pfile)
*** 358,385 ****
else
brack = systm;
! /* This is a bit tricky. First we drop dupes from the quote-include
! list. Then we drop dupes from the bracket-include list.
! Finally, if qtail and brack are the same directory, we cut out
! brack and move brack up to point to qtail.
We can't just merge the lists and then uniquify them because
then we may lose directories from the <> search path that should
! be there; consider -Ifoo -Ibar -I- -Ifoo -Iquux. It is however
safe to treat -Ibar -Ifoo -I- -Ifoo -Iquux as if written
-Ibar -I- -Ifoo -Iquux. */
! remove_dup_dirs (pfile, brack);
! qtail = remove_dup_dirs (pfile, quote);
if (quote)
{
qtail->next = brack;
/* If brack == qtail, remove brack as it's simpler. */
! if (brack && INO_T_EQ (qtail->ino, brack->ino)
&& qtail->dev == brack->dev)
! brack = remove_dup_dir (pfile, qtail);
}
else
quote = brack;
--- 405,437 ----
else
brack = systm;
! /* This is a bit tricky. First we drop non-system dupes of system
! directories from the merged bracket-include list. Next we drop
! dupes from the bracket and quote include lists. Then we drop
! non-system dupes from the merged quote-include list. Finally,
! if qtail and brack are the same directory, we cut out brack and
! move brack up to point to qtail.
We can't just merge the lists and then uniquify them because
then we may lose directories from the <> search path that should
! be there; consider -Ifoo -Ibar -I- -Ifoo -Iquux. It is however
safe to treat -Ibar -Ifoo -I- -Ifoo -Iquux as if written
-Ibar -I- -Ifoo -Iquux. */
! remove_dup_nonsys_dirs (pfile, &brack, systm);
! remove_dup_dirs (pfile, &brack);
if (quote)
{
+ qtail = remove_dup_dirs (pfile, "e);
qtail->next = brack;
+ qtail = remove_dup_nonsys_dirs (pfile, "e, brack);
+
/* If brack == qtail, remove brack as it's simpler. */
! if (qtail && brack && INO_T_EQ (qtail->ino, brack->ino)
&& qtail->dev == brack->dev)
! brack = remove_dup_dir (pfile, qtail, "e);
}
else
quote = brack;
*************** struct lang_flags
*** 396,402 ****
char objc;
char cplusplus;
char extended_numbers;
! char trigraphs;
char dollars_in_ident;
char cplusplus_comments;
char digraphs;
--- 448,454 ----
char objc;
char cplusplus;
char extended_numbers;
! char std;
char dollars_in_ident;
char cplusplus_comments;
char digraphs;
*************** struct lang_flags
*** 404,410 ****
/* ??? Enable $ in identifiers in assembly? */
static const struct lang_flags lang_defaults[] =
! { /* c99 objc c++ xnum trig dollar c++comm digr */
/* GNUC89 */ { 0, 0, 0, 1, 0, 1, 1, 1 },
/* GNUC99 */ { 1, 0, 0, 1, 0, 1, 1, 1 },
/* STDC89 */ { 0, 0, 0, 0, 1, 0, 0, 0 },
--- 456,462 ----
/* ??? Enable $ in identifiers in assembly? */
static const struct lang_flags lang_defaults[] =
! { /* c99 objc c++ xnum std dollar c++comm digr */
/* GNUC89 */ { 0, 0, 0, 1, 0, 1, 1, 1 },
/* GNUC99 */ { 1, 0, 0, 1, 0, 1, 1, 1 },
/* STDC89 */ { 0, 0, 0, 0, 1, 0, 0, 0 },
*************** set_lang (pfile, lang)
*** 431,437 ****
CPP_OPTION (pfile, objc) = l->objc;
CPP_OPTION (pfile, cplusplus) = l->cplusplus;
CPP_OPTION (pfile, extended_numbers) = l->extended_numbers;
! CPP_OPTION (pfile, trigraphs) = l->trigraphs;
CPP_OPTION (pfile, dollars_in_ident) = l->dollars_in_ident;
CPP_OPTION (pfile, cplusplus_comments) = l->cplusplus_comments;
CPP_OPTION (pfile, digraphs) = l->digraphs;
--- 483,490 ----
CPP_OPTION (pfile, objc) = l->objc;
CPP_OPTION (pfile, cplusplus) = l->cplusplus;
CPP_OPTION (pfile, extended_numbers) = l->extended_numbers;
! CPP_OPTION (pfile, std) = l->std;
! CPP_OPTION (pfile, trigraphs) = l->std;
CPP_OPTION (pfile, dollars_in_ident) = l->dollars_in_ident;
CPP_OPTION (pfile, cplusplus_comments) = l->cplusplus_comments;
CPP_OPTION (pfile, digraphs) = l->digraphs;
*************** init_standard_includes (pfile)
*** 847,853 ****
&& !CPP_OPTION (pfile, no_standard_cplusplus_includes)))
{
/* Does this dir start with the prefix? */
! if (!memcmp (p->fname, default_prefix, default_len))
{
/* Yes; change prefix and add to search list. */
int flen = strlen (p->fname);
--- 900,906 ----
&& !CPP_OPTION (pfile, no_standard_cplusplus_includes)))
{
/* Does this dir start with the prefix? */
! if (!strncmp (p->fname, default_prefix, default_len))
{
/* Yes; change prefix and add to search list. */
int flen = strlen (p->fname);
*************** parse_option (input)
*** 1295,1301 ****
md = (mn + mx) / 2;
opt_len = cl_options[md].opt_len;
! comp = memcmp (input, cl_options[md].opt_text, opt_len);
if (comp > 0)
mn = md + 1;
--- 1348,1354 ----
md = (mn + mx) / 2;
opt_len = cl_options[md].opt_len;
! comp = strncmp (input, cl_options[md].opt_text, opt_len);
if (comp > 0)
mn = md + 1;
*************** parse_option (input)
*** 1320,1326 ****
for (; mn < (unsigned int) N_OPTS; mn++)
{
opt_len = cl_options[mn].opt_len;
! if (memcmp (input, cl_options[mn].opt_text, opt_len))
break;
if (input[opt_len] == '\0')
return mn;
--- 1373,1379 ----
for (; mn < (unsigned int) N_OPTS; mn++)
{
opt_len = cl_options[mn].opt_len;
! if (strncmp (input, cl_options[mn].opt_text, opt_len))
break;
if (input[opt_len] == '\0')
return mn;
*************** init_dependency_output (pfile)
*** 1880,1886 ****
{
spec = getenv ("SUNPRO_DEPENDENCIES");
if (spec)
! CPP_OPTION (pfile, print_deps) = 2;
else
return;
}
--- 1933,1942 ----
{
spec = getenv ("SUNPRO_DEPENDENCIES");
if (spec)
! {
! CPP_OPTION (pfile, print_deps) = 2;
! CPP_OPTION (pfile, deps_ignore_main_file) = 1;
! }
else
return;
}
diff -Nrc3pad gcc-3.2/gcc/cpplib.c gcc-3.2.1/gcc/cpplib.c
*** gcc-3.2/gcc/cpplib.c Thu Mar 14 19:24:56 2002
--- gcc-3.2.1/gcc/cpplib.c Sun Oct 6 09:12:19 2002
*************** run_directive (pfile, dir_no, buf, count
*** 406,417 ****
--- 406,422 ----
{
cpp_push_buffer (pfile, (const U_CHAR *) buf, count,
/* from_stage3 */ true, 1);
+ /* Disgusting hack. */
+ if (dir_no == T_PRAGMA)
+ pfile->buffer->inc = pfile->buffer->prev->inc;
start_directive (pfile);
/* We don't want a leading # to be interpreted as a directive. */
pfile->buffer->saved_flags = 0;
pfile->directive = &dtable[dir_no];
(void) (*pfile->directive->handler) (pfile);
end_directive (pfile, 1);
+ if (dir_no == T_PRAGMA)
+ pfile->buffer->inc = NULL;
_cpp_pop_buffer (pfile);
}
*************** destringize_and_run (pfile, in)
*** 1219,1224 ****
--- 1224,1232 ----
{
const unsigned char *src, *limit;
char *dest, *result;
+ cpp_context saved_context;
+ cpp_context *saved_cur_context;
+ unsigned int saved_line;
dest = result = alloca (in->len + 1);
for (src = in->text, limit = src + in->len; src < limit;)
*************** destringize_and_run (pfile, in)
*** 1230,1236 ****
--- 1238,1277 ----
}
*dest = '\0';
+ /* FIXME. All this saving is a horrible kludge to handle the case
+ when we're in a macro expansion.
+
+ A better strategy it to not convert _Pragma to #pragma if doing
+ preprocessed output, but to just pass it through as-is, unless it
+ is a CPP pragma in which case is should be processed normally.
+ When compiling the preprocessed output the _Pragma should be
+ handled. This will be become necessary when we move to
+ line-at-a-time lexing since we will be macro-expanding the line
+ before outputting / compiling it. */
+ saved_line = pfile->line;
+ saved_context = pfile->base_context;
+ saved_cur_context = pfile->context;
+ pfile->context = &pfile->base_context;
run_directive (pfile, T_PRAGMA, result, dest - result);
+ pfile->context = saved_cur_context;
+ pfile->base_context = saved_context;
+ pfile->line = saved_line;
+
+ /* See above comment. For the moment, we'd like
+
+ token1 _Pragma ("foo") token2
+
+ to be output as
+
+ token1
+ # 7 "file.c"
+ #pragma foo
+ # 7 "file.c"
+ token2
+
+ Getting the line markers is a little tricky. */
+ if (pfile->cb.line_change)
+ (*pfile->cb.line_change) (pfile, pfile->cur_token, false);
}
/* Handle the _Pragma operator. */
*************** _cpp_do__Pragma (pfile)
*** 1240,1264 ****
{
const cpp_token *string = get__Pragma_string (pfile);
! if (!string)
! cpp_error (pfile, "_Pragma takes a parenthesized string literal");
else
! {
! /* Ideally, we'd like
! token1 _Pragma ("foo") token2
! to be output as
! token1
! # 7 "file.c"
! #pragma foo
! # 7 "file.c"
! token2
! Getting these correct line markers is a little tricky. */
!
! unsigned int orig_line = pfile->line;
! destringize_and_run (pfile, &string->val.str);
! pfile->line = orig_line;
! pfile->buffer->saved_flags = BOL;
! }
}
/* Just ignore #sccs, on systems where we define it at all. */
--- 1281,1290 ----
{
const cpp_token *string = get__Pragma_string (pfile);
! if (string)
! destringize_and_run (pfile, &string->val.str);
else
! cpp_error (pfile, "_Pragma takes a parenthesized string literal");
}
/* Just ignore #sccs, on systems where we define it at all. */
diff -Nrc3pad gcc-3.2/gcc/cpplib.h gcc-3.2.1/gcc/cpplib.h
*** gcc-3.2/gcc/cpplib.h Thu Mar 14 19:24:57 2002
--- gcc-3.2.1/gcc/cpplib.h Thu Aug 15 19:46:36 2002
*************** struct cpp_options
*** 279,284 ****
--- 279,287 ----
/* If true, fopen (deps_file, "a") else fopen (deps_file, "w"). */
unsigned char print_deps_append;
+ /* If true, no dependency is generated on the main file. */
+ unsigned char deps_ignore_main_file;
+
/* Nonzero means print names of header files (-H). */
unsigned char print_include_names;
*************** struct cpp_options
*** 335,340 ****
--- 338,346 ----
/* Nonzero for the 1999 C Standard, including corrigenda and amendments. */
unsigned char c99;
+ /* Nonzero if conforming to some particular standard. */
+ unsigned char std;
+
/* Nonzero means give all the error messages the ANSI standard requires. */
unsigned char pedantic;
diff -Nrc3pad gcc-3.2/gcc/cppmacro.c gcc-3.2.1/gcc/cppmacro.c
*** gcc-3.2/gcc/cppmacro.c Wed May 29 19:26:00 2002
--- gcc-3.2.1/gcc/cppmacro.c Sat Sep 28 00:32:14 2002
*************** stringify_arg (pfile, arg)
*** 348,353 ****
--- 348,359 ----
}
/* Commit the memory, including NUL, and return the token. */
+ if ((size_t) (BUFF_LIMIT (pfile->u_buff) - dest) < 1)
+ {
+ size_t len_so_far = dest - BUFF_FRONT (pfile->u_buff);
+ _cpp_extend_buff (pfile, &pfile->u_buff, 1);
+ dest = BUFF_FRONT (pfile->u_buff) + len_so_far;
+ }
len = dest - BUFF_FRONT (pfile->u_buff);
BUFF_FRONT (pfile->u_buff) = dest + 1;
return new_string_token (pfile, dest - len, len);
*************** collect_args (pfile, node)
*** 613,619 ****
}
if (!error)
! return base_buff;
_cpp_release_buff (pfile, base_buff);
return NULL;
--- 619,638 ----
}
if (!error)
! {
! /* GCC has special semantics for , ## b where b is a varargs
! parameter: we remove the comma if b was omitted entirely.
! If b was merely an empty argument, the comma is retained.
! If the macro takes just one (varargs) parameter, then we
! retain the comma only if we are standards conforming.
!
! If FIRST is NULL replace_args () swallows the comma. */
! if (macro->variadic && (argc < macro->paramc
! || (argc == 1 && args[0].count == 0
! && !CPP_OPTION (pfile, std))))
! args[macro->paramc - 1].first = NULL;
! return base_buff;
! }
_cpp_release_buff (pfile, base_buff);
return NULL;
*************** replace_args (pfile, node, args)
*** 799,813 ****
count = arg->count, from = arg->first;
if (dest != first)
{
- /* GCC has special semantics for , ## b where b is a
- varargs parameter: the comma disappears if b was
- given no actual arguments (not merely if b is an
- empty argument); otherwise the paste flag is removed. */
if (dest[-1]->type == CPP_COMMA
&& macro->variadic
&& src->val.arg_no == macro->paramc)
{
! if (count == 0)
dest--;
else
paste_flag = dest - 1;
--- 818,830 ----
count = arg->count, from = arg->first;
if (dest != first)
{
if (dest[-1]->type == CPP_COMMA
&& macro->variadic
&& src->val.arg_no == macro->paramc)
{
! /* Swallow a pasted comma if from == NULL, otherwise
! drop the paste flag. */
! if (from == NULL)
dest--;
else
paste_flag = dest - 1;
diff -Nrc3pad gcc-3.2/gcc/dbxout.c gcc-3.2.1/gcc/dbxout.c
*** gcc-3.2/gcc/dbxout.c Wed May 1 22:29:25 2002
--- gcc-3.2.1/gcc/dbxout.c Sat Sep 14 00:26:38 2002
*************** dbxout_function_end ()
*** 396,406 ****
--- 396,410 ----
/* By convention, GCC will mark the end of a function with an N_FUN
symbol and an empty string. */
+ #ifdef DBX_OUTPUT_NFUN
+ DBX_OUTPUT_NFUN (asmfile, lscope_label_name, current_function_decl);
+ #else
fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
assemble_name (asmfile, lscope_label_name);
putc ('-', asmfile);
assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
fprintf (asmfile, "\n");
+ #endif
}
#endif /* DBX_DEBUGGING_INFO */
diff -Nrc3pad gcc-3.2/gcc/doc/c-tree.texi gcc-3.2.1/gcc/doc/c-tree.texi
*** gcc-3.2/gcc/doc/c-tree.texi Thu Apr 25 09:34:52 2002
--- gcc-3.2.1/gcc/doc/c-tree.texi Wed Sep 11 16:40:27 2002
*************** Then, if @code{THUNK_VCALL_OFFSET} (an @
*** 1203,1213 ****
the adjusted @code{this} pointer must be adjusted again. The complete
calculation is given by the following pseudo-code:
! @example
this += THUNK_DELTA
if (THUNK_VCALL_OFFSET)
this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
! @end example
Finally, the thunk should jump to the location given
by @code{DECL_INITIAL}; this will always be an expression for the
--- 1203,1213 ----
the adjusted @code{this} pointer must be adjusted again. The complete
calculation is given by the following pseudo-code:
! @smallexample
this += THUNK_DELTA
if (THUNK_VCALL_OFFSET)
this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
! @end smallexample
Finally, the thunk should jump to the location given
by @code{DECL_INITIAL}; this will always be an expression for the
diff -Nrc3pad gcc-3.2/gcc/doc/compat.texi gcc-3.2.1/gcc/doc/compat.texi
*** gcc-3.2/gcc/doc/compat.texi Thu Jan 1 00:00:00 1970
--- gcc-3.2.1/gcc/doc/compat.texi Sat Oct 12 00:01:18 2002
***************
*** 0 ****
--- 1,156 ----
+ @c Copyright (C) 2002 Free Software Foundation, Inc.
+ @c This is part of the GCC manual.
+ @c For copying conditions, see the file gcc.texi.
+
+ @node Compatibility
+ @chapter Binary Compatibility
+ @cindex binary compatibility
+ @cindex ABI
+ @cindex application binary interface
+
+ Binary compatibility encompasses several related concepts:
+
+ @table @dfn
+ @item application binary interface (ABI)
+ The set of runtime conventions followed by all of the tools that deal
+ with binary representations of a program, including compilers, assemblers,
+ linkers, and language runtime support.
+ Some ABIs are formal with a written specification, possibly designed
+ by multiple interested parties. Others are simply the way things are
+ actually done by a particular set of tools.
+
+ @item ABI conformance
+ A compiler conforms to an ABI if it generates code that follows all of
+ the specifications enumerated by that ABI@.
+ A library conforms to an ABI if it is implemented according to that ABI@.
+ An application conforms to an ABI if it is built using tools that conform
+ to that ABI and does not contain source code that specifically changes
+ behavior specified by the ABI@.
+
+ @item calling conventions
+ Calling conventions are a subset of an ABI that specify of how arguments
+ are passed and function results are returned.
+
+ @item interoperability
+ Different sets of tools are interoperable if they generate files that
+ can be used in the same program. The set of tools includes compilers,
+ assemblers, linkers, libraries, header files, startup files, and debuggers.
+ Binaries produced by different sets of tools are not interoperable unless
+ they implement the same ABI@. This applies to different versions of the
+ same tools as well as tools from different vendors.
+
+ @item intercallability
+ Whether a function in a binary built by one set of tools can call a
+ function in a binary built by a different set of tools is a subset
+ of interoperability.
+
+ @item implementation-defined features
+ Language standards include lists of implementation-defined features whose
+ behavior can vary from one implementation to another. Some of these
+ features are normally covered by a platform's ABI and others are not.
+ The features that are not covered by an ABI generally affect how a
+ program behaves, but not intercallability.
+
+ @item compatibility
+ Conformance to the same ABI and the same behavior of implementation-defined
+ features are both relevant for compatibility.
+ @end table
+
+ The application binary interface implemented by a C or C++ compiler
+ affects code generation and runtime support for:
+
+ @itemize @bullet
+ @item
+ size and alignment of data types
+ @item
+ layout of structured types
+ @item
+ calling conventions
+ @item
+ register usage conventions
+ @item
+ interfaces for runtime arithmetic support
+ @item
+ object file formats
+ @end itemize
+
+ In addition, the application binary interface implemented by a C++ compiler
+ affects code generation and runtime support for:
+ @itemize @bullet
+ @item
+ name mangling
+ @item
+ exception handling
+ @item
+ invoking constructors and destructors
+ @item
+ layout, alignment, and padding of classes
+ @item
+ layout and alignment of virtual tables
+ @end itemize
+
+ Some GCC compilation options cause the compiler to generate code that
+ does not conform to the platform's default ABI@. Other options cause
+ different program behavior for implementation-defined features that are
+ not covered by an ABI@. These options are provided for consistency with
+ other compilers that do not follow the platform's default ABI or the
+ usual behavior of implementation-defined features for the platform.
+ Be very careful about using such options.
+
+ Most platforms have a well-defined ABI that covers C code, but ABIs
+ that cover C++ functionality are not yet common.
+
+ Starting with GCC 3.2, GCC binary conventions for C++ are based on a
+ written, vendor-neutral C++ ABI that was designed to be specific to
+ 64-bit Itanium but also includes generic specifications that apply to
+ any platform.
+ This C++ ABI is also implemented by other compiler vendors on some
+ platforms, notably GNU/Linux and BSD systems.
+ We have tried hard to provide a stable ABI that will be compatible with
+ future GCC releases, but it is possible that we will encounter problems
+ that make this difficult. Such problems could include different
+ interpretations of the C++ ABI by different vendors, bugs in the ABI, or
+ bugs in the implementation of the ABI in different compilers.
+ GCC's @code{-Wabi} switch warns when G++ generates code that is
+ probably not compatible with the C++ ABI@.
+
+ The C++ library used with a C++ compiler includes the Standard C++
+ Library, with functionality defined in the C++ Standard, plus language
+ runtime support. The runtime support is included in a C++ ABI, but there
+ is no formal ABI for the Standard C++ Library. Two implementations
+ of that library are interoperable if one follows the de-facto ABI of the
+ other and if they are both built with the same compiler, or with compilers
+ that conform to the same ABI for C++ compiler and runtime support.
+
+ When G++ and another C++ compiler conform to the same C++ ABI, but the
+ implementations of the Standard C++ Library that they normally use do not
+ follow the same ABI for the Standard C++ Library, object files built with
+ those compilers can be used in the same program only if they use the same
+ C++ library. This requires specifying the location of the C++ library
+ header files when invoking the compiler whose usual library is not being
+ used. The location of GCC's C++ header files depends on how the GCC
+ build was configured, but can be seen by using the G++ @option{-v} option.
+ With default configuration options for G++ 3.2 the compile line for a
+ different C++ compiler needs to include
+
+ @example
+ -I@var{gcc_install_directory}/include/c++/3.2
+ @end example
+
+ Similarly, compiling code with G++ that must use a C++ library other
+ than the GNU C++ library requires specifying the location of the header
+ files for that other library.
+
+ The most straightforward way to link a program to use a particular
+ C++ library is to use a C++ driver that specifies that C++ library by
+ default. The @command{g++} driver, for example, tells the linker where
+ to find GCC's C++ library (@file{libstdc++}) plus the other libraries
+ and startup files it needs, in the proper order.
+
+ If a program must use a different C++ library and it's not possible
+ to do the final link using a C++ driver that uses that library by default,
+ it is necessary to tell @command{g++} the location and name of that
+ library. It might also be necessary to specify different startup files
+ and other runtime support libraries, and to suppress the use of GCC's
+ support libraries with one or more of the options @option{-nostdlib},
+ @option{-nostartfiles}, and @option{-nodefaultlibs}.
diff -Nrc3pad gcc-3.2/gcc/doc/contrib.texi gcc-3.2.1/gcc/doc/contrib.texi
*** gcc-3.2/gcc/doc/contrib.texi Sun May 19 19:59:08 2002
--- gcc-3.2.1/gcc/doc/contrib.texi Tue Nov 12 13:06:12 2002
*************** in this list are accidental. Feel free
*** 14,23 ****
or some of your contributions are not listed. Please keep this list in
alphabetical order.
- Some projects operating under the GCC project maintain their own list
- of contributors, such as
- @uref{http://gcc.gnu.org/libstdc++/,the C++ library}.
-
@itemize @bullet
@item
--- 14,19 ----
*************** Analog Devices helped implement the supp
*** 25,31 ****
and iterators.
@item
! John David Anglin for improvements to libstdc++-v3 and the HP-UX port.
@item
James van Artsdalen wrote the code that makes efficient use of
--- 21,28 ----
and iterators.
@item
! John David Anglin for threading-related fixes and improvements to
! libstdc++-v3, and the HP-UX port.
@item
James van Artsdalen wrote the code that makes efficient use of
*************** Alasdair Baird for various bugfixes.
*** 38,52 ****
Gerald Baumgartner added the signature extension to the C++ front end.
@item
Neil Booth for work on cpplib, lang hooks, debug hooks and other
miscellaneous clean-ups.
@item
Per Bothner for his direction via the steering committee and various
improvements to our infrastructure for supporting new languages. Chill
! and Java front end implementations. Initial implementations of
! cpplib, fix-header, config.guess, libio, and past C++ library
! (libg++) maintainer.
@item
Devon Bowen helped port GCC to the Tahoe.
--- 35,69 ----
Gerald Baumgartner added the signature extension to the C++ front end.
@item
+ Godmar Back for his Java improvements and encouragement.
+
+ @item
+ Scott Bambrough for help porting the Java compiler.
+
+ @item
+ Jon Beniston for his Win32 port of Java.
+
+ @item
+ Geoff Berry for his Java object serialization work and various patches.
+
+ @item
+ Eric Blake for helping to make GCJ and libgcj conform to the
+ specifications.
+
+ @item
+ Hans-J. Boehm for his @uref{http://www.hpl.hp.com/personal/Hans_Boehm/gc/,,
+ garbage collector}, IA-64 libffi port, and other Java work.
+
+ @item
Neil Booth for work on cpplib, lang hooks, debug hooks and other
miscellaneous clean-ups.
@item
Per Bothner for his direction via the steering committee and various
improvements to our infrastructure for supporting new languages. Chill
! front end implementation. Initial implementations of
! cpplib, fix-header, config.guess, libio, and past C++ library (libg++)
! maintainer. Dreaming up, designing and implementing much of GCJ.
@item
Devon Bowen helped port GCC to the Tahoe.
*************** Christian Bruel for improvements to loca
*** 67,97 ****
Herman A.J. ten Brugge for various fixes.
@item
Joe Buck for his direction via the steering committee.
@item
Craig Burley for leadership of the Fortran effort.
@item
! Paolo Carlini for his work on libstdc++-v3.
@item
John Carr for his alias work, SPARC hacking, infrastructure improvements,
previous contributions to the steering committee, loop optimizations, etc.
@item
! Steve Chamberlain wrote the support for the Hitachi SH and H8 processors
! and the PicoJava processor.
@item
Scott Christley for his Objective-C contributions.
@item
Branko Cibej for more warning contributions.
@item
! Nick Clifton for arm, mcore, fr30, v850, m32r work, @option{--help}, and other random
! hacking.
@item
Ralf Corsepius for SH testing and minor bugfixing.
--- 84,138 ----
Herman A.J. ten Brugge for various fixes.
@item
+ Joerg Brunsmann for Java compiler hacking and help with the GCJ FAQ.
+
+ @item
Joe Buck for his direction via the steering committee.
@item
Craig Burley for leadership of the Fortran effort.
@item
! Stephan Buys for contributing Doxygen notes for libstdc++.
!
! @item
! Paolo Carlini for libstdc++ work: lots of efficiency improvements to
! the string class, hard detective work on the frustrating localization
! issues, and keeping up with the problem reports.
@item
John Carr for his alias work, SPARC hacking, infrastructure improvements,
previous contributions to the steering committee, loop optimizations, etc.
@item
! Steve Chamberlain for support for the Hitachi SH and H8 processors
! and the PicoJava processor, and for GCJ config fixes.
!
! @item
! Glenn Chambers for help with the GCJ FAQ.
!
! @item
! John-Marc Chandonia for various libgcj patches.
@item
Scott Christley for his Objective-C contributions.
@item
+ Eric Christopher for his Java porting help and clean-ups.
+
+ @item
Branko Cibej for more warning contributions.
@item
! The @uref{http://www.classpath.org,,GNU Classpath project}
! for all of their merged runtime code.
!
! @item
! Nick Clifton for arm, mcore, fr30, v850, m32r work, @option{--help}, and
! other random hacking.
!
! @item
! Michael Cook for libstdc++ cleanup patches to reduce warnings.
@item
Ralf Corsepius for SH testing and minor bugfixing.
*************** Dario Dariol contributed the four variet
*** 111,132 ****
that print a copy of their source.
@item
! Ulrich Drepper for his work on the C++ runtime libraries, glibc,
! testing of GCC using glibc, ISO C99 support, CFG dumping support, etc.
@item
Richard Earnshaw for his ongoing work with the ARM@.
@item
! David Edelsohn for his direction via the steering committee,
! ongoing work with the RS6000/PowerPC port, and help cleaning up Haifa
! loop changes.
@item
Paul Eggert for random hacking all over GCC@.
@item
! Mark Elbrecht for various DJGPP improvements.
@item
Ben Elliston for his work to move the Objective-C runtime into its
--- 152,202 ----
that print a copy of their source.
@item
! Russell Davidson for fstream and stringstream fixes in libstdc++.
!
! @item
! Mo DeJong for GCJ and libgcj bug fixes.
!
! @item
! Gabriel Dos Reis for contributions to g++, contributions and
! maintenance of GCC diagnostics infrastructure, libstdc++-v3,
! including valarray<>, complex<>, maintaining the numerics library
! (including that pesky :-) and keeping up-to-date anything
! to do with numbers.
!
! @item
! Ulrich Drepper for his work on glibc, testing of GCC using glibc, ISO C99
! support, CFG dumping support, etc., plus support of the C++ runtime
! libraries including for all kinds of C interface issues, contributing and
! maintaining complex<>, sanity checking and disbursement, configuration
! architecture, libio maintenance, and early math work.
@item
Richard Earnshaw for his ongoing work with the ARM@.
@item
! David Edelsohn for his direction via the steering committee, ongoing work
! with the RS6000/PowerPC port, help cleaning up Haifa loop changes, and
! for doing the entire AIX port of libstdc++ with his bare hands.
!
! @item
! Kevin Ediger for the floating point formatting of num_put::do_put in
! libstdc++.
!
! @item
! Phil Edwards for libstdc++ work including configuration hackery,
! documentation maintainer, chief breaker of the web pages, the occasional
! iostream bugfix, and work on shared library symbol versioning.
@item
Paul Eggert for random hacking all over GCC@.
@item
! Mark Elbrecht for various DJGPP improvements, and for libstdc++
! configuration support for locales and fstream-related fixes.
!
! @item
! Vadim Egorov for libstdc++ fixes in strings, streambufs, and iostreams.
@item
Ben Elliston for his work to move the Objective-C runtime into its
*************** and SPARC work.
*** 143,148 ****
--- 213,221 ----
Fred Fish for BeOS support and Ada fixes.
@item
+ Ivan Fontes Garcia for the Portugese translation of the GCJ FAQ.
+
+ @item
Peter Gerwinski for various bugfixes and the Pascal front end.
@item
*************** Kaveh Ghazi for his direction via the st
*** 150,155 ****
--- 223,231 ----
amazing work to make @samp{-W -Wall} useful.
@item
+ John Gilmore for a donation to the FSF earmarked improving GNU Java.
+
+ @item
Judy Goldberg for c++ contributions.
@item
*************** via the steering committee.
*** 162,167 ****
--- 238,246 ----
Anthony Green for his @option{-Os} contributions and Java front end work.
@item
+ Stu Grossman for gdb hacking, allowing GCJ developers to debug our code.
+
+ @item
Michael K. Gschwind contributed the port to the PDP-11.
@item
*************** Bruno Haible for improvements in the run
*** 175,181 ****
warnings and assorted bugfixes.
@item
! Andrew Haley for his Java work.
@item
Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300.
--- 254,260 ----
warnings and assorted bugfixes.
@item
! Andrew Haley for his amazing Java compiler and library efforts.
@item
Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300.
*************** Andreas Jaeger for various fixes to the
*** 222,228 ****
@item
Jakub Jelinek for his SPARC work and sibling call optimizations as well
! as lots of bug fixes and test cases.
@item
Janis Johnson for ia64 testing and fixes and for her quality improvement
--- 301,308 ----
@item
Jakub Jelinek for his SPARC work and sibling call optimizations as well
! as lots of bug fixes and test cases, and for improving the Java build
! system.
@item
Janis Johnson for ia64 testing and fixes and for her quality improvement
*************** sidetracks.
*** 232,248 ****
J. Kean Johnston for OpenServer support.
@item
Klaus Kaempf for his ongoing work to make alpha-vms a viable target.
@item
David Kashtan of SRI adapted GCC to VMS@.
@item
Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux
and his automatic regression tester.
@item
! Brendan Kehoe for his ongoing work with g++.
@item
Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
--- 312,340 ----
J. Kean Johnston for OpenServer support.
@item
+ Tim Josling for the sample language treelang based originally on Richard
+ Kenner's "``toy'' language".
+
+ @item
+ Nicolai Josuttis for additional libstdc++ documentation.
+
+ @item
Klaus Kaempf for his ongoing work to make alpha-vms a viable target.
@item
David Kashtan of SRI adapted GCC to VMS@.
@item
+ Ryszard Kabatek for many, many libstdc++ bugfixes and optimizations of
+ strings, especially member functions, and for auto_ptr fixes.
+
+ @item
Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux
and his automatic regression tester.
@item
! Brendan Kehoe for his ongoing work with g++ and for a lot of early work
! in just about every part of libstdc++.
@item
Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
*************** elimination and delay slot scheduling.
*** 260,267 ****
head maintainer of GCC for several years.
@item
! Mumit Khan for various contributions to the cygwin and mingw32 ports and
! maintaining binary releases for Windows hosts.
@item
Robin Kirkham for cpu32 support.
--- 352,360 ----
head maintainer of GCC for several years.
@item
! Mumit Khan for various contributions to the Cygwin and Mingw32 ports and
! maintaining binary releases for Windows hosts, and for massive libstdc++
! porting work to Cygwin/Mingw32.
@item
Robin Kirkham for cpu32 support.
*************** Ted Lemon wrote parts of the RTL reader
*** 299,311 ****
Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes.
@item
! Warren Levy major work on libgcj (Java Runtime Library) and random
! work on the Java front end.
@item
Alain Lichnewsky ported GCC to the MIPS CPU.
@item
Robert Lipe for OpenServer support, new testsuites, testing, etc.
@item
--- 392,408 ----
Kriang Lerdsuwanakij for improvements to demangler and various c++ fixes.
@item
! Warren Levy for tremendous work on libgcj (Java Runtime Library) and
! random work on the Java front end.
@item
Alain Lichnewsky ported GCC to the MIPS CPU.
@item
+ Oskar Liljeblad for hacking on AWT and his many Java bug reports and
+ patches.
+
+ @item
Robert Lipe for OpenServer support, new testsuites, testing, etc.
@item
*************** runtime libraries.
*** 317,323 ****
@item
Martin von L@"owis for internal consistency checking infrastructure,
! and various C++ improvements including namespace support.
@item
H.J. Lu for his previous contributions to the steering committee, many x86
--- 414,421 ----
@item
Martin von L@"owis for internal consistency checking infrastructure,
! various C++ improvements including namespace support, and tons of
! assistance with libstdc++/compiler merges.
@item
H.J. Lu for his previous contributions to the steering committee, many x86
*************** Andrew MacLeod for his ongoing work in b
*** 331,344 ****
various code generation improvements, work on the global optimizer, etc.
@item
! Vladimir Makarov for hacking some ugly i960 problems, PowerPC
! hacking improvements to compile-time performance and overall knowledge
! and direction in the area of instruction scheduling.
@item
Bob Manson for his behind the scenes work on dejagnu.
@item
Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
powerpc, haifa, ECOFF debug support, and other assorted hacking.
--- 429,458 ----
various code generation improvements, work on the global optimizer, etc.
@item
! Vladimir Makarov for hacking some ugly i960 problems, PowerPC hacking
! improvements to compile-time performance, overall knowledge and
! direction in the area of instruction scheduling, and design and
! implementation of the automaton based instruction scheduler.
@item
Bob Manson for his behind the scenes work on dejagnu.
@item
+ Philip Martin for lots of libstdc++ string and vector iterator fixes and
+ improvements, and string clean up and testsuites.
+
+ @item
+ All of the Mauve project
+ @uref{http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/mauve/THANKS?rev=1.2&cvsroot=mauve&only_with_tag=HEAD,,contributors},
+ for Java test code.
+
+ @item
+ Bryce McKinlay for numerous GCJ and libgcj fixes and improvements.
+
+ @item
+ Adam Megacz for his work on the Win32 port of GCJ.
+
+ @item
Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS,
powerpc, haifa, ECOFF debug support, and other assorted hacking.
*************** developers.
*** 355,360 ****
--- 469,478 ----
Gary Miller ported GCC to Charles River Data Systems machines.
@item
+ Alfred Minarik for libstdc++ string and ios bugfixes, and turning the
+ entire libstdc++ testsuite namespace-compatible.
+
+ @item
Mark Mitchell for his direction via the steering committee, mountains of
C++ work, load/store hoisting out of loops, alias analysis improvements,
ISO C @code{restrict} support, and serving as release manager for GCC 3.x.
*************** maintenance, and his ongoing work to mak
*** 369,375 ****
@item
Jason Molenda for major help in the care and feeding of all the services
on the gcc.gnu.org (formerly egcs.cygnus.com) machine---mail, web
! services, ftp services, etc etc.
@item
Catherine Moore for fixing various ugly problems we have sent her
--- 487,494 ----
@item
Jason Molenda for major help in the care and feeding of all the services
on the gcc.gnu.org (formerly egcs.cygnus.com) machine---mail, web
! services, ftp services, etc etc. Doing all this work on scrap paper and
! the backs of envelopes would have been... difficult.
@item
Catherine Moore for fixing various ugly problems we have sent her
*************** way, including the haifa bug which was k
*** 377,382 ****
--- 496,504 ----
Linux kernels.
@item
+ Mike Moreton for his various Java patches.
+
+ @item
David Mosberger-Tang for various Alpha improvements.
@item
*************** Joseph S. Myers for his work on the PDP-
*** 395,401 ****
C99 support, and continuous emphasis on (and contributions to) documentation.
@item
! Nathan Myers for his work on libstdc++-v3.
@item
NeXT, Inc.@: donated the front end that supports the Objective-C
--- 517,530 ----
C99 support, and continuous emphasis on (and contributions to) documentation.
@item
! Nathan Myers for his work on libstdc++-v3: architecture and authorship
! through the first three snapshots, including implementation of locale
! infrastructure, string, shadow C headers, and the initial project
! documentation (DESIGN, CHECKLIST, and so forth). Later, more work on
! MT-safe string and shadow headers.
!
! @item
! Felix Natter for documentation on porting libstdc++.
@item
NeXT, Inc.@: donated the front end that supports the Objective-C
*************** improvements.
*** 415,434 ****
@item
Alexandre Oliva for various build infrastructure improvements, scripts and
! amazing testing work.
@item
Melissa O'Neill for various NeXT fixes.
@item
Rainer Orth for random MIPS work, including improvements to our o32
! ABI support, improvements to dejagnu's MIPS support, etc.
@item
Paul Petersen wrote the machine description for the Alliant FX/8.
@item
! Alexandre Petit-Bianco for his Java work.
@item
Matthias Pfaller for major improvements to the NS32k port.
--- 544,565 ----
@item
Alexandre Oliva for various build infrastructure improvements, scripts and
! amazing testing work, including keeping libtool issues sane and happy.
@item
Melissa O'Neill for various NeXT fixes.
@item
Rainer Orth for random MIPS work, including improvements to our o32
! ABI support, improvements to dejagnu's MIPS support, Java configuration
! clean-ups and porting work, etc.
@item
Paul Petersen wrote the machine description for the Alliant FX/8.
@item
! Alexandre Petit-Bianco for implementing much of the Java compiler and
! continued Java maintainership.
@item
Matthias Pfaller for major improvements to the NS32k port.
*************** Ken Raeburn for various improvements to
*** 447,465 ****
cleanups in the compiler.
@item
! David Reese of Sun Microsystems contributed to the Solaris on PowerPC
! port.
@item
! Gabriel Dos Reis for contributions and maintenance of libstdc++-v3,
! including valarray implementation and limits support.
@item
Joern Rennecke for maintaining the sh port, loop, regmove & reload
hacking.
@item
! Loren J. Rittle for improvements to libstdc++-v3 and the FreeBSD port.
@item
Craig Rodrigues for processing tons of bug reports.
--- 578,597 ----
cleanups in the compiler.
@item
! Rolf W. Rasmussen for hacking on AWT.
@item
! David Reese of Sun Microsystems contributed to the Solaris on PowerPC
! port.
@item
Joern Rennecke for maintaining the sh port, loop, regmove & reload
hacking.
@item
! Loren J. Rittle for improvements to libstdc++-v3 including the FreeBSD
! port, threading fixes, thread-related configury changes, critical
! threading documentation, and solutions to really tricky I/O problems.
@item
Craig Rodrigues for processing tons of bug reports.
*************** Ken Rose for fixes to our delay slot fil
*** 474,485 ****
--- 606,624 ----
Paul Rubin wrote most of the preprocessor.
@item
+ Chip Salzenberg for libstdc++ patches and improvements to locales, traits,
+ Makefiles, libio, libtool hackery, and ``long long'' support.
+
+ @item
Juha Sarlin for improvements to the H8 code generator.
@item
Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300.
@item
+ Bradley Schatz for his work on the GCJ FAQ.
+
+ @item
Peter Schauer wrote the code to allow debugging to work on the Alpha.
@item
*************** work in the reload pass as well a servin
*** 491,496 ****
--- 630,643 ----
GCC 2.95.3.
@item
+ Peter Schmid for constant testing of libstdc++ -- especially application
+ testing, going above and beyond what was requested for the release
+ criteria -- and libstdc++ header file tweaks.
+
+ @item
+ Jason Schroeder for jcf-dump patches.
+
+ @item
Andreas Schwab for his work on the m68k port.
@item
*************** code which handles the parse tree and RT
*** 506,511 ****
--- 653,662 ----
folding and help with the original VAX & m68k ports.
@item
+ Kenny Simpson for prompting libstdc++ fixes due to defect reports from
+ the LWG (thereby keeping us in line with updates from the ISO).
+
+ @item
Franz Sirl for his ongoing work with making the PPC port stable
for linux.
*************** Christopher Smith did the port for Conve
*** 519,525 ****
Randy Smith finished the Sun FPA support.
@item
! Scott Snyder for various fixes.
@item
Richard Stallman, for writing the original gcc and launching the GNU project.
--- 670,680 ----
Randy Smith finished the Sun FPA support.
@item
! Scott Snyder for queue, iterator, istream, and string fixes and libstdc++
! testsuite entries.
!
! @item
! Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique.
@item
Richard Stallman, for writing the original gcc and launching the GNU project.
*************** Jonathan Stone wrote the machine descrip
*** 538,547 ****
--- 693,708 ----
Graham Stott for various infrastructure improvements.
@item
+ John Stracke for his Java HTTP protocol fixes.
+
+ @item
Mike Stump for his Elxsi port, g++ contributions over the years and more
recently his vxworks contributions
@item
+ Jeff Sturm for Java porting help, bug fixes, and encouragement.
+
+ @item
Shigeya Suzuki for this fixes for the bsdi platforms.
@item
*************** Gary Thomas for his ongoing work to make
*** 558,565 ****
Philipp Thomas for random bugfixes throughout the compiler
@item
Kresten Krab Thorup wrote the run time support for the Objective-C
! language.
@item
Michael Tiemann for random bugfixes, the first instruction scheduler,
--- 719,729 ----
Philipp Thomas for random bugfixes throughout the compiler
@item
+ Jason Thorpe for thread support in libstdc++ on NetBSD.
+
+ @item
Kresten Krab Thorup wrote the run time support for the Objective-C
! language and the fantastic Java bytecode interpreter.
@item
Michael Tiemann for random bugfixes, the first instruction scheduler,
*************** initial C++ support, function integratio
*** 567,572 ****
--- 731,739 ----
machine description work, delay slot scheduling.
@item
+ Andreas Tobler for his work porting libgcj to Darwin.
+
+ @item
Teemu Torma for thread safe exception handling support.
@item
*************** Leonard Tower wrote parts of the parser,
*** 574,589 ****
definitions, and of the VAX machine description.
@item
! Tom Tromey for internationalization support and his Java work.
@item
Lassi Tuura for improvements to config.guess to determine HP processor
types.
@item
Todd Vierling for contributions for NetBSD ports.
@item
Dean Wakerley for converting the install documentation from HTML to texinfo
in time for GCC 3.0.
--- 741,768 ----
definitions, and of the VAX machine description.
@item
! Tom Tromey for internationalization support and for his many Java
! contributions and libgcj maintainership.
@item
Lassi Tuura for improvements to config.guess to determine HP processor
types.
@item
+ Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes.
+
+ @item
+ Brent Verner for work with the libstdc++ cshadow files and their
+ associated configure steps.
+
+ @item
Todd Vierling for contributions for NetBSD ports.
@item
+ Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML
+ guidance.
+
+ @item
Dean Wakerley for converting the install documentation from HTML to texinfo
in time for GCC 3.0.
*************** in time for GCC 3.0.
*** 591,596 ****
--- 770,780 ----
Krister Walfridsson for random bugfixes.
@item
+ Stephen M. Webb for time and effort on making libstdc++ shadow files
+ work with the tricky Solaris 8+ headers, and for pushing the build-time
+ header tree.
+
+ @item
John Wehle for various improvements for the x86 code generator,
related infrastructure improvements to help x86 code generation,
value range propagation and other work, WE32k port.
*************** value range propagation and other work,
*** 599,604 ****
--- 783,798 ----
Zack Weinberg for major work on cpplib and various other bugfixes.
@item
+ Matt Welsh for help with Linux Threads support in GCJ.
+
+ @item
+ Urban Widmark for help fixing java.io.
+
+ @item
+ Mark Wielaard for new Java library code and his work integrating with
+ Classpath.
+
+ @item
Dale Wiles helped port GCC to the Tahoe.
@item
*************** description for the Tron architecture (s
*** 622,627 ****
--- 816,824 ----
@item
Kevin Zachmann helped ported GCC to the Tahoe.
+ @item
+ Gilles Zunino for help porting Java to Irix.
+
@end itemize
*************** testing GCC:
*** 630,641 ****
--- 827,862 ----
@itemize @bullet
@item
+ Michael Abd-El-Malek
+
+ @item
+ Thomas Arend
+
+ @item
+ Bonzo Armstrong
+
+ @item
+ Steven Ashe
+
+ @item
+ Chris Baldwin
+
+ @item
David Billinghurst
@item
+ Jim Blandy
+
+ @item
+ Stephane Bortzmeyer
+
+ @item
Horst von Brand
@item
+ Frank Braun
+
+ @item
Rodney Brown
@item
*************** Joe Buck
*** 645,683 ****
--- 866,976 ----
Craig Burley
@item
+ Sidney Cadot
+
+ @item
+ Bradford Castalia
+
+ @item
+ Ralph Doncaster
+
+ @item
Ulrich Drepper
@item
David Edelsohn
@item
+ Richard Emberson
+
+ @item
+ Levente Farkas
+
+ @item
+ Graham Fawcett
+
+ @item
+ Robert A. French
+
+ @item
+ J@"orgen Freyh
+
+ @item
+ Mark K. Gardner
+
+ @item
+ Charles-Antoine Gauthier
+
+ @item
Yung Shing Gene
@item
Kaveh Ghazi
@item
+ David Gilbert
+
+ @item
+ Simon Gornall
+
+ @item
+ Fred Gray
+
+ @item
+ John Griffin
+
+ @item
+ Patrik Hagglund
+
+ @item
+ Phil Hargett
+
+ @item
+ Amancio Hasty
+
+ @item
+ Bryan W. Headley
+
+ @item
Kate Hedstrom
@item
Richard Henderson
@item
+ Kevin B. Hendricks
+
+ @item
Manfred Hollstein
@item
Kamil Iskra
@item
+ Joep Jansen
+
+ @item
Christian Joensson
@item
+ David Kidd
+
+ @item
+ Tobias Kuipers
+
+ @item
+ Anand Krishnaswamy
+
+ @item
Jeff Law
@item
Robert Lipe
@item
+ llewelly
+
+ @item
Damon Love
@item
*************** Matthias Klose
*** 699,725 ****
--- 992,1054 ----
Martin Knoblauch
@item
+ Jesse Macnish
+
+ @item
David Miller
@item
Toon Moene
@item
+ Stefan Morrell
+
+ @item
+ Anon A. Mous
+
+ @item
Matthias Mueller
@item
+ Pekka Nikander
+
+ @item
Alexandre Oliva
@item
+ Jon Olson
+
+ @item
+ Magnus Persson
+
+ @item
+ Chris Pollard
+
+ @item
Richard Polton
@item
David Rees
@item
+ Paul Reilly
+
+ @item
+ Tom Reilly
+
+ @item
Loren J. Rittle
@item
+ Torsten Rueger
+
+ @item
+ Danny Sadinoff
+
+ @item
+ Marc Schifer
+
+ @item
Peter Schmid
@item
*************** Vin Shelton
*** 732,743 ****
--- 1061,1087 ----
Franz Sirl
@item
+ Tim Souder
+
+ @item
Mike Stump
@item
+ Adam Sulmicki
+
+ @item
+ George Talbot
+
+ @item
+ Gregory Warnes
+
+ @item
Carlo Wood
@item
+ David E. Young
+
+ @item
And many others
@end itemize
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.1 gcc-3.2.1/gcc/doc/cpp.1
*** gcc-3.2/gcc/doc/cpp.1 Wed Aug 14 09:36:36 2002
--- gcc-3.2.1/gcc/doc/cpp.1 Tue Nov 19 18:17:14 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:35 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Tue Nov 19 18:17:13 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "CPP 1"
! .TH CPP 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
cpp \- The C Preprocessor
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "CPP 1"
! .TH CPP 1 "gcc-3.2.1" "2002-11-19" "GNU"
.UC
.SH "NAME"
cpp \- The C Preprocessor
*************** with an optional \fB\-MT\fR switch too.
*** 782,788 ****
This variable is the same as the environment variable
\&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR, except that
system header files are not ignored, so it implies \fB\-M\fR rather
! than \fB\-MM\fR.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7),
--- 782,789 ----
This variable is the same as the environment variable
\&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR, except that
system header files are not ignored, so it implies \fB\-M\fR rather
! than \fB\-MM\fR. However, the dependence on the main input file is
! omitted.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7),
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info gcc-3.2.1/gcc/doc/cpp.info
*** gcc-3.2/gcc/doc/cpp.info Wed Aug 14 09:36:32 2002
--- gcc-3.2.1/gcc/doc/cpp.info Tue Nov 19 18:17:11 2002
*************** END-INFO-DIR-ENTRY
*** 9,17 ****
Indirect:
cpp.info-1: 191
! cpp.info-2: 49612
! cpp.info-3: 99320
! cpp.info-4: 161716
Tag Table:
(Indirect)
--- 9,18 ----
Indirect:
cpp.info-1: 191
! cpp.info-2: 49827
! cpp.info-3: 96679
! cpp.info-4: 142533
! cpp.info-5: 190064
Tag Table:
(Indirect)
*************** Node: Header Files21776
*** 25,85 ****
Node: Include Syntax23654
Node: Include Operation25156
Node: Search Path27052
! Node: Once-Only Headers29902
! Node: Computed Includes31556
! Node: Wrapper Headers34695
! Node: System Headers37114
! Node: Macros39171
! Node: Object-like Macros40271
! Node: Function-like Macros43857
! Node: Macro Arguments45467
! Node: Stringification49612
! Node: Concatenation52813
! Node: Variadic Macros55927
! Node: Predefined Macros60264
! Node: Standard Predefined Macros60847
! Node: Common Predefined Macros66269
! Node: System-specific Predefined Macros72849
! Node: C++ Named Operators74861
! Node: Undefining and Redefining Macros75816
! Node: Macro Pitfalls77894
! Node: Misnesting78419
! Node: Operator Precedence Problems79520
! Node: Swallowing the Semicolon81375
! Node: Duplication of Side Effects83387
! Node: Self-Referential Macros85559
! Node: Argument Prescan87969
! Node: Newlines in Arguments91712
! Node: Conditionals92657
! Node: Conditional Uses94486
! Node: Conditional Syntax95839
! Node: Ifdef96154
! Node: If99320
! Node: Defined101733
! Node: Else103006
! Node: Elif103567
! Node: Deleted Code104847
! Node: Diagnostics106089
! Node: Line Control107706
! Node: Pragmas111513
! Node: Other Directives115781
! Node: Preprocessor Output116975
! Node: Traditional Mode120175
! Node: Implementation Details125754
! Node: Implementation-defined behavior126376
! Node: Implementation limits128649
! Node: Obsolete Features131356
! Node: Assertions131843
! Node: Obsolete once-only headers134374
! Node: Miscellaneous obsolete features136142
! Node: Differences from previous versions137475
! Node: Invocation141987
! Ref: -MF149306
! Node: Environment Variables161716
! Ref: DEPENDENCIES_OUTPUT163366
! Node: GNU Free Documentation License164341
! Node: Option Index184239
! Node: Index of Directives187706
! Node: Concept Index189453
End Tag Table
--- 26,86 ----
Node: Include Syntax23654
Node: Include Operation25156
Node: Search Path27052
! Node: Once-Only Headers30129
! Node: Computed Includes31783
! Node: Wrapper Headers34922
! Node: System Headers37341
! Node: Macros39386
! Node: Object-like Macros40486
! Node: Function-like Macros44072
! Node: Macro Arguments45682
! Node: Stringification49827
! Node: Concatenation53028
! Node: Variadic Macros56142
! Node: Predefined Macros60932
! Node: Standard Predefined Macros61515
! Node: Common Predefined Macros66794
! Node: System-specific Predefined Macros73374
! Node: C++ Named Operators75386
! Node: Undefining and Redefining Macros76341
! Node: Macro Pitfalls78419
! Node: Misnesting78944
! Node: Operator Precedence Problems80045
! Node: Swallowing the Semicolon81900
! Node: Duplication of Side Effects83912
! Node: Self-Referential Macros86084
! Node: Argument Prescan88494
! Node: Newlines in Arguments92237
! Node: Conditionals93182
! Node: Conditional Uses95011
! Node: Conditional Syntax96364
! Node: Ifdef96679
! Node: If99845
! Node: Defined102258
! Node: Else103531
! Node: Elif104092
! Node: Deleted Code105372
! Node: Diagnostics106614
! Node: Line Control108231
! Node: Pragmas112038
! Node: Other Directives116306
! Node: Preprocessor Output117500
! Node: Traditional Mode120700
! Node: Implementation Details126279
! Node: Implementation-defined behavior126901
! Node: Implementation limits129174
! Node: Obsolete Features131881
! Node: Assertions132368
! Node: Obsolete once-only headers134899
! Node: Miscellaneous obsolete features136667
! Node: Differences from previous versions138021
! Node: Invocation142533
! Ref: -MF149852
! Node: Environment Variables162262
! Ref: DEPENDENCIES_OUTPUT163912
! Node: GNU Free Documentation License164952
! Node: Option Index184850
! Node: Index of Directives188317
! Node: Concept Index190064
End Tag Table
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-1 gcc-3.2.1/gcc/doc/cpp.info-1
*** gcc-3.2/gcc/doc/cpp.info-1 Wed Aug 14 09:36:32 2002
--- gcc-3.2.1/gcc/doc/cpp.info-1 Tue Nov 19 18:17:11 2002
*************** in use.
*** 712,722 ****
You can add to this list with the `-IDIR' command line option. All
the directories named by `-I' are searched, in left-to-right order,
! _before_ the default directories. You can also prevent GCC from
! searching any of the default directories with the `-nostdinc' option.
! This is useful when you are compiling an operating system kernel or
! some other program that does not use the standard C library facilities,
! or the standard C library itself.
GCC looks for headers requested with `#include "FILE"' first in the
directory containing the current file, then in the same places it would
--- 712,732 ----
You can add to this list with the `-IDIR' command line option. All
the directories named by `-I' are searched, in left-to-right order,
! _before_ the default directories. The only exception is when `dir' is
! already searched by default. In this case, the option is ignored and
! the search order for system directories remains unchanged.
!
! Duplicate directories are removed from the quote and bracket search
! chains before the two chains are merged to make the final search chain.
! Thus, it is possible for a directory to occur twice in the final search
! chain if it was specified in both the quote and bracket chains.
!
! You can prevent GCC from searching any of the default directories
! with the `-nostdinc' option. This is useful when you are compiling an
! operating system kernel or some other program that does not use the
! standard C library facilities, or the standard C library itself. `-I'
! options are not ignored as described above when `-nostdinc' is in
! effect.
GCC looks for headers requested with `#include "FILE"' first in the
directory containing the current file, then in the same places it would
*************** if `/usr/include/sys/stat.h' contains `#
*** 725,736 ****
for `types.h' first in `/usr/include/sys', then in its usual search
path.
- If you name a search directory with `-IDIR' that is also a system
- include directory, the `-I' wins; the directory will be searched
- according to the `-I' ordering, and it will not be treated as a system
- include directory. GCC will warn you when a system include directory is
- hidden in this way.
-
`#line' (*note Line Control::) does not change GCC's idea of the
directory containing the current file.
--- 735,740 ----
*************** in that directory will be considered sys
*** 948,955 ****
All directories named by `-isystem' are searched _after_ all
directories named by `-I', no matter what their order was on the
command line. If the same directory is named by both `-I' and
! `-isystem', `-I' wins; it is as if the `-isystem' option had never been
! specified at all. GCC warns you when this happens.
There is also a directive, `#pragma GCC system_header', which tells
GCC to consider the rest of the current include file a system header,
--- 952,959 ----
All directories named by `-isystem' are searched _after_ all
directories named by `-I', no matter what their order was on the
command line. If the same directory is named by both `-I' and
! `-isystem', the `-I' option is ignored. GCC provides an informative
! message when this occurs if `-v' is used.
There is also a directive, `#pragma GCC system_header', which tells
GCC to consider the rest of the current include file a system header,
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-2 gcc-3.2.1/gcc/doc/cpp.info-2
*** gcc-3.2/gcc/doc/cpp.info-2 Wed Aug 14 09:36:32 2002
--- gcc-3.2.1/gcc/doc/cpp.info-2 Tue Nov 19 18:17:11 2002
*************** preceding `##' is anything other than a
*** 230,235 ****
--- 230,243 ----
eprintf ("success!\n")
==> fprintf(stderr, "success!\n");
+ The above explanation is ambiguous about the case where the only macro
+ parameter is a variable arguments parameter, as it is meaningless to
+ try to distinguish whether no argument at all is an empty argument or a
+ missing argument. In this case the C99 standard is clear that the
+ comma must remain, however the existing GCC extension used to swallow
+ the comma. So CPP retains the comma when conforming to a specific C
+ standard, and drops it otherwise.
+
C99 mandates that the only place the identifier `__VA_ARGS__' can
appear is in the replacement list of a variadic macro. It may not be
used as a macro name, macro argument name, or within a different type
*************** with `__FILE__' and `__LINE__', though.
*** 355,363 ****
processing user files `__STDC__' is always 1. This has been
reported to cause problems; for instance, some versions of Solaris
provide X Windows headers that expect `__STDC__' to be either
! undefined or 1. You may be able to work around this sort of
! problem by using an `-I' option to cancel treatment of those
! headers as system headers. *Note Invocation::.
`__STDC_VERSION__'
This macro expands to the C Standard's version number, a long
--- 363,369 ----
processing user files `__STDC__' is always 1. This has been
reported to cause problems; for instance, some versions of Solaris
provide X Windows headers that expect `__STDC__' to be either
! undefined or 1. *Note Invocation::.
`__STDC_VERSION__'
This macro expands to the C Standard's version number, a long
*************** directive": `#if', `#ifdef' or `#ifndef'
*** 1139,1213 ****
* Else::
* Elif::
-
- File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax
-
- Ifdef
- -----
-
- The simplest sort of conditional is
-
- #ifdef MACRO
-
- CONTROLLED TEXT
-
- #endif /* MACRO */
-
- This block is called a "conditional group". CONTROLLED TEXT will be
- included in the output of the preprocessor if and only if MACRO is
- defined. We say that the conditional "succeeds" if MACRO is defined,
- "fails" if it is not.
-
- The CONTROLLED TEXT inside of a conditional can include
- preprocessing directives. They are executed only if the conditional
- succeeds. You can nest conditional groups inside other conditional
- groups, but they must be completely nested. In other words, `#endif'
- always matches the nearest `#ifdef' (or `#ifndef', or `#if'). Also,
- you cannot start a conditional group in one file and end it in another.
-
- Even if a conditional fails, the CONTROLLED TEXT inside it is still
- run through initial transformations and tokenization. Therefore, it
- must all be lexically valid C. Normally the only way this matters is
- that all comments and string literals inside a failing conditional group
- must still be properly ended.
-
- The comment following the `#endif' is not required, but it is a good
- practice if there is a lot of CONTROLLED TEXT, because it helps people
- match the `#endif' to the corresponding `#ifdef'. Older programs
- sometimes put MACRO directly after the `#endif' without enclosing it in
- a comment. This is invalid code according to the C standard. GNU CPP
- accepts it with a warning. It never affects which `#ifndef' the
- `#endif' matches.
-
- Sometimes you wish to use some code if a macro is _not_ defined.
- You can do this by writing `#ifndef' instead of `#ifdef'. One common
- use of `#ifndef' is to include code only the first time a header file
- is included. *Note Once-Only Headers::.
-
- Macro definitions can vary between compilations for several reasons.
- Here are some samples.
-
- * Some macros are predefined on each kind of machine (*note
- System-specific Predefined Macros::). This allows you to provide
- code specially tuned for a particular machine.
-
- * System header files define more macros, associated with the
- features they implement. You can test these macros with
- conditionals to avoid using a system feature on a machine where it
- is not implemented.
-
- * Macros can be defined or undefined with the `-D' and `-U' command
- line options when you compile the program. You can arrange to
- compile the same source file into two different programs by
- choosing a macro name to specify which program you want, writing
- conditionals to test whether or how this macro is defined, and
- then controlling the state of the macro with command line options,
- perhaps set in the Makefile. *Note Invocation::.
-
- * Your program might have a special header file (often called
- `config.h') that is adjusted when the program is compiled. It can
- define or not define macros depending on the features of the
- system and the desired capabilities of the program. The
- adjustment can be automated by a tool such as `autoconf', or done
- by hand.
-
--- 1145,1147 ----
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-3 gcc-3.2.1/gcc/doc/cpp.info-3
*** gcc-3.2/gcc/doc/cpp.info-3 Wed Aug 14 09:36:32 2002
--- gcc-3.2.1/gcc/doc/cpp.info-3 Tue Nov 19 18:17:11 2002
*************** START-INFO-DIR-ENTRY
*** 7,12 ****
--- 7,84 ----
END-INFO-DIR-ENTRY
+ File: cpp.info, Node: Ifdef, Next: If, Up: Conditional Syntax
+
+ Ifdef
+ -----
+
+ The simplest sort of conditional is
+
+ #ifdef MACRO
+
+ CONTROLLED TEXT
+
+ #endif /* MACRO */
+
+ This block is called a "conditional group". CONTROLLED TEXT will be
+ included in the output of the preprocessor if and only if MACRO is
+ defined. We say that the conditional "succeeds" if MACRO is defined,
+ "fails" if it is not.
+
+ The CONTROLLED TEXT inside of a conditional can include
+ preprocessing directives. They are executed only if the conditional
+ succeeds. You can nest conditional groups inside other conditional
+ groups, but they must be completely nested. In other words, `#endif'
+ always matches the nearest `#ifdef' (or `#ifndef', or `#if'). Also,
+ you cannot start a conditional group in one file and end it in another.
+
+ Even if a conditional fails, the CONTROLLED TEXT inside it is still
+ run through initial transformations and tokenization. Therefore, it
+ must all be lexically valid C. Normally the only way this matters is
+ that all comments and string literals inside a failing conditional group
+ must still be properly ended.
+
+ The comment following the `#endif' is not required, but it is a good
+ practice if there is a lot of CONTROLLED TEXT, because it helps people
+ match the `#endif' to the corresponding `#ifdef'. Older programs
+ sometimes put MACRO directly after the `#endif' without enclosing it in
+ a comment. This is invalid code according to the C standard. GNU CPP
+ accepts it with a warning. It never affects which `#ifndef' the
+ `#endif' matches.
+
+ Sometimes you wish to use some code if a macro is _not_ defined.
+ You can do this by writing `#ifndef' instead of `#ifdef'. One common
+ use of `#ifndef' is to include code only the first time a header file
+ is included. *Note Once-Only Headers::.
+
+ Macro definitions can vary between compilations for several reasons.
+ Here are some samples.
+
+ * Some macros are predefined on each kind of machine (*note
+ System-specific Predefined Macros::). This allows you to provide
+ code specially tuned for a particular machine.
+
+ * System header files define more macros, associated with the
+ features they implement. You can test these macros with
+ conditionals to avoid using a system feature on a machine where it
+ is not implemented.
+
+ * Macros can be defined or undefined with the `-D' and `-U' command
+ line options when you compile the program. You can arrange to
+ compile the same source file into two different programs by
+ choosing a macro name to specify which program you want, writing
+ conditionals to test whether or how this macro is defined, and
+ then controlling the state of the macro with command line options,
+ perhaps set in the Makefile. *Note Invocation::.
+
+ * Your program might have a special header file (often called
+ `config.h') that is adjusted when the program is compiled. It can
+ define or not define macros depending on the features of the
+ system and the desired capabilities of the program. The
+ adjustment can be automated by a tool such as `autoconf', or done
+ by hand.
+
+
File: cpp.info, Node: If, Next: Defined, Prev: Ifdef, Up: Conditional Syntax
If
*************** Miscellaneous obsolete features
*** 906,914 ****
* Attempting to paste two tokens which together do not form a valid
preprocessing token.
! The preprocessor currently warns about this and outputs the two
! tokens adjacently, which is probably the behavior the programmer
! intends. It may not work in future, though.
Most of the time, when you get this warning, you will find that
`##' is being used superstitiously, to guard against whitespace
--- 978,986 ----
* Attempting to paste two tokens which together do not form a valid
preprocessing token.
! The preprocessor currently warns about this, and the resulting
! preprocessed output is undefined. The tokens remain distinct if
! the preprocessor is being used directly by the compiler front end.
Most of the time, when you get this warning, you will find that
`##' is being used superstitiously, to guard against whitespace
*************** they generally represent bugs in the sna
*** 1028,1520 ****
invasive.)
-
- File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top
-
- Invocation
- **********
-
- Most often when you use the C preprocessor you will not have to
- invoke it explicitly: the C compiler will do so automatically.
- However, the preprocessor is sometimes useful on its own. All the
- options listed here are also acceptable to the C compiler and have the
- same meaning, except that the C compiler has different rules for
- specifying the output file.
-
- *Note:* Whether you use the preprocessor by way of `gcc' or `cpp',
- the "compiler driver" is run first. This program's purpose is to
- translate your command into invocations of the programs that do the
- actual work. Their command line interfaces are similar but not
- identical to the documented interface, and may change without notice.
-
- The C preprocessor expects two file names as arguments, INFILE and
- OUTFILE. The preprocessor reads INFILE together with any other files
- it specifies with `#include'. All the output generated by the combined
- input files is written in OUTFILE.
-
- Either INFILE or OUTFILE may be `-', which as INFILE means to read
- from standard input and as OUTFILE means to write to standard output.
- Also, if either file is omitted, it means the same as if `-' had been
- specified for that file.
-
- Unless otherwise noted, or the option ends in `=', all options which
- take an argument may have that argument appear either immediately after
- the option, or with a space between option and argument: `-Ifoo' and
- `-I foo' have the same effect.
-
- Many options have multi-letter names; therefore multiple
- single-letter options may _not_ be grouped: `-dM' is very different from
- `-d -M'.
-
- `-D NAME'
- Predefine NAME as a macro, with definition `1'.
-
- `-D NAME=DEFINITION'
- Predefine NAME as a macro, with definition DEFINITION. There are
- no restrictions on the contents of DEFINITION, but if you are
- invoking the preprocessor from a shell or shell-like program you
- may need to use the shell's quoting syntax to protect characters
- such as spaces that have a meaning in the shell syntax.
-
- If you wish to define a function-like macro on the command line,
- write its argument list with surrounding parentheses before the
- equals sign (if any). Parentheses are meaningful to most shells,
- so you will need to quote the option. With `sh' and `csh',
- `-D'NAME(ARGS...)=DEFINITION'' works.
-
- `-D' and `-U' options are processed in the order they are given on
- the command line. All `-imacros FILE' and `-include FILE' options
- are processed after all `-D' and `-U' options.
-
- `-U NAME'
- Cancel any previous definition of NAME, either built in or
- provided with a `-D' option.
-
- `-undef'
- Do not predefine any system-specific macros. The common predefined
- macros remain defined.
-
- `-I DIR'
- Add the directory DIR to the list of directories to be searched
- for header files. *Note Search Path::. Directories named by `-I'
- are searched before the standard system include directories.
-
- It is dangerous to specify a standard system include directory in
- an `-I' option. This defeats the special treatment of system
- headers (*note System Headers::) . It can also defeat the repairs
- to buggy system headers which GCC makes when it is installed.
-
- `-o FILE'
- Write output to FILE. This is the same as specifying FILE as the
- second non-option argument to `cpp'. `gcc' has a different
- interpretation of a second non-option argument, so you must use
- `-o' to specify the output file.
-
- `-Wall'
- Turns on all optional warnings which are desirable for normal
- code. At present this is `-Wcomment' and `-Wtrigraphs'. Note that
- many of the preprocessor's warnings are on by default and have no
- options to control them.
-
- `-Wcomment'
- `-Wcomments'
- Warn whenever a comment-start sequence `/*' appears in a `/*'
- comment, or whenever a backslash-newline appears in a `//' comment.
- (Both forms have the same effect.)
-
- `-Wtrigraphs'
- Warn if any trigraphs are encountered. This option used to take
- effect only if `-trigraphs' was also specified, but now works
- independently. Warnings are not given for trigraphs within
- comments, as they do not affect the meaning of the program.
-
- `-Wtraditional'
- Warn about certain constructs that behave differently in
- traditional and ISO C. Also warn about ISO C constructs that have
- no traditional C equivalent, and problematic constructs which
- should be avoided. *Note Traditional Mode::.
-
- `-Wimport'
- Warn the first time `#import' is used.
-
- `-Wundef'
- Warn whenever an identifier which is not a macro is encountered in
- an `#if' directive, outside of `defined'. Such identifiers are
- replaced with zero.
-
- `-Werror'
- Make all warnings into hard errors. Source code which triggers
- warnings will be rejected.
-
- `-Wsystem-headers'
- Issue warnings for code in system headers. These are normally
- unhelpful in finding bugs in your own code, therefore suppressed.
- If you are responsible for the system library, you may want to see
- them.
-
- `-w'
- Suppress all warnings, including those which GNU CPP issues by
- default.
-
- `-pedantic'
- Issue all the mandatory diagnostics listed in the C standard.
- Some of them are left out by default, since they trigger
- frequently on harmless code.
-
- `-pedantic-errors'
- Issue all the mandatory diagnostics, and make all mandatory
- diagnostics into errors. This includes mandatory diagnostics that
- GCC issues without `-pedantic' but treats as warnings.
-
- `-M'
- Instead of outputting the result of preprocessing, output a rule
- suitable for `make' describing the dependencies of the main source
- file. The preprocessor outputs one `make' rule containing the
- object file name for that source file, a colon, and the names of
- all the included files, including those coming from `-include' or
- `-imacros' command line options.
-
- Unless specified explicitly (with `-MT' or `-MQ'), the object file
- name consists of the basename of the source file with any suffix
- replaced with object file suffix. If there are many included
- files then the rule is split into several lines using `\'-newline.
- The rule has no commands.
-
- This option does not suppress the preprocessor's debug output,
- such as `-dM'. To avoid mixing such debug output with the
- dependency rules you should explicitly specify the dependency
- output file with `-MF', or use an environment variable like
- `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::). Debug output
- will still be sent to the regular output stream as normal.
-
- Passing `-M' to the driver implies `-E'.
-
- `-MM'
- Like `-M' but do not mention header files that are found in system
- header directories, nor header files that are included, directly
- or indirectly, from such a header.
-
- This implies that the choice of angle brackets or double quotes in
- an `#include' directive does not in itself determine whether that
- header will appear in `-MM' dependency output. This is a slight
- change in semantics from GCC versions 3.0 and earlier.
-
- `-MF FILE'
- When used with `-M' or `-MM', specifies a file to write the
- dependencies to. If no `-MF' switch is given the preprocessor
- sends the rules to the same place it would have sent preprocessed
- output.
-
- When used with the driver options `-MD' or `-MMD', `-MF' overrides
- the default dependency output file.
-
- `-MG'
- When used with `-M' or `-MM', `-MG' says to treat missing header
- files as generated files and assume they live in the same
- directory as the source file. It suppresses preprocessed output,
- as a missing header file is ordinarily an error.
-
- This feature is used in automatic updating of makefiles.
-
- `-MP'
- This option instructs CPP to add a phony target for each dependency
- other than the main file, causing each to depend on nothing. These
- dummy rules work around errors `make' gives if you remove header
- files without updating the `Makefile' to match.
-
- This is typical output:
-
- test.o: test.c test.h
-
- test.h:
-
- `-MT TARGET'
- Change the target of the rule emitted by dependency generation. By
- default CPP takes the name of the main input file, including any
- path, deletes any file suffix such as `.c', and appends the
- platform's usual object suffix. The result is the target.
-
- An `-MT' option will set the target to be exactly the string you
- specify. If you want multiple targets, you can specify them as a
- single argument to `-MT', or use multiple `-MT' options.
-
- For example, `-MT '$(objpfx)foo.o'' might give
-
- $(objpfx)foo.o: foo.c
-
- `-MQ TARGET'
- Same as `-MT', but it quotes any characters which are special to
- Make. `-MQ '$(objpfx)foo.o'' gives
-
- $$(objpfx)foo.o: foo.c
-
- The default target is automatically quoted, as if it were given
- with `-MQ'.
-
- `-MD'
- `-MD' is equivalent to `-M -MF FILE', except that `-E' is not
- implied. The driver determines FILE based on whether an `-o'
- option is given. If it is, the driver uses its argument but with
- a suffix of `.d', otherwise it take the basename of the input file
- and applies a `.d' suffix.
-
- If `-MD' is used in conjunction with `-E', any `-o' switch is
- understood to specify the dependency output file (but *note
- -MF::), but if used without `-E', each `-o' is understood to
- specify a target object file.
-
- Since `-E' is not implied, `-MD' can be used to generate a
- dependency output file as a side-effect of the compilation process.
-
- `-MMD'
- Like `-MD' except mention only user header files, not system
- -header files.
-
- `-x c'
- `-x c++'
- `-x objective-c'
- `-x assembler-with-cpp'
- Specify the source language: C, C++, Objective-C, or assembly.
- This has nothing to do with standards conformance or extensions;
- it merely selects which base syntax to expect. If you give none
- of these options, cpp will deduce the language from the extension
- of the source file: `.c', `.cc', `.m', or `.S'. Some other common
- extensions for C++ and assembly are also recognized. If cpp does
- not recognize the extension, it will treat the file as C; this is
- the most generic mode.
-
- *Note:* Previous versions of cpp accepted a `-lang' option which
- selected both the language and the standards conformance level.
- This option has been removed, because it conflicts with the `-l'
- option.
-
- `-std=STANDARD'
- `-ansi'
- Specify the standard to which the code should conform. Currently
- cpp only knows about the standards for C; other language standards
- will be added in the future.
-
- STANDARD may be one of:
- `iso9899:1990'
- `c89'
- The ISO C standard from 1990. `c89' is the customary
- shorthand for this version of the standard.
-
- The `-ansi' option is equivalent to `-std=c89'.
-
- `iso9899:199409'
- The 1990 C standard, as amended in 1994.
-
- `iso9899:1999'
- `c99'
- `iso9899:199x'
- `c9x'
- The revised ISO C standard, published in December 1999.
- Before publication, this was known as C9X.
-
- `gnu89'
- The 1990 C standard plus GNU extensions. This is the default.
-
- `gnu99'
- `gnu9x'
- The 1999 C standard plus GNU extensions.
-
- `-I-'
- Split the include path. Any directories specified with `-I'
- options before `-I-' are searched only for headers requested with
- `#include "FILE"'; they are not searched for `#include '.
- If additional directories are specified with `-I' options after
- the `-I-', those directories are searched for all `#include'
- directives.
-
- In addition, `-I-' inhibits the use of the directory of the current
- file directory as the first search directory for `#include "FILE"'.
- *Note Search Path::.
-
- `-nostdinc'
- Do not search the standard system directories for header files.
- Only the directories you have specified with `-I' options (and the
- directory of the current file, if appropriate) are searched.
-
- `-nostdinc++'
- Do not search for header files in the C++-specific standard
- directories, but do still search the other standard directories.
- (This option is used when building the C++ library.)
-
- `-include FILE'
- Process FILE as if `#include "file"' appeared as the first line of
- the primary source file. However, the first directory searched
- for FILE is the preprocessor's working directory _instead of_ the
- directory containing the main source file. If not found there, it
- is searched for in the remainder of the `#include "..."' search
- chain as normal.
-
- If multiple `-include' options are given, the files are included
- in the order they appear on the command line.
-
- `-imacros FILE'
- Exactly like `-include', except that any output produced by
- scanning FILE is thrown away. Macros it defines remain defined.
- This allows you to acquire all the macros from a header without
- also processing its declarations.
-
- All files specified by `-imacros' are processed before all files
- specified by `-include'.
-
- `-idirafter DIR'
- Search DIR for header files, but do it _after_ all directories
- specified with `-I' and the standard system directories have been
- exhausted. DIR is treated as a system include directory.
-
- `-iprefix PREFIX'
- Specify PREFIX as the prefix for subsequent `-iwithprefix'
- options. If the prefix represents a directory, you should include
- the final `/'.
-
- `-iwithprefix DIR'
- `-iwithprefixbefore DIR'
- Append DIR to the prefix specified previously with `-iprefix', and
- add the resulting directory to the include search path.
- `-iwithprefixbefore' puts it in the same place `-I' would;
- `-iwithprefix' puts it where `-idirafter' would.
-
- Use of these options is discouraged.
-
- `-isystem DIR'
- Search DIR for header files, after all directories specified by
- `-I' but before the standard system directories. Mark it as a
- system directory, so that it gets the same special treatment as is
- applied to the standard system directories. *Note System
- Headers::.
-
- `-fpreprocessed'
- Indicate to the preprocessor that the input file has already been
- preprocessed. This suppresses things like macro expansion,
- trigraph conversion, escaped newline splicing, and processing of
- most directives. The preprocessor still recognizes and removes
- comments, so that you can pass a file preprocessed with `-C' to
- the compiler without problems. In this mode the integrated
- preprocessor is little more than a tokenizer for the front ends.
-
- `-fpreprocessed' is implicit if the input file has one of the
- extensions `.i', `.ii' or `.mi'. These are the extensions that
- GCC uses for preprocessed files created by `-save-temps'.
-
- `-ftabstop=WIDTH'
- Set the distance between tab stops. This helps the preprocessor
- report correct column numbers in warnings or errors, even if tabs
- appear on the line. If the value is less than 1 or greater than
- 100, the option is ignored. The default is 8.
-
- `-fno-show-column'
- Do not print column numbers in diagnostics. This may be necessary
- if diagnostics are being scanned by a program that does not
- understand the column numbers, such as `dejagnu'.
-
- `-A PREDICATE=ANSWER'
- Make an assertion with the predicate PREDICATE and answer ANSWER.
- This form is preferred to the older form `-A PREDICATE(ANSWER)',
- which is still supported, because it does not use shell special
- characters. *Note Assertions::.
-
- `-A -PREDICATE=ANSWER'
- Cancel an assertion with the predicate PREDICATE and answer ANSWER.
-
- `-A-'
- Cancel all predefined assertions and all assertions preceding it on
- the command line. Also, undefine all predefined macros and all
- macros preceding it on the command line. (This is a historical
- wart and may change in the future.)
-
- `-dCHARS'
- CHARS is a sequence of one or more of the following characters,
- and must not be preceded by a space. Other characters are
- interpreted by the compiler proper, or reserved for future
- versions of GCC, and so are silently ignored. If you specify
- characters whose behavior conflicts, the result is undefined.
-
- `M'
- Instead of the normal output, generate a list of `#define'
- directives for all the macros defined during the execution of
- the preprocessor, including predefined macros. This gives
- you a way of finding out what is predefined in your version
- of the preprocessor. Assuming you have no file `foo.h', the
- command
-
- touch foo.h; cpp -dM foo.h
-
- will show all the predefined macros.
-
- `D'
- Like `M' except in two respects: it does _not_ include the
- predefined macros, and it outputs _both_ the `#define'
- directives and the result of preprocessing. Both kinds of
- output go to the standard output file.
-
- `N'
- Like `D', but emit only the macro names, not their expansions.
-
- `I'
- Output `#include' directives in addition to the result of
- preprocessing.
-
- `-P'
- Inhibit generation of linemarkers in the output from the
- preprocessor. This might be useful when running the preprocessor
- on something that is not C code, and will be sent to a program
- which might be confused by the linemarkers. *Note Preprocessor
- Output::.
-
- `-C'
- Do not discard comments. All comments are passed through to the
- output file, except for comments in processed directives, which
- are deleted along with the directive.
-
- You should be prepared for side effects when using `-C'; it causes
- the preprocessor to treat comments as tokens in their own right.
- For example, comments appearing at the start of what would be a
- directive line have the effect of turning that line into an
- ordinary source line, since the first token on the line is no
- longer a `#'.
-
- `-gcc'
- Define the macros __GNUC__, __GNUC_MINOR__ and
- __GNUC_PATCHLEVEL__. These are defined automatically when you use
- `gcc -E'; you can turn them off in that case with `-no-gcc'.
-
- `-traditional'
- Try to imitate the behavior of old-fashioned C, as opposed to ISO
- C. *Note Traditional Mode::.
-
- `-trigraphs'
- Process trigraph sequences. *Note Initial processing::.
-
- `-remap'
- Enable special code to work around file systems which only permit
- very short file names, such as MS-DOS.
-
- `-$'
- Forbid the use of `$' in identifiers. The C standard allows
- implementations to define extra characters that can appear in
- identifiers. By default GNU CPP permits `$', a common extension.
-
- `-h'
- `--help'
- `--target-help'
- Print text describing all the command line options instead of
- preprocessing anything.
-
- `-v'
- Verbose mode. Print out GNU CPP's version number at the beginning
- of execution, and report the final form of the include path.
-
- `-H'
- Print the name of each header file used, in addition to other
- normal activities. Each name is indented to show how deep in the
- `#include' stack it is.
-
- `-version'
- `--version'
- Print out GNU CPP's version number. With one dash, proceed to
- preprocess as normal. With two dashes, exit immediately.
-
--- 1100,1102 ----
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-4 gcc-3.2.1/gcc/doc/cpp.info-4
*** gcc-3.2/gcc/doc/cpp.info-4 Wed Aug 14 09:36:32 2002
--- gcc-3.2.1/gcc/doc/cpp.info-4 Tue Nov 19 18:17:11 2002
*************** START-INFO-DIR-ENTRY
*** 7,12 ****
--- 7,502 ----
END-INFO-DIR-ENTRY
+ File: cpp.info, Node: Invocation, Next: Environment Variables, Prev: Implementation Details, Up: Top
+
+ Invocation
+ **********
+
+ Most often when you use the C preprocessor you will not have to
+ invoke it explicitly: the C compiler will do so automatically.
+ However, the preprocessor is sometimes useful on its own. All the
+ options listed here are also acceptable to the C compiler and have the
+ same meaning, except that the C compiler has different rules for
+ specifying the output file.
+
+ *Note:* Whether you use the preprocessor by way of `gcc' or `cpp',
+ the "compiler driver" is run first. This program's purpose is to
+ translate your command into invocations of the programs that do the
+ actual work. Their command line interfaces are similar but not
+ identical to the documented interface, and may change without notice.
+
+ The C preprocessor expects two file names as arguments, INFILE and
+ OUTFILE. The preprocessor reads INFILE together with any other files
+ it specifies with `#include'. All the output generated by the combined
+ input files is written in OUTFILE.
+
+ Either INFILE or OUTFILE may be `-', which as INFILE means to read
+ from standard input and as OUTFILE means to write to standard output.
+ Also, if either file is omitted, it means the same as if `-' had been
+ specified for that file.
+
+ Unless otherwise noted, or the option ends in `=', all options which
+ take an argument may have that argument appear either immediately after
+ the option, or with a space between option and argument: `-Ifoo' and
+ `-I foo' have the same effect.
+
+ Many options have multi-letter names; therefore multiple
+ single-letter options may _not_ be grouped: `-dM' is very different from
+ `-d -M'.
+
+ `-D NAME'
+ Predefine NAME as a macro, with definition `1'.
+
+ `-D NAME=DEFINITION'
+ Predefine NAME as a macro, with definition DEFINITION. There are
+ no restrictions on the contents of DEFINITION, but if you are
+ invoking the preprocessor from a shell or shell-like program you
+ may need to use the shell's quoting syntax to protect characters
+ such as spaces that have a meaning in the shell syntax.
+
+ If you wish to define a function-like macro on the command line,
+ write its argument list with surrounding parentheses before the
+ equals sign (if any). Parentheses are meaningful to most shells,
+ so you will need to quote the option. With `sh' and `csh',
+ `-D'NAME(ARGS...)=DEFINITION'' works.
+
+ `-D' and `-U' options are processed in the order they are given on
+ the command line. All `-imacros FILE' and `-include FILE' options
+ are processed after all `-D' and `-U' options.
+
+ `-U NAME'
+ Cancel any previous definition of NAME, either built in or
+ provided with a `-D' option.
+
+ `-undef'
+ Do not predefine any system-specific macros. The common predefined
+ macros remain defined.
+
+ `-I DIR'
+ Add the directory DIR to the list of directories to be searched
+ for header files. *Note Search Path::. Directories named by `-I'
+ are searched before the standard system include directories.
+
+ It is dangerous to specify a standard system include directory in
+ an `-I' option. This defeats the special treatment of system
+ headers (*note System Headers::) . It can also defeat the repairs
+ to buggy system headers which GCC makes when it is installed.
+
+ `-o FILE'
+ Write output to FILE. This is the same as specifying FILE as the
+ second non-option argument to `cpp'. `gcc' has a different
+ interpretation of a second non-option argument, so you must use
+ `-o' to specify the output file.
+
+ `-Wall'
+ Turns on all optional warnings which are desirable for normal
+ code. At present this is `-Wcomment' and `-Wtrigraphs'. Note that
+ many of the preprocessor's warnings are on by default and have no
+ options to control them.
+
+ `-Wcomment'
+ `-Wcomments'
+ Warn whenever a comment-start sequence `/*' appears in a `/*'
+ comment, or whenever a backslash-newline appears in a `//' comment.
+ (Both forms have the same effect.)
+
+ `-Wtrigraphs'
+ Warn if any trigraphs are encountered. This option used to take
+ effect only if `-trigraphs' was also specified, but now works
+ independently. Warnings are not given for trigraphs within
+ comments, as they do not affect the meaning of the program.
+
+ `-Wtraditional'
+ Warn about certain constructs that behave differently in
+ traditional and ISO C. Also warn about ISO C constructs that have
+ no traditional C equivalent, and problematic constructs which
+ should be avoided. *Note Traditional Mode::.
+
+ `-Wimport'
+ Warn the first time `#import' is used.
+
+ `-Wundef'
+ Warn whenever an identifier which is not a macro is encountered in
+ an `#if' directive, outside of `defined'. Such identifiers are
+ replaced with zero.
+
+ `-Werror'
+ Make all warnings into hard errors. Source code which triggers
+ warnings will be rejected.
+
+ `-Wsystem-headers'
+ Issue warnings for code in system headers. These are normally
+ unhelpful in finding bugs in your own code, therefore suppressed.
+ If you are responsible for the system library, you may want to see
+ them.
+
+ `-w'
+ Suppress all warnings, including those which GNU CPP issues by
+ default.
+
+ `-pedantic'
+ Issue all the mandatory diagnostics listed in the C standard.
+ Some of them are left out by default, since they trigger
+ frequently on harmless code.
+
+ `-pedantic-errors'
+ Issue all the mandatory diagnostics, and make all mandatory
+ diagnostics into errors. This includes mandatory diagnostics that
+ GCC issues without `-pedantic' but treats as warnings.
+
+ `-M'
+ Instead of outputting the result of preprocessing, output a rule
+ suitable for `make' describing the dependencies of the main source
+ file. The preprocessor outputs one `make' rule containing the
+ object file name for that source file, a colon, and the names of
+ all the included files, including those coming from `-include' or
+ `-imacros' command line options.
+
+ Unless specified explicitly (with `-MT' or `-MQ'), the object file
+ name consists of the basename of the source file with any suffix
+ replaced with object file suffix. If there are many included
+ files then the rule is split into several lines using `\'-newline.
+ The rule has no commands.
+
+ This option does not suppress the preprocessor's debug output,
+ such as `-dM'. To avoid mixing such debug output with the
+ dependency rules you should explicitly specify the dependency
+ output file with `-MF', or use an environment variable like
+ `DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::). Debug output
+ will still be sent to the regular output stream as normal.
+
+ Passing `-M' to the driver implies `-E'.
+
+ `-MM'
+ Like `-M' but do not mention header files that are found in system
+ header directories, nor header files that are included, directly
+ or indirectly, from such a header.
+
+ This implies that the choice of angle brackets or double quotes in
+ an `#include' directive does not in itself determine whether that
+ header will appear in `-MM' dependency output. This is a slight
+ change in semantics from GCC versions 3.0 and earlier.
+
+ `-MF FILE'
+ When used with `-M' or `-MM', specifies a file to write the
+ dependencies to. If no `-MF' switch is given the preprocessor
+ sends the rules to the same place it would have sent preprocessed
+ output.
+
+ When used with the driver options `-MD' or `-MMD', `-MF' overrides
+ the default dependency output file.
+
+ `-MG'
+ When used with `-M' or `-MM', `-MG' says to treat missing header
+ files as generated files and assume they live in the same
+ directory as the source file. It suppresses preprocessed output,
+ as a missing header file is ordinarily an error.
+
+ This feature is used in automatic updating of makefiles.
+
+ `-MP'
+ This option instructs CPP to add a phony target for each dependency
+ other than the main file, causing each to depend on nothing. These
+ dummy rules work around errors `make' gives if you remove header
+ files without updating the `Makefile' to match.
+
+ This is typical output:
+
+ test.o: test.c test.h
+
+ test.h:
+
+ `-MT TARGET'
+ Change the target of the rule emitted by dependency generation. By
+ default CPP takes the name of the main input file, including any
+ path, deletes any file suffix such as `.c', and appends the
+ platform's usual object suffix. The result is the target.
+
+ An `-MT' option will set the target to be exactly the string you
+ specify. If you want multiple targets, you can specify them as a
+ single argument to `-MT', or use multiple `-MT' options.
+
+ For example, `-MT '$(objpfx)foo.o'' might give
+
+ $(objpfx)foo.o: foo.c
+
+ `-MQ TARGET'
+ Same as `-MT', but it quotes any characters which are special to
+ Make. `-MQ '$(objpfx)foo.o'' gives
+
+ $$(objpfx)foo.o: foo.c
+
+ The default target is automatically quoted, as if it were given
+ with `-MQ'.
+
+ `-MD'
+ `-MD' is equivalent to `-M -MF FILE', except that `-E' is not
+ implied. The driver determines FILE based on whether an `-o'
+ option is given. If it is, the driver uses its argument but with
+ a suffix of `.d', otherwise it take the basename of the input file
+ and applies a `.d' suffix.
+
+ If `-MD' is used in conjunction with `-E', any `-o' switch is
+ understood to specify the dependency output file (but *note
+ -MF::), but if used without `-E', each `-o' is understood to
+ specify a target object file.
+
+ Since `-E' is not implied, `-MD' can be used to generate a
+ dependency output file as a side-effect of the compilation process.
+
+ `-MMD'
+ Like `-MD' except mention only user header files, not system
+ -header files.
+
+ `-x c'
+ `-x c++'
+ `-x objective-c'
+ `-x assembler-with-cpp'
+ Specify the source language: C, C++, Objective-C, or assembly.
+ This has nothing to do with standards conformance or extensions;
+ it merely selects which base syntax to expect. If you give none
+ of these options, cpp will deduce the language from the extension
+ of the source file: `.c', `.cc', `.m', or `.S'. Some other common
+ extensions for C++ and assembly are also recognized. If cpp does
+ not recognize the extension, it will treat the file as C; this is
+ the most generic mode.
+
+ *Note:* Previous versions of cpp accepted a `-lang' option which
+ selected both the language and the standards conformance level.
+ This option has been removed, because it conflicts with the `-l'
+ option.
+
+ `-std=STANDARD'
+ `-ansi'
+ Specify the standard to which the code should conform. Currently
+ cpp only knows about the standards for C; other language standards
+ will be added in the future.
+
+ STANDARD may be one of:
+ `iso9899:1990'
+ `c89'
+ The ISO C standard from 1990. `c89' is the customary
+ shorthand for this version of the standard.
+
+ The `-ansi' option is equivalent to `-std=c89'.
+
+ `iso9899:199409'
+ The 1990 C standard, as amended in 1994.
+
+ `iso9899:1999'
+ `c99'
+ `iso9899:199x'
+ `c9x'
+ The revised ISO C standard, published in December 1999.
+ Before publication, this was known as C9X.
+
+ `gnu89'
+ The 1990 C standard plus GNU extensions. This is the default.
+
+ `gnu99'
+ `gnu9x'
+ The 1999 C standard plus GNU extensions.
+
+ `-I-'
+ Split the include path. Any directories specified with `-I'
+ options before `-I-' are searched only for headers requested with
+ `#include "FILE"'; they are not searched for `#include '.
+ If additional directories are specified with `-I' options after
+ the `-I-', those directories are searched for all `#include'
+ directives.
+
+ In addition, `-I-' inhibits the use of the directory of the current
+ file directory as the first search directory for `#include "FILE"'.
+ *Note Search Path::.
+
+ `-nostdinc'
+ Do not search the standard system directories for header files.
+ Only the directories you have specified with `-I' options (and the
+ directory of the current file, if appropriate) are searched.
+
+ `-nostdinc++'
+ Do not search for header files in the C++-specific standard
+ directories, but do still search the other standard directories.
+ (This option is used when building the C++ library.)
+
+ `-include FILE'
+ Process FILE as if `#include "file"' appeared as the first line of
+ the primary source file. However, the first directory searched
+ for FILE is the preprocessor's working directory _instead of_ the
+ directory containing the main source file. If not found there, it
+ is searched for in the remainder of the `#include "..."' search
+ chain as normal.
+
+ If multiple `-include' options are given, the files are included
+ in the order they appear on the command line.
+
+ `-imacros FILE'
+ Exactly like `-include', except that any output produced by
+ scanning FILE is thrown away. Macros it defines remain defined.
+ This allows you to acquire all the macros from a header without
+ also processing its declarations.
+
+ All files specified by `-imacros' are processed before all files
+ specified by `-include'.
+
+ `-idirafter DIR'
+ Search DIR for header files, but do it _after_ all directories
+ specified with `-I' and the standard system directories have been
+ exhausted. DIR is treated as a system include directory.
+
+ `-iprefix PREFIX'
+ Specify PREFIX as the prefix for subsequent `-iwithprefix'
+ options. If the prefix represents a directory, you should include
+ the final `/'.
+
+ `-iwithprefix DIR'
+ `-iwithprefixbefore DIR'
+ Append DIR to the prefix specified previously with `-iprefix', and
+ add the resulting directory to the include search path.
+ `-iwithprefixbefore' puts it in the same place `-I' would;
+ `-iwithprefix' puts it where `-idirafter' would.
+
+ Use of these options is discouraged.
+
+ `-isystem DIR'
+ Search DIR for header files, after all directories specified by
+ `-I' but before the standard system directories. Mark it as a
+ system directory, so that it gets the same special treatment as is
+ applied to the standard system directories. *Note System
+ Headers::.
+
+ `-fpreprocessed'
+ Indicate to the preprocessor that the input file has already been
+ preprocessed. This suppresses things like macro expansion,
+ trigraph conversion, escaped newline splicing, and processing of
+ most directives. The preprocessor still recognizes and removes
+ comments, so that you can pass a file preprocessed with `-C' to
+ the compiler without problems. In this mode the integrated
+ preprocessor is little more than a tokenizer for the front ends.
+
+ `-fpreprocessed' is implicit if the input file has one of the
+ extensions `.i', `.ii' or `.mi'. These are the extensions that
+ GCC uses for preprocessed files created by `-save-temps'.
+
+ `-ftabstop=WIDTH'
+ Set the distance between tab stops. This helps the preprocessor
+ report correct column numbers in warnings or errors, even if tabs
+ appear on the line. If the value is less than 1 or greater than
+ 100, the option is ignored. The default is 8.
+
+ `-fno-show-column'
+ Do not print column numbers in diagnostics. This may be necessary
+ if diagnostics are being scanned by a program that does not
+ understand the column numbers, such as `dejagnu'.
+
+ `-A PREDICATE=ANSWER'
+ Make an assertion with the predicate PREDICATE and answer ANSWER.
+ This form is preferred to the older form `-A PREDICATE(ANSWER)',
+ which is still supported, because it does not use shell special
+ characters. *Note Assertions::.
+
+ `-A -PREDICATE=ANSWER'
+ Cancel an assertion with the predicate PREDICATE and answer ANSWER.
+
+ `-A-'
+ Cancel all predefined assertions and all assertions preceding it on
+ the command line. Also, undefine all predefined macros and all
+ macros preceding it on the command line. (This is a historical
+ wart and may change in the future.)
+
+ `-dCHARS'
+ CHARS is a sequence of one or more of the following characters,
+ and must not be preceded by a space. Other characters are
+ interpreted by the compiler proper, or reserved for future
+ versions of GCC, and so are silently ignored. If you specify
+ characters whose behavior conflicts, the result is undefined.
+
+ `M'
+ Instead of the normal output, generate a list of `#define'
+ directives for all the macros defined during the execution of
+ the preprocessor, including predefined macros. This gives
+ you a way of finding out what is predefined in your version
+ of the preprocessor. Assuming you have no file `foo.h', the
+ command
+
+ touch foo.h; cpp -dM foo.h
+
+ will show all the predefined macros.
+
+ `D'
+ Like `M' except in two respects: it does _not_ include the
+ predefined macros, and it outputs _both_ the `#define'
+ directives and the result of preprocessing. Both kinds of
+ output go to the standard output file.
+
+ `N'
+ Like `D', but emit only the macro names, not their expansions.
+
+ `I'
+ Output `#include' directives in addition to the result of
+ preprocessing.
+
+ `-P'
+ Inhibit generation of linemarkers in the output from the
+ preprocessor. This might be useful when running the preprocessor
+ on something that is not C code, and will be sent to a program
+ which might be confused by the linemarkers. *Note Preprocessor
+ Output::.
+
+ `-C'
+ Do not discard comments. All comments are passed through to the
+ output file, except for comments in processed directives, which
+ are deleted along with the directive.
+
+ You should be prepared for side effects when using `-C'; it causes
+ the preprocessor to treat comments as tokens in their own right.
+ For example, comments appearing at the start of what would be a
+ directive line have the effect of turning that line into an
+ ordinary source line, since the first token on the line is no
+ longer a `#'.
+
+ `-gcc'
+ Define the macros __GNUC__, __GNUC_MINOR__ and
+ __GNUC_PATCHLEVEL__. These are defined automatically when you use
+ `gcc -E'; you can turn them off in that case with `-no-gcc'.
+
+ `-traditional'
+ Try to imitate the behavior of old-fashioned C, as opposed to ISO
+ C. *Note Traditional Mode::.
+
+ `-trigraphs'
+ Process trigraph sequences. *Note Initial processing::.
+
+ `-remap'
+ Enable special code to work around file systems which only permit
+ very short file names, such as MS-DOS.
+
+ `-$'
+ Forbid the use of `$' in identifiers. The C standard allows
+ implementations to define extra characters that can appear in
+ identifiers. By default GNU CPP permits `$', a common extension.
+
+ `-h'
+ `--help'
+ `--target-help'
+ Print text describing all the command line options instead of
+ preprocessing anything.
+
+ `-v'
+ Verbose mode. Print out GNU CPP's version number at the beginning
+ of execution, and report the final form of the include path.
+
+ `-H'
+ Print the name of each header file used, in addition to other
+ normal activities. Each name is indented to show how deep in the
+ `#include' stack it is.
+
+ `-version'
+ `--version'
+ Print out GNU CPP's version number. With one dash, proceed to
+ preprocess as normal. With two dashes, exit immediately.
+
+
File: cpp.info, Node: Environment Variables, Next: GNU Free Documentation License, Prev: Invocation, Up: Top
Environment Variables
*************** in turn take precedence over the configu
*** 64,70 ****
This variable is the same as the environment variable
`DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::), except that
system header files are not ignored, so it implies `-M' rather
! than `-MM'. *Note Invocation::.
File: cpp.info, Node: GNU Free Documentation License, Next: Option Index, Prev: Environment Variables, Up: Top
--- 554,561 ----
This variable is the same as the environment variable
`DEPENDENCIES_OUTPUT' (*note DEPENDENCIES_OUTPUT::), except that
system header files are not ignored, so it implies `-M' rather
! than `-MM'. However, the dependence on the main input file is
! omitted. *Note Invocation::.
File: cpp.info, Node: GNU Free Documentation License, Next: Option Index, Prev: Environment Variables, Up: Top
*************** Index of Directives
*** 561,681 ****
* OBJC_INCLUDE_PATH: Environment Variables.
* SUNPRO_DEPENDENCIES: Environment Variables.
-
- File: cpp.info, Node: Concept Index, Prev: Index of Directives, Up: Top
-
- Concept Index
- *************
-
- * Menu:
-
- * # operator: Stringification.
- * ## operator: Concatenation.
- * _Pragma: Pragmas.
- * alternative tokens: Tokenization.
- * arguments: Macro Arguments.
- * arguments in macro definitions: Macro Arguments.
- * assertions: Assertions.
- * assertions, cancelling: Assertions.
- * backslash-newline: Initial processing.
- * block comments: Initial processing.
- * C++ named operators: C++ Named Operators.
- * character constants: Tokenization.
- * character sets: Initial processing.
- * command line: Invocation.
- * commenting out code: Deleted Code.
- * comments: Initial processing.
- * common predefined macros: Common Predefined Macros.
- * computed includes: Computed Includes.
- * concatenation: Concatenation.
- * conditional group: Ifdef.
- * conditionals: Conditionals.
- * continued lines: Initial processing.
- * controlling macro: Once-Only Headers.
- * defined: Defined.
- * dependencies for make as output: Environment Variables.
- * dependencies, make: Invocation.
- * diagnostic: Diagnostics.
- * differences from previous versions: Differences from previous versions.
- * digraphs: Tokenization.
- * directive line: The preprocessing language.
- * directive name: The preprocessing language.
- * directives: The preprocessing language.
- * empty macro arguments: Macro Arguments.
- * environment variables: Environment Variables.
- * expansion of arguments: Argument Prescan.
- * FDL, GNU Free Documentation License: GNU Free Documentation License.
- * function-like macros: Function-like Macros.
- * grouping options: Invocation.
- * guard macro: Once-Only Headers.
- * header file: Header Files.
- * header file names: Tokenization.
- * identifiers: Tokenization.
- * implementation limits: Implementation limits.
- * implementation-defined behavior: Implementation-defined behavior.
- * including just once: Once-Only Headers.
- * invalid token paste: Miscellaneous obsolete features.
- * invocation: Invocation.
- * iso646.h: C++ Named Operators.
- * line comments: Initial processing.
- * line control: Line Control.
- * line endings: Initial processing.
- * linemarkers: Preprocessor Output.
- * macro argument expansion: Argument Prescan.
- * macros in include: Computed Includes.
- * macros with arguments: Macro Arguments.
- * macros with variable arguments: Variadic Macros.
- * make: Invocation.
- * manifest constants: Object-like Macros.
- * multi-line string constants: Miscellaneous obsolete features.
- * named operators: C++ Named Operators.
- * newlines in macro arguments: Newlines in Arguments.
- * null directive: Other Directives.
- * numbers: Tokenization.
- * object-like macro: Object-like Macros.
- * options: Invocation.
- * options, grouping: Invocation.
- * other tokens: Tokenization.
- * output format: Preprocessor Output.
- * overriding a header file: Wrapper Headers.
- * parentheses in macro bodies: Operator Precedence Problems.
- * pitfalls of macros: Macro Pitfalls.
- * pragma poison: Miscellaneous obsolete features.
- * predefined macros: Predefined Macros.
- * predefined macros, system-specific: System-specific Predefined Macros.
- * predicates: Assertions.
- * preprocessing directives: The preprocessing language.
- * preprocessing numbers: Tokenization.
- * preprocessing tokens: Tokenization.
- * prescan of macro arguments: Argument Prescan.
- * problems with macros: Macro Pitfalls.
- * punctuators: Tokenization.
- * redefining macros: Undefining and Redefining Macros.
- * repeated inclusion: Once-Only Headers.
- * reporting errors: Diagnostics.
- * reporting warnings: Diagnostics.
- * reserved namespace: System-specific Predefined Macros.
- * self-reference: Self-Referential Macros.
- * semicolons (after macro calls): Swallowing the Semicolon.
- * side effects (in macro arguments): Duplication of Side Effects.
- * standard predefined macros.: Standard Predefined Macros.
- * string constants: Tokenization.
- * string literals: Tokenization.
- * stringification: Stringification.
- * symbolic constants: Object-like Macros.
- * system header files <1>: System Headers.
- * system header files: Header Files.
- * system-specific predefined macros: System-specific Predefined Macros.
- * testing predicates: Assertions.
- * token concatenation: Concatenation.
- * token pasting: Concatenation.
- * tokens: Tokenization.
- * trigraphs: Initial processing.
- * undefining macros: Undefining and Redefining Macros.
- * unsafe macros: Duplication of Side Effects.
- * variable number of arguments: Variadic Macros.
- * variadic macros: Variadic Macros.
- * wrapper #ifndef: Once-Only Headers.
- * wrapper headers: Wrapper Headers.
-
-
--- 1052,1054 ----
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.info-5 gcc-3.2.1/gcc/doc/cpp.info-5
*** gcc-3.2/gcc/doc/cpp.info-5 Thu Jan 1 00:00:00 1970
--- gcc-3.2.1/gcc/doc/cpp.info-5 Tue Nov 19 18:17:11 2002
***************
*** 0 ****
--- 1,126 ----
+ This is doc/cpp.info, produced by makeinfo version 4.2 from
+ doc/cpp.texi.
+
+ INFO-DIR-SECTION Programming
+ START-INFO-DIR-ENTRY
+ * Cpp: (cpp). The GNU C preprocessor.
+ END-INFO-DIR-ENTRY
+
+
+ File: cpp.info, Node: Concept Index, Prev: Index of Directives, Up: Top
+
+ Concept Index
+ *************
+
+ * Menu:
+
+ * # operator: Stringification.
+ * ## operator: Concatenation.
+ * _Pragma: Pragmas.
+ * alternative tokens: Tokenization.
+ * arguments: Macro Arguments.
+ * arguments in macro definitions: Macro Arguments.
+ * assertions: Assertions.
+ * assertions, cancelling: Assertions.
+ * backslash-newline: Initial processing.
+ * block comments: Initial processing.
+ * C++ named operators: C++ Named Operators.
+ * character constants: Tokenization.
+ * character sets: Initial processing.
+ * command line: Invocation.
+ * commenting out code: Deleted Code.
+ * comments: Initial processing.
+ * common predefined macros: Common Predefined Macros.
+ * computed includes: Computed Includes.
+ * concatenation: Concatenation.
+ * conditional group: Ifdef.
+ * conditionals: Conditionals.
+ * continued lines: Initial processing.
+ * controlling macro: Once-Only Headers.
+ * defined: Defined.
+ * dependencies for make as output: Environment Variables.
+ * dependencies, make: Invocation.
+ * diagnostic: Diagnostics.
+ * differences from previous versions: Differences from previous versions.
+ * digraphs: Tokenization.
+ * directive line: The preprocessing language.
+ * directive name: The preprocessing language.
+ * directives: The preprocessing language.
+ * empty macro arguments: Macro Arguments.
+ * environment variables: Environment Variables.
+ * expansion of arguments: Argument Prescan.
+ * FDL, GNU Free Documentation License: GNU Free Documentation License.
+ * function-like macros: Function-like Macros.
+ * grouping options: Invocation.
+ * guard macro: Once-Only Headers.
+ * header file: Header Files.
+ * header file names: Tokenization.
+ * identifiers: Tokenization.
+ * implementation limits: Implementation limits.
+ * implementation-defined behavior: Implementation-defined behavior.
+ * including just once: Once-Only Headers.
+ * invalid token paste: Miscellaneous obsolete features.
+ * invocation: Invocation.
+ * iso646.h: C++ Named Operators.
+ * line comments: Initial processing.
+ * line control: Line Control.
+ * line endings: Initial processing.
+ * linemarkers: Preprocessor Output.
+ * macro argument expansion: Argument Prescan.
+ * macros in include: Computed Includes.
+ * macros with arguments: Macro Arguments.
+ * macros with variable arguments: Variadic Macros.
+ * make: Invocation.
+ * manifest constants: Object-like Macros.
+ * multi-line string constants: Miscellaneous obsolete features.
+ * named operators: C++ Named Operators.
+ * newlines in macro arguments: Newlines in Arguments.
+ * null directive: Other Directives.
+ * numbers: Tokenization.
+ * object-like macro: Object-like Macros.
+ * options: Invocation.
+ * options, grouping: Invocation.
+ * other tokens: Tokenization.
+ * output format: Preprocessor Output.
+ * overriding a header file: Wrapper Headers.
+ * parentheses in macro bodies: Operator Precedence Problems.
+ * pitfalls of macros: Macro Pitfalls.
+ * pragma poison: Miscellaneous obsolete features.
+ * predefined macros: Predefined Macros.
+ * predefined macros, system-specific: System-specific Predefined Macros.
+ * predicates: Assertions.
+ * preprocessing directives: The preprocessing language.
+ * preprocessing numbers: Tokenization.
+ * preprocessing tokens: Tokenization.
+ * prescan of macro arguments: Argument Prescan.
+ * problems with macros: Macro Pitfalls.
+ * punctuators: Tokenization.
+ * redefining macros: Undefining and Redefining Macros.
+ * repeated inclusion: Once-Only Headers.
+ * reporting errors: Diagnostics.
+ * reporting warnings: Diagnostics.
+ * reserved namespace: System-specific Predefined Macros.
+ * self-reference: Self-Referential Macros.
+ * semicolons (after macro calls): Swallowing the Semicolon.
+ * side effects (in macro arguments): Duplication of Side Effects.
+ * standard predefined macros.: Standard Predefined Macros.
+ * string constants: Tokenization.
+ * string literals: Tokenization.
+ * stringification: Stringification.
+ * symbolic constants: Object-like Macros.
+ * system header files <1>: System Headers.
+ * system header files: Header Files.
+ * system-specific predefined macros: System-specific Predefined Macros.
+ * testing predicates: Assertions.
+ * token concatenation: Concatenation.
+ * token pasting: Concatenation.
+ * tokens: Tokenization.
+ * trigraphs: Initial processing.
+ * undefining macros: Undefining and Redefining Macros.
+ * unsafe macros: Duplication of Side Effects.
+ * variable number of arguments: Variadic Macros.
+ * variadic macros: Variadic Macros.
+ * wrapper #ifndef: Once-Only Headers.
+ * wrapper headers: Wrapper Headers.
+
+
diff -Nrc3pad gcc-3.2/gcc/doc/cpp.texi gcc-3.2.1/gcc/doc/cpp.texi
*** gcc-3.2/gcc/doc/cpp.texi Thu Mar 14 19:24:59 2002
--- gcc-3.2.1/gcc/doc/cpp.texi Sat Oct 5 09:36:28 2002
*************** version of GCC in use.
*** 830,840 ****
You can add to this list with the @option{-I@var{dir}} command line
option. All the directories named by @option{-I} are searched, in
! left-to-right order, @emph{before} the default directories. You can
! also prevent GCC from searching any of the default directories with the
! @option{-nostdinc} option. This is useful when you are compiling an
operating system kernel or some other program that does not use the
standard C library facilities, or the standard C library itself.
GCC looks for headers requested with @code{@w{#include "@var{file}"}}
first in the directory containing the current file, then in the same
--- 830,851 ----
You can add to this list with the @option{-I@var{dir}} command line
option. All the directories named by @option{-I} are searched, in
! left-to-right order, @emph{before} the default directories. The only
! exception is when @file{dir} is already searched by default. In
! this case, the option is ignored and the search order for system
! directories remains unchanged.
!
! Duplicate directories are removed from the quote and bracket search
! chains before the two chains are merged to make the final search chain.
! Thus, it is possible for a directory to occur twice in the final search
! chain if it was specified in both the quote and bracket chains.
!
! You can prevent GCC from searching any of the default directories with
! the @option{-nostdinc} option. This is useful when you are compiling an
operating system kernel or some other program that does not use the
standard C library facilities, or the standard C library itself.
+ @option{-I} options are not ignored as described above when
+ @option{-nostdinc} is in effect.
GCC looks for headers requested with @code{@w{#include "@var{file}"}}
first in the directory containing the current file, then in the same
*************** For example, if @file{/usr/include/sys/s
*** 843,854 ****
@code{@w{#include "types.h"}}, GCC looks for @file{types.h} first in
@file{/usr/include/sys}, then in its usual search path.
- If you name a search directory with @option{-I@var{dir}} that is also a
- system include directory, the @option{-I} wins; the directory will be
- searched according to the @option{-I} ordering, and it will not be
- treated as a system include directory. GCC will warn you when a system
- include directory is hidden in this way.
-
@samp{#line} (@pxref{Line Control}) does not change GCC's idea of the
directory containing the current file.
--- 854,859 ----
*************** found in that directory will be consider
*** 1081,1088 ****
All directories named by @option{-isystem} are searched @emph{after} all
directories named by @option{-I}, no matter what their order was on the
command line. If the same directory is named by both @option{-I} and
! @option{-isystem}, @option{-I} wins; it is as if the @option{-isystem} option
! had never been specified at all. GCC warns you when this happens.
@findex #pragma GCC system_header
There is also a directive, @code{@w{#pragma GCC system_header}}, which
--- 1086,1093 ----
All directories named by @option{-isystem} are searched @emph{after} all
directories named by @option{-I}, no matter what their order was on the
command line. If the same directory is named by both @option{-I} and
! @option{-isystem}, the @option{-I} option is ignored. GCC provides an
! informative message when this occurs if @option{-v} is used.
@findex #pragma GCC system_header
There is also a directive, @code{@w{#pragma GCC system_header}}, which
*************** eprintf ("success!\n")
*** 1676,1681 ****
--- 1681,1695 ----
@expansion{} fprintf(stderr, "success!\n");
@end example
+ @noindent
+ The above explanation is ambiguous about the case where the only macro
+ parameter is a variable arguments parameter, as it is meaningless to
+ try to distinguish whether no argument at all is an empty argument or
+ a missing argument. In this case the C99 standard is clear that the
+ comma must remain, however the existing GCC extension used to swallow
+ the comma. So CPP retains the comma when conforming to a specific C
+ standard, and drops it otherwise.
+
C99 mandates that the only place the identifier @code{@w{__VA_ARGS__}}
can appear is in the replacement list of a variadic macro. It may not
be used as a macro name, macro argument name, or within a different type
*************** conformance to the C Standard. GNU CPP
*** 1806,1814 ****
processing system header files, but when processing user files
@code{__STDC__} is always 1. This has been reported to cause problems;
for instance, some versions of Solaris provide X Windows headers that
! expect @code{__STDC__} to be either undefined or 1. You may be able to
! work around this sort of problem by using an @option{-I} option to
! cancel treatment of those headers as system headers. @xref{Invocation}.
@item __STDC_VERSION__
This macro expands to the C Standard's version number, a long integer
--- 1820,1826 ----
processing system header files, but when processing user files
@code{__STDC__} is always 1. This has been reported to cause problems;
for instance, some versions of Solaris provide X Windows headers that
! expect @code{__STDC__} to be either undefined or 1. @xref{Invocation}.
@item __STDC_VERSION__
This macro expands to the C Standard's version number, a long integer
*************** Here are a few more obsolete features.
*** 3724,3732 ****
@item Attempting to paste two tokens which together do not form a valid
preprocessing token.
! The preprocessor currently warns about this and outputs the two tokens
! adjacently, which is probably the behavior the programmer intends. It
! may not work in future, though.
Most of the time, when you get this warning, you will find that @samp{##}
is being used superstitiously, to guard against whitespace appearing
--- 3736,3744 ----
@item Attempting to paste two tokens which together do not form a valid
preprocessing token.
! The preprocessor currently warns about this, and the resulting
! preprocessed output is undefined. The tokens remain distinct if the
! preprocessor is being used directly by the compiler front end.
Most of the time, when you get this warning, you will find that @samp{##}
is being used superstitiously, to guard against whitespace appearing
diff -Nrc3pad gcc-3.2/gcc/doc/cppenv.texi gcc-3.2.1/gcc/doc/cppenv.texi
*** gcc-3.2/gcc/doc/cppenv.texi Mon Mar 11 19:59:58 2002
--- gcc-3.2.1/gcc/doc/cppenv.texi Thu Aug 15 19:46:42 2002
*************** with an optional @option{-MT} switch too
*** 66,72 ****
This variable is the same as the environment variable
@env{DEPENDENCIES_OUTPUT} (@pxref{DEPENDENCIES_OUTPUT}), except that
system header files are not ignored, so it implies @option{-M} rather
! than @option{-MM}.
@ifset cppmanual
@xref{Invocation}.
@end ifset
--- 66,73 ----
This variable is the same as the environment variable
@env{DEPENDENCIES_OUTPUT} (@pxref{DEPENDENCIES_OUTPUT}), except that
system header files are not ignored, so it implies @option{-M} rather
! than @option{-MM}. However, the dependence on the main input file is
! omitted.
@ifset cppmanual
@xref{Invocation}.
@end ifset
diff -Nrc3pad gcc-3.2/gcc/doc/cppopts.texi gcc-3.2.1/gcc/doc/cppopts.texi
*** gcc-3.2/gcc/doc/cppopts.texi Mon Mar 11 19:59:58 2002
--- gcc-3.2.1/gcc/doc/cppopts.texi Wed Sep 11 16:40:27 2002
*************** standard-conforming modes it converts th
*** 541,550 ****
The nine trigraphs and their replacements are
! @example
Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??-
Replacement: [ ] @{ @} # \ ^ | ~
! @end example
@end ifclear
@item -remap
--- 541,550 ----
The nine trigraphs and their replacements are
! @smallexample
Trigraph: ??( ??) ??< ??> ??= ??/ ??' ??! ??-
Replacement: [ ] @{ @} # \ ^ | ~
! @end smallexample
@end ifclear
@item -remap
diff -Nrc3pad gcc-3.2/gcc/doc/extend.texi gcc-3.2.1/gcc/doc/extend.texi
*** gcc-3.2/gcc/doc/extend.texi Thu Apr 11 21:36:04 2002
--- gcc-3.2.1/gcc/doc/extend.texi Wed Oct 9 21:31:00 2002
*************** extensions, accepted by GCC in C89 mode
*** 385,391 ****
* Labels as Values:: Getting pointers to labels, and computed gotos.
* Nested Functions:: As in Algol and Pascal, lexical scoping of functions.
* Constructing Calls:: Dispatching a call to another function.
- * Naming Types:: Giving a name to the type of some expression.
* Typeof:: @code{typeof}: referring to the type of an expression.
* Lvalues:: Using @samp{?:}, @samp{,} and casts in lvalues.
* Conditionals:: Omitting the middle operand of a @samp{?:} expression.
--- 385,390 ----
*************** the value of an enumeration constant, th
*** 495,502 ****
the initial value of a static variable.
If you don't know the type of the operand, you can still do this, but you
! must use @code{typeof} (@pxref{Typeof}) or type naming (@pxref{Naming
! Types}).
Statement expressions are not supported fully in G++, and their fate
there is unclear. (It is possible that they will become fully supported
--- 494,500 ----
the initial value of a static variable.
If you don't know the type of the operand, you can still do this, but you
! must use @code{typeof} (@pxref{Typeof}).
Statement expressions are not supported fully in G++, and their fate
there is unclear. (It is possible that they will become fully supported
*************** GCC implements taking the address of a n
*** 739,745 ****
called @dfn{trampolines}. A paper describing them is available as
@noindent
! @uref{http://people.debian.org/~karlheg/Usenix88-lexic.pdf}.
A nested function can jump to a label inherited from a containing
function, provided the label was explicitly declared in the containing
--- 737,743 ----
called @dfn{trampolines}. A paper describing them is available as
@noindent
! @uref{http://people.debian.org/~aaronl/Usenix88-lexic.pdf}.
A nested function can jump to a label inherited from a containing
function, provided the label was explicitly declared in the containing
*************** the containing function. You should spe
*** 845,873 ****
returned by @code{__builtin_apply}.
@end deftypefn
- @node Naming Types
- @section Naming an Expression's Type
- @cindex naming types
-
- You can give a name to the type of an expression using a @code{typedef}
- declaration with an initializer. Here is how to define @var{name} as a
- type name for the type of @var{exp}:
-
- @example
- typedef @var{name} = @var{exp};
- @end example
-
- This is useful in conjunction with the statements-within-expressions
- feature. Here is how the two together can be used to define a safe
- ``maximum'' macro that operates on any arithmetic type:
-
- @example
- #define max(a,b) \
- (@{typedef _ta = (a), _tb = (b); \
- _ta _a = (a); _tb _b = (b); \
- _a > _b ? _a : _b; @})
- @end example
-
@cindex underscores in variables in macros
@cindex @samp{_} in variables in macros
@cindex local variables in macros
--- 843,848 ----
*************** A @code{typeof}-construct can be used an
*** 919,924 ****
--- 894,914 ----
used. For example, you can use it in a declaration, in a cast, or inside
of @code{sizeof} or @code{typeof}.
+ @code{typeof} is often useful in conjunction with the
+ statements-within-expressions feature. Here is how the two together can
+ be used to define a safe ``maximum'' macro that operates on any
+ arithmetic type and evaluates each of its arguments exactly once:
+
+ @example
+ #define max(a,b) \
+ (@{ typeof (a) _a = (a); \
+ typeof (b) _b = (b); \
+ _a > _b ? _a : _b; @})
+ @end example
+
+ @noindent
+ Some more examples of the use of @code{typeof}:
+
@itemize @bullet
@item
This declares @code{y} with the type of what @code{x} points to.
*************** Thus, @code{array (pointer (char), 4)} i
*** 968,973 ****
--- 958,983 ----
pointers to @code{char}.
@end itemize
+ @emph{Compatibility Note:} In addition to @code{typeof}, GCC 2 supported
+ a more limited extension which permitted one to write
+
+ @example
+ typedef @var{T} = @var{expr};
+ @end example
+
+ @noindent
+ with the effect of declaring @var{T} to have the type of the expression
+ @var{expr}. This extension does not work with GCC 3 (versions between
+ 3.0 and 3.2 will crash; 3.2.1 and later give an error). Code which
+ relies on it should be rewritten to use @code{typeof}:
+
+ @example
+ typedef typeof(@var{expr}) @var{T};
+ @end example
+
+ @noindent
+ This will work with all versions of GCC@.
+
@node Lvalues
@section Generalized Lvalues
@cindex compound expressions as lvalues
*************** variable number of arguments much as a f
*** 1396,1404 ****
defining the macro is similar to that of a function. Here is an
example:
! @example
#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
! @end example
Here @samp{@dots{}} is a @dfn{variable argument}. In the invocation of
such a macro, it represents the zero or more tokens until the closing
--- 1406,1414 ----
defining the macro is similar to that of a function. Here is an
example:
! @smallexample
#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
! @end smallexample
Here @samp{@dots{}} is a @dfn{variable argument}. In the invocation of
such a macro, it represents the zero or more tokens until the closing
*************** string.
*** 1437,1445 ****
To help solve this problem, CPP behaves specially for variable arguments
used with the token paste operator, @samp{##}. If instead you write
! @example
#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
! @end example
and if the variable arguments are omitted or empty, the @samp{##}
operator causes the preprocessor to remove the comma before it. If you
--- 1447,1455 ----
To help solve this problem, CPP behaves specially for variable arguments
used with the token paste operator, @samp{##}. If instead you write
! @smallexample
#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
! @end smallexample
and if the variable arguments are omitted or empty, the @samp{##}
operator causes the preprocessor to remove the comma before it. If you
*************** nested subobject to initialize; the list
*** 1749,1757 ****
subobject corresponding to the closest surrounding brace pair. For
example, with the @samp{struct point} declaration above:
! @example
struct point ptarray[10] = @{ [2].y = yv2, [2].x = xv2, [0].x = xv0 @};
! @end example
@noindent
If the same field is initialized multiple times, it will have value from
--- 1759,1767 ----
subobject corresponding to the closest surrounding brace pair. For
example, with the @samp{struct point} declaration above:
! @smallexample
struct point ptarray[10] = @{ [2].y = yv2, [2].x = xv2, [0].x = xv0 @};
! @end smallexample
@noindent
If the same field is initialized multiple times, it will have value from
*************** the minimum value of variables @var{i} a
*** 6170,6181 ****
However, side effects in @code{X} or @code{Y} may cause unintended
behavior. For example, @code{MIN (i++, j++)} will fail, incrementing
! the smaller counter twice. A GNU C extension allows you to write safe
! macros that avoid this kind of problem (@pxref{Naming Types,,Naming an
! Expression's Type}). However, writing @code{MIN} and @code{MAX} as
! macros also forces you to use function-call notation for a
! fundamental arithmetic operation. Using GNU C++ extensions, you can
! write @w{@samp{int min = i j;}} instead.
Since @code{} and @code{>?} are built into the compiler, they properly
handle expressions with side-effects; @w{@samp{int min = i++ j++;}}
--- 6180,6191 ----
However, side effects in @code{X} or @code{Y} may cause unintended
behavior. For example, @code{MIN (i++, j++)} will fail, incrementing
! the smaller counter twice. The GNU C @code{typeof} extension allows you
! to write safe macros that avoid this kind of problem (@pxref{Typeof}).
! However, writing @code{MIN} and @code{MAX} as macros also forces you to
! use function-call notation for a fundamental arithmetic operation.
! Using GNU C++ extensions, you can write @w{@samp{int min = i j;}}
! instead.
Since @code{} and @code{>?} are built into the compiler, they properly
handle expressions with side-effects; @w{@samp{int min = i++ j++;}}
*************** inclusive. Lower numbers indicate a hig
*** 6749,6758 ****
In the following example, @code{A} would normally be created before
@code{B}, but the @code{init_priority} attribute has reversed that order:
! @example
Some_Class A __attribute__ ((init_priority (2000)));
Some_Class B __attribute__ ((init_priority (543)));
! @end example
@noindent
Note that the particular values of @var{priority} do not matter; only their
--- 6759,6768 ----
In the following example, @code{A} would normally be created before
@code{B}, but the @code{init_priority} attribute has reversed that order:
! @smallexample
Some_Class A __attribute__ ((init_priority (2000)));
Some_Class B __attribute__ ((init_priority (543)));
! @end smallexample
@noindent
Note that the particular values of @var{priority} do not matter; only their
*************** appropriately. However, if C++ code onl
*** 6778,6784 ****
when Java exceptions are thrown through it, GCC will guess incorrectly.
Sample problematic code is:
! @example
struct S @{ ~S(); @};
extern void bar(); // is written in Java, and may throw exceptions
void foo()
--- 6788,6794 ----
when Java exceptions are thrown through it, GCC will guess incorrectly.
Sample problematic code is:
! @smallexample
struct S @{ ~S(); @};
extern void bar(); // is written in Java, and may throw exceptions
void foo()
*************** Sample problematic code is:
*** 6786,6792 ****
S s;
bar();
@}
! @end example
@noindent
The usual effect of an incorrect guess is a link failure, complaining of
--- 6796,6802 ----
S s;
bar();
@}
! @end smallexample
@noindent
The usual effect of an incorrect guess is a link failure, complaining of
diff -Nrc3pad gcc-3.2/gcc/doc/fsf-funding.7 gcc-3.2.1/gcc/doc/fsf-funding.7
*** gcc-3.2/gcc/doc/fsf-funding.7 Wed Aug 14 09:36:41 2002
--- gcc-3.2.1/gcc/doc/fsf-funding.7 Tue Nov 19 18:17:20 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:41 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Tue Nov 19 18:17:20 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "fsf-funding 7"
! .TH fsf-funding 7 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
fsf-funding \- Funding Free Software
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "fsf-funding 7"
! .TH fsf-funding 7 "gcc-3.2.1" "2002-11-19" "GNU"
.UC
.SH "NAME"
fsf-funding \- Funding Free Software
diff -Nrc3pad gcc-3.2/gcc/doc/gcc.1 gcc-3.2.1/gcc/doc/gcc.1
*** gcc-3.2/gcc/doc/gcc.1 Wed Aug 14 09:36:40 2002
--- gcc-3.2.1/gcc/doc/gcc.1 Tue Nov 19 18:17:19 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:36 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Tue Nov 19 18:17:14 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gcc \- \s-1GNU\s0 project C and \*(C+ compiler
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "gcc-3.2.1" "2002-11-19" "GNU"
.UC
.SH "NAME"
gcc \- \s-1GNU\s0 project C and \*(C+ compiler
*************** in the following sections.
*** 197,203 ****
.Ip "\fIOverall Options\fR" 4
.IX Item "Overall Options"
\&\fB\-c \-S \-E \-o\fR \fIfile\fR \fB\-pipe \-pass-exit-codes \-x\fR \fIlanguage\fR
! \&\fB\-v \-### \-\-target-help \-\-help\fR
.Ip "\fIC Language Options\fR" 4
.IX Item "C Language Options"
\&\fB\-ansi \-std=\fR\fIstandard\fR \fB\-aux-info\fR \fIfilename\fR
--- 197,203 ----
.Ip "\fIOverall Options\fR" 4
.IX Item "Overall Options"
\&\fB\-c \-S \-E \-o\fR \fIfile\fR \fB\-pipe \-pass-exit-codes \-x\fR \fIlanguage\fR
! \&\fB\-v \-### \-\-help \-\-target-help \-\-version\fR
.Ip "\fIC Language Options\fR" 4
.IX Item "C Language Options"
\&\fB\-ansi \-std=\fR\fIstandard\fR \fB\-aux-info\fR \fIfilename\fR
*************** in the following sections.
*** 207,213 ****
\&\-fallow-single-precision \-fcond-mismatch
\&\-fsigned-bitfields \-fsigned-char
\&\-funsigned-bitfields \-funsigned-char
! \&\-fwritable-strings \-fshort-wchar\fR
.Ip "\fI\*(C+ Language Options\fR" 4
.IX Item " Language Options"
\&\fB\-fno-access-control \-fcheck-new \-fconserve-space
--- 207,213 ----
\&\-fallow-single-precision \-fcond-mismatch
\&\-fsigned-bitfields \-fsigned-char
\&\-funsigned-bitfields \-funsigned-char
! \&\-fwritable-strings\fR
.Ip "\fI\*(C+ Language Options\fR" 4
.IX Item " Language Options"
\&\fB\-fno-access-control \-fcheck-new \-fconserve-space
*************** in the following sections.
*** 223,229 ****
\&\-fno-optional-diags \-fpermissive
\&\-frepo \-fno-rtti \-fstats \-ftemplate-depth-\fR\fIn\fR
\&\fB\-fuse-cxa-atexit \-fvtable-gc \-fno-weak \-nostdinc++
! \&\-fno-default-inline \-Wctor-dtor-privacy
\&\-Wnon-virtual-dtor \-Wreorder
\&\-Weffc++ \-Wno-deprecated
\&\-Wno-non-template-friend \-Wold-style-cast
--- 223,229 ----
\&\-fno-optional-diags \-fpermissive
\&\-frepo \-fno-rtti \-fstats \-ftemplate-depth-\fR\fIn\fR
\&\fB\-fuse-cxa-atexit \-fvtable-gc \-fno-weak \-nostdinc++
! \&\-fno-default-inline \-Wabi \-Wctor-dtor-privacy
\&\-Wnon-virtual-dtor \-Wreorder
\&\-Weffc++ \-Wno-deprecated
\&\-Wno-non-template-friend \-Wold-style-cast
*************** in the following sections.
*** 241,247 ****
.Ip "\fIWarning Options\fR" 4
.IX Item "Warning Options"
\&\fB\-fsyntax-only \-pedantic \-pedantic-errors
! \&\-w \-W \-Wall \-Waggregate-return
\&\-Wcast-align \-Wcast-qual \-Wchar-subscripts \-Wcomment
\&\-Wconversion \-Wno-deprecated-declarations
\&\-Wdisabled-optimization \-Wdiv-by-zero \-Werror
--- 241,247 ----
.Ip "\fIWarning Options\fR" 4
.IX Item "Warning Options"
\&\fB\-fsyntax-only \-pedantic \-pedantic-errors
! \&\-w \-W \-Wall \-Waggregate-return
\&\-Wcast-align \-Wcast-qual \-Wchar-subscripts \-Wcomment
\&\-Wconversion \-Wno-deprecated-declarations
\&\-Wdisabled-optimization \-Wdiv-by-zero \-Werror
*************** in the following sections.
*** 252,258 ****
\&\-Werror-implicit-function-declaration
\&\-Wimport \-Winline
\&\-Wlarger-than-\fR\fIlen\fR \fB\-Wlong-long
! \&\-Wmain \-Wmissing-braces \-Wmissing-declarations
\&\-Wmissing-format-attribute \-Wmissing-noreturn
\&\-Wmultichar \-Wno-format-extra-args \-Wno-format-y2k
\&\-Wno-import \-Wpacked \-Wpadded
--- 252,258 ----
\&\-Werror-implicit-function-declaration
\&\-Wimport \-Winline
\&\-Wlarger-than-\fR\fIlen\fR \fB\-Wlong-long
! \&\-Wmain \-Wmissing-braces
\&\-Wmissing-format-attribute \-Wmissing-noreturn
\&\-Wmultichar \-Wno-format-extra-args \-Wno-format-y2k
\&\-Wno-import \-Wpacked \-Wpadded
*************** in the following sections.
*** 265,271 ****
\&\-Wunused-value \-Wunused-variable \-Wwrite-strings\fR
.Ip "\fIC-only Warning Options\fR" 4
.IX Item "C-only Warning Options"
! \&\fB\-Wbad-function-cast \-Wmissing-prototypes \-Wnested-externs
\&\-Wstrict-prototypes \-Wtraditional\fR
.Ip "\fIDebugging Options\fR" 4
.IX Item "Debugging Options"
--- 265,272 ----
\&\-Wunused-value \-Wunused-variable \-Wwrite-strings\fR
.Ip "\fIC-only Warning Options\fR" 4
.IX Item "C-only Warning Options"
! \&\fB\-Wbad-function-cast \-Wmissing-declarations
! \&\-Wmissing-prototypes \-Wnested-externs
\&\-Wstrict-prototypes \-Wtraditional\fR
.Ip "\fIDebugging Options\fR" 4
.IX Item "Debugging Options"
*************** in the following sections.
*** 275,281 ****
\&\fB\-fdump-tree-original\fR[\fB-\fR\fIn\fR] \fB\-fdump-tree-optimized\fR[\fB-\fR\fIn\fR]
\&\fB\-fdump-tree-inlined\fR[\fB-\fR\fIn\fR]
\&\fB\-fmem-report \-fpretend-float
! \&\-fprofile-arcs \-ftest-coverage \-ftime-report
\&\-g \-g\fR\fIlevel\fR \fB\-gcoff \-gdwarf \-gdwarf-1 \-gdwarf-1+ \-gdwarf-2
\&\-ggdb \-gstabs \-gstabs+ \-gvms \-gxcoff \-gxcoff+
\&\-p \-pg \-print-file-name=\fR\fIlibrary\fR \fB\-print-libgcc-file-name
--- 276,283 ----
\&\fB\-fdump-tree-original\fR[\fB-\fR\fIn\fR] \fB\-fdump-tree-optimized\fR[\fB-\fR\fIn\fR]
\&\fB\-fdump-tree-inlined\fR[\fB-\fR\fIn\fR]
\&\fB\-fmem-report \-fpretend-float
! \&\-fprofile-arcs \-fsched-verbose=\fR\fIn\fR
! \&\fB\-ftest-coverage \-ftime-report
\&\-g \-g\fR\fIlevel\fR \fB\-gcoff \-gdwarf \-gdwarf-1 \-gdwarf-1+ \-gdwarf-2
\&\-ggdb \-gstabs \-gstabs+ \-gvms \-gxcoff \-gxcoff+
\&\-p \-pg \-print-file-name=\fR\fIlibrary\fR \fB\-print-libgcc-file-name
*************** in the following sections.
*** 286,292 ****
.IX Item "Optimization Options"
\&\fB\-falign-functions=\fR\fIn\fR \fB\-falign-jumps=\fR\fIn\fR
\&\fB\-falign-labels=\fR\fIn\fR \fB\-falign-loops=\fR\fIn\fR
! \&\fB\-fbranch-probabilities \-fcaller-saves \-fcprop-registers
\&\-fcse-follow-jumps \-fcse-skip-blocks \-fdata-sections
\&\-fdelayed-branch \-fdelete-null-pointer-checks
\&\-fexpensive-optimizations \-ffast-math \-ffloat-store
--- 288,295 ----
.IX Item "Optimization Options"
\&\fB\-falign-functions=\fR\fIn\fR \fB\-falign-jumps=\fR\fIn\fR
\&\fB\-falign-labels=\fR\fIn\fR \fB\-falign-loops=\fR\fIn\fR
! \&\fB\-fbounds-check
! \&\-fbranch-probabilities \-fcaller-saves \-fcprop-registers
\&\-fcse-follow-jumps \-fcse-skip-blocks \-fdata-sections
\&\-fdelayed-branch \-fdelete-null-pointer-checks
\&\-fexpensive-optimizations \-ffast-math \-ffloat-store
*************** in the following sections.
*** 294,300 ****
\&\-fgcse \-fgcse-lm \-fgcse-sm
\&\-finline-functions \-finline-limit=\fR\fIn\fR \fB\-fkeep-inline-functions
\&\-fkeep-static-consts \-fmerge-constants \-fmerge-all-constants
! \&\-fmove-all-movables \-fno-default-inline \-fno-defer-pop
\&\-fno-function-cse \-fno-guess-branch-probability
\&\-fno-inline \-fno-math-errno \-fno-peephole \-fno-peephole2
\&\-funsafe-math-optimizations \-fno-trapping-math
--- 297,304 ----
\&\-fgcse \-fgcse-lm \-fgcse-sm
\&\-finline-functions \-finline-limit=\fR\fIn\fR \fB\-fkeep-inline-functions
\&\-fkeep-static-consts \-fmerge-constants \-fmerge-all-constants
! \&\-fmove-all-movables \-fno-branch-count-reg
! \&\-fno-default-inline \-fno-defer-pop
\&\-fno-function-cse \-fno-guess-branch-probability
\&\-fno-inline \-fno-math-errno \-fno-peephole \-fno-peephole2
\&\-funsafe-math-optimizations \-fno-trapping-math
*************** in the following sections.
*** 303,311 ****
\&\-freduce-all-givs \-fregmove \-frename-registers
\&\-frerun-cse-after-loop \-frerun-loop-opt
\&\-fschedule-insns \-fschedule-insns2
\&\-fsingle-precision-constant \-fssa \-fssa-ccp \-fssa-dce
! \&\-fstrength-reduce \-fstrict-aliasing \-fthread-jumps \-ftrapv
! \&\-funroll-all-loops \-funroll-loops
\&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR
\&\fB\-O \-O0 \-O1 \-O2 \-O3 \-Os\fR
.Ip "\fIPreprocessor Options\fR" 4
--- 307,317 ----
\&\-freduce-all-givs \-fregmove \-frename-registers
\&\-frerun-cse-after-loop \-frerun-loop-opt
\&\-fschedule-insns \-fschedule-insns2
+ \&\-fno-sched-interblock \-fno-sched-spec
+ \&\-fsched-spec-load \-fsched-spec-load-dangerous
\&\-fsingle-precision-constant \-fssa \-fssa-ccp \-fssa-dce
! \&\-fstrength-reduce \-fstrict-aliasing \-fthread-jumps
! \&\-ftrapv \-funroll-all-loops \-funroll-loops
\&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR
\&\fB\-O \-O0 \-O1 \-O2 \-O3 \-Os\fR
.Ip "\fIPreprocessor Options\fR" 4
*************** in the following sections.
*** 457,463 ****
\&\-mno-relocatable \-mrelocatable-lib \-mno-relocatable-lib
\&\-mtoc \-mno-toc \-mlittle \-mlittle-endian \-mbig \-mbig-endian
\&\-mcall-aix \-mcall-sysv \-mcall-netbsd
! \&\-maix-struct-return \-msvr4\-struct-return
\&\-mabi=altivec \-mabi=no-altivec
\&\-mprototype \-mno-prototype
\&\-msim \-mmvme \-mads \-myellowknife \-memb \-msdata
--- 463,469 ----
\&\-mno-relocatable \-mrelocatable-lib \-mno-relocatable-lib
\&\-mtoc \-mno-toc \-mlittle \-mlittle-endian \-mbig \-mbig-endian
\&\-mcall-aix \-mcall-sysv \-mcall-netbsd
! \&\-maix-struct-return \-msvr4\-struct-return
\&\-mabi=altivec \-mabi=no-altivec
\&\-mprototype \-mno-prototype
\&\-msim \-mmvme \-mads \-myellowknife \-memb \-msdata
*************** in the following sections.
*** 494,505 ****
\&\-mno-fp-ret-in-387 \-msoft-float \-msvr3\-shlib
\&\-mno-wide-multiply \-mrtd \-malign-double
\&\-mpreferred-stack-boundary=\fR\fInum\fR
! \&\fB\-mmmx \-msse \-msse2 \-msse-math \-m3dnow
\&\-mthreads \-mno-align-stringops \-minline-all-stringops
\&\-mpush-args \-maccumulate-outgoing-args \-m128bit-long-double
\&\-m96bit-long-double \-mregparm=\fR\fInum\fR \fB\-momit-leaf-frame-pointer
\&\-mno-red-zone
! \&\-m32 \-m64\fR
.Sp
\&\fI\s-1HPPA\s0 Options\fR
.Sp
--- 500,512 ----
\&\-mno-fp-ret-in-387 \-msoft-float \-msvr3\-shlib
\&\-mno-wide-multiply \-mrtd \-malign-double
\&\-mpreferred-stack-boundary=\fR\fInum\fR
! \&\fB\-mmmx \-msse \-msse2 \-m3dnow
\&\-mthreads \-mno-align-stringops \-minline-all-stringops
\&\-mpush-args \-maccumulate-outgoing-args \-m128bit-long-double
\&\-m96bit-long-double \-mregparm=\fR\fInum\fR \fB\-momit-leaf-frame-pointer
\&\-mno-red-zone
! \&\-mcmodel=\fR\fIcode-model\fR
! \&\fB\-m32 \-m64\fR
.Sp
\&\fI\s-1HPPA\s0 Options\fR
.Sp
*************** in the following sections.
*** 622,629 ****
.Sp
\&\fID30V Options\fR
.Sp
! \&\fB\-mextmem \-mextmemory \-monchip \-mno-asm-optimize \-masm-optimize
! \&\-mbranch-cost=\fR\fIn\fR \fB\-mcond-exec=\fR\fIn\fR
.Sp
\&\fIS/390 and zSeries Options\fR
.Sp
--- 629,636 ----
.Sp
\&\fID30V Options\fR
.Sp
! \&\fB\-mextmem \-mextmemory \-monchip \-mno-asm-optimize
! \&\-masm-optimize \-mbranch-cost=\fR\fIn\fR \fB\-mcond-exec=\fR\fIn\fR
.Sp
\&\fIS/390 and zSeries Options\fR
.Sp
*************** in the following sections.
*** 680,686 ****
\&\-fno-common \-fno-ident \-fno-gnu-linker
\&\-fpcc-struct-return \-fpic \-fPIC
\&\-freg-struct-return \-fshared-data \-fshort-enums
! \&\-fshort-double \-fvolatile
\&\-fvolatile-global \-fvolatile-static
\&\-fverbose-asm \-fpack-struct \-fstack-check
\&\-fstack-limit-register=\fR\fIreg\fR \fB\-fstack-limit-symbol=\fR\fIsym\fR
--- 687,693 ----
\&\-fno-common \-fno-ident \-fno-gnu-linker
\&\-fpcc-struct-return \-fpic \-fPIC
\&\-freg-struct-return \-fshared-data \-fshort-enums
! \&\-fshort-double \-fshort-wchar \-fvolatile
\&\-fvolatile-global \-fvolatile-static
\&\-fverbose-asm \-fpack-struct \-fstack-check
\&\-fstack-limit-register=\fR\fIreg\fR \fB\-fstack-limit-symbol=\fR\fIsym\fR
*************** be displayed.
*** 883,888 ****
--- 890,898 ----
.IX Item "target-help"
Print (on the standard output) a description of target specific command
line options for each tool.
+ .Ip "\fB\*(--version\fR" 4
+ .IX Item "version"
+ Display the version number and copyrights of the invoked \s-1GCC\s0.
.Sh "Compiling \*(C+ Programs"
.IX Subsection "Compiling Programs"
\&\*(C+ source files conventionally use one of the suffixes \fB.C\fR,
*************** than double precision. If you must use
*** 1215,1225 ****
to use single precision operations when the operands are single
precision, use this option. This option has no effect when compiling
with \s-1ISO\s0 or \s-1GNU\s0 C conventions (the default).
- .Ip "\fB\-fshort-wchar\fR" 4
- .IX Item "-fshort-wchar"
- Override the underlying type for \fBwchar_t\fR to be \fBshort
- unsigned int\fR instead of the default for the target. This option is
- useful for building programs to run under \s-1WINE\s0.
.Sh "Options Controlling \*(C+ Dialect"
.IX Subsection "Options Controlling Dialect"
This section describes the command-line options that are only meaningful
--- 1225,1230 ----
*************** Do not assume \fBinline\fR for functions
*** 1425,1430 ****
--- 1430,1480 ----
Note that these
functions will have linkage like inline functions; they just won't be
inlined by default.
+ .Ip "\fB\-Wabi\fR (\*(C+ only)" 4
+ .IX Item "-Wabi ( only)"
+ Warn when G++ generates code that is probably not compatible with the
+ vendor-neutral \*(C+ \s-1ABI\s0. Although an effort has been made to warn about
+ all such cases, there are probably some cases that are not warned about,
+ even though G++ is generating incompatible code. There may also be
+ cases where warnings are emitted even though the code that is generated
+ will be compatible.
+ .Sp
+ You should rewrite your code to avoid these warnings if you are
+ concerned about the fact that code generated by G++ may not be binary
+ compatible with code generated by other compilers.
+ .Sp
+ The known incompatibilites at this point include:
+ .RS 4
+ .Ip "\(bu" 4
+ Incorrect handling of tail-padding for bit-fields. G++ may attempt to
+ pack data into the same byte as a base class. For example:
+ .Sp
+ .Vb 2
+ \& struct A { virtual void f(); int f1 : 1; };
+ \& struct B : public A { int f2 : 1; };
+ .Ve
+ In this case, G++ will place \f(CW\*(C`B::f2\*(C'\fR into the same byte
+ as\f(CW\*(C`A::f1\*(C'\fR; other compilers will not. You can avoid this problem
+ by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the
+ byte size on your platform; that will cause G++ and other compilers to
+ layout \f(CW\*(C`B\*(C'\fR identically.
+ .Ip "\(bu" 4
+ Incorrect handling of tail-padding for virtual bases. G++ does not use
+ tail padding when laying out virtual bases. For example:
+ .Sp
+ .Vb 3
+ \& struct A { virtual void f(); char c1; };
+ \& struct B { B(); char c2; };
+ \& struct C : public A, public virtual B {};
+ .Ve
+ In this case, G++ will not place \f(CW\*(C`B\*(C'\fR into the tail-padding for
+ \&\f(CW\*(C`A\*(C'\fR; other compilers will. You can avoid this problem by
+ explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its
+ alignment (ignoring virtual base classes); that will cause G++ and other
+ compilers to layout \f(CW\*(C`C\*(C'\fR identically.
+ .RE
+ .RS 4
+ .RE
.Ip "\fB\-Wctor-dtor-privacy\fR (\*(C+ only)" 4
.IX Item "-Wctor-dtor-privacy ( only)"
Warn when a class seems unusable, because all the constructors or
*************** optimization and code generation options
*** 2546,2563 ****
\&\fB\-fbranch-probabilities\fR.
.Sp
The other use of \fB\-fprofile-arcs\fR is for use with \f(CW\*(C`gcov\*(C'\fR,
! when it is used with the \fB\-ftest-coverage\fR option. \s-1GCC\s0
! supports two methods of determining code coverage: the options that
! support \f(CW\*(C`gcov\*(C'\fR, and options \fB\-a\fR and \fB\-ax\fR, which
! write information to text files. The options that support \f(CW\*(C`gcov\*(C'\fR
! do not need to instrument every arc in the program, so a program compiled
! with them runs faster than a program compiled with \fB\-a\fR, which
! adds instrumentation code to every basic block in the program. The
! tradeoff: since \f(CW\*(C`gcov\*(C'\fR does not have execution counts for all
! branches, it must start with the execution counts for the instrumented
! branches, and then iterate over the program flow graph until the entire
! graph has been solved. Hence, \f(CW\*(C`gcov\*(C'\fR runs a little more slowly than
! a program which uses information from \fB\-a\fR and \fB\-ax\fR.
.Sp
With \fB\-fprofile-arcs\fR, for each function of your program \s-1GCC\s0
creates a program flow graph, then finds a spanning tree for the graph.
--- 2596,2602 ----
\&\fB\-fbranch-probabilities\fR.
.Sp
The other use of \fB\-fprofile-arcs\fR is for use with \f(CW\*(C`gcov\*(C'\fR,
! when it is used with the \fB\-ftest-coverage\fR option.
.Sp
With \fB\-fprofile-arcs\fR, for each function of your program \s-1GCC\s0
creates a program flow graph, then finds a spanning tree for the graph.
*************** compiler adds code to count the number o
*** 2566,2576 ****
executed. When an arc is the only exit or only entrance to a block, the
instrumentation code can be added to the block; otherwise, a new basic
block must be created to hold the instrumentation code.
- .Sp
- This option makes it possible to estimate branch probabilities and to
- calculate basic block execution counts. In general, basic block
- execution counts as provided by \fB\-a\fR do not give enough
- information to estimate all branch probabilities.
.Ip "\fB\-ftest-coverage\fR" 4
.IX Item "-ftest-coverage"
Create data files for the \f(CW\*(C`gcov\*(C'\fR code-coverage utility.
--- 2605,2610 ----
*************** Dump after function inlining, to \fI\fIf
*** 2817,2822 ****
--- 2851,2872 ----
.RE
.RS 4
.RE
+ .Ip "\fB\-fsched-verbose=\fR\fIn\fR" 4
+ .IX Item "-fsched-verbose=n"
+ On targets that use instruction scheduling, this option controls the
+ amount of debugging output the scheduler prints. This information is
+ written to standard error, unless \fB\-dS\fR or \fB\-dR\fR is
+ specified, in which case it is output to the usual dump
+ listing file, \fI.sched\fR or \fI.sched2\fR respectively. However
+ for \fIn\fR greater than nine, the output is always printed to standard
+ error.
+ .Sp
+ For \fIn\fR greater than zero, \fB\-fsched-verbose\fR outputs the
+ same information as \fB\-dRS\fR. For \fIn\fR greater than one, it
+ also output basic block probabilities, detailed ready list information
+ and unit/insn info. For \fIn\fR greater than two, it includes \s-1RTL\s0
+ at abort point, control-flow and regions info. And for \fIn\fR over
+ four, \fB\-fsched-verbose\fR also includes dependence info.
.Ip "\fB\-fpretend-float\fR" 4
.IX Item "-fpretend-float"
When running a cross-compiler, pretend that the target machine uses the
*************** arrays or initialized constant variables
*** 3081,3086 ****
--- 3131,3143 ----
types. Languages like C or \*(C+ require each non-automatic variable to
have distinct location, so using this option will result in non-conforming
behavior.
+ .Ip "\fB\-fno-branch-count-reg\fR" 4
+ .IX Item "-fno-branch-count-reg"
+ Do not use ``decrement and branch'' instructions on a count register,
+ but instead generate a sequence of instructions that decrement a
+ register, compare it against zero, then branch based upon the result.
+ This option is only meaningful on architectures that support such
+ instructions, which include x86, PowerPC, \s-1IA-64\s0 and S/390.
.Ip "\fB\-fno-function-cse\fR" 4
.IX Item "-fno-function-cse"
Do not put function addresses in registers; make each instruction that
*************** an exact implementation of \s-1IEEE\s0 o
*** 3138,3143 ****
--- 3195,3206 ----
math functions.
.Sp
The default is \fB\-ftrapping-math\fR.
+ .Ip "\fB\-fbounds-check\fR" 4
+ .IX Item "-fbounds-check"
+ For front-ends that support it, generate additional code to check that
+ indices used to access arrays are within the declared range. This is
+ currenly only supported by the Java and Fortran 77 front-ends, where
+ this option defaults to true and false respectively.
.PP
The following options control specific optimizations. The \fB\-O2\fR
option turns on all of these optimizations except \fB\-funroll-loops\fR
*************** Similar to \fB\-fschedule-insns\fR, but
*** 3249,3254 ****
--- 3312,3337 ----
instruction scheduling after register allocation has been done. This is
especially useful on machines with a relatively small number of
registers and where memory load instructions take more than one cycle.
+ .Ip "\fB\-fno-sched-interblock\fR" 4
+ .IX Item "-fno-sched-interblock"
+ Don't schedule instructions across basic blocks. This is normally
+ enabled by default when scheduling before register allocation, i.e.
+ with \fB\-fschedule-insns\fR or at \fB\-O2\fR or higher.
+ .Ip "\fB\-fno-sched-spec\fR" 4
+ .IX Item "-fno-sched-spec"
+ Don't allow speculative motion of non-load instructions. This is normally
+ enabled by default when scheduling before register allocation, i.e.
+ with \fB\-fschedule-insns\fR or at \fB\-O2\fR or higher.
+ .Ip "\fB\-fsched-spec-load\fR" 4
+ .IX Item "-fsched-spec-load"
+ Allow speculative motion of some load instructions. This only makes
+ sense when scheduling before register allocation, i.e. with
+ \&\fB\-fschedule-insns\fR or at \fB\-O2\fR or higher.
+ .Ip "\fB\-fsched-spec-load-dangerous\fR" 4
+ .IX Item "-fsched-spec-load-dangerous"
+ Allow speculative motion of more load instructions. This only makes
+ sense when scheduling before register allocation, i.e. with
+ \&\fB\-fschedule-insns\fR or at \fB\-O2\fR or higher.
.Ip "\fB\-ffunction-sections\fR" 4
.IX Item "-ffunction-sections"
.PD 0
*************** one \fB\-I\fR option, the directories ar
*** 4290,4304 ****
order; the standard system directories come after.
.Sp
If a standard system include directory, or a directory specified with
! \&\fB\-isystem\fR, is also specified with \fB\-I\fR, it will be
! searched only in the position requested by \fB\-I\fR. Also, it will
! not be considered a system include directory. If that directory really
! does contain system headers, there is a good chance that they will
! break. For instance, if \s-1GCC\s0's installation procedure edited the headers
! in \fI/usr/include\fR to fix bugs, \fB\-I/usr/include\fR will cause the
! original, buggy headers to be found instead of the corrected ones. \s-1GCC\s0
! will issue a warning when a system include directory is hidden in this
! way.
.Ip "\fB\-I-\fR" 4
.IX Item "-I-"
Any directories you specify with \fB\-I\fR options before the \fB\-I-\fR
--- 4373,4385 ----
order; the standard system directories come after.
.Sp
If a standard system include directory, or a directory specified with
! \&\fB\-isystem\fR, is also specified with \fB\-I\fR, the \fB\-I\fR
! option will be ignored. The directory will still be searched but as a
! system directory at its normal position in the system include chain.
! This is to ensure that \s-1GCC\s0's procedure to fix buggy system headers and
! the ordering for the include_next directive are not inadvertantly changed.
! If you really need to change the search order for system directories,
! use the \fB\-nostdinc\fR and/or \fB\-isystem\fR options.
.Ip "\fB\-I-\fR" 4
.IX Item "-I-"
Any directories you specify with \fB\-I\fR options before the \fB\-I-\fR
*************** preferred alignment to \fB\-mpreferred-s
*** 6880,6885 ****
--- 6961,6969 ----
.PD
These switches enable or disable the use of built-in functions that allow
direct access to the \s-1MMX\s0, \s-1SSE\s0 and 3Dnow extensions of the instruction set.
+ .Sp
+ To have \s-1SSE/SSE2\s0 instructions generated automatically from floating-point code,
+ see \fB\-mfpmath=sse\fR.
.Ip "\fB\-mpush-args\fR" 4
.IX Item "-mpush-args"
.PD 0
*************** by the x86\-64 \s-1ABI\s0, it is a 128\-
*** 6943,6948 ****
--- 7027,7054 ----
stack pointer that will not be modified by signal or interrupt handlers
and therefore can be used for temporary data without adjusting the stack
pointer. The flag \fB\-mno-red-zone\fR disables this red zone.
+ .Ip "\fB\-mcmodel=small\fR" 4
+ .IX Item "-mcmodel=small"
+ Generate code for the small code model: the program and its symbols must
+ be linked in the lower 2 \s-1GB\s0 of the address space. Pointers are 64 bits.
+ Programs can be statically or dynamically linked. This is the default
+ code model.
+ .Ip "\fB\-mcmodel=kernel\fR" 4
+ .IX Item "-mcmodel=kernel"
+ Generate code for the kernel code model. The kernel runs in the
+ negative 2 \s-1GB\s0 of the address space.
+ This model has to be used for Linux kernel code.
+ .Ip "\fB\-mcmodel=medium\fR" 4
+ .IX Item "-mcmodel=medium"
+ Generate code for the medium model: The program is linked in the lower 2
+ \&\s-1GB\s0 of the address space but symbols can be located anywhere in the
+ address space. Programs can be statically or dynamically linked, but
+ building of shared libraries are not supported with the medium model.
+ .Ip "\fB\-mcmodel=large\fR" 4
+ .IX Item "-mcmodel=large"
+ Generate code for the large model: This model makes no assumptions
+ about addresses and sizes of sections. Currently \s-1GCC\s0 does not implement
+ this model.
.PP
.I "\s-1HPPA\s0 Options"
.IX Subsection "HPPA Options"
*************** unwinding from asynchronous events (such
*** 8864,8876 ****
Return ``short'' \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
longer ones, rather than in registers. This convention is less
efficient, but it has the advantage of allowing intercallability between
! GCC-compiled files and files compiled with other compilers.
.Sp
The precise convention for returning structures in memory depends
on the target configuration macros.
.Sp
Short structures and unions are those whose size and alignment match
that of some integer type.
.Ip "\fB\-freg-struct-return\fR" 4
.IX Item "-freg-struct-return"
Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
--- 8970,8988 ----
Return ``short'' \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in memory like
longer ones, rather than in registers. This convention is less
efficient, but it has the advantage of allowing intercallability between
! GCC-compiled files and files compiled with other compilers, particularly
! the Portable C Compiler (pcc).
.Sp
The precise convention for returning structures in memory depends
on the target configuration macros.
.Sp
Short structures and unions are those whose size and alignment match
that of some integer type.
+ .Sp
+ \&\fBWarning:\fR code compiled with the \fB\-fpcc-struct-return\fR
+ switch is not binary compatible with code compiled with the
+ \&\fB\-freg-struct-return\fR switch.
+ Use it to conform to a non-default application binary interface.
.Ip "\fB\-freg-struct-return\fR" 4
.IX Item "-freg-struct-return"
Return \f(CW\*(C`struct\*(C'\fR and \f(CW\*(C`union\*(C'\fR values in registers when possible.
*************** standard for the target. If there is no
*** 8883,8896 ****
--- 8995,9030 ----
defaults to \fB\-fpcc-struct-return\fR, except on targets where \s-1GCC\s0 is
the principal compiler. In those cases, we can choose the standard, and
we chose the more efficient register return alternative.
+ .Sp
+ \&\fBWarning:\fR code compiled with the \fB\-freg-struct-return\fR
+ switch is not binary compatible with code compiled with the
+ \&\fB\-fpcc-struct-return\fR switch.
+ Use it to conform to a non-default application binary interface.
.Ip "\fB\-fshort-enums\fR" 4
.IX Item "-fshort-enums"
Allocate to an \f(CW\*(C`enum\*(C'\fR type only as many bytes as it needs for the
declared range of possible values. Specifically, the \f(CW\*(C`enum\*(C'\fR type
will be equivalent to the smallest integer type which has enough room.
+ .Sp
+ \&\fBWarning:\fR the \fB\-fshort-enums\fR switch causes \s-1GCC\s0 to generate
+ code that is not binary compatible with code generated without that switch.
+ Use it to conform to a non-default application binary interface.
.Ip "\fB\-fshort-double\fR" 4
.IX Item "-fshort-double"
Use the same size for \f(CW\*(C`double\*(C'\fR as for \f(CW\*(C`float\*(C'\fR.
+ .Sp
+ \&\fBWarning:\fR the \fB\-fshort-double\fR switch causes \s-1GCC\s0 to generate
+ code that is not binary compatible with code generated without that switch.
+ Use it to conform to a non-default application binary interface.
+ .Ip "\fB\-fshort-wchar\fR" 4
+ .IX Item "-fshort-wchar"
+ Override the underlying type for \fBwchar_t\fR to be \fBshort
+ unsigned int\fR instead of the default for the target. This option is
+ useful for building programs to run under \s-1WINE\s0.
+ .Sp
+ \&\fBWarning:\fR the \fB\-fshort-wchar\fR switch causes \s-1GCC\s0 to generate
+ code that is not binary compatible with code generated without that switch.
+ Use it to conform to a non-default application binary interface.
.Ip "\fB\-fshared-data\fR" 4
.IX Item "-fshared-data"
Requests that the data and non-\f(CW\*(C`const\*(C'\fR variables of this
*************** This flag does not have a negative form,
*** 9016,9024 ****
three-way choice.
.Ip "\fB\-fpack-struct\fR" 4
.IX Item "-fpack-struct"
! Pack all structure members together without holes. Usually you would
! not want to use this option, since it makes the code suboptimal, and
! the offsets of structure members won't agree with system libraries.
.Ip "\fB\-finstrument-functions\fR" 4
.IX Item "-finstrument-functions"
Generate instrumentation calls for entry and exit to functions. Just
--- 9150,9161 ----
three-way choice.
.Ip "\fB\-fpack-struct\fR" 4
.IX Item "-fpack-struct"
! Pack all structure members together without holes.
! .Sp
! \&\fBWarning:\fR the \fB\-fpack-struct\fR switch causes \s-1GCC\s0 to generate
! code that is not binary compatible with code generated without that switch.
! Additionally, it makes the code suboptimial.
! Use it to conform to a non-default application binary interface.
.Ip "\fB\-finstrument-functions\fR" 4
.IX Item "-finstrument-functions"
Generate instrumentation calls for entry and exit to functions. Just
*************** This option and its counterpart, \fB\-fn
*** 9109,9116 ****
change the way C symbols are represented in the object file. One use
is to help link with legacy assembly code.
.Sp
! Be warned that you should know what you are doing when invoking this
! option, and that not all targets provide complete support for it.
.SH "ENVIRONMENT"
.IX Header "ENVIRONMENT"
This section describes several environment variables that affect how \s-1GCC\s0
--- 9246,9255 ----
change the way C symbols are represented in the object file. One use
is to help link with legacy assembly code.
.Sp
! \&\fBWarning:\fR the \fB\-fleading-underscore\fR switch causes \s-1GCC\s0 to
! generate code that is not binary compatible with code generated without that
! switch. Use it to conform to a non-default application binary interface.
! Not all targets provide complete support for this switch.
.SH "ENVIRONMENT"
.IX Header "ENVIRONMENT"
This section describes several environment variables that affect how \s-1GCC\s0
*************** with an optional \fB\-MT\fR switch too.
*** 9281,9287 ****
This variable is the same as the environment variable
\&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR, except that
system header files are not ignored, so it implies \fB\-M\fR rather
! than \fB\-MM\fR.
.SH "BUGS"
.IX Header "BUGS"
For instructions on reporting bugs, see
--- 9420,9427 ----
This variable is the same as the environment variable
\&\fB\s-1DEPENDENCIES_OUTPUT\s0\fR, except that
system header files are not ignored, so it implies \fB\-M\fR rather
! than \fB\-MM\fR. However, the dependence on the main input file is
! omitted.
.SH "BUGS"
.IX Header "BUGS"
For instructions on reporting bugs, see
diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info gcc-3.2.1/gcc/doc/gcc.info
*** gcc-3.2/gcc/doc/gcc.info Wed Aug 14 09:36:33 2002
--- gcc-3.2.1/gcc/doc/gcc.info Tue Nov 19 18:17:12 2002
*************** funds for GNU development.
*** 35,265 ****
Indirect:
gcc.info-1: 1225
! gcc.info-2: 45738
! gcc.info-3: 76999
! gcc.info-4: 110248
! gcc.info-5: 158275
! gcc.info-6: 191512
! gcc.info-7: 237573
! gcc.info-8: 283645
! gcc.info-9: 331614
! gcc.info-10: 368281
! gcc.info-11: 417781
! gcc.info-12: 457002
! gcc.info-13: 504956
! gcc.info-14: 548787
! gcc.info-15: 598270
! gcc.info-16: 607922
! gcc.info-17: 664857
! gcc.info-18: 714098
! gcc.info-19: 762187
! gcc.info-20: 811075
! gcc.info-21: 842039
! gcc.info-22: 879727
! gcc.info-23: 948899
Tag Table:
(Indirect)
Node: Top1225
! Node: G++ and GCC2892
! Node: Standards5445
! Node: Invoking GCC12672
! Node: Option Summary16321
! Node: Overall Options37509
! Node: Invoking G++44292
! Node: C Dialect Options45738
! Node: C++ Dialect Options59465
! Node: Objective-C Dialect Options73589
! Node: Language Independent Options75212
! Node: Warning Options76999
! Node: Debugging Options110248
! Node: Optimize Options130100
! Node: Preprocessor Options158275
! Ref: -MF164857
! Node: Assembler Options177648
! Node: Link Options178015
! Ref: Link Options-Footnote-1186094
! Node: Directory Options186430
! Node: Spec Files191512
! Node: Target Options209016
! Node: Submodel Options213003
! Node: M680x0 Options214785
! Node: M68hc1x Options220792
! Node: VAX Options221972
! Node: SPARC Options222508
! Node: Convex Options231996
! Node: AMD29K Options234177
! Node: ARM Options237573
! Node: MN10200 Options250093
! Node: MN10300 Options250615
! Node: M32R/D Options251666
! Node: M88K Options254124
! Node: RS/6000 and PowerPC Options262048
! Node: RT Options281942
! Node: MIPS Options283645
! Node: i386 and x86-64 Options295326
! Node: HPPA Options308735
! Node: Intel 960 Options312811
! Node: DEC Alpha Options315753
! Node: DEC Alpha/VMS Options326769
! Node: Clipper Options327147
! Node: H8/300 Options327551
! Node: SH Options328480
! Node: System V Options330796
! Node: TMS320C3x/C4x Options331614
! Node: V850 Options337126
! Node: ARC Options339135
! Node: NS32K Options340336
! Node: AVR Options344585
! Node: MCore Options346386
! Node: IA-64 Options347530
! Node: D30V Options349918
! Node: S/390 and zSeries Options351161
! Node: CRIS Options353094
! Node: MMIX Options357128
! Node: PDP-11 Options359468
! Node: Xstormy16 Options361294
! Node: Xtensa Options361570
! Node: Code Gen Options368281
! Node: Environment Variables382460
! Ref: DEPENDENCIES_OUTPUT388777
! Node: Running Protoize389772
! Node: C Implementation396129
! Node: Translation implementation397063
! Node: Environment implementation397431
! Node: Identifiers implementation397724
! Node: Characters implementation398127
! Node: Integers implementation399984
! Node: Floating point implementation400836
! Node: Arrays and pointers implementation402685
! Ref: Arrays and pointers implementation-Footnote-1403988
! Node: Hints implementation404114
! Node: Structures unions enumerations and bit-fields implementation404543
! Node: Qualifiers implementation405352
! Node: Preprocessing directives implementation405663
! Node: Library functions implementation407280
! Node: Architecture implementation407605
! Node: Locale-specific behavior implementation408170
! Node: C Extensions408468
! Node: Statement Exprs412624
! Node: Local Labels415716
! Node: Labels as Values417781
! Ref: Labels as Values-Footnote-1419840
! Node: Nested Functions420025
! Node: Constructing Calls423864
! Node: Naming Types425951
! Node: Typeof427045
! Node: Lvalues428921
! Node: Conditionals431361
! Node: Long Long432252
! Node: Complex433751
! Node: Hex Floats436419
! Node: Zero Length437448
! Node: Variable Length440492
! Node: Variadic Macros443254
! Node: Escaped Newlines445644
! Node: Multi-line Strings446527
! Node: Subscripting447131
! Node: Pointer Arith447859
! Node: Initializers448424
! Node: Compound Literals448907
! Node: Designated Inits451070
! Node: Case Ranges454744
! Node: Cast to Union455424
! Node: Mixed Declarations456507
! Node: Function Attributes457002
! Node: Attribute Syntax478980
! Node: Function Prototypes489357
! Node: C++ Comments491150
! Node: Dollar Signs491745
! Node: Character Escapes492203
! Node: Alignment492490
! Node: Variable Attributes493810
! Node: Type Attributes504956
! Node: Inline515486
! Node: Extended Asm520195
! Node: Constraints537312
! Node: Simple Constraints538155
! Node: Multi-Alternative544644
! Node: Modifiers546355
! Node: Machine Constraints548787
! Node: Asm Labels565374
! Node: Explicit Reg Vars567050
! Node: Global Reg Vars568504
! Node: Local Reg Vars573069
! Node: Alternate Keywords574869
! Node: Incomplete Enums576556
! Node: Function Names577312
! Node: Return Address579749
! Node: Vector Extensions582328
! Node: Other Builtins585213
! Node: Target Builtins597769
! Node: X86 Built-in Functions598270
! Node: PowerPC AltiVec Built-in Functions607922
! Node: Pragmas664857
! Node: ARM Pragmas665323
! Node: Darwin Pragmas665917
! Node: Solaris Pragmas666956
! Node: Tru64 Pragmas667519
! Node: Unnamed Fields668248
! Node: C++ Extensions669319
! Node: Min and Max670880
! Node: Volatiles672286
! Node: Restricted Pointers675656
! Node: Vague Linkage677226
! Node: C++ Interface680884
! Ref: C++ Interface-Footnote-1685972
! Node: Template Instantiation686111
! Node: Bound member functions694942
! Node: C++ Attributes696493
! Node: Java Exceptions698097
! Node: Deprecated Features699494
! Node: Backwards Compatibility701460
! Node: Objective-C702808
! Node: Executing code before main703378
! Node: What you can and what you cannot do in +load706016
! Node: Type encoding708182
! Node: Garbage Collection711434
! Node: Constant string objects714098
! Node: compatibility_alias715732
! Node: Gcov716611
! Node: Gcov Intro717078
! Node: Invoking Gcov719753
! Node: Gcov and Optimization725827
! Node: Gcov Data Files727244
! Node: Trouble730809
! Node: Actual Bugs732403
! Node: Cross-Compiler Problems733311
! Node: Interoperation734821
! Node: External Bugs747408
! Node: Incompatibilities748900
! Node: Fixed Headers758508
! Node: Standard Libraries760817
! Node: Disappointments762187
! Node: C++ Misunderstandings766909
! Node: Static Definitions767635
! Node: Temporaries768682
! Node: Copy Assignment770659
! Node: Protoize Caveats772477
! Node: Non-bugs776432
! Node: Warnings and Errors786324
! Node: Bugs788084
! Node: Bug Criteria789437
! Node: Bug Lists791861
! Node: Bug Reporting792420
! Node: gccbug804523
! Node: Service805343
! Node: Contributing806089
! Node: VMS806828
! Node: Include Files and VMS807210
! Node: Global Declarations811075
! Node: VMS Misc815379
! Node: Funding819682
! Node: GNU Project822177
! Node: Copying822828
! Node: GNU Free Documentation License842039
! Node: Contributors861923
! Node: Option Index879727
! Node: Index948899
End Tag Table
--- 35,265 ----
Indirect:
gcc.info-1: 1225
! gcc.info-2: 46107
! gcc.info-3: 79111
! gcc.info-4: 112360
! gcc.info-5: 161725
! gcc.info-6: 194872
! gcc.info-7: 240933
! gcc.info-8: 287005
! gcc.info-9: 336046
! gcc.info-10: 372713
! gcc.info-11: 421741
! gcc.info-12: 463226
! gcc.info-13: 511180
! gcc.info-14: 555011
! gcc.info-15: 604494
! gcc.info-16: 614146
! gcc.info-17: 671081
! gcc.info-18: 720309
! gcc.info-19: 761821
! gcc.info-20: 805341
! gcc.info-21: 854960
! gcc.info-22: 899772
! gcc.info-23: 969741
Tag Table:
(Indirect)
Node: Top1225
! Node: G++ and GCC2933
! Node: Standards5486
! Node: Invoking GCC12722
! Node: Option Summary16371
! Node: Overall Options37798
! Node: Invoking G++44661
! Node: C Dialect Options46107
! Node: C++ Dialect Options59629
! Node: Objective-C Dialect Options75701
! Node: Language Independent Options77324
! Node: Warning Options79111
! Node: Debugging Options112360
! Node: Optimize Options131990
! Node: Preprocessor Options161725
! Ref: -MF168307
! Node: Assembler Options181098
! Node: Link Options181465
! Ref: Link Options-Footnote-1189544
! Node: Directory Options189880
! Node: Spec Files194872
! Node: Target Options212376
! Node: Submodel Options216363
! Node: M680x0 Options218145
! Node: M68hc1x Options224152
! Node: VAX Options225332
! Node: SPARC Options225868
! Node: Convex Options235356
! Node: AMD29K Options237537
! Node: ARM Options240933
! Node: MN10200 Options253453
! Node: MN10300 Options253975
! Node: M32R/D Options255026
! Node: M88K Options257484
! Node: RS/6000 and PowerPC Options265408
! Node: RT Options285302
! Node: MIPS Options287005
! Node: i386 and x86-64 Options298686
! Node: HPPA Options313167
! Node: Intel 960 Options317243
! Node: DEC Alpha Options320185
! Node: DEC Alpha/VMS Options331201
! Node: Clipper Options331579
! Node: H8/300 Options331983
! Node: SH Options332912
! Node: System V Options335228
! Node: TMS320C3x/C4x Options336046
! Node: V850 Options341558
! Node: ARC Options343567
! Node: NS32K Options344768
! Node: AVR Options349017
! Node: MCore Options350818
! Node: IA-64 Options351962
! Node: D30V Options354350
! Node: S/390 and zSeries Options355593
! Node: CRIS Options357526
! Node: MMIX Options361560
! Node: PDP-11 Options363900
! Node: Xstormy16 Options365726
! Node: Xtensa Options366002
! Node: Code Gen Options372713
! Node: Environment Variables388528
! Ref: DEPENDENCIES_OUTPUT394845
! Node: Running Protoize395905
! Node: C Implementation402262
! Node: Translation implementation403196
! Node: Environment implementation403564
! Node: Identifiers implementation403857
! Node: Characters implementation404260
! Node: Integers implementation406117
! Node: Floating point implementation406969
! Node: Arrays and pointers implementation408818
! Ref: Arrays and pointers implementation-Footnote-1410121
! Node: Hints implementation410247
! Node: Structures unions enumerations and bit-fields implementation410676
! Node: Qualifiers implementation411485
! Node: Preprocessing directives implementation411796
! Node: Library functions implementation413413
! Node: Architecture implementation413738
! Node: Locale-specific behavior implementation414303
! Node: C Extensions414601
! Node: Statement Exprs418687
! Node: Local Labels421741
! Node: Labels as Values423806
! Ref: Labels as Values-Footnote-1425865
! Node: Nested Functions426050
! Node: Constructing Calls429888
! Node: Typeof432376
! Node: Lvalues435145
! Node: Conditionals437585
! Node: Long Long438476
! Node: Complex439975
! Node: Hex Floats442643
! Node: Zero Length443672
! Node: Variable Length446716
! Node: Variadic Macros449478
! Node: Escaped Newlines451868
! Node: Multi-line Strings452751
! Node: Subscripting453355
! Node: Pointer Arith454083
! Node: Initializers454648
! Node: Compound Literals455131
! Node: Designated Inits457294
! Node: Case Ranges460968
! Node: Cast to Union461648
! Node: Mixed Declarations462731
! Node: Function Attributes463226
! Node: Attribute Syntax485204
! Node: Function Prototypes495581
! Node: C++ Comments497374
! Node: Dollar Signs497969
! Node: Character Escapes498427
! Node: Alignment498714
! Node: Variable Attributes500034
! Node: Type Attributes511180
! Node: Inline521710
! Node: Extended Asm526419
! Node: Constraints543536
! Node: Simple Constraints544379
! Node: Multi-Alternative550868
! Node: Modifiers552579
! Node: Machine Constraints555011
! Node: Asm Labels571598
! Node: Explicit Reg Vars573274
! Node: Global Reg Vars574728
! Node: Local Reg Vars579293
! Node: Alternate Keywords581093
! Node: Incomplete Enums582780
! Node: Function Names583536
! Node: Return Address585973
! Node: Vector Extensions588552
! Node: Other Builtins591437
! Node: Target Builtins603993
! Node: X86 Built-in Functions604494
! Node: PowerPC AltiVec Built-in Functions614146
! Node: Pragmas671081
! Node: ARM Pragmas671547
! Node: Darwin Pragmas672141
! Node: Solaris Pragmas673180
! Node: Tru64 Pragmas673743
! Node: Unnamed Fields674472
! Node: C++ Extensions675543
! Node: Min and Max677104
! Node: Volatiles678488
! Node: Restricted Pointers681858
! Node: Vague Linkage683428
! Node: C++ Interface687086
! Ref: C++ Interface-Footnote-1692174
! Node: Template Instantiation692313
! Node: Bound member functions701144
! Node: C++ Attributes702695
! Node: Java Exceptions704299
! Node: Deprecated Features705696
! Node: Backwards Compatibility707662
! Node: Objective-C709010
! Node: Executing code before main709589
! Node: What you can and what you cannot do in +load712227
! Node: Type encoding714393
! Node: Garbage Collection717645
! Node: Constant string objects720309
! Node: compatibility_alias721943
! Node: Compatibility722822
! Node: Gcov729409
! Node: Gcov Intro729878
! Node: Invoking Gcov732553
! Node: Gcov and Optimization738627
! Node: Gcov Data Files740044
! Node: Trouble743609
! Node: Actual Bugs745203
! Node: Cross-Compiler Problems746111
! Node: Interoperation747621
! Node: External Bugs760329
! Node: Incompatibilities761821
! Node: Fixed Headers771429
! Node: Standard Libraries773738
! Node: Disappointments775108
! Node: C++ Misunderstandings779830
! Node: Static Definitions780556
! Node: Temporaries781603
! Node: Copy Assignment783580
! Node: Protoize Caveats785398
! Node: Non-bugs789353
! Node: Warnings and Errors799245
! Node: Bugs801005
! Node: Bug Criteria802358
! Node: Bug Lists804782
! Node: Bug Reporting805341
! Node: gccbug817444
! Node: Service818264
! Node: Contributing819010
! Node: VMS819749
! Node: Include Files and VMS820131
! Node: Global Declarations823996
! Node: VMS Misc828300
! Node: Funding832603
! Node: GNU Project835098
! Node: Copying835749
! Node: GNU Free Documentation License854960
! Node: Contributors874844
! Node: Option Index899772
! Node: Index969741
End Tag Table
diff -Nrc3pad gcc-3.2/gcc/doc/gcc.info-1 gcc-3.2.1/gcc/doc/gcc.info-1
*** gcc-3.2/gcc/doc/gcc.info-1 Wed Aug 14 09:36:33 2002
--- gcc-3.2.1/gcc/doc/gcc.info-1 Tue Nov 19 18:17:12 2002
*************** front ends for new languages, are docume
*** 54,59 ****
--- 54,60 ----
* C Extensions:: GNU extensions to the C language family.
* C++ Extensions:: GNU extensions to the C++ language.
* Objective-C:: GNU Objective-C runtime features.
+ * Compatibility:: Binary Compatibility
* Gcov:: gcov: a GCC test coverage program.
* Trouble:: If you have trouble using GCC.
* Bugs:: How, why and where to report bugs.
*************** information concerning the history of C
*** 245,255 ****
There is no formal written standard for Objective-C. The most
authoritative manual is "Object-Oriented Programming and the
! Objective-C Language", available at a number of web sites;
! `http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/' has a
! recent version, while `http://www.toodarkpark.org/computers/objc/' is
! an older example. `http://www.gnustep.org' includes useful information
! as well.
*Note GNAT Reference Manual: (gnat_rm)Top, for information on
standard conformance and compatibility of the Ada compiler.
--- 246,259 ----
There is no formal written standard for Objective-C. The most
authoritative manual is "Object-Oriented Programming and the
! Objective-C Language", available at a number of web sites
!
! * `http://developer.apple.com/techpubs/macosx/Cocoa/ObjectiveC/' is
! a recent version
!
! * `http://www.toodarkpark.org/computers/objc/' is an older example
!
! * `http://www.gnustep.org' has additional useful information
*Note GNAT Reference Manual: (gnat_rm)Top, for information on
standard conformance and compatibility of the Ada compiler.
*************** are in the following sections.
*** 345,351 ****
_Overall Options_
*Note Options Controlling the Kind of Output: Overall Options.
-c -S -E -o FILE -pipe -pass-exit-codes -x LANGUAGE
! -v -### --target-help --help
_C Language Options_
*Note Options Controlling C Dialect: C Dialect Options.
--- 349,355 ----
_Overall Options_
*Note Options Controlling the Kind of Output: Overall Options.
-c -S -E -o FILE -pipe -pass-exit-codes -x LANGUAGE
! -v -### --help --target-help --version
_C Language Options_
*Note Options Controlling C Dialect: C Dialect Options.
*************** _C Language Options_
*** 356,362 ****
-fallow-single-precision -fcond-mismatch
-fsigned-bitfields -fsigned-char
-funsigned-bitfields -funsigned-char
! -fwritable-strings -fshort-wchar
_C++ Language Options_
*Note Options Controlling C++ Dialect: C++ Dialect Options.
--- 360,366 ----
-fallow-single-precision -fcond-mismatch
-fsigned-bitfields -fsigned-char
-funsigned-bitfields -funsigned-char
! -fwritable-strings
_C++ Language Options_
*Note Options Controlling C++ Dialect: C++ Dialect Options.
*************** _C++ Language Options_
*** 373,379 ****
-fno-optional-diags -fpermissive
-frepo -fno-rtti -fstats -ftemplate-depth-N
-fuse-cxa-atexit -fvtable-gc -fno-weak -nostdinc++
! -fno-default-inline -Wctor-dtor-privacy
-Wnon-virtual-dtor -Wreorder
-Weffc++ -Wno-deprecated
-Wno-non-template-friend -Wold-style-cast
--- 377,383 ----
-fno-optional-diags -fpermissive
-frepo -fno-rtti -fstats -ftemplate-depth-N
-fuse-cxa-atexit -fvtable-gc -fno-weak -nostdinc++
! -fno-default-inline -Wabi -Wctor-dtor-privacy
-Wnon-virtual-dtor -Wreorder
-Weffc++ -Wno-deprecated
-Wno-non-template-friend -Wold-style-cast
*************** _Language Independent Options_
*** 396,402 ****
_Warning Options_
*Note Options to Request or Suppress Warnings: Warning Options.
-fsyntax-only -pedantic -pedantic-errors
! -w -W -Wall -Waggregate-return
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment
-Wconversion -Wno-deprecated-declarations
-Wdisabled-optimization -Wdiv-by-zero -Werror
--- 400,406 ----
_Warning Options_
*Note Options to Request or Suppress Warnings: Warning Options.
-fsyntax-only -pedantic -pedantic-errors
! -w -W -Wall -Waggregate-return
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment
-Wconversion -Wno-deprecated-declarations
-Wdisabled-optimization -Wdiv-by-zero -Werror
*************** _Warning Options_
*** 407,413 ****
-Werror-implicit-function-declaration
-Wimport -Winline
-Wlarger-than-LEN -Wlong-long
! -Wmain -Wmissing-braces -Wmissing-declarations
-Wmissing-format-attribute -Wmissing-noreturn
-Wmultichar -Wno-format-extra-args -Wno-format-y2k
-Wno-import -Wpacked -Wpadded
--- 411,417 ----
-Werror-implicit-function-declaration
-Wimport -Winline
-Wlarger-than-LEN -Wlong-long
! -Wmain -Wmissing-braces
-Wmissing-format-attribute -Wmissing-noreturn
-Wmultichar -Wno-format-extra-args -Wno-format-y2k
-Wno-import -Wpacked -Wpadded
*************** _Warning Options_
*** 420,426 ****
-Wunused-value -Wunused-variable -Wwrite-strings
_C-only Warning Options_
! -Wbad-function-cast -Wmissing-prototypes -Wnested-externs
-Wstrict-prototypes -Wtraditional
_Debugging Options_
--- 424,431 ----
-Wunused-value -Wunused-variable -Wwrite-strings
_C-only Warning Options_
! -Wbad-function-cast -Wmissing-declarations
! -Wmissing-prototypes -Wnested-externs
-Wstrict-prototypes -Wtraditional
_Debugging Options_
*************** _Debugging Options_
*** 431,437 ****
-fdump-tree-original[-N] -fdump-tree-optimized[-N]
-fdump-tree-inlined[-N]
-fmem-report -fpretend-float
! -fprofile-arcs -ftest-coverage -ftime-report
-g -gLEVEL -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2
-ggdb -gstabs -gstabs+ -gvms -gxcoff -gxcoff+
-p -pg -print-file-name=LIBRARY -print-libgcc-file-name
--- 436,443 ----
-fdump-tree-original[-N] -fdump-tree-optimized[-N]
-fdump-tree-inlined[-N]
-fmem-report -fpretend-float
! -fprofile-arcs -fsched-verbose=N
! -ftest-coverage -ftime-report
-g -gLEVEL -gcoff -gdwarf -gdwarf-1 -gdwarf-1+ -gdwarf-2
-ggdb -gstabs -gstabs+ -gvms -gxcoff -gxcoff+
-p -pg -print-file-name=LIBRARY -print-libgcc-file-name
*************** _Optimization Options_
*** 443,448 ****
--- 449,455 ----
*Note Options that Control Optimization: Optimize Options.
-falign-functions=N -falign-jumps=N
-falign-labels=N -falign-loops=N
+ -fbounds-check
-fbranch-probabilities -fcaller-saves -fcprop-registers
-fcse-follow-jumps -fcse-skip-blocks -fdata-sections
-fdelayed-branch -fdelete-null-pointer-checks
*************** _Optimization Options_
*** 451,457 ****
-fgcse -fgcse-lm -fgcse-sm
-finline-functions -finline-limit=N -fkeep-inline-functions
-fkeep-static-consts -fmerge-constants -fmerge-all-constants
! -fmove-all-movables -fno-default-inline -fno-defer-pop
-fno-function-cse -fno-guess-branch-probability
-fno-inline -fno-math-errno -fno-peephole -fno-peephole2
-funsafe-math-optimizations -fno-trapping-math
--- 458,465 ----
-fgcse -fgcse-lm -fgcse-sm
-finline-functions -finline-limit=N -fkeep-inline-functions
-fkeep-static-consts -fmerge-constants -fmerge-all-constants
! -fmove-all-movables -fno-branch-count-reg
! -fno-default-inline -fno-defer-pop
-fno-function-cse -fno-guess-branch-probability
-fno-inline -fno-math-errno -fno-peephole -fno-peephole2
-funsafe-math-optimizations -fno-trapping-math
*************** _Optimization Options_
*** 460,468 ****
-freduce-all-givs -fregmove -frename-registers
-frerun-cse-after-loop -frerun-loop-opt
-fschedule-insns -fschedule-insns2
-fsingle-precision-constant -fssa -fssa-ccp -fssa-dce
! -fstrength-reduce -fstrict-aliasing -fthread-jumps -ftrapv
! -funroll-all-loops -funroll-loops
--param NAME=VALUE
-O -O0 -O1 -O2 -O3 -Os
--- 468,478 ----
-freduce-all-givs -fregmove -frename-registers
-frerun-cse-after-loop -frerun-loop-opt
-fschedule-insns -fschedule-insns2
+ -fno-sched-interblock -fno-sched-spec
+ -fsched-spec-load -fsched-spec-load-dangerous
-fsingle-precision-constant -fssa -fssa-ccp -fssa-dce
! -fstrength-reduce -fstrict-aliasing -fthread-jumps
! -ftrapv -funroll-all-loops -funroll-loops
--param NAME=VALUE
-O -O0 -O1 -O2 -O3 -Os
*************** _Machine Dependent Options_
*** 608,614 ****
-mno-relocatable -mrelocatable-lib -mno-relocatable-lib
-mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian
-mcall-aix -mcall-sysv -mcall-netbsd
! -maix-struct-return -msvr4-struct-return
-mabi=altivec -mabi=no-altivec
-mprototype -mno-prototype
-msim -mmvme -mads -myellowknife -memb -msdata
--- 618,624 ----
-mno-relocatable -mrelocatable-lib -mno-relocatable-lib
-mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian
-mcall-aix -mcall-sysv -mcall-netbsd
! -maix-struct-return -msvr4-struct-return
-mabi=altivec -mabi=no-altivec
-mprototype -mno-prototype
-msim -mmvme -mads -myellowknife -memb -msdata
*************** _Machine Dependent Options_
*** 642,652 ****
-mno-fp-ret-in-387 -msoft-float -msvr3-shlib
-mno-wide-multiply -mrtd -malign-double
-mpreferred-stack-boundary=NUM
! -mmmx -msse -msse2 -msse-math -m3dnow
-mthreads -mno-align-stringops -minline-all-stringops
-mpush-args -maccumulate-outgoing-args -m128bit-long-double
-m96bit-long-double -mregparm=NUM -momit-leaf-frame-pointer
-mno-red-zone
-m32 -m64
_HPPA Options_
--- 652,663 ----
-mno-fp-ret-in-387 -msoft-float -msvr3-shlib
-mno-wide-multiply -mrtd -malign-double
-mpreferred-stack-boundary=NUM
! -mmmx -msse -msse2 -m3dnow
-mthreads -mno-align-stringops -minline-all-stringops
-mpush-args -maccumulate-outgoing-args -m128bit-long-double
-m96bit-long-double -mregparm=NUM -momit-leaf-frame-pointer
-mno-red-zone
+ -mcmodel=CODE-MODEL
-m32 -m64
_HP