summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gcc
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2004-12-25 00:23:21 +0000
committerMarc Espie <espie@cvs.openbsd.org>2004-12-25 00:23:21 +0000
commitcf50c04f1d1c77581471d4ba955e6794ac8e8e83 (patch)
tree0c432b745f1f200bfe7735bd30fed6ee547095d3 /gnu/usr.bin/gcc
parentec1f61d401d68818bd1c1610682adaf938aa863e (diff)
solve remaining conflicts
Diffstat (limited to 'gnu/usr.bin/gcc')
-rw-r--r--gnu/usr.bin/gcc/gcc/Makefile.in63
-rw-r--r--gnu/usr.bin/gcc/gcc/NEWS4882
-rw-r--r--gnu/usr.bin/gcc/gcc/builtins.c299
-rw-r--r--gnu/usr.bin/gcc/gcc/collect2.c30
-rw-r--r--gnu/usr.bin/gcc/gcc/combine.c87
-rw-r--r--gnu/usr.bin/gcc/gcc/config.gcc32
-rw-r--r--gnu/usr.bin/gcc/gcc/config.in6
-rw-r--r--gnu/usr.bin/gcc/gcc/config/arm/arm.md25
-rw-r--r--gnu/usr.bin/gcc/gcc/config/pa/pa.c28
-rw-r--r--gnu/usr.bin/gcc/gcc/config/rs6000/sysv4.h17
-rw-r--r--gnu/usr.bin/gcc/gcc/config/sparc/sparc.h22
-rwxr-xr-xgnu/usr.bin/gcc/gcc/configure769
-rw-r--r--gnu/usr.bin/gcc/gcc/cp/Make-lang.in2
-rw-r--r--gnu/usr.bin/gcc/gcc/cp/call.c100
-rw-r--r--gnu/usr.bin/gcc/gcc/cp/typeck.c18
-rw-r--r--gnu/usr.bin/gcc/gcc/cse.c389
-rw-r--r--gnu/usr.bin/gcc/gcc/explow.c17
-rw-r--r--gnu/usr.bin/gcc/gcc/expr.c74
-rw-r--r--gnu/usr.bin/gcc/gcc/f/README7
-rwxr-xr-xgnu/usr.bin/gcc/gcc/fixinc/mkfixinc.sh2
-rw-r--r--gnu/usr.bin/gcc/gcc/fold-const.c218
-rw-r--r--gnu/usr.bin/gcc/gcc/function.c36
-rw-r--r--gnu/usr.bin/gcc/gcc/gcc.c205
-rw-r--r--gnu/usr.bin/gcc/gcc/gcse.c48
-rw-r--r--gnu/usr.bin/gcc/gcc/libgcc-std.ver6
-rw-r--r--gnu/usr.bin/gcc/gcc/loop.c18
-rw-r--r--gnu/usr.bin/gcc/gcc/optabs.c44
-rw-r--r--gnu/usr.bin/gcc/gcc/reload1.c86
-rw-r--r--gnu/usr.bin/gcc/gcc/rtl.h7
-rw-r--r--gnu/usr.bin/gcc/gcc/toplev.c22
-rw-r--r--gnu/usr.bin/gcc/gcc/tree.h7
31 files changed, 1842 insertions, 5724 deletions
diff --git a/gnu/usr.bin/gcc/gcc/Makefile.in b/gnu/usr.bin/gcc/gcc/Makefile.in
index dbb8ecbf64b..f5f126303eb 100644
--- a/gnu/usr.bin/gcc/gcc/Makefile.in
+++ b/gnu/usr.bin/gcc/gcc/Makefile.in
@@ -263,7 +263,7 @@ PARTITION_H = $(LIBIBERTY_INCLUDES)/partition.h
# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
NATIVE_SYSTEM_HEADER_DIR = /usr/include
# Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
-CROSS_SYSTEM_HEADER_DIR = $(build_tooldir)/sys-include
+CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
# autoconf sets SYSTEM_HEADER_DIR to one of the above.
SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@
@@ -275,6 +275,10 @@ STMP_FIXINC = @STMP_FIXINC@
# Test to see whether <limits.h> exists in the system header files.
LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
+# Directory for prefix to system directories, for
+# each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc.
+TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
+
target=@target@
target_alias=@target_alias@
xmake_file=@dep_host_xmake_file@
@@ -1285,6 +1289,7 @@ DRIVER_DEFINES = \
-DDEFAULT_TARGET_MACHINE=\"$(target_alias)\" \
-DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \
-DTOOLDIR_BASE_PREFIX=\"$(unlibsubdir)/../\" \
+ @TARGET_SYSTEM_ROOT_DEFINE@ \
$(VALGRIND_DRIVER_DEFINES) \
`test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
`test "X$${SHLIB_MULTILIB}" = "X" || echo "-DNO_SHARED_LIBGCC_MULTILIB"`
@@ -1511,7 +1516,7 @@ cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \
output.h function.h cselib.h $(GGC_H) $(TM_P_H) gt-cselib.h
cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h function.h \
- $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H)
+ $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) $(TARGET_H)
gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h \
flags.h real.h insn-config.h ggc.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \
function.h output.h toplev.h $(TM_P_H) $(PARAMS_H) except.h gt-gcse.h
@@ -1543,7 +1548,7 @@ profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
loop.o : loop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
insn-config.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) \
real.h $(PREDICT_H) $(BASIC_BLOCK_H) function.h \
- toplev.h varray.h except.h cselib.h $(OPTABS_H) $(TM_P_H)
+ toplev.h varray.h except.h cselib.h $(OPTABS_H) $(TM_P_H) $(GGC_H)
doloop.o : doloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
$(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) toplev.h
unroll.o : unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h function.h \
@@ -2199,8 +2204,9 @@ PREPROCESSOR_DEFINES = \
-DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_alias)\" \
-DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
-DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
- -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \
- -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\"
+ -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
+ -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
+ @TARGET_SYSTEM_ROOT_DEFINE@
LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \
cpphash.o cpperror.o cppinit.o cppdefault.o cppmain.o \
@@ -2360,12 +2366,23 @@ fixinc.sh: $(FIXINCSRCDIR)/mkfixinc.sh $(FIXINCSRCDIR)/fixincl.c \
$(FIXINCSRCDIR)/server.h $(FIXINCSRCDIR)/inclhack.def specs.ready
(MAKE="$(MAKE)"; srcdir=`cd $(srcdir)/fixinc && ${PWD_COMMAND}` ; \
CC="$(HOST_CC)"; CFLAGS="$(HOST_CFLAGS)"; LDFLAGS="$(HOST_LDFLAGS)"; \
- WARN_CFLAGS="$(WARN_CFLAGS)"; \
- export MAKE srcdir CC CFLAGS LDFLAGS WARN_CFLAGS; cd ./fixinc && \
+ WARN_CFLAGS="$(WARN_CFLAGS)"; LIBERTY=`pwd`/"$(BUILD_LIBIBERTY)"; \
+ export MAKE srcdir CC CFLAGS LDFLAGS WARN_CFLAGS LIBERTY; \
+ cd ./fixinc && \
$(SHELL) $${srcdir}/mkfixinc.sh $(build_canonical) $(target))
+.PHONY: install-gcc-tooldir
+install-gcc-tooldir:
+ $(SHELL) ${srcdir}/mkinstalldirs $(gcc_tooldir)
+
# Build fixed copies of system files.
stmp-fixinc: fixinc.sh gsyslimits.h
+ @if test ! -d ${SYSTEM_HEADER_DIR}; then \
+ echo The directory that should contain system headers does not exist: >&2 ; \
+ echo " ${SYSTEM_HEADER_DIR}" >&2 ; \
+ if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \
+ then sleep 1; else exit 1; fi; \
+ fi
rm -rf include; mkdir include
-chmod a+rx include
(TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \
@@ -2379,20 +2396,6 @@ stmp-fixinc: fixinc.sh gsyslimits.h
cp $(srcdir)/gsyslimits.h include/syslimits.h; \
fi; \
chmod a+r include/syslimits.h)
-# If $(SYSTEM_HEADER_DIR) is $(build_tooldir)/sys-include, and
-# that directory exists, then make sure that $(libsubdir) exists.
-# This is because cpp is compiled to find $(gcc_tooldir)/include via
-# $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir)
-# exists.
-# ??? Better would be to use -isystem $(build_tooldir)/sys-include,
-# but fixincludes does not take such arguments.
- if [ "$(SYSTEM_HEADER_DIR)" = "$(build_tooldir)/sys-include" ] \
- && [ -d $(build_tooldir)/sys-include ]; then \
- if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi; \
- if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib; fi; \
- if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \
- if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version) ; fi; \
- else true; fi
$(STAMP) stmp-fixinc
# Files related to the fixproto script.
@@ -2401,7 +2404,7 @@ stmp-fixinc: fixinc.sh gsyslimits.h
# libiberty.a.
deduced.h: $(GCC_PASSES) $(srcdir)/scan-types.sh stmp-int-hdrs
- if [ -d $(SYSTEM_HEADER_DIR) ]; \
+ if [ -d "$(SYSTEM_HEADER_DIR)" ]; \
then \
CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -isystem include -isystem ${SYSTEM_HEADER_DIR}"; \
export CC; \
@@ -2467,7 +2470,7 @@ stmp-fixproto: fixhdr.ready fixproto stmp-int-hdrs
FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"; export FIXPROTO_DEFINES; \
mkinstalldirs="$(SHELL) $(srcdir)/mkinstalldirs"; \
export mkinstalldirs; \
- if [ -d $(SYSTEM_HEADER_DIR) ] ; then \
+ if [ -d "$(SYSTEM_HEADER_DIR)" ]; then \
$(SHELL) ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR); \
if [ $$? -eq 0 ] ; then true ; else exit 1 ; fi ; \
else true; fi; \
@@ -3045,7 +3048,7 @@ install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir \
$(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
else :; fi
$(INSTALL_PROGRAM) mkheaders $(DESTDIR)$(itoolsdir)/mkheaders
- echo 'SYSTEM_HEADER_DIR="$(SYSTEM_HEADER_DIR)"' \
+ echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \
> $(DESTDIR)$(itoolsdir)/mkheaders.conf
echo 'OTHER_FIXINCLUDES_DIRS="$(OTHER_FIXINCLUDES_DIRS)"' \
>> $(DESTDIR)$(itoolsdir)/mkheaders.conf
@@ -3559,7 +3562,7 @@ stage1-start:
-if [ -f as$(exeext) ] ; then (cd stage1 && $(LN_S) ../as$(exeext) .) ; else true ; fi
-if [ -f ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
-if [ -f collect-ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
- -rm -f stage1/libgcc.a stage1/libgcc_eh.a
+ -rm -f stage1/libgcc.a stage1/libgcc_eh.a stage1/libgcc_s*$(SHLIB_EXT)
-cp libgcc.a stage1
-if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage1/libgcc.a; \
@@ -3568,6 +3571,7 @@ stage1-start:
if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage1/libgcc_eh.a; \
else true; fi; fi
+ -cp libgcc_s*$(SHLIB_EXT) stage1/
-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
cp stage1/$${f} . ; \
else true; \
@@ -3588,7 +3592,7 @@ stage2-start:
-if [ -f as$(exeext) ] ; then (cd stage2 && $(LN_S) ../as$(exeext) .) ; else true ; fi
-if [ -f ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
-if [ -f collect-ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
- -rm -f stage2/libgcc.a stage2/libgcc_eh.a
+ -rm -f stage2/libgcc.a stage2/libgcc_eh.a stage2/libgcc_s*$(SHLIB_EXT)
-cp libgcc.a stage2
-if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage2/libgcc.a; \
@@ -3597,6 +3601,7 @@ stage2-start:
if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage2/libgcc_eh.a; \
else true; fi; fi
+ -cp libgcc_s*$(SHLIB_EXT) stage2/
-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
cp stage2/$${f} . ; \
else true; \
@@ -3617,7 +3622,7 @@ stage3-start:
-if [ -f as$(exeext) ] ; then (cd stage3 && $(LN_S) ../as$(exeext) .) ; else true ; fi
-if [ -f ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
-if [ -f collect-ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
- -rm -f stage3/libgcc.a stage3/libgcc_eh.a
+ -rm -f stage3/libgcc.a stage3/libgcc_eh.a stage3/libgcc_s*$(SHLIB_EXT)
-cp libgcc.a stage3
-if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage3/libgcc.a; \
@@ -3626,6 +3631,7 @@ stage3-start:
if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage3/libgcc_eh.a; \
else true; fi; fi
+ -cp libgcc_s*$(SHLIB_EXT) stage3/
-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
cp stage3/$${f} . ; \
else true; \
@@ -3646,7 +3652,7 @@ stage4-start:
-if [ -f as$(exeext) ] ; then (cd stage4 && $(LN_S) ../as$(exeext) .) ; else true ; fi
-if [ -f ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
-if [ -f collect-ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
- -rm -f stage4/libgcc.a stage4/libgcc_eh.a
+ -rm -f stage4/libgcc.a stage4/libgcc_eh.a stage4/libgcc_s*$(SHLIB_EXT)
-cp libgcc.a stage4
-if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage4/libgcc.a; \
@@ -3655,6 +3661,7 @@ stage4-start:
if $(RANLIB_TEST_FOR_TARGET) ; then \
$(RANLIB_FOR_TARGET) stage4/libgcc_eh.a; \
else true; fi; fi
+ -cp libgcc_s*$(SHLIB_EXT) stage4/
-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
cp stage4/$${f} . ; \
else true; \
diff --git a/gnu/usr.bin/gcc/gcc/NEWS b/gnu/usr.bin/gcc/gcc/NEWS
deleted file mode 100644
index 5e51b81907f..00000000000
--- a/gnu/usr.bin/gcc/gcc/NEWS
+++ /dev/null
@@ -1,4882 +0,0 @@
-This file contains information about GCC releases which has been generated
-automatically from the online release notes. It covers releases of GCC
-(and the former EGCS project) since EGCS 1.0, on the line of development
-that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
-see ONEWS.
-
-======================================================================
-http://gcc.gnu.org/gcc-3.3/index.html
-
- GCC 3.3 Release Series
-
- October 16, 2003
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.3.2.
-
- GCC 3.3.2 includes numerous [2]new features, improvements, bug fixes,
- and other changes, thanks to an [3]amazing group of volunteers.
-
- [4]GCJ 3.3 status is tracked for a variety of targets and test
- packages.
-
-Release History
-
- GCC 3.3.2
- October 16, 2003 ([5]changes)
-
- GCC 3.3.1
- August 8, 2003 ([6]changes)
-
- GCC 3.3
- May 14, 2003 ([7]changes)
-
-References and Acknowledgements
-
- 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 [8]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes
- as well as test results to GCC. This [9]amazing group of volunteers is
- what makes GCC successful.
-
- For additional information about GCC please refer to the [10]GCC
- project web site or contact the [11]GCC development mailing list.
-
- To obtain GCC please use [12]our mirror sites, one of the [13]GNU
- mirror sites, or [14]our CVS server.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [15]gnu@gnu.org. There
- are also [16]other ways to contact the FSF.
-
- These pages are maintained by [17]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [18]GCC manuals. If that fails, the
- [19]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [20]gcc@gnu.org or
- [21]gcc@gcc.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 2003-10-16 [22]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.3/changes.html
- 3. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 4. http://gcc.gnu.org/gcc-3.3/gcj-status.html
- 5. http://gcc.gnu.org/gcc-3.3/changes.html
- 6. http://gcc.gnu.org/gcc-3.3/changes.html
- 7. http://gcc.gnu.org/gcc-3.3/changes.html
- 8. http://gcc.gnu.org/gcc-3.3/buildstat.html
- 9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 10. http://gcc.gnu.org/index.html
- 11. mailto:gcc@gcc.gnu.org
- 12. http://gcc.gnu.org/mirrors.html
- 13. http://www.gnu.org/order/ftp.html
- 14. http://gcc.gnu.org/cvs.html
- 15. mailto:gnu@gnu.org
- 16. http://www.gnu.org/home.html#ContactInfo
- 17. http://gcc.gnu.org/about.html
- 18. http://gcc.gnu.org/onlinedocs/
- 19. mailto:gcc-help@gcc.gnu.org
- 20. mailto:gcc@gnu.org
- 21. mailto:gcc@gcc.gnu.org
- 22. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.3/changes.html
-
- GCC 3.3 Release Series
- Changes, New Features, and Fixes
-
-Caveats
-
- * The preprocessor no longer accepts multi-line string literals.
- They were deprecated in 3.0, 3.1, and 3.2.
- * The preprocessor no longer supports the -A- switch when appearing
- alone. -A- followed by an assertion is still supported.
- * Support for all the systems [1]obsoleted in GCC 3.1 has been
- removed from GCC 3.3. See below for a [2]list of systems which are
- obsoleted in this release.
- * Checking for null format arguments has been decoupled from the
- rest of the format checking mechanism. Programs which use the
- format attribute may regain this functionality by using the new
- [3]nonnull function attribute. Note that all functions for which
- GCC has a built-in format attribute, an appropriate built-in
- nonnull attribute is also applied.
- * The DWARF (version 1) debugging format has been deprecated and
- will be removed in a future version of GCC. Version 2 of the DWARF
- debugging format will continue to be supported for the foreseeable
- future.
- * The C and Objective-C compilers no longer accept the "Naming
- Types" extension (typedef foo = bar); it was already unavailable
- in C++. Code which uses it will need to be changed to use the
- "typeof" extension instead: typedef typeof(bar) foo. (We have
- removed this extension without a period of deprecation because it
- has caused the compiler to crash since version 3.0 and no one
- noticed until very recently. Thus we conclude it is not in
- widespread use.)
- * The -traditional C compiler option has been removed. It was
- deprecated in 3.1 and 3.2. (Traditional preprocessing remains
- available.) The <varargs.h> header, used for writing variadic
- functions in traditional C, still exists but will produce an error
- message if used.
- * GCC 3.3.1 automatically places zero-initialized variables in the
- .bss section on some operating systems. Versions of GNU Emacs up
- to (and including) 21.3 will not work correctly when using this
- optimization; you can use -fno-zero-initialized-in-bss to disable
- it.
-
-General Optimizer Improvements
-
- * A new scheme for accurately describing processor pipelines, the
- [4]DFA scheduler, has been added.
- * Pavel Nejedly, Charles University Prague, has contributed new file
- format used by the edge coverage profiler (-fprofile-arcs).
- The new format is robust and diagnoses common mistakes where
- profiles from different versions (or compilations) of the program
- are combined resulting in nonsensical profiles and slow code to
- produced with profile feedback. Additionally this format allows
- extra data to be gathered. Currently, overall statistics are
- produced helping optimizers to identify hot spots of a program
- globally replacing the old intra-procedural scheme and resulting
- in better code. Note that the gcov tool from older GCC versions
- will not be able to parse the profiles generated by GCC 3.3 and
- vice versa.
- * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
- pass enabled using -ftracer. This pass simplifies the control flow
- of functions allowing other optimizations to do better job.
- He also contributed the function reordering pass
- (-freorder-functions) to optimize function placement using profile
- feedback.
-
-New Languages and Language specific improvements
-
- C/ObjC/C++
-
- * The preprocessor now accepts directives within macro arguments. It
- processes them just as if they had not been within macro
- arguments.
- * The separate ISO and traditional preprocessors have been
- completely removed. The front-end handles either type of
- preprocessed output if necessary.
- * In C99 mode preprocessor arithmetic is done in the precision of
- the target's intmax_t, as required by that standard.
- * The preprocessor can now copy comments inside macros to the output
- file when the macro is expanded. This feature, enabled using the
- -CC option, is intended for use by applications which place
- metadata or directives inside comments, such as lint.
- * The method of constructing the list of directories to be searched
- for header files has been revised. If a directory named by a -I
- option is a standard system include directory, the option is
- ignored to ensure that the default search order for system
- directories and the special treatment of system header files are
- not defeated.
- * A few more [5]ISO C99 features now work correctly.
- * A new function attribute, nonnull, has been added which allows
- pointer arguments to functions to be specified as requiring a
- non-null value. The compiler currently uses this information to
- issue a warning when it detects a null value passed in such an
- argument slot.
- * A new type attribute, may_alias, has been added. Accesses to
- objects with types with this attribute are not subjected to
- type-based alias analysis, but are instead assumed to be able to
- alias any other type of objects, just like the char type.
-
- C++
-
- * Type based alias analysis has been implemented for C++ aggregate
- types.
-
- Objective-C
-
- * Generate an error if Objective-C objects are passed by value in
- function and method calls.
- * When -Wselector is used, check the whole list of selectors at the
- end of compilation, and emit a warning if a @selector() is not
- known.
- * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
- * No longer need to include objc/objc-class.h to compile self calls
- in class methods (NeXT runtime only).
- * New -Wundeclared-selector option.
- * Removed selector bloating which was causing object files to be 10%
- bigger on average (GNU runtime only).
- * Using at run time @protocol() objects has been fixed in certain
- situations (GNU runtime only).
- * Type checking has been fixed and improved in many situations
- involving protocols.
-
- Java
-
- * The java.sql and javax.sql packages now implement the JDBC 3.0
- (JDK 1.4) API.
- * The JDK 1.4 assert facility has been implemented.
- * The bytecode interpreter is now direct threaded and thus faster.
-
- Fortran
-
- * Fortran improvements are listed in [6]the Fortran documentation.
-
- Ada
-
- * Ada tasking now works with glibc 2.3.x threading libraries.
-
-New Targets and Target Specific Improvements
-
- * The following changes have been made to the HP-PA port:
- + The port now defaults to scheduling for the PA8000 series of
- processors.
- + Scheduling support for the PA7300 processor has been added.
- + The 32-bit port now supports weak symbols under HP-UX 11.
- + The handling of initializers and finalizers has been improved
- under HP-UX 11. The 64-bit port no longer uses collect2.
- + Dwarf2 EH support has been added to the 32-bit linux port.
- + ABI fixes to correct the passing of small structures by
- value.
- * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted
- to use the DFA processor pipeline description.
- * The following NetBSD configurations for the SuperH processor
- family have been added:
- + SH3, big-endian, sh-*-netbsdelf*
- + SH3, little-endian, shle-*-netbsdelf*
- + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
- + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
- + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
- + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
- * The following changes have been made to the IA-32/x86-64 port:
- + SSE2 and 3dNOW! intrinsics are now supported.
- + Support for thread local storage has been added to the IA-32
- and x86-64 ports.
- + The x86-64 port has been significantly improved.
- * The following changes have been made to the MIPS port:
- + All configurations now accept the -mabi switch. Note that you
- will need appropriate multilibs for this option to work
- properly.
- + ELF configurations will always pass an ABI flag to the
- assembler, except when the MIPS EABI is selected.
- + -mabi=64 no longer selects MIPS IV code.
- + The -mcpu option, which was deprecated in 3.1 and 3.2, has
- been removed from this release.
- + -march now changes the core ISA level. In previous releases,
- it would change the use of processor-specific extensions, but
- would leave the core ISA unchanged. For example, mips64-elf
- -march=r8000 will now generate MIPS IV code.
- + Under most configurations, -mipsN now acts as a synonym for
- -march.
- + There are some new preprocessor macros to describe the -march
- and -mtune settings. See the documentation of those options
- for details.
- + Support for the NEC VR-Series processors has been added. This
- includes the 54xx, 5500, and 41xx series.
- + Support for the Sandcraft sr71k processor has been added.
- * The following changes have been made to the S/390 port:
- + Support to build the Java runtime libraries has been added.
- Java is now enabled by default on s390-*-linux* and
- s390x-*-linux* targets.
- + Multilib support for the s390x-*-linux* target has been
- added; this allows to build 31-bit binaries using the -m31
- option.
- + Support for thread local storage has been added.
- + Inline assembler code may now use the 'Q' constraint to
- specify memory operands without index register.
- + Various platform-specific performance improvements have been
- implemented; in particular, the compiler now uses the BRANCH
- ON COUNT family of instructions and makes more frequent use
- of the TEST UNDER MASK family of instructions.
- * The following changes have been made to the PowerPC port:
- + Support for IBM Power4 processor added.
- + Support for Motorola e500 SPE added.
- + Support for AIX 5.2 added.
- + Function and Data sections now supported on AIX.
- + Sibcall optimizations added.
- * The support for H8 Tiny is added to the H8/300 port with -mn.
-
-Obsolete Systems
-
- Support for a number of older systems has been declared obsolete in
- GCC 3.3. Unless there is activity to revive them, the next release of
- GCC will have their sources permanently removed.
-
- All configurations of the following processor architectures have been
- declared obsolete:
- * Matsushita MN10200, mn10200-*-*
- * Motorola 88000, m88k-*-*
- * IBM ROMP, romp-*-*
-
- Also, some individual systems have been obsoleted:
- * Alpha
- + Interix, alpha*-*-interix*
- + Linux libc1, alpha*-*-linux*libc1*
- + Linux ECOFF, alpha*-*-linux*ecoff*
- * ARM
- + Generic a.out, arm*-*-aout*
- + Conix, arm*-*-conix*
- + "Old ABI," arm*-*-oabi
- + StrongARM/COFF, strongarm-*-coff*
- * HPPA (PA-RISC)
- + Generic OSF, hppa1.0-*-osf*
- + Generic BSD, hppa1.0-*-bsd*
- + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
- + HiUX, hppa*-*-hiux*
- + Mach Lites, hppa*-*-lites*
- * Intel 386 family
- + Windows NT 3.x, i?86-*-win32
- * MC68000 family
- + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
- + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
- m68k-sun-mach*
- + AT&T systems, m68000-att-sysv*
- + Atari systems, m68k-atari-sysv*
- + Motorola systems, m68k-motorola-sysv*
- + NCR systems, m68k-ncr-sysv*
- + Plexus systems, m68k-plexus-sysv*
- + Commodore systems, m68k-cbm-sysv*
- + Citicorp TTI, m68k-tti-*
- + Unos, m68k-crds-unos*
- + Concurrent RTU, m68k-ccur-rtu*
- + Linux a.out, m68k-*-linux*aout*
- + Linux libc1, m68k-*-linux*libc1*
- + pSOS, m68k-*-psos*
- * MIPS
- + Generic ECOFF, mips*-*-ecoff*
- + SINIX, mips-sni-sysv4
- + Orion RTEMS, mips64orion-*-rtems*
- * National Semiconductor 32000
- + OpenBSD, ns32k-*-openbsd*
- * POWER (aka RS/6000) and PowerPC
- + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
- + Bull BOSX, rs6000-bull-bosx
- + Generic Mach, rs6000-*-mach*
- + Generic SysV, powerpc*-*-sysv*
- + Linux libc1, powerpc*-*-linux*libc1*
- * Sun SPARC
- + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
- sparclite-*-aout*, and sparc86x-*-aout*
- + NetBSD a.out, sparc-*-netbsd*aout*
- + Generic BSD, sparc-*-bsd*
- + ChorusOS, sparc-*-chorusos*
- + Linux a.out, sparc-*-linux*aout*
- + Linux libc1, sparc-*-linux*libc1*
- + LynxOS, sparc-*-lynxos*
- + Solaris on HAL hardware, sparc-hal-solaris2*
- + SunOS versions 3 and 4, sparc-*-sunos[34]*
- * NEC V850
- + RTEMS, v850-*-rtems*
- * VAX
- + VMS, vax-*-vms*
-
-Documentation improvements
-
-Other significant improvements
-
- * Almost all front-end dependencies in the compiler have been
- separated out into a set of language hooks. This should make
- adding a new front end clearer and easier.
- * One effect of removing the separate preprocessor is a small
- increase in the robustness of the compiler in general, and the
- maintainability of target descriptions. Previously target-specific
- built-in macros and others, such as __FAST_MATH__, had to be
- handled with so-called specs that were hard to maintain. Often
- they would fail to behave properly when conflicting options were
- supplied on the command line, and define macros in the user's
- namespace even when strict ISO compliance was requested.
- Integrating the preprocessor has cleanly solved these issues.
- * The Makefile suite now supports redirection of make install by
- means of the variable DESTDIR.
- _________________________________________________________________
-
-GCC 3.3
-
- Detailed release notes for the GCC 3.3 release follow.
-
- Bug Fixes
-
- bootstrap failures
-
- * [7]10140 cross compiler build failures: missing __mempcpy (DUP:
- [8]10198,[9]10338)
-
- Internal compiler errors (multi-platform)
-
- * [10]3581 large string causes segmentation fault in cc1
- * [11]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
- * [12]5533 (c++) ICE when processing std::accumulate(begin, end,
- init, invalid_op)
- * [13]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
- * [14]6412 (c++) ICE in retrieve_specialization
- * [15]6620 (c++) partial template specialization causes an ICE
- (segmentation fault)
- * [16]6663 (c++) ICE with attribute aligned
- * [17]7068 ICE with incomplete types
- * [18]7083 (c++) ICE using -gstabs with dodgy class derivation
- * [19]7647 (c++) ICE when data member has the name of the enclosing
- class
- * [20]7675 ICE in fixup_var_refs_1
- * [21]7718 'complex' template instantiation causes ICE
- * [22]8116 (c++) ICE in member template function
- * [23]8358 (ada) Ada compiler accesses freed memory, crashes
- * [24]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
- fault
- * [25]8564 (c++) ICE in find_function_data, in function.c
- * [26]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
- * [27]8766 (c++) ICE after failed initialization of static template
- variable
- * [28]8803 ICE in instantiate_virtual_regs_1, in function.c
- * [29]8846 (c++) ICE after diagnostic if fr_FR@euro locale is set
- * [30]8906 (c++) ICE (Segmentation fault) when parsing nested-class
- definition
- * [31]9216 (c++) ICE on missing template parameter
- * [32]9261 (c++) ICE in arg_assoc, in cp/decl2.c
- * [33]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
- loop
- * [34]9429 (c++) ICE in template instantiation with a pointered new
- operator
- * [35]9516 Internal error when using a big array
- * [36]9600 (c++) ICE with typedefs in template class
- * [37]9629 (c++) virtual inheritance segfault
- * [38]9672 (c++) ICE: Error reporting routines re-entered
- * [39]9749 (c++) ICE in write_expression on invalid function
- prototype
- * [40]9794 (fortran) ICE: floating point exception during constant
- folding
- * [41]9829 (c++) Missing colon in nested namespace usage causes ICE
- * [42]9916 (c++) ICE with noreturn function in ?: statement
- * [43]9936 ICE with local function and variable-length 2d array
- * [44]10262 (c++) cc1plus crashes with large generated code
- * [45]10278 (c++) ICE in parser for invalid code
- * [46]10446 (c++) ICE on definition of nonexistent member function
- of nested class in a class template
- * [47]10451 (c++) ICE in grokdeclarator on spurious mutable
- declaration
- * [48]10506 (c++) ICE in build_new at cp/init.c with
- -fkeep-inline-functions and multiple inheritance
- * [49]10549 (c++) ICE in store_bit_field on bitfields that exceed
- the precision of the declared type
-
- Optimization bugs
-
- * [50]2001 Inordinately long compile times in reload CSE regs
- * [51]2391 Exponential compilation time explosion in combine
- * [52]2960 Duplicate loop conditions even with -Os
- * [53]4046 redundant conditional branch
- * [54]6405 Loop-unrolling related performance regressions
- * [55]6798 very long compile time with large case-statement
- * [56]6871 const objects shouldn't be moved to .bss
- * [57]6909 problem w/ -Os on modified loop-2c.c test case
- * [58]7189 gcc -O2 -Wall does not print ``control reaches end of
- non-void function'' warning
- * [59]7642 optimization problem with signbit()
- * [60]8634 incorrect code for inlining of memcpy under -O2
- * [61]8750 Cygwin prolog generation erroneously emitting __alloca as
- regular function call
-
- c front end
-
- * [62]2161 long if-else cascade overflows parser stack
- * [63]4319 short accepted on typedef'd char
- * [64]8602 incorrect line numbers in warning messages when using
- inline functions
- * [65]9177 -fdump-translation-unit: C front end deletes
- function_decl AST nodes and breaks debugging dumps
- * [66]9853 miscompilation of non-constant structure initializer
-
- c++ compiler and library
-
- * [67]45 legal template specialization code is rejected (DUP:
- [68]3784)
- * [69]764 lookup failure: friend operator and dereferencing a
- pointer and templates (DUP: [70]5116)
- * [71]2862 gcc accepts invalid explicit instantiation syntax (DUP:
- 2863)
- * [72]3663 G++ doesn't check access control during template
- instantiation
- * [73]3797 gcc fails to emit explicit specialization of a template
- member
- * [74]3948 Two destructors are called when no copy destructor is
- defined (ABI change)
- * [75]4137 Conversion operator within template is not accepted
- * [76]4361 bogus ambiguity taking the address of a member template
- * [77]4802 g++ accepts illegal template code (access to private
- member; DUP: [78]5837)
- * [79]4803 inline function is used but never defined, and g++ does
- not object
- * [80]5094 Partial specialization cannot be friend?
- * [81]5730 complex<double>::norm() -- huge slowdown from
- egcs-2.91.66
- * [82]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
- time
- * [83]7015 certain __asm__ constructs rejected
- * [84]7086 compile time regression (quadratic behavior in
- fixup_var_refs)
- * [85]7099 G++ doesn't set the noreturn attribute on std::exit and
- std::abort
- * [86]7247 copy constructor missing when inlining enabled (invalid
- optimization?)
- * [87]7441 string array initialization compilation time regression
- from seconds to minutes
- * [88]7768 __PRETTY_FUNCTION__ for template destructor is wrong
- * [89]7804 bad printing of floating point constant in warning
- message
- * [90]8099 Friend classes and template specializations
- * [91]8117 member function pointers and multiple inheritance
- * [92]8205 using declaration and multiple inheritance
- * [93]8645 unnecessary non-zero checks in stl_tree.h
- * [94]8724 explicit destructor call for incomplete class allowed
- * [95]8805 compile time regression with many member variables
- * [96]8691 -O3 and -fno-implicit-templates are incompatible
- * [97]8700 unhelpful error message for binding temp to reference
- * [98]8724 explicit destructor call for incomplete class allowed
- * [99]8949 numeric_limits<>::denorm_min() and is_iec559 problems
- * [100]9016 Failure to consistently constant fold "constant" C++
- objects
- * [101]9053 g++ confused about ambiguity of overloaded function
- templates
- * [102]9152 undefined virtual thunks
- * [103]9182 basic_filebuf<> does not report errors in codecvt<>::out
- * [104]9297 data corruption due to codegen bug (when copying.)
- * [105]9318 i/ostream::operator>>/<<(streambuf*) broken
- * [106]9320 Incorrect usage of traits_type::int_type in
- stdio_filebuf
- * [107]9400 bogus -Wshadow warning: shadowed declaration of this in
- local classes
- * [108]9424 i/ostream::operator>>/<<(streambuf*) drops characters
- * [109]9425 filebuf::pbackfail broken (DUP: [110]9439)
- * [111]9474 GCC freezes in compiling a weird code mixing <iostream>
- and <iostream.h>
- * [112]9548 Incorrect results from setf(ios::fixed) and
- precision(-1) [DR231]
- * [113]9555 ostream inserters fail to set badbit on exception
- * [114]9561 ostream inserters rethrow exception of wrong type
- * [115]9563 ostream::sentry returns true after a failed preparation
- * [116]9582 one-definition rule violation in std::allocator
- * [117]9622 __PRETTY_FUNCTION__ incorrect in template destructors
- * [118]9683 bug in initialization chains for static const variables
- from template classes
- * [119]9791 -Woverloaded-virtual reports hiding of destructor
- * [120]9817 collate::compare doesn't handle nul characters
- * [121]9825 filebuf::sputbackc breaks sbumpc
- * [122]9826 operator>>(basic_istream, basic_string) fails to compile
- with custom traits
- * [123]9924 Multiple using statements for builtin functions not
- allowed
- * [124]9946 destructor is not called for temporary object
- * [125]9964 filebuf::close() sometimes fails to close file
- * [126]9988 filebuf::overflow writes EOF to file
- * [127]10033 optimization breaks polymorphic references w/ typeid
- operator
- * [128]10097 filebuf::underflow drops characters
- * [129]10132 filebuf destructor can throw exceptions
- * [130]10180 gcc fails to warn about non-inlined function
- * [131]10199 method parametrized by template does not work
- everywhere
- * [132]10300 use of array-new (nothrow) in segfaults on NULL return
- * [133]10427 Stack corruption with variable-length automatic arrays
- and virtual destructors
- * [134]10503 Compilation never stops in fixed_type_or_null
-
- Objective-C
-
- * [135]5956 selectors aren't matched properly when added to the
- selector table
-
- Fortran compiler and library
-
- * [136]1832 list directed i/o overflow hangs, -fbounds-check doesn't
- detect
- * [137]3924 g77 generates code that is rejected by GAS if COFF debug
- info requested
- * [138]5634 doc: explain that configure --prefix=~/... does not work
- * [139]6367 multiple repeat counts confuse namelist read into array
- * [140]6491 Logical operations error on logicals when using
- -fugly-logint
- * [141]6742 Generation of C++ Prototype for FORTRAN and extern "C"
- * [142]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
- on irix6.5
- * [143]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
- assume a direct access file
- * [144]7278 g77 "bug"; the executable misbehaves (with -O2
- -fno-automatic)
- * [145]7384 DATE_AND_TIME milliseconds field inactive on Windows
- * [146]7388 Incorrect output with 0-based array of characters
- * [147]8587 Double complex zero ** double precision number -> NaN
- instead of zero
- * [148]9038 -ffixed-line-length-none -x f77-cpp-input gives:
- Warning: unknown register name line-length-none
- * [149]10197 Direct access files not unformatted by default
-
- Java compiler and library
-
- * [150]6005 gcj fails to build rhug on alpha
- * [151]6389 System.getProperty("") should always throw an
- IllegalArgumentException
- * [152]6576 java.util.ResourceBundle.getResource ignores locale
- * [153]6652 new java.io.File("").getCanonicalFile() throws exception
- * [154]7060 getMethod() doesn't search super interface
- * [155]7073 bytecode interpreter gives wrong answer for interface
- getSuperclass()
- * [156]7180 possible bug in
- javax.naming.spi.NamingManager.getPlusPath()
- * [157]7416 java.security startup refs "GNU libgcj.security"
- * [158]7570 Runtime.exec with null envp: child doesn't inherit
- parent env (DUP: [159]7578)
- * [160]7611 Internal error while compiling libjava with -O
- * [161]7709 NullPointerException in _Jv_ResolvePoolEntry
- * [162]7766 ZipInputStream.available returns 0 immediately after
- construction
- * [163]7785 Calendar.getTimeInMillis/setTimeInMillis should be
- public
- * [164]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
- * [165]8142 '$' in class names vs. dlopen 'dynamic string tokens'
- * [166]8234 ZipInputStream chokes when InputStream.read() returns
- small chunks
- * [167]8415 reflection bug: exception info for Method
- * [168]8481 java.Random.nextInt(int) may return negative
- * [169]8593 Error reading GZIPped files with BufferedReader
- * [170]8759 java.beans.Introspector has no flushCaches() or
- flushFromCaches() methods
- * [171]8997 spin() calls Thread.sleep
- * [172]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
- instead of the root content of C:
- * [173]9254 java::lang::Object::wait(), threads-win32.cc returns
- wrong return codes
- * [174]9271 Severe bias in java.security.SecureRandom
-
- Ada compiler and library
-
- * [175]6767 make gnatlib-shared fails on -laddr2line
- * [176]9911 gnatmake fails to link when GCC configured with
- --with-sjlj-exceptions=yes
- * [177]10020 Can't bootstrap gcc on AIX with Ada enabled
- * [178]10546 Ada tasking not working on Red Hat 9
-
- preprocessor
-
- * [179]7029 preprocessor should ignore #warning with -M
-
- ARM-specific
-
- * [180]2903 [arm] Optimization bug with long long arithmetic
- * [181]7873 arm-linux-gcc fails when assigning address to a bit
- field
-
- FreeBSD-specific
-
- * [182]7680 float functions undefined in math.h/cmath with #define
- _XOPEN_SOURCE
-
- HP-UX or HP-PA-specific
-
- * [183]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
- * [184]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
- fputc_unlocked
- * [185]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
-
- m68hc11-specific
-
- * [186]6744 Bad assembler code generated: reference to pseudo
- register z
- * [187]7361 Internal compiler error in reload_cse_simplify_operands,
- in reload1.c
-
- MIPS-specific
-
- * [188]9496 [mips-linux] bug in optimizer?
-
- PowerPC-specific
-
- * [189]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead
- of space
- * [190]8480 reload ICEs for LAPACK code on powerpc64-linux
- * [191]8784 [AIX] Internal compiler error in simplify_gen_subreg
- * [192]10315 [powerpc] ICE: in extract_insn, in recog.c
-
- SPARC-specific
-
- * [193]10267 (documentation) Wrong build instructions for
- *-*-solaris2*
-
- x86-specific (Intel/AMD)
-
- * [194]7916 ICE in instantiate_virtual_register_1
- * [195]7926 (c++) i486 instructions in header files make c++
- programs crash on i386
- * [196]8555 ICE in gen_split_1231
- * [197]8994 ICE with -O -march=pentium4
- * [198]9426 ICE with -fssa -funroll-loops -fprofile-arcs
- * [199]9806 ICE in inline assembly with -fPIC flag
- * [200]10077 gcc -msse2 generates movd to move dwords between xmm
- regs
- * [201]10233 64-bit comparison only comparing bottom 32-bits
- * [202]10286 type-punning doesn't work with __m64 and -O
- * [203]10308 [x86] ICE with -O -fgcse or -O2
- _________________________________________________________________
-
-GCC 3.3.1
-
- Bug Fixes
-
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.3.1 release. This list
- might not be complete (that is, it is possible that some PRs that have
- been fixed are not listed here).
-
- Bootstrap failures
-
- * [204]11272 [Solaris] make bootstrap fails while building libstdc++
-
- Internal compiler errors (multi-platform)
-
- * [205]5754 ICE on invalid nested template class
- * [206]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
- and --enable-checking
- * [207]6949 (c++) ICE in tsubst_decl, in cp/pt.c
- * [208]7053 (c++) ICE when declaring a function already defined as a
- friend method of a template class
- * [209]8164 (c++) ICE when using different const expressions as
- template parameter
- * [210]8384 (c++) ICE in is_base_type, in dwarf2out.c
- * [211]9559 (c++) ICE with invalid initialization of a static const
- * [212]9649 (c++) ICE in finish_member_declaration, in
- cp/semantics.c when redeclaring a static member variable
- * [213]9864 (fortran) ICE in add_abstract_origin_attribute, in
- dwarfout.c with -g -O -finline-functions
- * [214]10432 (c++) ICE in poplevel, in cp/decl.c
- * [215]10475 ICE in subreg_highpart_offset for code with long long
- * [216]10635 (c++) ICE when dereferencing an incomplete type casted
- from a void pointer
- * [217]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
- instantiating static member variables
- * [218]10700 ICE in copy_to_mode_reg on 64-bit targets
- * [219]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
- * [220]10796 (c++) ICE when defining an enum with two values: -1 and
- MAX_INT_64BIT
- * [221]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
- sched.c
- * [222]10939 (c++) ICE with template code
- * [223]10956 (c++) ICE when specializing a template member function
- of a template class, in tsubst, in cp/pt.c
- * [224]11041 (c++) ICE: const myclass &x = *x; (when operator*()
- defined)
- * [225]11059 (c++) ICE with empty union
- * [226]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c
- with -O2 -fnon-call-exceptions
- * [227]11105 (c++) ICE in mangle_conv_op_name_for_type
- * [228]11149 (c++) ICE on error when instantiation with call
- function of a base type
- * [229]11228 (c++) ICE on new-expression using array operator new
- and default-initialization
- * [230]11282 (c++) Infinite memory usage after syntax error
- * [231]11301 (fortran) ICE with -fno-globals
- * [232]11308 (c++) ICE when using an enum type name as if it were a
- class or namespace
- * [233]11473 (c++) ICE with -gstabs when empty struct inherits from
- an empty struct
- * [234]11503 (c++) ICE when instantiating template with ADDR_EXPR
- * [235]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
- template member functions
-
- Optimization bugs
-
- * [236]11198 -O2 -frename-registers generates wrong code (aliasing
- problem)
- * [237]11304 Wrong code production with -fomit-frame-pointer
- * [238]11381 volatile memory access optimized away
- * [239]11536 [strength-reduce] -O2 optimization produces wrong code
- * [240]11557 constant folding bug generates wrong code
-
- C front end
-
- * [241]5897 No warning for statement after return
- * [242]11279 DWARF-2 output mishandles large enums
-
- Preprocessor bugs
-
- * [243]11022 no warning for non-compatible macro redefinition
-
- C++ compiler and library
-
- * [244]2330 static_cast<>() to a private base is allowed
- * [245]5388 Incorrect message "operands to ?: have different types"
- * [246]5390 Libiberty fails to demangle multi-digit template
- parameters
- * [247]7877 Incorrect parameter passing to specializations of member
- function templates
- * [248]9393 Anonymous namespaces and compiling the same file twice
- * [249]10032 -pedantic converts some errors to warnings
- * [250]10468 const typeof(x) is non-const, but only in templates
- * [251]10527 confused error message with "new int()" parameter
- initializer
- * [252]10679 parameter MIN_INLINE_INSNS is not honored
- * [253]10682 gcc chokes on a typedef for an enum inside a class
- template
- * [254]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
- 0.
- * [255]10845 template member function (with nested template as
- parameter) cannot be called anymore if another unrelated template
- member function is defined
- * [256]10849 Cannot define an out-of-class specialization of a
- private nested template class
- * [257]10888 Suppress -Winline warnings for system headers
- * [258]10929 -Winline warns about functions for which no definition
- is visible
- * [259]10931 valid conversion static_cast<const unsigned
- int&>(lvalue-of-type-int) is rejected
- * [260]10940 Bad code with explicit specialization
- * [261]10968 If member function implicitly instantiated, explicit
- instantiation of class fails to instantiate it
- * [262]10990 Cannot convert with dynamic_cast<> to a private base
- class from within a member function
- * [263]11039 Bad interaction between implicit typename deprecation
- and friendship
- * [264]11062 (libstdc++) avoid __attribute__ ((unused)); say
- "__unused__" instead
- * [265]11095 C++ iostream manipulator causes segfault when called
- with negative argument
- * [266]11098 g++ doesn't emit complete debugging information for
- local variables in destructors
- * [267]11137 Linux shared library constructors not called unless
- there's one global object
- * [268]11154 spurious ambiguity report for template class
- specialization
- * [269]11329 Compiler cannot find user defined implicit typecast
- * [270]11332 Spurious error with casts in ?: expression
- * [271]11431 static_cast behavior with subclasses when default
- constructor available
- * [272]11528 money_get facet does not accept "$.00" as valid
- * [273]11546 Type lookup problems in out-of-line definition of a
- class doubly nested from a template class
- * [274]11567 C++ code containing templated member function with same
- name as pure virtual member function results in linking failure
- * [275]11645 Failure to deal with using and private inheritance
-
- Java compiler and library
-
- * [276]5179 Qualified static field access doesn't initialize its
- class
- * [277]8204 gcj -O2 to native reorders certain instructions
- improperly
- * [278]10838 java.io.ObjectInputStream syntax error
- * [279]10886 The RMI registry that comes with GCJ does not work
- correctly
- * [280]11349 JNDI URL context factories not located correctly
-
- x86-specific (Intel/AMD)
-
- * [281]4823 ICE on inline assembly code
- * [282]8878 miscompilation with -O and SSE
- * [283]9815 (c++ library) atomicity.h - fails to compile with -O3
- -masm=intel
- * [284]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
- in reload1.c
- * [285]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
- * [286]10673 ICE for x86-64 on freebsd libc vfprintf.c source
- * [287]11044 [x86] out of range loop instructions for FP code on K6
- * [288]11089 ICE: instantiate_virtual_regs_lossage while using SSE
- built-ins
- * [289]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
- is used
-
- SPARC- or Solaris- specific
-
- * [290]9362 solaris 'as' dies when fed .s and "-gstabs"
- * [291]10142 [SPARC64] gcc produces wrong code when passing
- structures by value
- * [292]10663 New configure check aborts with Sun tools.
- * [293]10835 combinatorial explosion in scheduler on HyperSPARC
- * [294]10876 ICE in calculate_giv_inc when building KDE
- * [295]10955 wrong code at -O3 for structure argument in context of
- structure return
- * [296]11018 -mcpu=ultrasparc busts tar-1.13.25
- * [297]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
- Linux kernel
-
- ia64 specific
-
- * [298]10907 gcc violates the ia64 ABI (GP must be preserved)
- * [299]11320 scheduler bug (in machine depended reorganization pass)
- * [300]11599 bug with conditional and __builtin_prefetch
-
- PowerPC specific
-
- * [301]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
- during loop)
- * [302]10871 error in rs6000_stack_info save_size computation
- * [303]11440 gcc mis-compiles c++ code (libkhtml) with -O2,
- -fno-gcse cures it
-
- m68k-specific
-
- * [304]7594 [m68k] ICE on legal code associated with simplify-rtx
- * [305]10557 [m68k] ICE in subreg_offset_representable_p
- * [306]11054 [m68k] ICE in reg_overlap_mentioned_p
-
- ARM-specific
-
- * [307]10834 [arm] GCC 3.3 still generates incorrect instructions
- for functions with __attribute__ ((interrupt ("IRQ")))
- * [308]10842 [arm] Clobbered link register is copied to pc under
- certain circumstances
- * [309]11052 [arm] noce_process_if_block() can lose REG_INC notes
- * [310]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
- (3.4)
-
- MIPS-specific
-
- * [311]11084 ICE in propagate_one_insn, in flow.c
-
- SH-specific
-
- * [312]10331 can't compile c++ part of gcc cross compiler for sh-elf
- * [313]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
- * [314]11096 i686-linux to sh-linux cross compiler fails to compile
- C++ files
-
- GNU/Linux (or Hurd?) specific
-
- * [315]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
-
- UnixWare specific
-
- * [316]3163 configure bug: gcc/aclocal.m4 mmap test fails on
- UnixWare 7.1.1
-
- Cygwin (or mingw) specific
-
- * [317]5287 ICE with dllimport attribute
- * [318]10148 [MingW/CygWin] Compiler dumps core
-
- DJGPP specific
-
- * [319]8787 GCC fails to emit .intel_syntax when invoked with
- -masm=intel on DJGPP
-
- Documentation
-
- * [320]1607 (c++) Format attributes on methods undocumented
- * [321]4252 Invalid option `-fdump-translation-unit'
- * [322]4490 Clarify restrictions on -m96bit-long-double,
- -m128bit-long-double
- * [323]10355 document an issue with regparm attribute on some
- systems (e.g. Solaris)
- * [324]10726 (fortran) Documentation for function "IDate Intrinsic
- (Unix)" is wrong
- * [325]10805 document bug in old version of Sun assembler
- * [326]10815 warn against GNU binutils on AIX
- * [327]10877 document need for newer binutils on i?86-*-linux-gnu
- * [328]11280 Manual incorrect with respect to -freorder-blocks
- * [329]11466 Document -mlittle-endian and its restrictions for the
- sparc64 port
-
- Testsuite bugs (compiler itself is not affected)
-
- * [330]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
- report failure
- * [331]10810 gcc-3.3 fails make check: buffer overrun in
- test_demangle.c
- _________________________________________________________________
-
-GCC 3.3.2
-
- Oct. 14, 2003: This section is preliminary, as 3.3.2 has not yet been
- officially released.
-
- Bug Fixes
-
- This section lists the problem reports (PRs) from [332]GCC's bug
- tracking system that are known to be fixed in the 3.3.2 release. This
- list might not be complete (that is, it is possible that some PRs that
- have been fixed are not listed here).
-
- Bootstrap failures and problems
-
- * [333]8336 [SCO5] bootstrap config still tries to use COFF options
- * [334]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
- --enable-threads=posix
- * [335]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
- * [336]9877 fixincludes makes a bad sys/byteorder.h on svr5
- (UnixWare 7.1.1)
- * [337]11687 xstormy16-elf build fails in libf2c
- * [338]12263 [SGI IRIX] bootstrap fails during compile of
- libf2c/libI77/backspace.c
- * [339]12490 buffer overflow in scan-decls.c (during Solaris 9
- fix-header processing)
-
- Internal compiler errors (multi-platform)
-
- * [340]7277 Casting integers to vector types causes ICE
- * [341]11063 (c++) ICE on parsing initialization list of const array
- member
- * [342]11207 ICE with negative index in array element designator
- * [343]11522 (fortran) g77 dwarf-2 ICE in
- add_abstract_origin_attribute
- * [344]11595 (c++) ICE on duplicate label definition
- * [345]11646 (c++) ICE in commit_one_edge_insertion with
- -fnon-call-exceptions -fgcse -O
- * [346]11665 ICE in struct initializer when taking address
- * [347]11852 (c++) ICE with bad struct initializer.
- * [348]11878 (c++) ICE in cp_expr_size
- * [349]11883 ICE with any -O on mercury-generated C code
- * [350]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
- cp/typeck2.c when applying typeid operator to template template
- parameter
- * [351]12146 ICE in lookup_template_function, in cp/pt.c
- * [352]12215 ICE in make_label_edge with -fnon-call-exceptions
- -fno-gcse -O2
- * [353]12446 ICE in emit_move_insn on complicated array reference
- * [354]12510 ICE in final_scan_insn
- * [355]12544 ICE with large parameters used in nested functions
-
- C and optimization bugs
-
- * [356]9862 spurious warnings with -W -finline-functions
- * [357]10962 lookup_field is a linear search on a linked list (can
- be slow if large struct)
- * [358]11370 -Wunreachable-code gives false complaints
- * [359]11637 invalid assembly with -fnon-call-exceptions
- * [360]11885 Problem with bitfields in packed structs
- * [361]12082 Inappropriate unreachable code warnings
- * [362]12180 Inline optimization fails for variadic function
- * [363]12340 loop unroller + gcse produces wrong code
-
- C++ compiler and library
-
- * [364]3907 nested template parameter collides with member name
- * [365]5293 confusing message when binding a temporary to a
- reference
- * [366]5296 [DR115] Pointers to functions and to template functions
- behave differently in deduction
- * [367]7939 ICE on function template specialization
- * [368]8656 Unable to assign function with __attribute__ and pointer
- return type to an appropriate variable
- * [369]10147 Confusing error message for invalid template function
- argument
- * [370]11400 std::search_n() makes assumptions about Size parameter
- * [371]11409 issues with using declarations, overloading, and
- built-in functions
- * [372]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
- multiple bits in mask
- * [373]11786 operator() call on variable in other namespace not
- recognized
- * [374]11867 static_cast ignores ambiguity
- * [375]11928 bug with conversion operators that are typedefs
- * [376]12163 static_cast + explicit constructor regression
- * [377]12181 Wrong code with comma operator and c++
- * [378]12236 regparm and fastcall messes up parameters
- * [379]12266 incorrect instantiation of unneeded template during
- overload resolution
- * [380]12296 istream::peek() doesn't set eofbit
- * [381]12369 ICE ith templates and friends
- * [382]12337 apparently infinite loop in g++
- * [383]12344 stdcall attribute ignored if function returns a pointer
- * [384]12451 missing(late) class forward declaration in cxxabi.h
- * [385]12486 g++ accepts invalid use of a qualified name
-
- x86 specific (Intel/AMD)
-
- * [386]8869 [x86 MMX] ICE with const variable optimization and MMX
- builtins
- * [387]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
- -O2
- * [388]11689 g++3.3 emits un-assembleable code for k6 architecture
- * [389]12116 [k6] Invalid assembly output values with X-MAME code
- * [390]12070 ICE converting between double and long double with
- -msoft-float
-
- ia64-specific
-
- * [391]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
- * [392]11535 __builtin_return_address may not work on ia64
- * [393]11693 [ia64] ICE in gen_nop_type
- * [394]12224 [ia64] Thread-local storage doesn't work
-
- PowerPC-specific
-
- * [395]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
- kernel
- * [396]11319 loop miscompiled on ppc32
- * [397]11949 ICE Compiler segfault with ffmpeg -maltivec code
-
- SPARC-specific
-
- * [398]11662 wrong code for expr. with cast to long long and
- exclusive or
- * [399]11965 invalid assembler code for a shift << 32 operation
- * [400]12301 (c++) stack corruption when a returned expression
- throws an exception
-
- Alpha-specific
-
- * [401]11717 [alpha-linux] unrecognizable insn compiling for.c of
- kernel 2.4.22-pre8
-
- Darwin (and MacOS X) specific
-
- * [402]10900 trampolines crash
-
- HPUX-specific
-
- * [403]11313 problem with #pragma weak and static inline functions
- * [404]11712 __STDC_EXT__ not defined for C++ by default anymore?
-
- Solaris specific
-
- * [405]12166 Profiled programs crash if PROFDIR is set
-
- Solaris-x86 specific
-
- * [406]12101 i386 Solaris no longer works with GNU as?
-
- Miscellaneous embedded target-specific bugs
-
- * [407]10988 [m32r-elf] wrong blockmove code with -O3
- * [408]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
- -O2
- * [409]11902 [sh4] spec file improperly inserts rpath even when none
- needed
- * [410]11903 [sh4] -pthread fails to link due to error in spec file
- on sh4
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [411]gnu@gnu.org. There
- are also [412]other ways to contact the FSF.
-
- These pages are maintained by [413]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [414]GCC manuals. If that fails, the
- [415]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [416]gcc@gnu.org or
- [417]gcc@gcc.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 2003-10-16 [418]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
- 2. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
- 3. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
- 4. http://gcc.gnu.org/news/dfa.html
- 5. http://gcc.gnu.org/gcc-3.3/c99status.html
- 6. http://gcc.gnu.org/onlinedocs/g77/News.html
- 7. http://gcc.gnu.org/PR10140
- 8. http://gcc.gnu.org/PR10198
- 9. http://gcc.gnu.org/PR10338
- 10. http://gcc.gnu.org/PR3581
- 11. http://gcc.gnu.org/PR4382
- 12. http://gcc.gnu.org/PR5533
- 13. http://gcc.gnu.org/PR6387
- 14. http://gcc.gnu.org/PR6412
- 15. http://gcc.gnu.org/PR6620
- 16. http://gcc.gnu.org/PR6663
- 17. http://gcc.gnu.org/PR7068
- 18. http://gcc.gnu.org/PR7083
- 19. http://gcc.gnu.org/PR7647
- 20. http://gcc.gnu.org/PR7675
- 21. http://gcc.gnu.org/PR7718
- 22. http://gcc.gnu.org/PR8116
- 23. http://gcc.gnu.org/PR8358
- 24. http://gcc.gnu.org/PR8511
- 25. http://gcc.gnu.org/PR8564
- 26. http://gcc.gnu.org/PR8660
- 27. http://gcc.gnu.org/PR8766
- 28. http://gcc.gnu.org/PR8803
- 29. http://gcc.gnu.org/PR8846
- 30. http://gcc.gnu.org/PR8906
- 31. http://gcc.gnu.org/PR9216
- 32. http://gcc.gnu.org/PR9261
- 33. http://gcc.gnu.org/PR9263
- 34. http://gcc.gnu.org/PR9429
- 35. http://gcc.gnu.org/PR9516
- 36. http://gcc.gnu.org/PR9600
- 37. http://gcc.gnu.org/PR9629
- 38. http://gcc.gnu.org/PR9672
- 39. http://gcc.gnu.org/PR9749
- 40. http://gcc.gnu.org/PR9794
- 41. http://gcc.gnu.org/PR9829
- 42. http://gcc.gnu.org/PR9916
- 43. http://gcc.gnu.org/PR9936
- 44. http://gcc.gnu.org/PR10262
- 45. http://gcc.gnu.org/PR10278
- 46. http://gcc.gnu.org/PR10446
- 47. http://gcc.gnu.org/PR10451
- 48. http://gcc.gnu.org/PR10506
- 49. http://gcc.gnu.org/PR10549
- 50. http://gcc.gnu.org/PR2001
- 51. http://gcc.gnu.org/PR2391
- 52. http://gcc.gnu.org/PR2960
- 53. http://gcc.gnu.org/PR4046
- 54. http://gcc.gnu.org/PR6405
- 55. http://gcc.gnu.org/PR6798
- 56. http://gcc.gnu.org/PR6871
- 57. http://gcc.gnu.org/PR6909
- 58. http://gcc.gnu.org/PR7189
- 59. http://gcc.gnu.org/PR7642
- 60. http://gcc.gnu.org/PR8634
- 61. http://gcc.gnu.org/PR8750
- 62. http://gcc.gnu.org/PR2161
- 63. http://gcc.gnu.org/PR4319
- 64. http://gcc.gnu.org/PR8602
- 65. http://gcc.gnu.org/PR9177
- 66. http://gcc.gnu.org/PR9853
- 67. http://gcc.gnu.org/PR45
- 68. http://gcc.gnu.org/PR3784
- 69. http://gcc.gnu.org/PR764
- 70. http://gcc.gnu.org/PR5116
- 71. http://gcc.gnu.org/PR2862
- 72. http://gcc.gnu.org/PR3663
- 73. http://gcc.gnu.org/PR3797
- 74. http://gcc.gnu.org/PR3948
- 75. http://gcc.gnu.org/PR4137
- 76. http://gcc.gnu.org/PR4361
- 77. http://gcc.gnu.org/PR4802
- 78. http://gcc.gnu.org/PR5837
- 79. http://gcc.gnu.org/PR4803
- 80. http://gcc.gnu.org/PR5094
- 81. http://gcc.gnu.org/PR5730
- 82. http://gcc.gnu.org/PR6713
- 83. http://gcc.gnu.org/PR7015
- 84. http://gcc.gnu.org/PR7086
- 85. http://gcc.gnu.org/PR7099
- 86. http://gcc.gnu.org/PR7247
- 87. http://gcc.gnu.org/PR7441
- 88. http://gcc.gnu.org/PR7768
- 89. http://gcc.gnu.org/PR7804
- 90. http://gcc.gnu.org/PR8099
- 91. http://gcc.gnu.org/PR8117
- 92. http://gcc.gnu.org/PR8205
- 93. http://gcc.gnu.org/PR8645
- 94. http://gcc.gnu.org/PR8724
- 95. http://gcc.gnu.org/PR8805
- 96. http://gcc.gnu.org/PR8691
- 97. http://gcc.gnu.org/PR8700
- 98. http://gcc.gnu.org/PR8724
- 99. http://gcc.gnu.org/PR8949
- 100. http://gcc.gnu.org/PR9016
- 101. http://gcc.gnu.org/PR9053
- 102. http://gcc.gnu.org/PR9152
- 103. http://gcc.gnu.org/PR9182
- 104. http://gcc.gnu.org/PR9297
- 105. http://gcc.gnu.org/PR9318
- 106. http://gcc.gnu.org/PR9320
- 107. http://gcc.gnu.org/PR9400
- 108. http://gcc.gnu.org/PR9424
- 109. http://gcc.gnu.org/PR9425
- 110. http://gcc.gnu.org/PR9439
- 111. http://gcc.gnu.org/PR9474
- 112. http://gcc.gnu.org/PR9548
- 113. http://gcc.gnu.org/PR9555
- 114. http://gcc.gnu.org/PR9561
- 115. http://gcc.gnu.org/PR9563
- 116. http://gcc.gnu.org/PR9582
- 117. http://gcc.gnu.org/PR9622
- 118. http://gcc.gnu.org/PR9683
- 119. http://gcc.gnu.org/PR9791
- 120. http://gcc.gnu.org/PR9817
- 121. http://gcc.gnu.org/PR9825
- 122. http://gcc.gnu.org/PR9826
- 123. http://gcc.gnu.org/PR9924
- 124. http://gcc.gnu.org/PR9946
- 125. http://gcc.gnu.org/PR9964
- 126. http://gcc.gnu.org/PR9988
- 127. http://gcc.gnu.org/PR10033
- 128. http://gcc.gnu.org/PR10097
- 129. http://gcc.gnu.org/PR10132
- 130. http://gcc.gnu.org/PR10180
- 131. http://gcc.gnu.org/PR10199
- 132. http://gcc.gnu.org/PR10300
- 133. http://gcc.gnu.org/PR10427
- 134. http://gcc.gnu.org/PR10503
- 135. http://gcc.gnu.org/PR5956
- 136. http://gcc.gnu.org/PR1832
- 137. http://gcc.gnu.org/PR3924
- 138. http://gcc.gnu.org/PR5634
- 139. http://gcc.gnu.org/PR6367
- 140. http://gcc.gnu.org/PR6491
- 141. http://gcc.gnu.org/PR6742
- 142. http://gcc.gnu.org/PR7113
- 143. http://gcc.gnu.org/PR7236
- 144. http://gcc.gnu.org/PR7278
- 145. http://gcc.gnu.org/PR7384
- 146. http://gcc.gnu.org/PR7388
- 147. http://gcc.gnu.org/PR8587
- 148. http://gcc.gnu.org/PR9038
- 149. http://gcc.gnu.org/PR10197
- 150. http://gcc.gnu.org/PR6005
- 151. http://gcc.gnu.org/PR6389
- 152. http://gcc.gnu.org/PR6576
- 153. http://gcc.gnu.org/PR6652
- 154. http://gcc.gnu.org/PR7060
- 155. http://gcc.gnu.org/PR7073
- 156. http://gcc.gnu.org/PR7180
- 157. http://gcc.gnu.org/PR7416
- 158. http://gcc.gnu.org/PR7570
- 159. http://gcc.gnu.org/PR7578
- 160. http://gcc.gnu.org/PR7611
- 161. http://gcc.gnu.org/PR7709
- 162. http://gcc.gnu.org/PR7766
- 163. http://gcc.gnu.org/PR7785
- 164. http://gcc.gnu.org/PR7786
- 165. http://gcc.gnu.org/PR8142
- 166. http://gcc.gnu.org/PR8234
- 167. http://gcc.gnu.org/PR8415
- 168. http://gcc.gnu.org/PR8481
- 169. http://gcc.gnu.org/PR8593
- 170. http://gcc.gnu.org/PR8759
- 171. http://gcc.gnu.org/PR8997
- 172. http://gcc.gnu.org/PR9253
- 173. http://gcc.gnu.org/PR9254
- 174. http://gcc.gnu.org/PR9271
- 175. http://gcc.gnu.org/PR6767
- 176. http://gcc.gnu.org/PR9911
- 177. http://gcc.gnu.org/PR10020
- 178. http://gcc.gnu.org/PR10546
- 179. http://gcc.gnu.org/PR7029
- 180. http://gcc.gnu.org/PR2903
- 181. http://gcc.gnu.org/PR7873
- 182. http://gcc.gnu.org/PR7680
- 183. http://gcc.gnu.org/PR8705
- 184. http://gcc.gnu.org/PR9986
- 185. http://gcc.gnu.org/PR10056
- 186. http://gcc.gnu.org/PR6744
- 187. http://gcc.gnu.org/PR7361
- 188. http://gcc.gnu.org/PR9496
- 189. http://gcc.gnu.org/PR7067
- 190. http://gcc.gnu.org/PR8480
- 191. http://gcc.gnu.org/PR8784
- 192. http://gcc.gnu.org/PR10315
- 193. http://gcc.gnu.org/PR10267
- 194. http://gcc.gnu.org/PR7916
- 195. http://gcc.gnu.org/PR7926
- 196. http://gcc.gnu.org/PR8555
- 197. http://gcc.gnu.org/PR8994
- 198. http://gcc.gnu.org/PR9426
- 199. http://gcc.gnu.org/PR9806
- 200. http://gcc.gnu.org/PR10077
- 201. http://gcc.gnu.org/PR10233
- 202. http://gcc.gnu.org/PR10286
- 203. http://gcc.gnu.org/PR10308
- 204. http://gcc.gnu.org/PR11272
- 205. http://gcc.gnu.org/PR5754
- 206. http://gcc.gnu.org/PR6597
- 207. http://gcc.gnu.org/PR6949
- 208. http://gcc.gnu.org/PR7053
- 209. http://gcc.gnu.org/PR8164
- 210. http://gcc.gnu.org/PR8384
- 211. http://gcc.gnu.org/PR9559
- 212. http://gcc.gnu.org/PR9649
- 213. http://gcc.gnu.org/PR9864
- 214. http://gcc.gnu.org/PR10432
- 215. http://gcc.gnu.org/PR10475
- 216. http://gcc.gnu.org/PR10635
- 217. http://gcc.gnu.org/PR10661
- 218. http://gcc.gnu.org/PR10700
- 219. http://gcc.gnu.org/PR10712
- 220. http://gcc.gnu.org/PR10796
- 221. http://gcc.gnu.org/PR10890
- 222. http://gcc.gnu.org/PR10939
- 223. http://gcc.gnu.org/PR10956
- 224. http://gcc.gnu.org/PR11041
- 225. http://gcc.gnu.org/PR11059
- 226. http://gcc.gnu.org/PR11083
- 227. http://gcc.gnu.org/PR11105
- 228. http://gcc.gnu.org/PR11149
- 229. http://gcc.gnu.org/PR11228
- 230. http://gcc.gnu.org/PR11282
- 231. http://gcc.gnu.org/PR11301
- 232. http://gcc.gnu.org/PR11308
- 233. http://gcc.gnu.org/PR11473
- 234. http://gcc.gnu.org/PR11503
- 235. http://gcc.gnu.org/PR11513
- 236. http://gcc.gnu.org/PR11198
- 237. http://gcc.gnu.org/PR11304
- 238. http://gcc.gnu.org/PR11381
- 239. http://gcc.gnu.org/PR11536
- 240. http://gcc.gnu.org/PR11557
- 241. http://gcc.gnu.org/PR5897
- 242. http://gcc.gnu.org/PR11279
- 243. http://gcc.gnu.org/PR11022
- 244. http://gcc.gnu.org/PR2330
- 245. http://gcc.gnu.org/PR5388
- 246. http://gcc.gnu.org/PR5390
- 247. http://gcc.gnu.org/PR7877
- 248. http://gcc.gnu.org/PR9393
- 249. http://gcc.gnu.org/PR10032
- 250. http://gcc.gnu.org/PR10468
- 251. http://gcc.gnu.org/PR10527
- 252. http://gcc.gnu.org/PR10679
- 253. http://gcc.gnu.org/PR10682
- 254. http://gcc.gnu.org/PR10689
- 255. http://gcc.gnu.org/PR10845
- 256. http://gcc.gnu.org/PR10849
- 257. http://gcc.gnu.org/PR10888
- 258. http://gcc.gnu.org/PR10929
- 259. http://gcc.gnu.org/PR10931
- 260. http://gcc.gnu.org/PR10940
- 261. http://gcc.gnu.org/PR10968
- 262. http://gcc.gnu.org/PR10990
- 263. http://gcc.gnu.org/PR11039
- 264. http://gcc.gnu.org/PR11062
- 265. http://gcc.gnu.org/PR11095
- 266. http://gcc.gnu.org/PR11098
- 267. http://gcc.gnu.org/PR11137
- 268. http://gcc.gnu.org/PR11154
- 269. http://gcc.gnu.org/PR11329
- 270. http://gcc.gnu.org/PR11332
- 271. http://gcc.gnu.org/PR11431
- 272. http://gcc.gnu.org/PR11528
- 273. http://gcc.gnu.org/PR11546
- 274. http://gcc.gnu.org/PR11567
- 275. http://gcc.gnu.org/PR11645
- 276. http://gcc.gnu.org/PR5179
- 277. http://gcc.gnu.org/PR8204
- 278. http://gcc.gnu.org/PR10838
- 279. http://gcc.gnu.org/PR10886
- 280. http://gcc.gnu.org/PR11349
- 281. http://gcc.gnu.org/PR4823
- 282. http://gcc.gnu.org/PR8878
- 283. http://gcc.gnu.org/PR9815
- 284. http://gcc.gnu.org/PR10402
- 285. http://gcc.gnu.org/PR10504
- 286. http://gcc.gnu.org/PR10673
- 287. http://gcc.gnu.org/PR11044
- 288. http://gcc.gnu.org/PR11089
- 289. http://gcc.gnu.org/PR11420
- 290. http://gcc.gnu.org/PR9362
- 291. http://gcc.gnu.org/PR10142
- 292. http://gcc.gnu.org/PR10663
- 293. http://gcc.gnu.org/PR10835
- 294. http://gcc.gnu.org/PR10876
- 295. http://gcc.gnu.org/PR10955
- 296. http://gcc.gnu.org/PR11018
- 297. http://gcc.gnu.org/PR11556
- 298. http://gcc.gnu.org/PR10907
- 299. http://gcc.gnu.org/PR11320
- 300. http://gcc.gnu.org/PR11599
- 301. http://gcc.gnu.org/PR9745
- 302. http://gcc.gnu.org/PR10871
- 303. http://gcc.gnu.org/PR11440
- 304. http://gcc.gnu.org/PR7594
- 305. http://gcc.gnu.org/PR10557
- 306. http://gcc.gnu.org/PR11054
- 307. http://gcc.gnu.org/PR10834
- 308. http://gcc.gnu.org/PR10842
- 309. http://gcc.gnu.org/PR11052
- 310. http://gcc.gnu.org/PR11183
- 311. http://gcc.gnu.org/PR11084
- 312. http://gcc.gnu.org/PR10331
- 313. http://gcc.gnu.org/PR10413
- 314. http://gcc.gnu.org/PR11096
- 315. http://gcc.gnu.org/PR2873
- 316. http://gcc.gnu.org/PR3163
- 317. http://gcc.gnu.org/PR5287
- 318. http://gcc.gnu.org/PR10148
- 319. http://gcc.gnu.org/PR8787
- 320. http://gcc.gnu.org/PR1607
- 321. http://gcc.gnu.org/PR4252
- 322. http://gcc.gnu.org/PR4490
- 323. http://gcc.gnu.org/PR10355
- 324. http://gcc.gnu.org/PR10726
- 325. http://gcc.gnu.org/PR10805
- 326. http://gcc.gnu.org/PR10815
- 327. http://gcc.gnu.org/PR10877
- 328. http://gcc.gnu.org/PR11280
- 329. http://gcc.gnu.org/PR11466
- 330. http://gcc.gnu.org/PR10737
- 331. http://gcc.gnu.org/PR10810
- 332. http://gcc.gnu.org/bugzilla/
- 333. http://gcc.gnu.org/PR8336
- 334. http://gcc.gnu.org/PR9330
- 335. http://gcc.gnu.org/PR9631
- 336. http://gcc.gnu.org/PR9877
- 337. http://gcc.gnu.org/PR11687
- 338. http://gcc.gnu.org/PR12263
- 339. http://gcc.gnu.org/PR12490
- 340. http://gcc.gnu.org/PR7277
- 341. http://gcc.gnu.org/PR11063
- 342. http://gcc.gnu.org/PR11207
- 343. http://gcc.gnu.org/PR11522
- 344. http://gcc.gnu.org/PR11595
- 345. http://gcc.gnu.org/PR11646
- 346. http://gcc.gnu.org/PR11665
- 347. http://gcc.gnu.org/PR11852
- 348. http://gcc.gnu.org/PR11878
- 349. http://gcc.gnu.org/PR11883
- 350. http://gcc.gnu.org/PR11991
- 351. http://gcc.gnu.org/PR12146
- 352. http://gcc.gnu.org/PR12215
- 353. http://gcc.gnu.org/PR12446
- 354. http://gcc.gnu.org/PR12510
- 355. http://gcc.gnu.org/PR12544
- 356. http://gcc.gnu.org/PR9862
- 357. http://gcc.gnu.org/PR10962
- 358. http://gcc.gnu.org/PR11370
- 359. http://gcc.gnu.org/PR11637
- 360. http://gcc.gnu.org/PR11885
- 361. http://gcc.gnu.org/PR12082
- 362. http://gcc.gnu.org/PR12180
- 363. http://gcc.gnu.org/PR12340
- 364. http://gcc.gnu.org/PR3907
- 365. http://gcc.gnu.org/PR5293
- 366. http://gcc.gnu.org/PR5296
- 367. http://gcc.gno.org/PR7939
- 368. http://gcc.gnu.org/PR8656
- 369. http://gcc.gnu.org/PR10147
- 370. http://gcc.gnu.org/PR11400
- 371. http://gcc.gnu.org/PR11409
- 372. http://gcc.gnu.org/PR11740
- 373. http://gcc.gnu.org/PR11786
- 374. http://gcc.gnu.org/PR11867
- 375. http://gcc.gnu.org/PR11928
- 376. http://gcc.gnu.org/PR12163
- 377. http://gcc.gnu.org/PR12181
- 378. http://gcc.gnu.org/PR12236
- 379. http://gcc.gnu.org/PR12266
- 380. http://gcc.gnu.org/PR12296
- 381. http://gcc.gnu.org/PR12369
- 382. http://gcc.gnu.org/PR12337
- 383. http://gcc.gnu.org/PR12344
- 384. http://gcc.gnu.org/PR12451
- 385. http://gcc.gnu.org/PR12486
- 386. http://gcc.gnu.org/PR8869
- 387. http://gcc.gnu.org/PR9786
- 388. http://gcc.gnu.org/PR11689
- 389. http://gcc.gnu.org/PR12116
- 390. http://gcc.gnu.org/PR12070
- 391. http://gcc.gnu.org/PR11184
- 392. http://gcc.gnu.org/PR11535
- 393. http://gcc.gnu.org/PR11693
- 394. http://gcc.gnu.org/PR12224
- 395. http://gcc.gnu.org/PR11087
- 396. http://gcc.gnu.org/PR11319
- 397. http://gcc.gnu.org/PR11949
- 398. http://gcc.gnu.org/PR11662
- 399. http://gcc.gnu.org/PR11965
- 400. http://gcc.gnu.org/PR12301
- 401. http://gcc.gnu.org/PR11717
- 402. http://gcc.gnu.org/PR10900
- 403. http://gcc.gnu.org/PR11313
- 404. http://gcc.gnu.org/PR11712
- 405. http://gcc.gnu.org/PR12166
- 406. http://gcc.gnu.org/PR12101
- 407. http://gcc.gnu.org/PR10988
- 408. http://gcc.gnu.org/PR11805
- 409. http://gcc.gnu.org/PR11902
- 410. http://gcc.gnu.org/PR11903
- 411. mailto:gnu@gnu.org
- 412. http://www.gnu.org/home.html#ContactInfo
- 413. http://gcc.gnu.org/about.html
- 414. http://gcc.gnu.org/onlinedocs/
- 415. mailto:gcc-help@gcc.gnu.org
- 416. mailto:gcc@gnu.org
- 417. mailto:gcc@gcc.gnu.org
- 418. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.2/index.html
-
- GCC 3.2 Release Series
-
- April 25, 2003
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.2.3.
-
- The purpose of the GCC 3.2 release series is to provide a stable
- platform for OS distributors to use building their next releases. A
- primary objective was to stabilize the C++ ABI; we believe that the
- interface to the compiler and the C++ standard library are now
- relatively stable.
-
- Be aware that C++ code compiled by GCC 3.2.x will (in general) not
- interoperate with code compiled by GCC 3.1.1 or earlier.
-
- Please refer to our [2]detailed list of news, caveats, and bug-fixes
- for further information.
-
-Release History
-
- GCC 3.2.3
- April 25, 2003 ([3]changes)
-
- GCC 3.2.2
- February 5, 2003 ([4]changes)
-
- GCC 3.2.1
- November 19, 2002 ([5]changes)
-
- GCC 3.2
- August 14, 2002 ([6]changes)
-
-References and Acknowledgements
-
- 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 [7]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, improvements, bug fixes, and other changes
- as well as test results to GCC. This [8]amazing group of volunteers is
- what makes GCC successful.
-
- For additional information about GCC please refer to the [9]GCC
- project web site or contact the [10]GCC development mailing list.
-
- To obtain GCC please use [11]our mirror sites, one of the [12]GNU
- mirror sites, or [13]our CVS server.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
- are also [15]other ways to contact the FSF.
-
- These pages are maintained by [16]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [17]GCC manuals. If that fails, the
- [18]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [19]gcc@gnu.org or
- [20]gcc@gcc.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 2003-08-28 [21]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.2/changes.html
- 3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
- 4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
- 5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
- 6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
- 7. http://gcc.gnu.org/gcc-3.2/buildstat.html
- 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/index.html
- 10. mailto:gcc@gcc.gnu.org
- 11. http://gcc.gnu.org/mirrors.html
- 12. http://www.gnu.org/order/ftp.html
- 13. http://gcc.gnu.org/cvs.html
- 14. mailto:gnu@gnu.org
- 15. http://www.gnu.org/home.html#ContactInfo
- 16. http://gcc.gnu.org/about.html
- 17. http://gcc.gnu.org/onlinedocs/
- 18. mailto:gcc-help@gcc.gnu.org
- 19. mailto:gcc@gnu.org
- 20. mailto:gcc@gcc.gnu.org
- 21. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.2/changes.html
-
- GCC 3.2 Release Series
- Changes, New Features, and Fixes
-
- The latest release in the 3.2 release series is [1]GCC 3.2.3.
-
-Caveats and New Features
-
- Caveats
-
- * The C++ compiler does not correctly zero-initialize
- pointers-to-data members. You must explicitly initialize them. For
- example: int S::*m(0); will work, but depending on
- default-initialization to zero will not work. This bug cannot be
- fixed in GCC 3.2 without inducing unacceptable risks. It will be
- fixed in GCC 3.3.
- * This GCC release is based on the GCC 3.1 sourcebase, and thus has
- all the [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.
-
- Frontend Enhancements
-
- C/C++/Objective-C
-
- * The method of constructing the list of directories to be searched
- for header files has been revised. If a directory named by a -I
- option is a standard system include directory, the option is
- ignored to ensure that the default search order for system
- directories and the special treatment of system header files are
- not defeated.
- * The C and Objective-C compilers no longer accept the "Naming
- Types" extension (typedef foo = bar); it was already unavailable
- in C++. Code which uses it will need to be changed to use the
- "typeof" extension instead: typedef typeof(bar) foo. (We have
- removed this extension without a period of deprecation because it
- has caused the compiler to crash since version 3.0 and no one
- noticed until very recently. Thus we conclude it is not in
- widespread use.)
-
- 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
-
- IA-32
-
- * Fixed a number of bugs in SSE and MMX intrinsics.
- * Fixed common compiler crashes with SSE instruction set enabled
- (implied by -march=pentium3, pentium4, athlon-xp)
- * __m128 and __m128i is not 128bit aligned when used in structures.
-
- x86-64
-
- * A bug whereby the compiler could generate bad code for bzero has
- been fixed.
- * ABI fixes (implying ABI incompatibilities with previous version in
- some corner cases)
- * Fixed prefetch code generation
- _________________________________________________________________
-
-GCC 3.2.3
-
- 3.2.3 is a bug fix release only; there are no new features that were
- not present in GCC 3.2.2.
-
- Bug Fixes
-
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.2.3 release. This list
- might not be complete (that is, it is possible that some PRs that have
- been fixed are not listed here), and some of the titles have been
- changed to make them more clear.
-
- Internal Compiler Errors (multi-platform)
-
- * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
- cc1plus
- * [5]6440: (c++) template specializations cause ICE
- * [6]7050: (c++) ICE on: (i ? get_string() : throw)
- * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
- * [8]7982: (c++) ICE due to infinite recursion (using STL set)
- * [9]8068: exceedingly high (infinite) memory usage
- * [10]8178: ICE with __builtin_ffs
- * [11]8396: ICE in copy_to_mode_reg, in explow.c
- * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
- * [13]9768: ICE when optimizing inline code at -O2
- * [14]9798: (c++) Infinite recursion (segfault) in
- cp/decl.c:push_using_directive with recursive using directives
- * [15]9799: mismatching structure initializer with nested flexible
- array member: ICE
- * [16]9928: ICE on duplicate enum declaration
- * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
- sparc, alpha)
- * [18]10352: ICE in find_reloads_toplev
- * [19]10336: ICE with -Wunreachable-code
-
- C/optimizer bugs:
-
- * [20]8224: Incorrect joining of signed and unsigned division
- * [21]8613: -O2 produces wrong code with builtin strlen and
- postincrements
- * [22]8828: gcc reports some code is unreachable when it is not
- * [23]9226: GCSE breaking argument passing
- * [24]9853: miscompilation of non-constant structure initializer
- * [25]9797: C99-style struct initializers are miscompiled
- * [26]9967: Some standard C function calls should not be replaced
- when optimizing for size
- * [27]10116: ce2: invalid merge of join_bb in the context of switch
- statements
- * [28]10171: wrong code for inlined function
- * [29]10175: -Wunreachable-code doesn't work for single lines
-
- C++ compiler and library:
-
- * [30]8316: Confusing diagnostic for code that misuses conversion
- operators
- * [31]9169: filebuf output fails if codecvt<>::out returns noconv
- * [32]9420: incomplete type incorrectly reported
- * [33]9459: typeof in return type specification of template not
- supported
- * [34]9507: filebuf::open handles ios_base::ate incorrectly
- * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
- * [36]9602: Total confusion about template/friend/virtual/abstract
- * [37]9993: destructor not called for local object created within
- and returned from infinite loop
- * [38]10167: ieee_1003.1-2001 locale specialisations on a
- glibc-2.3.2 system
-
- Java compiler and library:
-
- * [39]9652: libgcj build fails on irix6.5.1[78]
- * [40]10144: gas on solaris complains about bad .stabs lines for
- java, native as unaffected
-
- x86-specific (Intel/AMD):
-
- * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
- * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
- * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
- failed
- * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
- failed
-
- Sparc-specific:
-
- * [45]7784: [Sparc] ICE in extract_insn, in recog.c
- * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
- unroll.c
- * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
- * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
- execute/loop-2d.c
- * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
- * [50]9414: Scheduling bug on Ultrasparc
- * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
-
- m68k-specific:
-
- * [52]7248: broken "inclusive or" code
- * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
-
- PowerPC-specific:
-
- * [54]9732: Wrong code with -O2 -fPIC
- * [55]10073: ICE: powerpc cannot split insn
-
- Alpha-specific:
-
- * [56]7702: optimization problem on a DEC alpha under OSF1
- * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
-
- HP-specific:
-
- * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
- * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
- (missing symbol)
- * [60]10271: Floating point args don't get reloaded across function
- calls with -O2
-
- MIPS specific:
-
- * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
- compile/920501-4.c
-
- CRIS specific:
-
- * [62]10377: gcc-3.2.2 creates bad assembler code for cris
-
- Miscellaneous and minor bugs:
-
- * [63]6955: collect2 says "core dumped" when there is no core
- _________________________________________________________________
-
-GCC 3.2.2
-
- Beginning with 3.2.2, GCC's Makefile suite supports redirection of
- make install by means of the DESTDIR variable. Parts of the GCC tree
- have featured that support long before, but now it is available even
- from the top level.
-
- Other than that, GCC 3.2.2 is a bug fix release only; there are no new
- features that were not present in GCC 3.2.1.
-
- Bug Fixes
-
- On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
- functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
- with FreeBSD 5.0 does not have this problem), Interix, a.out-based
- Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
- change, and thus restores ABI-compatibility with previous releases
- (except GCC 3.2.1) on these platforms.
-
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.2.2 release. This list
- might not be complete (that is, it is possible that some PRs that have
- been fixed are not listed here) and some of the titles have been
- changed to make them more clear.
-
- Internal Compiler Errors (multi-platform)
-
- * [64]5919: (c++) ICE when passing variable array to template
- function
- * [65]7129: (c++) ICE with min/max assignment operators (<?= and
- >?=)
- * [66]7507: ICE with -O2 when address of called function is a
- complicated expression
- * [67]7622: ICE with nested inline functions if function's address
- is taken
- * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also
- PR [69]9258)
- * [70]8031: (c++) ICE in code comparing typeids and casting from
- virtual base
- * [71]8275: ICE in simplify_subreg
- * [72]8332: (c++) builtin strlen/template interaction causes ICE
- * [73]8372: (c++) ICE on explicit call of destructor
- * [74]8439: (c, not c++) empty struct causes ICE
- * [75]8442: (c++) ICE with nested template classes
- * [76]8518: ICE when compiling mplayer ("extern inline" issue)
- * [77]8615: (c++) ICE with out-of-range character constant template
- argument
- * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
- * [79]8799: (c++) ICE: error reporting routines re-entered
- * [80]9328: (c++) ICE with typeof(X) for overloaded X
- * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
-
- C++ (compiler and library) bugs
-
- * [82]47: scoping in nested classes is broken
- * [83]6745: problems with iostream rdbuf() member function
- * [84]8214: conversion from const char* const to char* sometimes
- accepted illegally
- * [85]8493: builtin strlen and overload resolution (same bug as
- [86]8332)
- * [87]8503: strange behaviour of function types
- * [88]8727: compiler confused by inheritance from an anonymous
- struct
- * [89]7445: poor performance of std::locale::classic() in
- multi-threaded applications
- * [90]8230: mishandling of overflow in vector<T>::resize
- * [91]8399: sync_with_stdio(false) breaks unformatted input
- * [92]8662: illegal access of private member of unnamed class is
- accepted
- * [93]8707: "make distclean" fails in libstdc++-v3 directory
- * [94]8708: __USE_MALLOC doesn't work
- * [95]8790: Use of non-thread-safe strtok in src/localename.cc
- * [96]8887: Bug in date formats with --enable-clocale=generic
- * [97]9076: Call Frame Instructions are not handled correctly during
- unwind operation
- * [98]9151: std::setprecision limited to 16 digits when outputting a
- double to a stream
- * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
- * [100]9269: libstdc++ headers: explicit specialization of function
- must precede its first use
- * [101]9322: return value of basic_streambuf<>::getloc affected by
- locale::global
- * [102]9433: segfault in runtime support for dynamic_cast
-
- C and optimizer bugs
-
- * [103]8032: GCC incorrectly initializes static structs that have
- flexible arrays
- * [104]8639: simple arithmetic expression broken
- * [105]8794: optimization improperly eliminates certain expressions
- * [106]8832: traditional "asm volatile" code is illegally optimized
- * [107]8988: loop optimizer bug: with -O2, code is generated that
- segfaults (found on i386, bug present for all platforms)
- * [108]9492: structure copy clobbers subsequent stores to structure
-
- Objective-C bugs
-
- * [109]9267: Objective-C parser won't build with newer bison
- versions (e.g. 1.875)
-
- Ada bugs
-
- * [110]8344: Ada build problem due to conflict between gcc/final.o,
- gcc/ada/final.o
-
- Preprocessor bugs
-
- * [111]8524: _Pragma within macros is improperly expanded
- * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
- -fshort-wchar
-
- ARM-specific
-
- * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
-
- x86-specific (Intel/AMD)
-
- * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift
- instruction)
- * [115]8599: loop unroll bug with -march=k6-3
- * [116]9506: ABI breakage in structure return (affects BSD and
- Cygwin, but not GNU/Linux)
-
- FreeBSD 5.0 specific
-
- * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
-
- RTEMS-specific
-
- * [118]9292: hppa1.1-rtems configurery problems
- * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
- * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
- * [121]9296: gthr-rtems regression
- * [122]9316: powerpc-rtems: extending multilibs
-
- HP-PA specific
-
- * [123]9493: ICE with -O2 when building a simple function
-
- Documentation
-
- * [124]7341: hyperlink to gcov in GCC documentation doesn't work
- * [125]8947: Please add a warning about "-malign-double" in docs
- * [126]7448, [127]8882: typo cleanups
- _________________________________________________________________
-
-GCC 3.2.1
-
- 3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
- generates code that is known not to be binary-compatible with the
- vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
- in the distribution, for details.
-
- This release also removes an old GCC extension, "naming types", and
- the documentation now directs users to use a different GCC extension,
- __typeof__, instead. The feature had evidently been broken for a
- while.
-
- Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
- the new warning there are no new features that were not present in GCC
- 3.2.
-
- In addition, the previous fix for [128]PR 7445 (poor performance of
- std::locale::classic() in multi-threaded applications) was reverted
- ("unfixed"), because the "fix" was not thread-safe.
-
- Bug Fixes
-
- This section lists the problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 3.2.1 release. This list
- might not be complete (that is, it is possible that some PRs that have
- been fixed are not listed here). As you can see, the number of bug
- fixes is quite large, so it is strongly recommended that users of
- earlier GCC 3.x releases upgrade to GCC 3.2.1.
-
- Internal Compiler Errors (multi-platform)
-
- * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
- * [130]5661: (c++) ICE instantiating template on array of unknown
- size (bad code)
- * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
- 64-bit platforms
- * [132]6994: (c++) ICE in find_function_data
- * [133]7150: preprocessor: GCC -dM -E gives an ICE
- * [134]7160: ICE when optimizing branches without a return value
- * [135]7228: (c++) ICE when using member template and template
- function
- * [136]7266: (c++) ICE with -pedantic on missing typename
- * [137]7353: ICE from use of "Naming Types" extension, see above
- * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
- * [139]7478: (c++) ICE on static_cast inside template
- * [140]7526: preprocessor core dump when _Pragma implies #pragma
- dependency
- * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
- is a duplicate)
- * [143]7754: (c++) ICE on union with template parameter
- * [144]7788: (c++) redeclaring a definition as an incomplete class
- causes ICE
- * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
- * [146]8055: preprocessor dies with SIG11 when building FreeBSD
- kernel
- * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and
- related variables
- * [148]8134: (c++) ICE in force_store_init_value on legal code
- * [149]8149: (c++) ICE on incomplete type
- * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
- initialization
-
- C++ (compiler and library) bugs
-
- * [151]5607: No pointer adjustment in covariant return types
- * [152]6579: Infinite loop with statement expressions in member
- initialization
- * [153]6803: Default copy constructor bug in GCC 3.1
- * [154]7176: g++ confused by friend and static member with same name
- * [155]7188: Segfault with template class and recursive (incorrect)
- initializer list
- * [156]7306: Regression: GCC 3.x fails to compile code with virtual
- inheritance if a method has a variable number of arguments
- * [157]7461: ctype<char>::classic_table() returns offset array on
- Cygwin
- * [158]7524: f(const float arg[3]) fails
- * [159]7584: Erroneous ambiguous base error on using declaration
- * [160]7676: Member template overloading problem
- * [161]7679: infinite loop when a right parenthesis is missing
- * [162]7811: default locale not taken from environment
- * [163]7961: compare( char *) implemented incorrectly in
- basic_string<>
- * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
- streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
- [166]6745)
- * [167]8096: deque::at() throws std::range_error instead of
- std::out_of_range
- * [168]8127: cout << cin.rdbuf() infinite loop
- * [169]8218: Excessively large memory consumed for classes with
- large array members
- * [170]8287: GCC 3.2: Destructor called for non-constructed local
- object
- * [171]8347: empty vector range used in string construction causes
- core dump
- * [172]8348: fail() flag is set in istringstream when eof() flag is
- set
- * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
-
- C and optimizer bugs
-
- * [174]6627: -fno-align-functions doesn't seem to disable function
- alignment
- * [175]6631: life_analysis misoptimizes code to initialize fields of
- a structure
- * [176]7102: unsigned char division results in floating exception
- * [177]7120: Run once loop should *always* be unrolled
- (pessimization)
- * [178]7209: Bug involving array referencing and ?: operator
- * [179]7515: invalid inlining of global function with -O3
- * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
- * [181]8467: bug in sibling call optimization
-
- Preprocessor bugs
-
- * [182]4890: incorrect line markers from the traditional
- preprocessor
- * [183]7357: -M option omits system headers files (making it the
- same as -MM)
- * [184]7358: Changes to Sun's make Dependencies
- * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
- C headers
- * [186]7862: Interrupting GCC -MD removes .d file but not .o
- * [187]8190: Failed compilation deletes -MD dependency file
- * [188]8524: _Pragma within macro is improperly expanded
-
- x86 specific (Intel/AMD)
-
- * [189]5351: (i686-only) function pass-by-value structure copy
- corrupts stack ([190]7591 is a duplicate)
- * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
- -march=pentium3/pentium2/athlon (these are all the same underlying
- bug, in MMX register use)
- * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe
- same as above?)
- * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
- * [199]6981: wrong code in 64-bit manipulation on x86
- * [200]7242: GCC -mcpu=pentium[23] doesn't define
- __tune_pentiumpro__ macro
- * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
- intrinsics are broken
- * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
- -march=pentium4
- * [203]7693: Typo in i386 mmintrin.h header
- * [204]7723: ICE - Pentium3 sse - GCC 3.2
- * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
- * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
-
- PowerPC specific
-
- * [207]5967: GCC bug when profiling nested functions on powerpc
- * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
- loop on PowerPC
- * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
- * [210]7130: miscompiled code for GCC-3.1 in powerpc linux with
- -funroll-all-loops
- * [211]7133: PowerPC ICE: unrecognizable insn
- * [212]7380: ICE in extract_insn, at recog.c:2148
- * [213]8252: ICE on Altivec code with optimization turned on
- * [214]8451: Altivec ICE in GCC 3.2
-
- HP/PA specific
-
- * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
-
- SPARC specific
-
- * [216]6668: when using --disable-multilib, libgcc_s.so is installed
- in the wrong place on sparc-solaris
- * [217]7151: ICE when compiling for UltraSPARC
- * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
- double and -O1
- * [219]7842: [REGRESSION] SPARC code gen bug
-
- ARM specific
-
- * [220]7856: [arm] invalid offset in constant pool reference
- * [221]7967: optimization produces wrong code (ARM)
-
- Alpha specific
-
- * [222]7374: __builtin_fabsl broken on alpha
-
- IBM s390 specific
-
- * [223]7370: ICE in fixup_var_refs_1 on s390x
- * [224]7409: loop optimization bug on s390x-linux-gnu
- * [225]8232: s390x: ICE when using bcmp with int length argument
-
- SCO specific
-
- * [226]7623: SCO OpenServer build fails with machmode.def: undefined
- symbol: BITS_PER_UNIT
-
- m68k/Coldfire specific
-
- * [227]8314: crtbegin, crtend need to be multilib'ed for this
- platform
-
- Documentation
-
- * [228]761: Document some undocumented options
- * [229]5610: Fix documentation about invoking SSE instructions
- (-mfpmath=sse)
- * [230]7484: List -Wmissing-declarations as C-only option
- * [231]7531: -mcmodel not documented for x86-64
- * [232]8120: Update documentation of bad use of ##
- _________________________________________________________________
-
-GCC 3.2
-
- 3.2 is a small bug fix release, but there is a change to the
- application binary interface (ABI), hence the change to the second
- part of the version number.
-
- The main purpose of the 3.2 release is to correct a couple of problems
- in the C++ ABI, with the intention of providing a stable interface
- going forward. Accordingly, 3.2 is only a small change to 3.1.1.
-
- Bug Fixes
-
- C++
-
- * [233]7320: g++ 3.2 relocation problem
- * [234]7470: vtable: virtual function pointers not in declaration
- order
-
- libstdc++
-
- * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
- * [236]6503, [237]6642, [238]7186: Problems with comparing or
- subtracting various types of const and non-const iterators
- * [239]7216: ambiguity with basic_iostream::traits_type
- * [240]7220: problem with basic_istream::ignore(0,delimiter)
- * [241]7222: locale::operator==() doesn't work on std::locale("")
- * [242]7286: placement operator delete issue
- * [243]7442: cxxabi.h does not match the C++ ABI
- * [244]7445: poor performance of std::locale::classic() in
- multi-threaded applications
-
- x86-64 specific
-
- * [245]7291: off-by-one in generated inline bzero code for x86-64
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [246]gnu@gnu.org. There
- are also [247]other ways to contact the FSF.
-
- These pages are maintained by [248]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [249]GCC manuals. If that fails, the
- [250]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [251]gcc@gnu.org or
- [252]gcc@gcc.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 2003-08-28 [253]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
- 2. http://gcc.gnu.org/gcc-3.1/changes.html
- 3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
- 4. http://gcc.gnu.org/PR3782
- 5. http://gcc.gnu.org/PR6440
- 6. http://gcc.gnu.org/PR7050
- 7. http://gcc.gnu.org/PR7741
- 8. http://gcc.gnu.org/PR7982
- 9. http://gcc.gnu.org/PR8068
- 10. http://gcc.gnu.org/PR8178
- 11. http://gcc.gnu.org/PR8396
- 12. http://gcc.gnu.org/PR8674
- 13. http://gcc.gnu.org/PR9768
- 14. http://gcc.gnu.org/PR9798
- 15. http://gcc.gnu.org/PR9799
- 16. http://gcc.gnu.org/PR9928
- 17. http://gcc.gnu.org/PR10114
- 18. http://gcc.gnu.org/PR10352
- 19. http://gcc.gnu.org/PR10336
- 20. http://gcc.gnu.org/PR8224
- 21. http://gcc.gnu.org/PR8613
- 22. http://gcc.gnu.org/PR8828
- 23. http://gcc.gnu.org/PR9226
- 24. http://gcc.gnu.org/PR9853
- 25. http://gcc.gnu.org/PR9797
- 26. http://gcc.gnu.org/PR9967
- 27. http://gcc.gnu.org/PR10116
- 28. http://gcc.gnu.org/PR10171
- 29. http://gcc.gnu.org/PR10175
- 30. http://gcc.gnu.org/PR8316
- 31. http://gcc.gnu.org/PR9169
- 32. http://gcc.gnu.org/PR9420
- 33. http://gcc.gnu.org/PR9459
- 34. http://gcc.gnu.org/PR9507
- 35. http://gcc.gnu.org/PR9538
- 36. http://gcc.gnu.org/PR9602
- 37. http://gcc.gnu.org/PR9993
- 38. http://gcc.gnu.org/PR10167
- 39. http://gcc.gnu.org/PR9652
- 40. http://gcc.gnu.org/PR10144
- 41. http://gcc.gnu.org/PR8746
- 42. http://gcc.gnu.org/PR9888
- 43. http://gcc.gnu.org/PR9638
- 44. http://gcc.gnu.org/PR9954
- 45. http://gcc.gnu.org/PR7784
- 46. http://gcc.gnu.org/PR7796
- 47. http://gcc.gnu.org/PR8281
- 48. http://gcc.gnu.org/PR8366
- 49. http://gcc.gnu.org/PR8726
- 50. http://gcc.gnu.org/PR9414
- 51. http://gcc.gnu.org/PR10067
- 52. http://gcc.gnu.org/PR7248
- 53. http://gcc.gnu.org/PR8343
- 54. http://gcc.gnu.org/PR9732
- 55. http://gcc.gnu.org/PR10073
- 56. http://gcc.gnu.org/PR7702
- 57. http://gcc.gnu.org/PR9671
- 58. http://gcc.gnu.org/PR8694
- 59. http://gcc.gnu.org/PR9953
- 60. http://gcc.gnu.org/PR10271
- 61. http://gcc.gnu.org/PR6362
- 62. http://gcc.gnu.org/PR10377
- 63. http://gcc.gnu.org/PR6955
- 64. http://gcc.gnu.org/PR5919
- 65. http://gcc.gnu.org/PR7129
- 66. http://gcc.gnu.org/PR7507
- 67. http://gcc.gnu.org/PR7622
- 68. http://gcc.gnu.org/PR7681
- 69. http://gcc.gnu.org/PR9528
- 70. http://gcc.gnu.org/PR8031
- 71. http://gcc.gnu.org/PR8275
- 72. http://gcc.gnu.org/PR8332
- 73. http://gcc.gnu.org/PR8372
- 74. http://gcc.gnu.org/PR8439
- 75. http://gcc.gnu.org/PR8442
- 76. http://gcc.gnu.org/PR8518
- 77. http://gcc.gnu.org/PR8615
- 78. http://gcc.gnu.org/PR8663
- 79. http://gcc.gnu.org/PR8799
- 80. http://gcc.gnu.org/PR9328
- 81. http://gcc.gnu.org/PR9465
- 82. http://gcc.gnu.org/PR47
- 83. http://gcc.gnu.org/PR6745
- 84. http://gcc.gnu.org/PR8214
- 85. http://gcc.gnu.org/PR8493
- 86. http://gcc.gnu.org/PR8332
- 87. http://gcc.gnu.org/PR8503
- 88. http://gcc.gnu.org/PR8727
- 89. http://gcc.gnu.org/PR7445
- 90. http://gcc.gnu.org/PR8230
- 91. http://gcc.gnu.org/PR8399
- 92. http://gcc.gnu.org/PR8662
- 93. http://gcc.gnu.org/PR8707
- 94. http://gcc.gnu.org/PR8708
- 95. http://gcc.gnu.org/PR8790
- 96. http://gcc.gnu.org/PR8887
- 97. http://gcc.gnu.org/PR9076
- 98. http://gcc.gnu.org/PR9151
- 99. http://gcc.gnu.org/PR9168
- 100. http://gcc.gnu.org/PR9269
- 101. http://gcc.gnu.org/PR9322
- 102. http://gcc.gnu.org/PR9433
- 103. http://gcc.gnu.org/PR8032
- 104. http://gcc.gnu.org/PR8639
- 105. http://gcc.gnu.org/PR8794
- 106. http://gcc.gnu.org/PR8832
- 107. http://gcc.gnu.org/PR8988
- 108. http://gcc.gnu.org/PR9492
- 109. http://gcc.gnu.org/PR9267
- 110. http://gcc.gnu.org/PR8344
- 111. http://gcc.gnu.org/PR8524
- 112. http://gcc.gnu.org/PR8880
- 113. http://gcc.gnu.org/PR9090
- 114. http://gcc.gnu.org/PR8588
- 115. http://gcc.gnu.org/PR8599
- 116. http://gcc.gnu.org/PR9506
- 117. http://gcc.gnu.org/PR9484
- 118. http://gcc.gnu.org/PR9292
- 119. http://gcc.gnu.org/PR9293
- 120. http://gcc.gnu.org/PR9295
- 121. http://gcc.gnu.org/PR9296
- 122. http://gcc.gnu.org/PR9316
- 123. http://gcc.gnu.org/PR9493
- 124. http://gcc.gnu.org/PR7341
- 125. http://gcc.gnu.org/PR8947
- 126. http://gcc.gnu.org/PR7448
- 127. http://gcc.gnu.org/PR8882
- 128. http://gcc.gnu.org/PR7445
- 129. http://gcc.gnu.org/PR2521
- 130. http://gcc.gnu.org/PR5661
- 131. http://gcc.gnu.org/PR6419
- 132. http://gcc.gnu.org/PR6994
- 133. http://gcc.gnu.org/PR7150
- 134. http://gcc.gnu.org/PR7160
- 135. http://gcc.gnu.org/PR7228
- 136. http://gcc.gnu.org/PR7266
- 137. http://gcc.gnu.org/PR7353
- 138. http://gcc.gnu.org/PR7411
- 139. http://gcc.gnu.org/PR7478
- 140. http://gcc.gnu.org/PR7526
- 141. http://gcc.gnu.org/PR7721
- 142. http://gcc.gnu.org/PR7803
- 143. http://gcc.gnu.org/PR7754
- 144. http://gcc.gnu.org/PR7788
- 145. http://gcc.gnu.org/PR8031
- 146. http://gcc.gnu.org/PR8055
- 147. http://gcc.gnu.org/PR8067
- 148. http://gcc.gnu.org/PR8134
- 149. http://gcc.gnu.org/PR8149
- 150. http://gcc.gnu.org/PR8160
- 151. http://gcc.gnu.org/PR5607
- 152. http://gcc.gnu.org/PR6579
- 153. http://gcc.gnu.org/PR6803
- 154. http://gcc.gnu.org/PR7176
- 155. http://gcc.gnu.org/PR7188
- 156. http://gcc.gnu.org/PR7306
- 157. http://gcc.gnu.org/PR7461
- 158. http://gcc.gnu.org/PR7524
- 159. http://gcc.gnu.org/PR7584
- 160. http://gcc.gnu.org/PR7676
- 161. http://gcc.gnu.org/PR7679
- 162. http://gcc.gnu.org/PR7811
- 163. http://gcc.gnu.org/PR7961
- 164. http://gcc.gnu.org/PR8071
- 165. http://gcc.gnu.org/PR8127
- 166. http://gcc.gnu.org/PR6745
- 167. http://gcc.gnu.org/PR8096
- 168. http://gcc.gnu.org/PR8127
- 169. http://gcc.gnu.org/PR8218
- 170. http://gcc.gnu.org/PR8287
- 171. http://gcc.gnu.org/PR8347
- 172. http://gcc.gnu.org/PR8348
- 173. http://gcc.gnu.org/PR8391
- 174. http://gcc.gnu.org/PR6627
- 175. http://gcc.gnu.org/PR6631
- 176. http://gcc.gnu.org/PR7102
- 177. http://gcc.gnu.org/PR7120
- 178. http://gcc.gnu.org/PR7209
- 179. http://gcc.gnu.org/PR7515
- 180. http://gcc.gnu.org/PR7814
- 181. http://gcc.gnu.org/PR8467
- 182. http://gcc.gnu.org/PR4890
- 183. http://gcc.gnu.org/PR7357
- 184. http://gcc.gnu.org/PR7358
- 185. http://gcc.gnu.org/PR7602
- 186. http://gcc.gnu.org/PR7862
- 187. http://gcc.gnu.org/PR8190
- 188. http://gcc.gnu.org/PR8524
- 189. http://gcc.gnu.org/PR5351
- 190. http://gcc.gnu.org/PR7591
- 191. http://gcc.gnu.org/PR6845
- 192. http://gcc.gnu.org/PR7034
- 193. http://gcc.gnu.org/PR7124
- 194. http://gcc.gnu.org/PR7174
- 195. http://gcc.gnu.org/PR7134
- 196. http://gcc.gnu.org/PR7375
- 197. http://gcc.gnu.org/PR7390
- 198. http://gcc.gnu.org/PR6890
- 199. http://gcc.gnu.org/PR6981
- 200. http://gcc.gnu.org/PR7242
- 201. http://gcc.gnu.org/PR7396
- 202. http://gcc.gnu.org/PR7630
- 203. http://gcc.gnu.org/PR7693
- 204. http://gcc.gnu.org/PR7723
- 205. http://gcc.gnu.org/PR7951
- 206. http://gcc.gnu.org/PR8146
- 207. http://gcc.gnu.org/PR5967
- 208. http://gcc.gnu.org/PR6984
- 209. http://gcc.gnu.org/PR7114
- 210. http://gcc.gnu.org/PR7130
- 211. http://gcc.gnu.org/PR7133
- 212. http://gcc.gnu.org/PR7380
- 213. http://gcc.gnu.org/PR8252
- 214. http://gcc.gnu.org/PR8451
- 215. http://gcc.gnu.org/PR7250
- 216. http://gcc.gnu.org/PR6668
- 217. http://gcc.gnu.org/PR7151
- 218. http://gcc.gnu.org/PR7335
- 219. http://gcc.gnu.org/PR7842
- 220. http://gcc.gnu.org/PR7856
- 221. http://gcc.gnu.org/PR7967
- 222. http://gcc.gnu.org/PR7374
- 223. http://gcc.gnu.org/PR7370
- 224. http://gcc.gnu.org/PR7409
- 225. http://gcc.gnu.org/PR8232
- 226. http://gcc.gnu.org/PR7623
- 227. http://gcc.gnu.org/PR8314
- 228. http://gcc.gnu.org/PR761
- 229. http://gcc.gnu.org/PR5610
- 230. http://gcc.gnu.org/PR7484
- 231. http://gcc.gnu.org/PR7531
- 232. http://gcc.gnu.org/PR8120
- 233. http://gcc.gnu.org/PR7320
- 234. http://gcc.gnu.org/PR7470
- 235. http://gcc.gnu.org/PR6410
- 236. http://gcc.gnu.org/PR6503
- 237. http://gcc.gnu.org/PR6642
- 238. http://gcc.gnu.org/PR7186
- 239. http://gcc.gnu.org/PR7216
- 240. http://gcc.gnu.org/PR7220
- 241. http://gcc.gnu.org/PR7222
- 242. http://gcc.gnu.org/PR7286
- 243. http://gcc.gnu.org/PR7442
- 244. http://gcc.gnu.org/PR7445
- 245. http://gcc.gnu.org/PR7291
- 246. mailto:gnu@gnu.org
- 247. http://www.gnu.org/home.html#ContactInfo
- 248. http://gcc.gnu.org/about.html
- 249. http://gcc.gnu.org/onlinedocs/
- 250. mailto:gcc-help@gcc.gnu.org
- 251. mailto:gcc@gnu.org
- 252. mailto:gcc@gcc.gnu.org
- 253. 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.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [14]GCC manuals. If that fails, the
- [15]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [16]gcc@gnu.org or
- [17]gcc@gcc.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 2003-08-28 [18]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. http://gcc.gnu.org/onlinedocs/
- 15. mailto:gcc-help@gcc.gnu.org
- 16. mailto:gcc@gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.1/changes.html
-
- GCC 3.1 Release Series
- 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*.
- * An important bug in the implementation of -fprefetch-loop-arrays
- has been fixed. Previously the optimization prefetched random
- blocks of memory for most targets except for i386.
- * The Java compiler now compiles Java programs much faster and also
- works with parallel make.
- * 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
- from stabs to DWARF2. This requires GDB 5.1.1 or later.
-
-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 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 Red Hat, has generalized the tree inlining
- infrastructure developed by 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.
- * Support for data prefetching instructions has been added to the
- GCC back end and several targets. A new __builtin_prefetch
- intrinsic is available to explicitly insert prefetch instructions
- and experimental support for loop array prefetching has been added
- (see -fprefetch-loop-array documentation).
- * Support for emitting debugging information for macros has been
- added for DWARF2. It is activated using -g3.
-
-New Languages and Language specific improvements
-
- C/C++
-
- * A few more [4]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
- table of the C, C++ and Objective-C front ends.
- * The preprocessor consumes less memory than the preprocessor in GCC
- 3.0, often significantly so. On normal input files, it typically
- consumes less memory than pre-3.0 cccp-based GCC, too.
-
- C++
-
- * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
- was a workaround to allow std compliant code to work with the
- non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
- * The C++ ABI has been fixed so that void (A::*)() const is mangled
- as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
- affects pointer to cv-qualified member function types.
- * The C++ ABI has been changed to correctly handle this code:
- struct A {
- void operator delete[] (void *, size_t);
- };
-
- struct B : public A {
- };
-
- new B[10];
-
- The amount of storage allocated for the array will be greater than
- it was in 3.0, in order to store the number of elements in the
- array, so that the correct size can be passed to operator delete[]
- when the array is deleted. Previously, the value passed to
- operator delete[] was unpredictable.
- This change will only affect code that declares a two-argument
- operator delete[] with a second parameter of type size_t in a base
- class, and does not override that definition in a derived class.
- * The C++ ABI has been changed so that:
- struct A {
- void operator delete[] (void *, size_t);
- void operator delete[] (void *);
- };
-
- does not cause unnecessary storage to be allocated when an array
- of A objects is allocated.
- This change will only affect code that declares both of these
- forms of operator delete[], and declared the two-argument form
- before the one-argument form.
- * The C++ ABI has been changed so that when a parameter is passed by
- value, any cleanup for that parameter is performed in the caller,
- as specified by the ia64 C++ ABI, rather than the called function
- as before. As a result, classes with a non-trivial destructor but
- a trivial copy constructor will be passed and returned by
- invisible reference, rather than by bitwise copy as before.
- * G++ now supports the "named return value optimization": for code
- like
- A f () {
- A a;
- ...
- return a;
- }
-
- 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 [5]the libstdc++-v3
- FAQ.
-
- Objective-C
-
- * Annoying linker warnings (due to incorrect code being generated)
- have been fixed.
- * If a class method cannot be found, the compiler no longer issues a
- warning if a corresponding instance method exists in the root
- class.
- * Forward @protocol declarations have been fixed.
- * Loading of categories has been fixed in certain situations (GNU
- run time only).
- * The class lookup in the run-time library has been rewritten so
- that class method dispatch is more than twice as fast as it used
- to be (GNU run time only).
-
- Java
-
- * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
- javax.transaction.
- * Property files and other system resources can be compiled into
- executables which use libgcj using the new gcj --resource feature.
- * libgcj has been ported to more platforms. In particular there is
- now a mostly-functional mingw32 (Windows) target port.
- * JNI and CNI invocation interfaces were implemented, so
- gcj-compiled Java code can now be called from a C/C++ application.
- * gcj can now use builtin functions for certain known methods, for
- instance Math.cos.
- * gcj can now automatically remove redundant array-store checks in
- some common cases.
- * The --no-store-checks optimization option was added. This can be
- used to omit runtime store checks for code which is known not to
- throw ArrayStoreException
- * The following third party interface standards were added to
- libgcj: org.w3c.dom and org.xml.sax.
- * java.security has been merged with GNU Classpath. The new package
- is now JDK 1.2 compliant, and much more complete.
- * A bytecode verifier was added to the libgcj interpreter.
- * java.lang.Character was rewritten to comply with the Unicode 3.0
- standard, and improve performance.
- * Partial support for many more locales was added to libgcj.
- * Socket timeouts have been implemented.
- * libgcj has been merged into a single shared library. There are no
- longer separate shared libraries for the garbage collector and
- zlib.
- * Several performance improvements were made to gcj and libgcj:
- + Hash synchronization (thin locks)
- + A special allocation path for finalizer-free objects
- + Thread-local allocation
- + Parallel GC, and other GC tweaks
-
- Fortran
-
- Fortran improvements are listed in [6]the Fortran documentation.
-
- Ada
-
- [7]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.
-
- Please note that the integration of the Ada front end is still work in
- progress.
-
-New Targets and Target Specific Improvements
-
- * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
- architecture used in new editions of Donald E. Knuth's The Art of
- Computer Programming.
- * [9]Axis Communications has contributed its port to the CRIS CPU
- architecture, used in the ETRAX system-on-a-chip series. See
- [10]Axis' developer site for technical information.
- * Alexandre Oliva, of Red Hat, has contributed a port to the
- [11]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.
- + 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
- [12]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
- MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
- will be added in next major release.
- + Following those improvements, targets for Pentium MMX, K6-2,
- K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
- added. Refer to the documentation on -march= and -mcpu=
- options for details.
- + For those targets that support it, -mfpmath=sse will cause
- the compiler to generate SSE/SSE2 instructions for floating
- point math instead of x87 instructions. Usually, this will
- lead to quicker code -- especially on the Pentium 4. Note
- that only scalar floating point instructions are used and GCC
- does not exploit SIMD features yet.
- + Prefetch support has been added to the Pentium III, Pentium
- 4, K6-2, K6-3, and Athlon series.
- + Code generated for floating point to integer conversions has
- been improved leading to better performance of many 3D
- applications.
- * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
- * C++ support for AIX has been improved.
- * Aldy Hernandez, of 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 to
- Motorola's AltiVec specs. See -maltivec.
-
-Obsolete Systems
-
- Support for a number of older systems has been declared obsolete in
- GCC 3.1. Unless there is activity to revive them, the next release of
- GCC will have their sources permanently removed.
-
- All configurations of the following processor architectures have been
- declared obsolete:
- * MIL-STD-1750A, 1750a-*-*
- * AMD A29k, a29k-*-*
- * Convex, c*-convex-*
- * Clipper, clipper-*-*
- * Elxsi, elxsi-*-*
- * Intel i860, i860-*-*
- * Sun picoJava, pj-*-* and pjl-*-*
- * Western Electric 32000, we32k-*-*
-
- Most configurations of the following processor architectures have been
- declared obsolete, but we are preserving a few systems which may have
- active developers. It is unlikely that the remaining systems will
- survive much longer unless we see definite signs of port activity.
- * Motorola 88000 except
- + Generic a.out, m88k-*-aout*
- + Generic SVR4, m88k-*-sysv4
- + OpenBSD, m88k-*-openbsd*
- * NS32k except
- + NetBSD, ns32k-*-netbsd*
- + OpenBSD, ns32k-*-openbsd*.
- * ROMP except
- + OpenBSD, romp-*-openbsd*.
-
- Finally, only some configurations of these processor architectures are
- being obsoleted.
- * Alpha:
- + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
- alpha*-*-osf[45], are still supported.)
- * ARM:
- + RISCiX, arm-*-riscix*.
- * i386:
- + 386BSD, i?86-*-bsd*
- + Chorus, i?86-*-chorusos*
- + DG/UX, i?86-*-dgux*
- + FreeBSD 1.x, i?86-*-freebsd1.*
- + IBM AIX, i?86-*-aix*
- + ISC UNIX, i?86-*-isc*
- + Linux with pre-BFD linker, i?86-*-linux*oldld*
- + NEXTstep, i?86-next-*
- + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
- + RTEMS/coff, i?86-*-rtemscoff*
- + RTEMS/go32, i?86-go32-rtems*
- + Sequent/BSD, i?86-sequent-bsd*
- + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
- i?86-sequent-sysv3*
- + SunOS, i?86-*-sunos*
- * Motorola 68000:
- + Altos, m68[k0]*-altos-*
- + Apollo, m68[k0]*-apollo-*
- + Apple A/UX, m68[k0]*-apple-*
- + Bull, m68[k0]*-bull-*
- + Convergent, m68[k0]*-convergent-*
- + Generic SVR3, m68[k0]*-*-sysv3*
- + ISI, m68[k0]*-isi-*
- + LynxOS, m68[k0]*-*-lynxos*
- + NEXT, m68[k0]*-next-*
- + RTEMS/coff, m68[k0]*-*-rtemscoff*
- + Sony, m68[k0]*-sony-*
- * MIPS:
- + DEC Ultrix, mips-*-ultrix* and mips-dec-*
- + Generic BSD, mips-*-bsd*
- + Generic System V, mips-*-sysv*
- + IRIX before version 5, mips-sgi-irix[1234]*
- + RiscOS, mips-*-riscos*
- + Sony, mips-sony-*
- + Tandem, mips-tandem-*
- * SPARC:
- + RTEMS/a.out, sparc-*-rtemsaout*.
-
-Documentation improvements
-
- * The old manual ("Using and Porting the GNU Compiler Collection")
- has been replaced by a users manual ("Using the GNU Compiler
- Collection") and a separate internals reference manual ("GNU
- Compiler Collection Internals").
- * More complete and much improved documentation about GCC's internal
- representation used by the C and C++ front ends.
- * Many cleanups and improvements in general.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
- are also [14]other ways to contact the FSF.
-
- These pages are maintained by [15]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [16]GCC manuals. If that fails, the
- [17]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [18]gcc@gnu.org or
- [19]gcc@gcc.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 2003-08-28 [20]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://gcc.gnu.org/benchmarks/
- 4. http://gcc.gnu.org/gcc-3.1/c99status.html
- 5. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_1
- 6. http://gcc.gnu.org/onlinedocs/g77/News.html
- 7. http://www.gnat.com/
- 8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
- 9. http://www.axis.com/
- 10. http://developer.axis.com/
- 11. http://www.superh.com/
- 12. http://www.x86-64.org/
- 13. mailto:gnu@gnu.org
- 14. http://www.gnu.org/home.html#ContactInfo
- 15. http://gcc.gnu.org/about.html
- 16. http://gcc.gnu.org/onlinedocs/
- 17. mailto:gcc-help@gcc.gnu.org
- 18. mailto:gcc@gnu.org
- 19. mailto:gcc@gcc.gnu.org
- 20. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
-
- GCC 3.0.4
-
- February 20, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
- series.
-
- 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.
-
- GCC 3.0.x has several new optimizations, new targets, new languages
- and many other new features, relative to GCC 2.95.x. See the [2]new
- features page for a more complete list.
-
- 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 new features, test results, bugfixes, etc to GCC. This
- [4]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [5]caveats to using GCC 3.0.x.
-
- 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.
- _________________________________________________________________
-
-Previous 3.0.x Releases
-
- December 20, 2001: GCC 3.0.3 has been released.
- October 25, 2001: GCC 3.0.2 has been released.
- August 20, 2001: GCC 3.0.1 has been released.
- June 18, 2001: GCC 3.0 has been released.
- _________________________________________________________________
-
- 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.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [14]GCC manuals. If that fails, the
- [15]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [16]gcc@gnu.org or
- [17]gcc@gcc.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 2003-08-28 [18]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.0/features.html
- 3. http://gcc.gnu.org/gcc-3.0/buildstat.html
- 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 5. http://gcc.gnu.org/gcc-3.0/caveats.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. http://gcc.gnu.org/onlinedocs/
- 15. mailto:gcc-help@gcc.gnu.org
- 16. mailto:gcc@gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/features.html
-
- GCC 3.0 New Features
-
-Additional changes in GCC 3.0.4
-
- * GCC 3.0 now supports newer versions of the [1]NetBSD operating
- system, which use the ELF object file format, on x86 processors.
- * Correct debugging information is generated from functions that
- have lines from multiple files (e.g. yacc output).
- * A fix for whitespace handling in the -traditional preprocessor,
- which can affect Fortran.
- * Fixes to the exception handling runtime.
- * More fixes for bad code generation in C++.
- * A fix for shared library generation under AIX 4.3.
- * Documentation updates.
- * Port of GCC to Tensilica's Xtensa processor contributed.
- * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
-
-Additional changes in GCC 3.0.3
-
- * A fix to correct an accidental change to the PowerPC ABI.
- * Fixes for bad code generation on a variety of architectures.
- * Improvements to the debugging information generated for C++
- classes.
- * Fixes for bad code generation in C++.
- * A fix to avoid crashes in the C++ demangler.
- * A fix to the C++ standard library to avoid buffer overflows.
- * Miscellaneous improvements for a variety of architectures.
-
-Additional changes in GCC 3.0.2
-
- * Fixes for bad code generation during loop unrolling.
- * Fixes for bad code generation by the sibling call optimization.
- * Minor improvements to x86 code generation.
- * Implementation of function descriptors in C++ vtables for IA64.
- * Numerous minor bug-fixes.
-
-Additional changes in GCC 3.0.1
-
- * C++ fixes for incorrect code-generation.
- * Improved cross-compiling support for the C++ standard library.
- * Fixes for some embedded targets that worked in GCC 2.95.3, but not
- in GCC 3.0.
- * Fixes for various exception-handling bugs.
- * A port to the S/390 architecture.
-
-General Optimizer Improvements
-
- * [2]Basic block reordering pass.
- * New if-conversion pass with support for conditional (predicated)
- execution.
- * New tail call and sibling call elimination optimizations.
- * New register renaming pass.
- * New (experimental) [3]static single assignment (SSA)
- representation support.
- * New dead-code elimination pass implemented using the SSA
- representation.
- * [4]Global null pointer test elimination.
- * [5]Global code hoisting/unification.
- * More builtins and optimizations for stdio.h, string.h and old BSD
- functions, as well as for ISO C99 functions.
- * New builtin __builtin_expect for giving hints to the branch
- predictor.
-
-New Languages and Language specific improvements
-
- * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
- and supported, including the run-time library containing most
- common non-GUI Java classes, a bytecode interpreter, and the Boehm
- conservative garbage collector. Many bugs have been fixed. GCJ can
- compile Java source or Java bytecodes to either native code or
- Java class files, and supports native methods written in either
- the standard JNI or the more efficient and convenient CNI.
- * Here is a [6]partial list of C++ improvements, both new features
- and those no longer supported.
- * New C++ ABI. On the IA-64 platform GCC is capable of
- inter-operating with other IA-64 compilers.
- * The new ABI also significantly reduces the size of symbol and
- debug information.
- * New [7]C++ support library and many C++ bug fixes, vastly
- improving our conformance to the ISO C++ standard.
- * New [8]inliner for C++.
- * Rewritten C preprocessor, integrated into the C, C++ and Objective
- C compilers, with very many improvements including ISO C99 support
- and [9]improvements to dependency generation.
- * Support for more [10]ISO C99 features.
- * Many improvements to support for checking calls to format
- functions such as printf and scanf, including support for ISO C99
- format features, extensions from the Single Unix Specification and
- GNU libc 2.2, checking of strfmon formats and features to assist
- in auditing for format string security bugs.
- * New warnings for C code that may have undefined semantics because
- of violations of sequence point rules in the C standard (such as a
- = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
- * Additional warning option -Wfloat-equal.
- * Improvements to -Wtraditional.
- * Fortran improvements are listed in [11]the Fortran documentation.
-
-New Targets and Target Specific Improvements
-
- * New x86 back-end, generating much improved code.
- * Support for a generic i386-elf target contributed.
- * New option to emit x86 assembly code using Intel style syntax
- (-mintel-syntax).
- * HPUX 11 support contributed.
- * Improved PowerPC code generation, including scheduled prologue and
- epilogue.
- * Port of GCC to Intel's IA-64 processor contributed.
- * Port of GCC to Motorola's MCore 210 and 340 contributed.
- * New unified back-end for Arm, Thumb and StrongArm contributed.
- * Port of GCC to Intel's XScale processor contributed.
- * Port of GCC to Atmel's AVR microcontrollers contributed.
- * Port of GCC to Mitsubishi's D30V processor contributed.
- * Port of GCC to Matsushita's AM33 processor (a member of the
- MN10300 processor family) contributed.
- * Port of GCC to Fujitsu's FR30 processor contributed.
- * Port of GCC to Motorola's 68HC11 and 68HC12 processors
- contributed.
- * Port of GCC to Sun's picoJava processor core contributed.
-
-Documentation improvements
-
- * Substantially rewritten and improved C preprocessor manual.
- * Many improvements to other documentation.
- * Manpages for gcc, cpp and gcov are now generated automatically
- from the master Texinfo manual, eliminating the problem of
- manpages being out of date. (The generated manpages are only
- extracts from the full manual, which is provided in Texinfo form,
- from which info, HTML, other formats and a printed manual can be
- generated.)
- * Generated info files are included in the release tarballs
- alongside their Texinfo sources, avoiding problems on some
- platforms with building makeinfo as part of the GCC distribution.
-
-Other significant improvements
-
- * Garbage collection used internally by the compiler for most memory
- allocation instead of obstacks.
- * Lengauer and Tarjan algorithm used for computing dominators in the
- CFG. This algorithm can be significantly faster and more space
- efficient than our older algorithm.
- * gccbug script provided to assist in submitting bug reports to our
- bug tracking system. (Bug reports previously submitted directly to
- our mailing lists, for which you received no bug tracking number,
- should be submitted again using gccbug if you can reproduce the
- problem with GCC 3.0.)
- * The internal libgcc library is [12]built as a shared library on
- systems that support it.
- * Extensive testsuite included with GCC, with many new tests. In
- addition to tests for GCC bugs that have been fixed, many tests
- have been added for language features, compiler warnings and
- builtin functions.
- * Additional language-independent warning options -Wpacked,
- -Wpadded, -Wunreachable-code and -Wdisabled-optimization.
- * Target-independent options -falign-functions, -falign-loops and
- -falign-jumps.
-
- Plus a great many bugfixes and almost all the [13]features found in
- GCC 2.95.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
- are also [15]other ways to contact the FSF.
-
- These pages are maintained by [16]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [17]GCC manuals. If that fails, the
- [18]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [19]gcc@gnu.org or
- [20]gcc@gcc.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 2003-08-28 [21]Valid XHTML 1.0
-
-References
-
- 1. http://www.netbsd.org/
- 2. http://gcc.gnu.org/news/reorder.html
- 3. http://gcc.gnu.org/news/ssa.html
- 4. http://gcc.gnu.org/news/null.html
- 5. http://gcc.gnu.org/news/unify.html
- 6. http://gcc.gnu.org/gcc-3.0/c++features.html
- 7. http://gcc.gnu.org/libstdc++/
- 8. http://gcc.gnu.org/news/inlining.html
- 9. http://gcc.gnu.org/news/dependencies.html
- 10. http://gcc.gnu.org/gcc-3.0/c99status.html
- 11. http://gcc.gnu.org/onlinedocs/g77/News.html
- 12. http://gcc.gnu.org/gcc-3.0/libgcc.html
- 13. http://gcc.gnu.org/gcc-2.95/features.html
- 14. mailto:gnu@gnu.org
- 15. http://www.gnu.org/home.html#ContactInfo
- 16. http://gcc.gnu.org/about.html
- 17. http://gcc.gnu.org/onlinedocs/
- 18. mailto:gcc-help@gcc.gnu.org
- 19. mailto:gcc@gnu.org
- 20. mailto:gcc@gcc.gnu.org
- 21. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/caveats.html
-
- 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.
- * The undocumented extension that allowed C programs to have a label
- at the end of a compound statement has been deprecated and may be
- removed in a future version. Programs that now generate a warning
- about this may be fixed by adding a null statement (a single
- semicolon) after the label.
- * The poorly documented extension that allowed string constants in
- C, C++ and Objective C to contain unescaped newlines has been
- deprecated and may be removed in a future version. Programs using
- this extension may be fixed in several ways: the bare newline may
- be replaced by \n, or preceded by \n\, or string concatenation may
- be used with the bare newline preceded by \n" and " placed at the
- start of the next line.
- * The Chill compiler is not included in GCC 3.0, because of the lack
- of a volunteer to convert it to use garbage collection.
- * Certain non-standard iostream methods from earlier versions of
- libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
- ostream::form, and istream::gets. Here are workaround hints for:
- [1]ostream::form, [2]filebuf::attach.
- * The new C++ ABI is not yet fully supported by current (as of
- 2001-07-01) releases and development versions of GDB, or any
- earlier versions. There is a problem setting breakpoints by line
- number, and other related issues that have been fixed in GCC 3.0
- but not yet handled in GDB:
- [3]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- _________________________________________________________________
-
- 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.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [7]GCC manuals. If that fails, the
- [8]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [9]gcc@gnu.org or
- [10]gcc@gcc.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 2003-08-28 [11]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html
- 2. http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html
- 3. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- 4. mailto:gnu@gnu.org
- 5. http://www.gnu.org/home.html#ContactInfo
- 6. http://gcc.gnu.org/about.html
- 7. http://gcc.gnu.org/onlinedocs/
- 8. mailto:gcc-help@gcc.gnu.org
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/index.html
-
- GCC 2.95
-
- July 31, 1999: The GNU project and the GCC/EGCS developers are pleased
- to announce the release of GCC version 2.95. This is the first release
- of GCC since the April 1999 GCC/EGCS reunification and includes nearly
- a year's worth of new development and bugfixes.
-
- August 19, 1999: GCC version 2.95.1 has been released.
-
- October 27, 1999: GCC version 2.95.2 has been released.
-
- March 16, 2001: GCC version 2.95.3 has been released.
-
- 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.
-
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
-
- The compiler has several new optimizations, new targets, new languages
- and other new features. See the [3]new features page for a more
- complete list of new features found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [4]installation instructions and [5]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [6]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [7]caveats to using GCC 2.95.
-
- Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org)
- [9]Find a GNU mirror site
- [10]Find a GCC mirror site
-
- For additional information about GCC please see the [11]GCC project
- web server or contact the [12]GCC development mailing list.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
- are also [14]other ways to contact the FSF.
-
- These pages are maintained by [15]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [16]GCC manuals. If that fails, the
- [17]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [18]gcc@gnu.org or
- [19]gcc@gcc.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 2003-08-28 [20]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/install/
- 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 7. http://gcc.gnu.org/gcc-2.95/caveats.html
- 8. ftp://ftp.gnu.org/pub/gnu/gcc/
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/mirrors.html
- 11. http://gcc.gnu.org/index.html
- 12. mailto:gcc@gcc.gnu.org
- 13. mailto:gnu@gnu.org
- 14. http://www.gnu.org/home.html#ContactInfo
- 15. http://gcc.gnu.org/about.html
- 16. http://gcc.gnu.org/onlinedocs/
- 17. mailto:gcc-help@gcc.gnu.org
- 18. mailto:gcc@gnu.org
- 19. mailto:gcc@gcc.gnu.org
- 20. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/features.html
-
- GCC 2.95 New Features
-
- * General Optimizer Improvements:
- + [1]Localized register spilling to improve speed and code
- density especially on small register class machines.
- + [2]Global CSE using lazy code motion algorithms.
- + [3]Improved global constant/copy propagation.
- + [4]Improved control flow graph analysis and manipulation.
- + [5]Local dead store elimination.
- + [6]Memory Load hoisting/store sinking in loops.
- + [7]Type based alias analysis is enabled by default. Note this
- feature will expose bugs in the Linux kernel. Please refer to
- the FAQ (as shipped with GCC 2.95) for additional information
- on this issue.
- + Major revamp of GIV detection, combination and simplification
- to improve loop performance.
- + Major improvements to register allocation and reloading.
- * New Languages and Language specific improvements
- + [8]Many C++ improvements.
- + [9]Many Fortran improvements.
- + [10]Java front-end has been integrated. [11]runtime library
- is available separately.
- + [12]ISO C99 support
- + [13]Chill front-end and runtime has been integrated.
- + Boehm garbage collector support in libobjc.
- + More support for various pragmas which appear in vendor
- include files
- * New Targets and Target Specific Improvements
- + [14]Sparc backend rewrite.
- + -mschedule=8000 will optimize code for PA8000 class
- processors; -mpa-risc-2-0 will generate code for PA2.0
- processors
- + Various micro-optimizations for the ia32 port. K6
- optimizations
- + Compiler will attempt to align doubles in the stack on the
- ia32 port
- + Alpha EV6 support
- + PowerPC 750
- + RS6000/PowerPC: -mcpu=401 was added as an alias for
- -mcpu=403. -mcpu=e603e was added to do -mcpu=603e and
- -msoft-float.
- + c3x, c4x
- + HyperSparc
- + SparcLite86x
- + sh4
- + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
- arm-linux)
- + vxWorks targets include support for vxWorks threads
- + StrongARM 110 and ARM9 support added. ARM Scheduling
- parameters rewritten.
- + Various changes to the MIPS port to avoid assembler macros,
- which in turn improves performance
- + Various performance improvements to the i960 port.
- + Major rewrite of ns32k port
- * Other significant improvements
- + [15]Ability to dump cfg information and display it using vcg.
- + The new faster scheme for fixing vendor header files is
- enabled by default.
- + Experimental internationalization support.
- + multibyte character support
- + Some compile-time speedups for pathological problems
- + Better support for complex types
- * Plus the usual mountain of bugfixes
- * Core compiler is based on the gcc2 development tree from Sept 30,
- 1998, so we have all of the [16]features found in GCC 2.8.
-
-Additional Changes in GCC 2.95.1
-
- * Generic bugfixes and improvements
- + Various documentation fixes related to the GCC/EGCS merger.
- + Fix memory management bug which could lead to spurious
- aborts, core dumps or random parsing errors in the compiler.
- + Fix a couple bugs in the dwarf1 and dwarf2 debug record
- support.
- + Fix infinite loop in the CSE optimizer.
- + Avoid undefined behavior in compiler FP emulation code
- + Fix install problem when prefix is overridden on the make
- install command.
- + Fix problem with unwanted installation of assert.h on some
- systems.
- + Fix problem with finding the wrong assembler in a single tree
- build.
- + Avoid increasing the known alignment of a register that is
- already known to be a pointer.
- * Platform specific bugfixes and improvements
- + Codegen bugfix for prologue/epilogue for cpu32 target.
- + Fix long long code generation bug for the Coldfire target.
- + Fix various aborts in the SH compiler.
- + Fix bugs in libgcc support library for the SH.
- + Fix alpha ev6 code generation bug.
- + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
- AIX platforms.
- + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
- + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
- targets.
- + Fix weak symbol handling for rs6000/ppc svr4 targets.
- + Fix various problems with 64bit code generation for the
- rs6000/ppc port.
- + Fix codegen bug which caused tetex to be mis-compiled on the
- x86.
- + Fix compiler abort in new cfg code exposed by x86 port.
- + Fix out of range array reference in code convert flat
- registers to the x87 stacked FP register file.
- + Fix minor vxworks configuration bug.
- + Fix return type of bsearch for SunOS 4.x.
- * Language & Runtime specific fixes.
- + The G++ signature extension has been deprecated. It will be
- removed in the next major release of G++. Use of signatures
- will result in a warning from the compiler.
- + Several bugs relating to templates and namespaces were fixed.
- + A bug that caused crashes when combining templates with -g on
- DWARF1 platforms was fixed.
- + Pointers-to-members, virtual functions, and multiple
- inheritance should now work together correctly.
- + Some code-generation bugs relating to function try blocks
- were fixed.
- + G++ is a little bit more lenient with certain archaic
- constructs than in GCC 2.95.
- + Fix to prevent shared library version #s from bring truncated
- to 1 digit
- + Fix missing std:: in the libstdc++ library.
- + Fix stream locking problems in libio.
- + Fix problem in java compiler driver.
-
-Additional Changes in GCC 2.95.2
-
- The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
- the optimizations performed by -fstrict-aliasing are valid according
- to the C and C++ standards, the optimization have caused some
- problems, particularly with old non-conforming code.
-
- The GCC developers are experimenting with ways to warn users about
- code which violates the C/C++ standards, but those warnings are not
- ready for widespread use at this time. Rather than wait for those
- warnings the GCC developers have chosen to disable -fstrict-aliasing
- by default for the GCC 2.95.2 release.
-
- We strongly encourage developers to find and fix code which violates
- the C/C++ standards as -fstrict-aliasing may be enabled by default in
- future releases. Use the option -fstrict-aliasing to re-enable these
- optimizations.
- * Generic bugfixes and improvements
- + Fix incorrectly optimized memory reference in global common
- subexpression elimination (GCSE) optimization pass.
- + Fix code generation bug in regmove.c in which it could
- incorrectly change a "const" value.
- + Fix bug in optimization of conditionals involving volatile
- memory references.
- + Avoid over-allocation of stack space for some procedures.
- + Fixed bug in the compiler which caused incorrect optimization
- of an obscure series of bit manipulations, shifts and
- arithmetic.
- + Fixed register allocator bug which caused teTeX to be
- mis-compiled on Sparc targets.
- + Avoid incorrect optimization of degenerate case statements
- for certain targets such as the ARM.
- + Fix out of range memory reference in the jump optimizer.
- + Avoid dereferencing null pointer in fix-header.
- + Fix test for GCC specific features so that it is possible to
- bootstrap with gcc-2.6.2 and older versions of GCC.
- + Fix typo in scheduler which could potentially cause out of
- range memory accesses.
- + Avoid incorrect loop reversal which caused incorrect code for
- certain loops on PowerPC targets.
- + Avoid incorrect optimization of switch statements on certain
- targets (for example the ARM).
- * Platform specific bugfixes and improvements
- + Work around bug in Sun V5.0 compilers which caused bootstrap
- comparison failures on Sparc targets.
- + Fix Sparc backend bug which caused aborts in final.c.
- + Fix sparc-hal-solaris2* configuration fragments.
- + Fix bug in sparc block profiling.
- + Fix obscure code generation bug for the PARISC targets.
- + Define __STDC_EXT__ for HPUX configurations.
- + Various POWERPC64 code generation bugfixes.
- + Fix abort for PPC targets using ELF (ex GNU/Linux).
- + Fix collect2 problems for AIX targets.
- + Correct handling of .file directive for PPC targets.
- + Fix bug in fix_trunc x86 patterns.
- + Fix x86 port to correctly pop the FP stack for functions that
- return structures in memory.
- + Fix minor bug in strlen x86 pattern.
- + Use stabs debugging instead of dwarf1 for x86-solaris
- targets.
- + Fix template repository code to handle leading underscore in
- mangled names.
- + Fix weak/weak alias support for OpenBSD.
- + GNU/Linux for the ARM has C++ compatible include files.
- * Language & Runtime specific fixes.
- + Fix handling of constructor attribute in the C front-end
- which caused problems building the Chill runtime library on
- some targets.
- + Fix minor problem merging type qualifiers in the C front-end.
- + Fix aliasing bug for pointers and references (C/C++).
- + Fix incorrect "non-constant initializer bug" when
- -traditional or -fwritable-strings is enabled.
- + Fix build error for Chill front-end on SunOS.
- + Do not complain about duplicate instantiations when using
- -frepo (C++).
- + Fix array bounds handling in C++ front-end which caused
- problems with dwarf debugging information in some
- circumstances.
- + Fix minor namespace problem.
- + Fix problem linking java programs.
-
-Additional Changes in GCC 2.95.3
-
- * Generic bugfixes and improvements
- + Fix numerous problems that caused incorrect optimization in
- the register reloading code.
- + Fix numerous problems that caused incorrect optimization in
- the loop optimizer.
- + Fix aborts in the functions build_insn_chain and scan_loops
- under some circumstances.
- + Fix an alias analysis bug.
- + Fix an infinite compilation bug in the combiner.
- + A few problems with complex number support have been fixed.
- + It is no longer possible for gcc to act as a fork bomb when
- installed incorrectly.
- + The -fpack-struct option should be recognized now.
- + Fixed a bug that caused incorrect code to be generated due to
- a lost stack adjustment.
- * Platform specific bugfixes and improvements
- + Support building ARM toolchains hosted on Windows.
- + Fix attribute calculations in ARM toolchains.
- + arm-linux support has been improved.
- + Fix a PIC failure on sparc targets.
- + On ix86 targets, the regparm attribute should now work
- reliably.
- + Several updates for the h8300 port.
- + Fix problem building libio with glibc 2.2.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [17]gnu@gnu.org. There
- are also [18]other ways to contact the FSF.
-
- These pages are maintained by [19]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [20]GCC manuals. If that fails, the
- [21]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [22]gcc@gnu.org or
- [23]gcc@gcc.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 2003-08-28 [24]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/news/spill.html
- 2. http://gcc.gnu.org/news/lcm.html
- 3. http://gcc.gnu.org/news/cprop.html
- 4. http://gcc.gnu.org/news/cfg.html
- 5. http://gcc.gnu.org/news/dse.html
- 6. http://gcc.gnu.org/news/hoist.html
- 7. http://gcc.gnu.org/news/alias.html
- 8. http://gcc.gnu.org/gcc-2.95/c++features.html
- 9. http://gcc.gnu.org/onlinedocs/g77/News.html
- 10. http://gcc.gnu.org/java/gcj-announce.txt
- 11. http://gcc.gnu.org/news/javaannounce.html
- 12. http://gcc.gnu.org/c99status.html
- 13. http://gcc.gnu.org/news/chill.html
- 14. http://gcc.gnu.org/news/sparc.html
- 15. http://gcc.gnu.org/news/egcs-vcg.html
- 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 17. mailto:gnu@gnu.org
- 18. http://www.gnu.org/home.html#ContactInfo
- 19. http://gcc.gnu.org/about.html
- 20. http://gcc.gnu.org/onlinedocs/
- 21. mailto:gcc-help@gcc.gnu.org
- 22. mailto:gcc@gnu.org
- 23. mailto:gcc@gcc.gnu.org
- 24. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/caveats.html
-
- GCC 2.95 Caveats
-
- * GCC 2.95 will issue an error for invalid asm statements that had
- been silently accepted by earlier versions of the compiler. This
- is particularly noticeable when compiling older versions of the
- Linux kernel (2.0.xx). Please refer to the FAQ (as shipped with
- GCC 2.95) for more information on this issue.
- * GCC 2.95 implements type based alias analysis to disambiguate
- memory references. Some programs, particularly the Linux kernel
- violate ANSI/ISO aliasing rules and therefore may not operate
- correctly when compiled with GCC 2.95. Please refer to the FAQ (as
- shipped with GCC 2.95) for more information on this issue.
- * GCC 2.95 has a known bug in its handling of complex variables for
- 64bit targets. Instead of silently generating incorrect code, GCC
- 2.95 will issue a fatal error for situations it can not handle.
- This primarily affects the Fortran community as Fortran makes more
- use of complex variables than C or C++.
- * GCC 2.95 has an integrated libstdc++, but does not have an
- integrated libg++. Furthermore old libg++ releases will not work
- with GCC 2.95. You can retrieve a recent copy of libg++ from the
- [1]GCC ftp server.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86 GNU/Linux
- platforms with shared libraries.
- * In general, GCC 2.95 is more rigorous about rejecting invalid C++
- code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
- or EGCS 1.1. As a result it may be necessary to fix C++ code
- before it will compile with GCC 2.95.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- The flag -fpermissive may allow some non-conforming code to
- compile with GCC 2.95.
- * GCC 2.95 compiled C++ code is not binary compatible with EGCS
- 1.1.x, EGCS 1.0.x or GCC 2.8.x.
- * GCC 2.95 does not have changes from the GCC 2.8 tree that were
- made between Sept 30, 1998 and April 30, 1999 (the official end of
- the GCC 2.8 project). Future GCC releases will include all the
- changes from the defunct GCC 2.8 sources.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There
- are also [3]other ways to contact the FSF.
-
- These pages are maintained by [4]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [5]GCC manuals. If that fails, the
- [6]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [7]gcc@gnu.org or
- [8]gcc@gcc.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 2003-08-28 [9]Valid XHTML 1.0
-
-References
-
- 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
- 2. mailto:gnu@gnu.org
- 3. http://www.gnu.org/home.html#ContactInfo
- 4. http://gcc.gnu.org/about.html
- 5. http://gcc.gnu.org/onlinedocs/
- 6. mailto:gcc-help@gcc.gnu.org
- 7. mailto:gcc@gnu.org
- 8. mailto:gcc@gcc.gnu.org
- 9. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/index.html
-
- EGCS 1.1
-
- September 3, 1998: We are pleased to announce the release of EGCS 1.1.
- December 1, 1998: We are pleased to announce the release of EGCS
- 1.1.1.
- March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
-
- EGCS is a free software project to further the development of the GNU
- compilers using an open development environment.
-
- EGCS 1.1 is a major new release of the EGCS compiler system. It has
- been [1]extensively tested and is believed to be stable and suitable
- for widespread use.
-
- EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from GCC up to June 6, 1998.
-
- EGCS 1.1 also contains many improvements and features not found in GCC
- or in older versions of EGCS:
- * Global common subexpression elimination and global constant/copy
- propagation (aka [2]gcse)
- * Ongoing improvements to the [3]alias analysis support to allow for
- better optimizations throughout the compiler.
- * Vastly improved [4]C++ compiler and integrated C++ runtime
- libraries.
- * Fixes for the /tmp symlink race security problems.
- * New targets including mips16, arm-thumb and 64 bit PowerPC.
- * Improvements to GNU Fortran (g77) compiler and runtime library
- made since g77 version 0.5.23.
-
- See the [5]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
-
- EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
- 1.1:
- * General improvements and fixes
- + Avoid some stack overflows when compiling large functions.
- + Avoid incorrect loop invariant code motions.
- + Fix some core dumps on Linux kernel code.
- + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
- + Fix code generation problem in gcse.
- + Various documentation related fixes.
- * g++/libstdc++ improvements and fixes
- + MT safe EH fix for setjmp/longjmp based exception handling.
- + Fix a few bad interactions between optimization and exception
- handling.
- + Fixes for demangling of template names starting with "__".
- + Fix a bug that would fail to run destructors in some cases
- with -O2.
- + Fix 'new' of classes with virtual bases.
- + Fix crash building Qt on the Alpha.
- + Fix failure compiling WIFEXITED macro on GNU/Linux.
- + Fix some -frepo failures.
- * g77 and libf2c improvements and fixes
- + Various documentation fixes.
- + Avoid compiler crash on RAND intrinsic.
- + Fix minor bugs in makefiles exposed by BSD make programs.
- + Define _XOPEN_SOURCE for libI77 build to avoid potential
- problems on some 64-bit systems.
- + Fix problem with implicit endfile on rewind.
- + Fix spurious recursive I/O errors.
- * platform specific improvements and fixes
- + Match all versions of UnixWare7.
- + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
- + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
- from unsigned ints to double precision floats.
- + Fix ARM ABI issue with NetBSD.
- + Fix a few arm code generation bugs.
- + Fixincludes will fix additional broken SCO OpenServer header
- files.
- + Fix a m68k backend bug which caused invalid offsets in reg+d
- addresses.
- + Fix problems with 64bit AIX 4.3 support.
- + Fix handling of long longs for varargs/stdarg functions on
- the ppc.
- + Minor fixes to CPP predefines for Windows.
- + Fix code generation problems with gpr<->fpr copies for 64bit
- ppc.
- + Fix a few coldfire code generation bugs.
- + Fix some more header file problems on SunOS 4.x.
- + Fix assert.h handling for RTEMS.
- + Fix Windows handling of TREE_SYMBOL_REFERENCED.
- + Fix x86 compiler abort in reg-stack pass.
- + Fix cygwin/windows problem with section attributes.
- + Fix Alpha code generation problem exposed by SMP Linux
- kernels.
- + Fix typo in m68k 32->64bit integer conversion.
- + Make sure target libraries build with -fPIC for PPC & Alpha
- targets.
-
- EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
- 1.1.1:
- * General improvements and fixes
- + Fix bug in loop optimizer which caused the SPARC (and
- potentially other) ports to segfault.
- + Fix infinite recursion in alias analysis and combiner code.
- + Fix bug in regclass preferencing.
- + Fix incorrect loop reversal which caused incorrect code to be
- generated for several targets.
- + Fix return value for builtin memcpy.
- + Reduce compile time for certain loops which exposed quadratic
- behavior in the loop optimizer.
- + Fix bug which caused volatile memory to be written multiple
- times when only one write was needed/desired.
- + Fix compiler abort in caller-save.c
- + Fix combiner bug which caused incorrect code generation for
- certain division by constant operations.
- + Fix incorrect code generation due to a bug in range check
- optimizations.
- + Fix incorrect code generation due to mis-handling of
- clobbered values in CSE.
- + Fix compiler abort/segfault due to incorrect register
- splitting when unrolling loops.
- + Fix code generation involving autoincremented addresses with
- ternary operators.
- + Work around bug in the scheduler which caused qt to be
- mis-compiled on some platforms.
- + Fix code generation problems with -fshort-enums.
- + Tighten security for temporary files.
- + Improve compile time for codes which make heavy use of
- overloaded functions.
- + Fix multiply defined constructor/destructor symbol problems.
- + Avoid setting bogus RPATH environment variable during
- bootstrap.
- + Avoid GNU-make dependencies in the texinfo subdir.
- + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
- --enable-cpp=<dirname> can be used to specify an additional
- install directory for the cpp wrapper script.
- + Fix CSE bug which caused incorrect label-label refs to appear
- on some platforms.
- + Avoid linking in EH routines from libgcc if they are not
- needed.
- + Avoid obscure bug in aliasing code.
- + Fix bug in weak symbol handling.
- * Platform-specific improvements and fixes
- + Fix detection of PPro/PII on Unixware 7.
- + Fix compiler segfault when building spec99 and other programs
- for SPARC targets.
- + Fix code-generation bugs for integer and floating point
- conditional move instructions on the PPro/PII.
- + Use fixincludes to fix byteorder problems on i?86-*-sysv.
- + Fix build failure for the arc port.
- + Fix floating point format configuration for i?86-gnu port.
- + Fix problems with hppa1.0-hp-hpux10.20 configuration when
- threads are enabled.
- + Fix coldfire code generation bugs.
- + Fix "unrecognized insn" problems for Alpha and PPC ports.
- + Fix h8/300 code generation problem with floating point values
- in memory.
- + Fix unrecognized insn problems for the m68k port.
- + Fix namespace-pollution problem for the x86 port.
- + Fix problems with old assembler on x86 NeXT systems.
- + Fix PIC code-generation problems for the SPARC port.
- + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
- + Fix minor ISO namespace violation in Alpha varargs/stdarg
- support.
- + Fix incorrect "braf" instruction usage for the SH port.
- + Fix minor bug in va-sh which prevented its use with -ansi.
- + Fix problems recognizing and supporting FreeBSD.
- + Handle OpenBSD systems correctly.
- + Minor fixincludes fix for Digital UNIX 4.0B.
- + Fix problems with ctors/dtors in SCO shared libraries.
- + Abort instead of generating incorrect code for PPro/PII
- floating point conditional moves.
- + Avoid multiply defined symbols on Linux/GNU systems using
- libc-5.4.xx.
- + Fix abort in alpha compiler.
- * Fortran-specific fixes
- + Fix the IDate intrinsic (VXT) (in libg2c) so the returned
- year is in the documented, non-Y2K-compliant range of 0-99,
- instead of being returned as 100 in the year 2000.
- + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
- milliseconds value properly in Values(8).
- + Fix the `LStat' intrinsic (in libg2c) to return device-ID
- information properly in SArray(7).
-
- Each release includes installation instructions in both HTML and
- plaintext forms (see the INSTALL directory in the toplevel directory
- of the distribution). However, we also keep the most up to date
- [6]installation instructions and [7]build/test status on our web page.
- We will update those pages as new information becomes available.
-
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [8]amazing
- group of volunteers is what makes EGCS successful.
-
- And finally, we can't in good conscience fail to mention some
- [9]caveats to using EGCS 1.1.
-
- Download EGCS from egcs.cygnus.com (USA California).
-
- The EGCS 1.1 release is also available on many mirror sites.
- [10]Goto mirror list to find a closer site.
- _________________________________________________________________
-
- 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.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [14]GCC manuals. If that fails, the
- [15]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [16]gcc@gnu.org or
- [17]gcc@gcc.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 2003-08-28 [18]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
- 2. http://gcc.gnu.org/news/gcse.html
- 3. http://gcc.gnu.org/news/alias.html
- 4. http://gcc.gnu.org/egcs-1.1/c++features.html
- 5. http://gcc.gnu.org/egcs-1.1/features.html
- 6. http://gcc.gnu.org/install/
- 7. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/egcs-1.1/caveats.html
- 10. http://gcc.gnu.org/mirrors.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. http://gcc.gnu.org/onlinedocs/
- 15. mailto:gcc-help@gcc.gnu.org
- 16. mailto:gcc@gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/features.html
-
- EGCS 1.1 new features
-
- * Integrated GNU Fortran (g77) compiler and runtime library with
- improvements, based on [1]g77 version 0.5.23.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Compiler implements [3]global common subexpression elimination and
- global copy/constant propagation.
- * More major improvements in the [4]alias analysis code.
- * More major improvements in the exception handling code to improve
- performance, lower static overhead and provide the infrastructure
- for future improvements.
- * The infamous /tmp symlink race security problems have been fixed.
- * The regmove optimization pass has been nearly completely rewritten
- to improve performance of generated code.
- * The compiler now recomputes register usage information before
- local register allocation. By providing more accurate information
- to the priority based allocator, we get better register
- allocation.
- * The register reloading phase of the compiler optimizes spill code
- much better than in previous releases.
- * Some bad interactions between the register allocator and
- instruction scheduler have been fixed, resulting in much better
- code for certain programs. Additionally, we have tuned the
- scheduler in various ways to improve performance of generated code
- for some architectures.
- * The compiler's branch shortening algorithms have been
- significantly improved to work better on targets which align jump
- targets.
- * The compiler now supports -Os to prefer optimizing for code space
- over optimizing for code speed.
- * The compiler will now totally eliminate library calls which
- compute constant values. This primarily helps targets with no
- integer div/mul support and targets without floating point
- support.
- * The compiler now supports an extensive "--help" option.
- * cpplib has been greatly improved and may be suitable for limited
- use.
- * Memory footprint for the compiler has been significantly reduced
- for some pathological cases.
- * The time to build EGCS has been improved for certain targets
- (particularly the alpha and mips platforms).
- * Many infrastructure improvements throughout the compiler, plus the
- usual mountain of bugfixes and minor improvements.
- * Target dependent improvements:
- + SPARC port now includes V8 plus and V9 support as well as
- performance tuning for Ultra class machines. The SPARC port
- now uses the Haifa scheduler.
- + Alpha port has been tuned for the EV6 processor and has an
- optimized expansion of memcpy/bzero. The Alpha port now uses
- the Haifa scheduler.
- + RS6000/PowerPC: support for the Power64 architecture and AIX
- 4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
- + x86: Alignment of static store data and jump targets is per
- Intel recommendations now. Various improvements throughout
- the x86 port to improve performance on Pentium processors
- (including improved epilogue sequences for Pentium chips and
- backend improvements which should help register allocation on
- all x86 variants. Conditional move support has been fixed and
- enabled for PPro processors. The x86 port also better
- supports 64bit operations now. Unixware 7, a System V Release
- 5 target, is now supported and SCO OpenServer targets can
- support GAS.
- + MIPS has improved multiply/multiply-add support and now
- includes mips16 ISA support.
- + M68k has many micro-optimizations and Coldfire fixes.
- * Core compiler is based on the GCC development tree from June 9,
- 1998, so we have all of the [5]features found in GCC 2.8.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [11]gcc@gnu.org or
- [12]gcc@gcc.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 2003-08-28 [13]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/g77/News.html
- 2. http://gcc.gnu.org/egcs-1.1/c++features.html
- 3. http://gcc.gnu.org/news/gcse.html
- 4. http://gcc.gnu.org/news/alias.html
- 5. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. http://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/caveats.html
-
- EGCS 1.1 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with EGCS;
- HJ Lu has made a libg++-2.8.1.2 snapshot available which may work
- with EGCS.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86-linux
- platforms with shared libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See the
- FAQ (as shipped with EGCS 1.1) for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
- a result it may be necessary to fix C++ code before it will
- compile with EGCS.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- * EGCS 1.1 compiled C++ code is not binary compatible with EGCS
- 1.0.x or GCC 2.8.x due to changes necessary to support thread safe
- exception handling.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [1]gnu@gnu.org. There
- are also [2]other ways to contact the FSF.
-
- These pages are maintained by [3]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [4]GCC manuals. If that fails, the
- [5]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [6]gcc@gnu.org or
- [7]gcc@gcc.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 2003-08-28 [8]Valid XHTML 1.0
-
-References
-
- 1. mailto:gnu@gnu.org
- 2. http://www.gnu.org/home.html#ContactInfo
- 3. http://gcc.gnu.org/about.html
- 4. http://gcc.gnu.org/onlinedocs/
- 5. mailto:gcc-help@gcc.gnu.org
- 6. mailto:gcc@gnu.org
- 7. mailto:gcc@gcc.gnu.org
- 8. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html
-
- EGCS 1.0.3
-
- May 15, 1998
-
- We are pleased to announce the release of EGCS 1.0.3.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
- problems reported by Red Hat for builds of Red Hat 5.1.
- * Generic bugfixes:
- + Fix a typo in the libio library which resulted in incorrect
- behavior of istream::get.
- + Fix the Fortran negative array index problem.
- + Fix a major problem with the ObjC runtime thread support
- exposed by glibc2.
- + Reduce memory consumption of the Haifa scheduler.
- * Target specific bugfixes:
- + Fix one x86 floating point code generation bug exposed by
- glibc2 builds.
- + Fix one x86 internal compiler error exposed by glibc2 builds.
- + Fix profiling bugs on the Alpha.
- + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
- + Fix rs6000/ppc bug when converting values from integer types
- to floating point types.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.3 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- GNU/Linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release instead of a modified copy.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.3 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.3 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.3 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [11]gcc@gnu.org or
- [12]gcc@gcc.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 2003-08-28 [13]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. http://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html
-
- EGCS 1.0.2
-
- March 16, 1998
-
- We are pleased to announce the release of EGCS 1.0.2.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
- serious problems in EGCS 1.0.1.
- * General improvements and fixes
- + Memory consumption significantly reduced, especially for
- templates and inline functions.
- + Fix various problems with glibc2.1.
- + Fix loop optimization bug exposed by rs6000/ppc port.
- + Fix to avoid potential code generation problems in jump.c.
- + Fix some undefined symbol problems in dwarf1 debug support.
- * g++/libstdc++ improvements and fixes
- + libstdc++ in the EGCS release has been updated and should be
- link compatible with libstdc++-2.8.
- + Various fixes in libio/libstdc++ to work better on Linux
- systems.
- + Fix problems with duplicate symbols on systems that do not
- support weak symbols.
- + Memory corruption bug and undefined symbols in bastring have
- been fixed.
- + Various exception handling fixes.
- + Fix compiler abort for very long thunk names.
- * g77 improvements and fixes
- + Fix compiler crash for omitted bound in Fortran CASE
- statement.
- + Add missing entries to g77 lang-options.
- + Fix problem with -fpedantic in the g77 compiler.
- + Fix "backspace" problem with g77 on alphas.
- + Fix x86 backend problem with Fortran literals and -fpic.
- + Fix some of the problems with negative subscripts for g77 on
- alphas.
- + Fixes for Fortran builds on cygwin32/mingw32.
- * platform specific improvements and fixes
- + Fix long double problems on x86 (exposed by glibc).
- + x86 ports define i386 again to keep imake happy.
- + Fix exception handling support on NetBSD ports.
- + Several changes to collect2 to fix many problems with AIX.
- + Define __ELF__ for rs6000/linux.
- + Fix -mcall-linux problem on rs6000/linux.
- + Fix stdarg/vararg problem for rs6000/linux.
- + Allow autoconf to select a proper install problem on AIX 3.1.
- + m68k port support includes -mcpu32 option as well as cpu32
- multilibs.
- + Fix stdarg bug for irix6.
- + Allow EGCS to build on irix5 without the gnu assembler.
- + Fix problem with static linking on sco5.
- + Fix bootstrap on sco5 with native compiler.
- + Fix for abort building newlib on H8 target.
- + Fix fixincludes handling of math.h on SunOS.
- + Minor fix for Motorola 3300 m68k systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.2 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.2 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.2 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.2 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [11]gcc@gnu.org or
- [12]gcc@gcc.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 2003-08-28 [13]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. http://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html
-
- EGCS 1.0.1
-
- January 6, 1998
-
- We are pleased to announce the release of EGCS 1.0.1.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
- critical bugs and add support for Red Hat 5.0 Linux. Changes since the
- EGCS 1.0 release:
- * Add support for Red Hat 5.0 Linux and better support for Linux
- systems using glibc2.
- Many programs failed to link when compiled with EGCS 1.0 on Red
- Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1
- should fix these problems.
- * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
- handling interfaces.
- To avoid future compatibility problems, we strongly urge anyone
- who is planning on distributing shared libraries that contain C++
- code to upgrade to EGCS 1.0.1 first.
- Soon after EGCS 1.0 was released, the GCC developers made some
- incompatible changes in libgcc's exception handling interfaces.
- These changes were needed to solve problems on some platforms.
- This means that GCC 2.8.0, when released, will not be seamlessly
- compatible with shared libraries built by EGCS 1.0. The reason is
- that the libgcc.a in GCC 2.8.0 will not contain a function needed
- by the old interface.
- The result of this is that there may be compatibility problems
- with shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
- With EGCS 1.0.1, generated code uses the new (GCC 2.8.0)
- interface, and libgcc.a has the support routines for both the old
- and the new interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be
- freely mixed, and EGCS 1.0.1 and GCC 2.8.0 code can be freely
- mixed).
- The maintainers of GCC 2.x have decided against including seamless
- support for the old interface in 2.8.0, since it was never
- "official", so to avoid future compatibility problems we recommend
- against distributing any shared libraries built by EGCS 1.0 that
- contain C++ code (upgrade to 1.0.1 and use that).
- * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
- The x86 changes fix code generation errors exposed when building
- glibc2 and the Linux dynamic linker (ld.so).
- The hppa change fixes a compiler abort when configured for use
- with RTEMS.
- The MIPS changes fix problems with the definition of LONG_MAX on
- newer systems, allow for command line selection of the target ABI,
- and fix one code generation problem.
- The rs6000/ppc change fixes some problems with passing structures
- to varargs/stdarg functions.
- * A few machine independent bugfixes, mostly to fix code generation
- errors when building Linux kernels or glibc.
- * Fix a few critical exception handling and template bugs in the C++
- compiler.
- * Fix Fortran namelist bug on alphas.
- * Fix build problems on x86-solaris systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.1 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.1 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.1 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.1 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [11]gcc@gnu.org or
- [12]gcc@gcc.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 2003-08-28 [13]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. http://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.html
-
- EGCS 1.0
-
- December 3, 1997
-
- We are pleased to announce the release of EGCS 1.0.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- An important goal of EGCS is to allow wide scale testing of
- experimental features and optimizations; therefore, EGCS contains some
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS 1.0 also contains many improvements and features not found in GCC
- 2.7 and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features.
-
- The EGCS 1.0 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: The T1 into our main California offices has been 100%
- saturated since shortly after the release. We've added an EGCS 1.0
- mirror at our Massachusetts office to help share the load. We also
- encourage folks to use the many mirrors available throughout the
- world.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0 release should be available on most mirror sites by now.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [9]GCC manuals. If that fails, the
- [10]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [11]gcc@gnu.org or
- [12]gcc@gcc.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 2003-08-28 [13]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. http://gcc.gnu.org/onlinedocs/
- 10. mailto:gcc-help@gcc.gnu.org
- 11. mailto:gcc@gnu.org
- 12. mailto:gcc@gcc.gnu.org
- 13. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/features.html
-
- EGCS 1.0 features
-
- * Core compiler is based on the gcc2 development tree from Aug 2,
- 1997, so we have most of the [1]features found in GCC 2.8.
- * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * New instruction scheduler from IBM Haifa which includes support
- for function wide instruction scheduling as well as superscalar
- scheduling.
- * Significantly improved alias analysis code.
- * Improved register allocation for two address machines.
- * Significant code generation improvements for Fortran code on
- Alphas.
- * Various optimizations from the g77 project as well as improved
- loop optimizations.
- * Dwarf2 debug format support for some targets.
- * egcs libstdc++ includes the SGI STL implementation without
- changes.
- * As a result of these and other changes, egcs libstc++ is not
- binary compatible with previous releases of libstdc++.
- * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The
- SCO Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0
- and 1.1), Support for RTEMS on several embedded targets, Support
- for arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
- MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc.
- * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
- * RS6000/PowerPC ports generate code which can run on all
- RS6000/PowerPC variants by default.
- * -mcpu= and -march= switches for the x86 port to allow better
- control over how the x86 port generates code.
- * Includes the template repository patch (aka repo patch); note the
- new template code makes repo obsolete for ELF systems using gnu-ld
- such as Linux.
- * Plus the usual assortment of bugfixes and improvements.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [3]gnu@gnu.org. There
- are also [4]other ways to contact the FSF.
-
- These pages are maintained by [5]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [6]GCC manuals. If that fails, the
- [7]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [8]gcc@gnu.org or
- [9]gcc@gcc.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 2003-08-28 [10]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 2. http://gcc.gnu.org/egcs-1.0/c++features.html
- 3. mailto:gnu@gnu.org
- 4. http://www.gnu.org/home.html#ContactInfo
- 5. http://gcc.gnu.org/about.html
- 6. http://gcc.gnu.org/onlinedocs/
- 7. mailto:gcc-help@gcc.gnu.org
- 8. mailto:gcc@gnu.org
- 9. mailto:gcc@gcc.gnu.org
- 10. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/caveats.html
-
- EGCS 1.0 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with egc; HJ
- Lu has made a libg++-2.8.1.2 available which may work with EGCS.
- Note most C++ programs only need libstdc++.
- * Note that using -pedantic or -Wreturn-type can cause an explosion
- in the amount of memory needed for template-heavy C++ code, such
- as code that uses STL. Also note that -Wall includes
- -Wreturn-type, so if you use -Wall you will need to specify
- -Wno-return-type to turn it off.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, and mips based platforms. Exception
- handling is known to work on x86-linux platforms with shared
- libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See the
- FAQ (as shipped with EGCS 1.0) for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than G++ 2.7. As a result it may be
- necessary to fix C++ code before it will compile with EGCS.
- * G++ is also aggressively tracking the C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of G++) may no longer be accepted.
- * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
- 1.0.x and later releases should work with Red Hat Linux 5.0.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [1]gnu@gnu.org. There
- are also [2]other ways to contact the FSF.
-
- These pages are maintained by [3]the GCC team.
-
-
- For questions related to the use of GCC, please consult these web
- pages and the [4]GCC manuals. If that fails, the
- [5]gcc-help@gcc.gnu.org mailing list might help.
- Please send comments on these web pages and the development of GCC
- to our public developer mailing list at [6]gcc@gnu.org or
- [7]gcc@gcc.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 2003-08-28 [8]Valid XHTML 1.0
-
-References
-
- 1. mailto:gnu@gnu.org
- 2. http://www.gnu.org/home.html#ContactInfo
- 3. http://gcc.gnu.org/about.html
- 4. http://gcc.gnu.org/onlinedocs/
- 5. mailto:gcc-help@gcc.gnu.org
- 6. mailto:gcc@gnu.org
- 7. mailto:gcc@gcc.gnu.org
- 8. http://validator.w3.org/check/referer
-======================================================================
diff --git a/gnu/usr.bin/gcc/gcc/builtins.c b/gnu/usr.bin/gcc/gcc/builtins.c
index b0ca7105aff..c30d821b1aa 100644
--- a/gnu/usr.bin/gcc/gcc/builtins.c
+++ b/gnu/usr.bin/gcc/gcc/builtins.c
@@ -2353,7 +2353,7 @@ expand_builtin_bzero (exp)
return result;
}
-/* Expand expression EXP, which is a call to the memcmp or the strcmp builtin.
+/* Expand expression EXP, which is a call to the memcmp built-in function.
ARGLIST is the argument list for this call. Return 0 if we failed and the
caller should emit a normal call, otherwise try to get the result in
TARGET, if convenient (and in mode MODE, if that's convenient). */
@@ -2418,7 +2418,7 @@ expand_builtin_memcmp (exp, arglist, target, mode)
return expand_expr (result, target, mode, EXPAND_NORMAL);
}
-#ifdef HAVE_cmpstrsi
+#if defined HAVE_cmpmemsi || defined HAVE_cmpstrsi
{
rtx arg1_rtx, arg2_rtx, arg3_rtx;
rtx result;
@@ -2428,8 +2428,19 @@ expand_builtin_memcmp (exp, arglist, target, mode)
= get_pointer_alignment (arg1, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
int arg2_align
= get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
- enum machine_mode insn_mode
- = insn_data[(int) CODE_FOR_cmpstrsi].operand[0].mode;
+ enum machine_mode insn_mode;
+
+#ifdef HAVE_cmpmemsi
+ if (HAVE_cmpmemsi)
+ insn_mode = insn_data[(int) CODE_FOR_cmpmemsi].operand[0].mode;
+ else
+#endif
+#ifdef HAVE_cmpstrsi
+ if (HAVE_cmpstrsi)
+ insn_mode = insn_data[(int) CODE_FOR_cmpstrsi].operand[0].mode;
+ else
+#endif
+ return 0;
/* If we don't have POINTER_TYPE, call the function. */
if (arg1_align == 0 || arg2_align == 0)
@@ -2445,11 +2456,19 @@ expand_builtin_memcmp (exp, arglist, target, mode)
arg1_rtx = get_memory_rtx (arg1);
arg2_rtx = get_memory_rtx (arg2);
arg3_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0);
- if (!HAVE_cmpstrsi)
- insn = NULL_RTX;
+#ifdef HAVE_cmpmemsi
+ if (HAVE_cmpmemsi)
+ insn = gen_cmpmemsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
+ GEN_INT (MIN (arg1_align, arg2_align)));
else
+#endif
+#ifdef HAVE_cmpstrsi
+ if (HAVE_cmpstrsi)
insn = gen_cmpstrsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
GEN_INT (MIN (arg1_align, arg2_align)));
+ else
+#endif
+ abort ();
if (insn)
emit_insn (insn);
@@ -2490,7 +2509,7 @@ expand_builtin_strcmp (exp, target, mode)
enum machine_mode mode;
{
tree arglist = TREE_OPERAND (exp, 1);
- tree arg1, arg2, len, len2, fn;
+ tree arg1, arg2;
const char *p1, *p2;
if (!validate_arglist (arglist, POINTER_TYPE, POINTER_TYPE, VOID_TYPE))
@@ -2526,51 +2545,89 @@ expand_builtin_strcmp (exp, target, mode)
return expand_expr (result, target, mode, EXPAND_NORMAL);
}
- len = c_strlen (arg1);
- len2 = c_strlen (arg2);
-
- if (len)
- len = size_binop (PLUS_EXPR, ssize_int (1), len);
+#ifdef HAVE_cmpstrsi
+ if (HAVE_cmpstrsi)
+ {
+ tree len, len1, len2;
+ rtx arg1_rtx, arg2_rtx, arg3_rtx;
+ rtx result, insn;
+
+ int arg1_align
+ = get_pointer_alignment (arg1, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
+ int arg2_align
+ = get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
+ enum machine_mode insn_mode
+ = insn_data[(int) CODE_FOR_cmpstrsi].operand[0].mode;
+
+ len1 = c_strlen (arg1);
+ len2 = c_strlen (arg2);
+
+ if (len1)
+ len1 = size_binop (PLUS_EXPR, ssize_int (1), len1);
+ if (len2)
+ len2 = size_binop (PLUS_EXPR, ssize_int (1), len2);
+
+ /* If we don't have a constant length for the first, use the length
+ of the second, if we know it. We don't require a constant for
+ this case; some cost analysis could be done if both are available
+ but neither is constant. For now, assume they're equally cheap
+ unless one has side effects. If both strings have constant lengths,
+ use the smaller. */
+
+ if (!len1)
+ len = len2;
+ else if (!len2)
+ len = len1;
+ else if (TREE_SIDE_EFFECTS (len1))
+ len = len2;
+ else if (TREE_SIDE_EFFECTS (len2))
+ len = len1;
+ else if (TREE_CODE (len1) != INTEGER_CST)
+ len = len2;
+ else if (TREE_CODE (len2) != INTEGER_CST)
+ len = len1;
+ else if (tree_int_cst_lt (len1, len2))
+ len = len1;
+ else
+ len = len2;
- if (len2)
- len2 = size_binop (PLUS_EXPR, ssize_int (1), len2);
+ /* If both arguments have side effects, we cannot optimize. */
+ if (!len || TREE_SIDE_EFFECTS (len))
+ return 0;
- /* If we don't have a constant length for the first, use the length
- of the second, if we know it. We don't require a constant for
- this case; some cost analysis could be done if both are available
- but neither is constant. For now, assume they're equally cheap
- unless one has side effects.
+ /* If we don't have POINTER_TYPE, call the function. */
+ if (arg1_align == 0 || arg2_align == 0)
+ return 0;
- If both strings have constant lengths, use the smaller. This
- could arise if optimization results in strcpy being called with
- two fixed strings, or if the code was machine-generated. We should
- add some code to the `memcmp' handler below to deal with such
- situations, someday. */
+ /* Make a place to write the result of the instruction. */
+ result = target;
+ if (! (result != 0
+ && GET_CODE (result) == REG
+ && GET_MODE (result) == insn_mode
+ && REGNO (result) >= FIRST_PSEUDO_REGISTER))
+ result = gen_reg_rtx (insn_mode);
- if (!len || TREE_CODE (len) != INTEGER_CST)
- {
- if (len2 && !TREE_SIDE_EFFECTS (len2))
- len = len2;
- else if (len == 0)
+ arg1_rtx = get_memory_rtx (arg1);
+ arg2_rtx = get_memory_rtx (arg2);
+ arg3_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0);
+ insn = gen_cmpstrsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
+ GEN_INT (MIN (arg1_align, arg2_align)));
+ if (!insn)
return 0;
- }
- else if (len2 && TREE_CODE (len2) == INTEGER_CST
- && tree_int_cst_lt (len2, len))
- len = len2;
-
- /* If both arguments have side effects, we cannot optimize. */
- if (TREE_SIDE_EFFECTS (len))
- return 0;
- fn = built_in_decls[BUILT_IN_MEMCMP];
- if (!fn)
- return 0;
+ emit_insn (insn);
- arglist = build_tree_list (NULL_TREE, len);
- arglist = tree_cons (NULL_TREE, arg2, arglist);
- arglist = tree_cons (NULL_TREE, arg1, arglist);
- return expand_expr (build_function_call_expr (fn, arglist),
- target, mode, EXPAND_NORMAL);
+ /* Return the value in the proper mode for this function. */
+ mode = TYPE_MODE (TREE_TYPE (exp));
+ if (GET_MODE (result) == mode)
+ return result;
+ if (target == 0)
+ return convert_to_mode (mode, result, 0);
+ convert_move (target, result, 0);
+ return target;
+ }
+#endif
+ return 0;
}
/* Expand expression EXP, which is a call to the strncmp builtin. Return 0
@@ -2584,7 +2641,6 @@ expand_builtin_strncmp (exp, target, mode)
enum machine_mode mode;
{
tree arglist = TREE_OPERAND (exp, 1);
- tree fn, newarglist, len = 0;
tree arg1, arg2, arg3;
const char *p1, *p2;
@@ -2638,41 +2694,94 @@ expand_builtin_strncmp (exp, target, mode)
}
/* If c_strlen can determine an expression for one of the string
- lengths, and it doesn't have side effects, then call
- expand_builtin_memcmp() using length MIN(strlen(string)+1, arg3). */
-
- /* Perhaps one of the strings is really constant, if so prefer
- that constant length over the other string's length. */
- if (p1)
- len = c_strlen (arg1);
- else if (p2)
- len = c_strlen (arg2);
-
- /* If we still don't have a len, try either string arg as long
- as they don't have side effects. */
- if (!len && !TREE_SIDE_EFFECTS (arg1))
- len = c_strlen (arg1);
- if (!len && !TREE_SIDE_EFFECTS (arg2))
- len = c_strlen (arg2);
- /* If we still don't have a length, punt. */
- if (!len)
- return 0;
+ lengths, and it doesn't have side effects, then emit cmpstrsi
+ using length MIN(strlen(string)+1, arg3). */
+#ifdef HAVE_cmpstrsi
+ if (HAVE_cmpstrsi)
+ {
+ tree len, len1, len2;
+ rtx arg1_rtx, arg2_rtx, arg3_rtx;
+ rtx result, insn;
+
+ int arg1_align
+ = get_pointer_alignment (arg1, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
+ int arg2_align
+ = get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
+ enum machine_mode insn_mode
+ = insn_data[(int) CODE_FOR_cmpstrsi].operand[0].mode;
+
+ len1 = c_strlen (arg1);
+ len2 = c_strlen (arg2);
+
+ if (len1)
+ len1 = size_binop (PLUS_EXPR, ssize_int (1), len1);
+ if (len2)
+ len2 = size_binop (PLUS_EXPR, ssize_int (1), len2);
+
+ /* If we don't have a constant length for the first, use the length
+ of the second, if we know it. We don't require a constant for
+ this case; some cost analysis could be done if both are available
+ but neither is constant. For now, assume they're equally cheap,
+ unless one has side effects. If both strings have constant lengths,
+ use the smaller. */
+
+ if (!len1)
+ len = len2;
+ else if (!len2)
+ len = len1;
+ else if (TREE_SIDE_EFFECTS (len1))
+ len = len2;
+ else if (TREE_SIDE_EFFECTS (len2))
+ len = len1;
+ else if (TREE_CODE (len1) != INTEGER_CST)
+ len = len2;
+ else if (TREE_CODE (len2) != INTEGER_CST)
+ len = len1;
+ else if (tree_int_cst_lt (len1, len2))
+ len = len1;
+ else
+ len = len2;
- fn = built_in_decls[BUILT_IN_MEMCMP];
- if (!fn)
- return 0;
+ /* If both arguments have side effects, we cannot optimize. */
+ if (!len || TREE_SIDE_EFFECTS (len))
+ return 0;
- /* Add one to the string length. */
- len = fold (size_binop (PLUS_EXPR, len, ssize_int (1)));
+ /* The actual new length parameter is MIN(len,arg3). */
+ len = fold (build (MIN_EXPR, TREE_TYPE (len), len, arg3));
- /* The actual new length parameter is MIN(len,arg3). */
- len = fold (build (MIN_EXPR, TREE_TYPE (len), len, arg3));
+ /* If we don't have POINTER_TYPE, call the function. */
+ if (arg1_align == 0 || arg2_align == 0)
+ return 0;
- newarglist = build_tree_list (NULL_TREE, len);
- newarglist = tree_cons (NULL_TREE, arg2, newarglist);
- newarglist = tree_cons (NULL_TREE, arg1, newarglist);
- return expand_expr (build_function_call_expr (fn, newarglist),
- target, mode, EXPAND_NORMAL);
+ /* Make a place to write the result of the instruction. */
+ result = target;
+ if (! (result != 0
+ && GET_CODE (result) == REG
+ && GET_MODE (result) == insn_mode
+ && REGNO (result) >= FIRST_PSEUDO_REGISTER))
+ result = gen_reg_rtx (insn_mode);
+
+ arg1_rtx = get_memory_rtx (arg1);
+ arg2_rtx = get_memory_rtx (arg2);
+ arg3_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0);
+ insn = gen_cmpstrsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
+ GEN_INT (MIN (arg1_align, arg2_align)));
+ if (!insn)
+ return 0;
+
+ emit_insn (insn);
+
+ /* Return the value in the proper mode for this function. */
+ mode = TYPE_MODE (TREE_TYPE (exp));
+ if (GET_MODE (result) == mode)
+ return result;
+ if (target == 0)
+ return convert_to_mode (mode, result, 0);
+ convert_move (target, result, 0);
+ return target;
+ }
+#endif
+ return 0;
}
/* Expand expression EXP, which is a call to the strcat builtin.
@@ -3573,31 +3682,25 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
if (TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE
&& (integer_zerop (arg1) || integer_onep (arg1)))
{
- int num_jumps = 0;
- rtx insn;
-
- /* If we fail to locate an appropriate conditional jump, we'll
- fall back to normal evaluation. Ensure that the expression
- can be re-evaluated. */
- switch (unsafe_for_reeval (arg0))
- {
- case 0: /* Safe. */
- break;
-
- case 1: /* Mildly unsafe. */
- arg0 = unsave_expr (arg0);
- break;
-
- case 2: /* Wildly unsafe. */
- return NULL_RTX;
- }
+ rtx insn, drop_through_label;
/* Expand the jump insns. */
start_sequence ();
do_jump (arg0, if_false_label, if_true_label);
ret = get_insns ();
+
+ drop_through_label = get_last_insn ();
+ if (drop_through_label && GET_CODE (drop_through_label) == NOTE)
+ drop_through_label = prev_nonnote_insn (drop_through_label);
+ if (drop_through_label && GET_CODE (drop_through_label) != CODE_LABEL)
+ drop_through_label = NULL_RTX;
end_sequence ();
+ if (! if_true_label)
+ if_true_label = drop_through_label;
+ if (! if_false_label)
+ if_false_label = drop_through_label;
+
/* Now that the __builtin_expect has been validated, go through and add
the expect's to each of the conditional jumps. If we run into an
error, just give up and generate the 'safe' code of doing a SCC
@@ -3659,18 +3762,12 @@ expand_builtin_expect_jump (exp, if_false_label, if_true_label)
else if (label != if_true_label)
goto do_next_insn;
- num_jumps++;
predict_insn_def (insn, PRED_BUILTIN_EXPECT, taken);
}
do_next_insn:
insn = next;
}
-
- /* If no jumps were modified, fail and do __builtin_expect the normal
- way. */
- if (num_jumps == 0)
- ret = NULL_RTX;
}
return ret;
diff --git a/gnu/usr.bin/gcc/gcc/collect2.c b/gnu/usr.bin/gcc/gcc/collect2.c
index 10f57792100..08f54113dd8 100644
--- a/gnu/usr.bin/gcc/gcc/collect2.c
+++ b/gnu/usr.bin/gcc/gcc/collect2.c
@@ -2645,7 +2645,7 @@ scan_libraries (prog_name)
#ifdef OBJECT_FORMAT_COFF
-#if defined(EXTENDED_COFF)
+#if defined (EXTENDED_COFF)
# define GCC_SYMBOLS(X) (SYMHEADER(X).isymMax + SYMHEADER(X).iextMax)
# define GCC_SYMENT SYMR
@@ -2658,14 +2658,26 @@ scan_libraries (prog_name)
# define GCC_SYMBOLS(X) (HEADER(ldptr).f_nsyms)
# define GCC_SYMENT SYMENT
-# define GCC_OK_SYMBOL(X) \
- (((X).n_sclass == C_EXT) && \
- ((X).n_scnum > N_UNDEF) && \
- (aix64_flag \
- || (((X).n_type & N_TMASK) == (DT_NON << N_BTSHFT) \
- || ((X).n_type & N_TMASK) == (DT_FCN << N_BTSHFT))))
-# define GCC_UNDEF_SYMBOL(X) \
- (((X).n_sclass == C_EXT) && ((X).n_scnum == N_UNDEF))
+# if defined (C_WEAKEXT)
+# define GCC_OK_SYMBOL(X) \
+ (((X).n_sclass == C_EXT || (X).n_sclass == C_WEAKEXT) && \
+ ((X).n_scnum > N_UNDEF) && \
+ (aix64_flag \
+ || (((X).n_type & N_TMASK) == (DT_NON << N_BTSHFT) \
+ || ((X).n_type & N_TMASK) == (DT_FCN << N_BTSHFT))))
+# define GCC_UNDEF_SYMBOL(X) \
+ (((X).n_sclass == C_EXT || (X).n_sclass == C_WEAKEXT) && \
+ ((X).n_scnum == N_UNDEF))
+# else
+# define GCC_OK_SYMBOL(X) \
+ (((X).n_sclass == C_EXT) && \
+ ((X).n_scnum > N_UNDEF) && \
+ (aix64_flag \
+ || (((X).n_type & N_TMASK) == (DT_NON << N_BTSHFT) \
+ || ((X).n_type & N_TMASK) == (DT_FCN << N_BTSHFT))))
+# define GCC_UNDEF_SYMBOL(X) \
+ (((X).n_sclass == C_EXT) && ((X).n_scnum == N_UNDEF))
+# endif
# define GCC_SYMINC(X) ((X).n_numaux+1)
# define GCC_SYMZERO(X) 0
diff --git a/gnu/usr.bin/gcc/gcc/combine.c b/gnu/usr.bin/gcc/gcc/combine.c
index 410c1eaab84..3d113915f65 100644
--- a/gnu/usr.bin/gcc/gcc/combine.c
+++ b/gnu/usr.bin/gcc/gcc/combine.c
@@ -53,10 +53,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
flow.c aren't completely updated:
- reg_live_length is not updated
- - reg_n_refs is not adjusted in the rare case when a register is
- no longer required in a computation
- - there are extremely rare cases (see distribute_regnotes) when a
- REG_DEAD note is lost
- a LOG_LINKS entry that refers to an insn with multiple SETs may be
removed because there is no way to know which register it was
linking
@@ -91,6 +87,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "real.h"
#include "toplev.h"
+#ifndef SHIFT_COUNT_TRUNCATED
+#define SHIFT_COUNT_TRUNCATED 0
+#endif
+
/* It is not safe to use ordinary gen_lowpart in combine.
Use gen_lowpart_for_combine instead. See comments there. */
#define gen_lowpart dont_use_gen_lowpart_you_dummy
@@ -417,7 +417,7 @@ static void reg_dead_at_p_1 PARAMS ((rtx, rtx, void *));
static int reg_dead_at_p PARAMS ((rtx, rtx));
static void move_deaths PARAMS ((rtx, rtx, int, rtx, rtx *));
static int reg_bitfield_target_p PARAMS ((rtx, rtx));
-static void distribute_notes PARAMS ((rtx, rtx, rtx, rtx, rtx, rtx));
+static void distribute_notes PARAMS ((rtx, rtx, rtx, rtx));
static void distribute_links PARAMS ((rtx));
static void mark_used_regs_combine PARAMS ((rtx));
static int insn_cuid PARAMS ((rtx));
@@ -2562,7 +2562,7 @@ try_combine (i3, i2, i1, new_direct_jump_p)
REG_N_DEATHS (REGNO (XEXP (note, 0)))++;
distribute_notes (new_other_notes, undobuf.other_insn,
- undobuf.other_insn, NULL_RTX, NULL_RTX, NULL_RTX);
+ undobuf.other_insn, NULL_RTX);
}
#ifdef HAVE_cc0
/* If I2 is the setter CC0 and I3 is the user CC0 then check whether
@@ -2586,15 +2586,6 @@ try_combine (i3, i2, i1, new_direct_jump_p)
rtx i3links, i2links, i1links = 0;
rtx midnotes = 0;
unsigned int regno;
- /* Compute which registers we expect to eliminate. newi2pat may be setting
- either i3dest or i2dest, so we must check it. Also, i1dest may be the
- same as i3dest, in which case newi2pat may be setting i1dest. */
- rtx elim_i2 = ((newi2pat && reg_set_p (i2dest, newi2pat))
- || i2dest_in_i2src || i2dest_in_i1src
- ? 0 : i2dest);
- rtx elim_i1 = (i1 == 0 || i1dest_in_i1src
- || (newi2pat && reg_set_p (i1dest, newi2pat))
- ? 0 : i1dest);
/* Get the old REG_NOTES and LOG_LINKS from all our insns and
clear them. */
@@ -2725,17 +2716,13 @@ try_combine (i3, i2, i1, new_direct_jump_p)
/* Distribute all the LOG_LINKS and REG_NOTES from I1, I2, and I3. */
if (i3notes)
- distribute_notes (i3notes, i3, i3, newi2pat ? i2 : NULL_RTX,
- elim_i2, elim_i1);
+ distribute_notes (i3notes, i3, i3, newi2pat ? i2 : NULL_RTX);
if (i2notes)
- distribute_notes (i2notes, i2, i3, newi2pat ? i2 : NULL_RTX,
- elim_i2, elim_i1);
+ distribute_notes (i2notes, i2, i3, newi2pat ? i2 : NULL_RTX);
if (i1notes)
- distribute_notes (i1notes, i1, i3, newi2pat ? i2 : NULL_RTX,
- elim_i2, elim_i1);
+ distribute_notes (i1notes, i1, i3, newi2pat ? i2 : NULL_RTX);
if (midnotes)
- distribute_notes (midnotes, NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
- elim_i2, elim_i1);
+ distribute_notes (midnotes, NULL_RTX, i3, newi2pat ? i2 : NULL_RTX);
/* Distribute any notes added to I2 or I3 by recog_for_combine. We
know these are REG_UNUSED and want them to go to the desired insn,
@@ -2748,7 +2735,7 @@ try_combine (i3, i2, i1, new_direct_jump_p)
if (GET_CODE (XEXP (temp, 0)) == REG)
REG_N_DEATHS (REGNO (XEXP (temp, 0)))++;
- distribute_notes (new_i2_notes, i2, i2, NULL_RTX, NULL_RTX, NULL_RTX);
+ distribute_notes (new_i2_notes, i2, i2, NULL_RTX);
}
if (new_i3_notes)
@@ -2757,7 +2744,7 @@ try_combine (i3, i2, i1, new_direct_jump_p)
if (GET_CODE (XEXP (temp, 0)) == REG)
REG_N_DEATHS (REGNO (XEXP (temp, 0)))++;
- distribute_notes (new_i3_notes, i3, i3, NULL_RTX, NULL_RTX, NULL_RTX);
+ distribute_notes (new_i3_notes, i3, i3, NULL_RTX);
}
/* If I3DEST was used in I3SRC, it really died in I3. We may need to
@@ -2775,12 +2762,11 @@ try_combine (i3, i2, i1, new_direct_jump_p)
if (newi2pat && reg_set_p (i3dest_killed, newi2pat))
distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i3dest_killed,
NULL_RTX),
- NULL_RTX, i2, NULL_RTX, elim_i2, elim_i1);
+ NULL_RTX, i2, NULL_RTX);
else
distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i3dest_killed,
NULL_RTX),
- NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
- elim_i2, elim_i1);
+ NULL_RTX, i3, newi2pat ? i2 : NULL_RTX);
}
if (i2dest_in_i2src)
@@ -2790,11 +2776,10 @@ try_combine (i3, i2, i1, new_direct_jump_p)
if (newi2pat && reg_set_p (i2dest, newi2pat))
distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i2dest, NULL_RTX),
- NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
+ NULL_RTX, i2, NULL_RTX);
else
distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i2dest, NULL_RTX),
- NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
- NULL_RTX, NULL_RTX);
+ NULL_RTX, i3, newi2pat ? i2 : NULL_RTX);
}
if (i1dest_in_i1src)
@@ -2804,11 +2789,10 @@ try_combine (i3, i2, i1, new_direct_jump_p)
if (newi2pat && reg_set_p (i1dest, newi2pat))
distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i1dest, NULL_RTX),
- NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
+ NULL_RTX, i2, NULL_RTX);
else
distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i1dest, NULL_RTX),
- NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
- NULL_RTX, NULL_RTX);
+ NULL_RTX, i3, newi2pat ? i2 : NULL_RTX);
}
distribute_links (i3links);
@@ -4729,7 +4713,6 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
return simplify_shift_const (x, code, mode, XEXP (x, 0),
INTVAL (XEXP (x, 1)));
-#ifdef SHIFT_COUNT_TRUNCATED
else if (SHIFT_COUNT_TRUNCATED && GET_CODE (XEXP (x, 1)) != REG)
SUBST (XEXP (x, 1),
force_to_mode (XEXP (x, 1), GET_MODE (XEXP (x, 1)),
@@ -4737,8 +4720,6 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
<< exact_log2 (GET_MODE_BITSIZE (GET_MODE (x))))
- 1,
NULL_RTX, 0));
-#endif
-
break;
case VEC_SELECT:
@@ -9309,10 +9290,8 @@ simplify_shift_const (x, code, result_mode, varop, orig_count)
/* Make sure and truncate the "natural" shift on the way in. We don't
want to do this inside the loop as it makes it more difficult to
combine shifts. */
-#ifdef SHIFT_COUNT_TRUNCATED
if (SHIFT_COUNT_TRUNCATED)
orig_count &= GET_MODE_BITSIZE (mode) - 1;
-#endif
/* If we were given an invalid count, don't do anything except exactly
what was requested. */
@@ -10702,8 +10681,10 @@ simplify_comparison (code, pop0, pop1)
a constant that has only a single bit set and are comparing it
with zero, we can convert this into an equality comparison
between the position and the location of the single bit. */
-
- if (GET_CODE (XEXP (op0, 0)) == CONST_INT
+ /* Except we can't if SHIFT_COUNT_TRUNCATED is set, since we might
+ have already reduced the shift count modulo the word size. */
+ if (!SHIFT_COUNT_TRUNCATED
+ && GET_CODE (XEXP (op0, 0)) == CONST_INT
&& XEXP (op0, 1) == const1_rtx
&& equality_comparison_p && const_op == 0
&& (i = exact_log2 (INTVAL (XEXP (op0, 0)))) >= 0)
@@ -12550,19 +12531,14 @@ reg_bitfield_target_p (x, body)
as appropriate. I3 and I2 are the insns resulting from the combination
insns including FROM (I2 may be zero).
- ELIM_I2 and ELIM_I1 are either zero or registers that we know will
- not need REG_DEAD notes because they are being substituted for. This
- saves searching in the most common cases.
-
Each note in the list is either ignored or placed on some insns, depending
on the type of note. */
static void
-distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
+distribute_notes (notes, from_insn, i3, i2)
rtx notes;
rtx from_insn;
rtx i3, i2;
- rtx elim_i2, elim_i1;
{
rtx note, next_note;
rtx tem;
@@ -12825,10 +12801,6 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
&& reg_referenced_p (XEXP (note, 0), PATTERN (i2)))
place = i2;
- if (rtx_equal_p (XEXP (note, 0), elim_i2)
- || rtx_equal_p (XEXP (note, 0), elim_i1))
- break;
-
if (place == 0)
{
basic_block bb = this_basic_block;
@@ -12844,8 +12816,11 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
/* If the register is being set at TEM, see if that is all
TEM is doing. If so, delete TEM. Otherwise, make this
- into a REG_UNUSED note instead. */
- if (reg_set_p (XEXP (note, 0), PATTERN (tem)))
+ into a REG_UNUSED note instead. Don't delete sets to
+ global register vars. */
+ if ((REGNO (XEXP (note, 0)) >= FIRST_PSEUDO_REGISTER
+ || !global_regs[REGNO (XEXP (note, 0))])
+ && reg_set_p (XEXP (note, 0), PATTERN (tem)))
{
rtx set = single_set (tem);
rtx inner_dest = 0;
@@ -12886,7 +12861,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
PATTERN (tem) = pc_rtx;
distribute_notes (REG_NOTES (tem), tem, tem,
- NULL_RTX, NULL_RTX, NULL_RTX);
+ NULL_RTX);
distribute_links (LOG_LINKS (tem));
PUT_CODE (tem, NOTE);
@@ -12901,7 +12876,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
distribute_notes (REG_NOTES (cc0_setter),
cc0_setter, cc0_setter,
- NULL_RTX, NULL_RTX, NULL_RTX);
+ NULL_RTX);
distribute_links (LOG_LINKS (cc0_setter));
PUT_CODE (cc0_setter, NOTE);
@@ -13055,7 +13030,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
= gen_rtx_EXPR_LIST (REG_DEAD, piece, NULL_RTX);
distribute_notes (new_note, place, place,
- NULL_RTX, NULL_RTX, NULL_RTX);
+ NULL_RTX);
}
else if (! refers_to_regno_p (i, i + 1,
PATTERN (place), 0)
diff --git a/gnu/usr.bin/gcc/gcc/config.gcc b/gnu/usr.bin/gcc/gcc/config.gcc
index 57c201d208e..5360322ff8e 100644
--- a/gnu/usr.bin/gcc/gcc/config.gcc
+++ b/gnu/usr.bin/gcc/gcc/config.gcc
@@ -298,11 +298,11 @@ xscale-*-*)
;;
i[34567]86-*-*)
cpu_type=i386
- extra_headers="mmintrin.h xmmintrin.h"
+ extra_headers="mmintrin.h xmmintrin.h emmintrin.h pmmintrin.h"
;;
x86_64-*-*)
cpu_type=i386
- extra_headers="mmintrin.h xmmintrin.h"
+ extra_headers="mmintrin.h xmmintrin.h emmintrin.h pmmintrin.h"
;;
ia64-*-*)
extra_headers=ia64intrin.h
@@ -715,7 +715,7 @@ arm*-*-netbsd*)
use_collect2=yes
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
- tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h"
+ tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
gnu_ld=yes
@@ -809,7 +809,7 @@ frv-*-elf)
;;
h8300-*-rtems*)
xm_defines=POSIX
- tmake_file="h8300/t-h8300 t-rtems"
+ tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems"
tm_file="h8300/h8300.h h8300/rtems.h rtems.h"
if test x$enable_threads = xyes; then
thread_file='rtems'
@@ -2153,7 +2153,7 @@ powerpc-*-eabi*)
powerpc-*-rtems*)
xm_defines=POSIX
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/rtems.h rtems.h"
- tmake_file="rs6000/t-rtems t-rtems rs6000/t-ppccomm"
+ tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
if test x$enable_threads = xyes; then
thread_file='rtems'
fi
@@ -2347,7 +2347,7 @@ sh-*-rtems*)
fi
;;
sh-*-linux* | sh[2346lbe]*-*-linux*)
- tmake_file="sh/t-sh sh/t-elf"
+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux"
case $machine in
sh*be-*-* | sh*eb-*-*) ;;
*)
@@ -2874,7 +2874,25 @@ x86_64-*-*)
# We should have hammer chip here, but it does not exist yet and
# thus it is not supported. Athlon_SSE is probably equivalent feature
# wise to hammer from our point of view except for 64bit mode.
- target_cpu_default2=TARGET_CPU_DEFAULT_athlon_sse
+ case "x$with_cpu" in
+ x)
+ target_cpu_default2=TARGET_CPU_DEFAULT_athlon_sse
+ ;;
+ xnocona)
+ target_cpu_default2=TARGET_CPU_DEFAULT_pentium4
+ ;;
+ xyes|xno)
+ echo "--with-cpu must be passed a value" 1>&2
+ exit 1
+ ;;
+ *)
+ if test x$pass2done = xyes
+ then
+ echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
+ exit 1
+ fi
+ ;;
+ esac
;;
alpha*-*-*)
case $machine in
diff --git a/gnu/usr.bin/gcc/gcc/config.in b/gnu/usr.bin/gcc/gcc/config.in
index 778795c4592..2a62bad5de2 100644
--- a/gnu/usr.bin/gcc/gcc/config.in
+++ b/gnu/usr.bin/gcc/gcc/config.in
@@ -498,6 +498,9 @@
/* Define if <time.h> defines clock_t. */
#undef HAVE_CLOCK_T
+/* Define if <sys/types.h> provides uchar. */
+#undef HAVE_UCHAR
+
/* Define .init_array/.fini_array sections are available and working. */
#undef HAVE_INITFINI_ARRAY
@@ -617,6 +620,9 @@
/* Define if your linker supports --eh-frame-hdr option. */
#undef HAVE_LD_EH_FRAME_HDR
+/* Define if your linker supports --as-needed and --no-as-needed options. */
+#undef HAVE_LD_AS_NEEDED
+
/* Define if your MIPS libgloss linker scripts consistently include STARTUP directives. */
#undef HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES
diff --git a/gnu/usr.bin/gcc/gcc/config/arm/arm.md b/gnu/usr.bin/gcc/gcc/config/arm/arm.md
index 6bcbb83d1b6..c6be9cd63f0 100644
--- a/gnu/usr.bin/gcc/gcc/config/arm/arm.md
+++ b/gnu/usr.bin/gcc/gcc/config/arm/arm.md
@@ -1,6 +1,6 @@
;;- Machine description for ARM for GNU compiler
;; Copyright 1991, 1993, 1994, 1995, 1996, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002 Free Software Foundation, Inc.
+;; 2001, 2002, 2004 Free Software Foundation, Inc.
;; Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
;; and Martin Simmons (@harleqn.co.uk).
;; More major hacks by Richard Earnshaw (rearnsha@arm.com).
@@ -120,7 +120,7 @@
;; Operand number of an input operand that is shifted. Zero if the
;; given instruction does not shift one of its input operands.
-(define_attr "is_xscale" "no,yes" (const (symbol_ref "arm_is_xscale")))
+(define_attr "is_xscale" "no,yes" (const (symbol_ref "arm_tune_xscale")))
(define_attr "shift" "" (const_int 0))
; Floating Point Unit. If we only have floating point emulation, then there
@@ -1185,7 +1185,7 @@
(const_int 0)))
(set (match_operand:SI 0 "s_register_operand" "=&r,&r")
(mult:SI (match_dup 2) (match_dup 1)))]
- "TARGET_ARM && !arm_is_xscale"
+ "TARGET_ARM && !arm_arch_xscale"
"mul%?s\\t%0, %2, %1"
[(set_attr "conds" "set")
(set_attr "type" "mult")]
@@ -1198,7 +1198,7 @@
(match_operand:SI 1 "s_register_operand" "%?r,0"))
(const_int 0)))
(clobber (match_scratch:SI 0 "=&r,&r"))]
- "TARGET_ARM && !arm_is_xscale"
+ "TARGET_ARM && !arm_arch_xscale"
"mul%?s\\t%0, %2, %1"
[(set_attr "conds" "set")
(set_attr "type" "mult")]
@@ -1229,7 +1229,7 @@
(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r")
(plus:SI (mult:SI (match_dup 2) (match_dup 1))
(match_dup 3)))]
- "TARGET_ARM && !arm_is_xscale"
+ "TARGET_ARM && !arm_arch_xscale"
"mla%?s\\t%0, %2, %1, %3"
[(set_attr "conds" "set")
(set_attr "type" "mult")]
@@ -1244,7 +1244,7 @@
(match_operand:SI 3 "s_register_operand" "?r,r,0,0"))
(const_int 0)))
(clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))]
- "TARGET_ARM && !arm_is_xscale"
+ "TARGET_ARM && !arm_arch_xscale"
"mla%?s\\t%0, %2, %1, %3"
[(set_attr "conds" "set")
(set_attr "type" "mult")]
@@ -1338,7 +1338,7 @@
(match_operand:HI 1 "s_register_operand" "%r"))
(sign_extend:SI
(match_operand:HI 2 "s_register_operand" "r"))))]
- "TARGET_ARM && arm_is_xscale"
+ "TARGET_ARM && arm_arch_xscale"
"smulbb%?\\t%0, %1, %2"
[(set_attr "type" "mult")]
)
@@ -1350,7 +1350,7 @@
(match_operand:HI 2 "s_register_operand" "%r"))
(sign_extend:SI
(match_operand:HI 3 "s_register_operand" "r")))))]
- "TARGET_ARM && arm_is_xscale"
+ "TARGET_ARM && arm_arch_xscale"
"smlabb%?\\t%0, %2, %3, %1"
[(set_attr "type" "mult")]
)
@@ -1363,7 +1363,7 @@
(match_operand:HI 2 "s_register_operand" "%r"))
(sign_extend:DI
(match_operand:HI 3 "s_register_operand" "r")))))]
- "TARGET_ARM && arm_is_xscale"
+ "TARGET_ARM && arm_arch_xscale"
"smlalbb%?\\t%Q0, %R0, %2, %3"
[(set_attr "type" "mult")])
@@ -4591,8 +4591,8 @@
)
(define_insn "*thumb_movhi_insn"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=l,l, m,*r,*h,l")
- (match_operand:HI 1 "general_operand" "l,mn,l,*h,*r,I"))]
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=l,l,m,*r,*h,l")
+ (match_operand:HI 1 "general_operand" "l,m,l,*h,*r,I"))]
"TARGET_THUMB
&& ( register_operand (operands[0], HImode)
|| register_operand (operands[1], HImode))"
@@ -4624,8 +4624,7 @@
return \"ldrh %0, %1\";
}"
[(set_attr "length" "2,4,2,2,2,2")
- (set_attr "type" "*,load,store1,*,*,*")
- (set_attr "pool_range" "*,64,*,*,*,*")]
+ (set_attr "type" "*,load,store1,*,*,*")]
)
diff --git a/gnu/usr.bin/gcc/gcc/config/pa/pa.c b/gnu/usr.bin/gcc/gcc/config/pa/pa.c
index efd93171d80..63b014cf178 100644
--- a/gnu/usr.bin/gcc/gcc/config/pa/pa.c
+++ b/gnu/usr.bin/gcc/gcc/config/pa/pa.c
@@ -1401,14 +1401,17 @@ emit_move_sequence (operands, mode, scratch_reg)
operand1 = gen_rtx_MEM (GET_MODE (operand1), tem);
/* Handle secondary reloads for loads/stores of FP registers from
- REG+D addresses where D does not fit in 5 bits, including
+ REG+D addresses where D does not fit in 5 or 14 bits, including
(subreg (mem (addr))) cases. */
if (fp_reg_operand (operand0, mode)
&& ((GET_CODE (operand1) == MEM
- && ! memory_address_p (DFmode, XEXP (operand1, 0)))
+ && !memory_address_p ((GET_MODE_SIZE (mode) == 4 ? SFmode : DFmode),
+ XEXP (operand1, 0)))
|| ((GET_CODE (operand1) == SUBREG
&& GET_CODE (XEXP (operand1, 0)) == MEM
- && !memory_address_p (DFmode, XEXP (XEXP (operand1, 0), 0)))))
+ && !memory_address_p ((GET_MODE_SIZE (mode) == 4
+ ? SFmode : DFmode),
+ XEXP (XEXP (operand1, 0), 0)))))
&& scratch_reg)
{
if (GET_CODE (operand1) == SUBREG)
@@ -1437,10 +1440,14 @@ emit_move_sequence (operands, mode, scratch_reg)
}
else if (fp_reg_operand (operand1, mode)
&& ((GET_CODE (operand0) == MEM
- && ! memory_address_p (DFmode, XEXP (operand0, 0)))
+ && !memory_address_p ((GET_MODE_SIZE (mode) == 4
+ ? SFmode : DFmode),
+ XEXP (operand0, 0)))
|| ((GET_CODE (operand0) == SUBREG)
&& GET_CODE (XEXP (operand0, 0)) == MEM
- && !memory_address_p (DFmode, XEXP (XEXP (operand0, 0), 0))))
+ && !memory_address_p ((GET_MODE_SIZE (mode) == 4
+ ? SFmode : DFmode),
+ XEXP (XEXP (operand0, 0), 0))))
&& scratch_reg)
{
if (GET_CODE (operand0) == SUBREG)
@@ -1706,6 +1713,7 @@ emit_move_sequence (operands, mode, scratch_reg)
operands[1] = force_const_mem (mode, operand1);
operands[1] = legitimize_pic_address (XEXP (operands[1], 0),
mode, temp);
+ operands[1] = gen_rtx_MEM (mode, operands[1]);
emit_move_sequence (operands, mode, temp);
}
else
@@ -6931,7 +6939,15 @@ output_indirect_call (insn, call_dest)
No need to check target flags as the length uniquely identifies
the remaining cases. */
if (attr_length_indirect_call (insn) == 8)
- return ".CALL\tARGW0=GR\n\t{bl|b,l} $$dyncall,%%r31\n\tcopy %%r31,%%r2";
+ {
+ /* The HP linker substitutes a BLE for millicode calls using
+ the short PIC PCREL form. Thus, we must use %r31 as the
+ link register when generating PA 1.x code. */
+ if (TARGET_PA_20)
+ return ".CALL\tARGW0=GR\n\tb,l $$dyncall,%%r2\n\tcopy %%r2,%%r31";
+ else
+ return ".CALL\tARGW0=GR\n\tbl $$dyncall,%%r31\n\tcopy %%r31,%%r2";
+ }
/* Long millicode call, but we are not generating PIC or portable runtime
code. */
diff --git a/gnu/usr.bin/gcc/gcc/config/rs6000/sysv4.h b/gnu/usr.bin/gcc/gcc/config/rs6000/sysv4.h
index c40e5af28f4..f6488a1460b 100644
--- a/gnu/usr.bin/gcc/gcc/config/rs6000/sysv4.h
+++ b/gnu/usr.bin/gcc/gcc/config/rs6000/sysv4.h
@@ -385,6 +385,21 @@ do { \
#undef STACK_BOUNDARY
#define STACK_BOUNDARY (TARGET_ALTIVEC_ABI ? 128 : 64)
+/* Define this macro if you wish to preserve a certain alignment for
+ the stack pointer, greater than what the hardware enforces. The
+ definition is a C expression for the desired alignment (measured
+ in bits). This macro must evaluate to a value equal to or larger
+ than STACK_BOUNDARY.
+ For the SYSV ABI and variants the alignment of the stack pointer
+ is usually controlled manually in rs6000.c. However, to maintain
+ alignment across alloca () in all circumstances,
+ PREFERRED_STACK_BOUNDARY needs to be set as well.
+ This has the additional advantage of allowing a bigger maximum
+ alignment of user objects on the stack. */
+
+#undef PREFERRED_STACK_BOUNDARY
+#define PREFERRED_STACK_BOUNDARY 128
+
/* Real stack boundary as mandated by the appropriate ABI. */
#define ABI_STACK_BOUNDARY ((TARGET_EABI && !TARGET_ALTIVEC_ABI) ? 64 : 128)
@@ -1134,7 +1149,7 @@ do { \
%{!mnewlib: -lc }"
#else
#define LIB_LINUX_SPEC "%{mnewlib: --start-group -llinux -lc --end-group } \
-%{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } \
+%{!mnewlib: %{pthread:-lpthread} %{shared:-lc} %{!shared: \
%{profile:-lc_p} %{!profile:-lc}}}"
#endif
diff --git a/gnu/usr.bin/gcc/gcc/config/sparc/sparc.h b/gnu/usr.bin/gcc/gcc/config/sparc/sparc.h
index 01c0466607b..9f5911c13ae 100644
--- a/gnu/usr.bin/gcc/gcc/config/sparc/sparc.h
+++ b/gnu/usr.bin/gcc/gcc/config/sparc/sparc.h
@@ -1,8 +1,8 @@
/* Definitions of target machine for GNU compiler, for Sun SPARC.
Copyright (C) 1987, 1988, 1989, 1992, 1994, 1995, 1996, 1997, 1998, 1999
- 2000, 2001, 2002 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com).
- 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
+ 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
at Cygnus Support.
This file is part of GNU CC.
@@ -2586,10 +2586,18 @@ do { \
#define LTTF2_LIBCALL "_Q_flt"
#define LETF2_LIBCALL "_Q_fle"
+/* These functions were added in SCD 2.3, so not necessarily all targets
+ support them. */
+#define FLOATDITF2_LIBCALL "_Q_lltoq"
+#define FIX_TRUNCTFDI2_LIBCALL "_Q_qtoll"
+#define FIXUNS_TRUNCTFDI2_LIBCALL "_Q_qtoull"
+
+#define DITF_CONVERSION_LIBFUNCS 0
+
/* Assume by default that the _Qp_* 64-bit libcalls are implemented such
that the inputs are fully consumed before the output memory is clobbered. */
-#define TARGET_BUGGY_QP_LIB 0
+#define TARGET_BUGGY_QP_LIB 0
/* We can define the TFmode sqrt optab only if TARGET_FPU. This is because
with soft-float, the SFmode and DFmode sqrt instructions will be absent,
@@ -2623,6 +2631,13 @@ do { \
fixtfsi_libfunc = init_one_libfunc (FIX_TRUNCTFSI2_LIBCALL); \
fixunstfsi_libfunc \
= init_one_libfunc (FIXUNS_TRUNCTFSI2_LIBCALL); \
+ if (DITF_CONVERSION_LIBFUNCS) \
+ { \
+ floatditf_libfunc = init_one_libfunc (FLOATDITF2_LIBCALL); \
+ fixtfdi_libfunc = init_one_libfunc (FIX_TRUNCTFDI2_LIBCALL);\
+ fixunstfdi_libfunc \
+ = init_one_libfunc (FIXUNS_TRUNCTFDI2_LIBCALL); \
+ } \
if (TARGET_FPU) \
sqrt_optab->handlers[(int) TFmode].libfunc \
= init_one_libfunc ("_Q_sqrt"); \
@@ -3044,6 +3059,7 @@ do { \
{"uns_arith_operand", {SUBREG, REG, CONST_INT}}, \
{"clobbered_register", {REG}}, \
{"input_operand", {SUBREG, REG, CONST_INT, MEM, CONST}}, \
+{"compare_operand", {SUBREG, REG, ZERO_EXTRACT}}, \
{"const64_operand", {CONST_INT, CONST_DOUBLE}}, \
{"const64_high_operand", {CONST_INT, CONST_DOUBLE}},
diff --git a/gnu/usr.bin/gcc/gcc/configure b/gnu/usr.bin/gcc/gcc/configure
index 36fe9647602..1eff0613db0 100755
--- a/gnu/usr.bin/gcc/gcc/configure
+++ b/gnu/usr.bin/gcc/gcc/configure
@@ -29,6 +29,8 @@ ac_help="$ac_help
--with-gxx-include-dir=DIR
specifies directory to put g++ header files"
ac_help="$ac_help
+ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR."
+ac_help="$ac_help
--enable-multilib enable library support for multiple ABIs"
ac_help="$ac_help
--enable-checking[=LIST]
@@ -627,7 +629,7 @@ copy=cp
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
echo $ac_n "checking LIBRARY_PATH variable""... $ac_c" 1>&6
-echo "configure:631: checking LIBRARY_PATH variable" >&5
+echo "configure:633: checking LIBRARY_PATH variable" >&5
case ${LIBRARY_PATH} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
library_path_setting="contains current directory"
@@ -652,7 +654,7 @@ fi
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
echo $ac_n "checking GCC_EXEC_PREFIX variable""... $ac_c" 1>&6
-echo "configure:656: checking GCC_EXEC_PREFIX variable" >&5
+echo "configure:658: checking GCC_EXEC_PREFIX variable" >&5
case ${GCC_EXEC_PREFIX} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
gcc_exec_prefix_setting="contains current directory"
@@ -791,6 +793,47 @@ if test x${gcc_gxx_include_dir} = x; then
fi
fi
+# Check whether --with-sysroot or --without-sysroot was given.
+if test "${with_sysroot+set}" = set; then
+ withval="$with_sysroot"
+
+ case ${with_sysroot} in
+ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
+ *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+ esac
+
+ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
+ CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)'
+
+ if test "x$exec_prefix" = xNONE; then
+ if test "x$prefix" = xNONE; then
+ test_prefix=/usr/local
+ else
+ test_prefix=$prefix
+ fi
+ else
+ test_prefix=$exec_prefix
+ fi
+ case ${TARGET_SYSTEM_ROOT} in
+ "${test_prefix}"|"${test_prefix}/"*|\
+ '${exec_prefix}'|'${exec_prefix}/'*)
+ t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
+ TARGET_SYSTEM_ROOT_DEFINE="$t"
+ ;;
+ esac
+
+else
+
+ TARGET_SYSTEM_ROOT=
+ TARGET_SYSTEM_ROOT_DEFINE=
+ CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
+
+fi
+
+
+
+
+
# Determine the host, build, and target systems
ac_aux_dir=
for ac_dir in ${GNUSYSTEM_AUX_DIR} $srcdir $srcdir/.. $srcdir/../..; do
@@ -839,7 +882,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:843: checking host system type" >&5
+echo "configure:886: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -860,7 +903,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:864: checking target system type" >&5
+echo "configure:907: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -878,7 +921,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:882: checking build system type" >&5
+echo "configure:925: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -926,7 +969,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:930: checking for $ac_word" >&5
+echo "configure:973: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -956,7 +999,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:960: checking for $ac_word" >&5
+echo "configure:1003: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1007,7 +1050,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1011: checking for $ac_word" >&5
+echo "configure:1054: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1039,7 +1082,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1043: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1086: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1050,12 +1093,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1054 "configure"
+#line 1097 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1081,12 +1124,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1085: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1128: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1090: checking whether we are using GNU C" >&5
+echo "configure:1133: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1095,7 +1138,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1114,7 +1157,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1118: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1161: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1147,10 +1190,10 @@ fi
if test "x$CC" != xcc; then
echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
-echo "configure:1151: checking whether $CC and cc understand -c and -o together" >&5
+echo "configure:1194: checking whether $CC and cc understand -c and -o together" >&5
else
echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
-echo "configure:1154: checking whether cc understands -c and -o together" >&5
+echo "configure:1197: checking whether cc understands -c and -o together" >&5
fi
set dummy $CC; ac_cc="`echo $2 |
sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
@@ -1162,16 +1205,16 @@ else
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
-if { (eval echo configure:1166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+if { (eval echo configure:1209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
eval ac_cv_prog_cc_${ac_cc}_c_o=yes
if test "x$CC" != xcc; then
# Test first that cc exists at all.
- if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1172: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
ac_try='cc -c conftest.c -o conftest.o 1>&5'
- if { (eval echo configure:1174: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+ if { (eval echo configure:1217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
# cc works too.
:
@@ -1217,7 +1260,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args.
set dummy ${ac_tool_prefix}gnatbind; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1221: checking for $ac_word" >&5
+echo "configure:1264: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1249,7 +1292,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "gnatbind", so it can be a program name with args.
set dummy gnatbind; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1253: checking for $ac_word" >&5
+echo "configure:1296: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1282,7 +1325,7 @@ fi
fi
echo $ac_n "checking for compiler driver that understands Ada""... $ac_c" 1>&6
-echo "configure:1286: checking for compiler driver that understands Ada" >&5
+echo "configure:1329: checking for compiler driver that understands Ada" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_adac'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1324,21 +1367,21 @@ fi
echo $ac_n "checking whether ${CC-cc} accepts -Wno-long-long""... $ac_c" 1>&6
-echo "configure:1328: checking whether ${CC-cc} accepts -Wno-long-long" >&5
+echo "configure:1371: checking whether ${CC-cc} accepts -Wno-long-long" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_no_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
save_CFLAGS="$CFLAGS"
CFLAGS="-Wno-long-long"
cat > conftest.$ac_ext <<EOF
-#line 1335 "configure"
+#line 1378 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_prog_cc_no_long_long=yes
else
@@ -1355,7 +1398,7 @@ echo "$ac_t""$ac_cv_prog_cc_no_long_long" 1>&6
if test x$have_gnat != xno ; then
echo $ac_n "checking whether ${ADAC} accepts -Wno-long-long""... $ac_c" 1>&6
-echo "configure:1359: checking whether ${ADAC} accepts -Wno-long-long" >&5
+echo "configure:1402: checking whether ${ADAC} accepts -Wno-long-long" >&5
if eval "test \"`echo '$''{'ac_cv_prog_adac_no_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1383,7 +1426,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1387: checking how to run the C preprocessor" >&5
+echo "configure:1430: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1398,13 +1441,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1402 "configure"
+#line 1445 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1415,13 +1458,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1419 "configure"
+#line 1462 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1468: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1432,13 +1475,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1436 "configure"
+#line 1479 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1463,21 +1506,21 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1467: checking for inline" >&5
+echo "configure:1510: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1474 "configure"
+#line 1517 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1503,19 +1546,19 @@ EOF
esac
echo $ac_n "checking for volatile""... $ac_c" 1>&6
-echo "configure:1507: checking for volatile" >&5
+echo "configure:1550: checking for volatile" >&5
if eval "test \"`echo '$''{'gcc_cv_c_volatile'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1512 "configure"
+#line 1555 "configure"
#include "confdefs.h"
int main() {
volatile int foo;
; return 0; }
EOF
-if { (eval echo configure:1519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_volatile=yes
else
@@ -1537,7 +1580,7 @@ fi
echo $ac_n "checking for long double""... $ac_c" 1>&6
-echo "configure:1541: checking for long double" >&5
+echo "configure:1584: checking for long double" >&5
if eval "test \"`echo '$''{'gcc_cv_c_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1545,7 +1588,7 @@ else
gcc_cv_c_long_double=yes
else
cat > conftest.$ac_ext <<EOF
-#line 1549 "configure"
+#line 1592 "configure"
#include "confdefs.h"
int main() {
@@ -1555,7 +1598,7 @@ long double foo = 0.0;
switch (0) case 0: case (sizeof(long double) >= sizeof(double)):;
; return 0; }
EOF
-if { (eval echo configure:1559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_long_double=yes
else
@@ -1577,19 +1620,19 @@ EOF
fi
echo $ac_n "checking for long long int""... $ac_c" 1>&6
-echo "configure:1581: checking for long long int" >&5
+echo "configure:1624: checking for long long int" >&5
if eval "test \"`echo '$''{'ac_cv_c_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1586 "configure"
+#line 1629 "configure"
#include "confdefs.h"
int main() {
long long int i;
; return 0; }
EOF
-if { (eval echo configure:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_long_long=yes
else
@@ -1609,19 +1652,19 @@ EOF
fi
echo $ac_n "checking for __int64""... $ac_c" 1>&6
-echo "configure:1613: checking for __int64" >&5
+echo "configure:1656: checking for __int64" >&5
if eval "test \"`echo '$''{'ac_cv_c___int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1618 "configure"
+#line 1661 "configure"
#include "confdefs.h"
int main() {
__int64 i;
; return 0; }
EOF
-if { (eval echo configure:1625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c___int64=yes
else
@@ -1642,19 +1685,19 @@ EOF
fi
echo $ac_n "checking for built-in _Bool""... $ac_c" 1>&6
-echo "configure:1646: checking for built-in _Bool" >&5
+echo "configure:1689: checking for built-in _Bool" >&5
if eval "test \"`echo '$''{'gcc_cv_c__bool'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1651 "configure"
+#line 1694 "configure"
#include "confdefs.h"
int main() {
_Bool foo;
; return 0; }
EOF
-if { (eval echo configure:1658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c__bool=yes
else
@@ -1678,13 +1721,13 @@ fi
# sizeof(char) is 1 by definition.
echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:1682: checking size of short" >&5
+echo "configure:1725: checking size of short" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1688 "configure"
+#line 1731 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1694,7 +1737,7 @@ int main() {
switch (0) case 0: case (sizeof (short) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1698: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_short=$ac_size
else
@@ -1717,13 +1760,13 @@ EOF
echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:1721: checking size of int" >&5
+echo "configure:1764: checking size of int" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1727 "configure"
+#line 1770 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1733,7 +1776,7 @@ int main() {
switch (0) case 0: case (sizeof (int) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_int=$ac_size
else
@@ -1756,13 +1799,13 @@ EOF
echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:1760: checking size of long" >&5
+echo "configure:1803: checking size of long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1766 "configure"
+#line 1809 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1772,7 +1815,7 @@ int main() {
switch (0) case 0: case (sizeof (long) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_long=$ac_size
else
@@ -1796,13 +1839,13 @@ EOF
if test $ac_cv_c_long_long = yes; then
echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:1800: checking size of long long" >&5
+echo "configure:1843: checking size of long long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1806 "configure"
+#line 1849 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1812,7 +1855,7 @@ int main() {
switch (0) case 0: case (sizeof (long long) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_long_long=$ac_size
else
@@ -1837,13 +1880,13 @@ EOF
fi
if test $ac_cv_c___int64 = yes; then
echo $ac_n "checking size of __int64""... $ac_c" 1>&6
-echo "configure:1841: checking size of __int64" >&5
+echo "configure:1884: checking size of __int64" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof___int64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 1847 "configure"
+#line 1890 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -1853,7 +1896,7 @@ int main() {
switch (0) case 0: case (sizeof (__int64) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:1857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof___int64=$ac_size
else
@@ -1878,12 +1921,12 @@ EOF
fi
echo $ac_n "checking execution character set""... $ac_c" 1>&6
-echo "configure:1882: checking execution character set" >&5
+echo "configure:1925: checking execution character set" >&5
if eval "test \"`echo '$''{'ac_cv_c_charset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1887 "configure"
+#line 1930 "configure"
#include "confdefs.h"
#if '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
&& 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21
@@ -1899,7 +1942,7 @@ rm -f conftest*
if test x${ac_cv_c_charset+set} != xset; then
cat > conftest.$ac_ext <<EOF
-#line 1903 "configure"
+#line 1946 "configure"
#include "confdefs.h"
#if '\n' == 0x15 && ' ' == 0x40 && '0' == 0xF0 \
&& 'A' == 0xC1 && 'a' == 0x81 && '!' == 0x5A
@@ -2030,17 +2073,17 @@ if test x$ac_checking_valgrind != x ; then
# GCC relies on making annotations so we must have both.
ac_safe=`echo "valgrind.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for valgrind.h""... $ac_c" 1>&6
-echo "configure:2034: checking for valgrind.h" >&5
+echo "configure:2077: checking for valgrind.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2039 "configure"
+#line 2082 "configure"
#include "confdefs.h"
#include <valgrind.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2065,7 +2108,7 @@ fi
# Extract the first word of "valgrind", so it can be a program name with args.
set dummy valgrind; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2069: checking for $ac_word" >&5
+echo "configure:2112: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_valgrind_path'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2268,7 +2311,7 @@ esac
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:2272: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:2315: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2296,7 +2339,7 @@ fi
echo $ac_n "checking whether a default assembler was specified""... $ac_c" 1>&6
-echo "configure:2300: checking whether a default assembler was specified" >&5
+echo "configure:2343: checking whether a default assembler was specified" >&5
if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
if test x"$gas_flag" = x"no"; then
echo "$ac_t""yes ($DEFAULT_ASSEMBLER)" 1>&6
@@ -2308,7 +2351,7 @@ else
fi
echo $ac_n "checking whether a default linker was specified""... $ac_c" 1>&6
-echo "configure:2312: checking whether a default linker was specified" >&5
+echo "configure:2355: checking whether a default linker was specified" >&5
if test x"${DEFAULT_LINKER+set}" = x"set"; then
if test x"$gnu_ld_flag" = x"no"; then
echo "$ac_t""yes ($DEFAULT_LINKER)" 1>&6
@@ -2320,12 +2363,12 @@ else
fi
echo $ac_n "checking for GNU C library""... $ac_c" 1>&6
-echo "configure:2324: checking for GNU C library" >&5
+echo "configure:2367: checking for GNU C library" >&5
if eval "test \"`echo '$''{'gcc_cv_glibc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2329 "configure"
+#line 2372 "configure"
#include "confdefs.h"
#include <features.h>
int main() {
@@ -2335,7 +2378,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:2339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_glibc=yes
else
@@ -2356,12 +2399,12 @@ EOF
fi
# Find some useful tools
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2365: checking for $ac_word" >&5
+echo "configure:2408: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2391,7 +2434,7 @@ test -n "$AWK" && break
done
echo $ac_n "checking whether ln works""... $ac_c" 1>&6
-echo "configure:2395: checking whether ln works" >&5
+echo "configure:2438: checking whether ln works" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_LN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2423,7 +2466,7 @@ else
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:2427: checking whether ln -s works" >&5
+echo "configure:2470: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2457,7 +2500,7 @@ fi
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2461: checking for $ac_word" >&5
+echo "configure:2504: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2495,7 +2538,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2499: checking for a BSD compatible install" >&5
+echo "configure:2542: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2546,12 +2589,12 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2550: checking for ANSI C header files" >&5
+echo "configure:2593: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2555 "configure"
+#line 2598 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2559,7 +2602,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2576,7 +2619,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2580 "configure"
+#line 2623 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2594,7 +2637,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2598 "configure"
+#line 2641 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2615,7 +2658,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2619 "configure"
+#line 2662 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2626,7 +2669,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2650,12 +2693,12 @@ EOF
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2654: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2697: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2659 "configure"
+#line 2702 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -2664,7 +2707,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:2668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -2685,19 +2728,19 @@ EOF
fi
echo $ac_n "checking for working stdbool.h""... $ac_c" 1>&6
-echo "configure:2689: checking for working stdbool.h" >&5
+echo "configure:2732: checking for working stdbool.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdbool_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2694 "configure"
+#line 2737 "configure"
#include "confdefs.h"
#include <stdbool.h>
int main() {
bool foo = false;
; return 0; }
EOF
-if { (eval echo configure:2701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_stdbool_h=yes
else
@@ -2718,12 +2761,12 @@ EOF
fi
echo $ac_n "checking whether string.h and strings.h may both be included""... $ac_c" 1>&6
-echo "configure:2722: checking whether string.h and strings.h may both be included" >&5
+echo "configure:2765: checking whether string.h and strings.h may both be included" >&5
if eval "test \"`echo '$''{'gcc_cv_header_string'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2727 "configure"
+#line 2770 "configure"
#include "confdefs.h"
#include <string.h>
#include <strings.h>
@@ -2731,7 +2774,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:2735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_header_string=yes
else
@@ -2752,12 +2795,12 @@ EOF
fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2756: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2799: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2761 "configure"
+#line 2804 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -2773,7 +2816,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:2777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -2800,17 +2843,17 @@ for ac_hdr in limits.h stddef.h string.h strings.h stdlib.h time.h \
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2804: checking for $ac_hdr" >&5
+echo "configure:2847: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2809 "configure"
+#line 2852 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2840,17 +2883,17 @@ done
# Check for thread headers.
ac_safe=`echo "thread.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for thread.h""... $ac_c" 1>&6
-echo "configure:2844: checking for thread.h" >&5
+echo "configure:2887: checking for thread.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2849 "configure"
+#line 2892 "configure"
#include "confdefs.h"
#include <thread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2874,17 +2917,17 @@ fi
ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for pthread.h""... $ac_c" 1>&6
-echo "configure:2878: checking for pthread.h" >&5
+echo "configure:2921: checking for pthread.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2883 "configure"
+#line 2926 "configure"
#include "confdefs.h"
#include <pthread.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2931: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2909,12 +2952,12 @@ fi
# These tests can't be done till we know if we have limits.h.
echo $ac_n "checking for CHAR_BIT""... $ac_c" 1>&6
-echo "configure:2913: checking for CHAR_BIT" >&5
+echo "configure:2956: checking for CHAR_BIT" >&5
if eval "test \"`echo '$''{'gcc_cv_decl_char_bit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2918 "configure"
+#line 2961 "configure"
#include "confdefs.h"
#ifdef HAVE_LIMITS_H
#include <limits.h>
@@ -2939,7 +2982,7 @@ fi
echo "$ac_t""$gcc_cv_decl_char_bit" 1>&6
if test $gcc_cv_decl_char_bit = no; then
echo $ac_n "checking number of bits in a byte""... $ac_c" 1>&6
-echo "configure:2943: checking number of bits in a byte" >&5
+echo "configure:2986: checking number of bits in a byte" >&5
if eval "test \"`echo '$''{'gcc_cv_c_nbby'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2947,7 +2990,7 @@ else
gcc_cv_c_nbby=
while test $i -lt 65; do
cat > conftest.$ac_ext <<EOF
-#line 2951 "configure"
+#line 2994 "configure"
#include "confdefs.h"
int main() {
@@ -2957,7 +3000,7 @@ switch(0) {
; }
; return 0; }
EOF
-if { (eval echo configure:2961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_c_nbby=$i; break
else
@@ -2982,7 +3025,7 @@ EOF
fi
fi
echo $ac_n "checking byte ordering""... $ac_c" 1>&6
-echo "configure:2986: checking byte ordering" >&5
+echo "configure:3029: checking byte ordering" >&5
if eval "test \"`echo '$''{'ac_cv_c_compile_endian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2996,7 +3039,7 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 3000 "configure"
+#line 3043 "configure"
#include "confdefs.h"
#ifdef HAVE_LIMITS_H
@@ -3016,7 +3059,7 @@ cat > conftest.$ac_ext <<EOF
'X', '\n'
};
EOF
-if { (eval echo configure:3020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
od -c conftest.o |
sed 's/^[0-7]*[ ]*/ /
s/\*/./g
@@ -3055,7 +3098,7 @@ EOF
fi
echo $ac_n "checking floating point format""... $ac_c" 1>&6
-echo "configure:3059: checking floating point format" >&5
+echo "configure:3102: checking floating point format" >&5
if eval "test \"`echo '$''{'ac_cv_c_float_format'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3068,7 +3111,7 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 3072 "configure"
+#line 3115 "configure"
#include "confdefs.h"
/* This will not work unless sizeof(double) == 8. */
extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
@@ -3090,7 +3133,7 @@ struct possibility table [] =
C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
};
EOF
-if { (eval echo configure:3094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
od -c conftest.o |
sed 's/^[0-7]*[ ]*/ /
s/\*/./g
@@ -3179,7 +3222,7 @@ fi
# Extract the first word of "mktemp", so it can be a program name with args.
set dummy mktemp; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3183: checking for $ac_word" >&5
+echo "configure:3226: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_have_mktemp_command'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3218,7 +3261,7 @@ else
# Extract the first word of "makeinfo", so it can be a program name with args.
set dummy makeinfo; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3222: checking for $ac_word" >&5
+echo "configure:3265: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3247,13 +3290,13 @@ fi
if test -n "$MAKEINFO"; then
# Found it, now check the version.
echo $ac_n "checking for modern makeinfo""... $ac_c" 1>&6
-echo "configure:3251: checking for modern makeinfo" >&5
+echo "configure:3294: checking for modern makeinfo" >&5
if eval "test \"`echo '$''{'gcc_cv_prog_makeinfo_modern'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_prog_version=`$MAKEINFO --version 2>&1 |
sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
- echo "configure:3257: version of makeinfo is $ac_prog_version" >&5
+ echo "configure:3300: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
4.[2-9]*)
@@ -3281,7 +3324,7 @@ fi
# Is pod2man recent enough to regenerate manpages?
echo $ac_n "checking for recent Pod::Man""... $ac_c" 1>&6
-echo "configure:3285: checking for recent Pod::Man" >&5
+echo "configure:3328: checking for recent Pod::Man" >&5
if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
echo "$ac_t""yes" 1>&6
GENERATED_MANPAGES=generated-manpages
@@ -3297,7 +3340,7 @@ else
# Extract the first word of "flex", so it can be a program name with args.
set dummy flex; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3301: checking for $ac_word" >&5
+echo "configure:3344: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3334,7 +3377,7 @@ else
# Extract the first word of "bison", so it can be a program name with args.
set dummy bison; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3338: checking for $ac_word" >&5
+echo "configure:3381: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3366,7 +3409,7 @@ fi
# These libraries may be used by collect2.
# We may need a special search path to get them linked.
echo $ac_n "checking for collect2 libraries""... $ac_c" 1>&6
-echo "configure:3370: checking for collect2 libraries" >&5
+echo "configure:3413: checking for collect2 libraries" >&5
if eval "test \"`echo '$''{'gcc_cv_collect2_libs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3377,7 +3420,7 @@ for libs in '' -lld -lmld \
do
LIBS="$libs"
cat > conftest.$ac_ext <<EOF
-#line 3381 "configure"
+#line 3424 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3388,7 +3431,7 @@ int main() {
ldopen()
; return 0; }
EOF
-if { (eval echo configure:3392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gcc_cv_collect2_libs="$libs"; break
else
@@ -3414,14 +3457,14 @@ save_LIBS="$LIBS"
LIBS=
echo $ac_n "checking for library containing exc_resume""... $ac_c" 1>&6
-echo "configure:3418: checking for library containing exc_resume" >&5
+echo "configure:3461: checking for library containing exc_resume" >&5
if eval "test \"`echo '$''{'ac_cv_search_exc_resume'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_exc_resume="no"
cat > conftest.$ac_ext <<EOF
-#line 3425 "configure"
+#line 3468 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3432,7 +3475,7 @@ int main() {
exc_resume()
; return 0; }
EOF
-if { (eval echo configure:3436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_exc_resume="none required"
else
@@ -3443,7 +3486,7 @@ rm -f conftest*
test "$ac_cv_search_exc_resume" = "no" && for i in exc; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3447 "configure"
+#line 3490 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3454,7 +3497,7 @@ int main() {
exc_resume()
; return 0; }
EOF
-if { (eval echo configure:3458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_exc_resume="-l$i"
break
@@ -3484,14 +3527,14 @@ save_LIBS="$LIBS"
LIBS=
echo $ac_n "checking for library containing ldexp""... $ac_c" 1>&6
-echo "configure:3488: checking for library containing ldexp" >&5
+echo "configure:3531: checking for library containing ldexp" >&5
if eval "test \"`echo '$''{'ac_cv_search_ldexp'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_ldexp="no"
cat > conftest.$ac_ext <<EOF
-#line 3495 "configure"
+#line 3538 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3502,7 +3545,7 @@ int main() {
ldexp()
; return 0; }
EOF
-if { (eval echo configure:3506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_ldexp="none required"
else
@@ -3513,7 +3556,7 @@ rm -f conftest*
test "$ac_cv_search_ldexp" = "no" && for i in m; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3517 "configure"
+#line 3560 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3524,7 +3567,7 @@ int main() {
ldexp()
; return 0; }
EOF
-if { (eval echo configure:3528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_ldexp="-l$i"
break
@@ -3553,12 +3596,12 @@ LIBS="$save_LIBS"
echo $ac_n "checking for preprocessor stringizing operator""... $ac_c" 1>&6
-echo "configure:3557: checking for preprocessor stringizing operator" >&5
+echo "configure:3600: checking for preprocessor stringizing operator" >&5
if eval "test \"`echo '$''{'ac_cv_c_stringize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3562 "configure"
+#line 3605 "configure"
#include "confdefs.h"
#define x(y) #y
@@ -3591,12 +3634,12 @@ echo "$ac_t""${ac_cv_c_stringize}" 1>&6
# Use <inttypes.h> only if it exists,
# doesn't clash with <sys/types.h>, and declares intmax_t.
echo $ac_n "checking for inttypes.h""... $ac_c" 1>&6
-echo "configure:3595: checking for inttypes.h" >&5
+echo "configure:3638: checking for inttypes.h" >&5
if eval "test \"`echo '$''{'gcc_cv_header_inttypes_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3600 "configure"
+#line 3643 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <inttypes.h>
@@ -3604,7 +3647,7 @@ int main() {
intmax_t i = -1;
; return 0; }
EOF
-if { (eval echo configure:3608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_header_inttypes_h=yes
else
@@ -3631,12 +3674,12 @@ for ac_func in times clock dup2 kill getrlimit setrlimit atoll atoq \
scandir alphasort gettimeofday mmap
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3635: checking for $ac_func" >&5
+echo "configure:3678: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3640 "configure"
+#line 3683 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3659,7 +3702,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3685,12 +3728,12 @@ done
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3689: checking for ssize_t" >&5
+echo "configure:3732: checking for ssize_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3694 "configure"
+#line 3737 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3721,12 +3764,12 @@ fi
# Try to determine the array type of the second argument of getgroups
# for the target system (int or gid_t).
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3725: checking for uid_t in sys/types.h" >&5
+echo "configure:3768: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3730 "configure"
+#line 3773 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3755,7 +3798,7 @@ EOF
fi
echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
-echo "configure:3759: checking type of array argument to getgroups" >&5
+echo "configure:3802: checking type of array argument to getgroups" >&5
if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3763,7 +3806,7 @@ else
ac_cv_type_getgroups=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3767 "configure"
+#line 3810 "configure"
#include "confdefs.h"
/* Thanks to Mike Rendell for this test. */
@@ -3788,7 +3831,7 @@ main()
}
EOF
-if { (eval echo configure:3792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_type_getgroups=gid_t
else
@@ -3802,7 +3845,7 @@ fi
if test $ac_cv_type_getgroups = cross; then
cat > conftest.$ac_ext <<EOF
-#line 3806 "configure"
+#line 3849 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -3843,7 +3886,7 @@ fi
echo $ac_n "checking whether the printf functions support %p""... $ac_c" 1>&6
-echo "configure:3847: checking whether the printf functions support %p" >&5
+echo "configure:3890: checking whether the printf functions support %p" >&5
if eval "test \"`echo '$''{'gcc_cv_func_printf_ptr'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3851,7 +3894,7 @@ else
gcc_cv_func_printf_ptr=no
else
cat > conftest.$ac_ext <<EOF
-#line 3855 "configure"
+#line 3898 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -3864,7 +3907,7 @@ int main()
return (p != q);
}
EOF
-if { (eval echo configure:3868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gcc_cv_func_printf_ptr=yes
else
@@ -3894,7 +3937,7 @@ if test $ac_cv_header_sys_mman_h != yes \
gcc_cv_func_mmap_anon=no
else
echo $ac_n "checking whether read-only mmap of a plain file works""... $ac_c" 1>&6
-echo "configure:3898: checking whether read-only mmap of a plain file works" >&5
+echo "configure:3941: checking whether read-only mmap of a plain file works" >&5
if eval "test \"`echo '$''{'gcc_cv_func_mmap_file'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3913,7 +3956,7 @@ fi
echo "$ac_t""$gcc_cv_func_mmap_file" 1>&6
echo $ac_n "checking whether mmap from /dev/zero works""... $ac_c" 1>&6
-echo "configure:3917: checking whether mmap from /dev/zero works" >&5
+echo "configure:3960: checking whether mmap from /dev/zero works" >&5
if eval "test \"`echo '$''{'gcc_cv_func_mmap_dev_zero'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3939,12 +3982,12 @@ echo "$ac_t""$gcc_cv_func_mmap_dev_zero" 1>&6
# Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
echo $ac_n "checking for MAP_ANON(YMOUS)""... $ac_c" 1>&6
-echo "configure:3943: checking for MAP_ANON(YMOUS)" >&5
+echo "configure:3986: checking for MAP_ANON(YMOUS)" >&5
if eval "test \"`echo '$''{'gcc_cv_decl_map_anon'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3948 "configure"
+#line 3991 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/mman.h>
@@ -3958,7 +4001,7 @@ int main() {
int n = MAP_ANONYMOUS;
; return 0; }
EOF
-if { (eval echo configure:3962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_decl_map_anon=yes
else
@@ -3976,7 +4019,7 @@ echo "$ac_t""$gcc_cv_decl_map_anon" 1>&6
gcc_cv_func_mmap_anon=no
else
echo $ac_n "checking whether mmap with MAP_ANON(YMOUS) works""... $ac_c" 1>&6
-echo "configure:3980: checking whether mmap with MAP_ANON(YMOUS) works" >&5
+echo "configure:4023: checking whether mmap with MAP_ANON(YMOUS) works" >&5
if eval "test \"`echo '$''{'gcc_cv_func_mmap_anon'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4031,12 +4074,12 @@ case "${host}" in
;;
esac
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:4035: checking for pid_t" >&5
+echo "configure:4078: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4040 "configure"
+#line 4083 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4065,17 +4108,17 @@ fi
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:4069: checking for vfork.h" >&5
+echo "configure:4112: checking for vfork.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4074 "configure"
+#line 4117 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4100,18 +4143,18 @@ else
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:4104: checking for working vfork" >&5
+echo "configure:4147: checking for working vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
echo $ac_n "checking for vfork""... $ac_c" 1>&6
-echo "configure:4110: checking for vfork" >&5
+echo "configure:4153: checking for vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4115 "configure"
+#line 4158 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
@@ -4134,7 +4177,7 @@ vfork();
; return 0; }
EOF
-if { (eval echo configure:4138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vfork=yes"
else
@@ -4156,7 +4199,7 @@ fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
else
cat > conftest.$ac_ext <<EOF
-#line 4160 "configure"
+#line 4203 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -4251,7 +4294,7 @@ main() {
}
}
EOF
-if { (eval echo configure:4255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_vfork_works=yes
else
@@ -4290,7 +4333,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:4294: checking for iconv" >&5
+echo "configure:4337: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4298,7 +4341,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 4302 "configure"
+#line 4345 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4308,7 +4351,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -4320,7 +4363,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 4324 "configure"
+#line 4367 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -4330,7 +4373,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:4334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@@ -4351,13 +4394,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:4355: checking for iconv declaration" >&5
+echo "configure:4398: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4361 "configure"
+#line 4404 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -4376,7 +4419,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -4414,12 +4457,12 @@ for ac_func in getenv atol sbrk abort atof getcwd getwd \
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:4418: checking whether $ac_func is declared" >&5
+echo "configure:4461: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4423 "configure"
+#line 4466 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4433,7 +4476,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4480: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4535,12 +4578,12 @@ for ac_func in getrlimit setrlimit getrusage
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:4539: checking whether $ac_func is declared" >&5
+echo "configure:4582: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4544 "configure"
+#line 4587 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4558,7 +4601,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4597,7 +4640,7 @@ fi
cat > conftest.$ac_ext <<EOF
-#line 4601 "configure"
+#line 4644 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4610,7 +4653,7 @@ int main() {
rlim_t l = 0;
; return 0; }
EOF
-if { (eval echo configure:4614: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
:
else
echo "configure: failed program was:" >&5
@@ -4627,12 +4670,12 @@ for ac_func in times
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:4631: checking whether $ac_func is declared" >&5
+echo "configure:4674: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4636 "configure"
+#line 4679 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -4650,7 +4693,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:4654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4697: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -4684,13 +4727,13 @@ fi
# More time-related stuff.
echo $ac_n "checking for struct tms""... $ac_c" 1>&6
-echo "configure:4688: checking for struct tms" >&5
+echo "configure:4731: checking for struct tms" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tms'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4694 "configure"
+#line 4737 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4703,7 +4746,7 @@ int main() {
struct tms tms;
; return 0; }
EOF
-if { (eval echo configure:4707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tms=yes
else
@@ -4726,13 +4769,13 @@ fi
# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
# revisit after autoconf 2.50.
echo $ac_n "checking for clock_t""... $ac_c" 1>&6
-echo "configure:4730: checking for clock_t" >&5
+echo "configure:4773: checking for clock_t" >&5
if eval "test \"`echo '$''{'gcc_cv_type_clock_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4736 "configure"
+#line 4779 "configure"
#include "confdefs.h"
#include "ansidecl.h"
@@ -4742,7 +4785,7 @@ int main() {
clock_t x;
; return 0; }
EOF
-if { (eval echo configure:4746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_type_clock_t=yes
else
@@ -4762,13 +4805,50 @@ EOF
fi
+echo $ac_n "checking for uchar""... $ac_c" 1>&6
+echo "configure:4810: checking for uchar" >&5
+if eval "test \"`echo '$''{'gcc_cv_type_uchar'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4815 "configure"
+#include "confdefs.h"
+
+#include "ansidecl.h"
+#include "system.h"
+
+int main() {
+if ((uchar *)0) return 0;
+ if (sizeof(uchar)) return 0;
+; return 0; }
+EOF
+if { (eval echo configure:4826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_type_uchar=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_type_uchar=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gcc_cv_type_uchar" 1>&6
+if test $ac_cv_type_uchar = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_UCHAR 1
+EOF
+
+fi
+
# Check whether --enable-initfini-array or --disable-initfini-array was given.
if test "${enable_initfini_array+set}" = set; then
enableval="$enable_initfini_array"
gcc_cv_initfinit_array=$enableval
else
echo $ac_n "checking for .preinit_array/.init_array/.fini_array support""... $ac_c" 1>&6
-echo "configure:4772: checking for .preinit_array/.init_array/.fini_array support" >&5
+echo "configure:4852: checking for .preinit_array/.init_array/.fini_array support" >&5
if eval "test \"`echo '$''{'gcc_cv_initfinit_array'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4778,7 +4858,7 @@ int main (void) { return x; }
int foo (void) { x = 0; }
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
EOF
- if { ac_try='${CC-cc} -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD'; { (eval echo configure:4782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+ if { ac_try='${CC-cc} -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD'; { (eval echo configure:4862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
then
if ./conftest; then
gcc_cv_initfinit_array=yes
@@ -4807,12 +4887,12 @@ CFLAGS="$saved_CFLAGS"
# mkdir takes a single argument on some systems.
echo $ac_n "checking if mkdir takes one argument""... $ac_c" 1>&6
-echo "configure:4811: checking if mkdir takes one argument" >&5
+echo "configure:4891: checking if mkdir takes one argument" >&5
if eval "test \"`echo '$''{'gcc_cv_mkdir_takes_one_arg'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4816 "configure"
+#line 4896 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -4829,7 +4909,7 @@ int main() {
mkdir ("foo", 0);
; return 0; }
EOF
-if { (eval echo configure:4833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4913: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gcc_cv_mkdir_takes_one_arg=no
else
@@ -4869,7 +4949,7 @@ fi
echo $ac_n "checking for main in -lunwind""... $ac_c" 1>&6
-echo "configure:4873: checking for main in -lunwind" >&5
+echo "configure:4953: checking for main in -lunwind" >&5
ac_lib_var=`echo unwind'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4877,14 +4957,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lunwind $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4881 "configure"
+#line 4961 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5162,14 +5242,14 @@ fi
echo $ac_n "checking for library containing strerror""... $ac_c" 1>&6
-echo "configure:5166: checking for library containing strerror" >&5
+echo "configure:5246: checking for library containing strerror" >&5
if eval "test \"`echo '$''{'ac_cv_search_strerror'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_strerror="no"
cat > conftest.$ac_ext <<EOF
-#line 5173 "configure"
+#line 5253 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5180,7 +5260,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_strerror="none required"
else
@@ -5191,7 +5271,7 @@ rm -f conftest*
test "$ac_cv_search_strerror" = "no" && for i in cposix; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5195 "configure"
+#line 5275 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5202,7 +5282,7 @@ int main() {
strerror()
; return 0; }
EOF
-if { (eval echo configure:5206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_strerror="-l$i"
break
@@ -5225,12 +5305,12 @@ fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:5229: checking for working const" >&5
+echo "configure:5309: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5234 "configure"
+#line 5314 "configure"
#include "confdefs.h"
int main() {
@@ -5279,7 +5359,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:5283: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -5300,12 +5380,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:5304: checking for off_t" >&5
+echo "configure:5384: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5309 "configure"
+#line 5389 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -5333,12 +5413,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:5337: checking for size_t" >&5
+echo "configure:5417: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5342 "configure"
+#line 5422 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -5368,19 +5448,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:5372: checking for working alloca.h" >&5
+echo "configure:5452: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5377 "configure"
+#line 5457 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:5384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -5401,12 +5481,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:5405: checking for alloca" >&5
+echo "configure:5485: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5410 "configure"
+#line 5490 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -5434,7 +5514,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:5438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -5466,12 +5546,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:5470: checking whether alloca needs Cray hooks" >&5
+echo "configure:5550: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5475 "configure"
+#line 5555 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -5496,12 +5576,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5500: checking for $ac_func" >&5
+echo "configure:5580: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5505 "configure"
+#line 5585 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5524,7 +5604,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5551,7 +5631,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:5555: checking stack direction for C alloca" >&5
+echo "configure:5635: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5559,7 +5639,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 5563 "configure"
+#line 5643 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -5578,7 +5658,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:5582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -5601,12 +5681,12 @@ fi
echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6
-echo "configure:5605: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo "configure:5685: checking whether we are using the GNU C Library 2.1 or newer" >&5
if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5610 "configure"
+#line 5690 "configure"
#include "confdefs.h"
#include <features.h>
@@ -5642,17 +5722,17 @@ stdlib.h string.h unistd.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5646: checking for $ac_hdr" >&5
+echo "configure:5726: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5651 "configure"
+#line 5731 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5656: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5683,12 +5763,12 @@ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
strdup strtoul tsearch __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5687: checking for $ac_func" >&5
+echo "configure:5767: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5692 "configure"
+#line 5772 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5711,7 +5791,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5752,7 +5832,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:5756: checking for iconv" >&5
+echo "configure:5836: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5760,7 +5840,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 5764 "configure"
+#line 5844 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5770,7 +5850,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -5782,7 +5862,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 5786 "configure"
+#line 5866 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5792,7 +5872,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@@ -5813,13 +5893,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:5817: checking for iconv declaration" >&5
+echo "configure:5897: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5823 "configure"
+#line 5903 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -5838,7 +5918,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -5867,19 +5947,19 @@ EOF
echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:5871: checking for nl_langinfo and CODESET" >&5
+echo "configure:5951: checking for nl_langinfo and CODESET" >&5
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5876 "configure"
+#line 5956 "configure"
#include "confdefs.h"
#include <langinfo.h>
int main() {
char* cs = nl_langinfo(CODESET);
; return 0; }
EOF
-if { (eval echo configure:5883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_langinfo_codeset=yes
else
@@ -5902,19 +5982,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:5906: checking for LC_MESSAGES" >&5
+echo "configure:5986: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5911 "configure"
+#line 5991 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:5918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -5935,7 +6015,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:5939: checking whether NLS is requested" >&5
+echo "configure:6019: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -5958,7 +6038,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:5962: checking whether included gettext is requested" >&5
+echo "configure:6042: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -5978,17 +6058,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:5982: checking for libintl.h" >&5
+echo "configure:6062: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5987 "configure"
+#line 6067 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6072: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -6009,12 +6089,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
EOF
echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6
-echo "configure:6013: checking for GNU gettext in libc" >&5
+echo "configure:6093: checking for GNU gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6018 "configure"
+#line 6098 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
@@ -6023,7 +6103,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:6027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libc=yes
else
@@ -6039,14 +6119,14 @@ echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6
if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6
-echo "configure:6043: checking for GNU gettext in libintl" >&5
+echo "configure:6123: checking for GNU gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
gt_save_LIBS="$LIBS"
LIBS="$LIBS -lintl $LIBICONV"
cat > conftest.$ac_ext <<EOF
-#line 6050 "configure"
+#line 6130 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
@@ -6055,7 +6135,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:6059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libintl=yes
else
@@ -6088,12 +6168,12 @@ EOF
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6092: checking for $ac_func" >&5
+echo "configure:6172: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6097 "configure"
+#line 6177 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6116,7 +6196,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6145,7 +6225,7 @@ done
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6149: checking for $ac_word" >&5
+echo "configure:6229: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6179,7 +6259,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6183: checking for $ac_word" >&5
+echo "configure:6263: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6216,7 +6296,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6220: checking for $ac_word" >&5
+echo "configure:6300: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6266,7 +6346,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6270: checking for $ac_word" >&5
+echo "configure:6350: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6300,7 +6380,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6304: checking for $ac_word" >&5
+echo "configure:6384: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6336,7 +6416,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6340: checking for $ac_word" >&5
+echo "configure:6420: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6408,7 +6488,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6412: checking for $ac_word" >&5
+echo "configure:6492: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6441,7 +6521,7 @@ done
ac_verc_fail=yes
else
echo $ac_n "checking version of bison""... $ac_c" 1>&6
-echo "configure:6445: checking version of bison" >&5
+echo "configure:6525: checking version of bison" >&5
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -6486,7 +6566,7 @@ EOF
if test "x$CATOBJEXT" != x; then
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:6490: checking for catalogs to be installed" >&5
+echo "configure:6570: checking for catalogs to be installed" >&5
# Look for .po and .gmo files in the source directory.
CATALOGS=
XLINGUAS=
@@ -6544,7 +6624,7 @@ fi
case $host_os in
win32 | pe | cygwin* | mingw32* | uwin*)
echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6
-echo "configure:6548: checking whether windows registry support is requested" >&5
+echo "configure:6628: checking whether windows registry support is requested" >&5
if test "x$enable_win32_registry" != xno; then
cat >> confdefs.h <<\EOF
#define ENABLE_WIN32_REGISTRY 1
@@ -6553,14 +6633,14 @@ EOF
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for library containing RegOpenKeyExA""... $ac_c" 1>&6
-echo "configure:6557: checking for library containing RegOpenKeyExA" >&5
+echo "configure:6637: checking for library containing RegOpenKeyExA" >&5
if eval "test \"`echo '$''{'ac_cv_search_RegOpenKeyExA'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_RegOpenKeyExA="no"
cat > conftest.$ac_ext <<EOF
-#line 6564 "configure"
+#line 6644 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6571,7 +6651,7 @@ int main() {
RegOpenKeyExA()
; return 0; }
EOF
-if { (eval echo configure:6575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_RegOpenKeyExA="none required"
else
@@ -6582,7 +6662,7 @@ rm -f conftest*
test "$ac_cv_search_RegOpenKeyExA" = "no" && for i in advapi32; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6586 "configure"
+#line 6666 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6593,7 +6673,7 @@ int main() {
RegOpenKeyExA()
; return 0; }
EOF
-if { (eval echo configure:6597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_RegOpenKeyExA="-l$i"
break
@@ -6635,7 +6715,7 @@ esac
if test "x$enable_win32_registry" != xno; then
echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6
-echo "configure:6639: checking registry key on windows hosts" >&5
+echo "configure:6719: checking registry key on windows hosts" >&5
cat >> confdefs.h <<EOF
#define WIN32_REGISTRY_KEY "$gcc_cv_win32_registry_key"
EOF
@@ -6761,6 +6841,9 @@ then
| powerpc*-*-*,powerpc64*-*-*)
CROSS="$CROSS -DNATIVE_CROSS" ;;
esac
+elif test "x$TARGET_SYSTEM_ROOT" != x; then
+ # This is just $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)
+ SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
fi
# If this is a cross-compiler that does not
@@ -6771,12 +6854,9 @@ fi
# This prevents libgcc2 from containing any code which requires libc
# support.
inhibit_libc=
-if test x$host != x$target && test x$with_headers = x; then
+if { test x$host != x$target && test "x$with_headers" = x &&
+ test "x$with_sysroot" = x ; } || test x$with_newlib = xyes ; then
inhibit_libc=-Dinhibit_libc
-else
- if test x$with_newlib = xyes; then
- inhibit_libc=-Dinhibit_libc
- fi
fi
@@ -6803,8 +6883,10 @@ then
HOST_CC='$(CC_FOR_BUILD)'
HOST_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
- STMP_FIXINC=
- STMP_FIXPROTO=
+ if test "x$TARGET_SYSTEM_ROOT" = x; then
+ STMP_FIXINC=
+ STMP_FIXPROTO=
+ fi
fi
# Expand extra_headers to include complete path.
@@ -6849,7 +6931,7 @@ fi
# Figure out what assembler we will be using.
echo $ac_n "checking what assembler to use""... $ac_c" 1>&6
-echo "configure:6853: checking what assembler to use" >&5
+echo "configure:6935: checking what assembler to use" >&5
gcc_cv_as=
gcc_cv_gas_major_version=
gcc_cv_gas_minor_version=
@@ -6943,7 +7025,7 @@ fi
# Figure out what linker we will be using.
echo $ac_n "checking what linker to use""... $ac_c" 1>&6
-echo "configure:6947: checking what linker to use" >&5
+echo "configure:7029: checking what linker to use" >&5
gcc_cv_ld=
gcc_cv_gld_major_version=
gcc_cv_gld_minor_version=
@@ -7036,7 +7118,7 @@ fi
# Figure out what nm we will be using.
echo $ac_n "checking what nm to use""... $ac_c" 1>&6
-echo "configure:7040: checking what nm to use" >&5
+echo "configure:7122: checking what nm to use" >&5
if test -x nm$host_exeext; then
gcc_cv_nm=./nm$host_exeext
elif test "x$program_prefix" != xNONE; then
@@ -7048,7 +7130,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6
# Figure out what objdump we will be using.
echo $ac_n "checking what objdump to use""... $ac_c" 1>&6
-echo "configure:7052: checking what objdump to use" >&5
+echo "configure:7134: checking what objdump to use" >&5
if test -x objdump$host_exeext; then
gcc_cv_objdump=./objdump$host_exeext
elif test "x$program_prefix" != xNONE; then
@@ -7060,7 +7142,7 @@ echo "$ac_t""$gcc_cv_objdump" 1>&6
# Figure out what assembler alignment features are present.
echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:7064: checking assembler alignment features" >&5
+echo "configure:7146: checking assembler alignment features" >&5
gcc_cv_as_alignment_features=none
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
# Gas version 2.6 and later support for .balign and .p2align.
@@ -7108,7 +7190,7 @@ fi
echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:7112: checking assembler subsection support" >&5
+echo "configure:7194: checking assembler subsection support" >&5
gcc_cv_as_subsections=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7148,7 +7230,7 @@ fi
echo "$ac_t""$gcc_cv_as_subsections" 1>&6
echo $ac_n "checking assembler weak support""... $ac_c" 1>&6
-echo "configure:7152: checking assembler weak support" >&5
+echo "configure:7234: checking assembler weak support" >&5
gcc_cv_as_weak=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -7171,7 +7253,7 @@ fi
echo "$ac_t""$gcc_cv_as_weak" 1>&6
echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6
-echo "configure:7175: checking assembler hidden support" >&5
+echo "configure:7257: checking assembler hidden support" >&5
gcc_cv_as_hidden=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 \
@@ -7237,7 +7319,7 @@ libgcc_visibility=$gcc_cv_as_hidden
echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6
-echo "configure:7241: checking assembler leb128 support" >&5
+echo "configure:7323: checking assembler leb128 support" >&5
gcc_cv_as_leb128=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7282,7 +7364,7 @@ fi
echo "$ac_t""$gcc_cv_as_leb128" 1>&6
echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6
-echo "configure:7286: checking assembler eh_frame optimization" >&5
+echo "configure:7368: checking assembler eh_frame optimization" >&5
gcc_cv_as_eh_frame=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7363,7 +7445,7 @@ fi
echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6
echo $ac_n "checking assembler section merging support""... $ac_c" 1>&6
-echo "configure:7367: checking assembler section merging support" >&5
+echo "configure:7449: checking assembler section merging support" >&5
gcc_cv_as_shf_merge=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7386,7 +7468,7 @@ fi
echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6
echo $ac_n "checking assembler thread-local storage support""... $ac_c" 1>&6
-echo "configure:7390: checking assembler thread-local storage support" >&5
+echo "configure:7472: checking assembler thread-local storage support" >&5
gcc_cv_as_tls=no
conftest_s=
tls_first_major=
@@ -7529,7 +7611,7 @@ case "$target" in
# All TARGET_ABI_OSF targets.
alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
echo $ac_n "checking assembler supports explicit relocations""... $ac_c" 1>&6
-echo "configure:7533: checking assembler supports explicit relocations" >&5
+echo "configure:7615: checking assembler supports explicit relocations" >&5
if eval "test \"`echo '$''{'gcc_cv_as_explicit_relocs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7579,7 +7661,7 @@ EOF
;;
sparc*-*-*)
echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
-echo "configure:7583: checking assembler .register pseudo-op support" >&5
+echo "configure:7665: checking assembler .register pseudo-op support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7607,7 +7689,7 @@ EOF
fi
echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6
-echo "configure:7611: checking assembler supports -relax" >&5
+echo "configure:7693: checking assembler supports -relax" >&5
if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7635,7 +7717,7 @@ EOF
fi
echo $ac_n "checking assembler and linker support unaligned pc related relocs""... $ac_c" 1>&6
-echo "configure:7639: checking assembler and linker support unaligned pc related relocs" >&5
+echo "configure:7721: checking assembler and linker support unaligned pc related relocs" >&5
if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7662,7 +7744,7 @@ EOF
fi
echo $ac_n "checking assembler and linker support unaligned pc related relocs against hidden symbols""... $ac_c" 1>&6
-echo "configure:7666: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5
+echo "configure:7748: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5
if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel_hidden'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7702,7 +7784,7 @@ EOF
fi
echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:7706: checking for assembler offsetable %lo() support" >&5
+echo "configure:7788: checking for assembler offsetable %lo() support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7741,7 +7823,7 @@ EOF
i[34567]86-*-* | x86_64-*-*)
echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:7745: checking assembler instructions" >&5
+echo "configure:7827: checking assembler instructions" >&5
gcc_cv_as_instructions=
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -7768,7 +7850,7 @@ EOF
echo "$ac_t""$gcc_cv_as_instructions" 1>&6
echo $ac_n "checking cmov syntax""... $ac_c" 1>&6
-echo "configure:7772: checking cmov syntax" >&5
+echo "configure:7854: checking cmov syntax" >&5
gcc_cv_as_ix86_cmov_sun_syntax=no
if test x$gcc_cv_as != x; then
echo 'cmovl.l %edx, %eax' > conftest.s
@@ -7786,7 +7868,7 @@ EOF
echo "$ac_t""$gcc_cv_as_ix86_cmov_sun_syntax" 1>&6
echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6
-echo "configure:7790: checking assembler GOTOFF in data directives" >&5
+echo "configure:7872: checking assembler GOTOFF in data directives" >&5
gcc_cv_as_gotoff_in_data=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
then
@@ -7816,7 +7898,7 @@ EOF
ia64*-*-*)
echo $ac_n "checking assembler supports ltoffx and ldxmov""... $ac_c" 1>&6
-echo "configure:7820: checking assembler supports ltoffx and ldxmov" >&5
+echo "configure:7902: checking assembler supports ltoffx and ldxmov" >&5
if eval "test \"`echo '$''{'gcc_cv_as_ltoffx_ldxmov_relocs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7858,7 +7940,7 @@ EOF
esac
echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
-echo "configure:7862: checking assembler dwarf2 debug_line support" >&5
+echo "configure:7944: checking assembler dwarf2 debug_line support" >&5
gcc_cv_as_dwarf2_debug_line=no
# ??? Not all targets support dwarf2 debug_line, even within a version
# of gas. Moreover, we need to emit a valid instruction to trigger any
@@ -7915,7 +7997,7 @@ fi
echo "$ac_t""$gcc_cv_as_dwarf2_debug_line" 1>&6
echo $ac_n "checking assembler --gdwarf2 support""... $ac_c" 1>&6
-echo "configure:7919: checking assembler --gdwarf2 support" >&5
+echo "configure:8001: checking assembler --gdwarf2 support" >&5
gcc_cv_as_gdwarf2_flag=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
then
@@ -7944,7 +8026,7 @@ fi
echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6
echo $ac_n "checking assembler --gstabs support""... $ac_c" 1>&6
-echo "configure:7948: checking assembler --gstabs support" >&5
+echo "configure:8030: checking assembler --gstabs support" >&5
gcc_cv_as_gstabs_flag=no
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
then
@@ -7979,7 +8061,7 @@ fi
echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6
echo $ac_n "checking linker read-only and read-write section mixing""... $ac_c" 1>&6
-echo "configure:7983: checking linker read-only and read-write section mixing" >&5
+echo "configure:8065: checking linker read-only and read-write section mixing" >&5
gcc_cv_ld_ro_rw_mix=unknown
if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
@@ -8017,7 +8099,7 @@ fi
echo "$ac_t""$gcc_cv_ld_ro_rw_mix" 1>&6
echo $ac_n "checking linker PT_GNU_EH_FRAME support""... $ac_c" 1>&6
-echo "configure:8021: checking linker PT_GNU_EH_FRAME support" >&5
+echo "configure:8103: checking linker PT_GNU_EH_FRAME support" >&5
gcc_cv_ld_eh_frame_hdr=no
if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
@@ -8037,11 +8119,32 @@ EOF
fi
echo "$ac_t""$gcc_cv_ld_eh_frame_hdr" 1>&6
+echo $ac_n "checking linker --as-needed support""... $ac_c" 1>&6
+echo "configure:8250: checking linker --as-needed support" >&5
+gcc_cv_ld_as_needed=no
+if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
+ gcc_cv_ld_as_needed=yes
+ fi
+elif test x$gcc_cv_ld != x; then
+ # Check if linker supports --as-needed and --no-as-needed options
+ if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
+ gcc_cv_ld_as_needed=yes
+ fi
+fi
+if test x"$gcc_cv_ld_as_needed" = xyes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_LD_AS_NEEDED 1
+EOF
+
+fi
+echo "$ac_t""$gcc_cv_ld_as_needed" 1>&6
+
# Miscellaneous target-specific checks.
case "$target" in
mips*-*-*)
echo $ac_n "checking whether libgloss uses STARTUP directives consistently""... $ac_c" 1>&6
-echo "configure:8045: checking whether libgloss uses STARTUP directives consistently" >&5
+echo "configure:8127: checking whether libgloss uses STARTUP directives consistently" >&5
gcc_cv_mips_libgloss_startup=no
gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
if test "x$exec_prefix" = xNONE; then
@@ -8070,7 +8173,8 @@ EOF
;;
esac
-if test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
+if test x$with_sysroot = x && test x$host = x$target \
+ && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
cat >> confdefs.h <<EOF
#define PREFIX_INCLUDE_DIR "$prefix/include"
EOF
@@ -8245,7 +8349,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:8249: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:8332: checking whether to enable maintainer-specific portions of Makefiles" >&5
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then
enableval="$enable_maintainer_mode"
@@ -8726,6 +8830,9 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
+s%@TARGET_SYSTEM_ROOT@%$TARGET_SYSTEM_ROOT%g
+s%@TARGET_SYSTEM_ROOT_DEFINE@%$TARGET_SYSTEM_ROOT_DEFINE%g
+s%@CROSS_SYSTEM_HEADER_DIR@%$CROSS_SYSTEM_HEADER_DIR%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
diff --git a/gnu/usr.bin/gcc/gcc/cp/Make-lang.in b/gnu/usr.bin/gcc/gcc/cp/Make-lang.in
index 59d6ea39b9a..cb65a1d35c8 100644
--- a/gnu/usr.bin/gcc/gcc/cp/Make-lang.in
+++ b/gnu/usr.bin/gcc/gcc/cp/Make-lang.in
@@ -250,7 +250,7 @@ cp/call.o: cp/call.c $(CXX_TREE_H) flags.h toplev.h $(RTL_H) $(EXPR_H) \
$(GGC_H) diagnostic.h gt-cp-call.h
cp/friend.o: cp/friend.c $(CXX_TREE_H) flags.h $(RTL_H) toplev.h $(EXPR_H)
cp/init.o: cp/init.c $(CXX_TREE_H) flags.h $(RTL_H) $(EXPR_H) toplev.h \
- $(GGC_H) except.h
+ diagnostic.h $(GGC_H) except.h
cp/method.o: cp/method.c $(CXX_TREE_H) toplev.h $(GGC_H) $(RTL_H) $(EXPR_H) \
$(TM_P_H) $(TARGET_H)
cp/cvt.o: cp/cvt.c $(CXX_TREE_H) cp/decl.h flags.h toplev.h convert.h
diff --git a/gnu/usr.bin/gcc/gcc/cp/call.c b/gnu/usr.bin/gcc/gcc/cp/call.c
index 60e79dfc050..0617380ced5 100644
--- a/gnu/usr.bin/gcc/gcc/cp/call.c
+++ b/gnu/usr.bin/gcc/gcc/cp/call.c
@@ -1091,15 +1091,19 @@ convert_class_to_reference (t, s, expr)
LOOKUP_NORMAL);
if (cand)
- /* Build a standard conversion sequence indicating the
- binding from the reference type returned by the
- function to the desired REFERENCE_TYPE. */
- cand->second_conv
- = (direct_reference_binding
- (reference_type,
- build1 (IDENTITY_CONV,
- TREE_TYPE (TREE_TYPE (TREE_TYPE (cand->fn))),
- NULL_TREE)));
+ {
+ /* Build a standard conversion sequence indicating the
+ binding from the reference type returned by the
+ function to the desired REFERENCE_TYPE. */
+ cand->second_conv
+ = (direct_reference_binding
+ (reference_type,
+ build1 (IDENTITY_CONV,
+ TREE_TYPE (TREE_TYPE (TREE_TYPE (cand->fn))),
+ NULL_TREE)));
+ ICS_BAD_FLAG (cand->second_conv)
+ |= ICS_BAD_FLAG (TREE_VEC_ELT (cand->convs, 0));
+ }
}
conversions = TREE_CHAIN (conversions);
}
@@ -3238,11 +3242,27 @@ build_conditional_expr (arg1, arg2, arg3)
type of the other and is an rvalue.
--Both the second and the third operands have type void; the
- result is of type void and is an rvalue. */
- if ((TREE_CODE (arg2) == THROW_EXPR)
- ^ (TREE_CODE (arg3) == THROW_EXPR))
- result_type = ((TREE_CODE (arg2) == THROW_EXPR)
- ? arg3_type : arg2_type);
+ result is of type void and is an rvalue.
+
+ We must avoid calling force_rvalue for expressions of type
+ "void" because it will complain that their value is being
+ used. */
+ if (TREE_CODE (arg2) == THROW_EXPR
+ && TREE_CODE (arg3) != THROW_EXPR)
+ {
+ if (!VOID_TYPE_P (arg3_type))
+ arg3 = force_rvalue (arg3);
+ arg3_type = TREE_TYPE (arg3);
+ result_type = arg3_type;
+ }
+ else if (TREE_CODE (arg2) != THROW_EXPR
+ && TREE_CODE (arg3) == THROW_EXPR)
+ {
+ if (!VOID_TYPE_P (arg2_type))
+ arg2 = force_rvalue (arg2);
+ arg2_type = TREE_TYPE (arg2);
+ result_type = arg2_type;
+ }
else if (VOID_TYPE_P (arg2_type) && VOID_TYPE_P (arg3_type))
result_type = void_type_node;
else
@@ -4093,7 +4113,7 @@ convert_like_real (tree convs, tree expr, tree fn, int argnum, int inner,
if (issue_conversion_warnings)
expr = dubious_conversion_warnings
- (totype, expr, "argument", fn, argnum);
+ (totype, expr, "converting", fn, argnum);
switch (TREE_CODE (convs))
{
case USER_CONV:
@@ -4308,14 +4328,18 @@ convert_arg_to_ellipsis (arg)
arg = require_complete_type (arg);
- if (arg != error_mark_node && ! pod_type_p (TREE_TYPE (arg)))
+ if (arg != error_mark_node
+ && !pod_type_p (TREE_TYPE (arg)))
{
/* Undefined behavior [expr.call] 5.2.2/7. We used to just warn
here and do a bitwise copy, but now cp_expr_size will abort if we
- try to do that. */
- warning ("cannot pass objects of non-POD type `%#T' through `...'; \
-call will abort at runtime",
- TREE_TYPE (arg));
+ try to do that.
+ If the call appears in the context of a sizeof expression,
+ there is no need to emit a warning, since the expression won't be
+ evaluated. We keep the builtin_trap just as a safety check. */
+ if (!skip_evaluation)
+ warning ("cannot pass objects of non-POD type `%#T' through `...'; "
+ "call will abort at runtime", TREE_TYPE (arg));
arg = call_builtin_trap ();
}
@@ -4882,14 +4906,23 @@ build_special_member_call (tree instance, tree name, tree args,
|| name == deleting_dtor_identifier)
my_friendly_assert (args == NULL_TREE, 20020712);
- /* We must perform the conversion here so that we do not
- subsequently check to see whether BINFO is an accessible
- base. (It is OK for a constructor to call a constructor in
- an inaccessible base as long as the constructor being called
- is accessible.) */
+ /* Convert to the base class, if necessary. */
if (!same_type_ignoring_top_level_qualifiers_p
(TREE_TYPE (instance), BINFO_TYPE (binfo)))
- instance = convert_to_base_statically (instance, binfo);
+ {
+ if (name != ansi_assopname (NOP_EXPR))
+ /* For constructors and destructors, either the base is
+ non-virtual, or it is virtual but we are doing the
+ conversion from a constructor or destructor for the
+ complete object. In either case, we can convert
+ statically. */
+ instance = convert_to_base_statically (instance, binfo);
+ else
+ /* However, for assignment operators, we must convert
+ dynamically if the base is virtual. */
+ instance = build_base_path (PLUS_EXPR, instance,
+ binfo, /*nonnull=*/1);
+ }
}
my_friendly_assert (instance != NULL_TREE, 20020712);
@@ -6168,7 +6201,10 @@ initialize_reference (type, expr, decl, cleanup)
else
base_conv_type = NULL_TREE;
/* Perform the remainder of the conversion. */
- expr = convert_like (conv, expr);
+ expr = convert_like_real (conv, expr,
+ /*fn=*/NULL_TREE, /*argnum=*/0,
+ /*inner=*/-1,
+ /*issue_conversion_warnings=*/true);
if (!real_non_cast_lvalue_p (expr))
{
tree init;
@@ -6178,6 +6214,16 @@ initialize_reference (type, expr, decl, cleanup)
type = TREE_TYPE (expr);
var = make_temporary_var_for_ref_to_temp (decl, type);
layout_decl (var, 0);
+ /* If the rvalue is the result of a function call it will be
+ a TARGET_EXPR. If it is some other construct (such as a
+ member access expression where the underlying object is
+ itself the result of a function call), turn it into a
+ TARGET_EXPR here. It is important that EXPR be a
+ TARGET_EXPR below since otherwise the INIT_EXPR will
+ attempt to make a bitwise copy of EXPR to intialize
+ VAR. */
+ if (TREE_CODE (expr) != TARGET_EXPR)
+ expr = get_target_expr (expr);
/* Create the INIT_EXPR that will initialize the temporary
variable. */
init = build (INIT_EXPR, type, var, expr);
diff --git a/gnu/usr.bin/gcc/gcc/cp/typeck.c b/gnu/usr.bin/gcc/gcc/cp/typeck.c
index 96f914c7541..d682febba53 100644
--- a/gnu/usr.bin/gcc/gcc/cp/typeck.c
+++ b/gnu/usr.bin/gcc/gcc/cp/typeck.c
@@ -5213,7 +5213,7 @@ build_modify_expr (lhs, modifycode, rhs)
tree newrhs = rhs;
tree lhstype = TREE_TYPE (lhs);
tree olhstype = lhstype;
- tree olhs = lhs;
+ tree olhs = NULL_TREE;
/* Avoid duplicate error messages from operands that had errors. */
if (lhs == error_mark_node || rhs == error_mark_node)
@@ -5449,6 +5449,15 @@ build_modify_expr (lhs, modifycode, rhs)
if (lhstype != TREE_TYPE (lhs))
{
+ /* Avoid warnings converting integral types back into enums for
+ enum bit fields. */
+ if (TREE_CODE (lhstype) == INTEGER_TYPE
+ && TREE_CODE (olhstype) == ENUMERAL_TYPE)
+ {
+ if (TREE_SIDE_EFFECTS (lhs))
+ lhs = stabilize_reference (lhs);
+ olhs = lhs;
+ }
lhs = copy_node (lhs);
TREE_TYPE (lhs) = lhstype;
}
@@ -5521,10 +5530,7 @@ build_modify_expr (lhs, modifycode, rhs)
if (olhstype == TREE_TYPE (result))
return result;
- /* Avoid warnings converting integral types back into enums
- for enum bit fields. */
- if (TREE_CODE (TREE_TYPE (result)) == INTEGER_TYPE
- && TREE_CODE (olhstype) == ENUMERAL_TYPE)
+ if (olhs)
{
result = build (COMPOUND_EXPR, olhstype, result, olhs);
TREE_NO_UNUSED_WARNING (result) = 1;
@@ -5934,8 +5940,6 @@ convert_for_assignment (type, rhs, errtype, fndecl, parmnum)
if (TREE_CODE (rhs) == TREE_LIST && TREE_VALUE (rhs) == error_mark_node)
return error_mark_node;
- rhs = dubious_conversion_warnings (type, rhs, errtype, fndecl, parmnum);
-
/* The RHS of an assignment cannot have void type. */
if (coder == VOID_TYPE)
{
diff --git a/gnu/usr.bin/gcc/gcc/cse.c b/gnu/usr.bin/gcc/gcc/cse.c
index 1d685a62433..a44d426bc44 100644
--- a/gnu/usr.bin/gcc/gcc/cse.c
+++ b/gnu/usr.bin/gcc/gcc/cse.c
@@ -1,6 +1,6 @@
/* Common subexpression elimination for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -38,6 +38,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "output.h"
#include "ggc.h"
#include "timevar.h"
+#include "target.h"
/* The basic idea of common subexpression elimination is to go
through the code, keeping a record of expressions that would
@@ -701,6 +702,9 @@ static void flush_hash_table PARAMS ((void));
static bool insn_live_p PARAMS ((rtx, int *));
static bool set_live_p PARAMS ((rtx, rtx, int *));
static bool dead_libcall_p PARAMS ((rtx, int *));
+static int cse_change_cc_mode PARAMS ((rtx *, void *));
+static void cse_change_cc_mode_insns PARAMS ((rtx, rtx, rtx));
+static enum machine_mode cse_cc_succs PARAMS ((basic_block, rtx, rtx, int));
/* Dump the expressions in the equivalence class indicated by CLASSP.
This function is used only for debugging. */
@@ -3850,6 +3854,23 @@ fold_rtx (x, insn)
|| (new_cost == old_cost && CONSTANT_P (XEXP (x, i))))
break;
+ /* It's not safe to substitute the operand of a conversion
+ operator with a constant, as the conversion's identity
+ depends upon the mode of it's operand. This optimization
+ is handled by the call to simplify_unary_operation. */
+ if (GET_RTX_CLASS (code) == '1'
+ && GET_MODE (replacements[j]) != mode_arg0
+ && (code == ZERO_EXTEND
+ || code == SIGN_EXTEND
+ || code == TRUNCATE
+ || code == FLOAT_TRUNCATE
+ || code == FLOAT_EXTEND
+ || code == FLOAT
+ || code == FIX
+ || code == UNSIGNED_FLOAT
+ || code == UNSIGNED_FIX))
+ continue;
+
if (validate_change (insn, &XEXP (x, i), replacements[j], 0))
break;
@@ -7789,3 +7810,369 @@ delete_trivially_dead_insns (insns, nreg)
timevar_pop (TV_DELETE_TRIVIALLY_DEAD);
return ndead;
}
+
+/* This function is called via for_each_rtx. The argument, NEWREG, is
+ a condition code register with the desired mode. If we are looking
+ at the same register in a different mode, replace it with
+ NEWREG. */
+
+static int
+cse_change_cc_mode (loc, data)
+ rtx *loc;
+ void *data;
+{
+ rtx newreg = (rtx) data;
+
+ if (*loc
+ && GET_CODE (*loc) == REG
+ && REGNO (*loc) == REGNO (newreg)
+ && GET_MODE (*loc) != GET_MODE (newreg))
+ {
+ *loc = newreg;
+ return -1;
+ }
+ return 0;
+}
+
+/* Change the mode of any reference to the register REGNO (NEWREG) to
+ GET_MODE (NEWREG), starting at START. Stop before END. Stop at
+ any instruction which modifies NEWREG. */
+
+static void
+cse_change_cc_mode_insns (start, end, newreg)
+ rtx start;
+ rtx end;
+ rtx newreg;
+{
+ rtx insn;
+
+ for (insn = start; insn != end; insn = NEXT_INSN (insn))
+ {
+ if (! INSN_P (insn))
+ continue;
+
+ if (reg_set_p (newreg, insn))
+ return;
+
+ for_each_rtx (&PATTERN (insn), cse_change_cc_mode, newreg);
+ for_each_rtx (&REG_NOTES (insn), cse_change_cc_mode, newreg);
+ }
+}
+
+/* BB is a basic block which finishes with CC_REG as a condition code
+ register which is set to CC_SRC. Look through the successors of BB
+ to find blocks which have a single predecessor (i.e., this one),
+ and look through those blocks for an assignment to CC_REG which is
+ equivalent to CC_SRC. CAN_CHANGE_MODE indicates whether we are
+ permitted to change the mode of CC_SRC to a compatible mode. This
+ returns VOIDmode if no equivalent assignments were found.
+ Otherwise it returns the mode which CC_SRC should wind up with.
+
+ The main complexity in this function is handling the mode issues.
+ We may have more than one duplicate which we can eliminate, and we
+ try to find a mode which will work for multiple duplicates. */
+
+static enum machine_mode
+cse_cc_succs (bb, cc_reg, cc_src, can_change_mode)
+ basic_block bb;
+ rtx cc_reg;
+ rtx cc_src;
+ int can_change_mode;
+{
+ bool found_equiv;
+ enum machine_mode mode;
+ unsigned int insn_count;
+ edge e;
+ rtx insns[2];
+ enum machine_mode modes[2];
+ rtx last_insns[2];
+ unsigned int i;
+ rtx newreg;
+
+ /* We expect to have two successors. Look at both before picking
+ the final mode for the comparison. If we have more successors
+ (i.e., some sort of table jump, although that seems unlikely),
+ then we require all beyond the first two to use the same
+ mode. */
+
+ found_equiv = false;
+ mode = GET_MODE (cc_src);
+ insn_count = 0;
+ for (e = bb->succ; e; e = e->succ_next)
+ {
+ rtx insn;
+ rtx end;
+
+ if (e->flags & EDGE_COMPLEX)
+ continue;
+
+ if (! e->dest->pred
+ || e->dest->pred->pred_next
+ || e->dest == EXIT_BLOCK_PTR)
+ continue;
+
+ end = NEXT_INSN (e->dest->end);
+ for (insn = e->dest->head; insn != end; insn = NEXT_INSN (insn))
+ {
+ rtx set;
+
+ if (! INSN_P (insn))
+ continue;
+
+ /* If CC_SRC is modified, we have to stop looking for
+ something which uses it. */
+ if (modified_in_p (cc_src, insn))
+ break;
+
+ /* Check whether INSN sets CC_REG to CC_SRC. */
+ set = single_set (insn);
+ if (set
+ && GET_CODE (SET_DEST (set)) == REG
+ && REGNO (SET_DEST (set)) == REGNO (cc_reg))
+ {
+ bool found;
+ enum machine_mode set_mode;
+ enum machine_mode comp_mode;
+
+ found = false;
+ set_mode = GET_MODE (SET_SRC (set));
+ comp_mode = set_mode;
+ if (rtx_equal_p (cc_src, SET_SRC (set)))
+ found = true;
+ else if (GET_CODE (cc_src) == COMPARE
+ && GET_CODE (SET_SRC (set)) == COMPARE
+ && mode != set_mode
+ && rtx_equal_p (XEXP (cc_src, 0),
+ XEXP (SET_SRC (set), 0))
+ && rtx_equal_p (XEXP (cc_src, 1),
+ XEXP (SET_SRC (set), 1)))
+
+ {
+ comp_mode = (*targetm.cc_modes_compatible) (mode, set_mode);
+ if (comp_mode != VOIDmode
+ && (can_change_mode || comp_mode == mode))
+ found = true;
+ }
+
+ if (found)
+ {
+ found_equiv = true;
+ if (insn_count < ARRAY_SIZE (insns))
+ {
+ insns[insn_count] = insn;
+ modes[insn_count] = set_mode;
+ last_insns[insn_count] = end;
+ ++insn_count;
+
+ if (mode != comp_mode)
+ {
+ if (! can_change_mode)
+ abort ();
+ mode = comp_mode;
+ PUT_MODE (cc_src, mode);
+ }
+ }
+ else
+ {
+ if (set_mode != mode)
+ {
+ /* We found a matching expression in the
+ wrong mode, but we don't have room to
+ store it in the array. Punt. This case
+ should be rare. */
+ break;
+ }
+ /* INSN sets CC_REG to a value equal to CC_SRC
+ with the right mode. We can simply delete
+ it. */
+ delete_insn (insn);
+ }
+
+ /* We found an instruction to delete. Keep looking,
+ in the hopes of finding a three-way jump. */
+ continue;
+ }
+
+ /* We found an instruction which sets the condition
+ code, so don't look any farther. */
+ break;
+ }
+
+ /* If INSN sets CC_REG in some other way, don't look any
+ farther. */
+ if (reg_set_p (cc_reg, insn))
+ break;
+ }
+
+ /* If we fell off the bottom of the block, we can keep looking
+ through successors. We pass CAN_CHANGE_MODE as false because
+ we aren't prepared to handle compatibility between the
+ further blocks and this block. */
+ if (insn == end)
+ {
+ enum machine_mode submode;
+
+ submode = cse_cc_succs (e->dest, cc_reg, cc_src, false);
+ if (submode != VOIDmode)
+ {
+ if (submode != mode)
+ abort ();
+ found_equiv = true;
+ can_change_mode = false;
+ }
+ }
+ }
+
+ if (! found_equiv)
+ return VOIDmode;
+
+ /* Now INSN_COUNT is the number of instructions we found which set
+ CC_REG to a value equivalent to CC_SRC. The instructions are in
+ INSNS. The modes used by those instructions are in MODES. */
+
+ newreg = NULL_RTX;
+ for (i = 0; i < insn_count; ++i)
+ {
+ if (modes[i] != mode)
+ {
+ /* We need to change the mode of CC_REG in INSNS[i] and
+ subsequent instructions. */
+ if (! newreg)
+ {
+ if (GET_MODE (cc_reg) == mode)
+ newreg = cc_reg;
+ else
+ newreg = gen_rtx_REG (mode, REGNO (cc_reg));
+ }
+ cse_change_cc_mode_insns (NEXT_INSN (insns[i]), last_insns[i],
+ newreg);
+ }
+
+ delete_insn (insns[i]);
+ }
+
+ return mode;
+}
+
+/* If we have a fixed condition code register (or two), walk through
+ the instructions and try to eliminate duplicate assignments. */
+
+void
+cse_condition_code_reg ()
+{
+ unsigned int cc_regno_1;
+ unsigned int cc_regno_2;
+ rtx cc_reg_1;
+ rtx cc_reg_2;
+ basic_block bb;
+
+ if (! (*targetm.fixed_condition_code_regs) (&cc_regno_1, &cc_regno_2))
+ return;
+
+ cc_reg_1 = gen_rtx_REG (CCmode, cc_regno_1);
+ if (cc_regno_2 != INVALID_REGNUM)
+ cc_reg_2 = gen_rtx_REG (CCmode, cc_regno_2);
+ else
+ cc_reg_2 = NULL_RTX;
+
+ FOR_EACH_BB (bb)
+ {
+ rtx last_insn;
+ rtx cc_reg;
+ rtx insn;
+ rtx cc_src_insn;
+ rtx cc_src;
+ enum machine_mode mode;
+ enum machine_mode orig_mode;
+
+ /* Look for blocks which end with a conditional jump based on a
+ condition code register. Then look for the instruction which
+ sets the condition code register. Then look through the
+ successor blocks for instructions which set the condition
+ code register to the same value. There are other possible
+ uses of the condition code register, but these are by far the
+ most common and the ones which we are most likely to be able
+ to optimize. */
+
+ last_insn = bb->end;
+ if (GET_CODE (last_insn) != JUMP_INSN)
+ continue;
+
+ if (reg_referenced_p (cc_reg_1, PATTERN (last_insn)))
+ cc_reg = cc_reg_1;
+ else if (cc_reg_2 && reg_referenced_p (cc_reg_2, PATTERN (last_insn)))
+ cc_reg = cc_reg_2;
+ else
+ continue;
+
+ cc_src_insn = NULL_RTX;
+ cc_src = NULL_RTX;
+ for (insn = PREV_INSN (last_insn);
+ insn && insn != PREV_INSN (bb->head);
+ insn = PREV_INSN (insn))
+ {
+ rtx set;
+
+ if (! INSN_P (insn))
+ continue;
+ set = single_set (insn);
+ if (set
+ && GET_CODE (SET_DEST (set)) == REG
+ && REGNO (SET_DEST (set)) == REGNO (cc_reg))
+ {
+ cc_src_insn = insn;
+ cc_src = SET_SRC (set);
+ break;
+ }
+ else if (reg_set_p (cc_reg, insn))
+ break;
+ }
+
+ if (! cc_src_insn)
+ continue;
+
+ if (modified_between_p (cc_src, cc_src_insn, NEXT_INSN (last_insn)))
+ continue;
+
+ /* Now CC_REG is a condition code register used for a
+ conditional jump at the end of the block, and CC_SRC, in
+ CC_SRC_INSN, is the value to which that condition code
+ register is set, and CC_SRC is still meaningful at the end of
+ the basic block. */
+
+ orig_mode = GET_MODE (cc_src);
+ mode = cse_cc_succs (bb, cc_reg, cc_src, true);
+ if (mode != VOIDmode)
+ {
+ if (mode != GET_MODE (cc_src))
+ abort ();
+ if (mode != orig_mode)
+ {
+ rtx newreg = gen_rtx_REG (mode, REGNO (cc_reg));
+
+ /* Change the mode of CC_REG in CC_SRC_INSN to
+ GET_MODE (NEWREG). */
+ for_each_rtx (&PATTERN (cc_src_insn), cse_change_cc_mode,
+ newreg);
+ for_each_rtx (&REG_NOTES (cc_src_insn), cse_change_cc_mode,
+ newreg);
+
+ /* Do the same in the following insns that use the
+ current value of CC_REG within BB. */
+ cse_change_cc_mode_insns (NEXT_INSN (cc_src_insn),
+ NEXT_INSN (last_insn),
+ newreg);
+ }
+ }
+ }
+}
+
+enum machine_mode
+default_cc_modes_compatible (m1, m2)
+ enum machine_mode m1;
+ enum machine_mode m2;
+{
+ if (m1 == m2)
+ return m1;
+ return VOIDmode;
+}
diff --git a/gnu/usr.bin/gcc/gcc/explow.c b/gnu/usr.bin/gcc/gcc/explow.c
index 0665d5e19d9..f0b55efe0f0 100644
--- a/gnu/usr.bin/gcc/gcc/explow.c
+++ b/gnu/usr.bin/gcc/gcc/explow.c
@@ -358,8 +358,6 @@ break_out_memory_refs (x)
return x;
}
-#ifdef POINTERS_EXTEND_UNSIGNED
-
/* Given X, a memory address in ptr_mode, convert it to an address
in Pmode, or vice versa (TO_MODE says which way). We take advantage of
the fact that pointers are not allowed to overflow by commuting arithmetic
@@ -368,13 +366,22 @@ break_out_memory_refs (x)
rtx
convert_memory_address (to_mode, x)
- enum machine_mode to_mode;
+ enum machine_mode to_mode ATTRIBUTE_UNUSED;
rtx x;
{
- enum machine_mode from_mode = to_mode == ptr_mode ? Pmode : ptr_mode;
+#ifndef POINTERS_EXTEND_UNSIGNED
+ return x;
+#else /* defined(POINTERS_EXTEND_UNSIGNED) */
+ enum machine_mode from_mode;
rtx temp;
enum rtx_code code;
+ /* If X already has the right mode, just return it. */
+ if (GET_MODE (x) == to_mode)
+ return x;
+
+ from_mode = to_mode == ptr_mode ? Pmode : ptr_mode;
+
/* Here we handle some special cases. If none of them apply, fall through
to the default case. */
switch (GET_CODE (x))
@@ -438,8 +445,8 @@ convert_memory_address (to_mode, x)
return convert_modes (to_mode, from_mode,
x, POINTERS_EXTEND_UNSIGNED);
+#endif /* defined(POINTERS_EXTEND_UNSIGNED) */
}
-#endif
/* Given a memory address or facsimile X, construct a new address,
currently equivalent, that is stable: future stores won't change it.
diff --git a/gnu/usr.bin/gcc/gcc/expr.c b/gnu/usr.bin/gcc/gcc/expr.c
index dde2d993b94..d20df2deaf0 100644
--- a/gnu/usr.bin/gcc/gcc/expr.c
+++ b/gnu/usr.bin/gcc/gcc/expr.c
@@ -130,6 +130,8 @@ struct store_by_pieces
};
static rtx enqueue_insn PARAMS ((rtx, rtx));
+static rtx mark_queue PARAMS ((void));
+static void emit_insns_enqueued_after_mark PARAMS ((rtx));
static unsigned HOST_WIDE_INT move_by_pieces_ninsns
PARAMS ((unsigned HOST_WIDE_INT,
unsigned int));
@@ -501,13 +503,31 @@ queued_subexp_p (x)
}
}
-/* Perform all the pending incrementations. */
+/* Retrieve a mark on the queue. */
+
+static rtx
+mark_queue ()
+{
+ return pending_chain;
+}
-void
-emit_queue ()
+/* Perform all the pending incrementations that have been enqueued
+ after MARK was retrieved. If MARK is null, perform all the
+ pending incrementations. */
+
+static void
+emit_insns_enqueued_after_mark (mark)
+ rtx mark;
{
rtx p;
- while ((p = pending_chain))
+
+ /* The marked incrementation may have been emitted in the meantime
+ through a call to emit_queue. In this case, the mark is not valid
+ anymore so do nothing. */
+ if (mark && ! QUEUED_BODY (mark))
+ return;
+
+ while ((p = pending_chain) != mark)
{
rtx body = QUEUED_BODY (p);
@@ -534,9 +554,18 @@ emit_queue ()
break;
}
+ QUEUED_BODY (p) = 0;
pending_chain = QUEUED_NEXT (p);
}
}
+
+/* Perform all the pending incrementations. */
+
+void
+emit_queue ()
+{
+ emit_insns_enqueued_after_mark (NULL_RTX);
+}
/* Copy data from FROM to TO, where the machine modes are not the same.
Both modes may be integer, or both may be floating.
@@ -887,7 +916,11 @@ convert_move (to, from, unsignedp)
!= CODE_FOR_nothing))
{
if (GET_CODE (to) == REG)
- emit_insn (gen_rtx_CLOBBER (VOIDmode, to));
+ {
+ if (reg_overlap_mentioned_p (to, from))
+ from = force_reg (from_mode, from);
+ emit_insn (gen_rtx_CLOBBER (VOIDmode, to));
+ }
convert_move (gen_lowpart (word_mode, to), from, unsignedp);
emit_unop_insn (code, to,
gen_lowpart (word_mode, to), equiv_code);
@@ -4132,7 +4165,11 @@ expand_assignment (to, from, want_value, suggest_reg)
}
if (TREE_CODE (to) == COMPONENT_REF
- && TREE_READONLY (TREE_OPERAND (to, 1)))
+ && TREE_READONLY (TREE_OPERAND (to, 1))
+ /* We can't assert that a MEM won't be set more than once
+ if the component is not addressable because another
+ non-addressable component may be referenced by the same MEM. */
+ && ! (GET_CODE (to_rtx) == MEM && ! can_address_p (to)))
{
if (to_rtx == orig_to_rtx)
to_rtx = copy_rtx (to_rtx);
@@ -4314,6 +4351,7 @@ store_expr (exp, target, want_value)
int want_value;
{
rtx temp;
+ rtx mark = mark_queue ();
int dont_return_target = 0;
int dont_store_target = 0;
@@ -4523,7 +4561,11 @@ store_expr (exp, target, want_value)
temp, TREE_UNSIGNED (TREE_TYPE (exp)));
/* If value was not generated in the target, store it there.
- Convert the value to TARGET's type first if necessary.
+ Convert the value to TARGET's type first if necessary and emit the
+ pending incrementations that have been queued when expanding EXP.
+ Note that we cannot emit the whole queue blindly because this will
+ effectively disable the POST_INC optimization later.
+
If TEMP and TARGET compare equal according to rtx_equal_p, but
one or both of them are volatile memory refs, we have to distinguish
two cases:
@@ -4552,7 +4594,9 @@ store_expr (exp, target, want_value)
bit-initialized. */
&& expr_size (exp) != const0_rtx)
{
+ emit_insns_enqueued_after_mark (mark);
target = protect_from_queue (target, 1);
+ temp = protect_from_queue (temp, 0);
if (GET_MODE (temp) != GET_MODE (target)
&& GET_MODE (temp) != VOIDmode)
{
@@ -4936,7 +4980,10 @@ store_constructor (exp, target, cleared, size)
highest_pow2_factor (offset));
}
- if (TREE_READONLY (field))
+ /* If the constructor has been cleared, setting RTX_UNCHANGING_P
+ on the MEM might lead to scheduling the clearing after the
+ store. */
+ if (TREE_READONLY (field) && !cleared)
{
if (GET_CODE (to_rtx) == MEM)
to_rtx = copy_rtx (to_rtx);
@@ -5319,7 +5366,7 @@ store_constructor (exp, target, cleared, size)
{
if (word != 0 || ! cleared)
{
- rtx datum = GEN_INT (word);
+ rtx datum = gen_int_mode (word, mode);
rtx to_rtx;
/* The assumption here is that it is safe to use
@@ -8951,8 +8998,6 @@ expand_expr (exp, target, tmode, modifier)
else
{
target = assign_temp (type, 2, 0, 1);
- /* All temp slots at this level must not conflict. */
- preserve_temp_slots (target);
SET_DECL_RTL (slot, target);
if (TREE_ADDRESSABLE (slot))
put_var_into_stack (slot, /*rescan=*/false);
@@ -9851,6 +9896,9 @@ do_jump (exp, if_false_label, if_true_label)
break;
case INTEGER_CST:
+ /* ??? This should never happen - but it does, GCC PR opt/14749. */
+ if (TREE_CONSTANT_OVERFLOW (exp))
+ goto normal;
temp = integer_zerop (exp) ? if_false_label : if_true_label;
if (temp)
emit_jump (temp);
@@ -11296,6 +11344,10 @@ const_vector_from_tree (exp)
TREE_INT_CST_HIGH (elt),
inner);
}
+
+ /* Initialize remaining elements to 0. */
+ for (; i < units; ++i)
+ RTVEC_ELT (v, i) = CONST0_RTX (inner);
return gen_rtx_raw_CONST_VECTOR (mode, v);
}
diff --git a/gnu/usr.bin/gcc/gcc/f/README b/gnu/usr.bin/gcc/gcc/f/README
deleted file mode 100644
index fdebfdca176..00000000000
--- a/gnu/usr.bin/gcc/gcc/f/README
+++ /dev/null
@@ -1,7 +0,0 @@
-1995-02-15
-
-This directory is the f/ subdirectory, which is designed to
-be a subdirectory in a gcc development tree, i.e. named gcc/f/.
-
-Please see gcc/README.g77 for information on the contents of this
-directory.
diff --git a/gnu/usr.bin/gcc/gcc/fixinc/mkfixinc.sh b/gnu/usr.bin/gcc/gcc/fixinc/mkfixinc.sh
index 1a22738fd38..104339e6a7a 100755
--- a/gnu/usr.bin/gcc/gcc/fixinc/mkfixinc.sh
+++ b/gnu/usr.bin/gcc/gcc/fixinc/mkfixinc.sh
@@ -120,7 +120,7 @@ fi
# OK. We gotta make the thing.
# make and install either the binary or the default script
-defs="SHELL=\"$SHELL\" CC=\"$CC\" CFLAGS=\"$CFLAGS\" LDFLAGS=\"$LDFLAGS\""
+defs="SHELL=\"$SHELL\" CC=\"$CC\" CFLAGS=\"$CFLAGS\" LDFLAGS=\"$LDFLAGS\" LIBERTY=\"$LIBERTY\""
cmd="$MAKE ${defs} install-bin"
echo $cmd
eval $cmd
diff --git a/gnu/usr.bin/gcc/gcc/fold-const.c b/gnu/usr.bin/gcc/gcc/fold-const.c
index 22db9633043..b2dffff491e 100644
--- a/gnu/usr.bin/gcc/gcc/fold-const.c
+++ b/gnu/usr.bin/gcc/gcc/fold-const.c
@@ -4122,9 +4122,9 @@ extract_muldiv_1 (t, c, code, wide_type)
&& TYPE_IS_SIZETYPE (TREE_TYPE (op0)))
&& (GET_MODE_SIZE (TYPE_MODE (ctype))
> GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (op0)))))
- /* ... or its type is larger than ctype,
- then we cannot pass through this truncation. */
- || (GET_MODE_SIZE (TYPE_MODE (ctype))
+ /* ... or this is a truncation (t is narrower than op0),
+ then we cannot pass through this narrowing. */
+ || (GET_MODE_SIZE (TYPE_MODE (type))
< GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (op0))))
/* ... or signedness changes for division or modulus,
then we cannot pass through this conversion. */
@@ -6027,150 +6027,68 @@ fold (expr)
return fold (build (code, type, TREE_OPERAND (arg0, 0), tem));
}
- /* Convert foo++ == CONST into ++foo == CONST + INCR.
- First, see if one arg is constant; find the constant arg
- and the other one. */
- {
- tree constop = 0, varop = NULL_TREE;
- int constopnum = -1;
- if (TREE_CONSTANT (arg1))
- constopnum = 1, constop = arg1, varop = arg0;
- if (TREE_CONSTANT (arg0))
- constopnum = 0, constop = arg0, varop = arg1;
+ /* Convert foo++ == CONST into ++foo == CONST + INCR. */
+ if (TREE_CONSTANT (arg1)
+ && (TREE_CODE (arg0) == POSTINCREMENT_EXPR
+ || TREE_CODE (arg0) == POSTDECREMENT_EXPR)
+ /* This optimization is invalid for ordered comparisons
+ if CONST+INCR overflows or if foo+incr might overflow.
+ This optimization is invalid for floating point due to rounding.
+ For pointer types we assume overflow doesn't happen. */
+ && (POINTER_TYPE_P (TREE_TYPE (arg0))
+ || (INTEGRAL_TYPE_P (TREE_TYPE (arg0))
+ && (code == EQ_EXPR || code == NE_EXPR))))
+ {
+ tree varop, newconst;
- if (constop && TREE_CODE (varop) == POSTINCREMENT_EXPR)
- {
- /* This optimization is invalid for ordered comparisons
- if CONST+INCR overflows or if foo+incr might overflow.
- This optimization is invalid for floating point due to rounding.
- For pointer types we assume overflow doesn't happen. */
- if (POINTER_TYPE_P (TREE_TYPE (varop))
- || (! FLOAT_TYPE_P (TREE_TYPE (varop))
- && (code == EQ_EXPR || code == NE_EXPR)))
- {
- tree newconst
- = fold (build (PLUS_EXPR, TREE_TYPE (varop),
- constop, TREE_OPERAND (varop, 1)));
-
- /* Do not overwrite the current varop to be a preincrement,
- create a new node so that we won't confuse our caller who
- might create trees and throw them away, reusing the
- arguments that they passed to build. This shows up in
- the THEN or ELSE parts of ?: being postincrements. */
- varop = build (PREINCREMENT_EXPR, TREE_TYPE (varop),
- TREE_OPERAND (varop, 0),
- TREE_OPERAND (varop, 1));
-
- /* If VAROP is a reference to a bitfield, we must mask
- the constant by the width of the field. */
- if (TREE_CODE (TREE_OPERAND (varop, 0)) == COMPONENT_REF
- && DECL_BIT_FIELD(TREE_OPERAND
- (TREE_OPERAND (varop, 0), 1)))
- {
- int size
- = TREE_INT_CST_LOW (DECL_SIZE
- (TREE_OPERAND
- (TREE_OPERAND (varop, 0), 1)));
- tree mask, unsigned_type;
- unsigned int precision;
- tree folded_compare;
-
- /* First check whether the comparison would come out
- always the same. If we don't do that we would
- change the meaning with the masking. */
- if (constopnum == 0)
- folded_compare = fold (build (code, type, constop,
- TREE_OPERAND (varop, 0)));
- else
- folded_compare = fold (build (code, type,
- TREE_OPERAND (varop, 0),
- constop));
- if (integer_zerop (folded_compare)
- || integer_onep (folded_compare))
- return omit_one_operand (type, folded_compare, varop);
-
- unsigned_type = (*lang_hooks.types.type_for_size)(size, 1);
- precision = TYPE_PRECISION (unsigned_type);
- mask = build_int_2 (~0, ~0);
- TREE_TYPE (mask) = unsigned_type;
- force_fit_type (mask, 0);
- mask = const_binop (RSHIFT_EXPR, mask,
- size_int (precision - size), 0);
- newconst = fold (build (BIT_AND_EXPR,
- TREE_TYPE (varop), newconst,
- convert (TREE_TYPE (varop),
- mask)));
- }
+ if (TREE_CODE (arg0) == POSTINCREMENT_EXPR)
+ {
+ newconst = fold (build (PLUS_EXPR, TREE_TYPE (arg0),
+ arg1, TREE_OPERAND (arg0, 1)));
+ varop = build (PREINCREMENT_EXPR, TREE_TYPE (arg0),
+ TREE_OPERAND (arg0, 0),
+ TREE_OPERAND (arg0, 1));
+ }
+ else
+ {
+ newconst = fold (build (MINUS_EXPR, TREE_TYPE (arg0),
+ arg1, TREE_OPERAND (arg0, 1)));
+ varop = build (PREDECREMENT_EXPR, TREE_TYPE (arg0),
+ TREE_OPERAND (arg0, 0),
+ TREE_OPERAND (arg0, 1));
+ }
- t = build (code, type,
- (constopnum == 0) ? newconst : varop,
- (constopnum == 1) ? newconst : varop);
- return t;
- }
- }
- else if (constop && TREE_CODE (varop) == POSTDECREMENT_EXPR)
- {
- if (POINTER_TYPE_P (TREE_TYPE (varop))
- || (! FLOAT_TYPE_P (TREE_TYPE (varop))
- && (code == EQ_EXPR || code == NE_EXPR)))
- {
- tree newconst
- = fold (build (MINUS_EXPR, TREE_TYPE (varop),
- constop, TREE_OPERAND (varop, 1)));
-
- /* Do not overwrite the current varop to be a predecrement,
- create a new node so that we won't confuse our caller who
- might create trees and throw them away, reusing the
- arguments that they passed to build. This shows up in
- the THEN or ELSE parts of ?: being postdecrements. */
- varop = build (PREDECREMENT_EXPR, TREE_TYPE (varop),
- TREE_OPERAND (varop, 0),
- TREE_OPERAND (varop, 1));
-
- if (TREE_CODE (TREE_OPERAND (varop, 0)) == COMPONENT_REF
- && DECL_BIT_FIELD(TREE_OPERAND
- (TREE_OPERAND (varop, 0), 1)))
- {
- int size
- = TREE_INT_CST_LOW (DECL_SIZE
- (TREE_OPERAND
- (TREE_OPERAND (varop, 0), 1)));
- tree mask, unsigned_type;
- unsigned int precision;
- tree folded_compare;
-
- if (constopnum == 0)
- folded_compare = fold (build (code, type, constop,
- TREE_OPERAND (varop, 0)));
- else
- folded_compare = fold (build (code, type,
- TREE_OPERAND (varop, 0),
- constop));
- if (integer_zerop (folded_compare)
- || integer_onep (folded_compare))
- return omit_one_operand (type, folded_compare, varop);
-
- unsigned_type = (*lang_hooks.types.type_for_size)(size, 1);
- precision = TYPE_PRECISION (unsigned_type);
- mask = build_int_2 (~0, ~0);
- TREE_TYPE (mask) = TREE_TYPE (varop);
- force_fit_type (mask, 0);
- mask = const_binop (RSHIFT_EXPR, mask,
- size_int (precision - size), 0);
- newconst = fold (build (BIT_AND_EXPR,
- TREE_TYPE (varop), newconst,
- convert (TREE_TYPE (varop),
- mask)));
- }
- t = build (code, type,
- (constopnum == 0) ? newconst : varop,
- (constopnum == 1) ? newconst : varop);
- return t;
- }
- }
- }
+ /* If VAROP is a reference to a bitfield, we must mask
+ the constant by the width of the field. */
+ if (TREE_CODE (TREE_OPERAND (varop, 0)) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (TREE_OPERAND (varop, 0), 1)))
+ {
+ tree fielddecl = TREE_OPERAND (TREE_OPERAND (varop, 0), 1);
+ int size = TREE_INT_CST_LOW (DECL_SIZE (fielddecl));
+ tree folded_compare, shift;
+
+ /* First check whether the comparison would come out
+ always the same. If we don't do that we would
+ change the meaning with the masking. */
+ folded_compare = fold (build (code, type,
+ TREE_OPERAND (varop, 0),
+ arg1));
+ if (integer_zerop (folded_compare)
+ || integer_onep (folded_compare))
+ return omit_one_operand (type, folded_compare, varop);
+
+ shift = build_int_2 (TYPE_PRECISION (TREE_TYPE (varop)) - size,
+ 0);
+ newconst = fold (build (LSHIFT_EXPR, TREE_TYPE (varop),
+ newconst, shift));
+ newconst = fold (build (RSHIFT_EXPR, TREE_TYPE (varop),
+ newconst, shift));
+ }
+
+ return fold (build (code, type, varop, newconst));
+ }
/* Change X >= C to X > (C - 1) and X < C to X <= (C - 1) if C > 0.
This transformation affects the cases which are handled in later
@@ -6799,9 +6717,17 @@ fold (expr)
/* Pedantic ANSI C says that a conditional expression is never an lvalue,
so all simple results must be passed through pedantic_non_lvalue. */
if (TREE_CODE (arg0) == INTEGER_CST)
- return pedantic_non_lvalue
- (TREE_OPERAND (t, (integer_zerop (arg0) ? 2 : 1)));
- else if (operand_equal_p (arg1, TREE_OPERAND (expr, 2), 0))
+ {
+ tem = TREE_OPERAND (t, (integer_zerop (arg0) ? 2 : 1));
+ /* Only optimize constant conditions when the selected branch
+ has the same type as the COND_EXPR. This avoids optimizing
+ away "c ? x : throw", where the throw has a void type. */
+ if (! VOID_TYPE_P (TREE_TYPE (tem))
+ || VOID_TYPE_P (TREE_TYPE (t)))
+ return pedantic_non_lvalue (tem);
+ return t;
+ }
+ if (operand_equal_p (arg1, TREE_OPERAND (expr, 2), 0))
return pedantic_omit_one_operand (type, arg1, arg0);
/* If the second operand is zero, invert the comparison and swap
diff --git a/gnu/usr.bin/gcc/gcc/function.c b/gnu/usr.bin/gcc/gcc/function.c
index 4fb1151532d..ed8c8972f33 100644
--- a/gnu/usr.bin/gcc/gcc/function.c
+++ b/gnu/usr.bin/gcc/gcc/function.c
@@ -123,6 +123,9 @@ int current_function_uses_only_leaf_regs;
post-instantiation libcalls. */
int virtuals_instantiated;
+/* Nonzero if at least one trampoline has been created. */
+int trampolines_created;
+
/* Assign unique numbers to labels generated for profiling, debugging, etc. */
static int funcdef_no;
@@ -787,7 +790,7 @@ assign_stack_temp_for_type (mode, size, keep, type)
if (keep == 2)
{
p->level = target_temp_slot_level;
- p->keep = 0;
+ p->keep = 1;
}
else if (keep == 3)
{
@@ -1511,7 +1514,11 @@ put_reg_into_stack (function, reg, type, promoted_mode, decl_mode, volatile_p,
regno = REGNO (reg);
if (regno < func->x_max_parm_reg)
- new = func->x_parm_reg_stack_loc[regno];
+ {
+ if (!func->x_parm_reg_stack_loc)
+ abort ();
+ new = func->x_parm_reg_stack_loc[regno];
+ }
if (new == 0)
new = function ?
@@ -2194,7 +2201,23 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements, no_share)
replacement = find_fixup_replacement (replacements, x);
if (replacement->new)
{
+ enum machine_mode mode = GET_MODE (x);
*loc = replacement->new;
+
+ /* Careful! We may have just replaced a SUBREG by a MEM, which
+ means that the insn may have become invalid again. We can't
+ in this case make a new replacement since we already have one
+ and we must deal with MATCH_DUPs. */
+ if (GET_CODE (replacement->new) == MEM)
+ {
+ INSN_CODE (insn) = -1;
+ if (recog_memoized (insn) >= 0)
+ return;
+
+ fixup_var_refs_1 (replacement->new, mode, &PATTERN (insn),
+ insn, replacements, no_share);
+ }
+
return;
}
@@ -6899,6 +6922,7 @@ expand_function_end (filename, line, end_bindings)
emit_block_move (blktramp, initial_trampoline,
GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
#endif
+ trampolines_created = 1;
INITIALIZE_TRAMPOLINE (tramp, XEXP (DECL_RTL (function), 0), context);
seq = get_insns ();
end_sequence ();
@@ -6959,6 +6983,14 @@ expand_function_end (filename, line, end_bindings)
clear_pending_stack_adjust ();
do_pending_stack_adjust ();
+ /* ??? This is a kludge. We want to ensure that instructions that
+ may trap are not moved into the epilogue by scheduling, because
+ we don't always emit unwind information for the epilogue.
+ However, not all machine descriptions define a blockage insn, so
+ emit an ASM_INPUT to act as one. */
+ if (flag_non_call_exceptions)
+ emit_insn (gen_rtx_ASM_INPUT (VOIDmode, ""));
+
/* Mark the end of the function body.
If control reaches this insn, the function can drop through
without returning a value. */
diff --git a/gnu/usr.bin/gcc/gcc/gcc.c b/gnu/usr.bin/gcc/gcc/gcc.c
index e3e8255d7cf..984d1e152b1 100644
--- a/gnu/usr.bin/gcc/gcc/gcc.c
+++ b/gnu/usr.bin/gcc/gcc/gcc.c
@@ -197,6 +197,19 @@ static int target_help_flag;
static int report_times;
+/* Nonzero means place this string before uses of /, so that include
+ and library files can be found in an alternate location. */
+
+#ifdef TARGET_SYSTEM_ROOT
+static const char *target_system_root = TARGET_SYSTEM_ROOT;
+#else
+static const char *target_system_root = 0;
+#endif
+
+/* Nonzero means pass the updated target_system_root to the compiler. */
+
+static int target_system_root_changed;
+
/* Nonzero means write "temp" files in source directory
and use the source file's name in them, and don't delete them. */
@@ -279,6 +292,8 @@ static char *find_a_file PARAMS ((struct path_prefix *, const char *,
int, int));
static void add_prefix PARAMS ((struct path_prefix *, const char *,
const char *, int, int, int *, int));
+static void add_sysrooted_prefix PARAMS ((struct path_prefix *, const char *,
+ const char *, int, int, int *, int));
static void translate_options PARAMS ((int *, const char *const **));
static char *skip_whitespace PARAMS ((char *));
static void delete_if_ordinary PARAMS ((const char *));
@@ -313,7 +328,7 @@ static void display_help PARAMS ((void));
static void add_preprocessor_option PARAMS ((const char *, int));
static void add_assembler_option PARAMS ((const char *, int));
static void add_linker_option PARAMS ((const char *, int));
-static void process_command PARAMS ((int, const char *const *));
+static void process_command PARAMS ((int, const char **));
static int execute PARAMS ((void));
static void alloc_args PARAMS ((void));
static void clear_args PARAMS ((void));
@@ -414,7 +429,9 @@ or with constant text in a single argument.
%P like %p, but puts `__' before and after the name of each macro.
(Except macros that already have __.)
This is for ANSI C.
- %I Substitute a -iprefix option made from GCC_EXEC_PREFIX.
+ %I Substitute any of -iprefix (made from GCC_EXEC_PREFIX), -isysroot
+ (made from TARGET_SYSTEM_ROOT), and -isystem (made from COMPILER_PATH
+ and -B options) as necessary.
%s current argument is the name of a library or startup file of some sort.
Search for that file in a standard list of directories
and substitute the full name found.
@@ -715,7 +732,7 @@ static const char *cpp_debug_options = "%{d*}";
static const char *cc1_options =
"%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
%1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*}\
- -auxbase%{c|S:%{o*:-strip %*}%{!o*: %b}}%{!c:%{!S: %b}}\
+ %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}}\
%{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi}\
%{v:-version} %{pg:-p} %{p} %{f*} %{undef}\
%{Qn:-fno-ident} %{--help:--help}\
@@ -1314,9 +1331,6 @@ static const char *gcc_exec_prefix;
#ifndef STANDARD_EXEC_PREFIX
#define STANDARD_EXEC_PREFIX "/usr/local/lib/gcc-lib/"
#endif
-#ifndef STANDARD_STARTFILE_PREFIX
-#define STANDARD_STARTFILE_PREFIX "/usr/local/lib/"
-#endif
#ifndef TOOLDIR_BASE_PREFIX
#define TOOLDIR_BASE_PREFIX "/usr/local/"
#endif
@@ -1454,6 +1468,12 @@ init_gcc_specs (obstack, shared_name, static_name, eh_name)
buf = concat ("%{static|static-libgcc:", static_name, " ", eh_name,
"}%{!static:%{!static-libgcc:",
+#ifdef HAVE_LD_AS_NEEDED
+ "%{!shared-libgcc:", static_name,
+ " --as-needed ", shared_name, " --no-as-needed}"
+ "%{shared-libgcc:", shared_name, "%{!shared: ", static_name,
+ "}",
+#else
"%{!shared:%{!shared-libgcc:", static_name, " ",
eh_name, "}%{shared-libgcc:", shared_name, " ",
static_name, "}}%{shared:",
@@ -1463,6 +1483,7 @@ init_gcc_specs (obstack, shared_name, static_name, eh_name)
#else
shared_name,
#endif
+#endif
"}}}", NULL);
obstack_grow (obstack, buf, strlen (buf));
@@ -1556,12 +1577,14 @@ init_spec ()
#else
"-lgcc_s%M"
#endif
+ ,
+ "-lgcc",
+ "-lgcc_eh"
#ifdef USE_LIBUNWIND_EXCEPTIONS
" -lunwind"
#endif
- ,
- "-lgcc",
- "-lgcc_eh");
+ );
+
p += 5;
in_sep = 0;
}
@@ -1577,7 +1600,11 @@ init_spec ()
#endif
,
"libgcc.a%s",
- "libgcc_eh.a%s");
+ "libgcc_eh.a%s"
+#ifdef USE_LIBUNWIND_EXCEPTIONS
+ "libunwind.a%s"
+#endif
+ );
p += 10;
in_sep = 0;
}
@@ -2503,6 +2530,33 @@ add_prefix (pprefix, prefix, component, priority, require_machine_suffix,
pl->next = (*prev);
(*prev) = pl;
}
+
+/* Same as add_prefix, but prepending target_system_root to prefix. */
+static void
+add_sysrooted_prefix (pprefix, prefix, component, priority,
+ require_machine_suffix, warn, os_multilib)
+ struct path_prefix *pprefix;
+ const char *prefix;
+ const char *component;
+ /* enum prefix_priority */ int priority;
+ int require_machine_suffix;
+ int *warn;
+ int os_multilib;
+{
+ if (!IS_ABSOLUTE_PATHNAME (prefix))
+ abort ();
+
+ if (target_system_root)
+ {
+ prefix = concat (target_system_root, prefix, NULL);
+ /* We have to override this because GCC's notion of sysroot
+ moves along with GCC. */
+ component = "GCC";
+ }
+
+ add_prefix (pprefix, prefix, component, priority,
+ require_machine_suffix, warn, os_multilib);
+}
/* Execute the command specified by the arguments on the current line of spec.
When using pipes, this includes several piped-together commands
@@ -2604,7 +2658,14 @@ execute ()
}
fflush (stderr);
if (verbose_only_flag != 0)
- return 0;
+ {
+ /* verbose_only_flag should act as if the spec was
+ executed, so increment execution_count before
+ returning. Theis prevent spurious warnings about
+ unused linker input files, etc. */
+ execution_count++;
+ return 0;
+ }
#ifdef DEBUG
notice ("\nGo ahead? (y or n) ");
fflush (stderr);
@@ -2996,7 +3057,7 @@ add_linker_option (option, len)
static void
process_command (argc, argv)
int argc;
- const char *const *argv;
+ const char **argv;
{
int i;
const char *temp;
@@ -3225,10 +3286,10 @@ process_command (argc, argv)
}
/* Convert new-style -- options to old-style. */
- translate_options (&argc, &argv);
+ translate_options (&argc, (const char *const **) &argv);
/* Do language-specific adjustment/addition of flags. */
- lang_specific_driver (&argc, &argv, &added_libraries);
+ lang_specific_driver (&argc, (const char *const **) &argv, &added_libraries);
/* Scan argv twice. Here, the first time, just count how many switches
there will be in their vector, and how many input files in theirs.
@@ -3677,6 +3738,24 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
concat (tooldir_prefix, "lib", dir_separator_str, NULL),
"BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
+#if defined(TARGET_SYSTEM_ROOT_RELOCATABLE) && !defined(VMS)
+ /* If the normal TARGET_SYSTEM_ROOT is inside of $exec_prefix,
+ then consider it to relocate with the rest of the GCC installation
+ if GCC_EXEC_PREFIX is set.
+ ``make_relative_prefix'' is not compiled for VMS, so don't call it. */
+ if (target_system_root && gcc_exec_prefix)
+ {
+ char *tmp_prefix = make_relative_prefix (argv[0],
+ standard_bindir_prefix,
+ target_system_root);
+ if (tmp_prefix && access_check (tmp_prefix, F_OK) == 0)
+ {
+ target_system_root = tmp_prefix;
+ target_system_root_changed = 1;
+ }
+ }
+#endif
+
/* More prefixes are enabled in main, after we read the specs file
and determine whether this is cross-compilation or not. */
@@ -4559,6 +4638,15 @@ do_spec_1 (spec, inswitch, soft_matched_part)
do_spec_1 (" ", 0, NULL);
}
+ if (target_system_root_changed)
+ {
+ do_spec_1 ("-isysroot", 1, NULL);
+ /* Make this a separate argument. */
+ do_spec_1 (" ", 0, NULL);
+ do_spec_1 (target_system_root, 1, NULL);
+ do_spec_1 (" ", 0, NULL);
+ }
+
for (; pl; pl = pl->next)
{
do_spec_1 ("-isystem", 1, NULL);
@@ -4907,6 +4995,14 @@ do_spec_1 (spec, inswitch, soft_matched_part)
}
break;
+ case 'R':
+ /* We assume there is a directory
+ separator at the end of this string. */
+ if (target_system_root)
+ obstack_grow (&obstack, target_system_root,
+ strlen (target_system_root));
+ break;
+
case 'S':
value = do_spec_1 (startfile_spec, 0, NULL);
if (value != 0)
@@ -5828,12 +5924,12 @@ fatal_error (signum)
kill (getpid (), signum);
}
-extern int main PARAMS ((int, const char *const *));
+extern int main PARAMS ((int, const char **));
int
main (argc, argv)
int argc;
- const char *const *argv;
+ const char **argv;
{
size_t i;
int value;
@@ -5980,35 +6076,47 @@ main (argc, argv)
if (access (specs_file, R_OK) == 0)
read_specs (specs_file, TRUE);
- /* If not cross-compiling, look for startfiles in the standard places.
- Similarly, don't add the standard prefixes if startfile handling
- will be under control of startfile_prefix_spec. */
- if (*cross_compile == '0' && *startfile_prefix_spec == 0)
+ /* If not cross-compiling, look for executables in the standard
+ places. */
+ if (*cross_compile == '0')
{
if (*md_exec_prefix)
{
add_prefix (&exec_prefixes, md_exec_prefix, "GCC",
PREFIX_PRIORITY_LAST, 0, NULL, 0);
- add_prefix (&startfile_prefixes, md_exec_prefix, "GCC",
- PREFIX_PRIORITY_LAST, 0, NULL, 0);
}
+ }
+
+ /* Look for startfiles in the standard places. */
+ if (*startfile_prefix_spec != 0
+ && do_spec_2 (startfile_prefix_spec) == 0
+ && do_spec_1 (" ", 0, NULL) == 0)
+ {
+ int ndx;
+ for (ndx = 0; ndx < argbuf_index; ndx++)
+ add_sysrooted_prefix (&startfile_prefixes, argbuf[ndx], "BINUTILS",
+ PREFIX_PRIORITY_LAST, 0, NULL, 1);
+ }
+ /* We should eventually get rid of all these and stick to
+ startfile_prefix_spec exclusively. */
+ else if (*cross_compile == '0' || target_system_root)
+ {
+ if (*md_exec_prefix)
+ add_sysrooted_prefix (&startfile_prefixes, md_exec_prefix, "GCC",
+ PREFIX_PRIORITY_LAST, 0, NULL, 1);
if (*md_startfile_prefix)
- add_prefix (&startfile_prefixes, md_startfile_prefix, "GCC",
- PREFIX_PRIORITY_LAST, 0, NULL, 1);
+ add_sysrooted_prefix (&startfile_prefixes, md_startfile_prefix,
+ "GCC", PREFIX_PRIORITY_LAST, 0, NULL, 1);
if (*md_startfile_prefix_1)
- add_prefix (&startfile_prefixes, md_startfile_prefix_1, "GCC",
- PREFIX_PRIORITY_LAST, 0, NULL, 1);
-
- /* If standard_startfile_prefix is relative, base it on
- standard_exec_prefix. This lets us move the installed tree
- as a unit. If GCC_EXEC_PREFIX is defined, base
- standard_startfile_prefix on that as well. */
- if (IS_ABSOLUTE_PATHNAME (standard_startfile_prefix))
- add_prefix (&startfile_prefixes, standard_startfile_prefix, "BINUTILS",
- PREFIX_PRIORITY_LAST, 0, NULL, 1);
- else
+ add_sysrooted_prefix (&startfile_prefixes, md_startfile_prefix_1,
+ "GCC", PREFIX_PRIORITY_LAST, 0, NULL, 1);
+
+ /* Base standard_startfile_prefix (unlibsubdir) on standard_exec_prefix.
+ This lets us move the installed tree as a unit. If GCC_EXEC_PREFIX
+ is defined, base standard_startfile_prefix on that as well. */
+ if (*cross_compile == '0')
{
if (gcc_exec_prefix)
add_prefix (&startfile_prefixes,
@@ -6022,34 +6130,15 @@ main (argc, argv)
NULL, PREFIX_PRIORITY_LAST, 0, NULL, 1);
}
- add_prefix (&startfile_prefixes, standard_startfile_prefix_1,
- "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
- add_prefix (&startfile_prefixes, standard_startfile_prefix_2,
- "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
+ add_sysrooted_prefix (&startfile_prefixes, standard_startfile_prefix_1,
+ "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
+ add_sysrooted_prefix (&startfile_prefixes, standard_startfile_prefix_2,
+ "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
#if 0 /* Can cause surprises, and one can use -B./ instead. */
add_prefix (&startfile_prefixes, "./", NULL,
PREFIX_PRIORITY_LAST, 1, NULL, 0);
#endif
}
- else
- {
- if (!IS_ABSOLUTE_PATHNAME (standard_startfile_prefix)
- && gcc_exec_prefix)
- add_prefix (&startfile_prefixes,
- concat (gcc_exec_prefix, machine_suffix,
- standard_startfile_prefix, NULL),
- "BINUTILS", PREFIX_PRIORITY_LAST, 0, NULL, 1);
- }
-
- if (*startfile_prefix_spec != 0
- && do_spec_2 (startfile_prefix_spec) == 0
- && do_spec_1 (" ", 0, NULL) == 0)
- {
- int ndx;
- for (ndx = 0; ndx < argbuf_index; ndx++)
- add_prefix (&startfile_prefixes, argbuf[ndx], "BINUTILS",
- PREFIX_PRIORITY_LAST, 0, NULL, 1);
- }
/* Process any user specified specs in the order given on the command
line. */
diff --git a/gnu/usr.bin/gcc/gcc/gcse.c b/gnu/usr.bin/gcc/gcc/gcse.c
index de8386094e7..6902ce2102e 100644
--- a/gnu/usr.bin/gcc/gcc/gcse.c
+++ b/gnu/usr.bin/gcc/gcc/gcse.c
@@ -4063,28 +4063,29 @@ cprop_jump (bb, setcc, jump, from, src)
rtx from;
rtx src;
{
- rtx new, new_set;
+ rtx new;
rtx set = pc_set (jump);
+ rtx set_src = SET_SRC (set);
/* First substitute in the INSN condition as the SET_SRC of the JUMP,
then substitute that given values in this expanded JUMP. */
- if (setcc != NULL
+ if (setcc != NULL_RTX
&& !modified_between_p (from, setcc, jump)
&& !modified_between_p (src, setcc, jump))
{
rtx setcc_set = single_set (setcc);
- new_set = simplify_replace_rtx (SET_SRC (set),
+ set_src = simplify_replace_rtx (set_src,
SET_DEST (setcc_set),
SET_SRC (setcc_set));
}
else
- new_set = set;
+ setcc = NULL_RTX;
- new = simplify_replace_rtx (new_set, from, src);
+ new = simplify_replace_rtx (set_src, from, src);
/* If no simplification can be made, then try the next
register. */
- if (rtx_equal_p (new, new_set) || rtx_equal_p (new, SET_SRC (set)))
+ if (rtx_equal_p (new, SET_SRC (set)))
return 0;
/* If this is now a no-op delete it, otherwise this must be a valid insn. */
@@ -4235,6 +4236,8 @@ cprop_insn (insn, alter_jumps)
print_rtl (gcse_file, src);
fprintf (gcse_file, "\n");
}
+ if (INSN_DELETED_P (insn))
+ return 1;
}
}
else if (GET_CODE (src) == REG
@@ -4477,6 +4480,8 @@ local_cprop_pass (alter_jumps)
changed = true;
break;
}
+ if (INSN_DELETED_P (insn))
+ break;
}
while (reg_use_count);
}
@@ -5314,13 +5319,36 @@ pre_insert_copy_insn (expr, insn)
rtx reg = expr->reaching_reg;
int regno = REGNO (reg);
int indx = expr->bitmap_index;
- rtx set = single_set (insn);
- rtx new_insn;
+ rtx pat = PATTERN (insn);
+ rtx set, new_insn;
+ int i;
- if (!set)
+ /* This block matches the logic in hash_scan_insn. */
+ if (GET_CODE (pat) == SET)
+ set = pat;
+ else if (GET_CODE (pat) == PARALLEL)
+ {
+ /* Search through the parallel looking got the set whose
+ source was the expression that we're interested in. */
+ set = NULL_RTX;
+ for (i = 0; i < XVECLEN (pat, 0); i++)
+ {
+ rtx x = XVECEXP (pat, 0, i);
+ if (GET_CODE (x) == SET
+ && expr_equiv_p (SET_SRC (x), expr->expr))
+ {
+ set = x;
+ break;
+ }
+ }
+ if (! set)
+ abort ();
+ }
+ else
abort ();
- new_insn = emit_insn_after (gen_move_insn (reg, SET_DEST (set)), insn);
+ new_insn = gen_move_insn (reg, copy_rtx (SET_DEST (set)));
+ new_insn = emit_insn_after (new_insn, insn);
/* Keep register set table up to date. */
record_one_set (regno, new_insn);
diff --git a/gnu/usr.bin/gcc/gcc/libgcc-std.ver b/gnu/usr.bin/gcc/gcc/libgcc-std.ver
index 3cf6b1394c6..82ae1e7ced1 100644
--- a/gnu/usr.bin/gcc/gcc/libgcc-std.ver
+++ b/gnu/usr.bin/gcc/gcc/libgcc-std.ver
@@ -198,3 +198,9 @@ GCC_3.3.1 {
%inherit GCC_3.3.2 GCC_3.3.1
GCC_3.3.2 {
}
+
+%inherit GCC_3.3.4 GCC_3.3.2
+GCC_3.3.4 {
+ __unorddf2
+ __unordsf2
+}
diff --git a/gnu/usr.bin/gcc/gcc/loop.c b/gnu/usr.bin/gcc/gcc/loop.c
index 6b397ea7b0e..e61e3fe9842 100644
--- a/gnu/usr.bin/gcc/gcc/loop.c
+++ b/gnu/usr.bin/gcc/gcc/loop.c
@@ -54,6 +54,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "predict.h"
#include "insn-flags.h"
#include "optabs.h"
+#include "ggc.h"
/* Not really meaningful values, but at least something. */
#ifndef SIMULTANEOUS_PREFETCHES
@@ -552,7 +553,10 @@ loop_optimize (f, dumpfile, flags)
struct loop *loop = &loops->array[i];
if (! loop->invalid && loop->end)
- scan_loop (loop, flags);
+ {
+ scan_loop (loop, flags);
+ ggc_collect ();
+ }
}
end_alias_analysis ();
@@ -4920,6 +4924,9 @@ loop_givs_rescan (loop, bl, reg_map)
gen_move_insn (v->dest_reg,
v->new_reg));
+ /* We must do this now because we just emitted a new set. */
+ RTX_UNCHANGING_P (v->dest_reg) = 0;
+
/* The original insn may have a REG_EQUAL note. This note is
now incorrect and may result in invalid substitutions later.
The original insn is dead, but may be part of a libcall
@@ -6172,6 +6179,10 @@ update_giv_derive (loop, p)
if (GET_CODE (p) == CODE_LABEL || GET_CODE (p) == JUMP_INSN
|| biv->insn == p)
{
+ /* Skip if location is the same as a previous one. */
+ if (biv->same)
+ continue;
+
for (giv = bl->giv; giv; giv = giv->next_iv)
{
/* If cant_derive is already true, there is no point in
@@ -7308,6 +7319,9 @@ express_from (g1, g2)
&& GET_CODE (g2->mult_val) == CONST_INT)
{
if (g1->mult_val == const0_rtx
+ || (g1->mult_val == constm1_rtx
+ && INTVAL (g2->mult_val)
+ == (HOST_WIDE_INT) 1 << (HOST_BITS_PER_WIDE_INT - 1))
|| INTVAL (g2->mult_val) % INTVAL (g1->mult_val) != 0)
return NULL_RTX;
mult = GEN_INT (INTVAL (g2->mult_val) / INTVAL (g1->mult_val));
@@ -9649,6 +9663,8 @@ insert_loop_mem (mem, data)
for (i = 0; i < loop_info->mems_idx; ++i)
if (rtx_equal_p (m, loop_info->mems[i].mem))
{
+ if (MEM_VOLATILE_P (m) && !MEM_VOLATILE_P (loop_info->mems[i].mem))
+ loop_info->mems[i].mem = m;
if (GET_MODE (m) != GET_MODE (loop_info->mems[i].mem))
/* The modes of the two memory accesses are different. If
this happens, something tricky is going on, and we just
diff --git a/gnu/usr.bin/gcc/gcc/optabs.c b/gnu/usr.bin/gcc/gcc/optabs.c
index ecd32caa7e1..728d593e1f2 100644
--- a/gnu/usr.bin/gcc/gcc/optabs.c
+++ b/gnu/usr.bin/gcc/gcc/optabs.c
@@ -3436,6 +3436,40 @@ prepare_cmp_insn (px, py, pcomparison, size, pmode, punsignedp, purpose)
if (size == 0)
abort ();
+#ifdef HAVE_cmpmemqi
+ if (HAVE_cmpmemqi
+ && GET_CODE (size) == CONST_INT
+ && INTVAL (size) < (1 << GET_MODE_BITSIZE (QImode)))
+ {
+ result_mode = insn_data[(int) CODE_FOR_cmpmemqi].operand[0].mode;
+ result = gen_reg_rtx (result_mode);
+ emit_insn (gen_cmpmemqi (result, x, y, size, opalign));
+ }
+ else
+#endif
+#ifdef HAVE_cmpmemhi
+ if (HAVE_cmpmemhi
+ && GET_CODE (size) == CONST_INT
+ && INTVAL (size) < (1 << GET_MODE_BITSIZE (HImode)))
+ {
+ result_mode = insn_data[(int) CODE_FOR_cmpmemhi].operand[0].mode;
+ result = gen_reg_rtx (result_mode);
+ emit_insn (gen_cmpmemhi (result, x, y, size, opalign));
+ }
+ else
+#endif
+#ifdef HAVE_cmpmemsi
+ if (HAVE_cmpmemsi)
+ {
+ result_mode = insn_data[(int) CODE_FOR_cmpmemsi].operand[0].mode;
+ result = gen_reg_rtx (result_mode);
+ size = protect_from_queue (size, 0);
+ emit_insn (gen_cmpmemsi (result, x, y,
+ convert_to_mode (SImode, size, 1),
+ opalign));
+ }
+ else
+#endif
#ifdef HAVE_cmpstrqi
if (HAVE_cmpstrqi
&& GET_CODE (size) == CONST_INT
@@ -3496,6 +3530,16 @@ prepare_cmp_insn (px, py, pcomparison, size, pmode, punsignedp, purpose)
return;
}
+ /* Don't allow operands to the compare to trap, as that can put the
+ compare and branch in different basic blocks. */
+ if (flag_non_call_exceptions)
+ {
+ if (may_trap_p (x))
+ x = force_reg (mode, x);
+ if (may_trap_p (y))
+ y = force_reg (mode, y);
+ }
+
*px = x;
*py = y;
if (can_compare_p (*pcomparison, mode, purpose))
diff --git a/gnu/usr.bin/gcc/gcc/reload1.c b/gnu/usr.bin/gcc/gcc/reload1.c
index bfe7ae4b8d3..69cdcf78ee3 100644
--- a/gnu/usr.bin/gcc/gcc/reload1.c
+++ b/gnu/usr.bin/gcc/gcc/reload1.c
@@ -790,8 +790,18 @@ reload (first, global)
that is not a legitimate memory operand. As later
stages of reload assume that all addresses found
in the reg_equiv_* arrays were originally legitimate,
- we ignore such REG_EQUIV notes. */
- if (memory_operand (x, VOIDmode))
+ we ignore such REG_EQUIV notes.
+
+ It also can happen that a REG_EQUIV note contains a MEM
+ that carries the /u flag, for example when GCSE turns
+ the load of a constant into a move from a pseudo that
+ already contains the constant and attaches a REG_EQUAL
+ note to the insn, which is later promoted to REQ_EQUIV
+ by local-alloc. If the destination pseudo happens not
+ to be assigned to a hard reg, it will be replaced by
+ the MEM as the destination of the move, thus generating
+ a store to a possibly read-only memory location. */
+ if (memory_operand (x, VOIDmode) && ! RTX_UNCHANGING_P (x))
{
/* Always unshare the equivalence, so we can
substitute into this insn without touching the
@@ -1292,6 +1302,14 @@ reload (first, global)
by this, so unshare everything here. */
unshare_all_rtl_again (first);
+#ifdef STACK_BOUNDARY
+ /* init_emit has set the alignment of the hard frame pointer
+ to STACK_BOUNDARY. It is very likely no longer valid if
+ the hard frame pointer was used for register allocation. */
+ if (!frame_pointer_needed)
+ REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = BITS_PER_UNIT;
+#endif
+
return failure;
}
@@ -4390,6 +4408,7 @@ reload_reg_free_p (regno, opnum, type)
/* In use for anything means we can't use it for RELOAD_OTHER. */
if (TEST_HARD_REG_BIT (reload_reg_used_in_other_addr, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+ || TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)
|| TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno))
return 0;
@@ -4571,6 +4590,7 @@ reload_reg_reaches_end_p (regno, opnum, type)
return 0;
return (! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+ && ! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)
&& ! TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno)
&& ! TEST_HARD_REG_BIT (reload_reg_used, regno));
@@ -8066,6 +8086,19 @@ reload_cse_simplify (insn, testreg)
int count = 0;
rtx value = NULL_RTX;
+ /* Registers mentioned in the clobber list for an asm cannot be reused
+ within the body of the asm. Invalidate those registers now so that
+ we don't try to substitute values for them. */
+ if (asm_noperands (body) >= 0)
+ {
+ for (i = XVECLEN (body, 0) - 1; i >= 0; --i)
+ {
+ rtx part = XVECEXP (body, 0, i);
+ if (GET_CODE (part) == CLOBBER && REG_P (XEXP (part, 0)))
+ cselib_invalidate_rtx (XEXP (part, 0));
+ }
+ }
+
/* If every action in a PARALLEL is a noop, we can delete
the entire PARALLEL. */
for (i = XVECLEN (body, 0) - 1; i >= 0; --i)
@@ -8356,6 +8389,8 @@ reload_cse_simplify_operands (insn, testreg)
{
cselib_val *v;
struct elt_loc_list *l;
+ rtx op;
+ enum machine_mode mode;
CLEAR_HARD_REG_SET (equiv_regs[i]);
@@ -8367,7 +8402,52 @@ reload_cse_simplify_operands (insn, testreg)
&& recog_data.operand_mode[i] == VOIDmode))
continue;
- v = cselib_lookup (recog_data.operand[i], recog_data.operand_mode[i], 0);
+ op = recog_data.operand[i];
+ mode = GET_MODE (op);
+#ifdef LOAD_EXTEND_OP
+ if (GET_CODE (op) == MEM
+ && GET_MODE_BITSIZE (mode) < BITS_PER_WORD
+ && LOAD_EXTEND_OP (mode) != NIL)
+ {
+ rtx set = single_set (insn);
+
+ /* We might have multiple sets, some of which do implict
+ extension. Punt on this for now. */
+ if (! set)
+ continue;
+ /* If the destination is a also MEM or a STRICT_LOW_PART, no
+ extension applies.
+ Also, if there is an explicit extension, we don't have to
+ worry about an implicit one. */
+ else if (GET_CODE (SET_DEST (set)) == MEM
+ || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART
+ || GET_CODE (SET_SRC (set)) == ZERO_EXTEND
+ || GET_CODE (SET_SRC (set)) == SIGN_EXTEND)
+ ; /* Continue ordinary processing. */
+ /* If this is a straight load, make the extension explicit. */
+ else if (GET_CODE (SET_DEST (set)) == REG
+ && recog_data.n_operands == 2
+ && SET_SRC (set) == op
+ && SET_DEST (set) == recog_data.operand[1-i])
+ {
+ validate_change (insn, recog_data.operand_loc[i],
+ gen_rtx_fmt_e (LOAD_EXTEND_OP (mode),
+ word_mode, op),
+ 1);
+ validate_change (insn, recog_data.operand_loc[1-i],
+ gen_rtx_REG (word_mode, REGNO (SET_DEST (set))),
+ 1);
+ if (!apply_change_group ())
+ return 0;
+ return reload_cse_simplify_operands (insn, testreg);
+ }
+ else
+ /* ??? There might be arithmetic operations with memory that are
+ safe to optimize, but is it worth the trouble? */
+ continue;
+ }
+#endif /* LOAD_EXTEND_OP */
+ v = cselib_lookup (op, recog_data.operand_mode[i], 0);
if (! v)
continue;
diff --git a/gnu/usr.bin/gcc/gcc/rtl.h b/gnu/usr.bin/gcc/gcc/rtl.h
index a5a68ad41cc..8529cb4fe84 100644
--- a/gnu/usr.bin/gcc/gcc/rtl.h
+++ b/gnu/usr.bin/gcc/gcc/rtl.h
@@ -1,6 +1,6 @@
/* Register Transfer Language (RTL) definitions for GNU C-Compiler
Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1945,6 +1945,9 @@ extern int cse_main PARAMS ((rtx, int, int, FILE *));
extern void cse_end_of_basic_block PARAMS ((rtx,
struct cse_basic_block_data *,
int, int, int));
+extern void cse_condition_code_reg PARAMS ((void));
+extern enum machine_mode default_cc_modes_compatible PARAMS ((enum machine_mode,
+ enum machine_mode));
/* In jump.c */
extern int comparison_dominates_p PARAMS ((enum rtx_code, enum rtx_code));
@@ -2268,6 +2271,8 @@ extern void init_alias_once PARAMS ((void));
extern void init_alias_analysis PARAMS ((void));
extern void end_alias_analysis PARAMS ((void));
extern rtx addr_side_effect_eval PARAMS ((rtx, int, int));
+extern rtx get_reg_known_value PARAMS ((unsigned int));
+extern bool get_reg_known_equiv_p PARAMS ((unsigned int));
/* In sibcall.c */
typedef enum {
diff --git a/gnu/usr.bin/gcc/gcc/toplev.c b/gnu/usr.bin/gcc/gcc/toplev.c
index 4bdcfa93abd..91d1ad386f7 100644
--- a/gnu/usr.bin/gcc/gcc/toplev.c
+++ b/gnu/usr.bin/gcc/gcc/toplev.c
@@ -1,6 +1,6 @@
/* Top level of GNU C compiler
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -2607,10 +2607,6 @@ rest_of_compilation (decl)
delete_unreachable_blocks ();
- /* We have to issue these warnings now already, because CFG cleanups
- further down may destroy the required information. */
- check_function_return_warnings ();
-
/* Turn NOTE_INSN_PREDICTIONs into branch predictions. */
if (flag_guess_branch_prob)
{
@@ -2644,6 +2640,15 @@ rest_of_compilation (decl)
delete_insn (insn);
}
close_dump_file (DFI_sibling, print_rtl, get_insns ());
+
+ /* We have to issue these warnings now already, because CFG cleanups
+ further down may destroy the required information. However, this
+ must be done after the sibcall optimization pass because the barrier
+ emitted for noreturn calls that are candidate for the optimization
+ is folded into the CALL_PLACEHOLDER until after this pass, so the
+ CFG is inaccurate. */
+ check_function_return_warnings ();
+
timevar_pop (TV_JUMP);
scope_to_insns_initialize ();
@@ -3076,6 +3081,13 @@ rest_of_compilation (decl)
dump_flow_info (rtl_dump_file);
/* CFG is no longer maintained up-to-date. */
tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file);
+
+ /* Run a pass to eliminate duplicated assignments to condition
+ code registers. We have to run this after bypass_jumps,
+ because it makes it harder for that pass to determine whether
+ a jump can be bypassed safely. */
+ cse_condition_code_reg ();
+
purge_all_dead_edges (0);
delete_trivially_dead_insns (insns, max_reg_num ());
diff --git a/gnu/usr.bin/gcc/gcc/tree.h b/gnu/usr.bin/gcc/gcc/tree.h
index aa422537a56..0d93bb6ec07 100644
--- a/gnu/usr.bin/gcc/gcc/tree.h
+++ b/gnu/usr.bin/gcc/gcc/tree.h
@@ -1,6 +1,6 @@
/* Front-end tree definitions for GNU compiler.
Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@@ -2644,6 +2644,11 @@ extern int integer_all_onesp PARAMS ((tree));
extern int integer_pow2p PARAMS ((tree));
+/* integer_nonzerop (tree x) is nonzero if X is an integer constant
+ with a nonzero value. */
+
+extern int integer_nonzerop PARAMS ((tree));
+
/* staticp (tree x) is nonzero if X is a reference to data allocated
at a fixed address in memory. */