- - Problems building the Fortran compiler
- How to install multiple versions of GCC
- Dynamic linker is unable to find GCC libraries
- libstdc++/libio tests fail badly with --enable-shared
--- 34,44 ----
*************** disadvantages.
*** 212,225 ****
-
-
- GCC snapshots are available from the FTP server and its mirrors;
- see the GCC mirror list.
-
-
-
The host/target specific installation notes for GCC include information
--- 210,215 ----
*************** are also available at the web site.
*** 236,253 ****
Installation
-
-
- The Fortran front end can not be built with most vendor compilers;
- it must be built with GCC. As a result, you may get an error if you
- do not follow the install instructions carefully.
-
- In particular, instead of using "make" to build GCC, you should use
- "make bootstrap" if you are building a native compiler or "make cross"
- if you are building a cross compiler.
-
-
-
It may be desirable to install multiple versions of the compiler on
--- 226,231 ----
diff -Nrc3pad gcc-3.1.1/fastjar/ChangeLog gcc-3.2/fastjar/ChangeLog
*** gcc-3.1.1/fastjar/ChangeLog Thu Jul 25 23:34:19 2002
--- gcc-3.2/fastjar/ChangeLog Wed Aug 14 08:59:07 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/ChangeLog gcc-3.2/gcc/ChangeLog
*** gcc-3.1.1/gcc/ChangeLog Thu Jul 25 23:34:59 2002
--- gcc-3.2/gcc/ChangeLog Wed Aug 14 08:59:50 2002
***************
*** 1,3 ****
--- 1,96 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
+ 2002-08-08 Jakub Jelinek
+
+ * config/rs6000/rs6000.h, config/rs6000/aix.h,
+ config/rs6000/darwin.h, config/rs6000/linux64.h: Revert last
+ two patches.
+ * config/rs6000/sysv4.h: Likewise, remove #undef ADJUST_FIELD_ALIGN.
+
+ 2002-08-08 Jakub Jelinek
+
+ * config/rs6000/rs6000-protos.h (rs6000_field_alignment): Remove.
+ * config/rs6000/rs6000.c (rs6000_field_alignment): Move...
+ * config/rs6000/rs6000.h (ADJUST_FIELD_ALIGN): ...inline into the
+ macro.
+
+ 2002-08-08 Jakub Jelinek
+
+ * stor-layout.c (place_union_field): For bitfields if
+ PCC_BITFIELD_TYPE_MATTERS and TYPE_USER_ALIGN, set record's
+ TYPE_USER_ALIGN.
+
+ 2002-08-07 Jakub Jelinek
+ Richard Henderson
+
+ * stor-layout.c (place_union_field): Apply ADJUST_FIELD_ALIGN
+ to type_align when PCC_BITFIELD_TYPE_MATTERS. Only apply
+ ADJUST_FIELD_ALIGN if not DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
+ (place_field): Likewise.
+ * config/i386/i386.c (x86_field_alignment): Don't check
+ TARGET_ALIGN_DOUBLE for the second time.
+ Apply min for all MODE_INT and MODE_CLASS_INT modes.
+ * config/rs6000/rs6000.c (rs6000_field_alignment): New.
+ * config/rs6000/rs6000-protos.h (rs6000_field_alignment): New
+ prototype.
+ * config/rs6000/rs6000.h (ADJUST_FIELD_ALIGN): Define.
+ * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Remove.
+ * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Remove.
+ * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Remove.
+ * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Remove.
+ * doc/tm.texi (ADJUST_FIELD_ALIGN): Update description.
+
+ 2002-08-06 Jakub Jelinek
+
+ * config/i386/mmintrin.h (__m64): Make the type 64-bit aligned.
+
+ 2002-08-06 Jakub Jelinek
+
+ * config.gcc (*-*-linux*): Default to --enable-threads=posix if no
+ --{enable,disable}-threads is given to configure.
+ (alpha*-*-linux*, hppa*-*-linux*, i[34567]86-*-linux*,
+ x86_64-*-linux*, ia64*-*-linux*, m68k-*-linux*, mips*-*-linux*,
+ powerpc-*-linux-gnualtivec*, powerpc-*-linux*, s390-*-linux*,
+ s390x-*-linux*, sh-*-linux*, sparc-*-linux*, sparc64-*-linux*):
+ Remove thread_file setting here.
+
+ 2002-08-04 Mark Mitchell
+
+ * doc/install.texi (Installing GCC): Refer to buildstat.html,
+ rather than listing version-specific build status files.
+
+ 2002-08-04 Joseph S. Myers
+
+ * doc/include/gcc-common.texi (version-GCC): Increase to 3.2.
+
+ 2002-08-01 Benjamin Kosnik
+
+ * gcc.c: Set __GXX_ABI_VERSION to 102.
+
+ 2002-07-30 Franz Sirl
+
+ * gcc.c (cpp_unique_options): Define __GXX_ABI_VERSION, bump it to 101.
+
+ 2002-07-24 Frank van der Linden
+
+ PR optimization/7291
+ * config/i386/i386.c (ix86_expand_clrstr): Fix bzero alignment
+ problem on x86_64.
+
+ 2002-05-16 Jason Merrill
+
+ * config/mips/mips.c (mips_output_external): Don't do sdata
+ optimization for a variable with DECL_COMDAT set.
+
+ 2002-01-03 Jakub Jelinek
+
+ * c-decl.c (build_compound_literal): Set decl TREE_READONLY from TYPE.
+
+ * c-decl.c (build_compound_literal): Defer compound literal decls
+ until until file end to emit them only if they are actually used.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/NEWS gcc-3.2/gcc/NEWS
*** gcc-3.1.1/gcc/NEWS Thu Jul 25 23:50:51 2002
--- gcc-3.2/gcc/NEWS Wed Aug 14 09:31:23 2002
*************** that led to GCC 3. For information on GC
*** 5,18 ****
see ONEWS.
======================================================================
! http://gcc.gnu.org/gcc-3.1/index.html
! GCC 3.1
! May 15, 2002
The [1]GNU project and the GCC developers are pleased to announce the
! release of GCC 3.1.
GCC used to stand for the GNU C Compiler, but since the compiler
supports several other languages aside from C, it now stands for the
--- 5,18 ----
see ONEWS.
======================================================================
! http://gcc.gnu.org/gcc-3.2/index.html
! 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
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 49,61 ****
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
! Last modified 2002-07-17 [16]Valid XHTML 1.0
References
1. http://www.gnu.org/
! 2. http://gcc.gnu.org/gcc-3.1/buildstat.html
! 3. http://gcc.gnu.org/gcc-3.1/changes.html
4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
5. http://gcc.gnu.org/index.html
6. mailto:gcc@gcc.gnu.org
--- 49,61 ----
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
*************** References
*** 70,80 ****
15. mailto:gnu@gnu.org
16. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.1/changes.html
GCC 3.1 Changes, New Features, and Fixes
! Additional changes (that will be) in GCC 3.1.1
* A bug related to how structures and unions are returned has been
fixed for powerpc-*-netbsd*.
--- 70,223 ----
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.
+
+ New Languages and Language specific improvements
+
+ C++
+
+ * There are now no known differences between the C++ ABI implemented
+ in GCC and the multi-vendor standard. We believe that the ABI for
+ the C++ standard library is now stable and will not change in
+ future versions of the compiler. However, hard experience has
+ taught us to be cautious; it is possible that more problems will
+ be found. It is our intention to make changes to the ABI only if
+ 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.
+
+ 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
+
+ GCC 3.1
+
+ July 27, 2002
+
+ The [1]GNU project and the GCC developers are pleased to announce the
+ release of GCC 3.1.1.
+
+ The links below still apply to GCC 3.1.1.
+
+ May 15, 2002
+
+ The [2]GNU project and the GCC developers are pleased to announce the
+ release of GCC 3.1.
+
+ GCC used to stand for the GNU C Compiler, but since the compiler
+ supports several other languages aside from C, it now stands for the
+ GNU Compiler Collection.
+
+ 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 [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.
+
+ 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
+
+ 1. http://www.gnu.org/
+ 2. http://www.gnu.org/
+ 3. http://gcc.gnu.org/gcc-3.1/buildstat.html
+ 4. http://gcc.gnu.org/gcc-3.1/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.1/changes.html
GCC 3.1 Changes, New Features, and Fixes
! Additional changes in GCC 3.1.1
* A bug related to how structures and unions are returned has been
fixed for powerpc-*-netbsd*.
*************** Additional changes (that will be) in GCC
*** 86,96 ****
* Nested functions have been fixed for mips*-*-netbsd*.
* Some missing floating point support routines have beed added for
mips*-*-netbsd*.
Caveats
* The -traditional C compiler option has been deprecated and will be
! removed in GCC 3.2. (It remains possible to preprocess non-C code
with the traditional preprocessor.)
* The default debugging format for most ELF platforms (including
GNU/Linux and FreeBSD; notable exception is Solaris) has changed
--- 229,241 ----
* Nested functions have been fixed for mips*-*-netbsd*.
* Some missing floating point support routines have beed added for
mips*-*-netbsd*.
+ * This [1]message gives additional information about the bugs fixed
+ in this release.
Caveats
* The -traditional C compiler option has been deprecated and will be
! removed in GCC 3.3. (It remains possible to preprocess non-C code
with the traditional preprocessor.)
* The default debugging format for most ELF platforms (including
GNU/Linux and FreeBSD; notable exception is Solaris) has changed
*************** Caveats
*** 99,119 ****
General Optimizer Improvements
* Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
! and Andreas Jaeger, SuSE Labs, has contributed [1]infrastructure
for profile driven optimizations.
Options -fprofile-arcs and -fbranch-probabilities can now be used
to improve speed of the generated code by profiling the actual
program behaviour on typical runs. In the absence of profile info
the compiler attempts to guess the profile statically.
! * [2]SPEC2000 and [3]SPEC95 benchmark suites are now used daily to
monitor performance of the generated code.
According to the SPECInt2000 results on an AMD Athlon CPU, the
code generated by GCC 3.1 is 6% faster on the average (8.2% faster
with profile feedback) compared to GCC 3.0. The code produced by
GCC 3.0 is about 2.1% faster compared to 2.95.3. Tests were done
using the -O2 -march=athlon command-line options.
! * Alexandre Oliva, of [4]Red Hat, has generalized the tree inlining
! infrastructure developed by [5]CodeSourcery, LLC for the C++ front
end, so that it is now used in the C front end too. Inlining
functions as trees exposes them earlier to the compiler, giving it
more opportunities for optimization.
--- 244,264 ----
General Optimizer Improvements
* Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
! and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
for profile driven optimizations.
Options -fprofile-arcs and -fbranch-probabilities can now be used
to improve speed of the generated code by profiling the actual
program behaviour on typical runs. In the absence of profile info
the compiler attempts to guess the profile statically.
! * [3]SPEC2000 and [4]SPEC95 benchmark suites are now used daily to
monitor performance of the generated code.
According to the SPECInt2000 results on an AMD Athlon CPU, the
code generated by GCC 3.1 is 6% faster on the average (8.2% faster
with profile feedback) compared to GCC 3.0. The code produced by
GCC 3.0 is about 2.1% faster compared to 2.95.3. Tests were done
using the -O2 -march=athlon command-line options.
! * Alexandre Oliva, of [5]Red Hat, has generalized the tree inlining
! infrastructure developed by [6]CodeSourcery, LLC for the C++ front
end, so that it is now used in the C front end too. Inlining
functions as trees exposes them earlier to the compiler, giving it
more opportunities for optimization.
*************** New Languages and Language specific impr
*** 129,135 ****
C/C++
! * A few more [6]ISO C99 features.
* The preprocessor is 10-50% faster than the preprocessor in GCC
3.0.
* The preprocessor's symbol table has been merged with the symbol
--- 274,280 ----
C/C++
! * A few more [7]ISO C99 features.
* The preprocessor is 10-50% faster than the preprocessor in GCC
3.0.
* The preprocessor's symbol table has been merged with the symbol
*************** New Languages and Language specific impr
*** 192,198 ****
G++ will allocate a in the return value slot, so that the return
becomes a no-op. For this to work, all return statements in the
function must return the same variable.
! * Improvements to the C++ library are listed in [7]the libstdc++-v3
FAQ.
Objective-C
--- 337,343 ----
G++ will allocate a in the return value slot, so that the return
becomes a no-op. For this to work, all return statements in the
function must return the same variable.
! * Improvements to the C++ library are listed in [8]the libstdc++-v3
FAQ.
Objective-C
*************** New Languages and Language specific impr
*** 246,256 ****
Fortran
! Fortran improvements are listed in [8]the Fortran documentation.
Ada
! [9]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
end and associated tools. The GNAT compiler fully implements the Ada
language as defined by the ISO/IEC 8652 standard.
--- 391,401 ----
Fortran
! Fortran improvements are listed in [9]the Fortran documentation.
Ada
! [10]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
end and associated tools. The GNAT compiler fully implements the Ada
language as defined by the ISO/IEC 8652 standard.
*************** New Languages and Language specific impr
*** 259,282 ****
New Targets and Target Specific Improvements
! * Hans-Peter Nilsson has contributed a port to [10]MMIX, the CPU
architecture used in new editions of Donald E. Knuth's The Art of
Computer Programming.
! * [11]Axis Communications has contributed its port to the CRIS CPU
architecture, used in the ETRAX system-on-a-chip series. See
! [12]Axis' developer site for technical information.
! * Alexandre Oliva, of [13]Red Hat, has contributed a port to the
! [14]SuperH SH5 64-bit RISC microprocessor architecture, extending
the existing SH port.
* UltraSPARC is fully supported in 64-bit mode. The option -m64
enables it.
* For compatibility with the Sun compiler #pragma redefine_extname
has been implemented on Solaris.
* The x86 back end has had some noticeable work done to it.
! + [15]SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
Jaeger have contributed a port to the AMD x86-64
architecture. For more information on x86-64 see
! [16]http://www.x86-64.org.
+ The compiler now supports MMX, 3DNow!, SSE, and SSE2
instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
enable the respective instruction sets. Intel C++ compatible
--- 404,427 ----
New Targets and Target Specific Improvements
! * Hans-Peter Nilsson has contributed a port to [11]MMIX, the CPU
architecture used in new editions of Donald E. Knuth's The Art of
Computer Programming.
! * [12]Axis Communications has contributed its port to the CRIS CPU
architecture, used in the ETRAX system-on-a-chip series. See
! [13]Axis' developer site for technical information.
! * Alexandre Oliva, of [14]Red Hat, has contributed a port to the
! [15]SuperH SH5 64-bit RISC microprocessor architecture, extending
the existing SH port.
* UltraSPARC is fully supported in 64-bit mode. The option -m64
enables it.
* For compatibility with the Sun compiler #pragma redefine_extname
has been implemented on Solaris.
* The x86 back end has had some noticeable work done to it.
! + [16]SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
Jaeger have contributed a port to the AMD x86-64
architecture. For more information on x86-64 see
! [17]http://www.x86-64.org.
+ The compiler now supports MMX, 3DNow!, SSE, and SSE2
instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
enable the respective instruction sets. Intel C++ compatible
*************** New Targets and Target Specific Improvem
*** 299,305 ****
applications.
* The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
* C++ support for AIX has been improved.
! * Aldy Hernandez, of [17]Red Hat, Inc has contributed extensions to
the PowerPC port supporting the AltiVec programming model (SIMD).
The support, though presently useful, is experimental and is
expected to stabilize for 3.2. The support is written to conform
--- 444,450 ----
applications.
* The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
* C++ support for AIX has been improved.
! * Aldy Hernandez, of [18]Red Hat, Inc has contributed extensions to
the PowerPC port supporting the AltiVec programming model (SIMD).
The support, though presently useful, is experimental and is
expected to stabilize for 3.2. The support is written to conform
*************** Documentation improvements
*** 393,406 ****
* Many cleanups and improvements in general.
_________________________________________________________________
! Please send FSF & GNU inquiries & questions to [18]gnu@gnu.org. There
! are also [19]other ways to contact the FSF.
! 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.
--- 538,551 ----
* Many cleanups and improvements in general.
_________________________________________________________________
! Please send FSF & GNU inquiries & questions to [19]gnu@gnu.org. There
! are also [20]other ways to contact the FSF.
! 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.
*************** Documentation improvements
*** 408,441 ****
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
! 1. http://gcc.gnu.org/news/profiledriven.html
! 2. http://www.suse.de/~aj/SPEC/
! 3. http://people.redhat.com/dnovillo/SPEC/
! 4. http://www.redhat.com/
! 5. http://www.codesourcery.com/
! 6. http://gcc.gnu.org/gcc-3.1/c99status.html
! 7. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_1
! 8. http://gcc.gnu.org/onlinedocs/g77_news.html
! 9. http://www.gnat.com/
! 10. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
! 11. http://www.axis.com/
! 12. http://developer.axis.com/
! 13. http://www.redhat.com/
! 14. http://www.superh.com/
! 15. http://www.suse.com/
! 16. http://www.x86-64.org/
! 17. http://www.redhat.com/
! 18. mailto:gnu@gnu.org
! 19. http://www.gnu.org/home.html#ContactInfo
! 20. http://gcc.gnu.org/about.html
! 21. mailto:gcc@gnu.org
! 22. mailto:gcc@gcc.gnu.org
! 23. mailto:gnu@gnu.org
! 24. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
--- 553,587 ----
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
! 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
! 2. http://gcc.gnu.org/news/profiledriven.html
! 3. http://www.suse.de/~aj/SPEC/
! 4. http://people.redhat.com/dnovillo/SPEC/
! 5. http://www.redhat.com/
! 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/
! 13. http://developer.axis.com/
! 14. http://www.redhat.com/
! 15. http://www.superh.com/
! 16. http://www.suse.com/
! 17. http://www.x86-64.org/
! 18. http://www.redhat.com/
! 19. mailto:gnu@gnu.org
! 20. http://www.gnu.org/home.html#ContactInfo
! 21. http://gcc.gnu.org/about.html
! 22. mailto:gcc@gnu.org
! 23. mailto:gcc@gcc.gnu.org
! 24. mailto:gnu@gnu.org
! 25. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 724,729 ****
--- 870,880 ----
GCC 3.0 Caveats
+ * -fstrict-aliasing is now part of -O2 and higher optimization
+ levels. This allows the compiler to assume the strictest aliasing
+ rules applicable to the language being compiled. For C and C++,
+ this activates optimizations based on the type of expressions.
+ This optimization may thus break old, non-compliant code.
* Enumerations are now properly promoted to int in function
parameters and function returns. Normally this change is not
visible, but when using -fshort-enums this is an ABI change.
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 768,774 ****
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
--- 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
diff -Nrc3pad gcc-3.1.1/gcc/ada/ChangeLog gcc-3.2/gcc/ada/ChangeLog
*** gcc-3.1.1/gcc/ada/ChangeLog Thu Jul 25 23:34:51 2002
--- gcc-3.2/gcc/ada/ChangeLog Wed Aug 14 08:59:09 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/ada/gnatvsn.ads gcc-3.2/gcc/ada/gnatvsn.ads
*** gcc-3.1.1/gcc/ada/gnatvsn.ads Thu Jul 25 23:40:33 2002
--- gcc-3.2/gcc/ada/gnatvsn.ads Wed Aug 14 09:01:19 2002
***************
*** 6,12 ****
-- --
-- S p e c --
-- --
! -- $Revision: 1.2.12.63 $
-- --
-- Copyright (C) 1992-2002 Free Software Foundation, Inc. --
-- --
--- 6,12 ----
-- --
-- S p e c --
-- --
! -- $Revision: 1.2.12.65.2.20 $
-- --
-- Copyright (C) 1992-2002 Free Software Foundation, Inc. --
-- --
***************
*** 38,44 ****
package Gnatvsn is
! Gnat_Version_String : constant String := "3.1.1 20020725 (release)";
-- Version output when GNAT (compiler), or its related tools, including
-- GNATBIND, GNATCHOP, GNATFIND, GNATLINK, GNATMAKE, GNATXREF, are run
-- (with appropriate verbose option switch set).
--- 38,44 ----
package Gnatvsn is
! Gnat_Version_String : constant String := "3.2 20020814 (release)";
-- Version output when GNAT (compiler), or its related tools, including
-- GNATBIND, GNATCHOP, GNATFIND, GNATLINK, GNATMAKE, GNATXREF, are run
-- (with appropriate verbose option switch set).
diff -Nrc3pad gcc-3.1.1/gcc/c-decl.c gcc-3.2/gcc/c-decl.c
*** gcc-3.1.1/gcc/c-decl.c Mon Jun 10 21:53:37 2002
--- gcc-3.2/gcc/c-decl.c Fri Jul 26 23:23:03 2002
*************** build_compound_literal (type, init)
*** 3911,3916 ****
--- 3911,3917 ----
DECL_CONTEXT (decl) = current_function_decl;
TREE_USED (decl) = 1;
TREE_TYPE (decl) = type;
+ TREE_READONLY (decl) = TREE_READONLY (type);
store_init_value (decl, init);
if (TREE_CODE (type) == ARRAY_TYPE && !COMPLETE_TYPE_P (type))
*************** build_compound_literal (type, init)
*** 3933,3944 ****
if (TREE_STATIC (decl))
{
/* This decl needs a name for the assembler output. We also need
! a unique suffix to be added to the name, for which DECL_CONTEXT
! must be set. */
! DECL_NAME (decl) = get_identifier ("__compound_literal");
! DECL_CONTEXT (decl) = complit;
rest_of_decl_compilation (decl, NULL, 1, 0);
- DECL_CONTEXT (decl) = NULL_TREE;
}
return complit;
--- 3934,3951 ----
if (TREE_STATIC (decl))
{
/* This decl needs a name for the assembler output. We also need
! a unique suffix to be added to the name. */
! char *name;
! extern int var_labelno;
!
! ASM_FORMAT_PRIVATE_NAME (name, "__compound_literal", var_labelno);
! var_labelno++;
! DECL_NAME (decl) = get_identifier (name);
! DECL_DEFER_OUTPUT (decl) = 1;
! DECL_COMDAT (decl) = 1;
! DECL_ARTIFICIAL (decl) = 1;
! pushdecl (decl);
rest_of_decl_compilation (decl, NULL, 1, 0);
}
return complit;
diff -Nrc3pad gcc-3.1.1/gcc/config/i386/i386.c gcc-3.2/gcc/config/i386/i386.c
*** gcc-3.1.1/gcc/config/i386/i386.c Mon Jul 15 06:54:35 2002
--- gcc-3.2/gcc/config/i386/i386.c Wed Aug 7 18:10:57 2002
*************** ix86_expand_clrstr (src, count_exp, alig
*** 9505,9511 ****
gen_rtx_SUBREG (SImode, zeroreg, 0)));
if (TARGET_64BIT && (align <= 4 || count == 0))
{
! rtx label = ix86_expand_aligntest (countreg, 2);
emit_insn (gen_strsetsi (destreg,
gen_rtx_SUBREG (SImode, zeroreg, 0)));
emit_label (label);
--- 9505,9511 ----
gen_rtx_SUBREG (SImode, zeroreg, 0)));
if (TARGET_64BIT && (align <= 4 || count == 0))
{
! rtx label = ix86_expand_aligntest (countreg, 4);
emit_insn (gen_strsetsi (destreg,
gen_rtx_SUBREG (SImode, zeroreg, 0)));
emit_label (label);
*************** x86_field_alignment (field, computed)
*** 12640,12653 ****
int computed;
{
enum machine_mode mode;
! if (TARGET_64BIT || DECL_USER_ALIGN (field) || TARGET_ALIGN_DOUBLE)
return computed;
! mode = TYPE_MODE (TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE
! ? get_inner_array_type (field) : TREE_TYPE (field));
! if ((mode == DFmode || mode == DCmode
! || mode == DImode || mode == CDImode)
! && !TARGET_ALIGN_DOUBLE)
return MIN (32, computed);
return computed;
}
-
--- 12640,12654 ----
int computed;
{
enum machine_mode mode;
! tree type = TREE_TYPE (field);
!
! if (TARGET_64BIT || TARGET_ALIGN_DOUBLE)
return computed;
! mode = TYPE_MODE (TREE_CODE (type) == ARRAY_TYPE
! ? get_inner_array_type (type) : type);
! if (mode == DFmode || mode == DCmode
! || GET_MODE_CLASS (mode) == MODE_INT
! || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT)
return MIN (32, computed);
return computed;
}
diff -Nrc3pad gcc-3.1.1/gcc/config/i386/mmintrin.h gcc-3.2/gcc/config/i386/mmintrin.h
*** gcc-3.1.1/gcc/config/i386/mmintrin.h Sat Jan 12 07:38:49 2002
--- gcc-3.2/gcc/config/i386/mmintrin.h Tue Aug 6 18:30:43 2002
***************
*** 31,37 ****
#define _MMINTRIN_H_INCLUDED
/* The data type intended for user use. */
! typedef unsigned long long __m64;
/* 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 unsigned long long __m64 __attribute__ ((__aligned__ (8)));
/* Internal data types for implementing the intrinsics. */
typedef int __v2si __attribute__ ((__mode__ (__V2SI__)));
diff -Nrc3pad gcc-3.1.1/gcc/config/mips/mips.c gcc-3.2/gcc/config/mips/mips.c
*** gcc-3.1.1/gcc/config/mips/mips.c Wed Jun 12 18:04:11 2002
--- gcc-3.2/gcc/config/mips/mips.c Fri Jul 26 23:23:02 2002
*************** mips_output_external (file, decl, name)
*** 5854,5859 ****
--- 5854,5860 ----
if (TARGET_GP_OPT
&& TREE_CODE (decl) != FUNCTION_DECL
+ && !DECL_COMDAT (decl)
&& (len = int_size_in_bytes (TREE_TYPE (decl))) > 0
&& ((section_name = DECL_SECTION_NAME (decl)) == NULL
|| strcmp (TREE_STRING_POINTER (section_name), ".sbss") == 0
diff -Nrc3pad gcc-3.1.1/gcc/config/rs6000/sysv4.h gcc-3.2/gcc/config/rs6000/sysv4.h
*** gcc-3.1.1/gcc/config/rs6000/sysv4.h Mon Apr 15 20:27:39 2002
--- gcc-3.2/gcc/config/rs6000/sysv4.h Thu Aug 8 17:52:40 2002
*************** do { \
*** 403,409 ****
: MAX (COMPUTED, SPECIFIED))
#undef BIGGEST_FIELD_ALIGNMENT
- #undef ADJUST_FIELD_ALIGN
/* Use ELF style section commands. */
--- 403,408 ----
diff -Nrc3pad gcc-3.1.1/gcc/config.gcc gcc-3.2/gcc/config.gcc
*** gcc-3.1.1/gcc/config.gcc Fri Jun 7 23:35:31 2002
--- gcc-3.2/gcc/config.gcc Tue Aug 6 15:20:55 2002
*************** esac
*** 365,370 ****
--- 365,380 ----
case $machine in
*-*-linux*)
xm_defines=POSIX
+ case $machine in
+ *-*-linux*ecoff* | *-*-linux*libc1* | *-*-linux*oldld* | *-*-linux*aout*)
+ ;;
+ *)
+ case x${enable_threads} in
+ x | xyes | xposix) thread_file='posix'
+ ;;
+ esac
+ ;;
+ esac
;;
*-*-gnu*)
# On the Hurd, the setup is just about the same on
*************** alpha*-*-linux*)
*** 558,566 ****
tmake_file="t-slibgcc-elf-ver t-linux alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
gas=yes gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
alpha*-*-freebsd*)
tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"
--- 568,573 ----
*************** hppa*-*-linux* | parisc*-*-linux*)
*** 871,879 ****
tmake_file="t-slibgcc-elf-ver t-linux pa/t-linux"
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gas=yes gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
hppa*-*-openbsd*)
target_cpu_default="MASK_PA_11"
--- 878,883 ----
*************** i370-*-linux*)
*** 1117,1125 ****
gnu_ld=yes
gas=yes
elf=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
i[34567]86-*-chorusos*)
xm_defines=POSIX
--- 1121,1126 ----
*************** i[34567]86-*-linux*) # Intel 80386's run
*** 1316,1324 ****
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gnu_ld=yes
float_format=i386
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
x86_64-*-linux*)
tm_file="${tm_file} i386/att.h dbxelf.h elfos.h svr4.h linux.h \
--- 1317,1322 ----
*************** x86_64-*-linux*)
*** 1327,1335 ****
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gnu_ld=yes
float_format=i386
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
i[34567]86-*-gnu*)
float_format=i386
--- 1325,1330 ----
*************** ia64*-*-linux*)
*** 1705,1713 ****
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
tmake_file="t-slibgcc-elf-ver t-linux ia64/t-ia64 ia64/t-glibc"
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
float_format=i386
;;
ia64*-*-hpux*)
--- 1700,1705 ----
*************** m68k-*-linux*) # Motorola m68k's runnin
*** 2098,2106 ****
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
float_format=m68k
gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
m68k-*-psos*)
tmake_file=m68k/t-m68kbare
--- 2090,2095 ----
*************** mips*-*-linux*) # Linux MIPS, either
*** 2397,2405 ****
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gnu_ld=yes
gas=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
mips*el-*-openbsd*) # mips little endian
target_cpu_default="MASK_GAS|MASK_ABICALLS"
--- 2386,2391 ----
*************** powerpc-*-linux-gnualtivec*)
*** 2867,2883 ****
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
out_file=rs6000/rs6000.c
tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
powerpc-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
out_file=rs6000/rs6000.c
tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
powerpc-*-gnu-gnualtivec*)
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
--- 2853,2863 ----
*************** s390-*-linux*)
*** 2993,3001 ****
tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
tmake_file="t-slibgcc-elf-ver t-linux s390/t-linux"
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
s390x-*-linux*)
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
--- 2973,2978 ----
*************** s390x-*-linux*)
*** 3004,3012 ****
out_file=s390/s390.c
tmake_file="t-slibgcc-elf-ver t-linux s390/t-linux s390/t-linux64"
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
sh-*-elf*)
tmake_file="sh/t-sh sh/t-elf"
--- 2981,2986 ----
*************** sh-*-linux*)
*** 3045,3053 ****
tm_file="${tm_file} sh/elf.h sh/linux.h"
tmake_file="sh/t-sh sh/t-elf sh/t-linux"
gas=yes gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
float_format=sh
;;
sh-*-*)
--- 3019,3024 ----
*************** sparc-*-linux*) # Sparc's running GNU/L
*** 3131,3139 ****
tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm"
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
float_format=sparc
;;
sparc-*-lynxos*)
--- 3102,3107 ----
*************** sparc64-*-linux*) # 64-bit Sparc's runn
*** 3332,3340 ****
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
float_format=sparc
;;
sparc64-*-netbsd*)
--- 3300,3305 ----
*************** xtensa-*-linux*)
*** 3464,3472 ****
tmake_file="t-linux xtensa/t-xtensa"
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
gas=yes gnu_ld=yes
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
;;
*)
echo "Configuration $machine not supported" 1>&2
--- 3429,3434 ----
diff -Nrc3pad gcc-3.1.1/gcc/cp/ChangeLog gcc-3.2/gcc/cp/ChangeLog
*** gcc-3.1.1/gcc/cp/ChangeLog Thu Jul 25 23:35:12 2002
--- gcc-3.2/gcc/cp/ChangeLog Wed Aug 14 09:00:06 2002
***************
*** 1,3 ****
--- 1,93 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
+ 2002-08-03 Nathan Sidwell
+
+ PR 7470.
+ C++ ABI change - vfunc ordering.
+ * class.c (add_virtual_function): Remove.
+ (dfs_modify_all_vtables): Take list of all declared
+ virtuals. Assign all that are not in primary base.
+ (check_for_override): Adjust comments.
+ (create_vtable_ptr): Take single list of virtuals. Build chain
+ of declared virtuals here.
+ (layout_class_type): Take single list of virtuals. Adjust.
+ (finish_struct_1): Keep virtuals on single list. Adjust.
+
+ 2002-07-30 Franz Sirl
+
+ * lang-specs.h: Remove __GXX_ABI_VERSION, moved to gcc.c.
+
+ 2002-07-17 Scott Snyder
+
+ PR c++/7320
+ * rtti.c (get_tinfo_decl): Set DECL_COMDAT.
+
+ 2002-07-05 Nathan Sidwell
+
+ Repair damage on weak-impared targets caused by my previous patch.
+ * cp-tree.h (import_export_tinfo): Add parameter.
+ * decl2.c (import_export_tinfo): Add parameter, post adjust
+ DECL_COMDAT.
+ * rtti.c (emit_tinfo_decl): DECL_COMDAT is (nearly) always setup by
+ import_export_tinfo.
+
+ 2002-06-30 Nathan Sidwell
+
+ * cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
+ (CPTI_TYPE_INFO_PTR_TYPE): ... this.
+ (tinfo_decl_type): Replace with ...
+ (type_info_ptr_type): ... this.
+ (import_export_tinfo): Declare.
+ (tinfo_decl_p): Rename to ...
+ (unemitted_tinfo_decl_p): ... this.
+ * decl2.c (import_export_decl): Break out tinfo handling into ...
+ (import_export_tinfo): ... here. New function.
+ (finish_file): Adjust.
+ * rtti.c (TINFO_REAL_NAME): New macro.
+ (init_rtti_processing): Create the tinfo types.
+ (get_tinfo_decl_dynamic): Use type_info_ptr_type, get_tinfo_ptr.
+ (get_tinfo_decl): Adjust.
+ (get_tinfo_ptr): New function.
+ (get_type_id): Use it.
+ (tinfo_base_init): Create vtable decl here, if it doesn't exist.
+ (ptr_initializer): Use get_tinfo_ptr.
+ (ptm_initializer): Likewise.
+ (synthesize_tinfo_var): Break into ...
+ (get_pseudo_ti_init): ... this. Just create the initializer.
+ (get_pseudo_ti_desc): .. and this.
+ (create_real_tinfo_var): Remove.
+ (create_pseudo_type_info): Don't create the vtable decl here.
+ (get_vmi_pseudo_type_info): Remove.
+ (create_tinfo_types): Adjust.
+ (tinfo_decl_p): Rename to ...
+ (unemitted_tinfo_decl_p): ... here. Adjust.
+ (emit_tinfo_decl): Adjust. Create the initializer.
+
+ 2002-06-14 Jason Merrill
+
+ C++ ABI changes.
+ * class.c (build_base_field): Set DECL_PACKED.
+ (layout_class_type): Don't use tail padding of PODs.
+ * mangle.c (write_unqualified_name): Fix template conversion op
+ mangling.
+
+ 2002-05-18 Jason Merrill
+
+ PR c++/6611
+ * decl2.c (import_export_decl): If we clear
+ DECL_NOT_REALLY_EXTERN, make sure DECL_EXTERNAL is set.
+
+ 2002-05-14 Jason Merrill
+
+ * rtti.c (get_tinfo_decl): Don't call comdat_linkage.
+ Do set DECL_COMDAT.
+ (synthesize_tinfo_var): Take the public decl.
+ (create_real_tinfo_var): Likewise. Check DECL_COMDAT.
+ (emit_tinfo_decl): Adjust. Call import_export_decl.
+ * decl2.c (import_export_decl): Simplify tinfo decl handling.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/cp/class.c gcc-3.2/gcc/cp/class.c
*** gcc-3.1.1/gcc/cp/class.c Fri Jul 12 07:55:28 2002
--- gcc-3.2/gcc/cp/class.c Sun Aug 4 13:09:31 2002
*************** static int build_primary_vtable PARAMS (
*** 114,120 ****
static int build_secondary_vtable PARAMS ((tree, tree));
static void finish_vtbls PARAMS ((tree));
static void modify_vtable_entry PARAMS ((tree, tree, tree, tree, tree *));
- static void add_virtual_function PARAMS ((tree *, tree *, int *, tree, tree));
static tree delete_duplicate_fields_1 PARAMS ((tree, tree));
static void delete_duplicate_fields PARAMS ((tree));
static void finish_struct_bits PARAMS ((tree));
--- 114,119 ----
*************** static void check_methods PARAMS ((tree)
*** 150,157 ****
static void remove_zero_width_bit_fields PARAMS ((tree));
static void check_bases PARAMS ((tree, int *, int *, int *));
static void check_bases_and_members PARAMS ((tree, int *));
! static tree create_vtable_ptr PARAMS ((tree, int *, int *, tree *, tree *));
! static void layout_class_type PARAMS ((tree, int *, int *, tree *, tree *));
static void fixup_pending_inline PARAMS ((tree));
static void fixup_inline_methods PARAMS ((tree));
static void set_primary_base PARAMS ((tree, tree, int *));
--- 149,156 ----
static void remove_zero_width_bit_fields PARAMS ((tree));
static void check_bases PARAMS ((tree, int *, int *, int *));
static void check_bases_and_members PARAMS ((tree, int *));
! static tree create_vtable_ptr PARAMS ((tree, int *, int *, tree *));
! static void layout_class_type PARAMS ((tree, int *, int *, tree *));
static void fixup_pending_inline PARAMS ((tree));
static void fixup_inline_methods PARAMS ((tree));
static void set_primary_base PARAMS ((tree, tree, int *));
*************** set_vindex (decl, vfuns_p)
*** 792,852 ****
? TARGET_VTABLE_USES_DESCRIPTORS : 1);
DECL_VINDEX (decl) = build_shared_int_cst (vindex);
}
-
- /* Add a virtual function to all the appropriate vtables for the class
- T. DECL_VINDEX(X) should be error_mark_node, if we want to
- allocate a new slot in our table. If it is error_mark_node, we
- know that no other function from another vtable is overridden by X.
- VFUNS_P keeps track of how many virtuals there are in our
- main vtable for the type, and we build upon the NEW_VIRTUALS list
- and return it. */
-
- static void
- add_virtual_function (new_virtuals_p, overridden_virtuals_p,
- vfuns_p, fndecl, t)
- tree *new_virtuals_p;
- tree *overridden_virtuals_p;
- int *vfuns_p;
- tree fndecl;
- tree t; /* Structure type. */
- {
- tree new_virtual;
-
- /* If this function doesn't override anything from a base class, we
- can just assign it a new DECL_VINDEX now. Otherwise, if it does
- override something, we keep it around and assign its DECL_VINDEX
- later, in modify_all_vtables. */
- if (TREE_CODE (DECL_VINDEX (fndecl)) == INTEGER_CST)
- /* We've already dealt with this function. */
- return;
-
- new_virtual = make_node (TREE_LIST);
- BV_FN (new_virtual) = fndecl;
- BV_DELTA (new_virtual) = integer_zero_node;
-
- if (DECL_VINDEX (fndecl) == error_mark_node)
- {
- /* FNDECL is a new virtual function; it doesn't override any
- virtual function in a base class. */
-
- /* We remember that this was the base sub-object for rtti. */
- CLASSTYPE_RTTI (t) = t;
-
- /* Now assign virtual dispatch information. */
- set_vindex (fndecl, vfuns_p);
- DECL_VIRTUAL_CONTEXT (fndecl) = t;
-
- /* Save the state we've computed on the NEW_VIRTUALS list. */
- TREE_CHAIN (new_virtual) = *new_virtuals_p;
- *new_virtuals_p = new_virtual;
- }
- else
- {
- /* FNDECL overrides a function from a base class. */
- TREE_CHAIN (new_virtual) = *overridden_virtuals_p;
- *overridden_virtuals_p = new_virtual;
- }
- }
/* Add method METHOD to class TYPE. If ERROR_P is true, we are adding
the method after the class has already been defined because a
--- 791,796 ----
*************** dfs_modify_vtables (binfo, data)
*** 2632,2649 ****
/* Update all of the primary and secondary vtables for T. Create new
vtables as required, and initialize their RTTI information. Each
! of the functions in OVERRIDDEN_VIRTUALS overrides a virtual
! function from a base class; find and modify the appropriate entries
! to point to the overriding functions. Returns a list, in
! declaration order, of the functions that are overridden in this
! class, but do not appear in the primary base class vtable, and
! which should therefore be appended to the end of the vtable for T. */
static tree
! modify_all_vtables (t, vfuns_p, overridden_virtuals)
tree t;
int *vfuns_p;
! tree overridden_virtuals;
{
tree binfo = TYPE_BINFO (t);
tree *fnsp;
--- 2576,2593 ----
/* Update all of the primary and secondary vtables for T. Create new
vtables as required, and initialize their RTTI information. Each
! of the functions in VIRTUALS is declared in T and may override a
! virtual function from a base class; find and modify the appropriate
! entries to point to the overriding functions. Returns a list, in
! declaration order, of the virtual functions that are declared in T,
! but do not appear in the primary base class vtable, and which
! should therefore be appended to the end of the vtable for T. */
static tree
! modify_all_vtables (t, vfuns_p, virtuals)
tree t;
int *vfuns_p;
! tree virtuals;
{
tree binfo = TYPE_BINFO (t);
tree *fnsp;
*************** modify_all_vtables (t, vfuns_p, overridd
*** 2655,2668 ****
t);
dfs_walk (binfo, dfs_unmark, dfs_marked_real_bases_queue_p, t);
! /* Include overriding functions for secondary vtables in our primary
! vtable. */
! for (fnsp = &overridden_virtuals; *fnsp; )
{
tree fn = TREE_VALUE (*fnsp);
! if (!BINFO_VIRTUALS (binfo)
! || !value_member (fn, BINFO_VIRTUALS (binfo)))
{
/* Set the vtable index. */
set_vindex (fn, vfuns_p);
--- 2599,2614 ----
t);
dfs_walk (binfo, dfs_unmark, dfs_marked_real_bases_queue_p, t);
! /* Add virtual functions not already in our primary vtable. These
! will be both those introduced by this class, and those overridden
! from secondary bases. It does not include virtuals merely
! inherited from secondary bases. */
! for (fnsp = &virtuals; *fnsp; )
{
tree fn = TREE_VALUE (*fnsp);
! if (!value_member (fn, BINFO_VIRTUALS (binfo))
! || DECL_VINDEX (fn) == error_mark_node)
{
/* Set the vtable index. */
set_vindex (fn, vfuns_p);
*************** modify_all_vtables (t, vfuns_p, overridd
*** 2675,2682 ****
BV_DELTA (*fnsp) = integer_zero_node;
BV_VCALL_INDEX (*fnsp) = NULL_TREE;
! /* This is an overridden function not already in our
! vtable. Keep it. */
fnsp = &TREE_CHAIN (*fnsp);
}
else
--- 2621,2627 ----
BV_DELTA (*fnsp) = integer_zero_node;
BV_VCALL_INDEX (*fnsp) = NULL_TREE;
! /* This is a function not already in our vtable. Keep it. */
fnsp = &TREE_CHAIN (*fnsp);
}
else
*************** modify_all_vtables (t, vfuns_p, overridd
*** 2684,2690 ****
*fnsp = TREE_CHAIN (*fnsp);
}
! return overridden_virtuals;
}
/* Here, we already know that they match in every respect.
--- 2629,2635 ----
*fnsp = TREE_CHAIN (*fnsp);
}
! return virtuals;
}
/* Here, we already know that they match in every respect.
*************** check_for_override (decl, ctype)
*** 2754,2769 ****
|| IDENTIFIER_VIRTUAL_P (DECL_NAME (decl)))
&& look_for_overrides (ctype, decl)
&& !DECL_STATIC_FUNCTION_P (decl))
! {
! /* Set DECL_VINDEX to a value that is neither an
! INTEGER_CST nor the error_mark_node so that
! add_virtual_function will realize this is an
! overriding function. */
! DECL_VINDEX (decl) = decl;
! }
if (DECL_VIRTUAL_P (decl))
{
! if (DECL_VINDEX (decl) == NULL_TREE)
DECL_VINDEX (decl) = error_mark_node;
IDENTIFIER_VIRTUAL_P (DECL_NAME (decl)) = 1;
}
--- 2699,2712 ----
|| IDENTIFIER_VIRTUAL_P (DECL_NAME (decl)))
&& look_for_overrides (ctype, decl)
&& !DECL_STATIC_FUNCTION_P (decl))
! /* Set DECL_VINDEX to a value that is neither an INTEGER_CST nor
! the error_mark_node so that we know it is an overriding
! function. */
! DECL_VINDEX (decl) = decl;
!
if (DECL_VIRTUAL_P (decl))
{
! if (!DECL_VINDEX (decl))
DECL_VINDEX (decl) = error_mark_node;
IDENTIFIER_VIRTUAL_P (DECL_NAME (decl)) = 1;
}
*************** build_base_field (rli, binfo, empty_p, o
*** 3830,3835 ****
--- 3773,3780 ----
DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype);
DECL_ALIGN (decl) = CLASSTYPE_ALIGN (basetype);
DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype);
+ /* Tell the backend not to round up to TYPE_ALIGN. */
+ DECL_PACKED (decl) = 1;
if (!integer_zerop (DECL_SIZE (decl)))
{
*************** check_bases_and_members (t, empty_p)
*** 4383,4413 ****
accordingly. If a new vfield was created (because T doesn't have a
primary base class), then the newly created field is returned. It
is not added to the TYPE_FIELDS list; it is the caller's
! responsibility to do that. */
static tree
! create_vtable_ptr (t, empty_p, vfuns_p,
! new_virtuals_p, overridden_virtuals_p)
tree t;
int *empty_p;
int *vfuns_p;
! tree *new_virtuals_p;
! tree *overridden_virtuals_p;
{
tree fn;
! /* Loop over the virtual functions, adding them to our various
! vtables. */
for (fn = TYPE_METHODS (t); fn; fn = TREE_CHAIN (fn))
! if (DECL_VINDEX (fn) && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (fn))
! add_virtual_function (new_virtuals_p, overridden_virtuals_p,
! vfuns_p, fn, t);
/* If we couldn't find an appropriate base class, create a new field
here. Even if there weren't any new virtual functions, we might need a
new virtual function table if we're supposed to include vptrs in
all classes that need them. */
! if (!TYPE_VFIELD (t) && (*vfuns_p || TYPE_CONTAINS_VPTR_P (t)))
{
/* We build this decl with vtbl_ptr_type_node, which is a
`vtable_entry_type*'. It might seem more precise to use
--- 4328,4364 ----
accordingly. If a new vfield was created (because T doesn't have a
primary base class), then the newly created field is returned. It
is not added to the TYPE_FIELDS list; it is the caller's
! responsibility to do that. Accumulate declared virtual functions
! on VIRTUALS_P. */
static tree
! create_vtable_ptr (t, empty_p, vfuns_p, virtuals_p)
tree t;
int *empty_p;
int *vfuns_p;
! tree *virtuals_p;
{
tree fn;
! /* Collect the virtual functions declared in T. */
for (fn = TYPE_METHODS (t); fn; fn = TREE_CHAIN (fn))
! if (DECL_VINDEX (fn) && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (fn)
! && TREE_CODE (DECL_VINDEX (fn)) != INTEGER_CST)
! {
! tree new_virtual = make_node (TREE_LIST);
!
! BV_FN (new_virtual) = fn;
! BV_DELTA (new_virtual) = integer_zero_node;
+ TREE_CHAIN (new_virtual) = *virtuals_p;
+ *virtuals_p = new_virtual;
+ }
+
/* If we couldn't find an appropriate base class, create a new field
here. Even if there weren't any new virtual functions, we might need a
new virtual function table if we're supposed to include vptrs in
all classes that need them. */
! if (!TYPE_VFIELD (t) && (*virtuals_p || TYPE_CONTAINS_VPTR_P (t)))
{
/* We build this decl with vtbl_ptr_type_node, which is a
`vtable_entry_type*'. It might seem more precise to use
*************** splay_tree_compare_integer_csts (k1, k2)
*** 4799,4814 ****
/* Calculate the TYPE_SIZE, TYPE_ALIGN, etc for T. Calculate
BINFO_OFFSETs for all of the base-classes. Position the vtable
! pointer. */
static void
! layout_class_type (t, empty_p, vfuns_p,
! new_virtuals_p, overridden_virtuals_p)
tree t;
int *empty_p;
int *vfuns_p;
! tree *new_virtuals_p;
! tree *overridden_virtuals_p;
{
tree non_static_data_members;
tree field;
--- 4750,4763 ----
/* Calculate the TYPE_SIZE, TYPE_ALIGN, etc for T. Calculate
BINFO_OFFSETs for all of the base-classes. Position the vtable
! pointer. Accumulate declared virtual functions on VIRTUALS_P. */
static void
! layout_class_type (t, empty_p, vfuns_p, virtuals_p)
tree t;
int *empty_p;
int *vfuns_p;
! tree *virtuals_p;
{
tree non_static_data_members;
tree field;
*************** layout_class_type (t, empty_p, vfuns_p,
*** 4830,4837 ****
determine_primary_base (t, vfuns_p);
/* Create a pointer to our virtual function table. */
! vptr = create_vtable_ptr (t, empty_p, vfuns_p,
! new_virtuals_p, overridden_virtuals_p);
/* The vptr is always the first thing in the class. */
if (vptr)
--- 4779,4785 ----
determine_primary_base (t, vfuns_p);
/* Create a pointer to our virtual function table. */
! vptr = create_vtable_ptr (t, empty_p, vfuns_p, virtuals_p);
/* The vptr is always the first thing in the class. */
if (vptr)
*************** layout_class_type (t, empty_p, vfuns_p,
*** 4971,4976 ****
--- 4919,4930 ----
CLASSTYPE_SIZE (t) = bitsize_zero_node;
CLASSTYPE_SIZE_UNIT (t) = size_zero_node;
}
+ /* If this is a POD, we can't reuse its tail padding. */
+ else if (!CLASSTYPE_NON_POD_P (t))
+ {
+ CLASSTYPE_SIZE (t) = TYPE_SIZE (t);
+ CLASSTYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (t);
+ }
else
{
CLASSTYPE_SIZE (t) = TYPE_BINFO_SIZE (t);
*************** finish_struct_1 (t)
*** 5032,5046 ****
{
tree x;
int vfuns;
! /* The NEW_VIRTUALS is a TREE_LIST. The TREE_VALUE of each node is
! a FUNCTION_DECL. Each of these functions is a virtual function
! declared in T that does not override any virtual function from a
! base class. */
! tree new_virtuals = NULL_TREE;
! /* The OVERRIDDEN_VIRTUALS list is like the NEW_VIRTUALS list,
! except that each declaration here overrides the declaration from
! a base class. */
! tree overridden_virtuals = NULL_TREE;
int n_fields = 0;
tree vfield;
int empty = 1;
--- 4986,4993 ----
{
tree x;
int vfuns;
! /* A TREE_LIST. The TREE_VALUE of each node is a FUNCTION_DECL. */
! tree virtuals = NULL_TREE;
int n_fields = 0;
tree vfield;
int empty = 1;
*************** finish_struct_1 (t)
*** 5070,5077 ****
check_bases_and_members (t, &empty);
/* Layout the class itself. */
! layout_class_type (t, &empty, &vfuns,
! &new_virtuals, &overridden_virtuals);
/* Make sure that we get our own copy of the vfield FIELD_DECL. */
vfield = TYPE_VFIELD (t);
--- 5017,5023 ----
check_bases_and_members (t, &empty);
/* Layout the class itself. */
! layout_class_type (t, &empty, &vfuns, &virtuals);
/* Make sure that we get our own copy of the vfield FIELD_DECL. */
vfield = TYPE_VFIELD (t);
*************** finish_struct_1 (t)
*** 5095,5102 ****
else
my_friendly_assert (!vfield || DECL_FIELD_CONTEXT (vfield) == t, 20010726);
! overridden_virtuals
! = modify_all_vtables (t, &vfuns, nreverse (overridden_virtuals));
/* If we created a new vtbl pointer for this class, add it to the
list. */
--- 5041,5047 ----
else
my_friendly_assert (!vfield || DECL_FIELD_CONTEXT (vfield) == t, 20010726);
! virtuals = modify_all_vtables (t, &vfuns, nreverse (virtuals));
/* If we created a new vtbl pointer for this class, add it to the
list. */
*************** finish_struct_1 (t)
*** 5105,5113 ****
= chainon (CLASSTYPE_VFIELDS (t), build_tree_list (NULL_TREE, t));
/* If necessary, create the primary vtable for this class. */
! if (new_virtuals || overridden_virtuals || TYPE_CONTAINS_VPTR_P (t))
{
- new_virtuals = nreverse (new_virtuals);
/* We must enter these virtuals into the table. */
if (!CLASSTYPE_HAS_PRIMARY_BASE_P (t))
build_primary_vtable (NULL_TREE, t);
--- 5050,5057 ----
= chainon (CLASSTYPE_VFIELDS (t), build_tree_list (NULL_TREE, t));
/* If necessary, create the primary vtable for this class. */
! if (virtuals || TYPE_CONTAINS_VPTR_P (t))
{
/* We must enter these virtuals into the table. */
if (!CLASSTYPE_HAS_PRIMARY_BASE_P (t))
build_primary_vtable (NULL_TREE, t);
*************** finish_struct_1 (t)
*** 5120,5126 ****
constructors might clobber the virtual function table. But
they don't if the derived class shares the exact vtable of the base
class. */
-
CLASSTYPE_NEEDS_VIRTUAL_REINIT (t) = 1;
}
/* If we didn't need a new vtable, see if we should copy one from
--- 5064,5069 ----
*************** finish_struct_1 (t)
*** 5146,5159 ****
20000116);
CLASSTYPE_VSIZE (t) = vfuns;
! /* Entries for virtual functions defined in the primary base are
! followed by entries for new functions unique to this class. */
! TYPE_BINFO_VIRTUALS (t)
! = chainon (TYPE_BINFO_VIRTUALS (t), new_virtuals);
! /* Finally, add entries for functions that override virtuals
! from non-primary bases. */
! TYPE_BINFO_VIRTUALS (t)
! = chainon (TYPE_BINFO_VIRTUALS (t), overridden_virtuals);
}
finish_struct_bits (t);
--- 5089,5096 ----
20000116);
CLASSTYPE_VSIZE (t) = vfuns;
! /* Add entries for virtual functions introduced by this class. */
! TYPE_BINFO_VIRTUALS (t) = chainon (TYPE_BINFO_VIRTUALS (t), virtuals);
}
finish_struct_bits (t);
diff -Nrc3pad gcc-3.1.1/gcc/cp/cp-tree.h gcc-3.2/gcc/cp/cp-tree.h
*** gcc-3.1.1/gcc/cp/cp-tree.h Thu May 23 17:57:42 2002
--- gcc-3.2/gcc/cp/cp-tree.h Fri Jul 26 23:23:00 2002
*************** enum cp_tree_index
*** 539,545 ****
CPTI_STD,
CPTI_ABI,
CPTI_TYPE_INFO_TYPE,
! CPTI_TINFO_DECL_TYPE,
CPTI_ABORT_FNDECL,
CPTI_GLOBAL_DELETE_FNDECL,
CPTI_AGGR_TAG,
--- 539,545 ----
CPTI_STD,
CPTI_ABI,
CPTI_TYPE_INFO_TYPE,
! CPTI_TYPE_INFO_PTR_TYPE,
CPTI_ABORT_FNDECL,
CPTI_GLOBAL_DELETE_FNDECL,
CPTI_AGGR_TAG,
*************** extern tree cp_global_trees[CPTI_MAX];
*** 626,632 ****
#define std_node cp_global_trees[CPTI_STD]
#define abi_node cp_global_trees[CPTI_ABI]
#define type_info_type_node cp_global_trees[CPTI_TYPE_INFO_TYPE]
! #define tinfo_decl_type cp_global_trees[CPTI_TINFO_DECL_TYPE]
#define abort_fndecl cp_global_trees[CPTI_ABORT_FNDECL]
#define global_delete_fndecl cp_global_trees[CPTI_GLOBAL_DELETE_FNDECL]
#define current_aggr cp_global_trees[CPTI_AGGR_TAG]
--- 626,632 ----
#define std_node cp_global_trees[CPTI_STD]
#define abi_node cp_global_trees[CPTI_ABI]
#define type_info_type_node cp_global_trees[CPTI_TYPE_INFO_TYPE]
! #define type_info_ptr_type cp_global_trees[CPTI_TYPE_INFO_PTR_TYPE]
#define abort_fndecl cp_global_trees[CPTI_ABORT_FNDECL]
#define global_delete_fndecl cp_global_trees[CPTI_GLOBAL_DELETE_FNDECL]
#define current_aggr cp_global_trees[CPTI_AGGR_TAG]
*************** extern tree coerce_delete_type PARAMS
*** 3819,3824 ****
--- 3819,3825 ----
extern void comdat_linkage PARAMS ((tree));
extern void import_export_vtable PARAMS ((tree, tree, int));
extern void import_export_decl PARAMS ((tree));
+ extern void import_export_tinfo PARAMS ((tree, tree, int));
extern tree build_cleanup PARAMS ((tree));
extern void finish_file PARAMS ((void));
extern tree reparse_absdcl_as_expr PARAMS ((tree, tree));
*************** extern tree get_tinfo_decl
*** 4051,4057 ****
extern tree get_typeid PARAMS((tree));
extern tree build_dynamic_cast PARAMS((tree, tree));
extern void emit_support_tinfos PARAMS((void));
! extern int tinfo_decl_p PARAMS((tree, void *));
extern int emit_tinfo_decl PARAMS((tree *, void *));
/* in search.c */
--- 4052,4058 ----
extern tree get_typeid PARAMS((tree));
extern tree build_dynamic_cast PARAMS((tree, tree));
extern void emit_support_tinfos PARAMS((void));
! extern int unemitted_tinfo_decl_p PARAMS((tree, void *));
extern int emit_tinfo_decl PARAMS((tree *, void *));
/* in search.c */
diff -Nrc3pad gcc-3.1.1/gcc/cp/decl2.c gcc-3.2/gcc/cp/decl2.c
*** gcc-3.1.1/gcc/cp/decl2.c Thu Jul 4 10:57:18 2002
--- gcc-3.2/gcc/cp/decl2.c Fri Jul 26 23:22:59 2002
*************** import_export_decl (decl)
*** 2529,2573 ****
else
comdat_linkage (decl);
}
! else if (tinfo_decl_p (decl, 0))
! {
! tree ctype = TREE_TYPE (DECL_NAME (decl));
! if (IS_AGGR_TYPE (ctype))
! import_export_class (ctype);
! if (IS_AGGR_TYPE (ctype) && CLASSTYPE_INTERFACE_KNOWN (ctype)
! && TYPE_POLYMORPHIC_P (ctype)
! /* If -fno-rtti, we're not necessarily emitting this stuff with
! the class, so go ahead and emit it now. This can happen
! when a class is used in exception handling. */
! && flag_rtti
! /* If the type is a cv-qualified variant of a type, then we
! must emit the tinfo function in this translation unit
! since it will not be emitted when the vtable for the type
! is output (which is when the unqualified version is
! generated). */
! && same_type_p (ctype, TYPE_MAIN_VARIANT (ctype)))
! {
! DECL_NOT_REALLY_EXTERN (decl)
! = ! (CLASSTYPE_INTERFACE_ONLY (ctype)
! || (DECL_DECLARED_INLINE_P (decl)
! && ! flag_implement_inlines
! && !DECL_VINDEX (decl)));
! /* Always make artificials weak. */
! if (flag_weak)
! comdat_linkage (decl);
! }
! else if (TYPE_BUILT_IN (ctype)
! && same_type_p (ctype, TYPE_MAIN_VARIANT (ctype)))
! DECL_NOT_REALLY_EXTERN (decl) = 0;
! else
! comdat_linkage (decl);
! }
else
! comdat_linkage (decl);
DECL_INTERFACE_KNOWN (decl) = 1;
}
--- 2529,2578 ----
else
comdat_linkage (decl);
}
! else
! comdat_linkage (decl);
! DECL_INTERFACE_KNOWN (decl) = 1;
! }
! /* Here, we only decide whether or not the tinfo node should be
! emitted with the vtable. IS_IN_LIBRARY is non-zero iff the
! typeinfo for TYPE should be in the runtime library. */
! void
! import_export_tinfo (decl, type, is_in_library)
! tree decl;
! tree type;
! int is_in_library;
! {
! if (DECL_INTERFACE_KNOWN (decl))
! return;
!
! if (IS_AGGR_TYPE (type))
! import_export_class (type);
!
! if (IS_AGGR_TYPE (type) && CLASSTYPE_INTERFACE_KNOWN (type)
! && TYPE_POLYMORPHIC_P (type)
! /* If -fno-rtti, we're not necessarily emitting this stuff with
! the class, so go ahead and emit it now. This can happen when
! a class is used in exception handling. */
! && flag_rtti)
! {
! DECL_NOT_REALLY_EXTERN (decl) = !CLASSTYPE_INTERFACE_ONLY (type);
! DECL_COMDAT (decl) = 0;
! }
else
! {
! DECL_NOT_REALLY_EXTERN (decl) = 1;
! DECL_COMDAT (decl) = 1;
! }
+ /* Now override some cases. */
+ if (flag_weak)
+ DECL_COMDAT (decl) = 1;
+ else if (is_in_library)
+ DECL_COMDAT (decl) = 0;
+
DECL_INTERFACE_KNOWN (decl) = 1;
}
*************** finish_file ()
*** 3364,3370 ****
/* Write out needed type info variables. Writing out one variable
might cause others to be needed. */
! if (walk_globals (tinfo_decl_p, emit_tinfo_decl, /*data=*/0))
reconsider = 1;
/* The list of objects with static storage duration is built up
--- 3369,3375 ----
/* Write out needed type info variables. Writing out one variable
might cause others to be needed. */
! if (walk_globals (unemitted_tinfo_decl_p, emit_tinfo_decl, /*data=*/0))
reconsider = 1;
/* The list of objects with static storage duration is built up
diff -Nrc3pad gcc-3.1.1/gcc/cp/lang-specs.h gcc-3.2/gcc/cp/lang-specs.h
*** gcc-3.1.1/gcc/cp/lang-specs.h Mon Mar 18 20:10:19 2002
--- gcc-3.2/gcc/cp/lang-specs.h Tue Jul 30 20:42:14 2002
*************** Boston, MA 02111-1307, USA. */
*** 38,51 ****
"%{E|M|MM:cpp0 -lang-c++ %{!no-gcc:-D__GNUG__=%v1}\
%{!Wno-deprecated:-D__DEPRECATED}\
%{!fno-exceptions:-D__EXCEPTIONS}\
- -D__GXX_ABI_VERSION=100\
%{ansi:-D__STRICT_ANSI__ -trigraphs -$} %(cpp_options)}\
%{!E:%{!M:%{!MM:\
%{save-temps|no-integrated-cpp:cpp0 -lang-c++ \
%{!no-gcc:-D__GNUG__=%v1}\
%{!Wno-deprecated:-D__DEPRECATED}\
%{!fno-exceptions:-D__EXCEPTIONS}\
- -D__GXX_ABI_VERSION=100\
%{ansi:-D__STRICT_ANSI__ -trigraphs -$}\
%(cpp_options) %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\
cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\
--- 38,49 ----
*************** Boston, MA 02111-1307, USA. */
*** 53,59 ****
%{!no-gcc:-D__GNUG__=%v1} \
%{!Wno-deprecated:-D__DEPRECATED}\
%{!fno-exceptions:-D__EXCEPTIONS}\
- -D__GXX_ABI_VERSION=100\
%{ansi:-D__STRICT_ANSI__}}}\
%{ansi:-trigraphs -$}\
%(cc1_options) %2 %{+e1*}\
--- 51,56 ----
diff -Nrc3pad gcc-3.1.1/gcc/cp/mangle.c gcc-3.2/gcc/cp/mangle.c
*** gcc-3.1.1/gcc/cp/mangle.c Tue Jul 2 03:14:24 2002
--- gcc-3.2/gcc/cp/mangle.c Fri Jul 26 23:22:58 2002
*************** write_unqualified_name (decl)
*** 982,989 ****
{
/* Conversion operator. Handle it right here.
::= cv */
write_string ("cv");
! write_type (TREE_TYPE (DECL_NAME (decl)));
}
else if (DECL_OVERLOADED_OPERATOR_P (decl))
{
--- 982,998 ----
{
/* Conversion operator. Handle it right here.
::= cv */
+ tree type;
+ if (decl_is_template_id (decl, NULL))
+ {
+ tree fn_type = get_mostly_instantiated_function_type (decl, NULL,
+ NULL);
+ type = TREE_TYPE (fn_type);
+ }
+ else
+ type = TREE_TYPE (DECL_NAME (decl));
write_string ("cv");
! write_type (type);
}
else if (DECL_OVERLOADED_OPERATOR_P (decl))
{
diff -Nrc3pad gcc-3.1.1/gcc/cp/rtti.c gcc-3.2/gcc/cp/rtti.c
*** gcc-3.1.1/gcc/cp/rtti.c Wed Jan 23 14:26:02 2002
--- gcc-3.2/gcc/cp/rtti.c Fri Jul 26 23:22:59 2002
***************
*** 1,5 ****
/* RunTime Type Identification
! Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
Mostly written by Jason Merrill (jason@cygnus.com).
--- 1,5 ----
/* RunTime Type Identification
! Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
Mostly written by Jason Merrill (jason@cygnus.com).
*************** Boston, MA 02111-1307, USA. */
*** 30,45 ****
#include "assert.h"
#include "toplev.h"
/* Accessors for the type_info objects. We need to remember several things
about each of the type_info types. The global tree nodes such as
bltn_desc_type_node are TREE_LISTs, and these macros are used to access
the required information. */
/* The RECORD_TYPE of a type_info derived class. */
#define TINFO_PSEUDO_TYPE(NODE) TREE_TYPE (NODE)
! /* The VAR_DECL of the vtable for the type_info derived class. */
#define TINFO_VTABLE_DECL(NODE) TREE_VALUE (NODE)
!
! extern struct obstack permanent_obstack;
static tree build_headof PARAMS((tree));
static tree ifnonnull PARAMS((tree, tree));
--- 30,75 ----
#include "assert.h"
#include "toplev.h"
+ /* C++ returns type information to the user in struct type_info
+ objects. We also use type information to implement dynamic_cast and
+ exception handlers. Type information for a particular type is
+ indicated with an ABI defined structure derived from type_info.
+ This would all be very straight forward, but for the fact that the
+ runtime library provides the definitions of the type_info structure
+ and the ABI defined derived classes. We cannot build declarations
+ of them directly in the compiler, but we need to layout objects of
+ their type. Somewhere we have to lie.
+
+ We define layout compatible POD-structs with compiler-defined names
+ and generate the appropriate initializations for them (complete
+ with explicit mention of their vtable). When we have to provide a
+ type_info to the user we reinterpret_cast the internal compiler
+ type to type_info. A well formed program can only explicitly refer
+ to the type_infos of complete types (& cv void). However, we chain
+ pointer type_infos to the pointed-to-type, and that can be
+ incomplete. We only need the addresses of such incomplete
+ type_info objects for static initialization.
+
+ The type information VAR_DECL of a type is held on the
+ IDENTIFIER_GLOBAL_VALUE of the type's mangled name. That VAR_DECL
+ will be the internal type. It will usually have the correct
+ internal type reflecting the kind of type it represents (pointer,
+ array, function, class, inherited class, etc). When the type it
+ represents is incomplete, it will have the internal type
+ corresponding to type_info. That will only happen at the end of
+ translation, when we are emitting the type info objects. */
+
/* Accessors for the type_info objects. We need to remember several things
about each of the type_info types. The global tree nodes such as
bltn_desc_type_node are TREE_LISTs, and these macros are used to access
the required information. */
/* The RECORD_TYPE of a type_info derived class. */
#define TINFO_PSEUDO_TYPE(NODE) TREE_TYPE (NODE)
! /* The VAR_DECL of the vtable for the type_info derived class.
! This is only filled in at the end of the translation. */
#define TINFO_VTABLE_DECL(NODE) TREE_VALUE (NODE)
! /* The IDENTIFIER_NODE naming the real class. */
! #define TINFO_REAL_NAME(NODE) TREE_PURPOSE (NODE)
static tree build_headof PARAMS((tree));
static tree ifnonnull PARAMS((tree, tree));
*************** static tree build_dynamic_cast_1 PARAMS(
*** 48,54 ****
static tree throw_bad_cast PARAMS((void));
static tree throw_bad_typeid PARAMS((void));
static tree get_tinfo_decl_dynamic PARAMS((tree));
! static bool typeid_ok_p PARAMS ((void));
static int qualifier_flags PARAMS((tree));
static int target_incomplete_p PARAMS((tree));
static tree tinfo_base_init PARAMS((tree, tree));
--- 78,85 ----
static tree throw_bad_cast PARAMS((void));
static tree throw_bad_typeid PARAMS((void));
static tree get_tinfo_decl_dynamic PARAMS((tree));
! static tree get_tinfo_ptr PARAMS((tree));
! static bool typeid_ok_p PARAMS((void));
static int qualifier_flags PARAMS((tree));
static int target_incomplete_p PARAMS((tree));
static tree tinfo_base_init PARAMS((tree, tree));
*************** static tree dfs_class_hint_mark PARAMS (
*** 59,73 ****
static tree dfs_class_hint_unmark PARAMS ((tree, void *));
static int class_hint_flags PARAMS((tree));
static tree class_initializer PARAMS((tree, tree, tree));
- static tree synthesize_tinfo_var PARAMS((tree, tree));
- static tree create_real_tinfo_var PARAMS((tree, tree, tree, tree, int));
static tree create_pseudo_type_info PARAMS((const char *, int, ...));
! static tree get_vmi_pseudo_type_info PARAMS((int));
static void create_tinfo_types PARAMS((void));
static int typeinfo_in_lib_p PARAMS((tree));
static int doing_runtime = 0;
void
init_rtti_processing ()
{
--- 90,110 ----
static tree dfs_class_hint_unmark PARAMS ((tree, void *));
static int class_hint_flags PARAMS((tree));
static tree class_initializer PARAMS((tree, tree, tree));
static tree create_pseudo_type_info PARAMS((const char *, int, ...));
! static tree get_pseudo_ti_init PARAMS ((tree, tree, int *));
! static tree get_pseudo_ti_desc PARAMS((tree));
static void create_tinfo_types PARAMS((void));
static int typeinfo_in_lib_p PARAMS((tree));
static int doing_runtime = 0;
+
+ /* Declare language defined type_info type and a pointer to const
+ type_info. This is incomplete here, and will be completed when
+ the user #includes . There are language defined
+ restrictions on what can be done until that is included. Create
+ the internal versions of the ABI types. */
+
void
init_rtti_processing ()
{
*************** init_rtti_processing ()
*** 75,82 ****
type_info_type_node = xref_tag
(class_type_node, get_identifier ("type_info"), 1);
pop_namespace ();
! tinfo_decl_type =
! build_qualified_type (type_info_type_node, TYPE_QUAL_CONST);
}
/* Given the expression EXP of type `class *', return the head of the
--- 112,122 ----
type_info_type_node = xref_tag
(class_type_node, get_identifier ("type_info"), 1);
pop_namespace ();
! type_info_ptr_type =
! build_pointer_type
! (build_qualified_type (type_info_type_node, TYPE_QUAL_CONST));
!
! create_tinfo_types ();
}
/* Given the expression EXP of type `class *', return the head of the
*************** get_tinfo_decl_dynamic (exp)
*** 183,195 ****
/* The RTTI information is at index -1. */
index = integer_minus_one_node;
t = build_vtbl_ref (exp, index);
! TREE_TYPE (t) = build_pointer_type (tinfo_decl_type);
return t;
}
! /* otherwise return the type_info for the static type of the expr. */
! exp = get_tinfo_decl (TYPE_MAIN_VARIANT (type));
! return build_unary_op (ADDR_EXPR, exp, 0);
}
static bool
--- 223,234 ----
/* The RTTI information is at index -1. */
index = integer_minus_one_node;
t = build_vtbl_ref (exp, index);
! TREE_TYPE (t) = type_info_ptr_type;
return t;
}
! /* Otherwise return the type_info for the static type of the expr. */
! return get_tinfo_ptr (TYPE_MAIN_VARIANT (type));
}
static bool
*************** tinfo_name (type)
*** 263,271 ****
return name_string;
}
! /* Returns a decl for the type_info variable for TYPE. You must
! arrange that the decl is mark_used, if actually use it --- decls in
! vtables are only used if the vtable is output. */
tree
get_tinfo_decl (type)
--- 302,310 ----
return name_string;
}
! /* Return a VAR_DECL for the internal ABI defined type_info object for
! TYPE. You must arrange that the decl is mark_used, if actually use
! it --- decls in vtables are only used if the vtable is output. */
tree
get_tinfo_decl (type)
*************** get_tinfo_decl (type)
*** 278,284 ****
&& TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
{
error ("cannot create type information for type `%T' because its size is variable",
! type);
return error_mark_node;
}
--- 317,323 ----
&& TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
{
error ("cannot create type information for type `%T' because its size is variable",
! type);
return error_mark_node;
}
*************** get_tinfo_decl (type)
*** 291,327 ****
name = mangle_typeinfo_for_type (type);
d = IDENTIFIER_GLOBAL_VALUE (name);
! if (d)
! /* OK */;
! else
{
! /* The tinfo decl is the type_info object itself. We make all
! tinfo objects look as type_info, even though they will end up
! being a subclass of that when emitted. This means that we'll
! erroneously think we know the dynamic type -- be careful in the
! runtime. */
! d = build_lang_decl (VAR_DECL, name, tinfo_decl_type);
DECL_ARTIFICIAL (d) = 1;
- DECL_ALIGN (d) = TYPE_ALIGN (ptr_type_node);
- DECL_USER_ALIGN (d) = 0;
TREE_READONLY (d) = 1;
TREE_STATIC (d) = 1;
DECL_EXTERNAL (d) = 1;
- TREE_PUBLIC (d) = 1;
- if (flag_weak || !typeinfo_in_lib_p (type))
- comdat_linkage (d);
SET_DECL_ASSEMBLER_NAME (d, name);
cp_finish_decl (d, NULL_TREE, NULL_TREE, 0);
pushdecl_top_level (d);
/* Remember the type it is for. */
TREE_TYPE (name) = type;
- TREE_USED (name) = 1;
}
return d;
}
/* Return the type_info object for TYPE. */
tree
--- 330,374 ----
name = mangle_typeinfo_for_type (type);
d = IDENTIFIER_GLOBAL_VALUE (name);
! if (!d)
{
! tree var_desc = get_pseudo_ti_desc (type);
!
! d = build_lang_decl (VAR_DECL, name, TINFO_PSEUDO_TYPE (var_desc));
DECL_ARTIFICIAL (d) = 1;
TREE_READONLY (d) = 1;
TREE_STATIC (d) = 1;
DECL_EXTERNAL (d) = 1;
SET_DECL_ASSEMBLER_NAME (d, name);
+ DECL_COMDAT (d) = 1;
cp_finish_decl (d, NULL_TREE, NULL_TREE, 0);
pushdecl_top_level (d);
+
/* Remember the type it is for. */
TREE_TYPE (name) = type;
}
+
return d;
}
+ /* Return a pointer to a type_info object describing TYPE, suitably
+ cast to the language defined type. */
+
+ static tree
+ get_tinfo_ptr (type)
+ tree type;
+ {
+ tree exp = get_tinfo_decl (type);
+
+ /* Convert to type_info type. */
+ exp = build_unary_op (ADDR_EXPR, exp, 0);
+ exp = ocp_convert (type_info_ptr_type, exp, CONV_REINTERPRET, 0);
+
+ return exp;
+ }
+
/* Return the type_info object for TYPE. */
tree
*************** get_typeid (type)
*** 350,356 ****
if (!type)
return error_mark_node;
! return get_tinfo_decl (type);
}
/* Check whether TEST is null before returning RESULT. If TEST is used in
--- 397,403 ----
if (!type)
return error_mark_node;
! return build_indirect_ref (get_tinfo_ptr (type), NULL);
}
/* Check whether TEST is null before returning RESULT. If TEST is used in
*************** tinfo_base_init (desc, target)
*** 683,688 ****
--- 730,736 ----
{
tree init = NULL_TREE;
tree name_decl;
+ tree vtable_ptr;
{
tree name_name;
*************** tinfo_base_init (desc, target)
*** 710,721 ****
cp_finish_decl (name_decl, name_string, NULL_TREE, 0);
pushdecl_top_level (name_decl);
}
!
! if (TINFO_VTABLE_DECL (desc))
{
! tree vtbl_ptr = TINFO_VTABLE_DECL (desc);
! init = tree_cons (NULL_TREE, vtbl_ptr, init);
}
init = tree_cons (NULL_TREE, decay_conversion (name_decl), init);
--- 758,797 ----
cp_finish_decl (name_decl, name_string, NULL_TREE, 0);
pushdecl_top_level (name_decl);
}
!
! vtable_ptr = TINFO_VTABLE_DECL (desc);
! if (!vtable_ptr)
{
! tree real_type;
!
! push_nested_namespace (abi_node);
! real_type = xref_tag (class_type_node, TINFO_REAL_NAME (desc), 1);
! pop_nested_namespace (abi_node);
!
! if (!COMPLETE_TYPE_P (real_type))
! {
! /* We never saw a definition of this type, so we need to
! tell the compiler that this is an exported class, as
! indeed all of the __*_type_info classes are. */
! SET_CLASSTYPE_INTERFACE_KNOWN (real_type);
! CLASSTYPE_INTERFACE_ONLY (real_type) = 1;
! }
!
! vtable_ptr = get_vtable_decl (real_type, /*complete=*/1);
! vtable_ptr = build_unary_op (ADDR_EXPR, vtable_ptr, 0);
!
! /* We need to point into the middle of the vtable. */
! vtable_ptr = build
! (PLUS_EXPR, TREE_TYPE (vtable_ptr), vtable_ptr,
! size_binop (MULT_EXPR,
! size_int (2),
! TYPE_SIZE_UNIT (vtable_entry_type)));
! TREE_CONSTANT (vtable_ptr) = 1;
!
! TINFO_VTABLE_DECL (desc) = vtable_ptr;
}
+
+ init = tree_cons (NULL_TREE, vtable_ptr, init);
init = tree_cons (NULL_TREE, decay_conversion (name_decl), init);
*************** ptr_initializer (desc, target, non_publi
*** 764,771 ****
}
init = tree_cons (NULL_TREE, build_int_2 (flags, 0), init);
init = tree_cons (NULL_TREE,
! build_unary_op (ADDR_EXPR,
! get_tinfo_decl (TYPE_MAIN_VARIANT (to)), 0),
init);
init = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, nreverse (init));
--- 840,846 ----
}
init = tree_cons (NULL_TREE, build_int_2 (flags, 0), init);
init = tree_cons (NULL_TREE,
! get_tinfo_ptr (TYPE_MAIN_VARIANT (to)),
init);
init = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, nreverse (init));
*************** ptm_initializer (desc, target, non_publi
*** 802,813 ****
}
init = tree_cons (NULL_TREE, build_int_2 (flags, 0), init);
init = tree_cons (NULL_TREE,
! build_unary_op (ADDR_EXPR,
! get_tinfo_decl (TYPE_MAIN_VARIANT (to)), 0),
init);
init = tree_cons (NULL_TREE,
! build_unary_op (ADDR_EXPR, get_tinfo_decl (klass), 0),
! init);
init = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, nreverse (init));
TREE_HAS_CONSTRUCTOR (init) = TREE_CONSTANT (init) = TREE_STATIC (init) = 1;
--- 877,887 ----
}
init = tree_cons (NULL_TREE, build_int_2 (flags, 0), init);
init = tree_cons (NULL_TREE,
! get_tinfo_ptr (TYPE_MAIN_VARIANT (to)),
init);
init = tree_cons (NULL_TREE,
! get_tinfo_ptr (klass),
! init);
init = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, nreverse (init));
TREE_HAS_CONSTRUCTOR (init) = TREE_CONSTANT (init) = TREE_STATIC (init) = 1;
*************** typeinfo_in_lib_p (type)
*** 928,1004 ****
}
}
! /* Generate a pseudo_type_info VAR_DECL suitable for the supplied
! TARGET_TYPE and given the REAL_NAME. This is the structure expected by
! the runtime, and therefore has additional fields. If we need not emit a
! definition (because the runtime must contain it), return NULL_TREE,
! otherwise return the VAR_DECL. */
static tree
! synthesize_tinfo_var (target_type, real_name)
! tree target_type;
! tree real_name;
{
! tree var_init = NULL_TREE;
! tree var_type = NULL_TREE;
! int non_public = 0;
!
! switch (TREE_CODE (target_type))
{
case POINTER_TYPE:
! if (TYPE_PTRMEM_P (target_type))
! {
! var_type = ptm_desc_type_node;
! var_init = ptm_initializer (var_type, target_type, &non_public);
! }
else
! {
! if (typeinfo_in_lib_p (target_type) && !doing_runtime)
! /* These are in the runtime. */
! return NULL_TREE;
! var_type = ptr_desc_type_node;
! var_init = ptr_initializer (var_type, target_type, &non_public);
! }
break;
case ENUMERAL_TYPE:
! var_type = enum_desc_type_node;
! var_init = generic_initializer (var_type, target_type);
break;
case FUNCTION_TYPE:
! var_type = func_desc_type_node;
! var_init = generic_initializer (var_type, target_type);
break;
case ARRAY_TYPE:
! var_type = ary_desc_type_node;
! var_init = generic_initializer (var_type, target_type);
break;
case UNION_TYPE:
case RECORD_TYPE:
! if (TYPE_PTRMEMFUNC_P (target_type))
! {
! var_type = ptm_desc_type_node;
! var_init = ptm_initializer (var_type, target_type, &non_public);
! }
! else if (!COMPLETE_TYPE_P (target_type))
! {
! /* Emit a non-public class_type_info. */
! non_public = 1;
! var_type = class_desc_type_node;
! var_init = class_initializer (var_type, target_type, NULL_TREE);
! }
! else if (!CLASSTYPE_N_BASECLASSES (target_type))
{
! var_type = class_desc_type_node;
! var_init = class_initializer (var_type, target_type, NULL_TREE);
}
else
{
! /* if this has a single public non-virtual base, it's easier */
! tree binfo = TYPE_BINFO (target_type);
int nbases = BINFO_N_BASETYPES (binfo);
tree base_binfos = BINFO_BASETYPES (binfo);
tree base_inits = NULL_TREE;
- int is_simple = nbases == 1;
int ix;
/* Generate the base information initializer. */
--- 1002,1064 ----
}
}
! /* Generate the initializer for the type info describing
! TYPE. VAR_DESC is a . NON_PUBLIC_P is set non-zero, if the VAR_DECL
! should not be exported from this object file. This should only be
! called at the end of translation, when we know that no further
! types will be completed. */
static tree
! get_pseudo_ti_init (type, var_desc, non_public_p)
! tree type;
! tree var_desc;
! int *non_public_p;
{
! my_friendly_assert (at_eof, 20021120);
! switch (TREE_CODE (type))
{
case POINTER_TYPE:
! if (TYPE_PTRMEM_P (type))
! return ptm_initializer (var_desc, type, non_public_p);
else
! return ptr_initializer (var_desc, type, non_public_p);
break;
case ENUMERAL_TYPE:
! return generic_initializer (var_desc, type);
break;
case FUNCTION_TYPE:
! return generic_initializer (var_desc, type);
break;
case ARRAY_TYPE:
! return generic_initializer (var_desc, type);
break;
case UNION_TYPE:
case RECORD_TYPE:
! if (TYPE_PTRMEMFUNC_P (type))
! return ptm_initializer (var_desc, type, non_public_p);
! else if (var_desc == class_desc_type_node)
{
! if (!COMPLETE_TYPE_P (type))
! /* Emit a non-public class_type_info. */
! *non_public_p = 1;
! return class_initializer (var_desc, type, NULL_TREE);
}
+ else if (var_desc == si_class_desc_type_node)
+ {
+ tree base_binfos = BINFO_BASETYPES (TYPE_BINFO (type));
+ tree base_binfo = TREE_VEC_ELT (base_binfos, 0);
+ tree tinfo = get_tinfo_ptr (BINFO_TYPE (base_binfo));
+ tree base_inits = tree_cons (NULL_TREE, tinfo, NULL_TREE);
+
+ return class_initializer (var_desc, type, base_inits);
+ }
else
{
! int hint = class_hint_flags (type);
! tree binfo = TYPE_BINFO (type);
int nbases = BINFO_N_BASETYPES (binfo);
tree base_binfos = BINFO_BASETYPES (binfo);
tree base_inits = NULL_TREE;
int ix;
/* Generate the base information initializer. */
*************** synthesize_tinfo_var (target_type, real_
*** 1012,1039 ****
if (TREE_PUBLIC (base_binfo))
flags |= 2;
! tinfo = get_tinfo_decl (BINFO_TYPE (base_binfo));
! tinfo = build_unary_op (ADDR_EXPR, tinfo, 0);
if (TREE_VIA_VIRTUAL (base_binfo))
{
/* We store the vtable offset at which the virtual
base offset can be found. */
! offset = BINFO_VPTR_FIELD (binfo_for_vbase (BINFO_TYPE (base_binfo),
! target_type));
offset = convert (sizetype, offset);
flags |= 1;
}
else
offset = BINFO_OFFSET (base_binfo);
- /* is it a single public inheritance? */
- if (is_simple && flags == 2 && integer_zerop (offset))
- {
- base_inits = tree_cons (NULL_TREE, tinfo, NULL_TREE);
- break;
- }
- is_simple = 0;
-
/* combine offset and flags into one field */
offset = cp_build_binary_op (LSHIFT_EXPR, offset,
build_int_2 (8, 0));
--- 1072,1090 ----
if (TREE_PUBLIC (base_binfo))
flags |= 2;
! tinfo = get_tinfo_ptr (BINFO_TYPE (base_binfo));
if (TREE_VIA_VIRTUAL (base_binfo))
{
/* We store the vtable offset at which the virtual
base offset can be found. */
! offset = BINFO_VPTR_FIELD
! (binfo_for_vbase (BINFO_TYPE (base_binfo), type));
offset = convert (sizetype, offset);
flags |= 1;
}
else
offset = BINFO_OFFSET (base_binfo);
/* combine offset and flags into one field */
offset = cp_build_binary_op (LSHIFT_EXPR, offset,
build_int_2 (8, 0));
*************** synthesize_tinfo_var (target_type, real_
*** 1044,1129 ****
base_init = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, base_init);
base_inits = tree_cons (NULL_TREE, base_init, base_inits);
}
!
! if (is_simple)
! var_type = si_class_desc_type_node;
! else
! {
! int hint = class_hint_flags (target_type);
!
! base_inits = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, base_inits);
! base_inits = tree_cons (NULL_TREE, base_inits, NULL_TREE);
! /* Prepend the number of bases. */
! base_inits = tree_cons (NULL_TREE,
! build_int_2 (nbases, 0), base_inits);
! /* Prepend the hint flags. */
! base_inits = tree_cons (NULL_TREE,
! build_int_2 (hint, 0), base_inits);
! var_type = get_vmi_pseudo_type_info (nbases);
! }
! var_init = class_initializer (var_type, target_type, base_inits);
}
break;
default:
! if (typeinfo_in_lib_p (target_type))
! {
! if (!doing_runtime)
! /* These are guaranteed to be in the runtime. */
! return NULL_TREE;
! var_type = bltn_desc_type_node;
! var_init = generic_initializer (var_type, target_type);
! break;
! }
! abort ();
! }
!
! return create_real_tinfo_var (target_type,
! real_name, TINFO_PSEUDO_TYPE (var_type),
! var_init, non_public);
! }
!
! /* Create the real typeinfo variable. NON_PUBLIC indicates that we cannot
! make this variable public (comdat). */
!
! static tree
! create_real_tinfo_var (target_type, name, type, init, non_public)
! tree target_type;
! tree name;
! tree type;
! tree init;
! int non_public;
! {
! static int count = 0;
! tree decl;
! tree hidden_name;
! char hidden[30];
!
! /* We cannot give this the name NAME, as that already is globally
! bound to the tinfo_decl we originally created for this type in
! get_tinfo_decl. */
! sprintf (hidden, "__ti_%d", count++);
! hidden_name = get_identifier (hidden);
!
! decl = build_lang_decl (VAR_DECL, hidden_name,
! build_qualified_type (type, TYPE_QUAL_CONST));
! DECL_ARTIFICIAL (decl) = 1;
! TREE_READONLY (decl) = 1;
! TREE_STATIC (decl) = 1;
! DECL_EXTERNAL (decl) = 0;
!
! if (!non_public)
! {
! TREE_PUBLIC (decl) = 1;
! if (flag_weak || !typeinfo_in_lib_p (target_type))
! comdat_linkage (decl);
}
- SET_DECL_ASSEMBLER_NAME (decl, name);
- DECL_INITIAL (decl) = init;
- cp_finish_decl (decl, init, NULL_TREE, 0);
- pushdecl_top_level (decl);
- TREE_USED (decl) = 1;
- return decl;
}
/* Generate the RECORD_TYPE containing the data layout of a type_info
--- 1095,1117 ----
base_init = build (CONSTRUCTOR, NULL_TREE, NULL_TREE, base_init);
base_inits = tree_cons (NULL_TREE, base_init, base_inits);
}
! base_inits = build (CONSTRUCTOR,
! NULL_TREE, NULL_TREE, base_inits);
! base_inits = tree_cons (NULL_TREE, base_inits, NULL_TREE);
! /* Prepend the number of bases. */
! base_inits = tree_cons (NULL_TREE,
! build_int_2 (nbases, 0), base_inits);
! /* Prepend the hint flags. */
! base_inits = tree_cons (NULL_TREE,
! build_int_2 (hint, 0), base_inits);
!
! return class_initializer (var_desc, type, base_inits);
}
break;
default:
! return generic_initializer (var_desc, type);
}
}
/* Generate the RECORD_TYPE containing the data layout of a type_info
*************** create_real_tinfo_var (target_type, name
*** 1132,1138 ****
type's vtable. We explicitly manage the vtable member, and name it for
real type as used in the runtime. The RECORD type has a different name,
to avoid collisions. Return a TREE_LIST who's TINFO_PSEUDO_TYPE
! is the generated type and TINFO_VTABLE_DECL is the vtable decl.
REAL_NAME is the runtime's name of the type. Trailing arguments are
additional FIELD_DECL's for the structure. The final argument must be
--- 1120,1129 ----
type's vtable. We explicitly manage the vtable member, and name it for
real type as used in the runtime. The RECORD type has a different name,
to avoid collisions. Return a TREE_LIST who's TINFO_PSEUDO_TYPE
! is the generated type and TINFO_VTABLE_NAME is the name of the
! vtable. We have to delay generating the VAR_DECL of the vtable
! until the end of the translation, when we'll have seen the library
! definition, if there was one.
REAL_NAME is the runtime's name of the type. Trailing arguments are
additional FIELD_DECL's for the structure. The final argument must be
*************** create_real_tinfo_var (target_type, name
*** 1141,1149 ****
static tree
create_pseudo_type_info VPARAMS((const char *real_name, int ident, ...))
{
! tree real_type, pseudo_type;
char *pseudo_name;
- tree vtable_decl;
int ix;
tree fields[10];
tree field_decl;
--- 1132,1139 ----
static tree
create_pseudo_type_info VPARAMS((const char *real_name, int ident, ...))
{
! tree pseudo_type;
char *pseudo_name;
int ix;
tree fields[10];
tree field_decl;
*************** create_pseudo_type_info VPARAMS((const c
*** 1160,1188 ****
if (ident)
sprintf (pseudo_name + strlen (pseudo_name), "%d", ident);
- /* Get the vtable decl. */
- real_type = xref_tag (class_type_node, get_identifier (real_name), 1);
- if (! TYPE_SIZE (real_type))
- {
- /* We never saw a definition of this type, so we need to tell the
- compiler that this is an exported class, as indeed all of the
- __*_type_info classes are. */
- SET_CLASSTYPE_INTERFACE_KNOWN (real_type);
- CLASSTYPE_INTERFACE_ONLY (real_type) = 1;
- }
-
- vtable_decl = get_vtable_decl (real_type, /*complete=*/1);
- vtable_decl = build_unary_op (ADDR_EXPR, vtable_decl, 0);
-
- /* We need to point into the middle of the vtable. */
- vtable_decl = build (PLUS_EXPR,
- TREE_TYPE (vtable_decl),
- vtable_decl,
- size_binop (MULT_EXPR,
- size_int (2),
- TYPE_SIZE_UNIT (vtable_entry_type)));
- TREE_CONSTANT (vtable_decl) = 1;
-
/* First field is the pseudo type_info base class. */
fields[0] = build_decl (FIELD_DECL, NULL_TREE, ti_desc_type_node);
--- 1150,1155 ----
*************** create_pseudo_type_info VPARAMS((const c
*** 1196,1248 ****
TYPE_HAS_CONSTRUCTOR (pseudo_type) = 1;
result = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE);
! TINFO_VTABLE_DECL (result) = vtable_decl;
! TINFO_PSEUDO_TYPE (result) = pseudo_type;
VA_CLOSE (ap);
return result;
}
! /* Return a descriptor for a vmi type with NUM_BASES bases. */
static tree
! get_vmi_pseudo_type_info (num_bases)
! int num_bases;
{
! tree desc;
! tree array_domain, base_array;
!
! if (TREE_VEC_LENGTH (vmi_class_desc_type_node) <= num_bases)
{
! int ix;
! tree extend = make_tree_vec (num_bases + 5);
!
! for (ix = TREE_VEC_LENGTH (vmi_class_desc_type_node); ix--;)
! TREE_VEC_ELT (extend, ix) = TREE_VEC_ELT (vmi_class_desc_type_node, ix);
! vmi_class_desc_type_node = extend;
! }
! desc = TREE_VEC_ELT (vmi_class_desc_type_node, num_bases);
!
! if (desc)
! return desc;
! /* Add number of bases and trailing array of base_class_type_info. */
! array_domain = build_index_type (size_int (num_bases));
! base_array = build_array_type (base_desc_type_node, array_domain);
!
! push_nested_namespace (abi_node);
!
! desc = create_pseudo_type_info
! ("__vmi_class_type_info", num_bases,
! build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, base_array),
! NULL);
! pop_nested_namespace (abi_node);
! TREE_VEC_ELT (vmi_class_desc_type_node, num_bases) = desc;
! return desc;
}
/* Make sure the required builtin types exist for generating the type_info
--- 1163,1258 ----
TYPE_HAS_CONSTRUCTOR (pseudo_type) = 1;
result = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE);
! TINFO_REAL_NAME (result) = get_identifier (real_name);
! TINFO_PSEUDO_TYPE (result) =
! cp_build_qualified_type (pseudo_type, TYPE_QUAL_CONST);
VA_CLOSE (ap);
return result;
}
! /* Return a pseudo type info type node used to describe TYPE. TYPE
! must be a complete type (or cv void), except at the end of the
! translation unit. */
static tree
! get_pseudo_ti_desc (type)
! tree type;
{
! switch (TREE_CODE (type))
{
! case POINTER_TYPE:
! return TYPE_PTRMEM_P (type) ? ptm_desc_type_node : ptr_desc_type_node;
! case ENUMERAL_TYPE:
! return enum_desc_type_node;
! case FUNCTION_TYPE:
! return func_desc_type_node;
! case ARRAY_TYPE:
! return ary_desc_type_node;
! case UNION_TYPE:
! case RECORD_TYPE:
! if (TYPE_PTRMEMFUNC_P (type))
! return ptm_desc_type_node;
! else if (!COMPLETE_TYPE_P (type))
! {
! my_friendly_assert (at_eof, 20020609);
! return class_desc_type_node;
! }
! else if (!CLASSTYPE_N_BASECLASSES (type))
! return class_desc_type_node;
! else
! {
! tree base_binfo =
! TREE_VEC_ELT (BINFO_BASETYPES (TYPE_BINFO (type)), 0);
! int num_bases = BINFO_N_BASETYPES (TYPE_BINFO (type));
!
! if (num_bases == 1
! && TREE_PUBLIC (base_binfo)
! && !TREE_VIA_VIRTUAL (base_binfo)
! && integer_zerop (BINFO_OFFSET (base_binfo)))
! /* single non-virtual public. */
! return si_class_desc_type_node;
! else
! {
! tree var_desc;
! tree array_domain, base_array;
!
! if (TREE_VEC_LENGTH (vmi_class_desc_type_node) <= num_bases)
! {
! int ix;
! tree extend = make_tree_vec (num_bases + 5);
!
! for (ix = TREE_VEC_LENGTH (vmi_class_desc_type_node); ix--;)
! TREE_VEC_ELT (extend, ix)
! = TREE_VEC_ELT (vmi_class_desc_type_node, ix);
! vmi_class_desc_type_node = extend;
! }
! var_desc = TREE_VEC_ELT (vmi_class_desc_type_node, num_bases);
! if (var_desc)
! return var_desc;
! /* Add number of bases and trailing array of
! base_class_type_info. */
! array_domain = build_index_type (size_int (num_bases));
! base_array =
! build_array_type (base_desc_type_node, array_domain);
! push_nested_namespace (abi_node);
! var_desc = create_pseudo_type_info
! ("__vmi_class_type_info", num_bases,
! build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, base_array),
! NULL);
! pop_nested_namespace (abi_node);
! TREE_VEC_ELT (vmi_class_desc_type_node, num_bases) = var_desc;
! return var_desc;
! }
! }
! default:
! return bltn_desc_type_node;
! }
}
/* Make sure the required builtin types exist for generating the type_info
*************** get_vmi_pseudo_type_info (num_bases)
*** 1251,1265 ****
static void
create_tinfo_types ()
{
! tree ptr_type_info;
!
! if (bltn_desc_type_node)
! return;
! push_nested_namespace (abi_node);
! ptr_type_info = build_pointer_type
! (build_qualified_type
! (type_info_type_node, TYPE_QUAL_CONST));
/* Create the internal type_info structure. This is used as a base for
the other structures. */
--- 1261,1269 ----
static void
create_tinfo_types ()
{
! my_friendly_assert (!ti_desc_type_node, 20020609);
! push_nested_namespace (abi_node);
/* Create the internal type_info structure. This is used as a base for
the other structures. */
*************** create_tinfo_types ()
*** 1299,1305 ****
This is really a descendant of __class_type_info. */
si_class_desc_type_node = create_pseudo_type_info
("__si_class_type_info", 0,
! build_decl (FIELD_DECL, NULL_TREE, ptr_type_info),
NULL);
/* Base class internal helper. Pointer to base type, offset to base,
--- 1303,1309 ----
This is really a descendant of __class_type_info. */
si_class_desc_type_node = create_pseudo_type_info
("__si_class_type_info", 0,
! build_decl (FIELD_DECL, NULL_TREE, type_info_ptr_type),
NULL);
/* Base class internal helper. Pointer to base type, offset to base,
*************** create_tinfo_types ()
*** 1307,1313 ****
{
tree fields[2];
! fields[0] = build_decl (FIELD_DECL, NULL_TREE, ptr_type_info);
fields[1] = build_decl (FIELD_DECL, NULL_TREE, integer_types[itk_long]);
base_desc_type_node = make_aggr_type (RECORD_TYPE);
finish_builtin_type (base_desc_type_node, "__base_class_type_info_pseudo",
--- 1311,1317 ----
{
tree fields[2];
! fields[0] = build_decl (FIELD_DECL, NULL_TREE, type_info_ptr_type);
fields[1] = build_decl (FIELD_DECL, NULL_TREE, integer_types[itk_long]);
base_desc_type_node = make_aggr_type (RECORD_TYPE);
finish_builtin_type (base_desc_type_node, "__base_class_type_info_pseudo",
*************** create_tinfo_types ()
*** 1324,1330 ****
ptr_desc_type_node = create_pseudo_type_info
("__pointer_type_info", 0,
build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, ptr_type_info),
NULL);
/* Pointer to member data type_info. Add qualifications flags,
--- 1328,1334 ----
ptr_desc_type_node = create_pseudo_type_info
("__pointer_type_info", 0,
build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, type_info_ptr_type),
NULL);
/* Pointer to member data type_info. Add qualifications flags,
*************** create_tinfo_types ()
*** 1333,1340 ****
ptm_desc_type_node = create_pseudo_type_info
("__pointer_to_member_type_info", 0,
build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, ptr_type_info),
! build_decl (FIELD_DECL, NULL_TREE, ptr_type_info),
NULL);
pop_nested_namespace (abi_node);
--- 1337,1344 ----
ptm_desc_type_node = create_pseudo_type_info
("__pointer_to_member_type_info", 0,
build_decl (FIELD_DECL, NULL_TREE, integer_type_node),
! build_decl (FIELD_DECL, NULL_TREE, type_info_ptr_type),
! build_decl (FIELD_DECL, NULL_TREE, type_info_ptr_type),
NULL);
pop_nested_namespace (abi_node);
*************** emit_support_tinfos ()
*** 1401,1475 ****
definition emitted for it. */
int
! tinfo_decl_p (t, data)
tree t;
void *data ATTRIBUTE_UNUSED;
{
! return TREE_CODE (t) == VAR_DECL
! && IDENTIFIER_GLOBAL_VALUE (DECL_NAME (t)) == (t)
! && TREE_TYPE (t) == tinfo_decl_type
! && TREE_TYPE (DECL_NAME (t));
}
! /* Emit a suitable type_info definition for the type_info decl pointed to by
! DECL_PTR. We emit a completely new variable, of the correct type for the
! actual type this is describing. The DECL_ASSEMBLER_NAME of the generated
! definition is set to that of the supplied decl, so that they can be tied
! up. Mark the supplied decl as having been dealt with. Emitting one
! definition might cause other definitions to be required.
!
! We need to do things this way, because we're trying to do something like
!
! struct B : A {
! ...
! };
!
! extern const A tinfo_var;
!
! const B tinfo_var = {...};
!
! which is not permitted. Also, we've not necessarily seen the definition of B.
! So we do something like the following,
!
! extern const A tinfo_var;
!
! struct pseudo_A {
! const void *vtable_ptr;
! const char *name;
! };
! struct pseudo_B {
! pseudo_A base;
! ...
! };
!
! const pseudo_B proxy_tinfo_var attribute((assembler_name="tinfo_var")) =
! {
! {&B::vtable, "..."},
! ...
! };
!
! pseudo_A and pseudo_B must be layout equivalent to the real definitions in
! the runtime. */
int
emit_tinfo_decl (decl_ptr, data)
tree *decl_ptr;
void *data ATTRIBUTE_UNUSED;
{
! tree tinfo_decl = *decl_ptr;
! tree tinfo_type, decl;
!
! my_friendly_assert (TREE_TYPE (tinfo_decl) == tinfo_decl_type, 20000121);
! tinfo_type = TREE_TYPE (DECL_NAME (tinfo_decl));
! my_friendly_assert (tinfo_type != NULL_TREE, 20000120);
! if (!DECL_NEEDED_P (tinfo_decl))
return 0;
! /* Say we've dealt with it. */
! TREE_TYPE (DECL_NAME (tinfo_decl)) = NULL_TREE;
! create_tinfo_types ();
! decl = synthesize_tinfo_var (tinfo_type, DECL_ASSEMBLER_NAME (tinfo_decl));
! return decl != 0;
}
--- 1405,1465 ----
definition emitted for it. */
int
! unemitted_tinfo_decl_p (t, data)
tree t;
void *data ATTRIBUTE_UNUSED;
{
! if (/* It's a var decl */
! TREE_CODE (t) == VAR_DECL
! /* whos name points back to itself */
! && IDENTIFIER_GLOBAL_VALUE (DECL_NAME (t)) == t
! /* whos name's type is non-null */
! && TREE_TYPE (DECL_NAME (t))
! /* and whos type is a struct */
! && TREE_CODE (TREE_TYPE (t)) == RECORD_TYPE
! /* with a first field of our pseudo type info */
! && TREE_TYPE (TYPE_FIELDS (TREE_TYPE (t))) == ti_desc_type_node)
! return 1;
! return 0;
}
! /* Finish a type info decl. DECL_PTR is a pointer to an unemitted
! tinfo decl. Determine whether it needs emitting, and if so
! generate the initializer. */
int
emit_tinfo_decl (decl_ptr, data)
tree *decl_ptr;
void *data ATTRIBUTE_UNUSED;
{
! tree decl = *decl_ptr;
! tree type = TREE_TYPE (DECL_NAME (decl));
! int non_public;
! int in_library = typeinfo_in_lib_p (type);
! tree var_desc, var_init;
! import_export_tinfo (decl, type, in_library);
! if (DECL_REALLY_EXTERN (decl) || !DECL_NEEDED_P (decl))
return 0;
!
! if (!doing_runtime && in_library)
! return 0;
!
! non_public = 0;
! var_desc = get_pseudo_ti_desc (type);
! var_init = get_pseudo_ti_init (type, var_desc, &non_public);
! DECL_EXTERNAL (decl) = 0;
! TREE_PUBLIC (decl) = !non_public;
! if (non_public)
! DECL_COMDAT (decl) = 0;
!
! DECL_INITIAL (decl) = var_init;
! cp_finish_decl (decl, var_init, NULL_TREE, 0);
! /* cp_finish_decl will have dealt with linkage. */
! /* Say we've dealt with it. */
! TREE_TYPE (DECL_NAME (decl)) = NULL_TREE;
!
! return 1;
}
diff -Nrc3pad gcc-3.1.1/gcc/doc/cpp.1 gcc-3.2/gcc/doc/cpp.1
*** gcc-3.1.1/gcc/doc/cpp.1 Thu Jul 25 23:56:20 2002
--- gcc-3.2/gcc/doc/cpp.1 Wed Aug 14 09:36:36 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:20 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:35 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "CPP 1"
! .TH CPP 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
cpp \- The C Preprocessor
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "CPP 1"
! .TH CPP 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
cpp \- The C Preprocessor
diff -Nrc3pad gcc-3.1.1/gcc/doc/fsf-funding.7 gcc-3.2/gcc/doc/fsf-funding.7
*** gcc-3.1.1/gcc/doc/fsf-funding.7 Thu Jul 25 23:56:26 2002
--- gcc-3.2/gcc/doc/fsf-funding.7 Wed Aug 14 09:36:41 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:26 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:41 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "fsf-funding 7"
! .TH fsf-funding 7 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
fsf-funding \- Funding Free Software
--- 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
diff -Nrc3pad gcc-3.1.1/gcc/doc/gcc.1 gcc-3.2/gcc/doc/gcc.1
*** gcc-3.1.1/gcc/doc/gcc.1 Thu Jul 25 23:56:25 2002
--- gcc-3.2/gcc/doc/gcc.1 Wed Aug 14 09:36:40 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:21 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:36 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "GCC 1"
! .TH GCC 1 "gcc-3.1.1" "2002-07-25" "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" "2002-08-14" "GNU"
.UC
.SH "NAME"
gcc \- \s-1GNU\s0 project C and \*(C+ compiler
diff -Nrc3pad gcc-3.1.1/gcc/doc/gcc.info-1 gcc-3.2/gcc/doc/gcc.info-1
*** gcc-3.1.1/gcc/doc/gcc.info-1 Thu Jul 25 23:56:18 2002
--- gcc-3.2/gcc/doc/gcc.info-1 Wed Aug 14 09:36:33 2002
*************** Introduction
*** 40,46 ****
This manual documents how to use the GNU compilers, as well as their
features and incompatibilities, and how to report bugs. It corresponds
! to GCC version 3.1. The internals of the GNU compilers, including how
to port them to new targets and some information about how to write
front ends for new languages, are documented in a separate manual.
*Note Introduction: (gccint)Top.
--- 40,46 ----
This manual documents how to use the GNU compilers, as well as their
features and incompatibilities, and how to report bugs. It corresponds
! to GCC version 3.2. The internals of the GNU compilers, including how
to port them to new targets and some information about how to write
front ends for new languages, are documented in a separate manual.
*Note Introduction: (gccint)Top.
diff -Nrc3pad gcc-3.1.1/gcc/doc/gccint.info gcc-3.2/gcc/doc/gccint.info
*** gcc-3.1.1/gcc/doc/gccint.info Thu Jul 25 23:56:18 2002
--- gcc-3.2/gcc/doc/gccint.info Wed Aug 14 09:36:33 2002
*************** gccint.info-10: 359504
*** 47,62 ****
gccint.info-11: 406156
gccint.info-12: 453308
gccint.info-13: 488376
! gccint.info-14: 537378
! gccint.info-15: 586442
! gccint.info-16: 634489
! gccint.info-17: 675193
! gccint.info-18: 723097
! gccint.info-19: 768173
! gccint.info-20: 815361
! gccint.info-21: 864797
! gccint.info-22: 907058
! gccint.info-23: 926665
Tag Table:
(Indirect)
--- 47,62 ----
gccint.info-11: 406156
gccint.info-12: 453308
gccint.info-13: 488376
! gccint.info-14: 537491
! gccint.info-15: 586555
! gccint.info-16: 634602
! gccint.info-17: 675306
! gccint.info-18: 723210
! gccint.info-19: 768286
! gccint.info-20: 815474
! gccint.info-21: 864910
! gccint.info-22: 907171
! gccint.info-23: 926778
Tag Table:
(Indirect)
*************** Node: Driver488376
*** 171,242 ****
Node: Run-time Target507709
Node: Per-Function Data515199
Node: Storage Layout518463
! Node: Type Layout537378
! Node: Escape Sequences547730
! Node: Registers548645
! Node: Register Basics549568
! Node: Allocation Order555172
! Node: Values in Registers556588
! Node: Leaf Functions561423
! Node: Stack Registers564212
! Node: Register Classes565012
! Node: Stack and Calling585946
! Node: Frame Layout586442
! Node: Exception Handling593307
! Node: Stack Checking597809
! Node: Frame Registers601366
! Node: Elimination606817
! Node: Stack Arguments610790
! Node: Register Arguments618379
! Node: Scalar Return630248
! Node: Aggregate Return634489
! Node: Caller Saves638206
! Node: Function Entry639746
! Node: Profiling651835
! Node: Tail Calls654167
! Node: Varargs654758
! Node: Trampolines662436
! Node: Library Calls669671
! Node: Addressing Modes675193
! Node: Condition Code686470
! Node: Costs693796
! Node: Scheduling705555
! Node: Sections711071
! Node: PIC719226
! Node: Assembler Format722027
! Node: File Framework723097
! Node: Data Output727957
! Node: Uninitialized Data735830
! Node: Label Output741230
! Node: Initialization756023
! Node: Macros for Initialization762004
! Node: Instruction Output768173
! Node: Dispatch Tables777213
! Node: Exception Region Output779768
! Node: Alignment Output783121
! Node: Debugging Info786993
! Node: All Debuggers787657
! Node: DBX Options790540
! Node: DBX Hooks795915
! Node: File Names and DBX799564
! Node: SDB and DWARF801540
! Node: VMS Debug804981
! Node: Cross-compilation805529
! Node: Mode Switching812108
! Node: Target Attributes815361
! Node: Misc819198
! Node: Host Config847679
! Node: Fragments853715
! Node: Target Fragment854858
! Node: Host Fragment859353
! Node: Collect2860789
! Node: Header Dirs863346
! Node: Funding864797
! Node: GNU Project867303
! Node: Copying867957
! Node: GNU Free Documentation License887171
! Node: Contributors907058
! Node: Option Index924865
! Node: Index926665
End Tag Table
--- 171,242 ----
Node: Run-time Target507709
Node: Per-Function Data515199
Node: Storage Layout518463
! Node: Type Layout537491
! Node: Escape Sequences547843
! Node: Registers548758
! Node: Register Basics549681
! Node: Allocation Order555285
! Node: Values in Registers556701
! Node: Leaf Functions561536
! Node: Stack Registers564325
! Node: Register Classes565125
! Node: Stack and Calling586059
! Node: Frame Layout586555
! Node: Exception Handling593420
! Node: Stack Checking597922
! Node: Frame Registers601479
! Node: Elimination606930
! Node: Stack Arguments610903
! Node: Register Arguments618492
! Node: Scalar Return630361
! Node: Aggregate Return634602
! Node: Caller Saves638319
! Node: Function Entry639859
! Node: Profiling651948
! Node: Tail Calls654280
! Node: Varargs654871
! Node: Trampolines662549
! Node: Library Calls669784
! Node: Addressing Modes675306
! Node: Condition Code686583
! Node: Costs693909
! Node: Scheduling705668
! Node: Sections711184
! Node: PIC719339
! Node: Assembler Format722140
! Node: File Framework723210
! Node: Data Output728070
! Node: Uninitialized Data735943
! Node: Label Output741343
! Node: Initialization756136
! Node: Macros for Initialization762117
! Node: Instruction Output768286
! Node: Dispatch Tables777326
! Node: Exception Region Output779881
! Node: Alignment Output783234
! Node: Debugging Info787106
! Node: All Debuggers787770
! Node: DBX Options790653
! Node: DBX Hooks796028
! Node: File Names and DBX799677
! Node: SDB and DWARF801653
! Node: VMS Debug805094
! Node: Cross-compilation805642
! Node: Mode Switching812221
! Node: Target Attributes815474
! Node: Misc819311
! Node: Host Config847792
! Node: Fragments853828
! Node: Target Fragment854971
! Node: Host Fragment859466
! Node: Collect2860902
! Node: Header Dirs863459
! Node: Funding864910
! Node: GNU Project867416
! Node: Copying868070
! Node: GNU Free Documentation License887284
! Node: Contributors907171
! Node: Option Index924978
! Node: Index926778
End Tag Table
diff -Nrc3pad gcc-3.1.1/gcc/doc/gccint.info-1 gcc-3.2/gcc/doc/gccint.info-1
*** gcc-3.1.1/gcc/doc/gccint.info-1 Thu Jul 25 23:56:18 2002
--- gcc-3.2/gcc/doc/gccint.info-1 Wed Aug 14 09:36:33 2002
*************** Introduction
*** 40,46 ****
This manual documents the internals of the GNU compilers, including
how to port them to new targets and some information about how to write
! front ends for new languages. It corresponds to GCC version 3.1. The
use of the GNU compilers is documented in a separate manual. *Note
Introduction: (gcc)Top.
--- 40,46 ----
This manual documents the internals of the GNU compilers, including
how to port them to new targets and some information about how to write
! front ends for new languages. It corresponds to GCC version 3.2. The
use of the GNU compilers is documented in a separate manual. *Note
Introduction: (gcc)Top.
diff -Nrc3pad gcc-3.1.1/gcc/doc/gccint.info-13 gcc-3.2/gcc/doc/gccint.info-13
*** gcc-3.1.1/gcc/doc/gccint.info-13 Thu Jul 25 23:56:18 2002
--- gcc-3.2/gcc/doc/gccint.info-13 Wed Aug 14 09:36:33 2002
*************** can be C expressions that refer to stati
*** 904,912 ****
`ADJUST_FIELD_ALIGN (FIELD, COMPUTED)'
An expression for the alignment of a structure field FIELD if the
! alignment computed in the usual way is COMPUTED. GCC uses this
! value instead of the value in `BIGGEST_ALIGNMENT' or
! `BIGGEST_FIELD_ALIGNMENT', if defined.
`MAX_OFILE_ALIGNMENT'
Biggest alignment supported by the object file format of this
--- 904,914 ----
`ADJUST_FIELD_ALIGN (FIELD, COMPUTED)'
An expression for the alignment of a structure field FIELD if the
! alignment computed in the usual way (including applying of
! `BIGGEST_ALIGNMENT' and `BIGGEST_FIELD_ALIGNMENT' to the
! alignment) is COMPUTED. It overrides alignment only if the field
! alignment has not been set by the `__attribute__ ((aligned (N)))'
! construct.
`MAX_OFILE_ALIGNMENT'
Biggest alignment supported by the object file format of this
diff -Nrc3pad gcc-3.1.1/gcc/doc/gcov.1 gcc-3.2/gcc/doc/gcov.1
*** gcc-3.1.1/gcc/doc/gcov.1 Thu Jul 25 23:56:20 2002
--- gcc-3.2/gcc/doc/gcov.1 Wed Aug 14 09:36:35 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:20 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:35 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "GCOV 1"
! .TH GCOV 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
gcov \- coverage testing tool
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "GCOV 1"
! .TH GCOV 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gcov \- coverage testing tool
diff -Nrc3pad gcc-3.1.1/gcc/doc/gfdl.7 gcc-3.2/gcc/doc/gfdl.7
*** gcc-3.1.1/gcc/doc/gfdl.7 Thu Jul 25 23:56:26 2002
--- gcc-3.2/gcc/doc/gfdl.7 Wed Aug 14 09:36:41 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:26 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:41 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "gfdl 7"
! .TH gfdl 7 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
gfdl \- \s-1GNU\s0 Free Documentation License
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "gfdl 7"
! .TH gfdl 7 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gfdl \- \s-1GNU\s0 Free Documentation License
diff -Nrc3pad gcc-3.1.1/gcc/doc/gpl.7 gcc-3.2/gcc/doc/gpl.7
*** gcc-3.1.1/gcc/doc/gpl.7 Thu Jul 25 23:56:26 2002
--- gcc-3.2/gcc/doc/gpl.7 Wed Aug 14 09:36:41 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:26 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:41 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "gpl 7"
! .TH gpl 7 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
gpl \- \s-1GNU\s0 General Public License
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "gpl 7"
! .TH gpl 7 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gpl \- \s-1GNU\s0 General Public License
diff -Nrc3pad gcc-3.1.1/gcc/doc/include/gcc-common.texi gcc-3.2/gcc/doc/include/gcc-common.texi
*** gcc-3.1.1/gcc/doc/include/gcc-common.texi Mon Dec 17 19:20:00 2001
--- gcc-3.2/gcc/doc/include/gcc-common.texi Sun Aug 4 16:55:54 2002
***************
*** 4,10 ****
@c Common values used in the GCC manuals:
! @set version-GCC 3.1
@c Common macros to support generating man pages:
--- 4,10 ----
@c Common values used in the GCC manuals:
! @set version-GCC 3.2
@c Common macros to support generating man pages:
diff -Nrc3pad gcc-3.1.1/gcc/doc/install.texi gcc-3.2/gcc/doc/install.texi
*** gcc-3.1.1/gcc/doc/install.texi Thu Jun 27 19:11:31 2002
--- gcc-3.2/gcc/doc/install.texi Mon Aug 5 03:40:02 2002
*************** We recommend you browse the entire gener
*** 148,158 ****
you proceed.
Lists of successful builds for released versions of GCC are
! available at our web pages for
! @uref{http://gcc.gnu.org/gcc-3.1/buildstat.html,,3.1},
! @uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0}
! and
! @uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}.
These lists are updated as new information becomes available.
The installation procedure itself is broken into five steps.
--- 148,154 ----
you proceed.
Lists of successful builds for released versions of GCC are
! available at @uref{http://gcc.gnu.org/buildstat.html}.
These lists are updated as new information becomes available.
The installation procedure itself is broken into five steps.
diff -Nrc3pad gcc-3.1.1/gcc/doc/tm.texi gcc-3.2/gcc/doc/tm.texi
*** gcc-3.1.1/gcc/doc/tm.texi Thu Jun 27 17:48:17 2002
--- gcc-3.2/gcc/doc/tm.texi Wed Aug 7 18:10:57 2002
*************** by the @code{__attribute__ ((aligned (@v
*** 1072,1080 ****
@findex ADJUST_FIELD_ALIGN
@item ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
An expression for the alignment of a structure field @var{field} if the
! alignment computed in the usual way is @var{computed}. GCC uses
! this value instead of the value in @code{BIGGEST_ALIGNMENT} or
! @code{BIGGEST_FIELD_ALIGNMENT}, if defined.
@findex MAX_OFILE_ALIGNMENT
@item MAX_OFILE_ALIGNMENT
--- 1072,1082 ----
@findex ADJUST_FIELD_ALIGN
@item ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
An expression for the alignment of a structure field @var{field} if the
! alignment computed in the usual way (including applying of
! @code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the
! alignment) is @var{computed}. It overrides alignment only if the
! field alignment has not been set by the
! @code{__attribute__ ((aligned (@var{n})))} construct.
@findex MAX_OFILE_ALIGNMENT
@item MAX_OFILE_ALIGNMENT
diff -Nrc3pad gcc-3.1.1/gcc/f/BUGS gcc-3.2/gcc/f/BUGS
*** gcc-3.1.1/gcc/f/BUGS Fri Jul 26 01:01:09 2002
--- gcc-3.2/gcc/f/BUGS Wed Aug 14 10:35:00 2002
*************** _Note:_ This file is automatically gener
*** 2,8 ****
`bugs0.texi' and `bugs.texi'. `BUGS' is _not_ a source file, although
it is normally included within source distributions.
! This file lists known bugs in the GCC-3.1 version of the GNU Fortran
compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Free
Software Foundation, Inc. You may copy, distribute, and modify it
freely as long as you preserve this copyright notice and permission
--- 2,8 ----
`bugs0.texi' and `bugs.texi'. `BUGS' is _not_ a source file, although
it is normally included within source distributions.
! This file lists known bugs in the GCC-3.2 version of the GNU Fortran
compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Free
Software Foundation, Inc. You may copy, distribute, and modify it
freely as long as you preserve this copyright notice and permission
*************** Known Bugs In GNU Fortran
*** 12,18 ****
*************************
This section identifies bugs that `g77' _users_ might run into in
! the GCC-3.1 version of `g77'. This includes bugs that are actually in
the `gcc' back end (GBE) or in `libf2c', because those sets of code are
at least somewhat under the control of (and necessarily intertwined
with) `g77', so it isn't worth separating them out.
--- 12,18 ----
*************************
This section identifies bugs that `g77' _users_ might run into in
! the GCC-3.2 version of `g77'. This includes bugs that are actually in
the `gcc' back end (GBE) or in `libf2c', because those sets of code are
at least somewhat under the control of (and necessarily intertwined
with) `g77', so it isn't worth separating them out.
diff -Nrc3pad gcc-3.1.1/gcc/f/ChangeLog gcc-3.2/gcc/f/ChangeLog
*** gcc-3.1.1/gcc/f/ChangeLog Thu Jul 25 23:35:17 2002
--- gcc-3.2/gcc/f/ChangeLog Wed Aug 14 09:00:13 2002
***************
*** 1,3 ****
--- 1,15 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
+ 2002-08-04 Toon Moene
+
+ * news.texi: Mention nothing changed for 3.2.
+
+ Sun Aug 4 16:48:53 2002 Joseph S. Myers
+
+ * root.texi (version-gcc): Increase to 3.2.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/f/NEWS gcc-3.2/gcc/f/NEWS
*** gcc-3.1.1/gcc/f/NEWS Fri Jul 26 01:01:09 2002
--- gcc-3.2/gcc/f/NEWS Wed Aug 14 10:35:00 2002
*************** _Note:_ This file is automatically gener
*** 2,8 ****
`news0.texi' and `news.texi'. `NEWS' is _not_ a source file, although
it is normally included within source distributions.
! This file lists news about the GCC-3.1 version (and some other
versions) of the GNU Fortran compiler. Copyright (C)
1995,1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
You may copy, distribute, and modify it freely as long as you preserve
--- 2,8 ----
`news0.texi' and `news.texi'. `NEWS' is _not_ a source file, although
it is normally included within source distributions.
! This file lists news about the GCC-3.2 version (and some other
versions) of the GNU Fortran compiler. Copyright (C)
1995,1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
You may copy, distribute, and modify it freely as long as you preserve
*************** somewhat more difficult.
*** 49,55 ****
the mainline, development version of `g77' within `gcc') is available at
`http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
! The following information was last updated on 2002-06-30:
In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
=============================================================
--- 49,60 ----
the mainline, development version of `g77' within `gcc') is available at
`http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
! The following information was last updated on 2002-08-05:
!
! In `GCC' 3.2 versus `GCC' 3.1:
! ==============================
!
! * Nothing.
In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
=============================================================
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.1 gcc-3.2/gcc/f/g77.1
*** gcc-3.1.1/gcc/f/g77.1 Thu Jul 25 23:56:27 2002
--- gcc-3.2/gcc/f/g77.1 Wed Aug 14 09:36:42 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:26 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:41 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "G77 1"
! .TH G77 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
g77 \- \s-1GNU\s0 project Fortran 77 compiler
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "G77 1"
! .TH G77 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
g77 \- \s-1GNU\s0 project Fortran 77 compiler
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info gcc-3.2/gcc/f/g77.info
*** gcc-3.1.1/gcc/f/g77.info Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
*************** g77.info-1: 1458
*** 41,63 ****
g77.info-2: 49505
g77.info-3: 98812
g77.info-4: 124628
! g77.info-5: 176555
! g77.info-6: 224810
! g77.info-7: 269813
! g77.info-8: 319217
! g77.info-9: 368677
! g77.info-10: 418244
! g77.info-11: 462644
! g77.info-12: 512192
! g77.info-13: 562183
! g77.info-14: 609207
! g77.info-15: 653371
! g77.info-16: 701052
! g77.info-17: 750600
! g77.info-18: 798964
! g77.info-19: 841509
! g77.info-20: 885262
! g77.info-21: 904252
Tag Table:
(Indirect)
--- 41,63 ----
g77.info-2: 49505
g77.info-3: 98812
g77.info-4: 124628
! g77.info-5: 176633
! g77.info-6: 224966
! g77.info-7: 269969
! g77.info-8: 319373
! g77.info-9: 368833
! g77.info-10: 418400
! g77.info-11: 462800
! g77.info-12: 512348
! g77.info-13: 562339
! g77.info-14: 609363
! g77.info-15: 653527
! g77.info-16: 701208
! g77.info-17: 750756
! g77.info-18: 799120
! g77.info-19: 841665
! g77.info-20: 885418
! g77.info-21: 904408
Tag Table:
(Indirect)
*************** Node: Directory Options107954
*** 84,765 ****
Node: Code Gen Options109266
Node: Environment Variables124173
Node: News124628
! Node: Changes176555
! Node: Language201912
! Node: Direction of Language Development204115
! Node: Standard Support210354
! Node: No Passing External Assumed-length211075
! Node: No Passing Dummy Assumed-length211552
! Node: No Pathological Implied-DO212067
! Node: No Useless Implied-DO212754
! Node: Conformance213485
! Node: Notation Used215508
! Node: Terms and Concepts219714
! Node: Syntactic Items220226
! Node: Statements Comments Lines220908
! Node: Scope of Names and Labels222773
! Node: Characters Lines Sequence223203
! Node: Character Set223809
! Node: Lines224810
! Node: Continuation Line227286
! Node: Statements228241
! Node: Statement Labels229197
! Node: Order229889
! Node: INCLUDE230774
! Node: Cpp-style directives233546
! Node: Data Types and Constants234001
! Node: Types237522
! Node: Double Notation238611
! Node: Star Notation239683
! Node: Kind Notation242628
! Node: Constants251048
! Node: Integer Type252564
! Node: Character Type253162
! Node: Expressions253926
! Node: %LOC()254342
! Node: Specification Statements257072
! Node: NAMELIST257529
! Node: DOUBLE COMPLEX258280
! Node: Control Statements258534
! Node: DO WHILE259026
! Node: END DO259331
! Node: Construct Names260338
! Node: CYCLE and EXIT261078
! Node: Functions and Subroutines263842
! Node: %VAL()264488
! Node: %REF()265852
! Node: %DESCR()267680
! Node: Generics and Specifics269813
! Node: REAL() and AIMAG() of Complex277015
! Node: CMPLX() of DOUBLE PRECISION278848
! Node: MIL-STD 1753280574
! Node: f77/f2c Intrinsics280916
! Node: Table of Intrinsic Functions281486
! Node: Abort Intrinsic298198
! Node: Abs Intrinsic298462
! Node: Access Intrinsic299325
! Node: AChar Intrinsic300161
! Node: ACos Intrinsic300683
! Node: AdjustL Intrinsic301144
! Node: AdjustR Intrinsic301469
! Node: AImag Intrinsic301795
! Node: AInt Intrinsic302600
! Node: Alarm Intrinsic303228
! Node: All Intrinsic304060
! Node: Allocated Intrinsic304372
! Node: ALog Intrinsic304701
! Node: ALog10 Intrinsic305091
! Node: AMax0 Intrinsic305489
! Node: AMax1 Intrinsic305974
! Node: AMin0 Intrinsic306427
! Node: AMin1 Intrinsic306911
! Node: AMod Intrinsic307363
! Node: And Intrinsic307789
! Node: ANInt Intrinsic308295
! Node: Any Intrinsic309059
! Node: ASin Intrinsic309366
! Node: Associated Intrinsic309824
! Node: ATan Intrinsic310158
! Node: ATan2 Intrinsic310624
! Node: BesJ0 Intrinsic311175
! Node: BesJ1 Intrinsic311636
! Node: BesJN Intrinsic312097
! Node: BesY0 Intrinsic312628
! Node: BesY1 Intrinsic313090
! Node: BesYN Intrinsic313552
! Node: Bit_Size Intrinsic314087
! Node: BTest Intrinsic314746
! Node: CAbs Intrinsic315466
! Node: CCos Intrinsic315853
! Node: Ceiling Intrinsic316245
! Node: CExp Intrinsic316567
! Node: Char Intrinsic316959
! Node: ChDir Intrinsic (subroutine)318213
! Node: ChMod Intrinsic (subroutine)319217
! Node: CLog Intrinsic320488
! Node: Cmplx Intrinsic320892
! Node: Complex Intrinsic321693
! Node: Conjg Intrinsic323139
! Node: Cos Intrinsic323563
! Node: CosH Intrinsic324026
! Node: Count Intrinsic324401
! Node: CPU_Time Intrinsic324719
! Node: CShift Intrinsic325510
! Node: CSin Intrinsic325832
! Node: CSqRt Intrinsic326224
! Node: CTime Intrinsic (subroutine)326634
! Node: CTime Intrinsic (function)327389
! Node: DAbs Intrinsic328023
! Node: DACos Intrinsic328419
! Node: DASin Intrinsic328810
! Node: DATan Intrinsic329202
! Node: DATan2 Intrinsic329595
! Node: Date_and_Time Intrinsic330050
! Node: DbesJ0 Intrinsic331414
! Node: DbesJ1 Intrinsic331807
! Node: DbesJN Intrinsic332193
! Node: DbesY0 Intrinsic332649
! Node: DbesY1 Intrinsic333035
! Node: DbesYN Intrinsic333421
! Node: Dble Intrinsic333875
! Node: DCos Intrinsic334581
! Node: DCosH Intrinsic334965
! Node: DDiM Intrinsic335355
! Node: DErF Intrinsic335787
! Node: DErFC Intrinsic336156
! Node: DExp Intrinsic336531
! Node: Digits Intrinsic336917
! Node: DiM Intrinsic337234
! Node: DInt Intrinsic337733
! Node: DLog Intrinsic338117
! Node: DLog10 Intrinsic338502
! Node: DMax1 Intrinsic338900
! Node: DMin1 Intrinsic339354
! Node: DMod Intrinsic339806
! Node: DNInt Intrinsic340234
! Node: Dot_Product Intrinsic340633
! Node: DProd Intrinsic340973
! Node: DSign Intrinsic341355
! Node: DSin Intrinsic341794
! Node: DSinH Intrinsic342179
! Node: DSqRt Intrinsic342570
! Node: DTan Intrinsic342961
! Node: DTanH Intrinsic343346
! Node: DTime Intrinsic (subroutine)343750
! Node: EOShift Intrinsic345021
! Node: Epsilon Intrinsic345360
! Node: ErF Intrinsic345684
! Node: ErFC Intrinsic346090
! Node: ETime Intrinsic (subroutine)346650
! Node: ETime Intrinsic (function)347813
! Node: Exit Intrinsic348853
! Node: Exp Intrinsic349362
! Node: Exponent Intrinsic349824
! Node: FDate Intrinsic (subroutine)350163
! Node: FDate Intrinsic (function)351073
! Node: FGet Intrinsic (subroutine)351845
! Node: FGetC Intrinsic (subroutine)352682
! Node: Float Intrinsic353559
! Node: Floor Intrinsic353959
! Node: Flush Intrinsic354275
! Node: FNum Intrinsic354854
! Node: FPut Intrinsic (subroutine)355302
! Node: FPutC Intrinsic (subroutine)356099
! Node: Fraction Intrinsic356946
! Node: FSeek Intrinsic357287
! Node: FStat Intrinsic (subroutine)358012
! Node: FStat Intrinsic (function)359537
! Node: FTell Intrinsic (subroutine)360827
! Node: FTell Intrinsic (function)361500
! Node: GError Intrinsic362017
! Node: GetArg Intrinsic362391
! Node: GetCWD Intrinsic (subroutine)363059
! Node: GetCWD Intrinsic (function)363915
! Node: GetEnv Intrinsic364535
! Node: GetGId Intrinsic365122
! Node: GetLog Intrinsic365428
! Node: GetPId Intrinsic365966
! Node: GetUId Intrinsic366274
! Node: GMTime Intrinsic366579
! Node: HostNm Intrinsic (subroutine)367587
! Node: HostNm Intrinsic (function)368677
! Node: Huge Intrinsic369520
! Node: IAbs Intrinsic369843
! Node: IAChar Intrinsic370234
! Node: IAnd Intrinsic370774
! Node: IArgC Intrinsic371262
! Node: IBClr Intrinsic371638
! Node: IBits Intrinsic372149
! Node: IBSet Intrinsic372863
! Node: IChar Intrinsic373365
! Node: IDate Intrinsic (UNIX)374584
! Node: IDiM Intrinsic375387
! Node: IDInt Intrinsic375836
! Node: IDNInt Intrinsic376229
! Node: IEOr Intrinsic376628
! Node: IErrNo Intrinsic377126
! Node: IFix Intrinsic377453
! Node: Imag Intrinsic377841
! Node: ImagPart Intrinsic378846
! Node: Index Intrinsic379872
! Node: Int Intrinsic380425
! Node: Int2 Intrinsic381140
! Node: Int8 Intrinsic381850
! Node: IOr Intrinsic382560
! Node: IRand Intrinsic383040
! Node: IsaTty Intrinsic383960
! Node: IShft Intrinsic384384
! Node: IShftC Intrinsic385214
! Node: ISign Intrinsic386143
! Node: ITime Intrinsic386593
! Node: Kill Intrinsic (subroutine)386995
! Node: Kind Intrinsic387832
! Node: LBound Intrinsic388157
! Node: Len Intrinsic388474
! Node: Len_Trim Intrinsic389110
! Node: LGe Intrinsic389522
! Node: LGt Intrinsic390935
! Node: Link Intrinsic (subroutine)391840
! Node: LLe Intrinsic392805
! Node: LLt Intrinsic393710
! Node: LnBlnk Intrinsic394604
! Node: Loc Intrinsic395007
! Node: Log Intrinsic395438
! Node: Log10 Intrinsic396029
! Node: Logical Intrinsic396571
! Node: Long Intrinsic396894
! Node: LShift Intrinsic397418
! Node: LStat Intrinsic (subroutine)398454
! Node: LStat Intrinsic (function)400266
! Node: LTime Intrinsic401829
! Node: MatMul Intrinsic402833
! Node: Max Intrinsic403151
! Node: Max0 Intrinsic403702
! Node: Max1 Intrinsic404153
! Node: MaxExponent Intrinsic404637
! Node: MaxLoc Intrinsic404977
! Node: MaxVal Intrinsic405304
! Node: MClock Intrinsic405626
! Node: MClock8 Intrinsic406524
! Node: Merge Intrinsic407712
! Node: Min Intrinsic408028
! Node: Min0 Intrinsic408579
! Node: Min1 Intrinsic409030
! Node: MinExponent Intrinsic409514
! Node: MinLoc Intrinsic409854
! Node: MinVal Intrinsic410181
! Node: Mod Intrinsic410500
! Node: Modulo Intrinsic411023
! Node: MvBits Intrinsic411342
! Node: Nearest Intrinsic412208
! Node: NInt Intrinsic412532
! Node: Not Intrinsic413370
! Node: Or Intrinsic413765
! Node: Pack Intrinsic414263
! Node: PError Intrinsic414573
! Node: Precision Intrinsic415027
! Node: Present Intrinsic415362
! Node: Product Intrinsic415692
! Node: Radix Intrinsic416018
! Node: Rand Intrinsic416335
! Node: Random_Number Intrinsic417222
! Node: Random_Seed Intrinsic417575
! Node: Range Intrinsic417923
! Node: Real Intrinsic418244
! Node: RealPart Intrinsic419250
! Node: Rename Intrinsic (subroutine)420283
! Node: Repeat Intrinsic421255
! Node: Reshape Intrinsic421591
! Node: RRSpacing Intrinsic421920
! Node: RShift Intrinsic422255
! Node: Scale Intrinsic423253
! Node: Scan Intrinsic423569
! Node: Second Intrinsic (function)423893
! Node: Second Intrinsic (subroutine)424724
! Node: Selected_Int_Kind Intrinsic425699
! Node: Selected_Real_Kind Intrinsic426090
! Node: Set_Exponent Intrinsic426477
! Node: Shape Intrinsic426834
! Node: Short Intrinsic427157
! Node: Sign Intrinsic427853
! Node: Signal Intrinsic (subroutine)428453
! Node: Sin Intrinsic430667
! Node: SinH Intrinsic431142
! Node: Sleep Intrinsic431515
! Node: Sngl Intrinsic431857
! Node: Spacing Intrinsic432246
! Node: Spread Intrinsic432570
! Node: SqRt Intrinsic432891
! Node: SRand Intrinsic433495
! Node: Stat Intrinsic (subroutine)433872
! Node: Stat Intrinsic (function)435487
! Node: Sum Intrinsic436851
! Node: SymLnk Intrinsic (subroutine)437183
! Node: System Intrinsic (subroutine)438215
! Node: System_Clock Intrinsic439154
! Node: Tan Intrinsic440278
! Node: TanH Intrinsic440738
! Node: Time Intrinsic (UNIX)441120
! Node: Time8 Intrinsic442105
! Node: Tiny Intrinsic443284
! Node: Transfer Intrinsic443599
! Node: Transpose Intrinsic443930
! Node: Trim Intrinsic444264
! Node: TtyNam Intrinsic (subroutine)444594
! Node: TtyNam Intrinsic (function)445296
! Node: UBound Intrinsic445865
! Node: UMask Intrinsic (subroutine)446210
! Node: Unlink Intrinsic (subroutine)446907
! Node: Unpack Intrinsic447805
! Node: Verify Intrinsic448140
! Node: XOr Intrinsic448459
! Node: ZAbs Intrinsic448975
! Node: ZCos Intrinsic449344
! Node: ZExp Intrinsic449717
! Node: ZLog Intrinsic450090
! Node: ZSin Intrinsic450463
! Node: ZSqRt Intrinsic450837
! Node: Scope and Classes of Names451194
! Node: Underscores in Symbol Names451676
! Node: I/O451923
! Node: Fortran 90 Features452696
! Node: Other Dialects455498
! Node: Source Form456657
! Node: Carriage Returns457872
! Node: Tabs458201
! Node: Short Lines459074
! Node: Long Lines460048
! Node: Ampersands460659
! Node: Trailing Comment460913
! Node: Debug Line461689
! Node: Dollar Signs462358
! Node: Case Sensitivity462644
! Node: VXT Fortran471260
! Node: Double Quote Meaning472443
! Node: Exclamation Point473371
! Node: Fortran 90474414
! Node: Pedantic Compilation475466
! Node: Distensions479430
! Node: Ugly Implicit Argument Conversion480394
! Node: Ugly Assumed-Size Arrays481008
! Node: Ugly Complex Part Extraction482729
! Node: Ugly Null Arguments484351
! Node: Ugly Conversion of Initializers485954
! Node: Ugly Integer Conversions487719
! Node: Ugly Assigned Labels488827
! Node: Compiler490758
! Node: Compiler Limits491396
! Node: Run-time Environment Limits492287
! Node: Timer Wraparounds494229
! Node: Year 2000 (Y2K) Problems495508
! Node: Array Size500014
! Node: Character-variable Length501199
! Node: Year 10000 (Y10K) Problems501708
! Node: Compiler Types502254
! Node: Compiler Constants506965
! Node: Compiler Intrinsics507824
! Node: Intrinsic Groups508751
! Node: Other Intrinsics512192
! Node: ACosD Intrinsic519790
! Node: AIMax0 Intrinsic520071
! Node: AIMin0 Intrinsic520380
! Node: AJMax0 Intrinsic520690
! Node: AJMin0 Intrinsic521000
! Node: ASinD Intrinsic521309
! Node: ATan2D Intrinsic521615
! Node: ATanD Intrinsic521923
! Node: BITest Intrinsic522229
! Node: BJTest Intrinsic522538
! Node: CDAbs Intrinsic522847
! Node: CDCos Intrinsic523220
! Node: CDExp Intrinsic523595
! Node: CDLog Intrinsic523970
! Node: CDSin Intrinsic524345
! Node: CDSqRt Intrinsic524721
! Node: ChDir Intrinsic (function)525114
! Node: ChMod Intrinsic (function)525943
! Node: CosD Intrinsic527057
! Node: DACosD Intrinsic527369
! Node: DASinD Intrinsic527677
! Node: DATan2D Intrinsic527988
! Node: DATanD Intrinsic528302
! Node: Date Intrinsic528611
! Node: DbleQ Intrinsic529330
! Node: DCmplx Intrinsic529634
! Node: DConjg Intrinsic531265
! Node: DCosD Intrinsic531650
! Node: DFloat Intrinsic531956
! Node: DFlotI Intrinsic532328
! Node: DFlotJ Intrinsic532638
! Node: DImag Intrinsic532947
! Node: DReal Intrinsic533324
! Node: DSinD Intrinsic534471
! Node: DTanD Intrinsic534775
! Node: DTime Intrinsic (function)535090
! Node: FGet Intrinsic (function)536320
! Node: FGetC Intrinsic (function)537093
! Node: FloatI Intrinsic537909
! Node: FloatJ Intrinsic538229
! Node: FPut Intrinsic (function)538548
! Node: FPutC Intrinsic (function)539284
! Node: IDate Intrinsic (VXT)540077
! Node: IIAbs Intrinsic541121
! Node: IIAnd Intrinsic541431
! Node: IIBClr Intrinsic541736
! Node: IIBits Intrinsic542045
! Node: IIBSet Intrinsic542355
! Node: IIDiM Intrinsic542664
! Node: IIDInt Intrinsic542970
! Node: IIDNnt Intrinsic543279
! Node: IIEOr Intrinsic543588
! Node: IIFix Intrinsic543893
! Node: IInt Intrinsic544196
! Node: IIOr Intrinsic544495
! Node: IIQint Intrinsic544795
! Node: IIQNnt Intrinsic545103
! Node: IIShftC Intrinsic545414
! Node: IISign Intrinsic545728
! Node: IMax0 Intrinsic546038
! Node: IMax1 Intrinsic546343
! Node: IMin0 Intrinsic546647
! Node: IMin1 Intrinsic546951
! Node: IMod Intrinsic547254
! Node: INInt Intrinsic547554
! Node: INot Intrinsic547856
! Node: IZExt Intrinsic548156
! Node: JIAbs Intrinsic548459
! Node: JIAnd Intrinsic548763
! Node: JIBClr Intrinsic549068
! Node: JIBits Intrinsic549377
! Node: JIBSet Intrinsic549687
! Node: JIDiM Intrinsic549996
! Node: JIDInt Intrinsic550302
! Node: JIDNnt Intrinsic550611
! Node: JIEOr Intrinsic550920
! Node: JIFix Intrinsic551225
! Node: JInt Intrinsic551528
! Node: JIOr Intrinsic551827
! Node: JIQint Intrinsic552127
! Node: JIQNnt Intrinsic552435
! Node: JIShft Intrinsic552745
! Node: JIShftC Intrinsic553056
! Node: JISign Intrinsic553370
! Node: JMax0 Intrinsic553680
! Node: JMax1 Intrinsic553985
! Node: JMin0 Intrinsic554289
! Node: JMin1 Intrinsic554593
! Node: JMod Intrinsic554896
! Node: JNInt Intrinsic555196
! Node: JNot Intrinsic555498
! Node: JZExt Intrinsic555798
! Node: Kill Intrinsic (function)556111
! Node: Link Intrinsic (function)556793
! Node: QAbs Intrinsic557605
! Node: QACos Intrinsic557915
! Node: QACosD Intrinsic558219
! Node: QASin Intrinsic558527
! Node: QASinD Intrinsic558833
! Node: QATan Intrinsic559141
! Node: QATan2 Intrinsic559447
! Node: QATan2D Intrinsic559757
! Node: QATanD Intrinsic560071
! Node: QCos Intrinsic560380
! Node: QCosD Intrinsic560681
! Node: QCosH Intrinsic560984
! Node: QDiM Intrinsic561287
! Node: QExp Intrinsic561586
! Node: QExt Intrinsic561884
! Node: QExtD Intrinsic562183
! Node: QFloat Intrinsic562487
! Node: QInt Intrinsic562794
! Node: QLog Intrinsic563094
! Node: QLog10 Intrinsic563394
! Node: QMax1 Intrinsic563701
! Node: QMin1 Intrinsic564006
! Node: QMod Intrinsic564309
! Node: QNInt Intrinsic564609
! Node: QSin Intrinsic564911
! Node: QSinD Intrinsic565211
! Node: QSinH Intrinsic565514
! Node: QSqRt Intrinsic565818
! Node: QTan Intrinsic566121
! Node: QTanD Intrinsic566421
! Node: QTanH Intrinsic566724
! Node: Rename Intrinsic (function)567040
! Node: Secnds Intrinsic567845
! Node: Signal Intrinsic (function)568444
! Node: SinD Intrinsic571273
! Node: SnglQ Intrinsic571585
! Node: SymLnk Intrinsic (function)571900
! Node: System Intrinsic (function)572768
! Node: TanD Intrinsic574095
! Node: Time Intrinsic (VXT)574412
! Node: UMask Intrinsic (function)575166
! Node: Unlink Intrinsic (function)575774
! Node: ZExt Intrinsic576503
! Node: Other Compilers576791
! Node: Dropping f2c Compatibility579311
! Node: Compilers Other Than f2c582383
! Node: Other Languages584181
! Node: Interoperating with C and C++584446
! Node: C Interfacing Tools585479
! Node: C Access to Type Information586407
! Node: f2c Skeletons and Prototypes587094
! Ref: f2c Skeletons and Prototypes-Footnote-1588541
! Node: C++ Considerations588795
! Node: Startup Code589450
! Node: Debugging and Interfacing594239
! Node: Main Program Unit596926
! Node: Procedures599420
! Node: Functions602078
! Node: Names603696
! Node: Common Blocks606839
! Node: Local Equivalence Areas607103
! Node: Complex Variables608087
! Node: Arrays609207
! Node: Adjustable Arrays612541
! Node: Alternate Entry Points615400
! Node: Alternate Returns622102
! Node: Assigned Statement Labels623003
! Node: Run-time Library Errors624848
! Node: Collected Fortran Wisdom626800
! Node: Advantages Over f2c628236
! Node: Language Extensions629217
! Node: Diagnostic Abilities630391
! Node: Compiler Options630782
! Node: Compiler Speed631830
! Node: Program Speed632540
! Node: Ease of Debugging634125
! Node: Character and Hollerith Constants636555
! Node: Block Data and Libraries637527
! Node: Loops640856
! Node: Working Programs646082
! Node: Not My Type646826
! Node: Variables Assumed To Be Zero648757
! Node: Variables Assumed To Be Saved649811
! Node: Unwanted Variables651181
! Node: Unused Arguments652061
! Node: Surprising Interpretations of Code652524
! Node: Aliasing Assumed To Work653371
! Node: Output Assumed To Flush659568
! Node: Large File Unit Numbers662341
! Node: Floating-point precision664493
! Node: Inconsistent Calling Sequences665754
! Node: Overly Convenient Options666734
! Node: Faster Programs670040
! Node: Aligned Data670486
! Node: Prefer Automatic Uninitialized Variables675363
! Node: Avoid f2c Compatibility676729
! Node: Use Submodel Options677197
! Node: Trouble678201
! Node: But-bugs679663
! Node: Signal 11 and Friends681436
! Node: Cannot Link Fortran Programs683516
! Node: Large Common Blocks684799
! Node: Debugger Problems685225
! Node: NeXTStep Problems685940
! Node: Stack Overflow687766
! Node: Nothing Happens690655
! Node: Strange Behavior at Run Time692269
! Node: Floating-point Errors694758
! Node: Known Bugs701052
! Node: Missing Features708351
! Node: Better Source Model710278
! Node: Fortran 90 Support712047
! Node: Intrinsics in PARAMETER Statements713148
! Node: Arbitrary Concatenation713899
! Node: SELECT CASE on CHARACTER Type714302
! Node: RECURSIVE Keyword714589
! Node: Increasing Precision/Range715016
! Node: Popular Non-standard Types716554
! Node: Full Support for Compiler Types716893
! Node: Array Bounds Expressions717529
! Node: POINTER Statements717976
! Node: Sensible Non-standard Constructs718859
! Node: READONLY Keyword721185
! Node: FLUSH Statement722095
! Node: Expressions in FORMAT Statements722465
! Node: Explicit Assembler Code723640
! Node: Q Edit Descriptor723929
! Node: Old-style PARAMETER Statements724433
! Node: TYPE and ACCEPT I/O Statements725167
! Node: STRUCTURE UNION RECORD MAP725733
! Node: OPEN CLOSE and INQUIRE Keywords726219
! Node: ENCODE and DECODE727199
! Node: AUTOMATIC Statement728294
! Node: Suppressing Space Padding729541
! Node: Fortran Preprocessor730768
! Node: Bit Operations on Floating-point Data731341
! Node: Really Ugly Character Assignments731874
! Node: POSIX Standard732249
! Node: Floating-point Exception Handling732489
! Node: Nonportable Conversions733893
! Node: Large Automatic Arrays734436
! Node: Support for Threads734843
! Node: Enabling Debug Lines735268
! Node: Better Warnings735645
! Node: Gracefully Handle Sensible Bad Code737281
! Node: Non-standard Conversions738025
! Node: Non-standard Intrinsics738368
! Node: Modifying DO Variable738784
! Node: Better Pedantic Compilation739460
! Node: Warn About Implicit Conversions740088
! Node: Invalid Use of Hollerith Constant740675
! Node: Dummy Array Without Dimensioning Dummy741218
! Node: Invalid FORMAT Specifiers742131
! Node: Ambiguous Dialects742532
! Node: Unused Labels742943
! Node: Informational Messages743165
! Node: Uninitialized Variables at Run Time743568
! Node: Portable Unformatted Files744174
! Ref: Portable Unformatted Files-Footnote-1747130
! Node: Better List-directed I/O747158
! Node: Default to Console I/O748063
! Node: Labels Visible to Debugger748711
! Node: Disappointments749112
! Node: Mangling of Names749750
! Node: Multiple Definitions of External Names750600
! Node: Limitation on Implicit Declarations751963
! Node: Non-bugs752247
! Node: Backslash in Constants753372
! Node: Initializing Before Specifying758261
! Node: Context-Sensitive Intrinsicness759403
! Node: Context-Sensitive Constants761299
! Node: Equivalence Versus Equality764255
! Node: Order of Side Effects767298
! Node: Warnings and Errors769026
! Node: Open Questions770424
! Node: Bugs770893
! Node: Bug Criteria772332
! Node: Bug Lists778565
! Node: Bug Reporting779354
! Node: Service792970
! Node: Adding Options793436
! Node: Projects798029
! Node: Efficiency798964
! Node: Better Optimization801861
! Node: Simplify Porting805231
! Node: More Extensions806986
! Node: Machine Model810074
! Node: Internals Documentation811360
! Node: Internals Improvements811667
! Node: Better Diagnostics815211
! Node: Front End816128
! Node: Overview of Sources816915
! Node: Overview of Translation Process824304
! Node: g77stripcard828582
! Node: lex.c831059
! Node: sta.c840599
! Node: sti.c840710
! Node: stq.c840821
! Node: stb.c840932
! Node: expr.c841044
! Node: stc.c841158
! Node: std.c841270
! Node: ste.c841381
! Node: Gotchas (Transforming)841509
! Node: TBD (Transforming)849628
! Node: Philosophy of Code Generation852324
! Node: Two-pass Design858228
! Node: Two-pass Code859385
! Node: Why Two Passes860118
! Node: Challenges Posed866186
! Node: Transforming Statements868670
! Node: Statements Needing Temporaries869520
! Node: Transforming DO WHILE872284
! Node: Transforming Iterative DO873467
! Node: Transforming Block IF874296
! Node: Transforming SELECT CASE875661
! Node: Transforming Expressions878883
! Node: Internal Naming Conventions880872
! Node: Diagnostics883872
! Node: CMPAMBIG885262
! Node: EXPIMP891679
! Node: INTGLOB892915
! Node: LEX895159
! Node: GLOBALS900614
! Node: LINKFAIL903278
! Node: Y2KBAD903902
! Node: Index904252
End Tag Table
--- 84,765 ----
Node: Code Gen Options109266
Node: Environment Variables124173
Node: News124628
! Node: Changes176633
! Node: Language202068
! Node: Direction of Language Development204271
! Node: Standard Support210510
! Node: No Passing External Assumed-length211231
! Node: No Passing Dummy Assumed-length211708
! Node: No Pathological Implied-DO212223
! Node: No Useless Implied-DO212910
! Node: Conformance213641
! Node: Notation Used215664
! Node: Terms and Concepts219870
! Node: Syntactic Items220382
! Node: Statements Comments Lines221064
! Node: Scope of Names and Labels222929
! Node: Characters Lines Sequence223359
! Node: Character Set223965
! Node: Lines224966
! Node: Continuation Line227442
! Node: Statements228397
! Node: Statement Labels229353
! Node: Order230045
! Node: INCLUDE230930
! Node: Cpp-style directives233702
! Node: Data Types and Constants234157
! Node: Types237678
! Node: Double Notation238767
! Node: Star Notation239839
! Node: Kind Notation242784
! Node: Constants251204
! Node: Integer Type252720
! Node: Character Type253318
! Node: Expressions254082
! Node: %LOC()254498
! Node: Specification Statements257228
! Node: NAMELIST257685
! Node: DOUBLE COMPLEX258436
! Node: Control Statements258690
! Node: DO WHILE259182
! Node: END DO259487
! Node: Construct Names260494
! Node: CYCLE and EXIT261234
! Node: Functions and Subroutines263998
! Node: %VAL()264644
! Node: %REF()266008
! Node: %DESCR()267836
! Node: Generics and Specifics269969
! Node: REAL() and AIMAG() of Complex277171
! Node: CMPLX() of DOUBLE PRECISION279004
! Node: MIL-STD 1753280730
! Node: f77/f2c Intrinsics281072
! Node: Table of Intrinsic Functions281642
! Node: Abort Intrinsic298354
! Node: Abs Intrinsic298618
! Node: Access Intrinsic299481
! Node: AChar Intrinsic300317
! Node: ACos Intrinsic300839
! Node: AdjustL Intrinsic301300
! Node: AdjustR Intrinsic301625
! Node: AImag Intrinsic301951
! Node: AInt Intrinsic302756
! Node: Alarm Intrinsic303384
! Node: All Intrinsic304216
! Node: Allocated Intrinsic304528
! Node: ALog Intrinsic304857
! Node: ALog10 Intrinsic305247
! Node: AMax0 Intrinsic305645
! Node: AMax1 Intrinsic306130
! Node: AMin0 Intrinsic306583
! Node: AMin1 Intrinsic307067
! Node: AMod Intrinsic307519
! Node: And Intrinsic307945
! Node: ANInt Intrinsic308451
! Node: Any Intrinsic309215
! Node: ASin Intrinsic309522
! Node: Associated Intrinsic309980
! Node: ATan Intrinsic310314
! Node: ATan2 Intrinsic310780
! Node: BesJ0 Intrinsic311331
! Node: BesJ1 Intrinsic311792
! Node: BesJN Intrinsic312253
! Node: BesY0 Intrinsic312784
! Node: BesY1 Intrinsic313246
! Node: BesYN Intrinsic313708
! Node: Bit_Size Intrinsic314243
! Node: BTest Intrinsic314902
! Node: CAbs Intrinsic315622
! Node: CCos Intrinsic316009
! Node: Ceiling Intrinsic316401
! Node: CExp Intrinsic316723
! Node: Char Intrinsic317115
! Node: ChDir Intrinsic (subroutine)318369
! Node: ChMod Intrinsic (subroutine)319373
! Node: CLog Intrinsic320644
! Node: Cmplx Intrinsic321048
! Node: Complex Intrinsic321849
! Node: Conjg Intrinsic323295
! Node: Cos Intrinsic323719
! Node: CosH Intrinsic324182
! Node: Count Intrinsic324557
! Node: CPU_Time Intrinsic324875
! Node: CShift Intrinsic325666
! Node: CSin Intrinsic325988
! Node: CSqRt Intrinsic326380
! Node: CTime Intrinsic (subroutine)326790
! Node: CTime Intrinsic (function)327545
! Node: DAbs Intrinsic328179
! Node: DACos Intrinsic328575
! Node: DASin Intrinsic328966
! Node: DATan Intrinsic329358
! Node: DATan2 Intrinsic329751
! Node: Date_and_Time Intrinsic330206
! Node: DbesJ0 Intrinsic331570
! Node: DbesJ1 Intrinsic331963
! Node: DbesJN Intrinsic332349
! Node: DbesY0 Intrinsic332805
! Node: DbesY1 Intrinsic333191
! Node: DbesYN Intrinsic333577
! Node: Dble Intrinsic334031
! Node: DCos Intrinsic334737
! Node: DCosH Intrinsic335121
! Node: DDiM Intrinsic335511
! Node: DErF Intrinsic335943
! Node: DErFC Intrinsic336312
! Node: DExp Intrinsic336687
! Node: Digits Intrinsic337073
! Node: DiM Intrinsic337390
! Node: DInt Intrinsic337889
! Node: DLog Intrinsic338273
! Node: DLog10 Intrinsic338658
! Node: DMax1 Intrinsic339056
! Node: DMin1 Intrinsic339510
! Node: DMod Intrinsic339962
! Node: DNInt Intrinsic340390
! Node: Dot_Product Intrinsic340789
! Node: DProd Intrinsic341129
! Node: DSign Intrinsic341511
! Node: DSin Intrinsic341950
! Node: DSinH Intrinsic342335
! Node: DSqRt Intrinsic342726
! Node: DTan Intrinsic343117
! Node: DTanH Intrinsic343502
! Node: DTime Intrinsic (subroutine)343906
! Node: EOShift Intrinsic345177
! Node: Epsilon Intrinsic345516
! Node: ErF Intrinsic345840
! Node: ErFC Intrinsic346246
! Node: ETime Intrinsic (subroutine)346806
! Node: ETime Intrinsic (function)347969
! Node: Exit Intrinsic349009
! Node: Exp Intrinsic349518
! Node: Exponent Intrinsic349980
! Node: FDate Intrinsic (subroutine)350319
! Node: FDate Intrinsic (function)351229
! Node: FGet Intrinsic (subroutine)352001
! Node: FGetC Intrinsic (subroutine)352838
! Node: Float Intrinsic353715
! Node: Floor Intrinsic354115
! Node: Flush Intrinsic354431
! Node: FNum Intrinsic355010
! Node: FPut Intrinsic (subroutine)355458
! Node: FPutC Intrinsic (subroutine)356255
! Node: Fraction Intrinsic357102
! Node: FSeek Intrinsic357443
! Node: FStat Intrinsic (subroutine)358168
! Node: FStat Intrinsic (function)359693
! Node: FTell Intrinsic (subroutine)360983
! Node: FTell Intrinsic (function)361656
! Node: GError Intrinsic362173
! Node: GetArg Intrinsic362547
! Node: GetCWD Intrinsic (subroutine)363215
! Node: GetCWD Intrinsic (function)364071
! Node: GetEnv Intrinsic364691
! Node: GetGId Intrinsic365278
! Node: GetLog Intrinsic365584
! Node: GetPId Intrinsic366122
! Node: GetUId Intrinsic366430
! Node: GMTime Intrinsic366735
! Node: HostNm Intrinsic (subroutine)367743
! Node: HostNm Intrinsic (function)368833
! Node: Huge Intrinsic369676
! Node: IAbs Intrinsic369999
! Node: IAChar Intrinsic370390
! Node: IAnd Intrinsic370930
! Node: IArgC Intrinsic371418
! Node: IBClr Intrinsic371794
! Node: IBits Intrinsic372305
! Node: IBSet Intrinsic373019
! Node: IChar Intrinsic373521
! Node: IDate Intrinsic (UNIX)374740
! Node: IDiM Intrinsic375543
! Node: IDInt Intrinsic375992
! Node: IDNInt Intrinsic376385
! Node: IEOr Intrinsic376784
! Node: IErrNo Intrinsic377282
! Node: IFix Intrinsic377609
! Node: Imag Intrinsic377997
! Node: ImagPart Intrinsic379002
! Node: Index Intrinsic380028
! Node: Int Intrinsic380581
! Node: Int2 Intrinsic381296
! Node: Int8 Intrinsic382006
! Node: IOr Intrinsic382716
! Node: IRand Intrinsic383196
! Node: IsaTty Intrinsic384116
! Node: IShft Intrinsic384540
! Node: IShftC Intrinsic385370
! Node: ISign Intrinsic386299
! Node: ITime Intrinsic386749
! Node: Kill Intrinsic (subroutine)387151
! Node: Kind Intrinsic387988
! Node: LBound Intrinsic388313
! Node: Len Intrinsic388630
! Node: Len_Trim Intrinsic389266
! Node: LGe Intrinsic389678
! Node: LGt Intrinsic391091
! Node: Link Intrinsic (subroutine)391996
! Node: LLe Intrinsic392961
! Node: LLt Intrinsic393866
! Node: LnBlnk Intrinsic394760
! Node: Loc Intrinsic395163
! Node: Log Intrinsic395594
! Node: Log10 Intrinsic396185
! Node: Logical Intrinsic396727
! Node: Long Intrinsic397050
! Node: LShift Intrinsic397574
! Node: LStat Intrinsic (subroutine)398610
! Node: LStat Intrinsic (function)400422
! Node: LTime Intrinsic401985
! Node: MatMul Intrinsic402989
! Node: Max Intrinsic403307
! Node: Max0 Intrinsic403858
! Node: Max1 Intrinsic404309
! Node: MaxExponent Intrinsic404793
! Node: MaxLoc Intrinsic405133
! Node: MaxVal Intrinsic405460
! Node: MClock Intrinsic405782
! Node: MClock8 Intrinsic406680
! Node: Merge Intrinsic407868
! Node: Min Intrinsic408184
! Node: Min0 Intrinsic408735
! Node: Min1 Intrinsic409186
! Node: MinExponent Intrinsic409670
! Node: MinLoc Intrinsic410010
! Node: MinVal Intrinsic410337
! Node: Mod Intrinsic410656
! Node: Modulo Intrinsic411179
! Node: MvBits Intrinsic411498
! Node: Nearest Intrinsic412364
! Node: NInt Intrinsic412688
! Node: Not Intrinsic413526
! Node: Or Intrinsic413921
! Node: Pack Intrinsic414419
! Node: PError Intrinsic414729
! Node: Precision Intrinsic415183
! Node: Present Intrinsic415518
! Node: Product Intrinsic415848
! Node: Radix Intrinsic416174
! Node: Rand Intrinsic416491
! Node: Random_Number Intrinsic417378
! Node: Random_Seed Intrinsic417731
! Node: Range Intrinsic418079
! Node: Real Intrinsic418400
! Node: RealPart Intrinsic419406
! Node: Rename Intrinsic (subroutine)420439
! Node: Repeat Intrinsic421411
! Node: Reshape Intrinsic421747
! Node: RRSpacing Intrinsic422076
! Node: RShift Intrinsic422411
! Node: Scale Intrinsic423409
! Node: Scan Intrinsic423725
! Node: Second Intrinsic (function)424049
! Node: Second Intrinsic (subroutine)424880
! Node: Selected_Int_Kind Intrinsic425855
! Node: Selected_Real_Kind Intrinsic426246
! Node: Set_Exponent Intrinsic426633
! Node: Shape Intrinsic426990
! Node: Short Intrinsic427313
! Node: Sign Intrinsic428009
! Node: Signal Intrinsic (subroutine)428609
! Node: Sin Intrinsic430823
! Node: SinH Intrinsic431298
! Node: Sleep Intrinsic431671
! Node: Sngl Intrinsic432013
! Node: Spacing Intrinsic432402
! Node: Spread Intrinsic432726
! Node: SqRt Intrinsic433047
! Node: SRand Intrinsic433651
! Node: Stat Intrinsic (subroutine)434028
! Node: Stat Intrinsic (function)435643
! Node: Sum Intrinsic437007
! Node: SymLnk Intrinsic (subroutine)437339
! Node: System Intrinsic (subroutine)438371
! Node: System_Clock Intrinsic439310
! Node: Tan Intrinsic440434
! Node: TanH Intrinsic440894
! Node: Time Intrinsic (UNIX)441276
! Node: Time8 Intrinsic442261
! Node: Tiny Intrinsic443440
! Node: Transfer Intrinsic443755
! Node: Transpose Intrinsic444086
! Node: Trim Intrinsic444420
! Node: TtyNam Intrinsic (subroutine)444750
! Node: TtyNam Intrinsic (function)445452
! Node: UBound Intrinsic446021
! Node: UMask Intrinsic (subroutine)446366
! Node: Unlink Intrinsic (subroutine)447063
! Node: Unpack Intrinsic447961
! Node: Verify Intrinsic448296
! Node: XOr Intrinsic448615
! Node: ZAbs Intrinsic449131
! Node: ZCos Intrinsic449500
! Node: ZExp Intrinsic449873
! Node: ZLog Intrinsic450246
! Node: ZSin Intrinsic450619
! Node: ZSqRt Intrinsic450993
! Node: Scope and Classes of Names451350
! Node: Underscores in Symbol Names451832
! Node: I/O452079
! Node: Fortran 90 Features452852
! Node: Other Dialects455654
! Node: Source Form456813
! Node: Carriage Returns458028
! Node: Tabs458357
! Node: Short Lines459230
! Node: Long Lines460204
! Node: Ampersands460815
! Node: Trailing Comment461069
! Node: Debug Line461845
! Node: Dollar Signs462514
! Node: Case Sensitivity462800
! Node: VXT Fortran471416
! Node: Double Quote Meaning472599
! Node: Exclamation Point473527
! Node: Fortran 90474570
! Node: Pedantic Compilation475622
! Node: Distensions479586
! Node: Ugly Implicit Argument Conversion480550
! Node: Ugly Assumed-Size Arrays481164
! Node: Ugly Complex Part Extraction482885
! Node: Ugly Null Arguments484507
! Node: Ugly Conversion of Initializers486110
! Node: Ugly Integer Conversions487875
! Node: Ugly Assigned Labels488983
! Node: Compiler490914
! Node: Compiler Limits491552
! Node: Run-time Environment Limits492443
! Node: Timer Wraparounds494385
! Node: Year 2000 (Y2K) Problems495664
! Node: Array Size500170
! Node: Character-variable Length501355
! Node: Year 10000 (Y10K) Problems501864
! Node: Compiler Types502410
! Node: Compiler Constants507121
! Node: Compiler Intrinsics507980
! Node: Intrinsic Groups508907
! Node: Other Intrinsics512348
! Node: ACosD Intrinsic519946
! Node: AIMax0 Intrinsic520227
! Node: AIMin0 Intrinsic520536
! Node: AJMax0 Intrinsic520846
! Node: AJMin0 Intrinsic521156
! Node: ASinD Intrinsic521465
! Node: ATan2D Intrinsic521771
! Node: ATanD Intrinsic522079
! Node: BITest Intrinsic522385
! Node: BJTest Intrinsic522694
! Node: CDAbs Intrinsic523003
! Node: CDCos Intrinsic523376
! Node: CDExp Intrinsic523751
! Node: CDLog Intrinsic524126
! Node: CDSin Intrinsic524501
! Node: CDSqRt Intrinsic524877
! Node: ChDir Intrinsic (function)525270
! Node: ChMod Intrinsic (function)526099
! Node: CosD Intrinsic527213
! Node: DACosD Intrinsic527525
! Node: DASinD Intrinsic527833
! Node: DATan2D Intrinsic528144
! Node: DATanD Intrinsic528458
! Node: Date Intrinsic528767
! Node: DbleQ Intrinsic529486
! Node: DCmplx Intrinsic529790
! Node: DConjg Intrinsic531421
! Node: DCosD Intrinsic531806
! Node: DFloat Intrinsic532112
! Node: DFlotI Intrinsic532484
! Node: DFlotJ Intrinsic532794
! Node: DImag Intrinsic533103
! Node: DReal Intrinsic533480
! Node: DSinD Intrinsic534627
! Node: DTanD Intrinsic534931
! Node: DTime Intrinsic (function)535246
! Node: FGet Intrinsic (function)536476
! Node: FGetC Intrinsic (function)537249
! Node: FloatI Intrinsic538065
! Node: FloatJ Intrinsic538385
! Node: FPut Intrinsic (function)538704
! Node: FPutC Intrinsic (function)539440
! Node: IDate Intrinsic (VXT)540233
! Node: IIAbs Intrinsic541277
! Node: IIAnd Intrinsic541587
! Node: IIBClr Intrinsic541892
! Node: IIBits Intrinsic542201
! Node: IIBSet Intrinsic542511
! Node: IIDiM Intrinsic542820
! Node: IIDInt Intrinsic543126
! Node: IIDNnt Intrinsic543435
! Node: IIEOr Intrinsic543744
! Node: IIFix Intrinsic544049
! Node: IInt Intrinsic544352
! Node: IIOr Intrinsic544651
! Node: IIQint Intrinsic544951
! Node: IIQNnt Intrinsic545259
! Node: IIShftC Intrinsic545570
! Node: IISign Intrinsic545884
! Node: IMax0 Intrinsic546194
! Node: IMax1 Intrinsic546499
! Node: IMin0 Intrinsic546803
! Node: IMin1 Intrinsic547107
! Node: IMod Intrinsic547410
! Node: INInt Intrinsic547710
! Node: INot Intrinsic548012
! Node: IZExt Intrinsic548312
! Node: JIAbs Intrinsic548615
! Node: JIAnd Intrinsic548919
! Node: JIBClr Intrinsic549224
! Node: JIBits Intrinsic549533
! Node: JIBSet Intrinsic549843
! Node: JIDiM Intrinsic550152
! Node: JIDInt Intrinsic550458
! Node: JIDNnt Intrinsic550767
! Node: JIEOr Intrinsic551076
! Node: JIFix Intrinsic551381
! Node: JInt Intrinsic551684
! Node: JIOr Intrinsic551983
! Node: JIQint Intrinsic552283
! Node: JIQNnt Intrinsic552591
! Node: JIShft Intrinsic552901
! Node: JIShftC Intrinsic553212
! Node: JISign Intrinsic553526
! Node: JMax0 Intrinsic553836
! Node: JMax1 Intrinsic554141
! Node: JMin0 Intrinsic554445
! Node: JMin1 Intrinsic554749
! Node: JMod Intrinsic555052
! Node: JNInt Intrinsic555352
! Node: JNot Intrinsic555654
! Node: JZExt Intrinsic555954
! Node: Kill Intrinsic (function)556267
! Node: Link Intrinsic (function)556949
! Node: QAbs Intrinsic557761
! Node: QACos Intrinsic558071
! Node: QACosD Intrinsic558375
! Node: QASin Intrinsic558683
! Node: QASinD Intrinsic558989
! Node: QATan Intrinsic559297
! Node: QATan2 Intrinsic559603
! Node: QATan2D Intrinsic559913
! Node: QATanD Intrinsic560227
! Node: QCos Intrinsic560536
! Node: QCosD Intrinsic560837
! Node: QCosH Intrinsic561140
! Node: QDiM Intrinsic561443
! Node: QExp Intrinsic561742
! Node: QExt Intrinsic562040
! Node: QExtD Intrinsic562339
! Node: QFloat Intrinsic562643
! Node: QInt Intrinsic562950
! Node: QLog Intrinsic563250
! Node: QLog10 Intrinsic563550
! Node: QMax1 Intrinsic563857
! Node: QMin1 Intrinsic564162
! Node: QMod Intrinsic564465
! Node: QNInt Intrinsic564765
! Node: QSin Intrinsic565067
! Node: QSinD Intrinsic565367
! Node: QSinH Intrinsic565670
! Node: QSqRt Intrinsic565974
! Node: QTan Intrinsic566277
! Node: QTanD Intrinsic566577
! Node: QTanH Intrinsic566880
! Node: Rename Intrinsic (function)567196
! Node: Secnds Intrinsic568001
! Node: Signal Intrinsic (function)568600
! Node: SinD Intrinsic571429
! Node: SnglQ Intrinsic571741
! Node: SymLnk Intrinsic (function)572056
! Node: System Intrinsic (function)572924
! Node: TanD Intrinsic574251
! Node: Time Intrinsic (VXT)574568
! Node: UMask Intrinsic (function)575322
! Node: Unlink Intrinsic (function)575930
! Node: ZExt Intrinsic576659
! Node: Other Compilers576947
! Node: Dropping f2c Compatibility579467
! Node: Compilers Other Than f2c582539
! Node: Other Languages584337
! Node: Interoperating with C and C++584602
! Node: C Interfacing Tools585635
! Node: C Access to Type Information586563
! Node: f2c Skeletons and Prototypes587250
! Ref: f2c Skeletons and Prototypes-Footnote-1588697
! Node: C++ Considerations588951
! Node: Startup Code589606
! Node: Debugging and Interfacing594395
! Node: Main Program Unit597082
! Node: Procedures599576
! Node: Functions602234
! Node: Names603852
! Node: Common Blocks606995
! Node: Local Equivalence Areas607259
! Node: Complex Variables608243
! Node: Arrays609363
! Node: Adjustable Arrays612697
! Node: Alternate Entry Points615556
! Node: Alternate Returns622258
! Node: Assigned Statement Labels623159
! Node: Run-time Library Errors625004
! Node: Collected Fortran Wisdom626956
! Node: Advantages Over f2c628392
! Node: Language Extensions629373
! Node: Diagnostic Abilities630547
! Node: Compiler Options630938
! Node: Compiler Speed631986
! Node: Program Speed632696
! Node: Ease of Debugging634281
! Node: Character and Hollerith Constants636711
! Node: Block Data and Libraries637683
! Node: Loops641012
! Node: Working Programs646238
! Node: Not My Type646982
! Node: Variables Assumed To Be Zero648913
! Node: Variables Assumed To Be Saved649967
! Node: Unwanted Variables651337
! Node: Unused Arguments652217
! Node: Surprising Interpretations of Code652680
! Node: Aliasing Assumed To Work653527
! Node: Output Assumed To Flush659724
! Node: Large File Unit Numbers662497
! Node: Floating-point precision664649
! Node: Inconsistent Calling Sequences665910
! Node: Overly Convenient Options666890
! Node: Faster Programs670196
! Node: Aligned Data670642
! Node: Prefer Automatic Uninitialized Variables675519
! Node: Avoid f2c Compatibility676885
! Node: Use Submodel Options677353
! Node: Trouble678357
! Node: But-bugs679819
! Node: Signal 11 and Friends681592
! Node: Cannot Link Fortran Programs683672
! Node: Large Common Blocks684955
! Node: Debugger Problems685381
! Node: NeXTStep Problems686096
! Node: Stack Overflow687922
! Node: Nothing Happens690811
! Node: Strange Behavior at Run Time692425
! Node: Floating-point Errors694914
! Node: Known Bugs701208
! Node: Missing Features708507
! Node: Better Source Model710434
! Node: Fortran 90 Support712203
! Node: Intrinsics in PARAMETER Statements713304
! Node: Arbitrary Concatenation714055
! Node: SELECT CASE on CHARACTER Type714458
! Node: RECURSIVE Keyword714745
! Node: Increasing Precision/Range715172
! Node: Popular Non-standard Types716710
! Node: Full Support for Compiler Types717049
! Node: Array Bounds Expressions717685
! Node: POINTER Statements718132
! Node: Sensible Non-standard Constructs719015
! Node: READONLY Keyword721341
! Node: FLUSH Statement722251
! Node: Expressions in FORMAT Statements722621
! Node: Explicit Assembler Code723796
! Node: Q Edit Descriptor724085
! Node: Old-style PARAMETER Statements724589
! Node: TYPE and ACCEPT I/O Statements725323
! Node: STRUCTURE UNION RECORD MAP725889
! Node: OPEN CLOSE and INQUIRE Keywords726375
! Node: ENCODE and DECODE727355
! Node: AUTOMATIC Statement728450
! Node: Suppressing Space Padding729697
! Node: Fortran Preprocessor730924
! Node: Bit Operations on Floating-point Data731497
! Node: Really Ugly Character Assignments732030
! Node: POSIX Standard732405
! Node: Floating-point Exception Handling732645
! Node: Nonportable Conversions734049
! Node: Large Automatic Arrays734592
! Node: Support for Threads734999
! Node: Enabling Debug Lines735424
! Node: Better Warnings735801
! Node: Gracefully Handle Sensible Bad Code737437
! Node: Non-standard Conversions738181
! Node: Non-standard Intrinsics738524
! Node: Modifying DO Variable738940
! Node: Better Pedantic Compilation739616
! Node: Warn About Implicit Conversions740244
! Node: Invalid Use of Hollerith Constant740831
! Node: Dummy Array Without Dimensioning Dummy741374
! Node: Invalid FORMAT Specifiers742287
! Node: Ambiguous Dialects742688
! Node: Unused Labels743099
! Node: Informational Messages743321
! Node: Uninitialized Variables at Run Time743724
! Node: Portable Unformatted Files744330
! Ref: Portable Unformatted Files-Footnote-1747286
! Node: Better List-directed I/O747314
! Node: Default to Console I/O748219
! Node: Labels Visible to Debugger748867
! Node: Disappointments749268
! Node: Mangling of Names749906
! Node: Multiple Definitions of External Names750756
! Node: Limitation on Implicit Declarations752119
! Node: Non-bugs752403
! Node: Backslash in Constants753528
! Node: Initializing Before Specifying758417
! Node: Context-Sensitive Intrinsicness759559
! Node: Context-Sensitive Constants761455
! Node: Equivalence Versus Equality764411
! Node: Order of Side Effects767454
! Node: Warnings and Errors769182
! Node: Open Questions770580
! Node: Bugs771049
! Node: Bug Criteria772488
! Node: Bug Lists778721
! Node: Bug Reporting779510
! Node: Service793126
! Node: Adding Options793592
! Node: Projects798185
! Node: Efficiency799120
! Node: Better Optimization802017
! Node: Simplify Porting805387
! Node: More Extensions807142
! Node: Machine Model810230
! Node: Internals Documentation811516
! Node: Internals Improvements811823
! Node: Better Diagnostics815367
! Node: Front End816284
! Node: Overview of Sources817071
! Node: Overview of Translation Process824460
! Node: g77stripcard828738
! Node: lex.c831215
! Node: sta.c840755
! Node: sti.c840866
! Node: stq.c840977
! Node: stb.c841088
! Node: expr.c841200
! Node: stc.c841314
! Node: std.c841426
! Node: ste.c841537
! Node: Gotchas (Transforming)841665
! Node: TBD (Transforming)849784
! Node: Philosophy of Code Generation852480
! Node: Two-pass Design858384
! Node: Two-pass Code859541
! Node: Why Two Passes860274
! Node: Challenges Posed866342
! Node: Transforming Statements868826
! Node: Statements Needing Temporaries869676
! Node: Transforming DO WHILE872440
! Node: Transforming Iterative DO873623
! Node: Transforming Block IF874452
! Node: Transforming SELECT CASE875817
! Node: Transforming Expressions879039
! Node: Internal Naming Conventions881028
! Node: Diagnostics884028
! Node: CMPAMBIG885418
! Node: EXPIMP891835
! Node: INTGLOB893071
! Node: LEX895315
! Node: GLOBALS900770
! Node: LINKFAIL903434
! Node: Y2KBAD904058
! Node: Index904408
End Tag Table
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-1 gcc-3.2/gcc/f/g77.info-1
*** gcc-3.1.1/gcc/f/g77.info-1 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-1 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
*************** Introduction
*** 43,49 ****
This manual documents how to run, install and port `g77', as well as
its new features and incompatibilities, and how to report bugs. It
! corresponds to the GCC-3.1 version of `g77'.
* Menu:
--- 43,49 ----
This manual documents how to run, install and port `g77', as well as
its new features and incompatibilities, and how to report bugs. It
! corresponds to the GCC-3.2 version of `g77'.
* Menu:
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-10 gcc-3.2/gcc/f/g77.info-10
*** gcc-3.1.1/gcc/f/g77.info-10 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-10 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-11 gcc-3.2/gcc/f/g77.info-11
*** gcc-3.1.1/gcc/f/g77.info-11 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-11 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-12 gcc-3.2/gcc/f/g77.info-12
*** gcc-3.1.1/gcc/f/g77.info-12 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-12 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-13 gcc-3.2/gcc/f/g77.info-13
*** gcc-3.1.1/gcc/f/g77.info-13 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-13 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-14 gcc-3.2/gcc/f/g77.info-14
*** gcc-3.1.1/gcc/f/g77.info-14 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-14 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-15 gcc-3.2/gcc/f/g77.info-15
*** gcc-3.1.1/gcc/f/g77.info-15 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-15 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-16 gcc-3.2/gcc/f/g77.info-16
*** gcc-3.1.1/gcc/f/g77.info-16 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-16 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
*************** Known Bugs In GNU Fortran
*** 42,48 ****
=========================
This section identifies bugs that `g77' _users_ might run into in
! the GCC-3.1 version of `g77'. This includes bugs that are actually in
the `gcc' back end (GBE) or in `libf2c', because those sets of code are
at least somewhat under the control of (and necessarily intertwined
with) `g77', so it isn't worth separating them out.
--- 42,48 ----
=========================
This section identifies bugs that `g77' _users_ might run into in
! the GCC-3.2 version of `g77'. This includes bugs that are actually in
the `gcc' back end (GBE) or in `libf2c', because those sets of code are
at least somewhat under the control of (and necessarily intertwined
with) `g77', so it isn't worth separating them out.
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-17 gcc-3.2/gcc/f/g77.info-17
*** gcc-3.1.1/gcc/f/g77.info-17 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-17 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-18 gcc-3.2/gcc/f/g77.info-18
*** gcc-3.1.1/gcc/f/g77.info-18 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-18 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-19 gcc-3.2/gcc/f/g77.info-19
*** gcc-3.1.1/gcc/f/g77.info-19 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-19 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-2 gcc-3.2/gcc/f/g77.info-2
*** gcc-3.1.1/gcc/f/g77.info-2 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-2 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-20 gcc-3.2/gcc/f/g77.info-20
*** gcc-3.1.1/gcc/f/g77.info-20 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-20 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-21 gcc-3.2/gcc/f/g77.info-21
*** gcc-3.1.1/gcc/f/g77.info-21 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-21 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-3 gcc-3.2/gcc/f/g77.info-3
*** gcc-3.1.1/gcc/f/g77.info-3 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-3 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-4 gcc-3.2/gcc/f/g77.info-4
*** gcc-3.1.1/gcc/f/g77.info-4 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-4 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
*************** clarify how they differ from other versi
*** 75,88 ****
getting a complete picture of what a particular `egcs' version contains
somewhat more difficult.
! For information on bugs in the GCC-3.1 version of `g77', see *Note
Known Bugs In GNU Fortran: Known Bugs.
An online, "live" version of this document (derived directly from
the mainline, development version of `g77' within `gcc') is available at
`http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
! The following information was last updated on 2002-06-30:
In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
=============================================================
--- 75,93 ----
getting a complete picture of what a particular `egcs' version contains
somewhat more difficult.
! For information on bugs in the GCC-3.2 version of `g77', see *Note
Known Bugs In GNU Fortran: Known Bugs.
An online, "live" version of this document (derived directly from
the mainline, development version of `g77' within `gcc') is available at
`http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'.
! The following information was last updated on 2002-08-05:
!
! In `GCC' 3.2 versus `GCC' 3.1:
! ==============================
!
! * Nothing.
In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
=============================================================
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-5 gcc-3.2/gcc/f/g77.info-5
*** gcc-3.1.1/gcc/f/g77.info-5 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-5 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
*************** clarify how they differ from other versi
*** 59,68 ****
getting a complete picture of what a particular `egcs' version contains
somewhat more difficult.
! For information on bugs in the GCC-3.1 version of `g77', see *Note
Known Bugs In GNU Fortran: Known Bugs.
! The following information was last updated on 2002-06-30:
In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
=============================================================
--- 59,73 ----
getting a complete picture of what a particular `egcs' version contains
somewhat more difficult.
! For information on bugs in the GCC-3.2 version of `g77', see *Note
Known Bugs In GNU Fortran: Known Bugs.
! The following information was last updated on 2002-08-05:
!
! In `GCC' 3.2 versus `GCC' 3.1:
! ==============================
!
! * Nothing.
In `GCC' 3.1 (formerly known as g77-0.5.27) versus `GCC' 3.0:
=============================================================
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-6 gcc-3.2/gcc/f/g77.info-6
*** gcc-3.1.1/gcc/f/g77.info-6 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-6 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-7 gcc-3.2/gcc/f/g77.info-7
*** gcc-3.1.1/gcc/f/g77.info-7 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-7 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-8 gcc-3.2/gcc/f/g77.info-8
*** gcc-3.1.1/gcc/f/g77.info-8 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-8 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/g77.info-9 gcc-3.2/gcc/f/g77.info-9
*** gcc-3.1.1/gcc/f/g77.info-9 Thu Jul 25 23:56:19 2002
--- gcc-3.2/gcc/f/g77.info-9 Wed Aug 14 09:36:34 2002
*************** START-INFO-DIR-ENTRY
*** 5,11 ****
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.1 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
--- 5,11 ----
* g77: (g77). The GNU Fortran compiler.
END-INFO-DIR-ENTRY
This file documents the use and the internals of the GNU Fortran
! (`g77') compiler. It corresponds to the GCC-3.2 version of `g77'.
Published by the Free Software Foundation 59 Temple Place - Suite 330
Boston, MA 02111-1307 USA
diff -Nrc3pad gcc-3.1.1/gcc/f/news.texi gcc-3.2/gcc/f/news.texi
*** gcc-3.1.1/gcc/f/news.texi Sun Jun 30 11:00:17 2002
--- gcc-3.2/gcc/f/news.texi Sun Aug 4 21:28:02 2002
***************
*** 10,16 ****
@c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002
! @set last-update-news 2002-06-30
@include root.texi
--- 10,16 ----
@c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002
! @set last-update-news 2002-08-05
@include root.texi
*************** is available at
*** 153,158 ****
--- 153,164 ----
The following information was last updated on @value{last-update-news}:
+ @heading In @code{GCC} 3.2 versus @code{GCC} 3.1:
+ @itemize @bullet
+ @item
+ Nothing.
+ @end itemize
+
@heading In @code{GCC} 3.1 (formerly known as g77-0.5.27) versus @code{GCC} 3.0:
@itemize @bullet
@item
diff -Nrc3pad gcc-3.1.1/gcc/f/root.texi gcc-3.2/gcc/f/root.texi
*** gcc-3.1.1/gcc/f/root.texi Sat Apr 20 11:07:45 2002
--- gcc-3.2/gcc/f/root.texi Sun Aug 4 16:55:55 2002
***************
*** 3,9 ****
@c (e.g. a release branch in the CVS repository for gcc),
@c clear this and set the version information correctly.
@clear DEVELOPMENT
! @set version-gcc 3.1
@set email-general gcc@@gcc.gnu.org
@set email-help gcc-help@@gcc.gnu.org
--- 3,9 ----
@c (e.g. a release branch in the CVS repository for gcc),
@c clear this and set the version information correctly.
@clear DEVELOPMENT
! @set version-gcc 3.2
@set email-general gcc@@gcc.gnu.org
@set email-help gcc-help@@gcc.gnu.org
diff -Nrc3pad gcc-3.1.1/gcc/f/version.c gcc-3.2/gcc/f/version.c
*** gcc-3.1.1/gcc/f/version.c Thu Jul 25 23:40:35 2002
--- gcc-3.2/gcc/f/version.c Wed Aug 14 09:01:21 2002
***************
*** 1,4 ****
#include "ansidecl.h"
#include "f/version.h"
! const char *const ffe_version_string = "3.1.1 20020725 (release)";
--- 1,4 ----
#include "ansidecl.h"
#include "f/version.h"
! const char *const ffe_version_string = "3.2 20020814 (release)";
diff -Nrc3pad gcc-3.1.1/gcc/gcc.c gcc-3.2/gcc/gcc.c
*** gcc-3.1.1/gcc/gcc.c Tue Apr 23 22:53:29 2002
--- gcc-3.2/gcc/gcc.c Thu Aug 1 20:14:57 2002
*************** static const char *cpp_unique_options =
*** 675,681 ****
%{MMD:-MMD %W{!o: %b.d}%W{o*:%.d%*}}\
%{M} %{MM} %W{MF*} %{MG} %{MP} %{MQ*} %{MT*}\
%{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}}\
! %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3}\
%{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\
%{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
%{fno-inline|O0|!O*:-D__NO_INLINE__} %{ffast-math:-D__FAST_MATH__}\
--- 675,681 ----
%{MMD:-MMD %W{!o: %b.d}%W{o*:%.d%*}}\
%{M} %{MM} %W{MF*} %{MG} %{MP} %{MQ*} %{MT*}\
%{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}}\
! %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3 -D__GXX_ABI_VERSION=102}\
%{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\
%{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
%{fno-inline|O0|!O*:-D__NO_INLINE__} %{ffast-math:-D__FAST_MATH__}\
diff -Nrc3pad gcc-3.1.1/gcc/intl/ChangeLog gcc-3.2/gcc/intl/ChangeLog
*** gcc-3.1.1/gcc/intl/ChangeLog Thu Jul 25 23:35:20 2002
--- gcc-3.2/gcc/intl/ChangeLog Wed Aug 14 09:00:18 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/java/ChangeLog gcc-3.2/gcc/java/ChangeLog
*** gcc-3.1.1/gcc/java/ChangeLog Thu Jul 25 23:39:32 2002
--- gcc-3.2/gcc/java/ChangeLog Wed Aug 14 09:00:24 2002
***************
*** 1,3 ****
--- 1,11 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
+ 2002-08-04 Joseph S. Myers
+
+ * gcj.texi (version-gcc): Increase to 3.2.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/java/gcj.1 gcc-3.2/gcc/java/gcj.1
*** gcc-3.1.1/gcc/java/gcj.1 Thu Jul 25 23:56:28 2002
--- gcc-3.2/gcc/java/gcj.1 Wed Aug 14 09:36:43 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:27 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:42 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "GCJ 1"
! .TH GCJ 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
gcj \- Ahead-of-time compiler for the Java language
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "GCJ 1"
! .TH GCJ 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gcj \- Ahead-of-time compiler for the Java language
diff -Nrc3pad gcc-3.1.1/gcc/java/gcj.texi gcc-3.2/gcc/java/gcj.texi
*** gcc-3.1.1/gcc/java/gcj.texi Tue Apr 23 23:56:25 2002
--- gcc-3.2/gcc/java/gcj.texi Sun Aug 4 16:55:55 2002
***************
*** 11,17 ****
@set copyrights-gcj 2001, 2002
@c Versions
! @set version-gcc 3.1
@set which-gcj GCC-@value{version-gcc}
@macro gcctabopt{body}
--- 11,17 ----
@set copyrights-gcj 2001, 2002
@c Versions
! @set version-gcc 3.2
@set which-gcj GCC-@value{version-gcc}
@macro gcctabopt{body}
diff -Nrc3pad gcc-3.1.1/gcc/java/gcjh.1 gcc-3.2/gcc/java/gcjh.1
*** gcc-3.1.1/gcc/java/gcjh.1 Thu Jul 25 23:56:28 2002
--- gcc-3.2/gcc/java/gcjh.1 Wed Aug 14 09:36:43 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:28 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:43 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "GCJH 1"
! .TH GCJH 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
gcjh \- generate header files from Java class files
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "GCJH 1"
! .TH GCJH 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gcjh \- generate header files from Java class files
diff -Nrc3pad gcc-3.1.1/gcc/java/gij.1 gcc-3.2/gcc/java/gij.1
*** gcc-3.1.1/gcc/java/gij.1 Thu Jul 25 23:56:29 2002
--- gcc-3.2/gcc/java/gij.1 Wed Aug 14 09:36:44 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:29 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:43 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "GIJ 1"
! .TH GIJ 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
gij \- \s-1GNU\s0 interpreter for Java bytecode
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "GIJ 1"
! .TH GIJ 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
gij \- \s-1GNU\s0 interpreter for Java bytecode
diff -Nrc3pad gcc-3.1.1/gcc/java/jcf-dump.1 gcc-3.2/gcc/java/jcf-dump.1
*** gcc-3.1.1/gcc/java/jcf-dump.1 Thu Jul 25 23:56:28 2002
--- gcc-3.2/gcc/java/jcf-dump.1 Wed Aug 14 09:36:43 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:28 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:43 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "JCF-DUMP 1"
! .TH JCF-DUMP 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
jcf-dump \- print information about Java class files
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "JCF-DUMP 1"
! .TH JCF-DUMP 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
jcf-dump \- print information about Java class files
diff -Nrc3pad gcc-3.1.1/gcc/java/jv-convert.1 gcc-3.2/gcc/java/jv-convert.1
*** gcc-3.1.1/gcc/java/jv-convert.1 Thu Jul 25 23:56:29 2002
--- gcc-3.2/gcc/java/jv-convert.1 Wed Aug 14 09:36:44 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:29 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:44 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "JV-CONVERT 1"
! .TH JV-CONVERT 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
jv-convert \- Convert file from one encoding to another
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "JV-CONVERT 1"
! .TH JV-CONVERT 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
jv-convert \- Convert file from one encoding to another
diff -Nrc3pad gcc-3.1.1/gcc/java/jv-scan.1 gcc-3.2/gcc/java/jv-scan.1
*** gcc-3.1.1/gcc/java/jv-scan.1 Thu Jul 25 23:56:28 2002
--- gcc-3.2/gcc/java/jv-scan.1 Wed Aug 14 09:36:43 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:28 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:43 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "JV-SCAN 1"
! .TH JV-SCAN 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
jv-scan \- print information about Java source file
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "JV-SCAN 1"
! .TH JV-SCAN 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
jv-scan \- print information about Java source file
diff -Nrc3pad gcc-3.1.1/gcc/java/parse-scan.c gcc-3.2/gcc/java/parse-scan.c
*** gcc-3.1.1/gcc/java/parse-scan.c Fri Jul 26 00:14:29 2002
--- gcc-3.2/gcc/java/parse-scan.c Wed Aug 14 09:51:19 2002
***************
*** 1,5 ****
! /* A Bison parser, made from /home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y
by GNU Bison version 1.28 */
#define YYBISON 1 /* Identify Bison output. */
--- 1,5 ----
! /* A Bison parser, made from /home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y
by GNU Bison version 1.28 */
#define YYBISON 1 /* Identify Bison output. */
***************
*** 113,119 ****
#define BOOL_LIT_TK 363
#define NULL_TK 364
! #line 37 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
#define JC1_LITE
--- 113,119 ----
#define BOOL_LIT_TK 363
#define NULL_TK 364
! #line 37 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
#define JC1_LITE
*************** void report PARAMS ((void));
*** 189,201 ****
#include "lex.h"
#include "parse.h"
! #line 113 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
typedef union {
char *node;
struct method_declarator *declarator;
int value; /* For modifiers */
} YYSTYPE;
! #line 119 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
#include "lex.c"
#ifndef YYDEBUG
--- 189,201 ----
#include "lex.h"
#include "parse.h"
! #line 113 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
typedef union {
char *node;
struct method_declarator *declarator;
int value; /* For modifiers */
} YYSTYPE;
! #line 119 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
#include "lex.c"
#ifndef YYDEBUG
*************** yyreduce:
*** 1939,1990 ****
switch (yyn) {
case 10:
! #line 211 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
/* use preset global here. FIXME */
yyval.node = xstrdup ("int");
;
break;}
case 11:
! #line 216 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
/* use preset global here. FIXME */
yyval.node = xstrdup ("double");
;
break;}
case 12:
! #line 221 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
/* use preset global here. FIXME */
yyval.node = xstrdup ("boolean");
;
break;}
case 18:
! #line 246 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
while (bracket_count-- > 0)
yyval.node = concat ("[", yyvsp[-1].node, NULL);
;
break;}
case 19:
! #line 251 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
while (bracket_count-- > 0)
yyval.node = concat ("[", yyvsp[-1].node, NULL);
;
break;}
case 23:
! #line 269 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
yyval.node = concat (yyvsp[-2].node, ".", yyvsp[0].node, NULL);
;
break;}
case 37:
! #line 301 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ package_name = yyvsp[-1].node; ;
break;}
case 45:
! #line 328 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
if (yyvsp[0].value == PUBLIC_TK)
modifier_value++;
--- 1939,1990 ----
switch (yyn) {
case 10:
! #line 211 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
/* use preset global here. FIXME */
yyval.node = xstrdup ("int");
;
break;}
case 11:
! #line 216 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
/* use preset global here. FIXME */
yyval.node = xstrdup ("double");
;
break;}
case 12:
! #line 221 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
/* use preset global here. FIXME */
yyval.node = xstrdup ("boolean");
;
break;}
case 18:
! #line 246 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
while (bracket_count-- > 0)
yyval.node = concat ("[", yyvsp[-1].node, NULL);
;
break;}
case 19:
! #line 251 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
while (bracket_count-- > 0)
yyval.node = concat ("[", yyvsp[-1].node, NULL);
;
break;}
case 23:
! #line 269 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
yyval.node = concat (yyvsp[-2].node, ".", yyvsp[0].node, NULL);
;
break;}
case 37:
! #line 301 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ package_name = yyvsp[-1].node; ;
break;}
case 45:
! #line 328 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
if (yyvsp[0].value == PUBLIC_TK)
modifier_value++;
*************** case 45:
*** 1994,2000 ****
;
break;}
case 46:
! #line 336 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
if (yyvsp[0].value == PUBLIC_TK)
modifier_value++;
--- 1994,2000 ----
;
break;}
case 46:
! #line 336 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
if (yyvsp[0].value == PUBLIC_TK)
modifier_value++;
*************** case 46:
*** 2004,2068 ****
;
break;}
case 47:
! #line 348 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
report_class_declaration(yyvsp[-2].node);
modifier_value = 0;
;
break;}
case 49:
! #line 354 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration(yyvsp[-2].node); ;
break;}
case 55:
! #line 368 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 56:
! #line 370 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 57:
! #line 375 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 58:
! #line 377 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 70:
! #line 403 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 71:
! #line 405 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 76:
! #line 421 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ bracket_count = 0; USE_ABSORBER; ;
break;}
case 77:
! #line 423 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++bracket_count; ;
break;}
case 81:
! #line 438 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 83:
! #line 441 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 84:
! #line 443 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
report_main_declaration (yyvsp[-1].declarator);
modifier_value = 0;
;
break;}
case 85:
! #line 451 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
struct method_declarator *d;
NEW_METHOD_DECLARATOR (d, yyvsp[-2].node, NULL);
--- 2004,2068 ----
;
break;}
case 47:
! #line 348 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
report_class_declaration(yyvsp[-2].node);
modifier_value = 0;
;
break;}
case 49:
! #line 354 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration(yyvsp[-2].node); ;
break;}
case 55:
! #line 368 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 56:
! #line 370 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 57:
! #line 375 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 58:
! #line 377 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 70:
! #line 403 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 71:
! #line 405 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 76:
! #line 421 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ bracket_count = 0; USE_ABSORBER; ;
break;}
case 77:
! #line 423 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++bracket_count; ;
break;}
case 81:
! #line 438 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 83:
! #line 441 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 84:
! #line 443 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
report_main_declaration (yyvsp[-1].declarator);
modifier_value = 0;
;
break;}
case 85:
! #line 451 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
struct method_declarator *d;
NEW_METHOD_DECLARATOR (d, yyvsp[-2].node, NULL);
*************** case 85:
*** 2070,2076 ****
;
break;}
case 86:
! #line 457 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
struct method_declarator *d;
NEW_METHOD_DECLARATOR (d, yyvsp[-3].node, yyvsp[-1].node);
--- 2070,2076 ----
;
break;}
case 86:
! #line 457 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
struct method_declarator *d;
NEW_METHOD_DECLARATOR (d, yyvsp[-3].node, yyvsp[-1].node);
*************** case 86:
*** 2078,2090 ****
;
break;}
case 89:
! #line 468 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
yyval.node = concat (yyvsp[-2].node, ",", yyvsp[0].node, NULL);
;
break;}
case 90:
! #line 475 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
USE_ABSORBER;
if (bracket_count)
--- 2078,2090 ----
;
break;}
case 89:
! #line 468 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
yyval.node = concat (yyvsp[-2].node, ",", yyvsp[0].node, NULL);
;
break;}
case 90:
! #line 475 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
USE_ABSORBER;
if (bracket_count)
*************** case 90:
*** 2101,2107 ****
;
break;}
case 91:
! #line 490 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{
if (bracket_count)
{
--- 2101,2107 ----
;
break;}
case 91:
! #line 490 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{
if (bracket_count)
{
*************** case 91:
*** 2117,2327 ****
;
break;}
case 94:
! #line 511 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 95:
! #line 513 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 99:
! #line 528 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 101:
! #line 539 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 103:
! #line 544 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 104:
! #line 551 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 105:
! #line 553 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 112:
! #line 570 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 113:
! #line 572 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 116:
! #line 584 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[0].node); modifier_value = 0; ;
break;}
case 118:
! #line 587 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[0].node); modifier_value = 0; ;
break;}
case 120:
! #line 590 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[-1].node); modifier_value = 0; ;
break;}
case 122:
! #line 593 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[-1].node); modifier_value = 0; ;
break;}
case 126:
! #line 604 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 127:
! #line 606 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 150:
! #line 665 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 151:
! #line 667 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 175:
! #line 707 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 186:
! #line 735 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 187:
! #line 740 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 188:
! #line 745 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 196:
! #line 765 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 201:
! #line 780 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 205:
! #line 797 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 211:
! #line 815 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 222:
! #line 840 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 225:
! #line 849 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 228:
! #line 859 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 234:
! #line 874 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 235:
! #line 878 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 246:
! #line 900 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 247:
! #line 905 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 248:
! #line 907 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 249:
! #line 909 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 250:
! #line 911 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 258:
! #line 926 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration (NULL); ;
break;}
case 260:
! #line 929 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ report_class_declaration (NULL); ;
break;}
case 262:
! #line 935 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 276:
! #line 967 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ bracket_count = 1; ;
break;}
case 277:
! #line 969 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ bracket_count++; ;
break;}
case 280:
! #line 982 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ++complexity; ;
break;}
case 281:
! #line 984 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ++complexity; ;
break;}
case 282:
! #line 985 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 283:
! #line 986 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 284:
! #line 987 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 285:
! #line 988 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 286:
! #line 993 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 289:
! #line 1000 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 336:
! #line 1096 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 338:
! #line 1102 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 340:
! #line 1108 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 344:
! #line 1122 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
}
--- 2117,2327 ----
;
break;}
case 94:
! #line 511 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 95:
! #line 513 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 99:
! #line 528 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 101:
! #line 539 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 103:
! #line 544 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 104:
! #line 551 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 105:
! #line 553 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 112:
! #line 570 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 113:
! #line 572 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 116:
! #line 584 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[0].node); modifier_value = 0; ;
break;}
case 118:
! #line 587 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[0].node); modifier_value = 0; ;
break;}
case 120:
! #line 590 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[-1].node); modifier_value = 0; ;
break;}
case 122:
! #line 593 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration (yyvsp[-1].node); modifier_value = 0; ;
break;}
case 126:
! #line 604 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 127:
! #line 606 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ pop_class_context (); ;
break;}
case 150:
! #line 665 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 151:
! #line 667 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ modifier_value = 0; ;
break;}
case 175:
! #line 707 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 186:
! #line 735 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 187:
! #line 740 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 188:
! #line 745 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 196:
! #line 765 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 201:
! #line 780 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 205:
! #line 797 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 211:
! #line 815 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 222:
! #line 840 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 225:
! #line 849 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 228:
! #line 859 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 234:
! #line 874 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 235:
! #line 878 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 246:
! #line 900 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 247:
! #line 905 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 248:
! #line 907 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 249:
! #line 909 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 250:
! #line 911 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 258:
! #line 926 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration (NULL); ;
break;}
case 260:
! #line 929 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ report_class_declaration (NULL); ;
break;}
case 262:
! #line 935 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 276:
! #line 967 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ bracket_count = 1; ;
break;}
case 277:
! #line 969 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ bracket_count++; ;
break;}
case 280:
! #line 982 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ++complexity; ;
break;}
case 281:
! #line 984 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ++complexity; ;
break;}
case 282:
! #line 985 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 283:
! #line 986 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 284:
! #line 987 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 285:
! #line 988 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 286:
! #line 993 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 289:
! #line 1000 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
case 336:
! #line 1096 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 338:
! #line 1102 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 340:
! #line 1108 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ ++complexity; ;
break;}
case 344:
! #line 1122 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
{ USE_ABSORBER; ;
break;}
}
*************** yyerrhandle:
*** 2546,2552 ****
}
return 1;
}
! #line 1140 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse-scan.y"
/* Create a new parser context */
--- 2546,2552 ----
}
return 1;
}
! #line 1140 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse-scan.y"
/* Create a new parser context */
diff -Nrc3pad gcc-3.1.1/gcc/java/parse.c gcc-3.2/gcc/java/parse.c
*** gcc-3.1.1/gcc/java/parse.c Fri Jul 26 00:13:01 2002
--- gcc-3.2/gcc/java/parse.c Wed Aug 14 09:49:51 2002
***************
*** 1,5 ****
! /* A Bison parser, made from /home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y
by GNU Bison version 1.28 */
#define YYBISON 1 /* Identify Bison output. */
--- 1,5 ----
! /* A Bison parser, made from /home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y
by GNU Bison version 1.28 */
#define YYBISON 1 /* Identify Bison output. */
***************
*** 120,126 ****
#define BOOL_LIT_TK 363
#define NULL_TK 364
! #line 48 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
#include "config.h"
#include "system.h"
--- 120,126 ----
#define BOOL_LIT_TK 363
#define NULL_TK 364
! #line 48 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
#include "config.h"
#include "system.h"
*************** static tree src_parse_roots[1];
*** 518,524 ****
} while (0)
! #line 446 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
typedef union {
tree node;
int sub_token;
--- 518,524 ----
} while (0)
! #line 446 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
typedef union {
tree node;
int sub_token;
*************** typedef union {
*** 528,534 ****
} operator;
int value;
} YYSTYPE;
! #line 456 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
#include "lex.c"
#ifndef YYDEBUG
--- 528,534 ----
} operator;
int value;
} YYSTYPE;
! #line 456 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
#include "lex.c"
#ifndef YYDEBUG
*************** yyreduce:
*** 2897,2903 ****
switch (yyn) {
case 1:
! #line 607 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Register static variables with the garbage
collector. */
--- 2897,2903 ----
switch (yyn) {
case 1:
! #line 607 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Register static variables with the garbage
collector. */
*************** case 1:
*** 2924,2934 ****
;
break;}
case 2:
! #line 632 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{;
break;}
case 19:
! #line 676 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
int osb = pop_current_osb (ctxp);
tree t = build_java_array_type ((yyvsp[-1].node), -1);
--- 2924,2934 ----
;
break;}
case 2:
! #line 632 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{;
break;}
case 19:
! #line 676 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
int osb = pop_current_osb (ctxp);
tree t = build_java_array_type ((yyvsp[-1].node), -1);
*************** case 19:
*** 2938,2944 ****
;
break;}
case 20:
! #line 684 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
int osb = pop_current_osb (ctxp);
tree t = yyvsp[-1].node;
--- 2938,2944 ----
;
break;}
case 20:
! #line 684 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
int osb = pop_current_osb (ctxp);
tree t = yyvsp[-1].node;
*************** case 20:
*** 2948,2989 ****
;
break;}
case 24:
! #line 705 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 26:
! #line 714 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = NULL;;
break;}
case 34:
! #line 726 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = NULL;
;
break;}
case 35:
! #line 730 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = NULL;
;
break;}
case 38:
! #line 742 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node);
register_package (ctxp->package);
;
break;}
case 39:
! #line 747 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 40:
! #line 749 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 43:
! #line 759 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-1].node), last_name;
int i = IDENTIFIER_LENGTH (name)-1;
--- 2948,2989 ----
;
break;}
case 24:
! #line 705 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = make_qualified_name (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 26:
! #line 714 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = NULL;;
break;}
case 34:
! #line 726 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = NULL;
;
break;}
case 35:
! #line 730 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = NULL;
;
break;}
case 38:
! #line 742 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->package = EXPR_WFL_NODE (yyvsp[-1].node);
register_package (ctxp->package);
;
break;}
case 39:
! #line 747 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 40:
! #line 749 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 43:
! #line 759 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-1].node), last_name;
int i = IDENTIFIER_LENGTH (name)-1;
*************** case 43:
*** 3011,3025 ****
;
break;}
case 44:
! #line 785 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 45:
! #line 787 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 46:
! #line 792 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-3].node);
tree it;
--- 3011,3025 ----
;
break;}
case 44:
! #line 785 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing name"); RECOVER;;
break;}
case 45:
! #line 787 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 46:
! #line 792 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree name = EXPR_WFL_NODE (yyvsp[-3].node);
tree it;
*************** case 46:
*** 3039,3074 ****
;
break;}
case 47:
! #line 810 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'*' expected"); RECOVER;;
break;}
case 48:
! #line 812 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 49:
! #line 817 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ end_class_declaration (0); ;
break;}
case 50:
! #line 819 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ end_class_declaration (0); ;
break;}
case 52:
! #line 822 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYERROR_NOW;
yyerror ("Class or interface declaration expected");
;
break;}
case 53:
! #line 833 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.value = (1 << yyvsp[0].value);
;
break;}
case 54:
! #line 837 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
int acc = (1 << yyvsp[0].value);
if (yyval.value & acc)
--- 3039,3074 ----
;
break;}
case 47:
! #line 810 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'*' expected"); RECOVER;;
break;}
case 48:
! #line 812 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 49:
! #line 817 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ end_class_declaration (0); ;
break;}
case 50:
! #line 819 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ end_class_declaration (0); ;
break;}
case 52:
! #line 822 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYERROR_NOW;
yyerror ("Class or interface declaration expected");
;
break;}
case 53:
! #line 833 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.value = (1 << yyvsp[0].value);
;
break;}
case 54:
! #line 837 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
int acc = (1 << yyvsp[0].value);
if (yyval.value & acc)
*************** case 54:
*** 3082,3164 ****
;
break;}
case 55:
! #line 853 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 57:
! #line 856 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 59:
! #line 859 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 60:
! #line 861 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 61:
! #line 863 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (!ctxp->class_err) yyerror ("'{' expected");
DRECOVER(class1);
;
break;}
case 62:
! #line 868 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;;
break;}
case 63:
! #line 872 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL; ;
break;}
case 64:
! #line 874 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 65:
! #line 876 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); ctxp->class_err=1;;
break;}
case 66:
! #line 878 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing super class name"); ctxp->class_err=1;;
break;}
case 67:
! #line 882 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 68:
! #line 884 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 69:
! #line 886 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->class_err=1;
yyerror ("Missing interface name");
;
break;}
case 70:
! #line 894 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 71:
! #line 899 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 72:
! #line 904 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing interface name"); RECOVER;;
break;}
case 73:
! #line 909 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
--- 3082,3164 ----
;
break;}
case 55:
! #line 853 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_class (yyvsp[-4].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 57:
! #line 856 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_class (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 59:
! #line 859 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 60:
! #line 861 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing class name"); RECOVER;;
break;}
case 61:
! #line 863 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (!ctxp->class_err) yyerror ("'{' expected");
DRECOVER(class1);
;
break;}
case 62:
! #line 868 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{if (!ctxp->class_err) yyerror ("'{' expected"); RECOVER;;
break;}
case 63:
! #line 872 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL; ;
break;}
case 64:
! #line 874 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 65:
! #line 876 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); ctxp->class_err=1;;
break;}
case 66:
! #line 878 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing super class name"); ctxp->class_err=1;;
break;}
case 67:
! #line 882 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 68:
! #line 884 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 69:
! #line 886 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->class_err=1;
yyerror ("Missing interface name");
;
break;}
case 70:
! #line 894 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 71:
! #line 899 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 72:
! #line 904 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing interface name"); RECOVER;;
break;}
case 73:
! #line 909 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
*************** case 73:
*** 3168,3174 ****
;
break;}
case 74:
! #line 917 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
--- 3168,3174 ----
;
break;}
case 74:
! #line 917 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (flag_emit_xref)
*************** case 74:
*** 3178,3184 ****
;
break;}
case 80:
! #line 936 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (yyvsp[0].node != empty_stmt_node)
{
--- 3178,3184 ----
;
break;}
case 80:
! #line 936 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (yyvsp[0].node != empty_stmt_node)
{
*************** case 80:
*** 3188,3206 ****
;
break;}
case 83:
! #line 949 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 84:
! #line 951 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 86:
! #line 958 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ;
break;}
case 87:
! #line 960 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
check_modifiers
("Illegal modifier `%s' for field declaration",
--- 3188,3206 ----
;
break;}
case 83:
! #line 949 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 84:
! #line 951 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 86:
! #line 958 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ register_fields (0, yyvsp[-2].node, yyvsp[-1].node); ;
break;}
case 87:
! #line 960 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
check_modifiers
("Illegal modifier `%s' for field declaration",
*************** case 87:
*** 3210,3228 ****
;
break;}
case 89:
! #line 973 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 90:
! #line 975 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 91:
! #line 980 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ;
break;}
case 92:
! #line 982 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (java_error_count)
yyvsp[0].node = NULL_TREE;
--- 3210,3228 ----
;
break;}
case 89:
! #line 973 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 90:
! #line 975 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 91:
! #line 980 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE); ;
break;}
case 92:
! #line 982 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (java_error_count)
yyvsp[0].node = NULL_TREE;
*************** case 92:
*** 3231,3237 ****
;
break;}
case 93:
! #line 989 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing variable initializer");
yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE);
--- 3231,3237 ----
;
break;}
case 93:
! #line 989 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing variable initializer");
yyval.node = build_tree_list (yyvsp[-2].node, NULL_TREE);
*************** case 93:
*** 3239,3245 ****
;
break;}
case 94:
! #line 995 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("';' expected");
yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE);
--- 3239,3245 ----
;
break;}
case 94:
! #line 995 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("';' expected");
yyval.node = build_tree_list (yyvsp[-3].node, NULL_TREE);
*************** case 94:
*** 3247,3261 ****
;
break;}
case 96:
! #line 1005 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 97:
! #line 1007 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid declaration"); DRECOVER(vdi);;
break;}
case 98:
! #line 1009 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree node = java_lval.node;
if (node && (TREE_CODE (node) == INTEGER_CST
--- 3247,3261 ----
;
break;}
case 96:
! #line 1005 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_unresolved_array_type (yyvsp[-2].node); ;
break;}
case 97:
! #line 1007 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid declaration"); DRECOVER(vdi);;
break;}
case 98:
! #line 1009 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree node = java_lval.node;
if (node && (TREE_CODE (node) == INTEGER_CST
*************** case 98:
*** 3267,3277 ****
;
break;}
case 99:
! #line 1019 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Unbalanced ']'"); DRECOVER(vdi);;
break;}
case 102:
! #line 1030 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
current_function_decl = yyvsp[0].node;
if (current_function_decl
--- 3267,3277 ----
;
break;}
case 99:
! #line 1019 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Unbalanced ']'"); DRECOVER(vdi);;
break;}
case 102:
! #line 1030 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
current_function_decl = yyvsp[0].node;
if (current_function_decl
*************** case 102:
*** 3282,3349 ****
;
break;}
case 103:
! #line 1039 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 104:
! #line 1041 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{YYNOT_TWICE yyerror ("'{' expected"); RECOVER;;
break;}
case 105:
! #line 1046 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 106:
! #line 1048 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 107:
! #line 1050 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 108:
! #line 1052 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 109:
! #line 1054 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Invalid method declaration, method name required");
RECOVER;
;
break;}
case 110:
! #line 1059 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{RECOVER;;
break;}
case 111:
! #line 1061 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 112:
! #line 1063 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 113:
! #line 1065 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Invalid method declaration, return type required");
RECOVER;
;
break;}
case 114:
! #line 1073 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->formal_parameter_number = 0;
yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE);
;
break;}
case 115:
! #line 1078 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 116:
! #line 1080 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
EXPR_WFL_LINECOL (wfl_operator) = yyvsp[-1].operator.location;
TREE_PURPOSE (yyvsp[-2].node) =
--- 3282,3349 ----
;
break;}
case 103:
! #line 1039 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 104:
! #line 1041 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{YYNOT_TWICE yyerror ("'{' expected"); RECOVER;;
break;}
case 105:
! #line 1046 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_header (0, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 106:
! #line 1048 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_header (0, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 107:
! #line 1050 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_header (yyvsp[-3].value, yyvsp[-2].node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 108:
! #line 1052 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_header (yyvsp[-3].value, void_type_node, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 109:
! #line 1054 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Invalid method declaration, method name required");
RECOVER;
;
break;}
case 110:
! #line 1059 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{RECOVER;;
break;}
case 111:
! #line 1061 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 112:
! #line 1063 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Identifier expected"); RECOVER;;
break;}
case 113:
! #line 1065 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Invalid method declaration, return type required");
RECOVER;
;
break;}
case 114:
! #line 1073 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->formal_parameter_number = 0;
yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE);
;
break;}
case 115:
! #line 1078 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 116:
! #line 1080 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
EXPR_WFL_LINECOL (wfl_operator) = yyvsp[-1].operator.location;
TREE_PURPOSE (yyvsp[-2].node) =
*************** case 116:
*** 3354,3412 ****
;
break;}
case 117:
! #line 1089 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); DRECOVER(method_declarator);;
break;}
case 118:
! #line 1091 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 119:
! #line 1096 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->formal_parameter_number = 1;
;
break;}
case 120:
! #line 1100 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 121:
! #line 1105 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyerror ("Missing formal parameter term"); RECOVER; ;
break;}
case 122:
! #line 1110 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
;
break;}
case 123:
! #line 1114 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
ARG_FINAL_P (yyval.node) = 1;
;
break;}
case 124:
! #line 1119 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing identifier"); RECOVER;
yyval.node = NULL_TREE;
;
break;}
case 125:
! #line 1124 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing identifier"); RECOVER;
yyval.node = NULL_TREE;
;
break;}
case 126:
! #line 1132 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
check_modifiers ("Illegal modifier `%s'. Only `final' was expected here",
yyvsp[0].value, ACC_FINAL);
--- 3354,3412 ----
;
break;}
case 117:
! #line 1089 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); DRECOVER(method_declarator);;
break;}
case 118:
! #line 1091 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 119:
! #line 1096 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->formal_parameter_number = 1;
;
break;}
case 120:
! #line 1100 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = chainon (yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 121:
! #line 1105 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyerror ("Missing formal parameter term"); RECOVER; ;
break;}
case 122:
! #line 1110 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
;
break;}
case 123:
! #line 1114 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_tree_list (yyvsp[0].node, yyvsp[-1].node);
ARG_FINAL_P (yyval.node) = 1;
;
break;}
case 124:
! #line 1119 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing identifier"); RECOVER;
yyval.node = NULL_TREE;
;
break;}
case 125:
! #line 1124 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing identifier"); RECOVER;
yyval.node = NULL_TREE;
;
break;}
case 126:
! #line 1132 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
check_modifiers ("Illegal modifier `%s'. Only `final' was expected here",
yyvsp[0].value, ACC_FINAL);
*************** case 126:
*** 3415,3449 ****
;
break;}
case 127:
! #line 1141 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 128:
! #line 1143 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 129:
! #line 1145 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 130:
! #line 1150 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, yyvsp[0].node); ;
break;}
case 131:
! #line 1152 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = tree_cons (yyvsp[0].node, yyvsp[0].node, yyvsp[-2].node); ;
break;}
case 132:
! #line 1154 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 134:
! #line 1159 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 135:
! #line 1165 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
TREE_CHAIN (yyvsp[0].node) = CPC_STATIC_INITIALIZER_STMT (ctxp);
SET_CPC_STATIC_INITIALIZER_STMT (ctxp, yyvsp[0].node);
--- 3415,3449 ----
;
break;}
case 127:
! #line 1141 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 128:
! #line 1143 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 129:
! #line 1145 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 130:
! #line 1150 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_tree_list (yyvsp[0].node, yyvsp[0].node); ;
break;}
case 131:
! #line 1152 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = tree_cons (yyvsp[0].node, yyvsp[0].node, yyvsp[-2].node); ;
break;}
case 132:
! #line 1154 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing class type term"); RECOVER;;
break;}
case 134:
! #line 1159 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 135:
! #line 1165 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
TREE_CHAIN (yyvsp[0].node) = CPC_STATIC_INITIALIZER_STMT (ctxp);
SET_CPC_STATIC_INITIALIZER_STMT (ctxp, yyvsp[0].node);
*************** case 135:
*** 3451,3457 ****
;
break;}
case 136:
! #line 1174 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
check_modifiers ("Illegal modifier `%s' for static initializer", yyvsp[0].value, ACC_STATIC);
/* Can't have a static initializer in an innerclass */
--- 3451,3457 ----
;
break;}
case 136:
! #line 1174 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
check_modifiers ("Illegal modifier `%s' for static initializer", yyvsp[0].value, ACC_STATIC);
/* Can't have a static initializer in an innerclass */
*************** case 136:
*** 3465,3520 ****
;
break;}
case 137:
! #line 1190 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
current_function_decl = yyvsp[0].node;
source_start_java_method (current_function_decl);
;
break;}
case 138:
! #line 1195 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 139:
! #line 1200 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 140:
! #line 1202 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 141:
! #line 1207 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->formal_parameter_number = 0;
yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE);
;
break;}
case 142:
! #line 1212 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 143:
! #line 1220 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
BLOCK_EXPR_BODY (yyvsp[0].node) = empty_stmt_node;
yyval.node = yyvsp[0].node;
;
break;}
case 144:
! #line 1225 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 145:
! #line 1227 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 146:
! #line 1229 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 148:
! #line 1239 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node);
--- 3465,3520 ----
;
break;}
case 137:
! #line 1190 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
current_function_decl = yyvsp[0].node;
source_start_java_method (current_function_decl);
;
break;}
case 138:
! #line 1195 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ finish_method_declaration (yyvsp[0].node); ;
break;}
case 139:
! #line 1200 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_header (0, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 140:
! #line 1202 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_header (yyvsp[-2].value, NULL_TREE, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 141:
! #line 1207 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->formal_parameter_number = 0;
yyval.node = method_declarator (yyvsp[-2].node, NULL_TREE);
;
break;}
case 142:
! #line 1212 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = method_declarator (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 143:
! #line 1220 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
BLOCK_EXPR_BODY (yyvsp[0].node) = empty_stmt_node;
yyval.node = yyvsp[0].node;
;
break;}
case 144:
! #line 1225 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 145:
! #line 1227 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 146:
! #line 1229 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 148:
! #line 1239 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_method_invocation (yyvsp[-3].node, NULL_TREE);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-3].node), yyval.node);
*************** case 148:
*** 3522,3528 ****
;
break;}
case 149:
! #line 1245 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node);
--- 3522,3528 ----
;
break;}
case 149:
! #line 1245 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_method_invocation (yyvsp[-4].node, yyvsp[-2].node);
yyval.node = build_debugable_stmt (EXPR_WFL_LINECOL (yyvsp[-4].node), yyval.node);
*************** case 149:
*** 3530,3544 ****
;
break;}
case 150:
! #line 1253 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
case 151:
! #line 1255 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
case 152:
! #line 1260 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
--- 3530,3544 ----
;
break;}
case 150:
! #line 1253 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
case 151:
! #line 1255 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = parse_jdk1_1_error ("explicit constructor invocation"); ;
break;}
case 152:
! #line 1260 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
*************** case 152:
*** 3546,3552 ****
;
break;}
case 153:
! #line 1266 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree wfl = build_wfl_node (super_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
--- 3546,3552 ----
;
break;}
case 153:
! #line 1266 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree wfl = build_wfl_node (super_identifier_node);
EXPR_WFL_LINECOL (wfl) = yyvsp[0].operator.location;
*************** case 153:
*** 3554,3666 ****
;
break;}
case 154:
! #line 1277 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_interface (0, yyvsp[0].node, NULL_TREE); ;
break;}
case 156:
! #line 1280 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ;
break;}
case 158:
! #line 1283 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_interface (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 160:
! #line 1286 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 162:
! #line 1289 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 163:
! #line 1291 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 164:
! #line 1296 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 165:
! #line 1301 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 166:
! #line 1306 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid interface type"); RECOVER;;
break;}
case 167:
! #line 1308 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 168:
! #line 1313 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 169:
! #line 1315 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 174:
! #line 1327 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 175:
! #line 1329 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 177:
! #line 1338 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
check_abstract_method_header (yyvsp[-1].node);
current_function_decl = NULL_TREE; /* FIXME ? */
;
break;}
case 178:
! #line 1343 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 179:
! #line 1349 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 180:
! #line 1351 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-2].operator.location, NULL_TREE); ;
break;}
case 181:
! #line 1353 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 182:
! #line 1355 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
case 183:
! #line 1360 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node),
yyvsp[0].node, NULL_TREE);
;
break;}
case 184:
! #line 1365 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 185:
! #line 1369 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 186:
! #line 1375 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (current_function_decl && flag_emit_xref)
--- 3554,3666 ----
;
break;}
case 154:
! #line 1277 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_interface (0, yyvsp[0].node, NULL_TREE); ;
break;}
case 156:
! #line 1280 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_interface (yyvsp[-2].value, yyvsp[0].node, NULL_TREE); ;
break;}
case 158:
! #line 1283 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_interface (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 160:
! #line 1286 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_interface (yyvsp[-3].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 162:
! #line 1289 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 163:
! #line 1291 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 164:
! #line 1296 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->interface_number = 1;
yyval.node = build_tree_list (yyvsp[0].node, NULL_TREE);
;
break;}
case 165:
! #line 1301 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->interface_number++;
yyval.node = chainon (yyvsp[-2].node, build_tree_list (yyvsp[0].node, NULL_TREE));
;
break;}
case 166:
! #line 1306 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid interface type"); RECOVER;;
break;}
case 167:
! #line 1308 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 168:
! #line 1313 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 169:
! #line 1315 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 174:
! #line 1327 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 175:
! #line 1329 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ end_class_declaration (1); ;
break;}
case 177:
! #line 1338 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
check_abstract_method_header (yyvsp[-1].node);
current_function_decl = NULL_TREE; /* FIXME ? */
;
break;}
case 178:
! #line 1343 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 179:
! #line 1349 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 180:
! #line 1351 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-2].operator.location, NULL_TREE); ;
break;}
case 181:
! #line 1353 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 182:
! #line 1355 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_new_array_init (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
case 183:
! #line 1360 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node),
yyvsp[0].node, NULL_TREE);
;
break;}
case 184:
! #line 1365 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = tree_cons (maybe_build_array_element_wfl (yyvsp[0].node), yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 185:
! #line 1369 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 186:
! #line 1375 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Store the location of the `}' when doing xrefs */
if (current_function_decl && flag_emit_xref)
*************** case 186:
*** 3670,3684 ****
;
break;}
case 187:
! #line 1383 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 188:
! #line 1388 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ enter_block (); ;
break;}
case 189:
! #line 1393 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
maybe_absorb_scoping_blocks ();
/* Store the location of the `}' when doing xrefs */
--- 3670,3684 ----
;
break;}
case 187:
! #line 1383 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 188:
! #line 1388 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ enter_block (); ;
break;}
case 189:
! #line 1393 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
maybe_absorb_scoping_blocks ();
/* Store the location of the `}' when doing xrefs */
*************** case 189:
*** 3691,3724 ****
;
break;}
case 193:
! #line 1413 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ java_method_add_stmt (current_function_decl, yyvsp[0].node); ;
break;}
case 194:
! #line 1415 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
LOCAL_CLASS_P (TREE_TYPE (GET_CPC ())) = 1;
end_class_declaration (1);
;
break;}
case 196:
! #line 1427 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 197:
! #line 1429 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 203:
! #line 1439 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = exit_block (); ;
break;}
case 208:
! #line 1448 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = exit_block (); ;
break;}
case 220:
! #line 1467 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (flag_extraneous_semicolon
&& ! current_static_block
--- 3691,3724 ----
;
break;}
case 193:
! #line 1413 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ java_method_add_stmt (current_function_decl, yyvsp[0].node); ;
break;}
case 194:
! #line 1415 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
LOCAL_CLASS_P (TREE_TYPE (GET_CPC ())) = 1;
end_class_declaration (1);
;
break;}
case 196:
! #line 1427 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ declare_local_variables (0, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 197:
! #line 1429 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ declare_local_variables (yyvsp[-2].value, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 203:
! #line 1439 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = exit_block (); ;
break;}
case 208:
! #line 1448 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = exit_block (); ;
break;}
case 220:
! #line 1467 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (flag_extraneous_semicolon
&& ! current_static_block
*************** case 220:
*** 3735,3741 ****
;
break;}
case 221:
! #line 1485 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node),
EXPR_WFL_NODE (yyvsp[-1].node));
--- 3735,3741 ----
;
break;}
case 221:
! #line 1485 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_labeled_block (EXPR_WFL_LINECOL (yyvsp[-1].node),
EXPR_WFL_NODE (yyvsp[-1].node));
*************** case 221:
*** 3745,3763 ****
;
break;}
case 222:
! #line 1496 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 223:
! #line 1498 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 224:
! #line 1503 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 225:
! #line 1510 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* We have a statement. Generate a WFL around it so
we can debug it */
--- 3745,3763 ----
;
break;}
case 222:
! #line 1496 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 223:
! #line 1498 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 224:
! #line 1503 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = finish_labeled_statement (yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 225:
! #line 1510 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* We have a statement. Generate a WFL around it so
we can debug it */
*************** case 225:
*** 3768,3870 ****
;
break;}
case 226:
! #line 1519 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
case 227:
! #line 1524 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
case 228:
! #line 1529 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
case 229:
! #line 1534 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 230:
! #line 1536 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
parse_ctor_invocation_error ();
RECOVER;
;
break;}
case 231:
! #line 1541 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 232:
! #line 1543 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
parse_ctor_invocation_error ();
RECOVER;
;
break;}
case 233:
! #line 1548 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 234:
! #line 1550 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 235:
! #line 1552 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 236:
! #line 1554 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 237:
! #line 1556 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 245:
! #line 1571 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node,
yyvsp[0].node, NULL_TREE);
;
break;}
case 246:
! #line 1576 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 247:
! #line 1578 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 248:
! #line 1580 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 249:
! #line 1585 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 250:
! #line 1590 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 251:
! #line 1595 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
enter_block ();
;
break;}
case 252:
! #line 1599 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Make into "proper list" of COMPOUND_EXPRs.
I.e. make the last statement also have its own
--- 3768,3870 ----
;
break;}
case 226:
! #line 1519 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
case 227:
! #line 1524 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
case 228:
! #line 1529 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid expression statement");
DRECOVER (expr_stmt);
;
break;}
case 229:
! #line 1534 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 230:
! #line 1536 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
parse_ctor_invocation_error ();
RECOVER;
;
break;}
case 231:
! #line 1541 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 232:
! #line 1543 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
parse_ctor_invocation_error ();
RECOVER;
;
break;}
case 233:
! #line 1548 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 234:
! #line 1550 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 235:
! #line 1552 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 236:
! #line 1554 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 237:
! #line 1556 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 245:
! #line 1571 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_if_else_statement (yyvsp[-3].operator.location, yyvsp[-2].node,
yyvsp[0].node, NULL_TREE);
;
break;}
case 246:
! #line 1576 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 247:
! #line 1578 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 248:
! #line 1580 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 249:
! #line 1585 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 250:
! #line 1590 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_if_else_statement (yyvsp[-5].operator.location, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 251:
! #line 1595 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
enter_block ();
;
break;}
case 252:
! #line 1599 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Make into "proper list" of COMPOUND_EXPRs.
I.e. make the last statement also have its own
*************** case 252:
*** 3875,3916 ****
;
break;}
case 253:
! #line 1611 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 254:
! #line 1616 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 255:
! #line 1618 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
break;}
case 256:
! #line 1620 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 257:
! #line 1628 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 258:
! #line 1630 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 259:
! #line 1632 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 260:
! #line 1634 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 266:
! #line 1653 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location;
--- 3875,3916 ----
;
break;}
case 253:
! #line 1611 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build (SWITCH_EXPR, NULL_TREE, yyvsp[-1].node, NULL_TREE);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 254:
! #line 1616 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 255:
! #line 1618 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term or ')'"); DRECOVER(switch_statement);;
break;}
case 256:
! #line 1620 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 257:
! #line 1628 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 258:
! #line 1630 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 259:
! #line 1632 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 260:
! #line 1634 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = NULL_TREE; ;
break;}
case 266:
! #line 1653 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree lab = build1 (CASE_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (lab) = yyvsp[-2].operator.location;
*************** case 266:
*** 3918,3924 ****
;
break;}
case 267:
! #line 1659 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree lab = build (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location;
--- 3918,3924 ----
;
break;}
case 267:
! #line 1659 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree lab = build (DEFAULT_EXPR, NULL_TREE, NULL_TREE);
EXPR_WFL_LINECOL (lab) = yyvsp[-1].operator.location;
*************** case 267:
*** 3926,3982 ****
;
break;}
case 268:
! #line 1665 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing or invalid constant expression"); RECOVER;;
break;}
case 269:
! #line 1667 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 270:
! #line 1669 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 271:
! #line 1674 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);
yyval.node = build_new_loop (body);
;
break;}
case 272:
! #line 1682 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 273:
! #line 1684 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;
break;}
case 274:
! #line 1686 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term and ')' expected"); RECOVER;;
break;}
case 275:
! #line 1688 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 276:
! #line 1693 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 277:
! #line 1698 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree body = build_loop_body (0, NULL_TREE, 1);
yyval.node = build_new_loop (body);
;
break;}
case 278:
! #line 1707 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = finish_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;
break;}
case 279:
! #line 1712 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-4].node)) == 'c')
yyvsp[-4].node = build_wfl_node (yyvsp[-4].node);
--- 3926,3982 ----
;
break;}
case 268:
! #line 1665 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing or invalid constant expression"); RECOVER;;
break;}
case 269:
! #line 1667 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 270:
! #line 1669 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("':' expected"); RECOVER;;
break;}
case 271:
! #line 1674 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree body = build_loop_body (yyvsp[-2].operator.location, yyvsp[-1].node, 0);
yyval.node = build_new_loop (body);
;
break;}
case 272:
! #line 1682 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 273:
! #line 1684 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{YYERROR_NOW; yyerror ("'(' expected"); RECOVER;;
break;}
case 274:
! #line 1686 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term and ')' expected"); RECOVER;;
break;}
case 275:
! #line 1688 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 276:
! #line 1693 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = finish_loop_body (0, NULL_TREE, yyvsp[0].node, 0); ;
break;}
case 277:
! #line 1698 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree body = build_loop_body (0, NULL_TREE, 1);
yyval.node = build_new_loop (body);
;
break;}
case 278:
! #line 1707 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = finish_loop_body (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[-5].node, 1); ;
break;}
case 279:
! #line 1712 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-4].node)) == 'c')
yyvsp[-4].node = build_wfl_node (yyvsp[-4].node);
*************** case 279:
*** 3984,3990 ****
;
break;}
case 280:
! #line 1718 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
--- 3984,3990 ----
;
break;}
case 280:
! #line 1718 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
*************** case 280:
*** 3993,4015 ****
;
break;}
case 281:
! #line 1725 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid control expression"); RECOVER;;
break;}
case 282:
! #line 1727 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 283:
! #line 1729 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 284:
! #line 1734 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
break;}
case 285:
! #line 1736 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
--- 3993,4015 ----
;
break;}
case 281:
! #line 1725 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid control expression"); RECOVER;;
break;}
case 282:
! #line 1727 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 283:
! #line 1729 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid update expression"); RECOVER;;
break;}
case 284:
! #line 1734 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = finish_for_loop (EXPR_WFL_LINECOL (yyvsp[-4].node), yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);;
break;}
case 285:
! #line 1736 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = finish_for_loop (0, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
/* We have not condition, so we get rid of the EXIT_EXPR */
*************** case 285:
*** 4018,4024 ****
;
break;}
case 286:
! #line 1746 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* This scope defined for local variable that may be
defined within the scope of the for loop */
--- 4018,4024 ----
;
break;}
case 286:
! #line 1746 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* This scope defined for local variable that may be
defined within the scope of the for loop */
*************** case 286:
*** 4026,4040 ****
;
break;}
case 287:
! #line 1752 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); DRECOVER(for_1);;
break;}
case 288:
! #line 1754 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid init statement"); RECOVER;;
break;}
case 289:
! #line 1759 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* We now declare the loop body. The loop is
declared as a for loop. */
--- 4026,4040 ----
;
break;}
case 287:
! #line 1752 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); DRECOVER(for_1);;
break;}
case 288:
! #line 1754 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid init statement"); RECOVER;;
break;}
case 289:
! #line 1759 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* We now declare the loop body. The loop is
declared as a for loop. */
*************** case 289:
*** 4047,4057 ****
;
break;}
case 290:
! #line 1771 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
case 291:
! #line 1773 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Init statement recorded within the previously
defined block scope */
--- 4047,4057 ----
;
break;}
case 290:
! #line 1771 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = empty_stmt_node; ;
break;}
case 291:
! #line 1773 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Init statement recorded within the previously
defined block scope */
*************** case 291:
*** 4059,4065 ****
;
break;}
case 292:
! #line 1779 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* Local variable are recorded within the previously
defined block scope */
--- 4059,4065 ----
;
break;}
case 292:
! #line 1779 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* Local variable are recorded within the previously
defined block scope */
*************** case 292:
*** 4067,4160 ****
;
break;}
case 293:
! #line 1785 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); DRECOVER(for_init_1);;
break;}
case 294:
! #line 1789 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = empty_stmt_node;;
break;}
case 295:
! #line 1791 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;
break;}
case 296:
! #line 1796 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;
break;}
case 297:
! #line 1798 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;
break;}
case 298:
! #line 1800 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 299:
! #line 1805 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;
break;}
case 300:
! #line 1807 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;
break;}
case 301:
! #line 1809 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 302:
! #line 1811 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 303:
! #line 1816 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;
break;}
case 304:
! #line 1818 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;
break;}
case 305:
! #line 1820 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 306:
! #line 1822 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 307:
! #line 1827 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 308:
! #line 1829 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 309:
! #line 1831 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 310:
! #line 1833 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 311:
! #line 1838 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 312:
! #line 1843 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 313:
! #line 1845 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 314:
! #line 1850 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) =
--- 4067,4160 ----
;
break;}
case 293:
! #line 1785 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); DRECOVER(for_init_1);;
break;}
case 294:
! #line 1789 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = empty_stmt_node;;
break;}
case 295:
! #line 1791 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_debugable_stmt (BUILD_LOCATION (), yyvsp[0].node); ;
break;}
case 296:
! #line 1796 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = add_stmt_to_compound (NULL_TREE, NULL_TREE, yyvsp[0].node); ;
break;}
case 297:
! #line 1798 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = add_stmt_to_compound (yyvsp[-2].node, NULL_TREE, yyvsp[0].node); ;
break;}
case 298:
! #line 1800 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 299:
! #line 1805 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 1, NULL_TREE); ;
break;}
case 300:
! #line 1807 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 1, yyvsp[-1].node); ;
break;}
case 301:
! #line 1809 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 302:
! #line 1811 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 303:
! #line 1816 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-1].operator.location, 0, NULL_TREE); ;
break;}
case 304:
! #line 1818 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_bc_statement (yyvsp[-2].operator.location, 0, yyvsp[-1].node); ;
break;}
case 305:
! #line 1820 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 306:
! #line 1822 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 307:
! #line 1827 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_return (yyvsp[-1].operator.location, NULL_TREE); ;
break;}
case 308:
! #line 1829 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_return (yyvsp[-2].operator.location, yyvsp[-1].node); ;
break;}
case 309:
! #line 1831 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 310:
! #line 1833 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 311:
! #line 1838 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build1 (THROW_EXPR, NULL_TREE, yyvsp[-1].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-2].operator.location;
;
break;}
case 312:
! #line 1843 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 313:
! #line 1845 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("';' expected"); RECOVER;;
break;}
case 314:
! #line 1850 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build (SYNCHRONIZED_EXPR, NULL_TREE, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) =
*************** case 314:
*** 4162,4184 ****
;
break;}
case 315:
! #line 1856 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 316:
! #line 1858 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 317:
! #line 1860 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 318:
! #line 1862 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 319:
! #line 1867 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
check_modifiers (
"Illegal modifier `%s'. Only `synchronized' was expected here",
--- 4162,4184 ----
;
break;}
case 315:
! #line 1856 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER;;
break;}
case 316:
! #line 1858 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 317:
! #line 1860 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 318:
! #line 1862 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 319:
! #line 1867 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
check_modifiers (
"Illegal modifier `%s'. Only `synchronized' was expected here",
*************** case 319:
*** 4189,4221 ****
;
break;}
case 320:
! #line 1879 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 321:
! #line 1881 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 322:
! #line 1883 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_try_finally_statement
(yyvsp[-3].operator.location, build_try_statement (yyvsp[-3].operator.location,
yyvsp[-2].node, yyvsp[-1].node), yyvsp[0].node);
;
break;}
case 323:
! #line 1888 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); DRECOVER (try_statement);;
break;}
case 325:
! #line 1894 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
yyval.node = yyvsp[0].node;
;
break;}
case 326:
! #line 1902 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
java_method_add_stmt (current_function_decl, yyvsp[0].node);
exit_block ();
--- 4189,4221 ----
;
break;}
case 320:
! #line 1879 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_try_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 321:
! #line 1881 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_try_finally_statement (yyvsp[-2].operator.location, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 322:
! #line 1883 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_try_finally_statement
(yyvsp[-3].operator.location, build_try_statement (yyvsp[-3].operator.location,
yyvsp[-2].node, yyvsp[-1].node), yyvsp[0].node);
;
break;}
case 323:
! #line 1888 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); DRECOVER (try_statement);;
break;}
case 325:
! #line 1894 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
TREE_CHAIN (yyvsp[0].node) = yyvsp[-1].node;
yyval.node = yyvsp[0].node;
;
break;}
case 326:
! #line 1902 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
java_method_add_stmt (current_function_decl, yyvsp[0].node);
exit_block ();
*************** case 326:
*** 4223,4229 ****
;
break;}
case 327:
! #line 1910 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
/* We add a block to define a scope for
formal_parameter (CCBP). The formal parameter is
--- 4223,4229 ----
;
break;}
case 327:
! #line 1910 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
/* We add a block to define a scope for
formal_parameter (CCBP). The formal parameter is
*************** case 327:
*** 4241,4328 ****
;
break;}
case 328:
! #line 1926 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER; yyval.node = NULL_TREE;;
break;}
case 329:
! #line 1928 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing term or ')' expected");
RECOVER; yyval.node = NULL_TREE;
;
break;}
case 330:
! #line 1933 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER; yyval.node = NULL_TREE;;
break;}
case 331:
! #line 1938 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 332:
! #line 1940 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER; ;
break;}
case 336:
! #line 1952 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_this (yyvsp[0].operator.location); ;
break;}
case 337:
! #line 1954 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = yyvsp[-1].node;;
break;}
case 343:
! #line 1964 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
yyval.node = make_qualified_primary (yyvsp[-2].node, wfl, EXPR_WFL_LINECOL (yyvsp[-2].node));
;
break;}
case 344:
! #line 1969 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 345:
! #line 1971 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'class' or 'this' expected" ); RECOVER;;
break;}
case 346:
! #line 1973 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 347:
! #line 1975 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 348:
! #line 1980 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 349:
! #line 1982 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 350:
! #line 1984 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 351:
! #line 1986 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location,
void_type_node);
;
break;}
case 352:
! #line 1994 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 353:
! #line 1996 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 355:
! #line 2002 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree ctor = build_new_invocation (yyvsp[-2].node, NULL_TREE);
yyval.node = make_qualified_primary (yyvsp[-3].node, ctor,
--- 4241,4328 ----
;
break;}
case 328:
! #line 1926 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER; yyval.node = NULL_TREE;;
break;}
case 329:
! #line 1928 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing term or ')' expected");
RECOVER; yyval.node = NULL_TREE;
;
break;}
case 330:
! #line 1933 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER; yyval.node = NULL_TREE;;
break;}
case 331:
! #line 1938 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[0].node; ;
break;}
case 332:
! #line 1940 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'{' expected"); RECOVER; ;
break;}
case 336:
! #line 1952 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_this (yyvsp[0].operator.location); ;
break;}
case 337:
! #line 1954 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = yyvsp[-1].node;;
break;}
case 343:
! #line 1964 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree wfl = build_wfl_node (this_identifier_node);
yyval.node = make_qualified_primary (yyvsp[-2].node, wfl, EXPR_WFL_LINECOL (yyvsp[-2].node));
;
break;}
case 344:
! #line 1969 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 345:
! #line 1971 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'class' or 'this' expected" ); RECOVER;;
break;}
case 346:
! #line 1973 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 347:
! #line 1975 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'class' expected" ); RECOVER;;
break;}
case 348:
! #line 1980 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 349:
! #line 1982 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 350:
! #line 1984 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location, yyvsp[-2].node); ;
break;}
case 351:
! #line 1986 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_incomplete_class_ref (yyvsp[-1].operator.location,
void_type_node);
;
break;}
case 352:
! #line 1994 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 353:
! #line 1996 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_new_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 355:
! #line 2002 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree ctor = build_new_invocation (yyvsp[-2].node, NULL_TREE);
yyval.node = make_qualified_primary (yyvsp[-3].node, ctor,
*************** case 355:
*** 4330,4336 ****
;
break;}
case 357:
! #line 2009 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree ctor = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node);
yyval.node = make_qualified_primary (yyvsp[-4].node, ctor,
--- 4330,4336 ----
;
break;}
case 357:
! #line 2009 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree ctor = build_new_invocation (yyvsp[-3].node, yyvsp[-1].node);
yyval.node = make_qualified_primary (yyvsp[-4].node, ctor,
*************** case 357:
*** 4338,4372 ****
;
break;}
case 359:
! #line 2016 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); DRECOVER(new_1);;
break;}
case 360:
! #line 2018 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 361:
! #line 2020 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' or term expected"); RECOVER;;
break;}
case 362:
! #line 2022 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 363:
! #line 2024 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;
break;}
case 364:
! #line 2026 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 365:
! #line 2036 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_anonymous_class (yyvsp[-4].operator.location, yyvsp[-3].node); ;
break;}
case 366:
! #line 2038 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree id = build_wfl_node (DECL_NAME (GET_CPC ()));
EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-5].node);
--- 4338,4372 ----
;
break;}
case 359:
! #line 2016 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); DRECOVER(new_1);;
break;}
case 360:
! #line 2018 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 361:
! #line 2020 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' or term expected"); RECOVER;;
break;}
case 362:
! #line 2022 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("')' expected"); RECOVER;;
break;}
case 363:
! #line 2024 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{YYERROR_NOW; yyerror ("Identifier expected"); RECOVER;;
break;}
case 364:
! #line 2026 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'(' expected"); RECOVER;;
break;}
case 365:
! #line 2036 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_anonymous_class (yyvsp[-4].operator.location, yyvsp[-3].node); ;
break;}
case 366:
! #line 2038 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree id = build_wfl_node (DECL_NAME (GET_CPC ()));
EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-5].node);
*************** case 366:
*** 4399,4409 ****
;
break;}
case 367:
! #line 2069 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ create_anonymous_class (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
case 368:
! #line 2071 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree id = build_wfl_node (DECL_NAME (GET_CPC ()));
EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-4].node);
--- 4399,4409 ----
;
break;}
case 367:
! #line 2069 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ create_anonymous_class (yyvsp[-3].operator.location, yyvsp[-2].node); ;
break;}
case 368:
! #line 2071 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree id = build_wfl_node (DECL_NAME (GET_CPC ()));
EXPR_WFL_LINECOL (id) = EXPR_WFL_LINECOL (yyvsp[-4].node);
*************** case 368:
*** 4418,4466 ****
;
break;}
case 369:
! #line 2087 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[-2].node; ;
break;}
case 370:
! #line 2089 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = yyvsp[-2].node; ;
break;}
case 371:
! #line 2094 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);
ctxp->formal_parameter_number = 1;
;
break;}
case 372:
! #line 2099 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 373:
! #line 2104 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 374:
! #line 2109 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 375:
! #line 2111 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 376:
! #line 2113 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));;
break;}
case 377:
! #line 2115 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));;
break;}
case 378:
! #line 2119 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
char *sig;
int osb = pop_current_osb (ctxp);
--- 4418,4466 ----
;
break;}
case 369:
! #line 2087 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[-2].node; ;
break;}
case 370:
! #line 2089 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = yyvsp[-2].node; ;
break;}
case 371:
! #line 2094 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, NULL_TREE);
ctxp->formal_parameter_number = 1;
;
break;}
case 372:
! #line 2099 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
ctxp->formal_parameter_number += 1;
yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyvsp[-2].node);
;
break;}
case 373:
! #line 2104 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 374:
! #line 2109 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 375:
! #line 2111 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-1].node, yyvsp[0].node, 0); ;
break;}
case 376:
! #line 2113 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));;
break;}
case 377:
! #line 2115 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_newarray_node (yyvsp[-2].node, yyvsp[-1].node, pop_current_osb (ctxp));;
break;}
case 378:
! #line 2119 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
char *sig;
int osb = pop_current_osb (ctxp);
*************** case 378:
*** 4473,4479 ****
;
break;}
case 379:
! #line 2130 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
int osb = pop_current_osb (ctxp);
tree type = yyvsp[-2].node;
--- 4473,4479 ----
;
break;}
case 379:
! #line 2130 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
int osb = pop_current_osb (ctxp);
tree type = yyvsp[-2].node;
*************** case 379:
*** 4484,4506 ****
;
break;}
case 380:
! #line 2139 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("'[' expected"); DRECOVER ("]");;
break;}
case 381:
! #line 2141 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 382:
! #line 2146 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
break;}
case 383:
! #line 2148 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;
break;}
case 384:
! #line 2153 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (JNUMERIC_TYPE_P (TREE_TYPE (yyvsp[-1].node)))
{
--- 4484,4506 ----
;
break;}
case 380:
! #line 2139 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("'[' expected"); DRECOVER ("]");;
break;}
case 381:
! #line 2141 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 382:
! #line 2146 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_tree_list (NULL_TREE, yyvsp[0].node); ;
break;}
case 383:
! #line 2148 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = tree_cons (NULL_TREE, yyvsp[0].node, yyval.node); ;
break;}
case 384:
! #line 2153 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (JNUMERIC_TYPE_P (TREE_TYPE (yyvsp[-1].node)))
{
*************** case 384:
*** 4512,4522 ****
;
break;}
case 385:
! #line 2163 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 386:
! #line 2165 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing term");
yyerror ("']' expected");
--- 4512,4522 ----
;
break;}
case 385:
! #line 2163 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("']' expected"); RECOVER;;
break;}
case 386:
! #line 2165 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing term");
yyerror ("']' expected");
*************** case 386:
*** 4524,4530 ****
;
break;}
case 387:
! #line 2174 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
int allocate = 0;
/* If not initialized, allocate memory for the osb
--- 4524,4530 ----
;
break;}
case 387:
! #line 2174 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
int allocate = 0;
/* If not initialized, allocate memory for the osb
*************** case 387:
*** 4552,4570 ****
;
break;}
case 388:
! #line 2200 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ CURRENT_OSB (ctxp)++; ;
break;}
case 389:
! #line 2202 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyerror ("']' expected"); RECOVER;;
break;}
case 390:
! #line 2207 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 391:
! #line 2211 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree super_wfl = build_wfl_node (super_identifier_node);
EXPR_WFL_LINECOL (super_wfl) = yyvsp[-2].operator.location;
--- 4552,4570 ----
;
break;}
case 388:
! #line 2200 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ CURRENT_OSB (ctxp)++; ;
break;}
case 389:
! #line 2202 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyerror ("']' expected"); RECOVER;;
break;}
case 390:
! #line 2207 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = make_qualified_primary (yyvsp[-2].node, yyvsp[0].node, yyvsp[-1].operator.location); ;
break;}
case 391:
! #line 2211 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree super_wfl = build_wfl_node (super_identifier_node);
EXPR_WFL_LINECOL (super_wfl) = yyvsp[-2].operator.location;
*************** case 391:
*** 4572,4590 ****
;
break;}
case 392:
! #line 2217 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Field expected"); DRECOVER (super_field_acces);;
break;}
case 393:
! #line 2222 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 394:
! #line 2224 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 395:
! #line 2226 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
--- 4572,4590 ----
;
break;}
case 392:
! #line 2217 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Field expected"); DRECOVER (super_field_acces);;
break;}
case 393:
! #line 2222 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_method_invocation (yyvsp[-2].node, NULL_TREE); ;
break;}
case 394:
! #line 2224 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_method_invocation (yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 395:
! #line 2226 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (TREE_CODE (yyvsp[-4].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
*************** case 395:
*** 4597,4603 ****
;
break;}
case 396:
! #line 2237 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
--- 4597,4603 ----
;
break;}
case 396:
! #line 2237 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
if (TREE_CODE (yyvsp[-5].node) == THIS_EXPR)
yyval.node = build_this_super_qualified_invocation
*************** case 396:
*** 4610,4737 ****
;
break;}
case 397:
! #line 2248 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location);
;
break;}
case 398:
! #line 2253 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location);
;
break;}
case 399:
! #line 2262 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 400:
! #line 2264 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 401:
! #line 2269 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 402:
! #line 2271 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 403:
! #line 2273 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 404:
! #line 2278 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 405:
! #line 2283 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 406:
! #line 2288 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 411:
! #line 2303 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 412:
! #line 2308 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 415:
! #line 2315 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 417:
! #line 2318 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 418:
! #line 2323 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
error_if_numeric_overflow (yyvsp[0].node);
yyval.node = yyvsp[0].node;
;
break;}
case 419:
! #line 2328 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 420:
! #line 2330 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 421:
! #line 2335 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 422:
! #line 2337 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 423:
! #line 2342 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 424:
! #line 2344 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 426:
! #line 2350 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 427:
! #line 2352 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 429:
! #line 2355 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 430:
! #line 2357 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 431:
! #line 2362 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
tree type = yyvsp[-3].node;
int osb = pop_current_osb (ctxp);
--- 4610,4737 ----
;
break;}
case 397:
! #line 2248 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-2].node, NULL_TREE, yyvsp[-4].operator.location, yyvsp[-3].operator.location);
;
break;}
case 398:
! #line 2253 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_this_super_qualified_invocation
(0, yyvsp[-3].node, yyvsp[-1].node, yyvsp[-5].operator.location, yyvsp[-4].operator.location);
;
break;}
case 399:
! #line 2262 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 400:
! #line 2264 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyerror ("'(' expected"); DRECOVER (method_invocation); ;
break;}
case 401:
! #line 2269 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 402:
! #line 2271 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_array_ref (yyvsp[-2].operator.location, yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 403:
! #line 2273 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 404:
! #line 2278 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 405:
! #line 2283 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("Missing term and ']' expected");
DRECOVER(array_access);
;
break;}
case 406:
! #line 2288 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyerror ("']' expected");
DRECOVER(array_access);
;
break;}
case 411:
! #line 2303 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 412:
! #line 2308 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_incdec (yyvsp[0].operator.token, yyvsp[0].operator.location, yyvsp[-1].node, 1); ;
break;}
case 415:
! #line 2315 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 417:
! #line 2318 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 418:
! #line 2323 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
error_if_numeric_overflow (yyvsp[0].node);
yyval.node = yyvsp[0].node;
;
break;}
case 419:
! #line 2328 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 420:
! #line 2330 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 421:
! #line 2335 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 422:
! #line 2337 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 423:
! #line 2342 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = build_incdec (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node, 0); ;
break;}
case 424:
! #line 2344 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 426:
! #line 2350 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 427:
! #line 2352 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyval.node = build_unaryop (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[0].node); ;
break;}
case 429:
! #line 2355 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 430:
! #line 2357 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;
break;}
case 431:
! #line 2362 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
tree type = yyvsp[-3].node;
int osb = pop_current_osb (ctxp);
*************** case 431:
*** 4741,4755 ****
;
break;}
case 432:
! #line 2370 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 433:
! #line 2372 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 434:
! #line 2374 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
const char *ptr;
int osb = pop_current_osb (ctxp);
--- 4741,4755 ----
;
break;}
case 432:
! #line 2370 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 433:
! #line 2372 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_cast (yyvsp[-3].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 434:
! #line 2374 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
const char *ptr;
int osb = pop_current_osb (ctxp);
*************** case 434:
*** 4765,5018 ****
;
break;}
case 435:
! #line 2388 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("']' expected, invalid type expression");;
break;}
case 436:
! #line 2390 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid type expression"); RECOVER;
RECOVER;
;
break;}
case 437:
! #line 2395 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 438:
! #line 2397 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 439:
! #line 2399 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 441:
! #line 2405 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token),
yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 442:
! #line 2410 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 443:
! #line 2415 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 444:
! #line 2420 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 445:
! #line 2422 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 446:
! #line 2424 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 448:
! #line 2430 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 449:
! #line 2435 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 450:
! #line 2440 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 451:
! #line 2442 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 453:
! #line 2448 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 454:
! #line 2453 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 455:
! #line 2458 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 456:
! #line 2463 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 457:
! #line 2465 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 458:
! #line 2467 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 460:
! #line 2473 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 461:
! #line 2478 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 462:
! #line 2483 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 463:
! #line 2488 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 464:
! #line 2493 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 465:
! #line 2495 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 466:
! #line 2497 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 467:
! #line 2499 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 468:
! #line 2501 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 469:
! #line 2503 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Invalid reference type"); RECOVER;;
break;}
case 471:
! #line 2509 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 472:
! #line 2514 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 473:
! #line 2519 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 474:
! #line 2521 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 476:
! #line 2527 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 477:
! #line 2532 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 479:
! #line 2538 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 480:
! #line 2543 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 482:
! #line 2549 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 483:
! #line 2554 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 485:
! #line 2560 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 486:
! #line 2565 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 488:
! #line 2571 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 489:
! #line 2576 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 491:
! #line 2582 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;
;
break;}
case 492:
! #line 2587 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYERROR_NOW;
yyerror ("Missing term");
--- 4765,5018 ----
;
break;}
case 435:
! #line 2388 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("']' expected, invalid type expression");;
break;}
case 436:
! #line 2390 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Invalid type expression"); RECOVER;
RECOVER;
;
break;}
case 437:
! #line 2395 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 438:
! #line 2397 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 439:
! #line 2399 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 441:
! #line 2405 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token),
yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 442:
! #line 2410 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 443:
! #line 2415 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 444:
! #line 2420 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 445:
! #line 2422 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 446:
! #line 2424 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 448:
! #line 2430 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 449:
! #line 2435 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 450:
! #line 2440 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 451:
! #line 2442 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 453:
! #line 2448 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 454:
! #line 2453 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 455:
! #line 2458 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 456:
! #line 2463 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 457:
! #line 2465 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 458:
! #line 2467 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 460:
! #line 2473 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 461:
! #line 2478 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 462:
! #line 2483 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 463:
! #line 2488 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 464:
! #line 2493 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_binop (INSTANCEOF_EXPR, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 465:
! #line 2495 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 466:
! #line 2497 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 467:
! #line 2499 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 468:
! #line 2501 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 469:
! #line 2503 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Invalid reference type"); RECOVER;;
break;}
case 471:
! #line 2509 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 472:
! #line 2514 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 473:
! #line 2519 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 474:
! #line 2521 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 476:
! #line 2527 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 477:
! #line 2532 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 479:
! #line 2538 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 480:
! #line 2543 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 482:
! #line 2549 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 483:
! #line 2554 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 485:
! #line 2560 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 486:
! #line 2565 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 488:
! #line 2571 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build_binop (BINOP_LOOKUP (yyvsp[-1].operator.token), yyvsp[-1].operator.location,
yyvsp[-2].node, yyvsp[0].node);
;
break;}
case 489:
! #line 2576 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); RECOVER;;
break;}
case 491:
! #line 2582 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
yyval.node = build (CONDITIONAL_EXPR, NULL_TREE, yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node);
EXPR_WFL_LINECOL (yyval.node) = yyvsp[-3].operator.location;
;
break;}
case 492:
! #line 2587 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYERROR_NOW;
yyerror ("Missing term");
*************** case 492:
*** 5020,5038 ****
;
break;}
case 493:
! #line 2593 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); DRECOVER (2);;
break;}
case 494:
! #line 2595 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{yyerror ("Missing term"); DRECOVER (3);;
break;}
case 497:
! #line 2605 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{ yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 498:
! #line 2607 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Missing term");
DRECOVER (assign);
--- 5020,5038 ----
;
break;}
case 493:
! #line 2593 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); DRECOVER (2);;
break;}
case 494:
! #line 2595 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{yyerror ("Missing term"); DRECOVER (3);;
break;}
case 497:
! #line 2605 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{ yyval.node = build_assignment (yyvsp[-1].operator.token, yyvsp[-1].operator.location, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 498:
! #line 2607 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
{
YYNOT_TWICE yyerror ("Missing term");
DRECOVER (assign);
*************** yyerrhandle:
*** 5260,5266 ****
}
return 1;
}
! #line 2632 "/home/mitchell/gcc-3.1.1/gcc-3.1.1/gcc/java/parse.y"
/* Helper function to retrieve an OSB count. Should be used when the
--- 5260,5266 ----
}
return 1;
}
! #line 2632 "/home/mitchell/gcc-3.2/gcc-3.2/gcc/java/parse.y"
/* Helper function to retrieve an OSB count. Should be used when the
diff -Nrc3pad gcc-3.1.1/gcc/java/rmic.1 gcc-3.2/gcc/java/rmic.1
*** gcc-3.1.1/gcc/java/rmic.1 Thu Jul 25 23:56:29 2002
--- gcc-3.2/gcc/java/rmic.1 Wed Aug 14 09:36:44 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:29 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:44 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "RMIC 1"
! .TH RMIC 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
rmic \- Generate stubs for Remote Method Invocation
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "RMIC 1"
! .TH RMIC 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
rmic \- Generate stubs for Remote Method Invocation
diff -Nrc3pad gcc-3.1.1/gcc/java/rmiregistry.1 gcc-3.2/gcc/java/rmiregistry.1
*** gcc-3.1.1/gcc/java/rmiregistry.1 Thu Jul 25 23:56:29 2002
--- gcc-3.2/gcc/java/rmiregistry.1 Wed Aug 14 09:36:44 2002
***************
*** 1,5 ****
.\" Automatically generated by Pod::Man version 1.15
! .\" Thu Jul 25 23:56:29 2002
.\"
.\" Standard preamble:
.\" ======================================================================
--- 1,5 ----
.\" Automatically generated by Pod::Man version 1.15
! .\" Wed Aug 14 09:36:44 2002
.\"
.\" Standard preamble:
.\" ======================================================================
***************
*** 138,144 ****
.\" ======================================================================
.\"
.IX Title "RMIREGISTRY 1"
! .TH RMIREGISTRY 1 "gcc-3.1.1" "2002-07-25" "GNU"
.UC
.SH "NAME"
rmiregistry \- Remote object registry
--- 138,144 ----
.\" ======================================================================
.\"
.IX Title "RMIREGISTRY 1"
! .TH RMIREGISTRY 1 "gcc-3.2" "2002-08-14" "GNU"
.UC
.SH "NAME"
rmiregistry \- Remote object registry
diff -Nrc3pad gcc-3.1.1/gcc/po/ChangeLog gcc-3.2/gcc/po/ChangeLog
*** gcc-3.1.1/gcc/po/ChangeLog Thu Jul 25 23:39:34 2002
--- gcc-3.2/gcc/po/ChangeLog Wed Aug 14 09:00:29 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/stor-layout.c gcc-3.2/gcc/stor-layout.c
*** gcc-3.1.1/gcc/stor-layout.c Sat Apr 13 01:25:07 2002
--- gcc-3.2/gcc/stor-layout.c Wed Aug 7 23:16:43 2002
*************** place_union_field (rli, field)
*** 669,675 ****
#endif
#ifdef ADJUST_FIELD_ALIGN
! desired_align = ADJUST_FIELD_ALIGN (field, desired_align);
#endif
TYPE_USER_ALIGN (rli->t) |= DECL_USER_ALIGN (field);
--- 669,676 ----
#endif
#ifdef ADJUST_FIELD_ALIGN
! if (! DECL_USER_ALIGN (field))
! desired_align = ADJUST_FIELD_ALIGN (field, desired_align);
#endif
TYPE_USER_ALIGN (rli->t) |= DECL_USER_ALIGN (field);
*************** place_union_field (rli, field)
*** 683,692 ****
entire union to have `int' alignment. */
if (PCC_BITFIELD_TYPE_MATTERS && DECL_BIT_FIELD_TYPE (field))
{
! rli->record_align = MAX (rli->record_align,
! TYPE_ALIGN (TREE_TYPE (field)));
! rli->unpadded_align = MAX (rli->unpadded_align,
! TYPE_ALIGN (TREE_TYPE (field)));
}
#endif
--- 684,698 ----
entire union to have `int' alignment. */
if (PCC_BITFIELD_TYPE_MATTERS && DECL_BIT_FIELD_TYPE (field))
{
! unsigned int type_align = TYPE_ALIGN (TREE_TYPE (field));
!
! #ifdef ADJUST_FIELD_ALIGN
! if (! TYPE_USER_ALIGN (TREE_TYPE (field)))
! type_align = ADJUST_FIELD_ALIGN (field, type_align);
! #endif
! rli->record_align = MAX (rli->record_align, type_align);
! rli->unpadded_align = MAX (rli->unpadded_align, type_align);
! TYPE_USER_ALIGN (rli->t) |= TYPE_USER_ALIGN (TREE_TYPE (field));
}
#endif
*************** place_field (rli, field)
*** 783,789 ****
#endif
#ifdef ADJUST_FIELD_ALIGN
! desired_align = ADJUST_FIELD_ALIGN (field, desired_align);
#endif
/* Record must have at least as much alignment as any field.
--- 789,796 ----
#endif
#ifdef ADJUST_FIELD_ALIGN
! if (! user_align)
! desired_align = ADJUST_FIELD_ALIGN (field, desired_align);
#endif
/* Record must have at least as much alignment as any field.
*************** place_field (rli, field)
*** 827,832 ****
--- 834,844 ----
{
unsigned int type_align = TYPE_ALIGN (type);
+ #ifdef ADJUST_FIELD_ALIGN
+ if (! TYPE_USER_ALIGN (type))
+ type_align = ADJUST_FIELD_ALIGN (field, type_align);
+ #endif
+
if (maximum_field_alignment != 0)
type_align = MIN (type_align, maximum_field_alignment);
else if (DECL_PACKED (field))
*************** place_field (rli, field)
*** 836,841 ****
--- 848,854 ----
rli->unpadded_align = MAX (rli->unpadded_align, DECL_ALIGN (field));
if (warn_packed)
rli->unpacked_align = MAX (rli->unpacked_align, TYPE_ALIGN (type));
+ user_align |= TYPE_USER_ALIGN (type);
}
}
else
*************** place_field (rli, field)
*** 915,920 ****
--- 928,938 ----
HOST_WIDE_INT offset = tree_low_cst (rli->offset, 0);
HOST_WIDE_INT bit_offset = tree_low_cst (rli->bitpos, 0);
+ #ifdef ADJUST_FIELD_ALIGN
+ if (! TYPE_USER_ALIGN (type))
+ type_align = ADJUST_FIELD_ALIGN (field, type_align);
+ #endif
+
/* A bit field may not span more units of alignment of its type
than its type itself. Advance to next boundary if necessary. */
if ((((offset * BITS_PER_UNIT + bit_offset + field_size +
*************** place_field (rli, field)
*** 923,928 ****
--- 941,948 ----
- (offset * BITS_PER_UNIT + bit_offset) / type_align)
> tree_low_cst (TYPE_SIZE (type), 1) / type_align)
rli->bitpos = round_up (rli->bitpos, type_align);
+
+ user_align |= TYPE_USER_ALIGN (type);
}
#endif
*************** place_field (rli, field)
*** 944,949 ****
--- 964,974 ----
HOST_WIDE_INT offset = tree_low_cst (rli->offset, 0);
HOST_WIDE_INT bit_offset = tree_low_cst (rli->bitpos, 0);
+ #ifdef ADJUST_FIELD_ALIGN
+ if (! TYPE_USER_ALIGN (type))
+ type_align = ADJUST_FIELD_ALIGN (field, type_align);
+ #endif
+
if (maximum_field_alignment != 0)
type_align = MIN (type_align, maximum_field_alignment);
/* ??? This test is opposite the test in the containing if
*************** place_field (rli, field)
*** 959,964 ****
--- 984,991 ----
!= ((offset * BITS_PER_UNIT + bit_offset + field_size - 1)
/ type_align))
rli->bitpos = round_up (rli->bitpos, type_align);
+
+ user_align |= TYPE_USER_ALIGN (type);
}
#endif
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/ChangeLog gcc-3.2/gcc/testsuite/ChangeLog
*** gcc-3.1.1/gcc/testsuite/ChangeLog Thu Jul 25 23:39:38 2002
--- gcc-3.2/gcc/testsuite/ChangeLog Wed Aug 14 09:00:33 2002
***************
*** 1,3 ****
--- 1,40 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
+ 2002-08-08 Jakub Jelinek
+
+ * gcc.dg/bitfld-3.c: New test.
+
+ 2002-08-07 Jakub Jelinek
+ Richard Henderson
+
+ * gcc.dg/i386-bitfield1.c: New test.
+ * g++.dg/abi/bitfield3.C: New test.
+
+ 2002-08-01 Benjamin Kosnik
+
+ * g++.old-deja/g++.abi/ptrflags.C (expect): Change
+ __qualifier_flags to __flags.
+
+ 2002-07-24 Roger Sayle
+
+ * gcc.c-torture/execute/memset-3.c: New testcase.
+
+ 2002-06-14 Jason Merrill
+
+ * g++.dg/abi/layout1.C: New test.
+ * g++.dg/abi/layout2.C: New test.
+ * g++.dg/abi/mangle8.C: New test.
+
+ 2002-05-14 Jason Merrill
+
+ * g++.dg/abi/rtti1.C: New test.
+
+ 2002-01-03 Jakub Jelinek
+
+ * gcc.dg/gnu89-init-2.c: New test.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.dg/abi/bitfield3.C gcc-3.2/gcc/testsuite/g++.dg/abi/bitfield3.C
*** gcc-3.1.1/gcc/testsuite/g++.dg/abi/bitfield3.C Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/g++.dg/abi/bitfield3.C Wed Aug 7 18:11:00 2002
***************
*** 0 ****
--- 1,80 ----
+ // Test for oversized bitfield alignment in structs on IA-32
+ // { dg-do run { target i?86-*-* } }
+ // { dg-options "-O2" }
+
+ struct A
+ {
+ char a;
+ int b : 224; // { dg-warning "exceeds its type" "" }
+ char c;
+ } a, a4[4];
+
+ struct B
+ {
+ char d;
+ A e;
+ char f;
+ } b;
+
+ struct C
+ {
+ char g;
+ long long h : 64;
+ char i;
+ } c, c4[4];
+
+ struct D
+ {
+ char j;
+ C k;
+ char l;
+ } d;
+
+ struct E
+ {
+ char m;
+ long long n : 160; // { dg-warning "exceeds its type" "" }
+ char o;
+ } e, e4[4];
+
+ struct F
+ {
+ char p;
+ E q;
+ char r;
+ } f;
+
+ int main (void)
+ {
+ if (&a.c - &a.a != 32)
+ return 1;
+ if (sizeof (a) != 36)
+ return 2;
+ if (sizeof (a4) != 4 * 36)
+ return 3;
+ if (sizeof (b) != 2 * 4 + 36)
+ return 4;
+ if (__alignof__ (b.e) != 4)
+ return 5;
+ if (&c.i - &c.g != 12)
+ return 6;
+ if (sizeof (c) != 16)
+ return 7;
+ if (sizeof (c4) != 4 * 16)
+ return 8;
+ if (sizeof (d) != 2 * 4 + 16)
+ return 9;
+ if (__alignof__ (d.k) != 4)
+ return 10;
+ if (&e.o - &e.m != 24)
+ return 11;
+ if (sizeof (e) != 28)
+ return 12;
+ if (sizeof (e4) != 4 * 28)
+ return 13;
+ if (sizeof (f) != 2 * 4 + 28)
+ return 14;
+ if (__alignof__ (f.q) != 4)
+ return 15;
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.dg/abi/layout1.C gcc-3.2/gcc/testsuite/g++.dg/abi/layout1.C
*** gcc-3.1.1/gcc/testsuite/g++.dg/abi/layout1.C Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/g++.dg/abi/layout1.C Fri Jul 26 23:23:02 2002
***************
*** 0 ****
--- 1,31 ----
+ // Red Hat bugzilla 64535
+ // Bug: We are allocationg stuff into the tail padding of POD class "A".
+ // { dg-do run }
+
+ struct A
+ {
+ int x;
+ char y;
+ };
+
+ struct B : public A {
+ virtual void f () {}
+ char z;
+ };
+
+ A a = { 21, 42 };
+ B b;
+
+ int
+ main (void)
+ {
+ b.x = 12;
+ b.y = 24;
+ b.z = 36;
+
+ A *ap = &b;
+
+ *ap = a;
+
+ return (b.z != 36);
+ }
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.dg/abi/layout2.C gcc-3.2/gcc/testsuite/g++.dg/abi/layout2.C
*** gcc-3.1.1/gcc/testsuite/g++.dg/abi/layout2.C Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/g++.dg/abi/layout2.C Fri Jul 26 23:23:02 2002
***************
*** 0 ****
--- 1,33 ----
+ // Red Hat bugzilla 65210
+ // { dg-do run }
+
+ struct A {
+ int a;
+ };
+
+ struct B : public virtual A {};
+
+ struct C {
+ long double c;
+ };
+
+ struct D : public virtual C {
+ int d;
+ };
+
+ struct E : public B, public D {
+ int e;
+ };
+
+ E e;
+
+ /* The layout of E should begin with the B-in-E vtable pointer, followed by
+ the D-in-E vtable pointer. The bug was that we used to pad out the D
+ fields for long double alignment. */
+
+ int main ()
+ {
+ D* dp = &e;
+ unsigned long d_offset = ((char*)dp) - ((char*) &e);
+ return (d_offset != sizeof(void *));
+ }
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.dg/abi/mangle8.C gcc-3.2/gcc/testsuite/g++.dg/abi/mangle8.C
*** gcc-3.1.1/gcc/testsuite/g++.dg/abi/mangle8.C Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/g++.dg/abi/mangle8.C Fri Jul 26 23:23:02 2002
***************
*** 0 ****
--- 1,16 ----
+ // Red Hat bugzilla 65035
+ // Bug: We were encoding the name of the instantiation as 'operator int'
+ // rather than 'operator T'.
+ // { dg-do compile }
+
+ struct C {
+ template
+ operator T ();
+ };
+
+ template
+ C::operator T () { return 0; }
+
+ template C::operator int ();
+
+ // { dg-final { scan-assembler _ZN1CcvT_IiEEv } }
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.dg/abi/rtti1.C gcc-3.2/gcc/testsuite/g++.dg/abi/rtti1.C
*** gcc-3.1.1/gcc/testsuite/g++.dg/abi/rtti1.C Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/g++.dg/abi/rtti1.C Fri Jul 26 23:23:02 2002
***************
*** 0 ****
--- 1,13 ----
+ // Test that we don't emit the type_info for a polymorphic class other than
+ // with the vtable.
+
+ struct A {
+ virtual ~A();
+ };
+
+ void f ()
+ {
+ throw A();
+ }
+
+ // { dg-final { scan-assembler-dem-not {\ntypeinfo for A[: \t\n]} } }
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C gcc-3.2/gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C
*** gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C Thu Nov 16 04:14:37 2000
--- gcc-3.2/gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C Thu Aug 1 21:56:28 2002
***************
*** 1,5 ****
// Test rtti pointer flags
! // Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 15 Apr 2000
#include
--- 1,5 ----
// Test rtti pointer flags
! // Copyright (C) 2000, 2002 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 15 Apr 2000
#include
*************** int expect (int flags, std::type_info co
*** 18,24 ****
dynamic_cast (&info);
if (!ptr)
return 0;
! if (ptr->__qualifier_flags != flags)
return 0;
return 1;
}
--- 18,24 ----
dynamic_cast (&info);
if (!ptr)
return 0;
! if (ptr->__flags != flags)
return 0;
return 1;
}
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-3.2/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
*** gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Thu Jul 25 23:39:40 2002
--- gcc-3.2/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Wed Aug 14 09:00:36 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/memset-3.c gcc-3.2/gcc/testsuite/gcc.c-torture/execute/memset-3.c
*** gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/memset-3.c Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/gcc.c-torture/execute/memset-3.c Fri Jul 26 23:23:03 2002
***************
*** 0 ****
--- 1,208 ----
+ /* Copyright (C) 2002 Free Software Foundation.
+
+ Test memset with various combinations of constant pointer alignments and
+ lengths to make sure any optimizations in the compiler are correct.
+
+ Written by Roger Sayle, July 22, 2002. */
+
+ #ifndef MAX_OFFSET
+ #define MAX_OFFSET (sizeof (long long))
+ #endif
+
+ #ifndef MAX_COPY
+ #define MAX_COPY 15
+ #endif
+
+ #ifndef MAX_EXTRA
+ #define MAX_EXTRA (sizeof (long long))
+ #endif
+
+ #define MAX_LENGTH (MAX_OFFSET + MAX_COPY + MAX_EXTRA)
+
+ static union {
+ char buf[MAX_LENGTH];
+ long long align_int;
+ long double align_fp;
+ } u;
+
+ char A = 'A';
+
+ void reset ()
+ {
+ int i;
+
+ for (i = 0; i < MAX_LENGTH; i++)
+ u.buf[i] = 'a';
+ }
+
+ void check (int off, int len, int ch)
+ {
+ char *q;
+ int i;
+
+ q = u.buf;
+ for (i = 0; i < off; i++, q++)
+ if (*q != 'a')
+ abort ();
+
+ for (i = 0; i < len; i++, q++)
+ if (*q != ch)
+ abort ();
+
+ for (i = 0; i < MAX_EXTRA; i++, q++)
+ if (*q != 'a')
+ abort ();
+ }
+
+ int main ()
+ {
+ int len;
+ char *p;
+
+ /* off == 0 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf, '\0', len);
+ if (p != u.buf) abort ();
+ check (0, len, '\0');
+
+ p = memset (u.buf, A, len);
+ if (p != u.buf) abort ();
+ check (0, len, 'A');
+
+ p = memset (u.buf, 'B', len);
+ if (p != u.buf) abort ();
+ check (0, len, 'B');
+ }
+
+ /* off == 1 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+1, '\0', len);
+ if (p != u.buf+1) abort ();
+ check (1, len, '\0');
+
+ p = memset (u.buf+1, A, len);
+ if (p != u.buf+1) abort ();
+ check (1, len, 'A');
+
+ p = memset (u.buf+1, 'B', len);
+ if (p != u.buf+1) abort ();
+ check (1, len, 'B');
+ }
+
+ /* off == 2 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+2, '\0', len);
+ if (p != u.buf+2) abort ();
+ check (2, len, '\0');
+
+ p = memset (u.buf+2, A, len);
+ if (p != u.buf+2) abort ();
+ check (2, len, 'A');
+
+ p = memset (u.buf+2, 'B', len);
+ if (p != u.buf+2) abort ();
+ check (2, len, 'B');
+ }
+
+ /* off == 3 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+3, '\0', len);
+ if (p != u.buf+3) abort ();
+ check (3, len, '\0');
+
+ p = memset (u.buf+3, A, len);
+ if (p != u.buf+3) abort ();
+ check (3, len, 'A');
+
+ p = memset (u.buf+3, 'B', len);
+ if (p != u.buf+3) abort ();
+ check (3, len, 'B');
+ }
+
+ /* off == 4 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+4, '\0', len);
+ if (p != u.buf+4) abort ();
+ check (4, len, '\0');
+
+ p = memset (u.buf+4, A, len);
+ if (p != u.buf+4) abort ();
+ check (4, len, 'A');
+
+ p = memset (u.buf+4, 'B', len);
+ if (p != u.buf+4) abort ();
+ check (4, len, 'B');
+ }
+
+ /* off == 5 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+5, '\0', len);
+ if (p != u.buf+5) abort ();
+ check (5, len, '\0');
+
+ p = memset (u.buf+5, A, len);
+ if (p != u.buf+5) abort ();
+ check (5, len, 'A');
+
+ p = memset (u.buf+5, 'B', len);
+ if (p != u.buf+5) abort ();
+ check (5, len, 'B');
+ }
+
+ /* off == 6 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+6, '\0', len);
+ if (p != u.buf+6) abort ();
+ check (6, len, '\0');
+
+ p = memset (u.buf+6, A, len);
+ if (p != u.buf+6) abort ();
+ check (6, len, 'A');
+
+ p = memset (u.buf+6, 'B', len);
+ if (p != u.buf+6) abort ();
+ check (6, len, 'B');
+ }
+
+ /* off == 7 */
+ for (len = 0; len < MAX_COPY; len++)
+ {
+ reset ();
+
+ p = memset (u.buf+7, '\0', len);
+ if (p != u.buf+7) abort ();
+ check (7, len, '\0');
+
+ p = memset (u.buf+7, A, len);
+ if (p != u.buf+7) abort ();
+ check (7, len, 'A');
+
+ p = memset (u.buf+7, 'B', len);
+ if (p != u.buf+7) abort ();
+ check (7, len, 'B');
+ }
+
+ exit (0);
+ }
+
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/gcc.dg/bitfld-3.c gcc-3.2/gcc/testsuite/gcc.dg/bitfld-3.c
*** gcc-3.1.1/gcc/testsuite/gcc.dg/bitfld-3.c Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/gcc.dg/bitfld-3.c Wed Aug 7 23:16:44 2002
***************
*** 0 ****
--- 1,67 ----
+ /* Test for bitfield alignment in structs and unions. */
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+
+ extern void abort (void);
+ extern void exit (int);
+
+ typedef long la __attribute__((aligned (8)));
+
+ struct A
+ {
+ char a;
+ union UA
+ {
+ char x;
+ la y : 6;
+ } b;
+ char c;
+ } a;
+
+ struct B
+ {
+ char a;
+ union UB
+ {
+ char x;
+ long y : 6 __attribute__((aligned (8)));
+ } b;
+ char c;
+ } b;
+
+ struct C
+ {
+ char a;
+ struct UC
+ {
+ la y : 6;
+ } b;
+ char c;
+ } c;
+
+ struct D
+ {
+ char a;
+ struct UD
+ {
+ long y : 6 __attribute__((aligned (8)));
+ } b;
+ char c;
+ } d;
+
+ int main (void)
+ {
+ if (sizeof (a) != sizeof (b))
+ abort ();
+ if (sizeof (a) != sizeof (c))
+ abort ();
+ if (sizeof (a) != sizeof (d))
+ abort ();
+ if ((&a.c - &a.a) != (&b.c - &b.a))
+ abort ();
+ if ((&a.c - &a.a) != (&c.c - &c.a))
+ abort ();
+ if ((&a.c - &a.a) != (&d.c - &d.a))
+ abort ();
+ exit (0);
+ }
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/gcc.dg/gnu89-init-2.c gcc-3.2/gcc/testsuite/gcc.dg/gnu89-init-2.c
*** gcc-3.1.1/gcc/testsuite/gcc.dg/gnu89-init-2.c Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/gcc.dg/gnu89-init-2.c Fri Jul 26 23:23:03 2002
***************
*** 0 ****
--- 1,25 ----
+ /* Test whether __compound_literal.* objects are not emitted unless
+ they are actually needed. */
+ /* Origin: Jakub Jelinek */
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu89 -O2" } */
+ /* { dg-final { scan-assembler-not "__compound_literal" } } */
+
+ struct A { int i; int j; int k[4]; };
+ struct B { };
+ struct C { int i; };
+ struct D { int i; struct C j; };
+
+ struct A a = (struct A) { .j = 6, .k[2] = 12 };
+ struct B b = (struct B) { };
+ int c[] = (int []) { [2] = 6, 7, 8 };
+ int d[] = (int [3]) { 1 };
+ int e[2] = (int []) { 1, 2 };
+ int f[2] = (int [2]) { 1 };
+ struct C g[3] = { [2] = (struct C) { 13 }, [1] = (const struct C) { 12 } };
+ struct D h = { .j = (struct C) { 15 }, .i = 14 };
+ struct D i[2] = { [1].j = (const struct C) { 17 },
+ [0] = { 0, (struct C) { 16 } } };
+ static const int *j = 1 ? (const int *) 0 : & (const int) { 26 };
+ int k = (int) sizeof ((int [6]) { 1, 2, 3, 4, 5, 6 }) + 4;
+ int l = (int) sizeof ((struct C) { 16 });
diff -Nrc3pad gcc-3.1.1/gcc/testsuite/gcc.dg/i386-bitfield1.c gcc-3.2/gcc/testsuite/gcc.dg/i386-bitfield1.c
*** gcc-3.1.1/gcc/testsuite/gcc.dg/i386-bitfield1.c Thu Jan 1 00:00:00 1970
--- gcc-3.2/gcc/testsuite/gcc.dg/i386-bitfield1.c Wed Aug 7 18:11:00 2002
***************
*** 0 ****
--- 1,53 ----
+ // Test for bitfield alignment in structs on IA-32
+ // { dg-do run { target i?86-*-* } }
+ // { dg-options "-O2" }
+
+ extern void abort (void);
+ extern void exit (int);
+
+ struct A
+ {
+ char a;
+ long long b : 61;
+ char c;
+ } a, a4[4];
+
+ struct B
+ {
+ char d;
+ struct A e;
+ char f;
+ } b;
+
+ struct C
+ {
+ char g;
+ union U
+ {
+ char u1;
+ long long u2;
+ long long u3 : 64;
+ } h;
+ char i;
+ } c;
+
+ int main (void)
+ {
+ if (&a.c - &a.a != 12)
+ abort ();
+ if (sizeof (a) != 16)
+ abort ();
+ if (sizeof (a4) != 4 * 16)
+ abort ();
+ if (sizeof (b) != 2 * 4 + 16)
+ abort ();
+ if (__alignof__ (b.e) != 4)
+ abort ();
+ if (&c.i - &c.g != 12)
+ abort ();
+ if (sizeof (c) != 16)
+ abort ();
+ if (__alignof__ (c.h) != 4)
+ abort ();
+ exit (0);
+ }
diff -Nrc3pad gcc-3.1.1/gcc/version.c gcc-3.2/gcc/version.c
*** gcc-3.1.1/gcc/version.c Thu Jul 25 23:40:31 2002
--- gcc-3.2/gcc/version.c Wed Aug 14 09:01:17 2002
***************
*** 1,4 ****
#include "ansidecl.h"
#include "version.h"
! const char *const version_string = "3.1.1";
--- 1,4 ----
#include "ansidecl.h"
#include "version.h"
! const char *const version_string = "3.2";
diff -Nrc3pad gcc-3.1.1/include/ChangeLog gcc-3.2/include/ChangeLog
*** gcc-3.1.1/include/ChangeLog Thu Jul 25 23:39:43 2002
--- gcc-3.2/include/ChangeLog Wed Aug 14 09:00:39 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libf2c/ChangeLog gcc-3.2/libf2c/ChangeLog
*** gcc-3.1.1/libf2c/ChangeLog Thu Jul 25 23:39:52 2002
--- gcc-3.2/libf2c/ChangeLog Wed Aug 14 09:00:42 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libf2c/libF77/Version.c gcc-3.2/libf2c/libF77/Version.c
*** gcc-3.1.1/libf2c/libF77/Version.c Thu Jul 25 23:40:37 2002
--- gcc-3.2/libf2c/libF77/Version.c Wed Aug 14 09:01:25 2002
*************** static char junk[] = "\n@(#)LIBF77 VERSI
*** 3,9 ****
/*
*/
! char __G77_LIBF77_VERSION__[] = "3.1.1 20020725 (release)";
/*
2.00 11 June 1980. File version.c added to library.
--- 3,9 ----
/*
*/
! char __G77_LIBF77_VERSION__[] = "3.2 20020814 (release)";
/*
2.00 11 June 1980. File version.c added to library.
diff -Nrc3pad gcc-3.1.1/libf2c/libI77/Version.c gcc-3.2/libf2c/libI77/Version.c
*** gcc-3.1.1/libf2c/libI77/Version.c Thu Jul 25 23:40:39 2002
--- gcc-3.2/libf2c/libI77/Version.c Wed Aug 14 09:01:28 2002
*************** static char junk[] = "\n@(#) LIBI77 VERS
*** 3,9 ****
/*
*/
! char __G77_LIBI77_VERSION__[] = "3.1.1 20020725 (release)";
/*
2.01 $ format added
--- 3,9 ----
/*
*/
! char __G77_LIBI77_VERSION__[] = "3.2 20020814 (release)";
/*
2.01 $ format added
diff -Nrc3pad gcc-3.1.1/libf2c/libU77/Version.c gcc-3.2/libf2c/libU77/Version.c
*** gcc-3.1.1/libf2c/libU77/Version.c Thu Jul 25 23:40:41 2002
--- gcc-3.2/libf2c/libU77/Version.c Wed Aug 14 09:01:32 2002
***************
*** 1,6 ****
static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n";
! char __G77_LIBU77_VERSION__[] = "3.1.1 20020725 (release)";
#include
--- 1,6 ----
static char junk[] = "\n@(#) LIBU77 VERSION 19980709\n";
! char __G77_LIBU77_VERSION__[] = "3.2 20020814 (release)";
#include
diff -Nrc3pad gcc-3.1.1/libffi/ChangeLog gcc-3.2/libffi/ChangeLog
*** gcc-3.1.1/libffi/ChangeLog Thu Jul 25 23:39:54 2002
--- gcc-3.2/libffi/ChangeLog Wed Aug 14 09:00:44 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libiberty/ChangeLog gcc-3.2/libiberty/ChangeLog
*** gcc-3.1.1/libiberty/ChangeLog Thu Jul 25 23:40:09 2002
--- gcc-3.2/libiberty/ChangeLog Wed Aug 14 09:00:49 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libjava/ChangeLog gcc-3.2/libjava/ChangeLog
*** gcc-3.1.1/libjava/ChangeLog Thu Jul 25 23:40:12 2002
--- gcc-3.2/libjava/ChangeLog Wed Aug 14 09:00:52 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libjava/libltdl/ChangeLog gcc-3.2/libjava/libltdl/ChangeLog
*** gcc-3.1.1/libjava/libltdl/ChangeLog Thu Jul 25 23:40:15 2002
--- gcc-3.2/libjava/libltdl/ChangeLog Wed Aug 14 09:00:55 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libjava/testsuite/ChangeLog gcc-3.2/libjava/testsuite/ChangeLog
*** gcc-3.1.1/libjava/testsuite/ChangeLog Thu Jul 25 23:40:17 2002
--- gcc-3.2/libjava/testsuite/ChangeLog Wed Aug 14 09:00:59 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libobjc/ChangeLog gcc-3.2/libobjc/ChangeLog
*** gcc-3.1.1/libobjc/ChangeLog Thu Jul 25 23:40:20 2002
--- gcc-3.2/libobjc/ChangeLog Wed Aug 14 09:01:01 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/ChangeLog gcc-3.2/libstdc++-v3/ChangeLog
*** gcc-3.1.1/libstdc++-v3/ChangeLog Thu Jul 25 23:40:22 2002
--- gcc-3.2/libstdc++-v3/ChangeLog Wed Aug 14 09:01:05 2002
***************
*** 1,3 ****
--- 1,221 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
+ 2002-08-06 Benjamin Kosnik
+
+ Revert PR libstdc++/6594
+ * src/strstream.cc (strstreambuf): Revert.
+ (strstreambuf::overflow): Same.
+ (strstreambuf::~strstreambuf): Same.
+ * testsuite/backward/strstream_members.cc (test02): Add.
+
+ * testsuite/19_diagnostics/stdexceptions.cc (test04): Add bool test.
+
+ 2002-08-01 Benjamin Kosnik
+ Jakub Jelinek
+
+ * config/linker-map.gnu: Change CXXABI_1 to CXXABI_1.2,
+ GLIBCPP_3.1 to GLIBCPP_3.2.
+
+ 2002-07-31 Benjamin Kosnik
+ Mark Mitchell
+
+ PR libstdc++/7442
+ * libsupc++/cxxabi.h (class __base_class_type_info::hwm_bit):
+ Change to __hwm_bit.
+ (__class_type_info): And here.
+
+ 2002-07-31 Benjamin Kosnik
+
+ PR libstdc++/7442
+ * libsupc++/cxxabi.h
+ (__base_class_info): Change to __base_class_type_info. 2.9.5p6c
+ (__base_class_info::__base): Change to __base_type. 2.9.5p6c
+ (__base_class_info::offset_shift): Change to __offset_shift. 2.9.5p6c
+ (__vmi_class_type_info::__base_info): Don't make const, of type
+ __base_class_type_info, as per 2.9.5p6c
+ (__pbase_type_info::__qualifier_flags): Change to __flags, as per
+ 2.9.5p7.
+ (__pbase_type_info::__qualifier_masks): Change to __masks, as per
+ 2.9.5p7.
+ (__pointer_to_member_type_info::__context_class): Change member to
+ __context, as per 2.9.5p9.
+ * libsupc++/tinfo2.cc (__pointer_catch): Change __context_class to
+ __context.
+ * libsupc++/tinfo2.cc (__do_catch): Change __qualifier_flags to
+ __flags.
+ * libsupc++/tinfo.cc (__do_find_public_src): Change __base to
+ __base_type.
+ * libsupc++/tinfo.cc (__do_dyncast): Same.
+ * libsupc++/tinfo.cc (__do_upcast): Same.
+
+ 2002-07-31 Simon Whomsley
+
+ * docs/html/22_locale/howto.html: Fix.
+
+ 2002-07-31 Alex Kompel
+
+ PR libstdc++/7445
+ * src/locale.cc (locale::classic): Move locks inside !_S_classic
+ block.
+
+ 2002-07-30 Benjamin Kosnik
+ Gabriel Dos Reis
+
+ * include/bits/char_traits.h: Remove generic definitions.
+ * include/bits/streambuf_iterator.h (istreambuf_iterator): Use
+ eof, not -2.
+ * include/bits/istream.tcc (istream::readsome): Don't check
+ against eof, instead use constants.
+ (istream::sync): Same.
+ (istream::sentry::sentry): Use eq_int_type.
+ (istream::get): Same.
+ * include/bits/ostream.tcc: Change __pad to
+ __pad<_CharT, _Traits>::_S_pad.
+ * include/bits/locale_facets.h: Add __pad_traits generic and
+ ostreambuf_iterator specialization.
+ * include/bits/locale_facets.tcc: Change __pad into struct __pad
+ with a _CharT and _Traits template parameter and _S_pad static
+ member function.
+ * src/locale-inst.cc: Update __pad instantiations.
+
+ * include/std/std_fstream.h: Declare _M_underflow_common
+ specializations.
+ * src/fstream.cc: New. Add _M_underflow_common specializations.
+ * include/bits/fstream.tcc (filebuf::close): Use traits_type.
+ (filebuf::_M_underflow_common(bool)): Remove generic version, as
+ sys_ungetc and custom int_types don't get along.
+ * include/std/std_streambuf.h: Add _M_pos.
+ * src/Makefile.am (sources): Add fstream.cc.
+ * src/Makefile.in: Regenerate.
+
+ * testsuite/21_strings/capacity.cc: Add char_traits specializations.
+ * testsuite/22_locale/codecvt_members_unicode_char.cc: Same.
+ * testsuite/22_locale/codecvt_members_unicode_wchar_t.cc: Same.
+ * testsuite/22_locale/ctor_copy_dtor.cc: Same.
+ * testsuite/27_io/filebuf_virtuals.cc (test07): Move to...
+ * testsuite/27_io/filebuf.cc: ...here.
+ * testsuite/testsuite_hooks.h: Add gnu_char, gnu_int, char_traits
+ specialization for both.
+ * testsuite/27_io/streambuf.cc: Add instantiation test,
+ testsuite_hooks include.
+ * testsuite/27_io/istream.cc: Same.
+ * testsuite/27_io/ostream.cc: Same.
+ * testsuite/27_io/fstream.cc: Same.
+ * testsuite/27_io/stringstream.cc: Same.
+ * testsuite/27_io/filebuf.cc: Same.
+ * testsuite/27_io/stringbuf.cc: Same.
+
+ 2002-07-26 Phil Edwards
+
+ * libsupc++/new (placement delete): Remove unused paramater names.
+
+ 2002-07-25 Benjamin Kosnik
+
+ PR libstdc++/7216
+ * include/std/std_istream.h (basic_iostream): Add typedefs for
+ char_type, int_type, pos_type, off_type, and traits_type.
+ * testsuite/27_io/iostream.cc (test01): Add typedef tests.
+ * testsuite/27_io/istream.cc: Same.
+ * testsuite/27_io/ostream.cc: Same.
+ * testsuite/27_io/filebuf.cc: Same.
+ * testsuite/27_io/stringbuf.cc: Replace content, move to...
+ * testsuite/27_io/stringbuf_members.cc: ...here.
+ * testsuite/27_io/streambuf.cc: Replace content, move to...
+ * testsuite/27_io/streambuf_members.cc: ...here.
+ * testsuite/27_io/stringstream.cc: Replace content, move to...
+ * testsuite/27_io/stringstream_members.cc: ...here.
+ * testsuite/27_io/ios.cc: New file.
+ * testsuite/27_io/fstream.cc: New file.
+ * testsuite/27_io/ifstream.cc: New file.
+ * testsuite/27_io/ofstream.cc: New file.
+ * testsuite/27_io/istringstream.cc: New file.
+ * testsuite/27_io/ostringstream.cc: New file.
+
+ 2002-07-25 Benjamin Kosnik
+
+ PR libstdc++/7220
+ * include/bits/istream.tcc (istream::ignore): Don't extract on
+ zero.
+ * testsuite/27_io/istream_unformatted.cc (test10): Add.
+
+ 2002-07-24 Benjamin Kosnik
+
+ PR libstdc++/7222
+ * src/locale.cc (locale::locale(const char*)): Use setlocale NULL.
+ * testsuite/22_locale/ctor_copy_dtor.cc (test02): New.
+
+ 2002-07-24 Benjamin Kosnik
+
+ PR libstdc++/7286
+ * libsupc++/new: Add placement delete.
+ * testsuite/18_support/new_delete_placement.cc: New.
+
+ 2002-07-07 Paolo Carlini
+
+ PR libstdc++/7186
+ * include/bits/stl_deque.h (_Deque_iterator::operator-):
+ Make non-member, as already happens for the comparison
+ operators in accord with DR179 (Ready).
+ * testsuite/23_containers/deque_operators.cc: Add test02.
+
+ 2002-07-04 Benjamin Kosnik
+ Jack Reeves
+
+ * include/std/std_streambuf.h (basic_streambuf::_M_buf): Change to
+ size_t, from int_type.
+ (basic_streambuf::_M_buf_size_opt): Same.
+ (basic_streambuf::_S_pback_sizex): Same.
+ * include/bits/streambuf.tcc: Same.
+ * include/std/std_streambuf.h (basic_streambuf::snextc): Use
+ eq_int_type.
+ (basic_streambuf::uflow): Same.
+ * include/bits/sstream.tcc (basic_stringbuf::overflow): Use
+ to_char_type.
+ * include/bits/basic_ios.tcc (basic_ios::init): Use _CharT().
+ * include/bits/streambuf.tcc (basic_streambuf::xsgetn): Use
+ eq_int_type.
+ (basic_streambuf::xsputn): Same.
+ (__copy_streambufs): Same.
+
+ 2002-07-02 Paolo Carlini
+
+ PR libstdc++/6642
+ * include/bits/stl_iterator.h
+ (__normal_iterator::operator-(const __normal_iterator&)):
+ Make non-member, as already happens for the comparison
+ operators in accord with DR179 (Ready).
+ * testsuite/24_iterators/iterator.cc: Add test from the PR.
+
+ 2002-07-02 Benjamin Kosnik
+
+ PR libstdc++/6410
+ * include/bits/locale_facets.h (moneypunct::moneypunct): Add const
+ char* name parameter.
+ * config/locale/gnu/monetary_members.cc: Use it.
+ * config/locale/generic/monetary_members.cc: Same.
+ * src/localename.cc (_Impl::_Impl(const char*, size_t)): Use it.
+
+ 2002-07-01 Benjamin Kosnik
+
+ * configure.in (libtool_VERSION): Bump to 5:0:0.
+ * configure: Regenerate.
+
+ 2002-05-19 Paolo Carlini
+
+ * testsuite/23_containers/deque_operators.cc (test01):
+ Fix minor typo in last commit.
+
+ 2002-05-18 Paolo Carlini
+
+ PR libstdc++/6503
+ * include/bits/stl_deque.h (_Deque_iterator::operator==,
+ operator!=, operator<, operator>, operator>=, operator<=):
+ Make non-member functions, to allow comparing const and
+ non-const iterators in any order.
+ * testsuite/23_containers/deque_operators.cc: New testfile.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/config/linker-map.gnu gcc-3.2/libstdc++-v3/config/linker-map.gnu
*** gcc-3.1.1/libstdc++-v3/config/linker-map.gnu Fri Apr 19 08:28:13 2002
--- gcc-3.2/libstdc++-v3/config/linker-map.gnu Thu Aug 1 21:29:14 2002
***************
*** 21,27 ****
## USA.
! GLIBCPP_3.1 {
global:
--- 21,27 ----
## USA.
! GLIBCPP_3.2 {
global:
*************** GLIBCPP_3.1 {
*** 97,103 ****
# Symbols in the support library (libsupc++) have their own tag.
! CXXABI_1 {
global:
__cxa_*;
--- 97,103 ----
# Symbols in the support library (libsupc++) have their own tag.
! CXXABI_1.2 {
global:
__cxa_*;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/config/locale/generic/monetary_members.cc gcc-3.2/libstdc++-v3/config/locale/generic/monetary_members.cc
*** gcc-3.1.1/libstdc++-v3/config/locale/generic/monetary_members.cc Fri Apr 19 07:59:01 2002
--- gcc-3.2/libstdc++-v3/config/locale/generic/monetary_members.cc Fri Jul 26 23:23:42 2002
*************** namespace std
*** 45,51 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale)
{
// "C" locale
_M_decimal_point = '.';
--- 45,51 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale, const char*)
{
// "C" locale
_M_decimal_point = '.';
*************** namespace std
*** 61,67 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale)
{
// "C" locale
_M_decimal_point = '.';
--- 61,67 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale, const char*)
{
// "C" locale
_M_decimal_point = '.';
*************** namespace std
*** 86,92 ****
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale)
{
// "C" locale
_M_decimal_point = L'.';
--- 86,93 ----
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale,
! const char*)
{
// "C" locale
_M_decimal_point = L'.';
*************** namespace std
*** 102,108 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale)
{
// "C" locale
_M_decimal_point = L'.';
--- 103,110 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale,
! const char*)
{
// "C" locale
_M_decimal_point = L'.';
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/config/locale/gnu/monetary_members.cc gcc-3.2/libstdc++-v3/config/locale/gnu/monetary_members.cc
*** gcc-3.1.1/libstdc++-v3/config/locale/gnu/monetary_members.cc Fri Apr 19 07:59:03 2002
--- gcc-3.2/libstdc++-v3/config/locale/gnu/monetary_members.cc Fri Jul 26 23:23:42 2002
*************** namespace std
*** 216,222 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc)
{
if (__cloc == _S_c_locale)
{
--- 216,223 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc,
! const char*)
{
if (__cloc == _S_c_locale)
{
*************** namespace std
*** 260,266 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc)
{
if (__cloc == _S_c_locale)
{
--- 261,268 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc,
! const char*)
{
if (__cloc == _S_c_locale)
{
*************** namespace std
*** 313,319 ****
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc)
{
if (__cloc == _S_c_locale)
{
--- 315,322 ----
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc,
! const char* __name)
{
if (__cloc == _S_c_locale)
{
*************** namespace std
*** 331,336 ****
--- 334,343 ----
else
{
// Named locale.
+ // XXX Fix me. Switch to named locale so that mbsrtowcs will work.
+ char* __old = strdup(setlocale(LC_ALL, NULL));
+ setlocale(LC_ALL, __name);
+
_M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
_M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w);
*************** namespace std
*** 391,402 ****
char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
}
}
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc)
{
if (__cloc == _S_c_locale)
{
--- 398,414 ----
char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
+
+ // XXX
+ setlocale(LC_ALL, __old);
+ free(__old);
}
}
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc,
! const char* __name)
{
if (__cloc == _S_c_locale)
{
*************** namespace std
*** 414,419 ****
--- 426,435 ----
else
{
// Named locale.
+ // XXX Fix me. Switch to named locale so that mbsrtowcs will work.
+ char* __old = strdup(setlocale(LC_ALL, NULL));
+ setlocale(LC_ALL, __name);
+
_M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
_M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w);
_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
*************** namespace std
*** 473,478 ****
--- 489,498 ----
char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
+
+ // XXX
+ setlocale(LC_ALL, __old);
+ free(__old);
}
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/configure gcc-3.2/libstdc++-v3/configure
*** gcc-3.1.1/libstdc++-v3/configure Wed Jul 3 22:47:36 2002
--- gcc-3.2/libstdc++-v3/configure Fri Jul 26 23:23:04 2002
*************** ORIGINAL_LD_FOR_MULTILIBS=$LD
*** 599,605 ****
PACKAGE=libstdc++
# For libtool versioning info, format is CURRENT:REVISION:AGE
! libtool_VERSION=4:1:0
--- 599,605 ----
PACKAGE=libstdc++
# For libtool versioning info, format is CURRENT:REVISION:AGE
! libtool_VERSION=5:0:0
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/configure.in gcc-3.2/libstdc++-v3/configure.in
*** gcc-3.1.1/libstdc++-v3/configure.in Wed Jul 3 22:47:34 2002
--- gcc-3.2/libstdc++-v3/configure.in Fri Jul 26 23:23:04 2002
*************** ORIGINAL_LD_FOR_MULTILIBS=$LD
*** 13,19 ****
PACKAGE=libstdc++
AC_SUBST(PACKAGE)
# For libtool versioning info, format is CURRENT:REVISION:AGE
! libtool_VERSION=4:1:0
AC_SUBST(libtool_VERSION)
GLIBCPP_TOPREL_CONFIGURE
--- 13,19 ----
PACKAGE=libstdc++
AC_SUBST(PACKAGE)
# For libtool versioning info, format is CURRENT:REVISION:AGE
! libtool_VERSION=5:0:0
AC_SUBST(libtool_VERSION)
GLIBCPP_TOPREL_CONFIGURE
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/docs/html/22_locale/howto.html gcc-3.2/libstdc++-v3/docs/html/22_locale/howto.html
*** gcc-3.1.1/libstdc++-v3/docs/html/22_locale/howto.html Thu Oct 11 18:41:44 2001
--- gcc-3.2/libstdc++-v3/docs/html/22_locale/howto.html Thu Aug 1 21:29:14 2002
***************
*** 163,169 ****
struct Toupper
{
! Toupper (std::locale const& l) : loc(l) {;}
char operator() (char c) { return std::toupper(c,loc); }
private:
std::locale const& loc;
--- 163,169 ----
struct Toupper
{
! Toupper(std::locale const& l) : loc(l) {;}
char operator() (char c) { return std::toupper(c,loc); }
private:
std::locale const& loc;
***************
*** 171,177 ****
struct Tolower
{
! Tolower (std::locale const& l) : loc(l) {;}
char operator() (char c) { return std::tolower(c,loc); }
private:
std::locale const& loc;
--- 171,177 ----
struct Tolower
{
! Tolower(std::locale const& l) : loc(l) {;}
char operator() (char c) { return std::tolower(c,loc); }
private:
std::locale const& loc;
***************
*** 179,204 ****
int main ()
{
! std::string s ("Some Kind Of Initial Input Goes Here");
! Toupper up ( std::locale("C") );
! Tolower down ( std::locale("C") );
! // Change everything into upper case
! std::transform (s.begin(), s.end(), s.begin(),
! up
! );
! // Change everything into lower case
! std::transform (s.begin(), s.end(), s.begin(),
! down
! );
// Change everything back into upper case, but store the
! // result in a different string
std::string capital_s;
! std::transform (s.begin(), s.end(), std::back_inserter(capital_s),
! up
! );
}
The final version of the code uses bind2nd to eliminate
--- 179,199 ----
int main ()
{
! std::string s("Some Kind Of Initial Input Goes Here");
! std::locale loc_c("C");
! Toupper up(loc_c);
! Tolower down(loc_c);
! // Change everything into upper case.
! std::transform(s.begin(), s.end(), s.begin(), up);
! // Change everything into lower case.
! std::transform(s.begin(), s.end(), s.begin(), down);
// Change everything back into upper case, but store the
! // result in a different string.
std::string capital_s;
! std::transform(s.begin(), s.end(), std::back_inserter(capital_s), up);
}
The final version of the code uses bind2nd to eliminate
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/basic_ios.tcc gcc-3.2/libstdc++-v3/include/bits/basic_ios.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/basic_ios.tcc Wed Apr 3 02:33:12 2002
--- gcc-3.2/libstdc++-v3/include/bits/basic_ios.tcc Fri Jul 26 23:23:44 2002
*************** namespace std
*** 156,162 ****
// unformatted input and output with non-required basic_ios
// instantiations is possible even without imbuing the expected
// ctype facet.
! _M_fill = 0;
_M_fill_init = false;
_M_exception = goodbit;
--- 156,162 ----
// unformatted input and output with non-required basic_ios
// instantiations is possible even without imbuing the expected
// ctype facet.
! _M_fill = _CharT();
_M_fill_init = false;
_M_exception = goodbit;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/c++config gcc-3.2/libstdc++-v3/include/bits/c++config
*** gcc-3.1.1/libstdc++-v3/include/bits/c++config Thu Jul 25 07:16:28 2002
--- gcc-3.2/libstdc++-v3/include/bits/c++config Wed Aug 14 07:16:24 2002
***************
*** 34,40 ****
#include
// The current version of the C++ library in compressed ISO date format.
! #define __GLIBCPP__ 20020725
// This is necessary until GCC supports separate template
// compilation.
--- 34,40 ----
#include
// The current version of the C++ library in compressed ISO date format.
! #define __GLIBCPP__ 20020814
// This is necessary until GCC supports separate template
// compilation.
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/char_traits.h gcc-3.2/libstdc++-v3/include/bits/char_traits.h
*** gcc-3.1.1/libstdc++-v3/include/bits/char_traits.h Fri Jan 4 21:27:31 2002
--- gcc-3.2/libstdc++-v3/include/bits/char_traits.h Thu Aug 1 21:29:17 2002
***************
*** 1,6 ****
// Character Traits for use by standard string and iostream -*- C++ -*-
! // Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
--- 1,7 ----
// Character Traits for use by standard string and iostream -*- C++ -*-
! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
! // Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
*************** namespace std
*** 53,134 ****
struct char_traits
{
typedef _CharT char_type;
! // Unsigned as wint_t in unsigned.
typedef unsigned long int_type;
typedef streampos pos_type;
typedef streamoff off_type;
typedef mbstate_t state_type;
static void
! assign(char_type& __c1, const char_type& __c2)
! { __c1 = __c2; }
static bool
! eq(const char_type& __c1, const char_type& __c2)
! { return __c1 == __c2; }
static bool
! lt(const char_type& __c1, const char_type& __c2)
! { return __c1 < __c2; }
static int
! compare(const char_type* __s1, const char_type* __s2, size_t __n)
! {
! for (size_t __i = 0; __i < __n; ++__i)
! if (!eq(__s1[__i], __s2[__i]))
! return lt(__s1[__i], __s2[__i]) ? -1 : 1;
! return 0;
! }
static size_t
! length(const char_type* __s)
! {
! const char_type* __p = __s;
! while (*__p) ++__p;
! return (__p - __s);
! }
static const char_type*
! find(const char_type* __s, size_t __n, const char_type& __a)
! {
! for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
! if (*__p == __a) return __p;
! return 0;
! }
static char_type*
! move(char_type* __s1, const char_type* __s2, size_t __n)
! { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); }
static char_type*
! copy(char_type* __s1, const char_type* __s2, size_t __n)
! { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); }
static char_type*
! assign(char_type* __s, size_t __n, char_type __a)
! {
! for (char_type* __p = __s; __p < __s + __n; ++__p)
! assign(*__p, __a);
! return __s;
! }
static char_type
! to_char_type(const int_type& __c)
! { return char_type(__c); }
static int_type
! to_int_type(const char_type& __c) { return int_type(__c); }
static bool
! eq_int_type(const int_type& __c1, const int_type& __c2)
! { return __c1 == __c2; }
static int_type
! eof() { return static_cast(-1); }
static int_type
! not_eof(const int_type& __c)
! { return eq_int_type(__c, eof()) ? int_type(0) : __c; }
};
--- 54,106 ----
struct char_traits
{
typedef _CharT char_type;
! // Unsigned as wint_t is unsigned.
typedef unsigned long int_type;
typedef streampos pos_type;
typedef streamoff off_type;
typedef mbstate_t state_type;
static void
! assign(char_type& __c1, const char_type& __c2);
static bool
! eq(const char_type& __c1, const char_type& __c2);
static bool
! lt(const char_type& __c1, const char_type& __c2);
static int
! compare(const char_type* __s1, const char_type* __s2, size_t __n);
static size_t
! length(const char_type* __s);
static const char_type*
! find(const char_type* __s, size_t __n, const char_type& __a);
static char_type*
! move(char_type* __s1, const char_type* __s2, size_t __n);
static char_type*
! copy(char_type* __s1, const char_type* __s2, size_t __n);
static char_type*
! assign(char_type* __s, size_t __n, char_type __a);
static char_type
! to_char_type(const int_type& __c);
static int_type
! to_int_type(const char_type& __c);
static bool
! eq_int_type(const int_type& __c1, const int_type& __c2);
static int_type
! eof();
static int_type
! not_eof(const int_type& __c);
};
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/fpos.h gcc-3.2/libstdc++-v3/include/bits/fpos.h
*** gcc-3.1.1/libstdc++-v3/include/bits/fpos.h Fri Jan 4 21:27:31 2002
--- gcc-3.2/libstdc++-v3/include/bits/fpos.h Thu Aug 1 21:29:17 2002
*************** namespace std
*** 105,111 ****
bool
operator!=(const fpos& __pos) const
{ return _M_off != __pos._M_off; }
!
streamoff
_M_position() const { return _M_off; }
--- 105,111 ----
bool
operator!=(const fpos& __pos) const
{ return _M_off != __pos._M_off; }
!
streamoff
_M_position() const { return _M_off; }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/fstream.tcc gcc-3.2/libstdc++-v3/include/bits/fstream.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/fstream.tcc Sat May 18 14:37:46 2002
--- gcc-3.2/libstdc++-v3/include/bits/fstream.tcc Thu Aug 1 21:29:17 2002
*************** namespace std
*** 112,118 ****
{
const int_type __eof = traits_type::eof();
bool __testput = _M_out_cur && _M_out_beg < _M_out_end;
! if (__testput && _M_really_overflow(__eof) == __eof)
return __ret;
// NB: Do this here so that re-opened filebufs will be cool...
--- 112,119 ----
{
const int_type __eof = traits_type::eof();
bool __testput = _M_out_cur && _M_out_beg < _M_out_end;
! if (__testput
! && traits_type::eq_int_type(_M_really_overflow(__eof), __eof))
return __ret;
// NB: Do this here so that re-opened filebufs will be cool...
*************** namespace std
*** 154,249 ****
}
_M_last_overflowed = false;
return __ret;
- }
-
- template
- typename basic_filebuf<_CharT, _Traits>::int_type
- basic_filebuf<_CharT, _Traits>::
- _M_underflow_common(bool __bump)
- {
- int_type __ret = traits_type::eof();
- bool __testin = _M_mode & ios_base::in;
- bool __testout = _M_mode & ios_base::out;
-
- if (__testin)
- {
- // Check for pback madness, and if so swich back to the
- // normal buffers and jet outta here before expensive
- // fileops happen...
- if (_M_pback_init)
- {
- _M_pback_destroy();
- if (_M_in_cur < _M_in_end)
- return traits_type::to_int_type(*_M_in_cur);
- }
-
- // Sync internal and external buffers.
- // NB: __testget -> __testput as _M_buf_unified here.
- bool __testget = _M_in_cur && _M_in_beg < _M_in_cur;
- bool __testinit = _M_is_indeterminate();
- if (__testget)
- {
- if (__testout)
- _M_really_overflow();
- else if (_M_in_cur != _M_filepos)
- _M_file.seekoff(_M_in_cur - _M_filepos,
- ios_base::cur, ios_base::in);
- }
-
- if (__testinit || __testget)
- {
- const locale __loc = this->getloc();
- const __codecvt_type& __cvt = use_facet<__codecvt_type>(__loc);
-
- streamsize __elen = 0;
- streamsize __ilen = 0;
- if (__cvt.always_noconv())
- {
- __elen = _M_file.xsgetn(reinterpret_cast(_M_in_beg),
- _M_buf_size);
- __ilen = __elen;
- }
- else
- {
- char* __buf = static_cast(__builtin_alloca(_M_buf_size));
- __elen = _M_file.xsgetn(__buf, _M_buf_size);
-
- const char* __eend;
- char_type* __iend;
- __res_type __r = __cvt.in(_M_state_cur, __buf,
- __buf + __elen, __eend, _M_in_beg,
- _M_in_beg + _M_buf_size, __iend);
- if (__r == codecvt_base::ok)
- __ilen = __iend - _M_in_beg;
- else
- {
- // Unwind.
- __ilen = 0;
- _M_file.seekoff(-__elen, ios_base::cur, ios_base::in);
- }
- }
-
- if (0 < __ilen)
- {
- _M_set_determinate(__ilen);
- if (__testout)
- _M_out_cur = _M_in_cur;
- __ret = traits_type::to_int_type(*_M_in_cur);
- if (__bump)
- _M_in_cur_move(1);
- else if (_M_buf_size == 1)
- {
- // If we are synced with stdio, we have to unget the
- // character we just read so that the file pointer
- // doesn't move.
- _M_file.sys_ungetc(*_M_in_cur);
- _M_set_indeterminate();
- }
- }
- }
- }
- _M_last_overflowed = false;
- return __ret;
}
template
--- 155,160 ----
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/istream.tcc gcc-3.2/libstdc++-v3/include/bits/istream.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/istream.tcc Mon Jun 10 21:15:05 2002
--- gcc-3.2/libstdc++-v3/include/bits/istream.tcc Thu Aug 1 21:29:17 2002
*************** namespace std
*** 54,66 ****
__int_type __c = __sb->sgetc();
if (__in._M_check_facet(__in._M_fctype))
! while (__c != __eof
! && __in._M_fctype->is(ctype_base::space, __c))
__c = __sb->snextc();
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
//195. Should basic_istream::sentry's constructor ever set eofbit?
! if (__c == __eof)
__in.setstate(ios_base::eofbit);
#endif
}
--- 54,67 ----
__int_type __c = __sb->sgetc();
if (__in._M_check_facet(__in._M_fctype))
! while (!traits_type::eq_int_type(__c, __eof)
! && __in._M_fctype->is(ctype_base::space,
! traits_type::to_char_type(__c)))
__c = __sb->snextc();
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
//195. Should basic_istream::sentry's constructor ever set eofbit?
! if (traits_type::eq_int_type(__c, __eof))
__in.setstate(ios_base::eofbit);
#endif
}
*************** namespace std
*** 521,527 ****
{
__c = this->rdbuf()->sbumpc();
// 27.6.1.1 paragraph 3
! if (__c != __eof)
_M_gcount = 1;
else
this->setstate(ios_base::eofbit | ios_base::failbit);
--- 522,528 ----
{
__c = this->rdbuf()->sbumpc();
// 27.6.1.1 paragraph 3
! if (!traits_type::eq_int_type(__c, __eof))
_M_gcount = 1;
else
this->setstate(ios_base::eofbit | ios_base::failbit);
*************** namespace std
*** 552,558 ****
const int_type __eof = traits_type::eof();
int_type __bufval = this->rdbuf()->sbumpc();
// 27.6.1.1 paragraph 3
! if (__bufval != __eof)
{
_M_gcount = 1;
__c = traits_type::to_char_type(__bufval);
--- 553,559 ----
const int_type __eof = traits_type::eof();
int_type __bufval = this->rdbuf()->sbumpc();
// 27.6.1.1 paragraph 3
! if (!traits_type::eq_int_type(__bufval, __eof))
{
_M_gcount = 1;
__c = traits_type::to_char_type(__bufval);
*************** namespace std
*** 588,600 ****
__streambuf_type* __sb = this->rdbuf();
int_type __c = __sb->sgetc();
! while (_M_gcount + 1 < __n && __c != __eof && __c != __idelim)
{
*__s++ = traits_type::to_char_type(__c);
__c = __sb->snextc();
++_M_gcount;
}
! if (__c == __eof)
this->setstate(ios_base::eofbit);
}
catch(exception& __fail)
--- 589,603 ----
__streambuf_type* __sb = this->rdbuf();
int_type __c = __sb->sgetc();
! while (_M_gcount + 1 < __n
! && !traits_type::eq_int_type(__c, __eof)
! && !traits_type::eq_int_type(__c, __idelim))
{
*__s++ = traits_type::to_char_type(__c);
__c = __sb->snextc();
++_M_gcount;
}
! if (traits_type::eq_int_type(__c, __eof))
this->setstate(ios_base::eofbit);
}
catch(exception& __fail)
*************** namespace std
*** 627,640 ****
const int_type __eof = traits_type::eof();
__streambuf_type* __this_sb = this->rdbuf();
int_type __c = __this_sb->sgetc();
! while (__c != __eof && __c != __idelim
! && (__sb.sputc(traits_type::to_char_type(__c)) != __eof))
{
++_M_gcount;
__c = __this_sb->snextc();
}
! if (__c == __eof)
this->setstate(ios_base::eofbit);
}
catch(exception& __fail)
--- 630,646 ----
const int_type __eof = traits_type::eof();
__streambuf_type* __this_sb = this->rdbuf();
int_type __c = __this_sb->sgetc();
+ char_type __c2 = traits_type::to_char_type(__c);
! while (!traits_type::eq_int_type(__c, __eof)
! && !traits_type::eq_int_type(__c, __idelim)
! && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
{
++_M_gcount;
__c = __this_sb->snextc();
+ __c2 = traits_type::to_char_type(__c);
}
! if (traits_type::eq_int_type(__c, __eof))
this->setstate(ios_base::eofbit);
}
catch(exception& __fail)
*************** namespace std
*** 667,683 ****
__streambuf_type* __sb = this->rdbuf();
int_type __c = __sb->sgetc();
! while (_M_gcount + 1 < __n && __c != __eof && __c != __idelim)
{
*__s++ = traits_type::to_char_type(__c);
__c = __sb->snextc();
++_M_gcount;
}
! if (__c == __eof)
this->setstate(ios_base::eofbit);
else
{
! if (__c == __idelim)
{
__sb->sbumpc();
++_M_gcount;
--- 673,691 ----
__streambuf_type* __sb = this->rdbuf();
int_type __c = __sb->sgetc();
! while (_M_gcount + 1 < __n
! && !traits_type::eq_int_type(__c, __eof)
! && !traits_type::eq_int_type(__c, __idelim))
{
*__s++ = traits_type::to_char_type(__c);
__c = __sb->snextc();
++_M_gcount;
}
! if (traits_type::eq_int_type(__c, __eof))
this->setstate(ios_base::eofbit);
else
{
! if (traits_type::eq_int_type(__c, __idelim))
{
__sb->sbumpc();
++_M_gcount;
*************** namespace std
*** 708,714 ****
{
_M_gcount = 0;
sentry __cerb(*this, true);
! if (__cerb)
{
try
{
--- 716,722 ----
{
_M_gcount = 0;
sentry __cerb(*this, true);
! if (__cerb && __n > 0)
{
try
{
*************** namespace std
*** 717,730 ****
int_type __c = __sb->sgetc();
__n = min(__n, numeric_limits::max());
! while (_M_gcount < __n && __c !=__eof && __c != __delim)
{
__c = __sb->snextc();
++_M_gcount;
}
! if (__c == __eof)
this->setstate(ios_base::eofbit);
! else if (__c == __delim)
{
__sb->sbumpc();
++_M_gcount;
--- 725,740 ----
int_type __c = __sb->sgetc();
__n = min(__n, numeric_limits::max());
! while (_M_gcount < __n
! && !traits_type::eq_int_type(__c, __eof)
! && !traits_type::eq_int_type(__c, __delim))
{
__c = __sb->snextc();
++_M_gcount;
}
! if (traits_type::eq_int_type(__c, __eof))
this->setstate(ios_base::eofbit);
! else if (traits_type::eq_int_type(__c, __delim))
{
__sb->sbumpc();
++_M_gcount;
*************** namespace std
*** 806,814 ****
{
try
{
- const int_type __eof = traits_type::eof();
streamsize __num = this->rdbuf()->in_avail();
! if (__num != static_cast(__eof))
{
__num = min(__num, __n);
if (__num)
--- 816,823 ----
{
try
{
streamsize __num = this->rdbuf()->in_avail();
! if (__num > 0)
{
__num = min(__num, __n);
if (__num)
*************** namespace std
*** 843,849 ****
{
const int_type __eof = traits_type::eof();
__streambuf_type* __sb = this->rdbuf();
! if (!__sb || __sb->sputbackc(__c) == __eof)
this->setstate(ios_base::badbit);
}
catch(exception& __fail)
--- 852,859 ----
{
const int_type __eof = traits_type::eof();
__streambuf_type* __sb = this->rdbuf();
! if (!__sb
! || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
this->setstate(ios_base::badbit);
}
catch(exception& __fail)
*************** namespace std
*** 873,879 ****
{
const int_type __eof = traits_type::eof();
__streambuf_type* __sb = this->rdbuf();
! if (!__sb || __eof == __sb->sungetc())
this->setstate(ios_base::badbit);
}
catch(exception& __fail)
--- 883,890 ----
{
const int_type __eof = traits_type::eof();
__streambuf_type* __sb = this->rdbuf();
! if (!__sb
! || traits_type::eq_int_type(__sb->sungetc(), __eof))
this->setstate(ios_base::badbit);
}
catch(exception& __fail)
*************** namespace std
*** 895,901 ****
basic_istream<_CharT, _Traits>::
sync(void)
{
! int __ret = traits_type::eof();
_M_gcount = 0;
sentry __cerb(*this, true);
if (__cerb)
--- 906,912 ----
basic_istream<_CharT, _Traits>::
sync(void)
{
! int __ret = -1;
_M_gcount = 0;
sentry __cerb(*this, true);
if (__cerb)
*************** namespace std
*** 903,912 ****
try
{
__streambuf_type* __sb = this->rdbuf();
! if (!__sb || __ret == __sb->pubsync())
! this->setstate(ios_base::badbit);
! else
! __ret = 0;
}
catch(exception& __fail)
{
--- 914,926 ----
try
{
__streambuf_type* __sb = this->rdbuf();
! if (__sb)
! {
! if (__sb->pubsync() == -1)
! this->setstate(ios_base::badbit);
! else
! __ret = 0;
! }
}
catch(exception& __fail)
{
*************** namespace std
*** 1186,1201 ****
__streambuf_type* __sb = __in.rdbuf();
__int_type __c = __sb->sbumpc();
const __int_type __eof = _Traits::eof();
! __testdelim = __c == __idelim;
! while (__extracted <= __n && __c != __eof && !__testdelim)
{
__str += _Traits::to_char_type(__c);
++__extracted;
__c = __sb->sbumpc();
! __testdelim = __c == __idelim;
}
! if (__c == __eof)
__in.setstate(ios_base::eofbit);
}
if (!__extracted && !__testdelim)
--- 1200,1217 ----
__streambuf_type* __sb = __in.rdbuf();
__int_type __c = __sb->sbumpc();
const __int_type __eof = _Traits::eof();
! __testdelim = _Traits::eq_int_type(__c, __idelim);
! while (__extracted <= __n
! && !_Traits::eq_int_type(__c, __eof)
! && !__testdelim)
{
__str += _Traits::to_char_type(__c);
++__extracted;
__c = __sb->sbumpc();
! __testdelim = _Traits::eq_int_type(__c, __idelim);
}
! if (_Traits::eq_int_type(__c, __eof))
__in.setstate(ios_base::eofbit);
}
if (!__extracted && !__testdelim)
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/locale_facets.h gcc-3.2/libstdc++-v3/include/bits/locale_facets.h
*** gcc-3.1.1/libstdc++-v3/include/bits/locale_facets.h Fri Apr 19 07:59:10 2002
--- gcc-3.2/libstdc++-v3/include/bits/locale_facets.h Thu Aug 1 21:29:17 2002
*************** namespace std
*** 55,60 ****
--- 55,63 ----
# define _GLIBCPP_NUM_FACETS 14
#endif
+ template
+ struct __pad;
+
// 22.2.1.1 Template class ctype
// Include host and configuration specific ctype enums for ctype_base.
#include
*************** namespace std
*** 652,657 ****
--- 655,661 ----
virtual iter_type
do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
+
virtual iter_type
do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const;
*************** namespace std
*** 697,702 ****
--- 701,723 ----
template
locale::id num_get<_CharT, _InIter>::id;
+ #if 0
+ // Partial specialization for istreambuf_iterator, so can use traits_type.
+ template
+ class num_get<_CharT, istreambuf_iterator<_CharT> >;
+
+ iter_type
+ _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
+ string& __xtrc) const;
+
+ iter_type
+ _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
+ string& __xtrc, int& __base) const;
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
+ #endif
+
template
class num_put : public locale::facet, public __num_base
{
*************** namespace std
*** 1357,1364 ****
{ _M_initialize_moneypunct(); }
explicit
! moneypunct(__c_locale __cloc, size_t __refs = 0) : locale::facet(__refs)
! { _M_initialize_moneypunct(__cloc); }
char_type
decimal_point() const
--- 1378,1386 ----
{ _M_initialize_moneypunct(); }
explicit
! moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0)
! : locale::facet(__refs)
! { _M_initialize_moneypunct(__cloc, __s); }
char_type
decimal_point() const
*************** namespace std
*** 1438,1444 ****
// For use at construction time only.
void
! _M_initialize_moneypunct(__c_locale __cloc = _S_c_locale);
};
template
--- 1460,1467 ----
// For use at construction time only.
void
! _M_initialize_moneypunct(__c_locale __cloc = _S_c_locale,
! const char* __name = NULL);
};
template
*************** namespace std
*** 1455,1465 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc);
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc);
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
--- 1478,1488 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale, const char*);
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale, const char*);
#ifdef _GLIBCPP_USE_WCHAR_T
template<>
*************** namespace std
*** 1470,1480 ****
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc);
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale __cloc);
#endif
template
--- 1493,1505 ----
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale,
! const char*);
template<>
void
! moneypunct::_M_initialize_moneypunct(__c_locale,
! const char*);
#endif
template
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/locale_facets.tcc gcc-3.2/libstdc++-v3/include/bits/locale_facets.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/locale_facets.tcc Sat May 18 22:00:15 2002
--- gcc-3.2/libstdc++-v3/include/bits/locale_facets.tcc Thu Aug 1 21:29:17 2002
*************** namespace std
*** 94,99 ****
--- 94,100 ----
_M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
ios_base::iostate& __err, string& __xtrc) const
{
+ typedef char_traits<_CharT> __traits_type;
const locale __loc = __io.getloc();
const ctype<_CharT>& __ctype = use_facet >(__loc);
const numpunct<_CharT>& __np = use_facet >(__loc);
*************** namespace std
*** 103,109 ****
const char_type __minus = __ctype.widen('-');
int __pos = 0;
char_type __c = *__beg;
! if ((__c == __plus || __c == __minus) && __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
++__pos;
--- 104,111 ----
const char_type __minus = __ctype.widen('-');
int __pos = 0;
char_type __c = *__beg;
! if ((__traits_type::eq(__c, __plus) || __traits_type::eq(__c, __minus))
! && __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
++__pos;
*************** namespace std
*** 113,119 ****
// Next, strip leading zeros.
const char_type __zero = __ctype.widen(_S_atoms[_M_zero]);
bool __found_zero = false;
! while (__c == __zero && __beg != __end)
{
__c = *(++__beg);
__found_zero = true;
--- 115,121 ----
// Next, strip leading zeros.
const char_type __zero = __ctype.widen(_S_atoms[_M_zero]);
bool __found_zero = false;
! while (__traits_type::eq(__c, __zero) && __beg != __end)
{
__c = *(++__beg);
__found_zero = true;
*************** namespace std
*** 141,151 ****
while (__beg != __end)
{
// Only look in digits.
- typedef char_traits<_CharT> __traits_type;
const char_type* __p = __traits_type::find(__watoms, 10, __c);
// NB: strchr returns true for __c == 0x0
! if (__p && __c)
{
// Try first for acceptable digit; record it if found.
++__pos;
--- 143,152 ----
while (__beg != __end)
{
// Only look in digits.
const char_type* __p = __traits_type::find(__watoms, 10, __c);
// NB: strchr returns true for __c == 0x0
! if (__p && !__traits_type::eq(__c, char_type()))
{
// Try first for acceptable digit; record it if found.
++__pos;
*************** namespace std
*** 153,159 ****
++__sep_pos;
__c = *(++__beg);
}
! else if (__c == __sep && __check_grouping && !__found_dec)
{
// NB: Thousands separator at the beginning of a string
// is a no-no, as is two consecutive thousands separators.
--- 154,161 ----
++__sep_pos;
__c = *(++__beg);
}
! else if (__traits_type::eq(__c, __sep)
! && __check_grouping && !__found_dec)
{
// NB: Thousands separator at the beginning of a string
// is a no-no, as is two consecutive thousands separators.
*************** namespace std
*** 169,175 ****
break;
}
}
! else if (__c == __dec && !__found_dec)
{
// According to the standard, if no grouping chars are seen,
// no grouping check is applied. Therefore __found_grouping
--- 171,177 ----
break;
}
}
! else if (__traits_type::eq(__c, __dec) && !__found_dec)
{
// According to the standard, if no grouping chars are seen,
// no grouping check is applied. Therefore __found_grouping
*************** namespace std
*** 181,187 ****
__c = *(++__beg);
__found_dec = true;
}
! else if ((__c == __watoms[_M_e] || __c == __watoms[_M_E])
&& !__found_sci && __pos)
{
// Scientific notation.
--- 183,190 ----
__c = *(++__beg);
__found_dec = true;
}
! else if ((__traits_type::eq(__c, __watoms[_M_e])
! || __traits_type::eq(__c, __watoms[_M_E]))
&& !__found_sci && __pos)
{
// Scientific notation.
*************** namespace std
*** 190,196 ****
__c = *(++__beg);
// Remove optional plus or minus sign, if they exist.
! if (__c == __plus || __c == __minus)
{
++__pos;
__xtrc += __ctype.narrow(__c, char());
--- 193,200 ----
__c = *(++__beg);
// Remove optional plus or minus sign, if they exist.
! if (__traits_type::eq(__c, __plus)
! || __traits_type::eq(__c, __minus))
{
++__pos;
__xtrc += __ctype.narrow(__c, char());
*************** namespace std
*** 228,233 ****
--- 232,238 ----
_M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
ios_base::iostate& __err, string& __xtrc, int& __base) const
{
+ typedef char_traits<_CharT> __traits_type;
const locale __loc = __io.getloc();
const ctype<_CharT>& __ctype = use_facet >(__loc);
const numpunct<_CharT>& __np = use_facet >(__loc);
*************** namespace std
*** 241,250 ****
else
__base = 10;
! // First check for sign.
int __pos = 0;
char_type __c = *__beg;
! if ((__c == __ctype.widen('+') || __c == __ctype.widen('-'))
&& __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
--- 246,258 ----
else
__base = 10;
! // First check for sign.
int __pos = 0;
char_type __c = *__beg;
! const char_type __plus = __ctype.widen('+');
! const char_type __minus = __ctype.widen('-');
!
! if ((__traits_type::eq(__c, __plus) || __traits_type::eq(__c, __minus))
&& __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
*************** namespace std
*** 259,265 ****
if (__base == 10)
{
bool __found_zero = false;
! while (__c == __zero && __beg != __end)
{
__c = *(++__beg);
__found_zero = true;
--- 267,273 ----
if (__base == 10)
{
bool __found_zero = false;
! while (__traits_type::eq(__c, __zero) && __beg != __end)
{
__c = *(++__beg);
__found_zero = true;
*************** namespace std
*** 270,276 ****
++__pos;
if (__basefield == 0)
{
! if ((__c == __x || __c == __X) && __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
++__pos;
--- 278,286 ----
++__pos;
if (__basefield == 0)
{
! if ((__traits_type::eq(__c, __x)
! || __traits_type::eq(__c, __X))
! && __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
++__pos;
*************** namespace std
*** 284,295 ****
}
else if (__base == 16)
{
! if (__c == __zero && __beg != __end)
{
__xtrc += _S_atoms[_M_zero];
++__pos;
__c = *(++__beg);
! if ((__c == __x || __c == __X) && __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
++__pos;
--- 294,306 ----
}
else if (__base == 16)
{
! if (__traits_type::eq(__c, __zero) && __beg != __end)
{
__xtrc += _S_atoms[_M_zero];
++__pos;
__c = *(++__beg);
! if ((__traits_type::eq(__c, __x) || __traits_type::eq(__c, __X))
! && __beg != __end)
{
__xtrc += __ctype.narrow(__c, char());
++__pos;
*************** namespace std
*** 316,326 ****
const char_type __sep = __np.thousands_sep();
while (__beg != __end)
{
- typedef char_traits<_CharT> __traits_type;
const char_type* __p = __traits_type::find(__watoms, __len, __c);
// NB: strchr returns true for __c == 0x0
! if (__p && __c)
{
// Try first for acceptable digit; record it if found.
__xtrc += _S_atoms[__p - __watoms];
--- 327,336 ----
const char_type __sep = __np.thousands_sep();
while (__beg != __end)
{
const char_type* __p = __traits_type::find(__watoms, __len, __c);
// NB: strchr returns true for __c == 0x0
! if (__p && !__traits_type::eq(__c, char_type()))
{
// Try first for acceptable digit; record it if found.
__xtrc += _S_atoms[__p - __watoms];
*************** namespace std
*** 328,334 ****
++__sep_pos;
__c = *(++__beg);
}
! else if (__c == __sep && __check_grouping)
{
// NB: Thousands separator at the beginning of a string
// is a no-no, as is two consecutive thousands separators.
--- 338,344 ----
++__sep_pos;
__c = *(++__beg);
}
! else if (__traits_type::eq(__c, __sep) && __check_grouping)
{
// NB: Thousands separator at the beginning of a string
// is a no-no, as is two consecutive thousands separators.
*************** namespace std
*** 394,400 ****
// Parse bool values as alphanumeric
else
{
! typedef basic_string<_CharT> __string_type;
locale __loc = __io.getloc();
const numpunct<_CharT>& __np = use_facet >(__loc);
const __string_type __true = __np.truename();
--- 404,412 ----
// Parse bool values as alphanumeric
else
{
! typedef char_traits<_CharT> __traits_type;
! typedef basic_string<_CharT> __string_type;
!
locale __loc = __io.getloc();
const numpunct<_CharT>& __np = use_facet >(__loc);
const __string_type __true = __np.truename();
*************** namespace std
*** 407,414 ****
for (size_t __n = 0; __beg != __end; ++__n)
{
char_type __c = *__beg++;
! bool __testf = __n <= __falsen ? __c == __falses[__n] : false;
! bool __testt = __n <= __truen ? __c == __trues[__n] : false;
if (!(__testf || __testt))
{
__err |= ios_base::failbit;
--- 419,428 ----
for (size_t __n = 0; __beg != __end; ++__n)
{
char_type __c = *__beg++;
! bool __testf = __n <= __falsen
! ? __traits_type::eq(__c, __falses[__n]) : false;
! bool __testt = __n <= __truen
! ? __traits_type::eq(__c, __trues[__n]) : false;
if (!(__testf || __testt))
{
__err |= ios_base::failbit;
*************** namespace std
*** 708,713 ****
--- 722,728 ----
_M_widen_float(_OutIter __s, ios_base& __io, _CharT __fill, char* __cs,
int __len) const
{
+ typedef char_traits<_CharT> __traits_type;
// [22.2.2.2.2] Stage 2, convert to char_type, using correct
// numpunct.decimal_point() values for '.' and adding grouping.
const locale __loc = __io.getloc();
*************** namespace std
*** 723,729 ****
// Replace decimal point.
const _CharT* __p;
const numpunct<_CharT>& __np = use_facet >(__loc);
! if (__p = char_traits<_CharT>::find(__ws, __len, __ctype.widen('.')))
__ws[__p - __ws] = __np.decimal_point();
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
--- 738,744 ----
// Replace decimal point.
const _CharT* __p;
const numpunct<_CharT>& __np = use_facet >(__loc);
! if (__p = __traits_type::find(__ws, __len, __ctype.widen('.')))
__ws[__p - __ws] = __np.decimal_point();
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
*************** namespace std
*** 744,750 ****
// Tack on decimal part.
if (__p)
{
! char_traits<_CharT>::copy(__p2, __p, __len - __declen);
__newlen += __len - __declen;
}
--- 759,765 ----
// Tack on decimal part.
if (__p)
{
! __traits_type::copy(__p2, __p, __len - __declen);
__newlen += __len - __declen;
}
*************** namespace std
*** 816,828 ****
_M_insert(_OutIter __s, ios_base& __io, _CharT __fill, const _CharT* __ws,
int __len) const
{
// [22.2.2.2.2] Stage 3.
streamsize __w = __io.width();
_CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
* __w));
if (__w > static_cast(__len))
{
! __pad(__io, __fill, __ws2, __ws, __w, __len, true);
__len = static_cast(__w);
// Switch strings.
__ws = __ws2;
--- 831,845 ----
_M_insert(_OutIter __s, ios_base& __io, _CharT __fill, const _CharT* __ws,
int __len) const
{
+ typedef char_traits<_CharT> __traits_type;
// [22.2.2.2.2] Stage 3.
streamsize __w = __io.width();
_CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
* __w));
if (__w > static_cast(__len))
{
! __pad<_CharT, __traits_type>::_S_pad(__io, __fill, __ws2, __ws,
! __w, __len, true);
__len = static_cast(__w);
// Switch strings.
__ws = __ws2;
*************** namespace std
*** 845,851 ****
if ((__flags & ios_base::boolalpha) == 0)
{
unsigned long __uv = __v;
! __s = _M_convert_int(__s, __io, __fill, 'u', char_type(), __uv);
}
else
{
--- 862,868 ----
if ((__flags & ios_base::boolalpha) == 0)
{
unsigned long __uv = __v;
! __s = _M_convert_int(__s, __io, __fill, 'u', char(), __uv);
}
else
{
*************** namespace std
*** 866,879 ****
_OutIter
num_put<_CharT, _OutIter>::
do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
! { return _M_convert_int(__s, __io, __fill, 'd', char_type(), __v); }
template
_OutIter
num_put<_CharT, _OutIter>::
do_put(iter_type __s, ios_base& __io, char_type __fill,
unsigned long __v) const
! { return _M_convert_int(__s, __io, __fill, 'u', char_type(), __v); }
#ifdef _GLIBCPP_USE_LONG_LONG
template
--- 883,896 ----
_OutIter
num_put<_CharT, _OutIter>::
do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
! { return _M_convert_int(__s, __io, __fill, 'd', char(), __v); }
template
_OutIter
num_put<_CharT, _OutIter>::
do_put(iter_type __s, ios_base& __io, char_type __fill,
unsigned long __v) const
! { return _M_convert_int(__s, __io, __fill, 'u', char(), __v); }
#ifdef _GLIBCPP_USE_LONG_LONG
template
*************** namespace std
*** 894,900 ****
_OutIter
num_put<_CharT, _OutIter>::
do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
! { return _M_convert_float(__s, __io, __fill, char_type(), __v); }
template
_OutIter
--- 911,917 ----
_OutIter
num_put<_CharT, _OutIter>::
do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
! { return _M_convert_float(__s, __io, __fill, char(), __v); }
template
_OutIter
*************** namespace std
*** 915,921 ****
__io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase));
try
{
! __s = _M_convert_int(__s, __io, __fill, 'u', char_type(),
reinterpret_cast(__v));
__io.flags(__flags);
}
--- 932,938 ----
__io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase));
try
{
! __s = _M_convert_int(__s, __io, __fill, 'u', char(),
reinterpret_cast(__v));
__io.flags(__flags);
}
*************** namespace std
*** 1591,1597 ****
const _CharT** __names, size_t __indexlen,
ios_base::iostate& __err) const
{
! typedef char_traits __traits_type;
int* __matches = static_cast(__builtin_alloca(sizeof(int) * __indexlen));
size_t __nmatches = 0;
size_t __pos = 0;
--- 1608,1614 ----
const _CharT** __names, size_t __indexlen,
ios_base::iostate& __err) const
{
! typedef char_traits<_CharT> __traits_type;
int* __matches = static_cast(__builtin_alloca(sizeof(int) * __indexlen));
size_t __nmatches = 0;
size_t __pos = 0;
*************** namespace std
*** 1686,1692 ****
do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
ios_base::iostate& __err, tm* __tm) const
{
! typedef char_traits __traits_type;
locale __loc = __io.getloc();
__timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
const char_type* __days[7];
--- 1703,1709 ----
do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
ios_base::iostate& __err, tm* __tm) const
{
! typedef char_traits<_CharT> __traits_type;
locale __loc = __io.getloc();
__timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
const char_type* __days[7];
*************** namespace std
*** 1729,1735 ****
do_get_monthname(iter_type __beg, iter_type __end,
ios_base& __io, ios_base::iostate& __err, tm* __tm) const
{
! typedef char_traits __traits_type;
locale __loc = __io.getloc();
__timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
const char_type* __months[12];
--- 1746,1752 ----
do_get_monthname(iter_type __beg, iter_type __end,
ios_base& __io, ios_base::iostate& __err, tm* __tm) const
{
! typedef char_traits<_CharT> __traits_type;
locale __loc = __io.getloc();
__timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
const char_type* __months[12];
*************** namespace std
*** 1996,2017 ****
// internal-adjusted objects are padded according to the rules below
// concerning 0[xX] and +-, otherwise, exactly as right-adjusted
// ones are.
template
! void
! __pad(ios_base& __io, _CharT __fill, _CharT* __news, const _CharT* __olds,
! const streamsize __newlen, const streamsize __oldlen,
! const bool __num)
{
! typedef _CharT char_type;
! typedef _Traits traits_type;
! typedef typename traits_type::int_type int_type;
!
! int_type __plen = static_cast(__newlen - __oldlen);
! char_type* __pads = static_cast(__builtin_alloca(sizeof(char_type) * __plen));
! traits_type::assign(__pads, __plen, __fill);
! char_type* __beg;
! char_type* __end;
size_t __mod = 0;
size_t __beglen; //either __plen or __oldlen
ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
--- 2013,2043 ----
// internal-adjusted objects are padded according to the rules below
// concerning 0[xX] and +-, otherwise, exactly as right-adjusted
// ones are.
+
+ // NB: Of the two parameters, _CharT can be deduced from the
+ // function arguments. The other (_Traits) has to be explicitly specified.
template
! struct __pad
{
! static void
! _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
! const _CharT* __olds, const streamsize __newlen,
! const streamsize __oldlen, const bool __num);
! };
! template
! void
! __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
! _CharT* __news, const _CharT* __olds,
! const streamsize __newlen,
! const streamsize __oldlen, const bool __num)
! {
! size_t __plen = static_cast(__newlen - __oldlen);
! _CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __plen));
! _Traits::assign(__pads, __plen, __fill);
!
! _CharT* __beg;
! _CharT* __end;
size_t __mod = 0;
size_t __beglen; //either __plen or __oldlen
ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
*************** namespace std
*** 2019,2025 ****
if (__adjust == ios_base::left)
{
// Padding last.
! __beg = const_cast(__olds);
__beglen = __oldlen;
__end = __pads;
}
--- 2045,2051 ----
if (__adjust == ios_base::left)
{
// Padding last.
! __beg = const_cast<_CharT*>(__olds);
__beglen = __oldlen;
__end = __pads;
}
*************** namespace std
*** 2030,2041 ****
// Who came up with these rules, anyway? Jeeze.
locale __loc = __io.getloc();
const ctype<_CharT>& __ctype = use_facet >(__loc);
! const char_type __minus = __ctype.widen('-');
! const char_type __plus = __ctype.widen('+');
! bool __testsign = __olds[0] == __minus || __olds[0] == __plus;
! bool __testhex = __ctype.widen('0') == __olds[0]
! && (__ctype.widen('x') == __olds[1]
! || __ctype.widen('X') == __olds[1]);
if (__testhex)
{
__news[0] = __olds[0];
--- 2056,2069 ----
// Who came up with these rules, anyway? Jeeze.
locale __loc = __io.getloc();
const ctype<_CharT>& __ctype = use_facet >(__loc);
! const _CharT __minus = __ctype.widen('-');
! const _CharT __plus = __ctype.widen('+');
! bool __testsign = _Traits::eq(__olds[0], __minus)
! || _Traits::eq(__olds[0], __plus);
!
! bool __testhex = _Traits::eq(__ctype.widen('0'), __olds[0])
! && (_Traits::eq(__ctype.widen('x'), __olds[1])
! || _Traits::eq(__ctype.widen('X'), __olds[1]));
if (__testhex)
{
__news[0] = __olds[0];
*************** namespace std
*** 2044,2066 ****
__news += 2;
__beg = __pads;
__beglen = __plen;
! __end = const_cast(__olds + __mod);
}
else if (__testsign)
{
! __news[0] = __olds[0] == __plus ? __plus : __minus;
++__mod;
++__news;
__beg = __pads;
__beglen = __plen;
! __end = const_cast(__olds + __mod);
}
else
{
// Padding first.
__beg = __pads;
__beglen = __plen;
! __end = const_cast(__olds);
}
}
else
--- 2072,2094 ----
__news += 2;
__beg = __pads;
__beglen = __plen;
! __end = const_cast<_CharT*>(__olds + __mod);
}
else if (__testsign)
{
! _Traits::eq((__news[0] = __olds[0]), __plus) ? __plus : __minus;
++__mod;
++__news;
__beg = __pads;
__beglen = __plen;
! __end = const_cast<_CharT*>(__olds + __mod);
}
else
{
// Padding first.
__beg = __pads;
__beglen = __plen;
! __end = const_cast<_CharT*>(__olds);
}
}
else
*************** namespace std
*** 2068,2090 ****
// Padding first.
__beg = __pads;
__beglen = __plen;
! __end = const_cast(__olds);
}
! traits_type::copy(__news, __beg, __beglen);
! traits_type::copy(__news + __beglen, __end, __newlen - __beglen - __mod);
! }
!
! // NB: Can't have default argument on non-member template, and
! // num_put doesn't have a _Traits template parameter, so this
! // forwarding template adds in the default template argument.
! template
! void
! __pad(ios_base& __io, _CharT __fill, _CharT* __news, const _CharT* __olds,
! const streamsize __newlen, const streamsize __oldlen,
! const bool __num)
! {
! return __pad<_CharT, char_traits<_CharT> >(__io, __fill, __news, __olds,
! __newlen, __oldlen, __num);
}
// Used by both numeric and monetary facets.
--- 2096,2106 ----
// Padding first.
__beg = __pads;
__beglen = __plen;
! __end = const_cast<_CharT*>(__olds);
}
! _Traits::copy(__news, __beg, __beglen);
! _Traits::copy(__news + __beglen, __end,
! __newlen - __beglen - __mod);
}
// Used by both numeric and monetary facets.
*************** namespace std
*** 2401,2405 ****
} // namespace std
#endif
-
-
--- 2417,2419 ----
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/ostream.tcc gcc-3.2/libstdc++-v3/include/bits/ostream.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/ostream.tcc Mon Jun 10 21:15:05 2002
--- gcc-3.2/libstdc++-v3/include/bits/ostream.tcc Thu Aug 1 21:29:18 2002
*************** namespace std
*** 474,480 ****
streamsize __len = 1;
if (__w > __len)
{
! __pad(__out, __out.fill(), __pads, &__c, __w, __len, false);
__len = __w;
}
__out.write(__pads, __len);
--- 474,481 ----
streamsize __len = 1;
if (__w > __len)
{
! __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads,
! &__c, __w, __len, false);
__len = __w;
}
__out.write(__pads, __len);
*************** namespace std
*** 509,515 ****
streamsize __len = 1;
if (__w > __len)
{
! __pad(__out, __out.fill(), __pads, &__c, __w, __len, false);
__len = __w;
}
__out.write(__pads, __len);
--- 510,517 ----
streamsize __len = 1;
if (__w > __len)
{
! __pad::_S_pad(__out, __out.fill(), __pads,
! &__c, __w, __len, false);
__len = __w;
}
__out.write(__pads, __len);
*************** namespace std
*** 542,548 ****
streamsize __len = static_cast(_Traits::length(__s));
if (__w > __len)
{
! __pad(__out, __out.fill(), __pads, __s, __w, __len, false);
__s = __pads;
__len = __w;
}
--- 544,551 ----
streamsize __len = static_cast(_Traits::length(__s));
if (__w > __len)
{
! __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads,
! __s, __w, __len, false);
__s = __pads;
__len = __w;
}
*************** namespace std
*** 590,596 ****
if (__w > __len)
{
! __pad(__out, __out.fill(), __pads, __ws, __w, __len, false);
__str = __pads;
__len = __w;
}
--- 593,600 ----
if (__w > __len)
{
! __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads,
! __ws, __w, __len, false);
__str = __pads;
__len = __w;
}
*************** namespace std
*** 628,634 ****
if (__w > __len)
{
! __pad(__out, __out.fill(), __pads, __s, __w, __len, false);
__s = __pads;
__len = __w;
}
--- 632,639 ----
if (__w > __len)
{
! __pad::_S_pad(__out, __out.fill(), __pads,
! __s, __w, __len, false);
__s = __pads;
__len = __w;
}
*************** namespace std
*** 668,674 ****
#endif
if (__w > __len)
{
! __pad(__out, __out.fill(), __pads, __s, __w, __len, false);
__s = __pads;
__len = __w;
}
--- 673,680 ----
#endif
if (__w > __len)
{
! __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __pads, __s,
! __w, __len, false);
__s = __pads;
__len = __w;
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/sstream.tcc gcc-3.2/libstdc++-v3/include/bits/sstream.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/sstream.tcc Tue Apr 9 08:48:49 2002
--- gcc-3.2/libstdc++-v3/include/bits/sstream.tcc Thu Aug 1 21:29:18 2002
*************** namespace std
*** 95,107 ****
__len *= 2;
if (__testwrite)
! __ret = this->sputc(__c);
else if (__len <= _M_string.max_size())
{
// Force-allocate, re-sync.
_M_string = this->str();
_M_string.reserve(__len);
! _M_buf_size = static_cast(__len);
_M_really_sync(_M_in_cur - _M_in_beg,
_M_out_cur - _M_out_beg);
*_M_out_cur = traits_type::to_char_type(__c);
--- 95,107 ----
__len *= 2;
if (__testwrite)
! __ret = this->sputc(traits_type::to_char_type(__c));
else if (__len <= _M_string.max_size())
{
// Force-allocate, re-sync.
_M_string = this->str();
_M_string.reserve(__len);
! _M_buf_size = __len;
_M_really_sync(_M_in_cur - _M_in_beg,
_M_out_cur - _M_out_beg);
*_M_out_cur = traits_type::to_char_type(__c);
*************** namespace std
*** 184,190 ****
if (_M_buf_size)
{
! off_type __pos = __sp._M_position();
char_type* __beg = NULL;
char_type* __end = NULL;
bool __testin = (ios_base::in & _M_mode & __mode) != 0;
--- 184,190 ----
if (_M_buf_size)
{
! off_type __pos = __sp; // Use streamoff operator to do conversion.
char_type* __beg = NULL;
char_type* __end = NULL;
bool __testin = (ios_base::in & _M_mode & __mode) != 0;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/stl_deque.h gcc-3.2/libstdc++-v3/include/bits/stl_deque.h
*** gcc-3.1.1/libstdc++-v3/include/bits/stl_deque.h Thu Apr 18 02:58:15 2002
--- gcc-3.2/libstdc++-v3/include/bits/stl_deque.h Fri Jul 26 23:23:44 2002
*************** struct _Deque_iterator
*** 130,140 ****
reference operator*() const { return *_M_cur; }
pointer operator->() const { return _M_cur; }
- difference_type operator-(const _Self& __x) const {
- return difference_type(_S_buffer_size()) * (_M_node - __x._M_node - 1) +
- (_M_cur - _M_first) + (__x._M_last - __x._M_cur);
- }
-
_Self& operator++() {
++_M_cur;
if (_M_cur == _M_last) {
--- 130,135 ----
*************** struct _Deque_iterator
*** 194,209 ****
reference operator[](difference_type __n) const { return *(*this + __n); }
- bool operator==(const _Self& __x) const { return _M_cur == __x._M_cur; }
- bool operator!=(const _Self& __x) const { return !(*this == __x); }
- bool operator<(const _Self& __x) const {
- return (_M_node == __x._M_node) ?
- (_M_cur < __x._M_cur) : (_M_node < __x._M_node);
- }
- bool operator>(const _Self& __x) const { return __x < *this; }
- bool operator<=(const _Self& __x) const { return !(__x < *this); }
- bool operator>=(const _Self& __x) const { return !(*this < __x); }
-
/** @if maint
* Prepares to traverse new_node. Sets everything except _M_cur, which
* should therefore be set by the caller immediately afterwards, based on
--- 189,194 ----
*************** struct _Deque_iterator
*** 217,222 ****
--- 202,324 ----
}
};
+ // Note: we also provide overloads whose operands are of the same type in
+ // order to avoid ambiguos overload resolution when std::rel_ops operators
+ // are in scope (for additional details, see libstdc++/3628)
+ template
+ inline bool
+ operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+ const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+ {
+ return __x._M_cur == __y._M_cur;
+ }
+
+ template
+ inline bool
+ operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return __x._M_cur == __y._M_cur;
+ }
+
+ template
+ inline bool
+ operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+ const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+ {
+ return !(__x == __y);
+ }
+
+ template
+ inline bool
+ operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return !(__x == __y);
+ }
+
+ template
+ inline bool
+ operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+ const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+ {
+ return (__x._M_node == __y._M_node) ?
+ (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node);
+ }
+
+ template
+ inline bool
+ operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return (__x._M_node == __y._M_node) ?
+ (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node);
+ }
+
+ template
+ inline bool
+ operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+ const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+ {
+ return __y < __x;
+ }
+
+ template
+ inline bool
+ operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return __y < __x;
+ }
+
+ template
+ inline bool
+ operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+ const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+ {
+ return !(__y < __x);
+ }
+
+ template
+ inline bool
+ operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return !(__y < __x);
+ }
+
+ template
+ inline bool
+ operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
+ const _Deque_iterator<_Tp, _Ref, _Ptr>& __y)
+ {
+ return !(__x < __y);
+ }
+
+ template
+ inline bool
+ operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return !(__x < __y);
+ }
+
+ // _GLIBCPP_RESOLVE_LIB_DEFECTS
+ // According to the resolution of DR179 not only the various comparison
+ // operators but also operator- must accept mixed iterator/const_iterator
+ // parameters.
+ template
+ inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type
+ operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
+ const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
+ {
+ return _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type
+ (_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size()) *
+ (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) +
+ (__y._M_last - __y._M_cur);
+ }
+
template
inline _Deque_iterator<_Tp, _Ref, _Ptr>
operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x)
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/stl_iterator.h gcc-3.2/libstdc++-v3/include/bits/stl_iterator.h
*** gcc-3.1.1/libstdc++-v3/include/bits/stl_iterator.h Tue Apr 16 02:53:20 2002
--- gcc-3.2/libstdc++-v3/include/bits/stl_iterator.h Fri Jul 26 23:23:44 2002
*************** namespace __gnu_cxx
*** 629,638 ****
operator-(const difference_type& __n) const
{ return __normal_iterator(_M_current - __n); }
- difference_type
- operator-(const __normal_iterator& __i) const
- { return _M_current - __i._M_current; }
-
const _Iterator&
base() const { return _M_current; }
};
--- 629,634 ----
*************** namespace __gnu_cxx
*** 719,724 ****
--- 715,730 ----
const __normal_iterator<_Iterator, _Container>& __rhs)
{ return __lhs.base() >= __rhs.base(); }
+ // _GLIBCPP_RESOLVE_LIB_DEFECTS
+ // According to the resolution of DR179 not only the various comparison
+ // operators but also operator- must accept mixed iterator/const_iterator
+ // parameters.
+ template
+ inline typename __normal_iterator<_IteratorL, _Container>::difference_type
+ operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() - __rhs.base(); }
+
template
inline __normal_iterator<_Iterator, _Container>
operator+(typename __normal_iterator<_Iterator, _Container>::difference_type __n,
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/streambuf.tcc gcc-3.2/libstdc++-v3/include/bits/streambuf.tcc
*** gcc-3.1.1/libstdc++-v3/include/bits/streambuf.tcc Sun Apr 21 04:18:41 2002
--- gcc-3.2/libstdc++-v3/include/bits/streambuf.tcc Fri Jul 26 23:23:44 2002
***************
*** 40,46 ****
namespace std
{
template
! const typename basic_streambuf<_CharT, _Traits>::int_type
basic_streambuf<_CharT, _Traits>::_S_pback_size;
template
--- 40,46 ----
namespace std
{
template
! const size_t
basic_streambuf<_CharT, _Traits>::_S_pback_size;
template
*************** namespace std
*** 138,144 ****
if (__ret < __n)
{
int_type __c = this->uflow();
! if (__c != traits_type::eof())
{
traits_type::assign(*__s++, traits_type::to_char_type(__c));
++__ret;
--- 138,144 ----
if (__ret < __n)
{
int_type __c = this->uflow();
! if (!traits_type::eq_int_type(__c, traits_type::eof()))
{
traits_type::assign(*__s++, traits_type::to_char_type(__c));
++__ret;
*************** namespace std
*** 177,183 ****
if (__ret < __n)
{
int_type __c = this->overflow(traits_type::to_int_type(*__s));
! if (__c != traits_type::eof())
{
++__ret;
++__s;
--- 177,183 ----
if (__ret < __n)
{
int_type __c = this->overflow(traits_type::to_int_type(*__s));
! if (!traits_type::eq_int_type(__c, traits_type::eof()))
{
++__ret;
++__s;
*************** namespace std
*** 214,220 ****
__sbin->_M_in_cur_move(__xtrct);
if (__xtrct == __bufsize)
{
! if (__sbin->sgetc() == _Traits::eof())
break;
__bufsize = __sbin->in_avail();
}
--- 214,220 ----
__sbin->_M_in_cur_move(__xtrct);
if (__xtrct == __bufsize)
{
! if (_Traits::eq_int_type(__sbin->sgetc(), _Traits::eof()))
break;
__bufsize = __sbin->in_avail();
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/bits/streambuf_iterator.h gcc-3.2/libstdc++-v3/include/bits/streambuf_iterator.h
*** gcc-3.1.1/libstdc++-v3/include/bits/streambuf_iterator.h Thu May 2 00:29:01 2002
--- gcc-3.2/libstdc++-v3/include/bits/streambuf_iterator.h Thu Aug 1 21:29:18 2002
*************** namespace std
*** 69,81 ****
public:
istreambuf_iterator() throw()
! : _M_sbuf(0), _M_c(-2) { }
istreambuf_iterator(istream_type& __s) throw()
! : _M_sbuf(__s.rdbuf()), _M_c(-2) { }
istreambuf_iterator(streambuf_type* __s) throw()
! : _M_sbuf(__s), _M_c(-2) { }
// NB: The result of operator*() on an end of stream is undefined.
char_type
--- 69,81 ----
public:
istreambuf_iterator() throw()
! : _M_sbuf(0), _M_c(traits_type::eof()) { }
istreambuf_iterator(istream_type& __s) throw()
! : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
istreambuf_iterator(streambuf_type* __s) throw()
! : _M_sbuf(__s), _M_c(traits_type::eof()) { }
// NB: The result of operator*() on an end of stream is undefined.
char_type
*************** namespace std
*** 85,105 ****
istreambuf_iterator&
operator++()
{
! if (_M_sbuf && _M_sbuf->sbumpc() == traits_type::eof())
_M_sbuf = 0;
else
! _M_c = -2;
return *this;
}
istreambuf_iterator
operator++(int)
{
istreambuf_iterator __old = *this;
! if (_M_sbuf && (__old._M_c = _M_sbuf->sbumpc()) == traits_type::eof())
_M_sbuf = 0;
else
! _M_c = -2;
return __old;
}
--- 85,109 ----
istreambuf_iterator&
operator++()
{
! const int_type __eof = traits_type::eof();
! if (_M_sbuf && traits_type::eq_int_type(_M_sbuf->sbumpc(), __eof))
_M_sbuf = 0;
else
! _M_c = __eof;
return *this;
}
istreambuf_iterator
operator++(int)
{
+ const int_type __eof = traits_type::eof();
istreambuf_iterator __old = *this;
! if (_M_sbuf
! && traits_type::eq_int_type((__old._M_c = _M_sbuf->sbumpc()),
! __eof))
_M_sbuf = 0;
else
! _M_c = __eof;
return __old;
}
*************** namespace std
*** 110,117 ****
equal(const istreambuf_iterator& __b) const
{
const int_type __eof = traits_type::eof();
! bool __thiseof = _M_get() == __eof;
! bool __beof = __b._M_get() == __eof;
return (__thiseof && __beof || (!__thiseof && !__beof));
}
#endif
--- 114,121 ----
equal(const istreambuf_iterator& __b) const
{
const int_type __eof = traits_type::eof();
! bool __thiseof = traits_type::eq_int_type(_M_get(), __eof);
! bool __beof = traits_type::eq_int_type(__b._M_get(), __eof);
return (__thiseof && __beof || (!__thiseof && !__beof));
}
#endif
*************** namespace std
*** 120,132 ****
int_type
_M_get() const
{
! int_type __ret = traits_type::eof();
if (_M_sbuf)
{
! if (_M_c != static_cast(-2))
__ret = _M_c;
else
! if ((__ret = _M_sbuf->sgetc()) == traits_type::eof())
_M_sbuf = 0;
}
return __ret;
--- 124,137 ----
int_type
_M_get() const
{
! const int_type __eof = traits_type::eof();
! int_type __ret = __eof;
if (_M_sbuf)
{
! if (!traits_type::eq_int_type(_M_c, __eof))
__ret = _M_c;
else
! if (traits_type::eq_int_type((__ret = _M_sbuf->sgetc()), __eof))
_M_sbuf = 0;
}
return __ret;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/std/std_fstream.h gcc-3.2/libstdc++-v3/include/std/std_fstream.h
*** gcc-3.1.1/libstdc++-v3/include/std/std_fstream.h Tue Apr 30 19:05:45 2002
--- gcc-3.2/libstdc++-v3/include/std/std_fstream.h Thu Aug 1 21:29:18 2002
*************** namespace std
*** 286,292 ****
--- 286,301 ----
}
};
+ // Explicit specializations.
+ template<>
+ basic_filebuf::int_type
+ basic_filebuf::_M_underflow_common(bool __bump);
+ #ifdef _GLIBCPP_USE_WCHAR_T
+ template<>
+ basic_filebuf::int_type
+ basic_filebuf::_M_underflow_common(bool __bump);
+ #endif
// 27.8.1.5 Template class basic_ifstream
/**
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/std/std_istream.h gcc-3.2/libstdc++-v3/include/std/std_istream.h
*** gcc-3.1.1/libstdc++-v3/include/std/std_istream.h Sat Feb 16 00:19:13 2002
--- gcc-3.2/libstdc++-v3/include/std/std_istream.h Fri Jul 26 23:23:44 2002
*************** namespace std
*** 261,266 ****
--- 261,276 ----
public basic_ostream<_CharT, _Traits>
{
public:
+ #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
+ // 271. basic_iostream missing typedefs
+ // Types (inherited):
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+ #endif
+
// Non-standard Types:
typedef basic_istream<_CharT, _Traits> __istream_type;
typedef basic_ostream<_CharT, _Traits> __ostream_type;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/include/std/std_streambuf.h gcc-3.2/libstdc++-v3/include/std/std_streambuf.h
*** gcc-3.1.1/libstdc++-v3/include/std/std_streambuf.h Mon Apr 22 20:28:34 2002
--- gcc-3.2/libstdc++-v3/include/std/std_streambuf.h Thu Aug 1 21:29:18 2002
*************** namespace std
*** 71,76 ****
--- 71,77 ----
// Non-standard Types:
typedef ctype __ctype_type;
typedef basic_streambuf __streambuf_type;
+ typedef typename traits_type::state_type __state_type;
friend class basic_ios;
friend class basic_istream;
*************** namespace std
*** 91,100 ****
char_type* _M_buf;
// Actual size of allocated internal buffer, in bytes.
! int_type _M_buf_size;
// Optimal or preferred size of internal buffer, in bytes.
! int_type _M_buf_size_opt;
// True iff _M_in_* and _M_out_* buffers should always point to
// the same place. True for fstreams, false for sstreams.
--- 92,101 ----
char_type* _M_buf;
// Actual size of allocated internal buffer, in bytes.
! size_t _M_buf_size;
// Optimal or preferred size of internal buffer, in bytes.
! size_t _M_buf_size_opt;
// True iff _M_in_* and _M_out_* buffers should always point to
// the same place. True for fstreams, false for sstreams.
*************** namespace std
*** 126,137 ****
// requirements. The only basic_streambuf member function that
// needs access to these data members is in_avail...
// NB: pbacks of over one character are not currently supported.
! static const int_type _S_pback_size = 1;
char_type _M_pback[_S_pback_size];
char_type* _M_pback_cur_save;
char_type* _M_pback_end_save;
bool _M_pback_init;
// Initializes pback buffers, and moves normal buffers to safety.
// Assumptions:
// _M_in_cur has already been moved back
--- 127,141 ----
// requirements. The only basic_streambuf member function that
// needs access to these data members is in_avail...
// NB: pbacks of over one character are not currently supported.
! static const size_t _S_pback_size = 1;
char_type _M_pback[_S_pback_size];
char_type* _M_pback_cur_save;
char_type* _M_pback_end_save;
bool _M_pback_init;
+ // Yet unused.
+ fpos<__state_type> _M_pos;
+
// Initializes pback buffers, and moves normal buffers to safety.
// Assumptions:
// _M_in_cur has already been moved back
*************** namespace std
*** 140,147 ****
{
if (!_M_pback_init)
{
! int_type __dist = _M_in_end - _M_in_cur;
! int_type __len = min(_S_pback_size, __dist);
traits_type::copy(_M_pback, _M_in_cur, __len);
_M_pback_cur_save = _M_in_cur;
_M_pback_end_save = _M_in_end;
--- 144,151 ----
{
if (!_M_pback_init)
{
! size_t __dist = _M_in_end - _M_in_cur;
! size_t __len = min(_S_pback_size, __dist);
traits_type::copy(_M_pback, _M_in_cur, __len);
_M_pback_cur_save = _M_in_cur;
_M_pback_end_save = _M_in_end;
*************** namespace std
*** 159,170 ****
if (_M_pback_init)
{
// Length _M_in_cur moved in the pback buffer.
! int_type __off_cur = _M_in_cur - _M_pback;
// For in | out buffers, the end can be pushed back...
! int_type __off_end = 0;
! int_type __pback_len = _M_in_end - _M_pback;
! int_type __save_len = _M_pback_end_save - _M_buf;
if (__pback_len > __save_len)
__off_end = __pback_len - __save_len;
--- 163,174 ----
if (_M_pback_init)
{
// Length _M_in_cur moved in the pback buffer.
! size_t __off_cur = _M_in_cur - _M_pback;
// For in | out buffers, the end can be pushed back...
! size_t __off_end = 0;
! size_t __pback_len = _M_in_end - _M_pback;
! size_t __save_len = _M_pback_end_save - _M_buf;
if (__pback_len > __save_len)
__off_end = __pback_len - __save_len;
*************** namespace std
*** 288,295 ****
{
if (_M_pback_init)
{
! int_type __save_len = _M_pback_end_save - _M_pback_cur_save;
! int_type __pback_len = _M_in_cur - _M_pback;
__ret = __save_len - __pback_len;
}
else
--- 292,299 ----
{
if (_M_pback_init)
{
! size_t __save_len = _M_pback_end_save - _M_pback_cur_save;
! size_t __pback_len = _M_in_cur - _M_pback;
__ret = __save_len - __pback_len;
}
else
*************** namespace std
*** 304,310 ****
snextc()
{
int_type __eof = traits_type::eof();
! return (this->sbumpc() == __eof ? __eof : this->sgetc());
}
int_type
--- 308,315 ----
snextc()
{
int_type __eof = traits_type::eof();
! return (traits_type::eq_int_type(this->sbumpc(), __eof)
! ? __eof : this->sgetc());
}
int_type
*************** namespace std
*** 342,351 ****
protected:
basic_streambuf()
! : _M_buf(NULL), _M_buf_size(0),
! _M_buf_size_opt(static_cast(BUFSIZ)), _M_buf_unified(false),
! _M_in_beg(0), _M_in_cur(0), _M_in_end(0), _M_out_beg(0), _M_out_cur(0),
! _M_out_end(0), _M_mode(ios_base::openmode(0)), _M_buf_locale(locale()),
_M_buf_locale_init(false), _M_pback_cur_save(0), _M_pback_end_save(0),
_M_pback_init(false)
{ }
--- 347,356 ----
protected:
basic_streambuf()
! : _M_buf(NULL), _M_buf_size(0), _M_buf_size_opt(BUFSIZ),
! _M_buf_unified(false), _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
! _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
! _M_mode(ios_base::openmode(0)), _M_buf_locale(locale()),
_M_buf_locale_init(false), _M_pback_cur_save(0), _M_pback_end_save(0),
_M_pback_init(false)
{ }
*************** namespace std
*** 438,444 ****
uflow()
{
int_type __ret = traits_type::eof();
! bool __testeof = this->underflow() == __ret;
bool __testpending = _M_in_cur && _M_in_cur < _M_in_end;
if (!__testeof && __testpending)
{
--- 443,449 ----
uflow()
{
int_type __ret = traits_type::eof();
! bool __testeof = traits_type::eq_int_type(this->underflow(), __ret);
bool __testpending = _M_in_cur && _M_in_cur < _M_in_end;
if (!__testeof && __testpending)
{
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/libio/ChangeLog gcc-3.2/libstdc++-v3/libio/ChangeLog
*** gcc-3.1.1/libstdc++-v3/libio/ChangeLog Thu Jul 25 23:40:25 2002
--- gcc-3.2/libstdc++-v3/libio/ChangeLog Wed Aug 14 09:01:10 2002
***************
*** 1,3 ****
--- 1,7 ----
+ 2002-08-14 Release Manager
+
+ * GCC 3.2 Released.
+
2002-07-25 Release Manager
* GCC 3.1.1 Released.
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/libsupc++/cxxabi.h gcc-3.2/libstdc++-v3/libsupc++/cxxabi.h
*** gcc-3.1.1/libstdc++-v3/libsupc++/cxxabi.h Fri Nov 23 16:29:02 2001
--- gcc-3.2/libstdc++-v3/libsupc++/cxxabi.h Thu Aug 1 21:29:18 2002
***************
*** 1,6 ****
// new abi support -*- C++ -*-
! // Copyright (C) 2000 Free Software Foundation, Inc.
//
// This file is part of GNU CC.
//
--- 1,6 ----
// new abi support -*- C++ -*-
! // Copyright (C) 2000, 2002 Free Software Foundation, Inc.
//
// This file is part of GNU CC.
//
*************** class __pbase_type_info
*** 117,123 ****
{
/* abi defined member variables */
public:
! unsigned int __qualifier_flags; /* qualification of the target object */
const std::type_info *__pointee; /* type of pointed to object */
/* abi defined member functions */
--- 117,123 ----
{
/* abi defined member variables */
public:
! unsigned int __flags; /* qualification of the target object */
const std::type_info *__pointee; /* type of pointed to object */
/* abi defined member functions */
*************** public:
*** 127,138 ****
explicit __pbase_type_info (const char *__n,
int __quals,
const std::type_info *__type)
! : std::type_info (__n), __qualifier_flags (__quals), __pointee (__type)
{ }
/* implementation defined types */
public:
! enum __qualifier_masks {
__const_mask = 0x1,
__volatile_mask = 0x2,
__restrict_mask = 0x4,
--- 127,138 ----
explicit __pbase_type_info (const char *__n,
int __quals,
const std::type_info *__type)
! : std::type_info (__n), __flags (__quals), __pointee (__type)
{ }
/* implementation defined types */
public:
! enum __masks {
__const_mask = 0x1,
__volatile_mask = 0x2,
__restrict_mask = 0x4,
*************** class __pointer_to_member_type_info
*** 181,187 ****
{
/* abi defined member variables */
public:
! __class_type_info *__context_class; /* class of the member */
/* abi defined member functions */
public:
--- 181,187 ----
{
/* abi defined member variables */
public:
! __class_type_info *__context; /* class of the member */
/* abi defined member functions */
public:
*************** public:
*** 191,197 ****
int __quals,
const std::type_info *__type,
__class_type_info *__klass)
! : __pbase_type_info (__n, __quals, __type), __context_class (__klass)
{ }
/* implementation defined member functions */
--- 191,197 ----
int __quals,
const std::type_info *__type,
__class_type_info *__klass)
! : __pbase_type_info (__n, __quals, __type), __context (__klass)
{ }
/* implementation defined member functions */
*************** protected:
*** 204,214 ****
class __class_type_info;
/* helper class for __vmi_class_type */
! class __base_class_info
{
/* abi defined member variables */
public:
! const __class_type_info *__base; /* base class type */
long __offset_flags; /* offset and info */
/* implementation defined types */
--- 204,214 ----
class __class_type_info;
/* helper class for __vmi_class_type */
! class __base_class_type_info
{
/* abi defined member variables */
public:
! const __class_type_info* __base_type; /* base class type */
long __offset_flags; /* offset and info */
/* implementation defined types */
*************** public:
*** 216,223 ****
enum __offset_flags_masks {
__virtual_mask = 0x1,
__public_mask = 0x2,
! hwm_bit = 2,
! offset_shift = 8 /* bits to shift offset by */
};
/* implementation defined member functions */
--- 216,223 ----
enum __offset_flags_masks {
__virtual_mask = 0x1,
__public_mask = 0x2,
! __hwm_bit = 2,
! __offset_shift = 8 /* bits to shift offset by */
};
/* implementation defined member functions */
*************** public:
*** 230,236 ****
{
// This shift, being of a signed type, is implementation defined. GCC
// implements such shifts as arithmetic, which is what we want.
! return static_cast<__PTRDIFF_TYPE__> (__offset_flags) >> offset_shift;
}
};
--- 230,236 ----
{
// This shift, being of a signed type, is implementation defined. GCC
// implements such shifts as arithmetic, which is what we want.
! return static_cast<__PTRDIFF_TYPE__> (__offset_flags) >> __offset_shift;
}
};
*************** public:
*** 259,267 ****
/* publicly) */
__contained_ambig, /* contained ambiguously */
! __contained_virtual_mask = __base_class_info::__virtual_mask, /* via a virtual path */
! __contained_public_mask = __base_class_info::__public_mask, /* via a public path */
! __contained_mask = 1 << __base_class_info::hwm_bit, /* contained within us */
__contained_private = __contained_mask,
__contained_public = __contained_mask | __contained_public_mask
--- 259,267 ----
/* publicly) */
__contained_ambig, /* contained ambiguously */
! __contained_virtual_mask = __base_class_type_info::__virtual_mask, /* via a virtual path */
! __contained_public_mask = __base_class_type_info::__public_mask, /* via a public path */
! __contained_mask = 1 << __base_class_type_info::__hwm_bit, /* contained within us */
__contained_private = __contained_mask,
__contained_public = __contained_mask | __contained_public_mask
*************** class __vmi_class_type_info : public __c
*** 365,371 ****
public:
unsigned int __flags; /* details about the class hierarchy */
unsigned int __base_count; /* number of direct bases */
! __base_class_info const __base_info[1]; /* array of bases */
/* The array of bases uses the trailing array struct hack
so this class is not constructable with a normal constructor. It is
internally generated by the compiler. */
--- 365,371 ----
public:
unsigned int __flags; /* details about the class hierarchy */
unsigned int __base_count; /* number of direct bases */
! __base_class_type_info __base_info[1]; /* array of bases */
/* The array of bases uses the trailing array struct hack
so this class is not constructable with a normal constructor. It is
internally generated by the compiler. */
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/libsupc++/new gcc-3.2/libstdc++-v3/libsupc++/new
*** gcc-3.1.1/libstdc++-v3/libsupc++/new Tue Jul 16 20:26:29 2002
--- gcc-3.2/libstdc++-v3/libsupc++/new Fri Jul 26 23:23:45 2002
*************** void operator delete[](void*, const std:
*** 88,93 ****
--- 88,97 ----
// Default placement versions of operator new.
inline void* operator new(std::size_t, void* __p) throw() { return __p; }
inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
+
+ // Default placement versions of operator delete.
+ inline void operator delete (void*, void*) throw() { };
+ inline void operator delete[](void*, void*) throw() { };
//@}
} // extern "C++"
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/libsupc++/tinfo.cc gcc-3.2/libstdc++-v3/libsupc++/tinfo.cc
*** gcc-3.1.1/libstdc++-v3/libsupc++/tinfo.cc Wed Jan 9 20:39:27 2002
--- gcc-3.2/libstdc++-v3/libsupc++/tinfo.cc Thu Aug 1 21:29:18 2002
*************** __do_find_public_src (ptrdiff_t src2dst,
*** 295,301 ****
}
base = convert_to_base (base, is_virtual, offset);
! __sub_kind base_kind = __base_info[i].__base->__do_find_public_src
(src2dst, base, src_type, src_ptr);
if (contained_p (base_kind))
{
--- 295,301 ----
}
base = convert_to_base (base, is_virtual, offset);
! __sub_kind base_kind = __base_info[i].__base_type->__do_find_public_src
(src2dst, base, src_type, src_ptr);
if (contained_p (base_kind))
{
*************** __do_dyncast (ptrdiff_t src2dst,
*** 432,438 ****
}
bool result2_ambig
! = __base_info[i].__base->__do_dyncast (src2dst, base_access,
dst_type, base,
src_type, src_ptr, result2);
result.whole2src = __sub_kind (result.whole2src | result2.whole2src);
--- 432,438 ----
}
bool result2_ambig
! = __base_info[i].__base_type->__do_dyncast (src2dst, base_access,
dst_type, base,
src_type, src_ptr, result2);
result.whole2src = __sub_kind (result.whole2src | result2.whole2src);
*************** __do_upcast (const __class_type_info *ds
*** 616,625 ****
if (base)
base = convert_to_base (base, is_virtual, offset);
! if (__base_info[i].__base->__do_upcast (dst, base, result2))
{
if (result2.base_type == nonvirtual_base_type && is_virtual)
! result2.base_type = __base_info[i].__base;
if (contained_p (result2.part2dst) && !is_public)
result2.part2dst = __sub_kind (result2.part2dst & ~__contained_public_mask);
--- 616,625 ----
if (base)
base = convert_to_base (base, is_virtual, offset);
! if (__base_info[i].__base_type->__do_upcast (dst, base, result2))
{
if (result2.base_type == nonvirtual_base_type && is_virtual)
! result2.base_type = __base_info[i].__base_type;
if (contained_p (result2.part2dst) && !is_public)
result2.part2dst = __sub_kind (result2.part2dst & ~__contained_public_mask);
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/libsupc++/tinfo2.cc gcc-3.2/libstdc++-v3/libsupc++/tinfo2.cc
*** gcc-3.1.1/libstdc++-v3/libsupc++/tinfo2.cc Wed Mar 28 11:04:50 2001
--- gcc-3.2/libstdc++-v3/libsupc++/tinfo2.cc Thu Aug 1 21:29:18 2002
***************
*** 1,6 ****
// Methods for type_info for -*- C++ -*- Run Time Type Identification.
! // Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001
// Free Software Foundation
//
// This file is part of GNU CC.
--- 1,6 ----
// Methods for type_info for -*- C++ -*- Run Time Type Identification.
! // Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002
// Free Software Foundation
//
// This file is part of GNU CC.
*************** __do_catch (const type_info *thr_type,
*** 116,126 ****
const __pbase_type_info *thrown_type =
static_cast (thr_type);
! if (thrown_type->__qualifier_flags & ~__qualifier_flags)
// We're less qualified.
return false;
! if (!(__qualifier_flags & __const_mask))
outer &= ~1;
return __pointer_catch (thrown_type, thr_obj, outer);
--- 116,126 ----
const __pbase_type_info *thrown_type =
static_cast (thr_type);
! if (thrown_type->__flags & ~__flags)
// We're less qualified.
return false;
! if (!(__flags & __const_mask))
outer &= ~1;
return __pointer_catch (thrown_type, thr_obj, outer);
*************** __pointer_catch (const __pbase_type_info
*** 158,164 ****
const __pointer_to_member_type_info *thrown_type =
static_cast (thr_type);
! if (*__context_class != *thrown_type->__context_class)
return false; // not pointers to member of same class
return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
--- 158,164 ----
const __pointer_to_member_type_info *thrown_type =
static_cast (thr_type);
! if (*__context != *thrown_type->__context)
return false; // not pointers to member of same class
return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer);
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/Makefile.am gcc-3.2/libstdc++-v3/src/Makefile.am
*** gcc-3.1.1/libstdc++-v3/src/Makefile.am Fri Jun 28 08:22:39 2002
--- gcc-3.2/libstdc++-v3/src/Makefile.am Thu Aug 1 21:29:14 2002
*************** sources = \
*** 69,76 ****
collate.cc ctype.cc messages.cc monetary.cc numeric.cc time.cc \
concept-inst.cc locale-inst.cc misc-inst.cc stl-inst.cc \
string-inst.cc wstring-inst.cc valarray-inst.cc ext-inst.cc \
! fstream-inst.cc io-inst.cc istream-inst.cc ostream-inst.cc \
! streambuf-inst.cc sstream-inst.cc
VPATH = $(top_srcdir)/src:$(top_srcdir)
--- 69,76 ----
collate.cc ctype.cc messages.cc monetary.cc numeric.cc time.cc \
concept-inst.cc locale-inst.cc misc-inst.cc stl-inst.cc \
string-inst.cc wstring-inst.cc valarray-inst.cc ext-inst.cc \
! fstream.cc fstream-inst.cc io-inst.cc istream-inst.cc \
! ostream-inst.cc streambuf-inst.cc sstream-inst.cc
VPATH = $(top_srcdir)/src:$(top_srcdir)
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/Makefile.in gcc-3.2/libstdc++-v3/src/Makefile.in
*** gcc-3.1.1/libstdc++-v3/src/Makefile.in Fri Jun 28 08:22:40 2002
--- gcc-3.2/libstdc++-v3/src/Makefile.in Thu Aug 1 21:29:15 2002
*************** sources = \
*** 174,181 ****
collate.cc ctype.cc messages.cc monetary.cc numeric.cc time.cc \
concept-inst.cc locale-inst.cc misc-inst.cc stl-inst.cc \
string-inst.cc wstring-inst.cc valarray-inst.cc ext-inst.cc \
! fstream-inst.cc io-inst.cc istream-inst.cc ostream-inst.cc \
! streambuf-inst.cc sstream-inst.cc
VPATH = $(top_srcdir)/src:$(top_srcdir)
--- 174,181 ----
collate.cc ctype.cc messages.cc monetary.cc numeric.cc time.cc \
concept-inst.cc locale-inst.cc misc-inst.cc stl-inst.cc \
string-inst.cc wstring-inst.cc valarray-inst.cc ext-inst.cc \
! fstream.cc fstream-inst.cc io-inst.cc istream-inst.cc \
! ostream-inst.cc streambuf-inst.cc sstream-inst.cc
VPATH = $(top_srcdir)/src:$(top_srcdir)
*************** ios.lo strstream.lo bitset.lo functexcep
*** 258,265 ****
c++locale.lo locale.lo localename.lo codecvt.lo collate.lo ctype.lo \
messages.lo monetary.lo numeric.lo time.lo concept-inst.lo \
locale-inst.lo misc-inst.lo stl-inst.lo string-inst.lo wstring-inst.lo \
! valarray-inst.lo ext-inst.lo fstream-inst.lo io-inst.lo istream-inst.lo \
! ostream-inst.lo streambuf-inst.lo sstream-inst.lo
CXXFLAGS = @CXXFLAGS@
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
--- 258,265 ----
c++locale.lo locale.lo localename.lo codecvt.lo collate.lo ctype.lo \
messages.lo monetary.lo numeric.lo time.lo concept-inst.lo \
locale-inst.lo misc-inst.lo stl-inst.lo string-inst.lo wstring-inst.lo \
! valarray-inst.lo ext-inst.lo fstream.lo fstream-inst.lo io-inst.lo \
! istream-inst.lo ostream-inst.lo streambuf-inst.lo sstream-inst.lo
CXXFLAGS = @CXXFLAGS@
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/fstream.cc gcc-3.2/libstdc++-v3/src/fstream.cc
*** gcc-3.1.1/libstdc++-v3/src/fstream.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/src/fstream.cc Thu Aug 1 21:29:15 2002
***************
*** 0 ****
--- 1,193 ----
+ // File based streams -*- C++ -*-
+
+ // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction. Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License. This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+
+ //
+ // ISO C++ 14882: 27.8 File-based streams
+ //
+
+ #include
+
+ namespace std
+ {
+ template<>
+ basic_filebuf::int_type
+ basic_filebuf::_M_underflow_common(bool __bump)
+ {
+ int_type __ret = traits_type::eof();
+ bool __testin = _M_mode & ios_base::in;
+ bool __testout = _M_mode & ios_base::out;
+
+ if (__testin)
+ {
+ // Check for pback madness, and if so swich back to the
+ // normal buffers and jet outta here before expensive
+ // fileops happen...
+ if (_M_pback_init)
+ {
+ _M_pback_destroy();
+ if (_M_in_cur < _M_in_end)
+ return traits_type::to_int_type(*_M_in_cur);
+ }
+
+ // Sync internal and external buffers.
+ // NB: __testget -> __testput as _M_buf_unified here.
+ bool __testget = _M_in_cur && _M_in_beg < _M_in_cur;
+ bool __testinit = _M_is_indeterminate();
+ if (__testget)
+ {
+ if (__testout)
+ _M_really_overflow();
+ else if (_M_in_cur != _M_filepos)
+ _M_file.seekoff(_M_in_cur - _M_filepos,
+ ios_base::cur, ios_base::in);
+ }
+
+ if (__testinit || __testget)
+ {
+ streamsize __elen = 0;
+ streamsize __ilen = 0;
+ __elen = _M_file.xsgetn(reinterpret_cast(_M_in_beg),
+ _M_buf_size);
+ __ilen = __elen;
+
+ if (0 < __ilen)
+ {
+ _M_set_determinate(__ilen);
+ if (__testout)
+ _M_out_cur = _M_in_cur;
+ __ret = traits_type::to_int_type(*_M_in_cur);
+ if (__bump)
+ _M_in_cur_move(1);
+ else if (_M_buf_size == 1)
+ {
+ // If we are synced with stdio, we have to unget the
+ // character we just read so that the file pointer
+ // doesn't move.
+ _M_file.sys_ungetc(traits_type::to_int_type(*_M_in_cur));
+ _M_set_indeterminate();
+ }
+ }
+ }
+ }
+ _M_last_overflowed = false;
+ return __ret;
+ }
+
+ #ifdef _GLIBCPP_USE_WCHAR_T
+ template<>
+ basic_filebuf::int_type
+ basic_filebuf::_M_underflow_common(bool __bump)
+ {
+ int_type __ret = traits_type::eof();
+ bool __testin = _M_mode & ios_base::in;
+ bool __testout = _M_mode & ios_base::out;
+
+ if (__testin)
+ {
+ // Check for pback madness, and if so swich back to the
+ // normal buffers and jet outta here before expensive
+ // fileops happen...
+ if (_M_pback_init)
+ {
+ _M_pback_destroy();
+ if (_M_in_cur < _M_in_end)
+ return traits_type::to_int_type(*_M_in_cur);
+ }
+
+ // Sync internal and external buffers.
+ // NB: __testget -> __testput as _M_buf_unified here.
+ bool __testget = _M_in_cur && _M_in_beg < _M_in_cur;
+ bool __testinit = _M_is_indeterminate();
+ if (__testget)
+ {
+ if (__testout)
+ _M_really_overflow();
+ else if (_M_in_cur != _M_filepos)
+ _M_file.seekoff(_M_in_cur - _M_filepos,
+ ios_base::cur, ios_base::in);
+ }
+
+ if (__testinit || __testget)
+ {
+ const locale __loc = this->getloc();
+ const __codecvt_type& __cvt = use_facet<__codecvt_type>(__loc);
+
+ streamsize __elen = 0;
+ streamsize __ilen = 0;
+ if (__cvt.always_noconv())
+ {
+ __elen = _M_file.xsgetn(reinterpret_cast(_M_in_beg),
+ _M_buf_size);
+ __ilen = __elen;
+ }
+ else
+ {
+ char* __buf = static_cast(__builtin_alloca(_M_buf_size));
+ __elen = _M_file.xsgetn(__buf, _M_buf_size);
+
+ const char* __eend;
+ char_type* __iend;
+ __res_type __r = __cvt.in(_M_state_cur, __buf,
+ __buf + __elen, __eend, _M_in_beg,
+ _M_in_beg + _M_buf_size, __iend);
+ if (__r == codecvt_base::ok)
+ __ilen = __iend - _M_in_beg;
+ else
+ {
+ // Unwind.
+ __ilen = 0;
+ _M_file.seekoff(-__elen, ios_base::cur, ios_base::in);
+ }
+ }
+
+ if (0 < __ilen)
+ {
+ _M_set_determinate(__ilen);
+ if (__testout)
+ _M_out_cur = _M_in_cur;
+ __ret = traits_type::to_int_type(*_M_in_cur);
+ if (__bump)
+ _M_in_cur_move(1);
+ else if (_M_buf_size == 1)
+ {
+ // If we are synced with stdio, we have to unget the
+ // character we just read so that the file pointer
+ // doesn't move.
+ _M_file.sys_ungetc(traits_type::to_int_type(*_M_in_cur));
+ _M_set_indeterminate();
+ }
+ }
+ }
+ }
+ _M_last_overflowed = false;
+ return __ret;
+ }
+ #endif
+ } // namespace std
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/locale-inst.cc gcc-3.2/libstdc++-v3/src/locale-inst.cc
*** gcc-3.1.1/libstdc++-v3/src/locale-inst.cc Mon Jun 10 21:15:01 2002
--- gcc-3.2/libstdc++-v3/src/locale-inst.cc Thu Aug 1 21:29:15 2002
*************** namespace std
*** 420,434 ****
bool
__verify_grouping(const basic_string&, basic_string&);
! template
! void
! __pad(ios_base&, char, char*, const char *, streamsize,
! streamsize, const bool);
!
! template
! void
! __pad >(ios_base&, char, char*, const char *,
! streamsize, streamsize, const bool);
#ifdef _GLIBCPP_USE_WCHAR_T
template
--- 420,426 ----
bool
__verify_grouping(const basic_string&, basic_string&);
! template class __pad >;
#ifdef _GLIBCPP_USE_WCHAR_T
template
*************** namespace std
*** 440,468 ****
__verify_grouping(const basic_string&,
basic_string&);
! template
! void
! __pad(ios_base&, wchar_t, wchar_t*, const wchar_t*,
! streamsize, streamsize, const bool);
!
! template
! void
! __pad >(ios_base&, wchar_t, wchar_t*,
! const wchar_t*, streamsize,
! streamsize, const bool);
! #endif // _GLIBCPP_USE_WCHAR_T
template
int
! __convert_from_v(char*, const int, const char*, double, const __c_locale&, int);
template
int
! __convert_from_v(char*, const int, const char*, long double, const __c_locale&, int);
template
int
! __convert_from_v(char*, const int, const char*, long, const __c_locale&, int);
template
int
--- 432,454 ----
__verify_grouping(const basic_string&,
basic_string&);
! template class __pad >;
! #endif
template
int
! __convert_from_v(char*, const int, const char*, double,
! const __c_locale&, int);
template
int
! __convert_from_v(char*, const int, const char*, long double,
! const __c_locale&, int);
template
int
! __convert_from_v(char*, const int, const char*, long,
! const __c_locale&, int);
template
int
*************** namespace std
*** 471,477 ****
template
int
! __convert_from_v(char*, const int, const char*, long long, const __c_locale&, int);
template
int
--- 457,464 ----
template
int
! __convert_from_v(char*, const int, const char*, long long,
! const __c_locale&, int);
template
int
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/locale.cc gcc-3.2/libstdc++-v3/src/locale.cc
*** gcc-3.1.1/libstdc++-v3/src/locale.cc Fri Apr 19 08:28:18 2002
--- gcc-3.2/libstdc++-v3/src/locale.cc Thu Aug 1 21:29:15 2002
*************** namespace std
*** 202,208 ****
if (strcmp(__s, "C") == 0 || strcmp(__s, "POSIX") == 0)
(_M_impl = _S_classic)->_M_add_reference();
else if (strcmp(__s, "") == 0)
! _M_impl = new _Impl(setlocale(LC_ALL, __s), 1);
else
_M_impl = new _Impl(__s, 1);
}
--- 202,208 ----
if (strcmp(__s, "C") == 0 || strcmp(__s, "POSIX") == 0)
(_M_impl = _S_classic)->_M_add_reference();
else if (strcmp(__s, "") == 0)
! _M_impl = new _Impl(setlocale(LC_ALL, NULL), 1);
else
_M_impl = new _Impl(__s, 1);
}
*************** namespace std
*** 284,294 ****
const locale&
locale::classic()
{
- static _STL_mutex_lock __lock __STL_MUTEX_INITIALIZER;
- _STL_auto_lock __auto(__lock);
-
if (!_S_classic)
{
try
{
// 26 Standard facets, 2 references.
--- 284,294 ----
const locale&
locale::classic()
{
if (!_S_classic)
{
+ static _STL_mutex_lock __lock __STL_MUTEX_INITIALIZER;
+ _STL_auto_lock __auto(__lock);
+
try
{
// 26 Standard facets, 2 references.
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/localename.cc gcc-3.2/libstdc++-v3/src/localename.cc
*** gcc-3.1.1/libstdc++-v3/src/localename.cc Sat May 18 14:37:48 2002
--- gcc-3.2/libstdc++-v3/src/localename.cc Fri Jul 26 23:23:42 2002
*************** namespace std
*** 132,139 ****
_M_init_facet(new num_get);
_M_init_facet(new num_put);
_M_init_facet(new std::collate(__cloc));
! _M_init_facet(new moneypunct(__cloc));
! _M_init_facet(new moneypunct(__cloc));
_M_init_facet(new money_get);
_M_init_facet(new money_put);
_M_init_facet(new __timepunct(__cloc, __s));
--- 132,139 ----
_M_init_facet(new num_get);
_M_init_facet(new num_put);
_M_init_facet(new std::collate(__cloc));
! _M_init_facet(new moneypunct(__cloc, __s));
! _M_init_facet(new moneypunct(__cloc, __s));
_M_init_facet(new money_get);
_M_init_facet(new money_put);
_M_init_facet(new __timepunct(__cloc, __s));
*************** namespace std
*** 148,155 ****
_M_init_facet(new num_get);
_M_init_facet(new num_put);
_M_init_facet(new std::collate(__cloc));
! _M_init_facet(new moneypunct(__cloc));
! _M_init_facet(new moneypunct(__cloc));
_M_init_facet(new money_get);
_M_init_facet(new money_put);
_M_init_facet(new __timepunct(__cloc, __s));
--- 148,155 ----
_M_init_facet(new num_get);
_M_init_facet(new num_put);
_M_init_facet(new std::collate(__cloc));
! _M_init_facet(new moneypunct(__cloc, __s));
! _M_init_facet(new moneypunct(__cloc, __s));
_M_init_facet(new money_get);
_M_init_facet(new money_put);
_M_init_facet(new __timepunct(__cloc, __s));
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/src/strstream.cc gcc-3.2/libstdc++-v3/src/strstream.cc
*** gcc-3.1.1/libstdc++-v3/src/strstream.cc Sat Jun 8 15:15:43 2002
--- gcc-3.2/libstdc++-v3/src/strstream.cc Wed Aug 7 05:13:08 2002
***************
*** 47,53 ****
// MAY BE REMOVED in a future standard revision. You should use the
// header instead.
! #include
#include
#include
#include
--- 47,53 ----
// MAY BE REMOVED in a future standard revision. You should use the
// header instead.
! #include
#include
#include
#include
*************** namespace std
*** 60,71 ****
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(true),
_M_frozen(false), _M_constant(false)
{
! _M_buf_size = _M_buf_size_opt = max(initial_capacity, streamsize(16));
! _M_buf = _M_alloc(_M_buf_size);
! if (_M_buf)
{
! setp(_M_buf, _M_buf + _M_buf_size);
! setg(_M_buf, _M_buf, _M_buf);
}
}
--- 60,72 ----
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(true),
_M_frozen(false), _M_constant(false)
{
! streamsize n = max(initial_capacity, streamsize(16));
!
! char* buf = _M_alloc(n);
! if (buf)
{
! setp(buf, buf + n);
! setg(buf, buf, buf);
}
}
*************** namespace std
*** 73,84 ****
: _Base(), _M_alloc_fun(alloc_f), _M_free_fun(free_f), _M_dynamic(true),
_M_frozen(false), _M_constant(false)
{
! _M_buf_size = _M_buf_size_opt = 16;
! _M_buf = _M_alloc(_M_buf_size);
! if (_M_buf)
{
! setp(_M_buf, _M_buf + _M_buf_size);
! setg(_M_buf, _M_buf, _M_buf);
}
}
--- 74,86 ----
: _Base(), _M_alloc_fun(alloc_f), _M_free_fun(free_f), _M_dynamic(true),
_M_frozen(false), _M_constant(false)
{
! streamsize n = 16;
!
! char* buf = _M_alloc(n);
! if (buf)
{
! setp(buf, buf + n);
! setg(buf, buf, buf);
}
}
*************** namespace std
*** 116,129 ****
strstreambuf::~strstreambuf()
{
if (_M_dynamic && !_M_frozen)
! {
! char* p = this->eback();
! _M_free(p);
! if (p == _M_buf)
! _M_buf = 0;
! }
! if (_M_buf)
! _M_free(_M_buf);
}
void
--- 118,124 ----
strstreambuf::~strstreambuf()
{
if (_M_dynamic && !_M_frozen)
! _M_free(eback());
}
void
*************** namespace std
*** 169,176 ****
old_get_offset = gptr() - eback();
}
- _M_buf = buf;
- _M_buf_size = _M_buf_size_opt = new_size;
setp(buf, buf + new_size);
pbump(old_size);
--- 164,169 ----
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/18_support/new_delete_placement.cc gcc-3.2/libstdc++-v3/testsuite/18_support/new_delete_placement.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/18_support/new_delete_placement.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/18_support/new_delete_placement.cc Fri Jul 26 23:23:43 2002
***************
*** 0 ****
--- 1,40 ----
+ // 2002-07-24 Benjamin Kosnik
+
+ // Copyright (C) 2002 Free Software Foundation
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // 18.4.1.3 - Placement forms
+
+ #include
+ #include
+
+ // libstdc++/7286
+ void test01()
+ {
+ void* pc = new char;
+ void* pa = new char[10];
+ void* tmp;
+ operator delete(pc, tmp);
+ operator delete[](pa, tmp);
+ }
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc gcc-3.2/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc Fri Apr 19 08:28:20 2002
--- gcc-3.2/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc Wed Aug 7 05:13:08 2002
*************** public:
*** 58,64 ****
void test03()
{
bool test = true;
-
try
{ throw fuzzy_logic(); }
catch(const fuzzy_logic& obj)
--- 58,63 ----
*************** void allocate_on_stack(void)
*** 79,84 ****
--- 78,84 ----
}
void test04()
{
+ bool test = true;
const std::string s("CA ISO emergency once again:immediate power down");
const char* strlit1 = "wish I lived in Palo Alto";
const char* strlit2 = "...or Santa Barbara";
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/21_strings/capacity.cc gcc-3.2/libstdc++-v3/testsuite/21_strings/capacity.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/21_strings/capacity.cc Fri Apr 19 08:28:22 2002
--- gcc-3.2/libstdc++-v3/testsuite/21_strings/capacity.cc Thu Aug 1 21:29:15 2002
*************** template
*** 36,41 ****
--- 36,128 ----
struct B { };
+ // char_traits specialization
+ namespace std
+ {
+ template<>
+ struct char_traits >
+ {
+ typedef A char_type;
+ // Unsigned as wint_t in unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ {
+ for (size_t __i = 0; __i < __n; ++__i)
+ if (!eq(__s1[__i], __s2[__i]))
+ return lt(__s1[__i], __s2[__i]) ? -1 : 1;
+ return 0;
+ }
+
+ static size_t
+ length(const char_type* __s)
+ {
+ const char_type* __p = __s;
+ while (__p)
+ ++__p;
+ return (__p - __s);
+ }
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ {
+ for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
+ if (*__p == __a) return __p;
+ return 0;
+ }
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ {
+ for (char_type* __p = __s; __p < __s + __n; ++__p)
+ assign(*__p, __a);
+ return __s;
+ }
+
+ static char_type
+ to_char_type(const int_type& __c)
+ { return char_type(); }
+
+ static int_type
+ to_int_type(const char_type& __c) { return int_type(); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof() { return static_cast(-1); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return eq_int_type(__c, eof()) ? int_type(0) : __c; }
+ };
+ } // namespace std
+
void test01()
{
// 1 POD types : resize, capacity, reserve
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc gcc-3.2/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc Tue Mar 26 00:39:06 2002
--- gcc-3.2/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc Thu Aug 1 21:29:16 2002
***************
*** 23,32 ****
#include
#include
! using namespace std;
#ifdef _GLIBCPP_USE___ENC_TRAITS
/*
> how do I check that these conversions are correct?
Very easy. Since all the characters are from ASCII you simply
--- 23,93 ----
#include
#include
!
#ifdef _GLIBCPP_USE___ENC_TRAITS
+ // Need some char_traits specializations for this to work.
+ typedef unsigned short unicode_t;
+
+ namespace std
+ {
+ template<>
+ struct char_traits
+ {
+ typedef unicode_t char_type;
+ // Unsigned as wint_t is unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2);
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2);
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2);
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ { return memcmp(__s1, __s2, __n); }
+
+ static size_t
+ length(const char_type* __s);
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a);
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n);
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast(memcpy(__s1, __s2, __n)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a);
+
+ static char_type
+ to_char_type(const int_type& __c);
+
+ static int_type
+ to_int_type(const char_type& __c);
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2);
+
+ static int_type
+ eof();
+
+ static int_type
+ not_eof(const int_type& __c);
+ };
+ }
+
/*
> how do I check that these conversions are correct?
Very easy. Since all the characters are from ASCII you simply
*************** it shows that the other byte-order is us
*** 51,57 ****
void
! initialize_state(__enc_traits& state)
{ state._M_init(); }
// Partial specialization using __enc_traits.
--- 112,118 ----
void
! initialize_state(std::__enc_traits& state)
{ state._M_init(); }
// Partial specialization using __enc_traits.
*************** initialize_state(__enc_traits& state)
*** 59,66 ****
// UNICODE - UCS2 (big endian)
void test01()
{
typedef codecvt_base::result result;
- typedef unsigned short unicode_t;
typedef unicode_t int_type;
typedef char ext_type;
typedef __enc_traits enc_type;
--- 120,127 ----
// UNICODE - UCS2 (big endian)
void test01()
{
+ using namespace std;
typedef codecvt_base::result result;
typedef unicode_t int_type;
typedef char ext_type;
typedef __enc_traits enc_type;
*************** void test01()
*** 146,151 ****
--- 207,213 ----
// UNICODE - UCS2 (little endian)
void test02()
{
+ using namespace std;
typedef codecvt_base::result result;
typedef unsigned short unicode_t;
typedef unicode_t int_type;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc gcc-3.2/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc Thu Mar 28 19:22:40 2002
--- gcc-3.2/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc Thu Aug 1 21:29:16 2002
***************
*** 1,6 ****
// 2000-08-23 Benjamin Kosnik
! // Copyright (C) 2000, 2001 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
--- 1,6 ----
// 2000-08-23 Benjamin Kosnik
! // Copyright (C) 2000, 2001, 2002 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
***************
*** 23,43 ****
#include
#include
- using namespace std;
-
#ifdef _GLIBCPP_USE___ENC_TRAITS
#ifdef _GLIBCPP_USE_WCHAR_T
void
! initialize_state(__enc_traits& state)
{ state._M_init(); }
// Partial specialization using __enc_traits.
// codecvt
void test01()
{
typedef codecvt_base::result result;
- typedef unsigned short unicode_t;
typedef unicode_t int_type;
typedef wchar_t ext_type;
typedef __enc_traits enc_type;
--- 23,102 ----
#include
#include
#ifdef _GLIBCPP_USE___ENC_TRAITS
#ifdef _GLIBCPP_USE_WCHAR_T
+ // Need some char_traits specializations for this to work.
+ typedef unsigned short unicode_t;
+
+ namespace std
+ {
+ template<>
+ struct char_traits
+ {
+ typedef unicode_t char_type;
+ // Unsigned as wint_t is unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2);
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2);
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2);
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ { return memcmp(__s1, __s2, __n); }
+
+ static size_t
+ length(const char_type* __s);
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a);
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n);
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast(memcpy(__s1, __s2, __n)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a);
+
+ static char_type
+ to_char_type(const int_type& __c);
+
+ static int_type
+ to_int_type(const char_type& __c);
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2);
+
+ static int_type
+ eof();
+
+ static int_type
+ not_eof(const int_type& __c);
+ };
+ }
+
void
! initialize_state(std::__enc_traits& state)
{ state._M_init(); }
// Partial specialization using __enc_traits.
// codecvt
void test01()
{
+ using namespace std;
typedef codecvt_base::result result;
typedef unicode_t int_type;
typedef wchar_t ext_type;
typedef __enc_traits enc_type;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc gcc-3.2/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc Thu Jan 17 22:29:44 2002
--- gcc-3.2/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc Thu Aug 1 21:29:16 2002
***************
*** 25,31 ****
#include
#include
-
void test00()
{
// Should be able to do this as the first thing that happens in a
--- 25,30 ----
*************** public:
*** 49,59 ****
std::locale::id gnu_facet::id;
void test01()
{
using namespace std;
-
- typedef unsigned short unicode_t;
typedef unicode_t int_type;
typedef char ext_type;
typedef __enc_traits enc_type;
--- 48,117 ----
std::locale::id gnu_facet::id;
+ // Need some char_traits specializations for this to work.
+ typedef unsigned short unicode_t;
+
+ namespace std
+ {
+ template<>
+ struct char_traits
+ {
+ typedef unicode_t char_type;
+ // Unsigned as wint_t is unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2);
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2);
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2);
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ { return memcmp(__s1, __s2, __n); }
+
+ static size_t
+ length(const char_type* __s);
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a);
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n);
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast(memcpy(__s1, __s2, __n)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a);
+
+ static char_type
+ to_char_type(const int_type& __c);
+
+ static int_type
+ to_int_type(const char_type& __c);
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2);
+
+ static int_type
+ eof();
+
+ static int_type
+ not_eof(const int_type& __c);
+ };
+ }
+
void test01()
{
using namespace std;
typedef unicode_t int_type;
typedef char ext_type;
typedef __enc_traits enc_type;
*************** void test01()
*** 238,244 ****
}
#endif // _GLIBCPP_USE___ENC_TRAITS
! int main ()
{
test00();
--- 296,316 ----
}
#endif // _GLIBCPP_USE___ENC_TRAITS
! // libstdc++/7222
! void test02()
! {
! bool test = true;
! std::locale loc_c1("C");
! std::locale loc_c2 ("C");
!
! std::locale loc_1("");
! std::locale loc_2("");
!
! VERIFY( loc_c1 == loc_c2 );
! VERIFY( loc_1 == loc_2 );
! }
!
! int main()
{
test00();
*************** int main ()
*** 246,250 ****
--- 318,324 ----
test01();
#endif
+ test02();
+
return 0;
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/23_containers/deque_operators.cc gcc-3.2/libstdc++-v3/testsuite/23_containers/deque_operators.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/23_containers/deque_operators.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/23_containers/deque_operators.cc Fri Jul 26 23:23:43 2002
***************
*** 0 ****
--- 1,85 ----
+ // 2002-05-18 Paolo Carlini
+
+ // Copyright (C) 2002 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // 23.2.1 deque operators
+
+ #include
+ #include
+
+ // libstdc++/6503
+ void test01()
+ {
+ bool test = true;
+
+ std::deque d(2);
+ typedef std::deque::iterator iter;
+ typedef std::deque::const_iterator constiter;
+
+ iter beg = d.begin();
+ iter end = d.end();
+ constiter constbeg = d.begin();
+ constiter constend = d.end();
+
+ VERIFY( beg == constbeg );
+ VERIFY( constend == end );
+
+ VERIFY( beg != constend );
+ VERIFY( constbeg != end );
+
+ VERIFY( beg < constend );
+ VERIFY( constbeg < end );
+
+ VERIFY( end > constbeg );
+ VERIFY( constend > beg );
+
+ VERIFY( end >= constend );
+ VERIFY( constbeg >= beg );
+
+ VERIFY( beg <= constbeg );
+ VERIFY( constend <= end );
+ }
+
+ // libstdc++/7186
+ void test02()
+ {
+ bool test = true;
+
+ std::deque d(2);
+ typedef std::deque::iterator iter;
+ typedef std::deque::const_iterator constiter;
+
+ iter beg = d.begin();
+ iter end = d.end();
+ constiter constbeg = d.begin();
+ constiter constend = d.end();
+
+ VERIFY( beg - constbeg == 0 );
+ VERIFY( constend - end == 0 );
+
+ VERIFY( end - constbeg > 0 );
+ VERIFY( constend - beg > 0 );
+ }
+
+ int main()
+ {
+ test01();
+ test02();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/24_iterators/iterator.cc gcc-3.2/libstdc++-v3/testsuite/24_iterators/iterator.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/24_iterators/iterator.cc Fri Nov 23 16:29:01 2001
--- gcc-3.2/libstdc++-v3/testsuite/24_iterators/iterator.cc Fri Jul 26 23:23:43 2002
*************** wrong_stuff()
*** 577,582 ****
--- 577,593 ----
return failures;
}
+ // libstdc++/6642
+ int
+ test6642()
+ {
+ std::string s;
+ std::string::iterator it = s.begin();
+ std::string::const_iterator cit = s.begin();
+
+ return it - cit;
+ }
+
int
main(int argc, char **argv)
{
*************** main(int argc, char **argv)
*** 590,595 ****
--- 601,608 ----
failures += wrong_stuff();
+ failures += test6642();
+
#ifdef DEBUG_ASSERT
assert (failures == 0);
#endif
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/filebuf.cc gcc-3.2/libstdc++-v3/testsuite/27_io/filebuf.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/filebuf.cc Sat Jan 26 01:55:09 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/filebuf.cc Thu Aug 1 21:29:16 2002
***************
*** 19,40 ****
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
! // NB: this test assumes that _M_buf_size == 40, and not the usual
! // buffer_size length of BUFSIZ (8192), so that overflow/underflow can be
! // simulated a bit more readily.
#include
#include
// { dg-do compile }
// test05
// libstdc++/1886
// should be able to instantiate basic_filebuf for non-standard types.
! template class std::basic_filebuf >;
int main()
{
return 0;
}
--- 19,108 ----
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
! // 27.8.1.1 - Template class basic_filebuf
! // NB: This file is for testing basic_filebuf with NO OTHER INCLUDES.
#include
#include
// { dg-do compile }
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::filebuf test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
// test05
// libstdc++/1886
// should be able to instantiate basic_filebuf for non-standard types.
! namespace test
! {
! using namespace std;
! typedef short type_t;
! template class basic_filebuf >;
! template class basic_filebuf >;
! } // test
!
!
! // test07
! // libstdc++/2020
! // should be able to use custom char_type
! class gnu_char_type
! {
! unsigned long character;
! public:
! // operator ==
! bool
! operator==(const gnu_char_type& __lhs)
! { return character == __lhs.character; }
!
! // operator <
! bool
! operator<(const gnu_char_type& __lhs)
! { return character < __lhs.character; }
!
! // default ctor
! gnu_char_type() { }
!
! // to_char_type
! gnu_char_type(const unsigned long& __l) : character(__l) { }
!
! // to_int_type
! operator unsigned long() const { return character; }
! };
!
! void test07()
! {
! bool test = true;
! typedef std::basic_filebuf gnu_filebuf;
!
! try
! { gnu_filebuf obj; }
! catch(std::exception& obj)
! {
! test = false;
! VERIFY( test );
! }
! }
!
! #if !__GXX_WEAK__
! // Explicitly instantiate for systems with no COMDAT or weak support.
! template
! std::basic_streambuf::int_type
! std::basic_streambuf::_S_pback_size;
! #endif
int main()
{
+ test01();
+ test07();
return 0;
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc gcc-3.2/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc Mon Apr 22 20:28:37 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc Thu Aug 1 21:29:16 2002
*************** void test06()
*** 514,567 ****
VERIFY( buffer[0] == 'a' );
}
- // test06
- // libstdc++/2020
- // should be able to use custom char_type
- class gnu_char_type
- {
- unsigned long character;
- public:
- // operator ==
- bool
- operator==(const gnu_char_type& __lhs)
- { return character == __lhs.character; }
-
- // operator <
- bool
- operator<(const gnu_char_type& __lhs)
- { return character < __lhs.character; }
-
- // default ctor
- gnu_char_type() { }
-
- // to_char_type
- gnu_char_type(const unsigned long& __l) : character(__l) { }
-
- // to_int_type
- operator unsigned long() const { return character; }
- };
-
- void test07()
- {
- bool test = true;
- typedef std::basic_filebuf gnu_filebuf;
-
- try
- { gnu_filebuf obj; }
- catch(std::exception& obj)
- {
- test = false;
- VERIFY( test );
- }
- }
-
- #if !__GXX_WEAK__
- // Explicitly instantiate for systems with no COMDAT or weak support.
- template
- std::basic_streambuf::int_type
- std::basic_streambuf::_S_pback_size;
- #endif
-
main()
{
test01();
--- 514,519 ----
*************** main()
*** 571,577 ****
test04();
test05();
test06();
- test07();
return 0;
}
--- 523,528 ----
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/fstream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/fstream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/fstream.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/27_io/fstream.cc Thu Aug 1 21:29:16 2002
***************
*** 0 ****
--- 1,62 ----
+ // 2002-07-25 Benjamin Kosnik
+
+ // Copyright (C) 2002 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction. Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License. This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+
+ // 27.8.1.11 - Template class basic_fstream
+ // NB: This file is for testing basic_fstream with NO OTHER INCLUDES.
+
+ #include
+ #include
+
+ // { dg-do compile }
+
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::fstream test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
+ namespace test
+ {
+ using namespace std;
+ typedef short type_t;
+ template class basic_fstream >;
+ template class basic_fstream >;
+ } // test
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/ifstream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/ifstream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/ifstream.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/27_io/ifstream.cc Fri Jul 26 23:23:44 2002
***************
*** 0 ****
--- 1,60 ----
+ // 2002-07-25 Benjamin Kosnik
+
+ // Copyright (C) 2002 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction. Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License. This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+
+ // 27.8.1.5 - Template class basic_ifstream
+ // NB: This file is for testing basic_ifstream with NO OTHER INCLUDES.
+
+ #include
+
+ // { dg-do compile }
+
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::ifstream test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
+ namespace test
+ {
+ using namespace std;
+ typedef short type_t;
+ template class basic_ifstream >;
+ } // test
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/ios.cc gcc-3.2/libstdc++-v3/testsuite/27_io/ios.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/ios.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/27_io/ios.cc Fri Jul 26 23:23:44 2002
***************
*** 0 ****
--- 1,60 ----
+ // 2002-07-25 Benjamin Kosnik
+
+ // Copyright (C) 2002 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction. Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License. This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+
+ // 27.4.4 - Template class basic_ios
+ // NB: This file is for testing basic_ios with NO OTHER INCLUDES.
+
+ #include
+
+ // { dg-do compile }
+
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::ios test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
+ namespace test
+ {
+ using namespace std;
+ typedef short type_t;
+ template class basic_ios >;
+ } // test
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/ios_init.cc gcc-3.2/libstdc++-v3/testsuite/27_io/ios_init.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/ios_init.cc Thu Apr 4 05:34:56 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/ios_init.cc Thu Aug 1 21:29:16 2002
***************
*** 34,39 ****
--- 34,209 ----
#include
#include
+ // char_traits specialization
+ namespace std
+ {
+ template<>
+ struct char_traits
+ {
+ typedef unsigned short char_type;
+ // Unsigned as wint_t in unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ {
+ for (size_t __i = 0; __i < __n; ++__i)
+ if (!eq(__s1[__i], __s2[__i]))
+ return lt(__s1[__i], __s2[__i]) ? -1 : 1;
+ return 0;
+ }
+
+ static size_t
+ length(const char_type* __s)
+ {
+ const char_type* __p = __s;
+ while (__p)
+ ++__p;
+ return (__p - __s);
+ }
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ {
+ for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
+ if (*__p == __a) return __p;
+ return 0;
+ }
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ {
+ for (char_type* __p = __s; __p < __s + __n; ++__p)
+ assign(*__p, __a);
+ return __s;
+ }
+
+ static char_type
+ to_char_type(const int_type& __c)
+ { return char_type(); }
+
+ static int_type
+ to_int_type(const char_type& __c) { return int_type(); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof() { return static_cast(-1); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return eq_int_type(__c, eof()) ? int_type(0) : __c; }
+ };
+
+ template<>
+ struct char_traits
+ {
+ typedef unsigned char char_type;
+ // Unsigned as wint_t in unsigned.
+ typedef unsigned long int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ {
+ for (size_t __i = 0; __i < __n; ++__i)
+ if (!eq(__s1[__i], __s2[__i]))
+ return lt(__s1[__i], __s2[__i]) ? -1 : 1;
+ return 0;
+ }
+
+ static size_t
+ length(const char_type* __s)
+ {
+ const char_type* __p = __s;
+ while (__p && *__p)
+ ++__p;
+ return (__p - __s);
+ }
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ {
+ for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
+ if (*__p == __a) return __p;
+ return 0;
+ }
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ {
+ for (char_type* __p = __s; __p < __s + __n; ++__p)
+ assign(*__p, __a);
+ return __s;
+ }
+
+ static char_type
+ to_char_type(const int_type& __c)
+ { return char_type(); }
+
+ static int_type
+ to_int_type(const char_type& __c) { return int_type(); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof() { return static_cast(-1); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return eq_int_type(__c, eof()) ? int_type(0) : __c; }
+ };
+ } // namespace std
+
class gnu_filebuf: public std::filebuf
{
int i;
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/iostream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/iostream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/iostream.cc Sat Jan 26 01:55:09 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/iostream.cc Fri Jul 26 23:23:43 2002
***************
*** 34,39 ****
--- 34,51 ----
#include
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::iostream test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
namespace test
{
using namespace std;
*************** namespace test
*** 43,47 ****
--- 55,60 ----
int main()
{
+ test01();
return 0;
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/istream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/istream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/istream.cc Sat Jan 26 01:55:09 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/istream.cc Thu Aug 1 21:29:16 2002
***************
*** 31,47 ****
--- 31,62 ----
// NB: This file is for testing istream with NO OTHER INCLUDES.
#include
+ #include
// { dg-do compile }
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::istream test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
namespace test
{
using namespace std;
typedef short type_t;
template class basic_istream >;
+ template class basic_istream >;
} // test
int main()
{
+ test01();
return 0;
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/istream_unformatted.cc gcc-3.2/libstdc++-v3/testsuite/27_io/istream_unformatted.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/istream_unformatted.cc Mon Apr 22 19:11:00 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/istream_unformatted.cc Fri Jul 26 23:23:44 2002
*************** test09()
*** 514,519 ****
--- 514,556 ----
VERIFY( test );
}
+ // libstdc++/70220
+ void
+ test10()
+ {
+ using namespace std;
+ bool test = true;
+ typedef string string_type;
+ typedef stringbuf stringbuf_type;
+ typedef istream istream_type;
+
+ int res = 0;
+ streamsize n;
+ string_type input("abcdefg\n");
+ stringbuf_type sbuf(input);
+ istream_type istr(&sbuf);
+
+ istr.ignore(0);
+ if (istr.gcount() != 0)
+ test = false;
+ VERIFY( test );
+
+ istr.ignore(0, 'b');
+ if (istr.gcount() != 0)
+ test = false;
+ VERIFY( test );
+
+ istr.ignore(); // Advance to next position.
+ istr.ignore(0, 'b');
+ if ((n=istr.gcount()) != 0)
+ test = false;
+ VERIFY( test );
+
+ if (istr.peek() != 'b')
+ test = false;
+ VERIFY( test );
+ }
+
int
main()
{
*************** main()
*** 526,531 ****
--- 563,569 ----
test07();
test08();
test09();
+ test10();
return 0;
}
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/istringstream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/istringstream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/istringstream.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/27_io/istringstream.cc Fri Jul 26 23:23:44 2002
***************
*** 0 ****
--- 1,60 ----
+ // 2002-07-25 Benjamin Kosnik
+
+ // Copyright (C) 2002 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction. Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License. This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+
+ // 27.7.2 - Template class basic_istringstream
+ // NB: This file is for testing basic_istringstream with NO OTHER INCLUDES.
+
+ #include
+
+ // { dg-do compile }
+
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::istringstream test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
+ namespace test
+ {
+ using namespace std;
+ typedef short type_t;
+ template class basic_istringstream >;
+ } // test
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/ofstream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/ofstream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/ofstream.cc Thu Jan 1 00:00:00 1970
--- gcc-3.2/libstdc++-v3/testsuite/27_io/ofstream.cc Fri Jul 26 23:23:44 2002
***************
*** 0 ****
--- 1,60 ----
+ // 2002-07-25 Benjamin Kosnik
+
+ // Copyright (C) 2002 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction. Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License. This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+
+ // 27.8.1.8 - Template class basic_ofstream
+ // NB: This file is for testing basic_ofstream with NO OTHER INCLUDES.
+
+ #include
+
+ // { dg-do compile }
+
+ // libstdc++/7216
+ void test01()
+ {
+ // Check for required typedefs
+ typedef std::ifstream test_type;
+ typedef test_type::char_type char_type;
+ typedef test_type::traits_type traits_type;
+ typedef test_type::int_type int_type;
+ typedef test_type::pos_type pos_type;
+ typedef test_type::off_type off_type;
+ }
+
+ namespace test
+ {
+ using namespace std;
+ typedef short type_t;
+ template class basic_ifstream >;
+ } // test
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -Nrc3pad gcc-3.1.1/libstdc++-v3/testsuite/27_io/ostream.cc gcc-3.2/libstdc++-v3/testsuite/27_io/ostream.cc
*** gcc-3.1.1/libstdc++-v3/testsuite/27_io/ostream.cc Sat Jan 26 01:55:09 2002
--- gcc-3.2/libstdc++-v3/testsuite/27_io/ostream.cc Thu Aug 1 21:29:16 2002
***************
*** 31,47 ****
--- 31,62 ----
// NB: This file is for testing ostream with NO OTHER INCLUDES.
#include
+ #include