diff options
Diffstat (limited to 'contrib/crossrpms/patches/gcc-core-4.2-20061031-rtems4.8-20061109.diff')
-rw-r--r-- | contrib/crossrpms/patches/gcc-core-4.2-20061031-rtems4.8-20061109.diff | 902 |
1 files changed, 902 insertions, 0 deletions
diff --git a/contrib/crossrpms/patches/gcc-core-4.2-20061031-rtems4.8-20061109.diff b/contrib/crossrpms/patches/gcc-core-4.2-20061031-rtems4.8-20061109.diff new file mode 100644 index 0000000000..dd3c3e4206 --- /dev/null +++ b/contrib/crossrpms/patches/gcc-core-4.2-20061031-rtems4.8-20061109.diff @@ -0,0 +1,902 @@ +diff -uNr gcc-4.2-20061031.orig/gcc/builtins.def gcc-4.2-20061031/gcc/builtins.def +--- gcc-4.2-20061031.orig/gcc/builtins.def 2006-10-09 18:27:14.000000000 +0200 ++++ gcc-4.2-20061031/gcc/builtins.def 2006-11-09 10:14:51.000000000 +0100 +@@ -255,9 +255,9 @@ + DEF_LIB_BUILTIN (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE) + DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE) + DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE) +-DEF_EXT_LIB_BUILTIN (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) +-DEF_EXT_LIB_BUILTIN (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) +-DEF_EXT_LIB_BUILTIN (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) ++DEF_EXT_LIB_BUILTIN (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE) ++DEF_EXT_LIB_BUILTIN (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE) ++DEF_EXT_LIB_BUILTIN (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE) + DEF_GCC_BUILTIN (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LIST) + DEF_GCC_BUILTIN (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LIST) + DEF_GCC_BUILTIN (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LIST) +@@ -291,9 +291,9 @@ + DEF_GCC_BUILTIN (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING) + DEF_GCC_BUILTIN (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING) + DEF_GCC_BUILTIN (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING) +-DEF_C99_BUILTIN (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) +-DEF_C99_BUILTIN (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) +-DEF_C99_BUILTIN (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) ++DEF_C99_BUILTIN (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE) ++DEF_C99_BUILTIN (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE) ++DEF_C99_BUILTIN (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE) + DEF_GCC_BUILTIN (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING) + DEF_GCC_BUILTIN (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING) + DEF_GCC_BUILTIN (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING) +diff -uNr gcc-4.2-20061031.orig/gcc/ChangeLog gcc-4.2-20061031/gcc/ChangeLog +--- gcc-4.2-20061031.orig/gcc/ChangeLog 2006-10-30 09:03:50.000000000 +0100 ++++ gcc-4.2-20061031/gcc/ChangeLog 2006-11-09 10:14:08.000000000 +0100 +@@ -1,3 +1,109 @@ ++2006-11-08 Brooks Moses <brooks.moses@codesourcery.com> ++ ++ * doc/invoke.texi: Minor formatting fixes in option lists. ++ ++2006-11-08 Eric Christopher <echristo@apple.com> ++ ++ Backport from mainline: ++ * config.gcc: Add x86_64-darwin host support. ++ * config.host: Ditto. ++ * config/i386/darwin64.h: New file. ++ * config/i386/t-darwin64: Ditto. ++ ++2006-11-08 Janis Johnson <janis187@us.ibm.com> ++ ++ * gcc/doc/sourcebuild.texi (Test Directives): Add output-exists ++ and output-exists-not. ++ ++2006-11-07 Richard Guenther <rguenther@suse.de> ++ ++ PR tree-optimization/29610 ++ * tree-cfgcleanup.c (cleanup_control_flow): Honor return value ++ of tree_purge_dead_eh_edges as it may free dominators. ++ ++ * g++.dg/other/pr29610.C: New testcase. ++ ++2006-11-07 Jie Zhang <jie.zhang@analog.com> ++ ++ * gcc.c (process_command): Treat -b as normal switch if its argument ++ has no dash. ++ ++2006-11-06 Vladimir Prus <vladimir@codesourcery.com> ++ ++ Backport from mainline: ++ * config/arm/t-strongarm-pe: (TARGET_LIBGCC2_CFLAGS): Do not ++ set inhibit_libc. ++ * config/arm/t-strongarm-elf: Likewise. ++ * config/arm/t-pe: Likewise. ++ * config/arm/t-arm-elf: Likewise. ++ * config/arm/t-xscale-elf: Likewise. ++ * config/arm/t-arm-coff: Likewise. ++ * config/arm/t-xscale-coff: Likewise. ++ * config/arm/t-wince-pe: Likewise. ++ ++2006-11-06 Richard Guenther <rguenther@suse.de> ++ ++ Backport from mainline: ++ 2006-10-21 Richard Guenther <rguenther@suse.de> ++ ++ PR target/19116 ++ * config/i386/i386.c (override_options): Do not set MASK_IEEE_FP ++ if flag_unsafe_math_optimizations is specified. We have ++ flag_finite_math_only for that. ++ * config/i386/i386.md (sqrtxf2): Do not require TARGET_IEEE_FP ++ or flag_unsafe_math_optimizations. ++ ++ PR middle-end/28796 ++ * simplify-rtx.c (simplify_const_relational_operation): ++ Do not constant-fold ORDERED and UNORDERED for ++ flag_unsafe_math_optimizations but only we do not need to ++ honor NaNs for the given mode. ++ ++2006-11-05 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/29695 ++ * fold-const.c (fold_ternary): Fix A < 0 ? <sign bit of A> : 0 ++ simplification. ++ ++2006-11-02 Brooks Moses <brooks.moses@codesourcery.com> ++ ++ * doc/invoke.texi: Fix mfp-trap-mode typo. ++ ++2006-11-02 Eric Botcazou <ebotcazou@libertysurf.fr> ++ ++ * doc/install.texi (sparc-sun-solaris2*): Update GMP/MPFR build ++ instructions. ++ (sparc64-sun-solaris2*): Likewise. ++ ++2006-11-02 Uros Bizjak <ubizjak@gmail.com> ++ ++ PR target/29377 ++ * config/h8300/h8300.c (h8300_emit_stack_adjustment): Change "size" ++ argument to HOST_WIDE_INT. Update function prototype. ++ (round_frame_size): Change return type to HOST_WIDE_INT. Change ++ "size" argument to HOST_WIDE_INT. Update function prototype. ++ ++2006-11-01 Chris Johns <chris@contemporary.net.au> ++ ++ PR bootstrap/28400 ++ * Makefile.in (install-driver): Use exeext when installing ++ $target-gcc-$version. ++ ++2006-11-01 Andrew Haley <aph@redhat.com> ++ ++ * fold-const.c (fold_unary): Don't fold (t1)(t2) to (t1) if this ++ is a Java program. ++ ++2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> ++ ++ * builtins.def (gamma, lgamma): Use ATTR_MATHFN_FPROUNDING_STORE. ++ ++2006-10-31 Eric Botcazou <ebotcazou@libertysurf.fr> ++ ++ PR target/24071 ++ * gthr-posix.h (__gthread_active_p): New implementation on Solaris. ++ * gthr-posix95.h (__gthread_active_p): Likewise. ++ + 2006-10-30 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/29637 +@@ -136,13 +242,13 @@ + (init_alias_heapvars): Initialize nonlocal_for_type and + nonlocal_all. + (delete_alias_heapvars): Free nonlocal_for_type and null out +- nonlocal_all. ++ nonlocal_all. + + 2006-10-19 Eric Botcazou <ebotcazou@adacore.com> + + * fold-const.c (add_double): Rename to add_double_with_sign. + Add 'unsigned_p' parameter and take it into account for the overflow. +- (mul_double): Rename to mul_double_with_sign. ++ (mul_double): Rename to mul_double_with_sign. + Add 'unsigned_p' parameter and take it into account for the overflow. + (fold_div_compare): Call add_double_with_sign instead of add_double + and mul_double_with_sign instead of mul_double, passing them the +@@ -199,17 +305,17 @@ + 2006-10-17 Wolfgang Gellerich <gellerich@de.ibm.com> + + * config/s390/contraints.md: New file. +- * config/s390/s390-protos.h (s390_mem_constraint, +- s390_O_constraint_str, s390_N_constraint_str, ++ * config/s390/s390-protos.h (s390_mem_constraint, ++ s390_O_constraint_str, s390_N_constraint_str, + s390_float_const_zero_p): Function prototypes added. +- * config/s390/s390.c (s390_extra_constraint_str, +- s390_const_double_ok_for_constraint_p, ++ * config/s390/s390.c (s390_extra_constraint_str, ++ s390_const_double_ok_for_constraint_p, + s390_const_ok_for_constraint_p): Functions removed. + (s390_mem_constraint, s390_O_constraint_str, s390_N_constraint_str, + s390_float_const_zero_p): New functions. + * config/s390/s390.h (REG_CLASS_FROM_LETTER, CONST_OK_FOR_CONSTRAINT_P, +- CONST_DOUBLE_OK_FOR_CONSTRAINT_P, EXTRA_CONSTRAINT_STR, +- EXTRA_MEMORY_CONSTRAINT, EXTRA_ADDRESS_CONSTRAINT, CONSTRAINT_LEN): ++ CONST_DOUBLE_OK_FOR_CONSTRAINT_P, EXTRA_CONSTRAINT_STR, ++ EXTRA_MEMORY_CONSTRAINT, EXTRA_ADDRESS_CONSTRAINT, CONSTRAINT_LEN): + Macro definitions removed. + (s390_const_ok_for_constraint_p, s390_const_double_ok_for_constraint_p, + s390_extra_constraint_str): Functions removed. +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/rtems-elf.h gcc-4.2-20061031/gcc/config/arm/rtems-elf.h +--- gcc-4.2-20061031.orig/gcc/config/arm/rtems-elf.h 2005-11-21 23:56:34.000000000 +0100 ++++ gcc-4.2-20061031/gcc/config/arm/rtems-elf.h 2006-11-09 10:15:12.000000000 +0100 +@@ -27,6 +27,7 @@ + #define TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define ("__rtems__"); \ ++ builtin_define ("__USE_INIT_FINI__"); \ + builtin_assert ("system=rtems"); \ + } while (0) + +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-arm-coff gcc-4.2-20061031/gcc/config/arm/t-arm-coff +--- gcc-4.2-20061031.orig/gcc/config/arm/t-arm-coff 2003-07-02 01:26:43.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-arm-coff 2006-11-09 10:15:12.000000000 +0100 +@@ -31,4 +31,4 @@ + # Currently there is a bug somewhere in GCC's alias analysis + # or scheduling code that is breaking _fpmul_parts in fp-bit.c. + # Disabling function inlining is a workaround for this problem. +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline ++TARGET_LIBGCC2_CFLAGS = -fno-inline +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-arm-elf gcc-4.2-20061031/gcc/config/arm/t-arm-elf +--- gcc-4.2-20061031.orig/gcc/config/arm/t-arm-elf 2005-12-21 18:48:07.000000000 +0100 ++++ gcc-4.2-20061031/gcc/config/arm/t-arm-elf 2006-11-09 10:15:12.000000000 +0100 +@@ -67,7 +67,7 @@ + # Currently there is a bug somewhere in GCC's alias analysis + # or scheduling code that is breaking _fpmul_parts in fp-bit.c. + # Disabling function inlining is a workaround for this problem. +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline ++TARGET_LIBGCC2_CFLAGS = -fno-inline + + # Assemble startup files. + $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-pe gcc-4.2-20061031/gcc/config/arm/t-pe +--- gcc-4.2-20061031.orig/gcc/config/arm/t-pe 2004-05-15 14:41:35.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-pe 2006-11-09 10:15:12.000000000 +0100 +@@ -29,4 +29,4 @@ + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc ++TARGET_LIBGCC2_CFLAGS = +\ No newline at end of file +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-strongarm-elf gcc-4.2-20061031/gcc/config/arm/t-strongarm-elf +--- gcc-4.2-20061031.orig/gcc/config/arm/t-strongarm-elf 2001-09-14 12:19:30.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-strongarm-elf 2006-11-09 10:15:12.000000000 +0100 +@@ -32,7 +32,7 @@ + # Currently there is a bug somewhere in GCC's alias analysis + # or scheduling code that is breaking _fpmul_parts in fp-bit.c. + # Disabling function inlining is a workaround for this problem. +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline ++TARGET_LIBGCC2_CFLAGS = -fno-inline + + # Assemble startup files. + $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-strongarm-pe gcc-4.2-20061031/gcc/config/arm/t-strongarm-pe +--- gcc-4.2-20061031.orig/gcc/config/arm/t-strongarm-pe 2003-07-02 01:26:43.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-strongarm-pe 2006-11-09 10:15:12.000000000 +0100 +@@ -35,4 +35,4 @@ + # Currently there is a bug somewhere in GCC's alias analysis + # or scheduling code that is breaking _fpmul_parts in fp-bit.c. + # Disabling function inlining is a workaround for this problem. +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline ++TARGET_LIBGCC2_CFLAGS = -fno-inline +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-wince-pe gcc-4.2-20061031/gcc/config/arm/t-wince-pe +--- gcc-4.2-20061031.orig/gcc/config/arm/t-wince-pe 2004-05-15 14:41:35.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-wince-pe 2006-11-09 10:15:12.000000000 +0100 +@@ -34,4 +34,4 @@ + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc ++TARGET_LIBGCC2_CFLAGS = +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-xscale-coff gcc-4.2-20061031/gcc/config/arm/t-xscale-coff +--- gcc-4.2-20061031.orig/gcc/config/arm/t-xscale-coff 2004-05-15 14:41:35.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-xscale-coff 2006-11-09 10:15:12.000000000 +0100 +@@ -42,4 +42,4 @@ + # Currently there is a bug somewhere in GCC's alias analysis + # or scheduling code that is breaking _fpmul_parts in fp-bit.c. + # Disabling function inlining is a workaround for this problem. +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline ++TARGET_LIBGCC2_CFLAGS = -fno-inline +diff -uNr gcc-4.2-20061031.orig/gcc/config/arm/t-xscale-elf gcc-4.2-20061031/gcc/config/arm/t-xscale-elf +--- gcc-4.2-20061031.orig/gcc/config/arm/t-xscale-elf 2004-05-15 14:41:35.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/arm/t-xscale-elf 2006-11-09 10:15:12.000000000 +0100 +@@ -54,7 +54,7 @@ + # Currently there is a bug somewhere in GCC's alias analysis + # or scheduling code that is breaking _fpmul_parts in fp-bit.c. + # Disabling function inlining is a workaround for this problem. +-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline ++TARGET_LIBGCC2_CFLAGS = -fno-inline + + # Assemble startup files. + $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) +diff -uNr gcc-4.2-20061031.orig/gcc/config/bfin/bfin.h gcc-4.2-20061031/gcc/config/bfin/bfin.h +--- gcc-4.2-20061031.orig/gcc/config/bfin/bfin.h 2006-10-05 12:46:41.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/bfin/bfin.h 2006-11-09 10:15:12.000000000 +0100 +@@ -39,8 +39,8 @@ + #define TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ +- builtin_define ("bfin"); \ +- builtin_define ("BFIN"); \ ++ builtin_define_std ("bfin"); \ ++ builtin_define_std ("BFIN"); \ + builtin_define ("__ADSPBLACKFIN__"); \ + if (TARGET_FDPIC) \ + builtin_define ("__BFIN_FDPIC__"); \ +diff -uNr gcc-4.2-20061031.orig/gcc/config/bfin/rtems.h gcc-4.2-20061031/gcc/config/bfin/rtems.h +--- gcc-4.2-20061031.orig/gcc/config/bfin/rtems.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.2-20061031/gcc/config/bfin/rtems.h 2006-11-09 10:15:12.000000000 +0100 +@@ -0,0 +1,29 @@ ++/* Definitions for rtems targeting a bfin ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ Contributed by Ralf Corsépius (ralf.corsepius@rtems.org). ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++Boston, MA 02110-1301, USA. */ ++ ++/* Target OS preprocessor built-ins. */ ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__rtems__"); \ ++ builtin_assert ("system=rtems"); \ ++ } \ ++ while (0) +diff -uNr gcc-4.2-20061031.orig/gcc/config/c4x/rtems.h gcc-4.2-20061031/gcc/config/c4x/rtems.h +--- gcc-4.2-20061031.orig/gcc/config/c4x/rtems.h 2005-06-25 03:22:41.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/c4x/rtems.h 2006-11-09 10:15:12.000000000 +0100 +@@ -24,6 +24,5 @@ + #define TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define ("__rtems__"); \ +- builtin_define ("__USE_INIT_FINI__"); \ + builtin_assert ("system=rtems"); \ + } while (0) +diff -uNr gcc-4.2-20061031.orig/gcc/config/h8300/h8300.c gcc-4.2-20061031/gcc/config/h8300/h8300.c +--- gcc-4.2-20061031.orig/gcc/config/h8300/h8300.c 2006-08-28 15:51:04.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/h8300/h8300.c 2006-11-09 10:15:12.000000000 +0100 +@@ -83,8 +83,8 @@ + static int h8300_saveall_function_p (tree); + static int h8300_monitor_function_p (tree); + static int h8300_os_task_function_p (tree); +-static void h8300_emit_stack_adjustment (int, unsigned int); +-static int round_frame_size (int); ++static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT); ++static HOST_WIDE_INT round_frame_size (HOST_WIDE_INT); + static unsigned int compute_saved_regs (void); + static void push (int); + static void pop (int); +@@ -510,7 +510,7 @@ + SIZE to adjust the stack pointer. */ + + static void +-h8300_emit_stack_adjustment (int sign, unsigned int size) ++h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size) + { + /* If the frame size is 0, we don't have anything to do. */ + if (size == 0) +@@ -546,8 +546,8 @@ + + /* Round up frame size SIZE. */ + +-static int +-round_frame_size (int size) ++static HOST_WIDE_INT ++round_frame_size (HOST_WIDE_INT size) + { + return ((size + STACK_BOUNDARY / BITS_PER_UNIT - 1) + & -STACK_BOUNDARY / BITS_PER_UNIT); +diff -uNr gcc-4.2-20061031.orig/gcc/config/i386/darwin64.h gcc-4.2-20061031/gcc/config/i386/darwin64.h +--- gcc-4.2-20061031.orig/gcc/config/i386/darwin64.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.2-20061031/gcc/config/i386/darwin64.h 2006-11-09 10:15:11.000000000 +0100 +@@ -0,0 +1,35 @@ ++/* Target definitions for x86_64 running Darwin. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ Contributed by Apple Computer Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++Boston, MA 02110-1301, USA. */ ++ ++#undef TARGET_VERSION ++#define TARGET_VERSION fprintf (stderr, " (x86_64 Darwin)"); ++ ++#undef DARWIN_ARCH_SPEC ++#define DARWIN_ARCH_SPEC "%{m32:i386;:x86_64}" ++ ++#undef DARWIN_SUBARCH_SPEC ++#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ { "darwin_arch", DARWIN_ARCH_SPEC }, \ ++ { "darwin_crt2", "" }, \ ++ { "darwin_subarch", DARWIN_SUBARCH_SPEC }, +diff -uNr gcc-4.2-20061031.orig/gcc/config/i386/i386.c gcc-4.2-20061031/gcc/config/i386/i386.c +--- gcc-4.2-20061031.orig/gcc/config/i386/i386.c 2006-10-16 21:53:29.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/i386/i386.c 2006-11-09 10:15:11.000000000 +0100 +@@ -1847,7 +1847,7 @@ + + /* If we're doing fast math, we don't care about comparison order + wrt NaNs. This lets us use a shorter comparison sequence. */ +- if (flag_unsafe_math_optimizations) ++ if (flag_finite_math_only) + target_flags &= ~MASK_IEEE_FP; + + /* If the architecture always has an FPU, turn off NO_FANCY_MATH_387, +diff -uNr gcc-4.2-20061031.orig/gcc/config/i386/i386.md gcc-4.2-20061031/gcc/config/i386/i386.md +--- gcc-4.2-20061031.orig/gcc/config/i386/i386.md 2006-09-07 19:53:18.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/i386/i386.md 2006-11-09 10:15:11.000000000 +0100 +@@ -15560,8 +15560,7 @@ + (define_insn "sqrtxf2" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (match_operand:XF 1 "register_operand" "0")))] +- "TARGET_USE_FANCY_MATH_387 +- && (TARGET_IEEE_FP || flag_unsafe_math_optimizations) " ++ "TARGET_USE_FANCY_MATH_387" + "fsqrt" + [(set_attr "type" "fpspc") + (set_attr "mode" "XF") +diff -uNr gcc-4.2-20061031.orig/gcc/config/i386/t-darwin64 gcc-4.2-20061031/gcc/config/i386/t-darwin64 +--- gcc-4.2-20061031.orig/gcc/config/i386/t-darwin64 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.2-20061031/gcc/config/i386/t-darwin64 2006-11-09 10:15:11.000000000 +0100 +@@ -0,0 +1,3 @@ ++SHLIB_VERPFX = $(srcdir)/config/i386/darwin-libgcc ++LIB2_SIDITI_CONV_FUNCS=yes ++LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c +diff -uNr gcc-4.2-20061031.orig/gcc/config/mips/elf.h gcc-4.2-20061031/gcc/config/mips/elf.h +--- gcc-4.2-20061031.orig/gcc/config/mips/elf.h 2006-10-08 09:35:47.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config/mips/elf.h 2006-11-09 10:15:12.000000000 +0100 +@@ -49,6 +49,4 @@ + #undef ENDFILE_SPEC + #define ENDFILE_SPEC "crtend%O%s crtn%O%s" + +-#define NO_IMPLICIT_EXTERN_C 1 +- + #define HANDLE_PRAGMA_PACK_PUSH_POP 1 +diff -uNr gcc-4.2-20061031.orig/gcc/config.gcc gcc-4.2-20061031/gcc/config.gcc +--- gcc-4.2-20061031.orig/gcc/config.gcc 2006-10-16 01:05:31.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config.gcc 2006-11-09 10:15:11.000000000 +0100 +@@ -786,6 +786,11 @@ + tmake_file=bfin/t-bfin-elf + use_collect2=no + ;; ++bfin*-rtems*) ++ tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h" ++ tmake_file="bfin/t-bfin-elf t-rtems" ++ use_collect2=no ++ ;; + bfin*-*) + tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h" + tmake_file=bfin/t-bfin +@@ -1013,6 +1018,12 @@ + with_arch=${with_arch:-nocona} + with_cpu=${with_cpu:-generic} + ;; ++x86_64-*-darwin*) ++ with_arch=${with_arch:-nocona} ++ with_cpu=${with_cpu:-generic} ++ tmake_file="t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin" ++ tm_file="${tm_file} ${cpu_type}/darwin64.h" ++ ;; + i[34567]86-*-elf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h" + tmake_file="i386/t-i386elf t-svr4" +diff -uNr gcc-4.2-20061031.orig/gcc/config.host gcc-4.2-20061031/gcc/config.host +--- gcc-4.2-20061031.orig/gcc/config.host 2006-09-23 01:50:51.000000000 +0200 ++++ gcc-4.2-20061031/gcc/config.host 2006-11-09 10:15:11.000000000 +0100 +@@ -177,7 +177,7 @@ + i[34567]86-*-interix3*) + host_xmake_file="${host_xmake_file} x-interix" + ;; +- i[34567]86-*-darwin*) ++ i[34567]86-*-darwin* | x86_64-*-darwin*) + out_host_hook_obj="${out_host_hook_obj} host-i386-darwin.o" + host_xmake_file="${host_xmake_file} i386/x-darwin" + ;; +diff -uNr gcc-4.2-20061031.orig/gcc/DATESTAMP gcc-4.2-20061031/gcc/DATESTAMP +--- gcc-4.2-20061031.orig/gcc/DATESTAMP 2006-10-31 01:17:29.000000000 +0100 ++++ gcc-4.2-20061031/gcc/DATESTAMP 2006-11-09 10:14:07.000000000 +0100 +@@ -1 +1 @@ +-20061031 ++20061109 +diff -uNr gcc-4.2-20061031.orig/gcc/doc/install.texi gcc-4.2-20061031/gcc/doc/install.texi +--- gcc-4.2-20061031.orig/gcc/doc/install.texi 2006-10-20 01:39:45.000000000 +0200 ++++ gcc-4.2-20061031/gcc/doc/install.texi 2006-11-09 10:14:07.000000000 +0100 +@@ -3848,12 +3848,15 @@ + To work around this problem, compile with @option{-gstabs+} instead of + plain @option{-g}. + +-When configuring the GNU Multiple Precision Library (GMP) version 4.1.x +-on a Solaris 7 or later system, the canonical target triplet must be +-specified as the @command{build} parameter on the configure line: ++When configuring the GNU Multiple Precision Library (GMP) or the MPFR ++library on a Solaris 7 or later system, the canonical target triplet ++must be specified as the @command{build} parameter on the configure ++line. This triplet can be obtained by invoking ./config.guess in ++the toplevel source directory of GCC (and not that of GMP or MPFR). ++For example on a Solaris 7 system: + + @smallexample +-./configure --build=sparc-sun-solaris2.7 --prefix=xxx --enable-mpfr ++ % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx + @end smallexample + + @html +@@ -3933,15 +3936,24 @@ + @end html + @heading @anchor{sparc64-x-solaris2}sparc64-*-solaris2* + ++When configuring the GNU Multiple Precision Library (GMP) or the ++MPFR library, the canonical target triplet must be specified as ++the @command{build} parameter on the configure line. For example ++on a Solaris 7 system: ++ ++@smallexample ++ % ./configure --build=sparc64-sun-solaris2.7 --prefix=xxx ++@end smallexample ++ + The following compiler flags must be specified in the configure + step in order to bootstrap this target with the Sun compiler: + + @smallexample +- % CC="cc -xildoff -xarch=v9" @var{srcdir}/configure [@var{options}] [@var{target}] ++ % CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}] + @end smallexample + +-@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9} +-specifies the SPARC-V9 architecture to the Sun linker and assembler. ++@option{-xarch=v9} specifies the SPARC-V9 architecture to the Sun toolchain ++and @option{-xildoff} turns off the incremental linker. + + @html + <hr /> +diff -uNr gcc-4.2-20061031.orig/gcc/doc/invoke.texi gcc-4.2-20061031/gcc/doc/invoke.texi +--- gcc-4.2-20061031.orig/gcc/doc/invoke.texi 2006-10-19 11:19:21.000000000 +0200 ++++ gcc-4.2-20061031/gcc/doc/invoke.texi 2006-11-09 10:14:07.000000000 +0100 +@@ -197,8 +197,7 @@ + @item Objective-C and Objective-C++ Language Options + @xref{Objective-C and Objective-C++ Dialect Options,,Options Controlling + Objective-C and Objective-C++ Dialects}. +-@gccoptlist{ +--fconstant-string-class=@var{class-name} @gol ++@gccoptlist{-fconstant-string-class=@var{class-name} @gol + -fgnu-runtime -fnext-runtime @gol + -fno-nil-receivers @gol + -fobjc-call-cxx-cdtors @gol +@@ -216,8 +215,8 @@ + @item Language Independent Options + @xref{Language Independent Options,,Options to Control Diagnostic Messages Formatting}. + @gccoptlist{-fmessage-length=@var{n} @gol +--fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]}} @gol +--fdiagnostics-show-option ++-fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]} @gol ++-fdiagnostics-show-option} + + @item Warning Options + @xref{Warning Options,,Options to Request or Suppress Warnings}. +@@ -8352,7 +8351,7 @@ + as well. + + @item su +-Like @samp{su}, but the instructions are marked to be safe for software ++Like @samp{u}, but the instructions are marked to be safe for software + completion (see Alpha architecture manual for details). + + @item sui +diff -uNr gcc-4.2-20061031.orig/gcc/doc/sourcebuild.texi gcc-4.2-20061031/gcc/doc/sourcebuild.texi +--- gcc-4.2-20061031.orig/gcc/doc/sourcebuild.texi 2006-10-16 21:51:55.000000000 +0200 ++++ gcc-4.2-20061031/gcc/doc/sourcebuild.texi 2006-11-09 10:14:07.000000000 +0100 +@@ -1134,6 +1134,12 @@ + Passes if @var{regex} does not match demangled text in the dump file with + suffix @var{suffix}. + ++@item output-exists [@{ target/xfail @var{selector} @}] ++Passes if compiler output file exists. ++ ++@item output-exists-not [@{ target/xfail @var{selector} @}] ++Passes if compiler output file does not exist. ++ + @item run-gcov @var{sourcefile} + Check line counts in @command{gcov} tests. + +diff -uNr gcc-4.2-20061031.orig/gcc/fold-const.c gcc-4.2-20061031/gcc/fold-const.c +--- gcc-4.2-20061031.orig/gcc/fold-const.c 2006-10-19 22:22:04.000000000 +0200 ++++ gcc-4.2-20061031/gcc/fold-const.c 2006-11-09 10:14:08.000000000 +0100 +@@ -7397,6 +7397,8 @@ + - the final type is a pointer type and the initial type not + - the initial type is a pointer to an array and the final type + not. */ ++ /* Java pointer type conversions generate checks in some ++ cases, so we explicitly disallow this optimization. */ + if (! inside_float && ! inter_float && ! final_float + && ! inside_vec && ! inter_vec && ! final_vec + && (inter_prec >= inside_prec || inter_prec >= final_prec) +@@ -7412,7 +7414,9 @@ + && final_ptr == inside_ptr + && ! (inside_ptr + && TREE_CODE (TREE_TYPE (inside_type)) == ARRAY_TYPE +- && TREE_CODE (TREE_TYPE (type)) != ARRAY_TYPE)) ++ && TREE_CODE (TREE_TYPE (type)) != ARRAY_TYPE) ++ && ! ((strcmp (lang_hooks.name, "GNU Java") == 0) ++ && final_ptr)) + return fold_build1 (code, type, TREE_OPERAND (op0, 0)); + } + +@@ -11184,13 +11188,76 @@ + + /* A < 0 ? <sign bit of A> : 0 is simply (A & <sign bit of A>). */ + if (TREE_CODE (arg0) == LT_EXPR +- && integer_zerop (TREE_OPERAND (arg0, 1)) +- && integer_zerop (op2) +- && (tem = sign_bit_p (TREE_OPERAND (arg0, 0), arg1))) +- return fold_convert (type, +- fold_build2 (BIT_AND_EXPR, +- TREE_TYPE (tem), tem, +- fold_convert (TREE_TYPE (tem), arg1))); ++ && integer_zerop (TREE_OPERAND (arg0, 1)) ++ && integer_zerop (op2) ++ && (tem = sign_bit_p (TREE_OPERAND (arg0, 0), arg1))) ++ { ++ /* sign_bit_p only checks ARG1 bits within A's precision. ++ If <sign bit of A> has wider type than A, bits outside ++ of A's precision in <sign bit of A> need to be checked. ++ If they are all 0, this optimization needs to be done ++ in unsigned A's type, if they are all 1 in signed A's type, ++ otherwise this can't be done. */ ++ if (TYPE_PRECISION (TREE_TYPE (tem)) ++ < TYPE_PRECISION (TREE_TYPE (arg1)) ++ && TYPE_PRECISION (TREE_TYPE (tem)) ++ < TYPE_PRECISION (type)) ++ { ++ unsigned HOST_WIDE_INT mask_lo; ++ HOST_WIDE_INT mask_hi; ++ int inner_width, outer_width; ++ tree tem_type; ++ ++ inner_width = TYPE_PRECISION (TREE_TYPE (tem)); ++ outer_width = TYPE_PRECISION (TREE_TYPE (arg1)); ++ if (outer_width > TYPE_PRECISION (type)) ++ outer_width = TYPE_PRECISION (type); ++ ++ if (outer_width > HOST_BITS_PER_WIDE_INT) ++ { ++ mask_hi = ((unsigned HOST_WIDE_INT) -1 ++ >> (2 * HOST_BITS_PER_WIDE_INT - outer_width)); ++ mask_lo = -1; ++ } ++ else ++ { ++ mask_hi = 0; ++ mask_lo = ((unsigned HOST_WIDE_INT) -1 ++ >> (HOST_BITS_PER_WIDE_INT - outer_width)); ++ } ++ if (inner_width > HOST_BITS_PER_WIDE_INT) ++ { ++ mask_hi &= ~((unsigned HOST_WIDE_INT) -1 ++ >> (HOST_BITS_PER_WIDE_INT - inner_width)); ++ mask_lo = 0; ++ } ++ else ++ mask_lo &= ~((unsigned HOST_WIDE_INT) -1 ++ >> (HOST_BITS_PER_WIDE_INT - inner_width)); ++ ++ if ((TREE_INT_CST_HIGH (arg1) & mask_hi) == mask_hi ++ && (TREE_INT_CST_LOW (arg1) & mask_lo) == mask_lo) ++ { ++ tem_type = lang_hooks.types.signed_type (TREE_TYPE (tem)); ++ tem = fold_convert (tem_type, tem); ++ } ++ else if ((TREE_INT_CST_HIGH (arg1) & mask_hi) == 0 ++ && (TREE_INT_CST_LOW (arg1) & mask_lo) == 0) ++ { ++ tem_type = lang_hooks.types.unsigned_type (TREE_TYPE (tem)); ++ tem = fold_convert (tem_type, tem); ++ } ++ else ++ tem = NULL; ++ } ++ ++ if (tem) ++ return fold_convert (type, ++ fold_build2 (BIT_AND_EXPR, ++ TREE_TYPE (tem), tem, ++ fold_convert (TREE_TYPE (tem), ++ arg1))); ++ } + + /* (A >> N) & 1 ? (1 << N) : 0 is simply A & (1 << N). A & 1 was + already handled above. */ +diff -uNr gcc-4.2-20061031.orig/gcc/gcc.c gcc-4.2-20061031/gcc/gcc.c +--- gcc-4.2-20061031.orig/gcc/gcc.c 2006-07-18 18:07:44.000000000 +0200 ++++ gcc-4.2-20061031/gcc/gcc.c 2006-11-09 10:14:08.000000000 +0100 +@@ -3744,7 +3744,10 @@ + switch (c) + { + case 'b': +- if (NULL == strchr(argv[i] + 2, '-')) break; ++ if (NULL == strchr(argv[i] + 2, '-')) ++ goto normal_switch; ++ ++ /* Fall through. */ + case 'V': + fatal ("'-%c' must come at the start of the command line", c); + break; +diff -uNr gcc-4.2-20061031.orig/gcc/gthr-posix95.h gcc-4.2-20061031/gcc/gthr-posix95.h +--- gcc-4.2-20061031.orig/gcc/gthr-posix95.h 2006-01-26 23:00:28.000000000 +0100 ++++ gcc-4.2-20061031/gcc/gthr-posix95.h 2006-11-09 10:15:12.000000000 +0100 +@@ -109,6 +109,59 @@ + + #if SUPPORTS_WEAK && GTHREAD_USE_WEAK + ++/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if ++ -pthreads is not specified. The functions are dummies and most return an ++ error value. However pthread_once returns 0 without invoking the routine ++ it is passed so we cannot pretend that the interface is active if -pthreads ++ is not specified. On Solaris 2.5.1, the interface is not exposed at all so ++ we need to play the usual game with weak symbols. On Solaris 10 and up, a ++ working interface is always exposed. */ ++ ++#if defined(__sun) && defined(__svr4__) ++ ++static volatile int __gthread_active = -1; ++ ++static void ++__gthread_trigger (void) ++{ ++ __gthread_active = 1; ++} ++ ++static inline int ++__gthread_active_p (void) ++{ ++ static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; ++ static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; ++ ++ /* Avoid reading __gthread_active twice on the main code path. */ ++ int __gthread_active_latest_value = __gthread_active; ++ ++ /* This test is not protected to avoid taking a lock on the main code ++ path so every update of __gthread_active in a threaded program must ++ be atomic with regard to the result of the test. */ ++ if (__builtin_expect (__gthread_active_latest_value < 0, 0)) ++ { ++ if (__gthrw_(pthread_once)) ++ { ++ /* If this really is a threaded program, then we must ensure that ++ __gthread_active has been set to 1 before exiting this block. */ ++ __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); ++ __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); ++ __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); ++ } ++ ++ /* Make sure we'll never enter this block again. */ ++ if (__gthread_active < 0) ++ __gthread_active = 0; ++ ++ __gthread_active_latest_value = __gthread_active; ++ } ++ ++ return __gthread_active_latest_value != 0; ++} ++ ++#else /* not Solaris */ ++ + static inline int + __gthread_active_p (void) + { +@@ -117,6 +170,8 @@ + return __gthread_active_ptr != 0; + } + ++#endif /* Solaris */ ++ + #else /* not SUPPORTS_WEAK */ + + static inline int +diff -uNr gcc-4.2-20061031.orig/gcc/gthr-posix.h gcc-4.2-20061031/gcc/gthr-posix.h +--- gcc-4.2-20061031.orig/gcc/gthr-posix.h 2006-03-02 03:47:40.000000000 +0100 ++++ gcc-4.2-20061031/gcc/gthr-posix.h 2006-11-09 10:15:11.000000000 +0100 +@@ -142,6 +142,59 @@ + + #if SUPPORTS_WEAK && GTHREAD_USE_WEAK + ++/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if ++ -pthreads is not specified. The functions are dummies and most return an ++ error value. However pthread_once returns 0 without invoking the routine ++ it is passed so we cannot pretend that the interface is active if -pthreads ++ is not specified. On Solaris 2.5.1, the interface is not exposed at all so ++ we need to play the usual game with weak symbols. On Solaris 10 and up, a ++ working interface is always exposed. */ ++ ++#if defined(__sun) && defined(__svr4__) ++ ++static volatile int __gthread_active = -1; ++ ++static void ++__gthread_trigger (void) ++{ ++ __gthread_active = 1; ++} ++ ++static inline int ++__gthread_active_p (void) ++{ ++ static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; ++ static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; ++ ++ /* Avoid reading __gthread_active twice on the main code path. */ ++ int __gthread_active_latest_value = __gthread_active; ++ ++ /* This test is not protected to avoid taking a lock on the main code ++ path so every update of __gthread_active in a threaded program must ++ be atomic with regard to the result of the test. */ ++ if (__builtin_expect (__gthread_active_latest_value < 0, 0)) ++ { ++ if (__gthrw_(pthread_once)) ++ { ++ /* If this really is a threaded program, then we must ensure that ++ __gthread_active has been set to 1 before exiting this block. */ ++ __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); ++ __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); ++ __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); ++ } ++ ++ /* Make sure we'll never enter this block again. */ ++ if (__gthread_active < 0) ++ __gthread_active = 0; ++ ++ __gthread_active_latest_value = __gthread_active; ++ } ++ ++ return __gthread_active_latest_value != 0; ++} ++ ++#else /* not Solaris */ ++ + static inline int + __gthread_active_p (void) + { +@@ -150,6 +203,8 @@ + return __gthread_active_ptr != 0; + } + ++#endif /* Solaris */ ++ + #else /* not SUPPORTS_WEAK */ + + static inline int +diff -uNr gcc-4.2-20061031.orig/gcc/Makefile.in gcc-4.2-20061031/gcc/Makefile.in +--- gcc-4.2-20061031.orig/gcc/Makefile.in 2006-10-14 03:25:39.000000000 +0200 ++++ gcc-4.2-20061031/gcc/Makefile.in 2006-11-09 10:15:11.000000000 +0100 +@@ -3729,9 +3729,9 @@ + install-driver: installdirs xgcc$(exeext) + -rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) + -$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) +- -rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-$(version) ++ -rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-$(version)$(exeext) + -( cd $(DESTDIR)$(bindir) && \ +- $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version) ) ++ $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) ) + -if [ -f gcc-cross$(exeext) ] ; then \ + if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \ + rm -f $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \ +diff -uNr gcc-4.2-20061031.orig/gcc/simplify-rtx.c gcc-4.2-20061031/gcc/simplify-rtx.c +--- gcc-4.2-20061031.orig/gcc/simplify-rtx.c 2006-09-05 19:41:22.000000000 +0200 ++++ gcc-4.2-20061031/gcc/simplify-rtx.c 2006-11-09 10:15:11.000000000 +0100 +@@ -3747,10 +3747,10 @@ + return simplify_const_relational_operation (signed_condition (code), + mode, tem, const0_rtx); + +- if (flag_unsafe_math_optimizations && code == ORDERED) ++ if (! HONOR_NANS (mode) && code == ORDERED) + return const_true_rtx; + +- if (flag_unsafe_math_optimizations && code == UNORDERED) ++ if (! HONOR_NANS (mode) && code == UNORDERED) + return const0_rtx; + + /* For modes without NaNs, if the two operands are equal, we know the +diff -uNr gcc-4.2-20061031.orig/gcc/tree-cfgcleanup.c gcc-4.2-20061031/gcc/tree-cfgcleanup.c +--- gcc-4.2-20061031.orig/gcc/tree-cfgcleanup.c 2006-07-17 15:14:38.000000000 +0200 ++++ gcc-4.2-20061031/gcc/tree-cfgcleanup.c 2006-11-09 10:15:11.000000000 +0100 +@@ -160,7 +160,7 @@ + + /* If the last statement of the block could throw and now cannot, + we need to prune cfg. */ +- tree_purge_dead_eh_edges (bb); ++ retval |= tree_purge_dead_eh_edges (bb); + + if (bsi_end_p (bsi)) + continue; |