diff --git a/.cvsignore b/.cvsignore index d742735..614a962 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gcc-4.1.2-20071124.tar.bz2 +gcc-4.3.0-20071212.tar.bz2 diff --git a/gcc41-ada-pr18302.patch b/gcc41-ada-pr18302.patch deleted file mode 100644 index 9e98b97..0000000 --- a/gcc41-ada-pr18302.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- gcc/testsuite/ada/acats/run_all.sh 26 Apr 2004 21:15:54 -0000 1.18 -+++ gcc/testsuite/ada/acats/run_all.sh 17 Feb 2005 14:24:49 -0000 -@@ -11,9 +11,16 @@ - - gccflags="-O2" - gnatflags="-gnatws" -+timeout=120 - - target_run () { -+ sh -c "(sleep $timeout; kill \$\$) & -+x=\$! - $* -+s=\$? -+kill \$x -+exit \$s -+" - } - - # End of customization section. diff --git a/gcc41-ada-tweaks.patch b/gcc41-ada-tweaks.patch deleted file mode 100644 index 992ed65..0000000 --- a/gcc41-ada-tweaks.patch +++ /dev/null @@ -1,67 +0,0 @@ -2004-10-04 Jakub Jelinek - - * gnat_ugn.texi: Add : and . to direntry. - * gnat-style.texi: Change dircategory to GNU Ada tools. - -2005-02-08 Jakub Jelinek - - * Makefile.in (gnatlib-shared-default): Disallow dlopening of - libgnat.so. - ---- gcc/ada/gnat-style.texi (.../gcc-4_0-branch) (revision 107266) -+++ gcc/ada/gnat-style.texi (.../redhat/gcc-4_0-branch) (revision 107414) -@@ -28,7 +28,7 @@ - @setchapternewpage odd - - --@dircategory Programming -+@dircategory GNU Ada tools - @direntry - * gnat-style: (gnat-style). GNAT Coding Style - @end direntry ---- gcc/ada/Makefile.in (.../gcc-4_0-branch) (revision 107266) -+++ gcc/ada/Makefile.in (.../redhat/gcc-4_0-branch) (revision 107414) -@@ -1316,7 +1316,7 @@ - LIBRARY_VERSION := $(LIB_VERSION) - endif - --ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),) -+ifeq ($(strip $(filter-out powerpc% ppc% linux%,$(arch) $(osys))),) - LIBGNAT_TARGET_PAIRS = \ - a-intnam.ads - - * tree.h (block_nonartificial_location): New prototype. - * tree.c (block_nonartificial_location): New function. - * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial - if artificial attribute is present on abstract inline decl. - * c-common.c (handle_artificial_attribute): New function. - (c_common_attribute_table): Add artificial attribute. - * final.c (override_filename, override_linenum): New variables. - (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename - and override_linenum if inside of a block inlined from - __attribute__((__artificial__)) function. - (notice_source_line): Honor override_filename and override_linenum. - * doc/extend.texi: Document __attribute__((__artificial__)). - * config/i386/emmintrin.h: Add __artificial__ attribute to - all __always_inline__ functions. - * config/i386/mmintrin.h: Likewise. - * config/i386/mm3dnow.h: Likewise. - * config/i386/pmmintrin.h: Likewise. - * config/i386/ammintrin.h: Likewise. - * config/i386/xmmintrin.h: Likewise. - ---- gcc/doc/extend.texi.jj 2007-09-25 12:23:05.000000000 +0200 -+++ gcc/doc/extend.texi 2007-09-25 15:04:15.000000000 +0200 -@@ -1589,7 +1589,8 @@ attributes are currently defined for fun - @code{section}, @code{constructor}, @code{destructor}, @code{used}, - @code{unused}, @code{deprecated}, @code{weak}, @code{malloc}, - @code{alias}, @code{warn_unused_result}, @code{nonnull}, --@code{gnu_inline} and @code{externally_visible}. Several other -+@code{gnu_inline}, @code{externally_visible} and @code{artificial}. -+Several other - attributes are defined for functions on particular target systems. Other - attributes, including @code{section} are supported for variables declarations - (@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}). -@@ -1671,6 +1672,14 @@ In C++, this attribute does not depend o - but it still requires the @code{inline} keyword to enable its special - behavior. - -+@cindex @code{artificial} function attribute -+@item artificial -+This attribute is useful for small inline wrappers which if possible -+should appear during debugging as a unit, depending on the debug -+info format it will either mean marking the function as artificial -+or using the caller location for all instructions within the inlined -+body. -+ - @cindex @code{flatten} function attribute - @item flatten - Generally, inlining into a function is limited. For a function marked with ---- gcc/tree.c.jj 2007-04-03 13:18:26.000000000 +0200 -+++ gcc/tree.c 2007-09-25 15:01:49.000000000 +0200 -@@ -7638,4 +7638,40 @@ empty_body_p (tree stmt) - return true; - } - -+/* If BLOCK is inlined from an __attribute__((__artificial__)) -+ routine, return pointer to location from where it has been -+ called. */ -+location_t * -+block_nonartificial_location (tree block) -+{ -+ location_t *ret = NULL; -+ -+ while (block && TREE_CODE (block) == BLOCK -+ && BLOCK_ABSTRACT_ORIGIN (block)) -+ { -+ tree ao = BLOCK_ABSTRACT_ORIGIN (block); -+ -+ while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) -+ ao = BLOCK_ABSTRACT_ORIGIN (ao); -+ -+ if (TREE_CODE (ao) == FUNCTION_DECL) -+ { -+ /* If AO is an artificial inline, point RET to the -+ call site locus at which it has been inlined and continue -+ the loop, in case AO's caller is also an artificial -+ inline. */ -+ if (DECL_DECLARED_INLINE_P (ao) -+ && lookup_attribute ("artificial", DECL_ATTRIBUTES (ao))) -+ ret = &BLOCK_SOURCE_LOCATION (block); -+ else -+ break; -+ } -+ else if (TREE_CODE (ao) != BLOCK) -+ break; -+ -+ block = BLOCK_SUPERCONTEXT (block); -+ } -+ return ret; -+} -+ - #include "gt-tree.h" ---- gcc/tree.h.jj 2007-09-25 12:20:12.000000000 +0200 -+++ gcc/tree.h 2007-09-25 15:02:37.000000000 +0200 -@@ -4270,6 +4270,8 @@ extern tree build_addr (tree, tree); - extern bool fields_compatible_p (tree, tree); - extern tree find_compatible_field (tree, tree); - -+extern location_t *block_nonartificial_location (tree); -+ - /* In function.c */ - extern void expand_main_function (void); - extern void init_dummy_function_start (void); ---- gcc/final.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/final.c 2007-09-25 15:01:49.000000000 +0200 -@@ -141,6 +141,10 @@ static int high_function_linenum; - /* Filename of last NOTE. */ - static const char *last_filename; - -+/* Override filename and line number. */ -+static const char *override_filename; -+static int override_linenum; -+ - /* Whether to force emission of a line note before the next insn. */ - static bool force_source_line = false; - -@@ -1822,6 +1826,18 @@ final_scan_insn (rtx insn, FILE *file, i - /* Mark this block as output. */ - TREE_ASM_WRITTEN (NOTE_BLOCK (insn)) = 1; - } -+ if (write_symbols == DBX_DEBUG -+ || write_symbols == SDB_DEBUG) -+ { -+ location_t *locus_ptr -+ = block_nonartificial_location (NOTE_BLOCK (insn)); -+ -+ if (locus_ptr != NULL) -+ { -+ override_filename = LOCATION_FILE (*locus_ptr); -+ override_linenum = LOCATION_LINE (*locus_ptr); -+ } -+ } - break; - - case NOTE_INSN_BLOCK_END: -@@ -1841,6 +1857,24 @@ final_scan_insn (rtx insn, FILE *file, i - - (*debug_hooks->end_block) (high_block_linenum, n); - } -+ if (write_symbols == DBX_DEBUG -+ || write_symbols == SDB_DEBUG) -+ { -+ tree outer_block = BLOCK_SUPERCONTEXT (NOTE_BLOCK (insn)); -+ location_t *locus_ptr -+ = block_nonartificial_location (outer_block); -+ -+ if (locus_ptr != NULL) -+ { -+ override_filename = LOCATION_FILE (*locus_ptr); -+ override_linenum = LOCATION_LINE (*locus_ptr); -+ } -+ else -+ { -+ override_filename = NULL; -+ override_linenum = 0; -+ } -+ } - break; - - case NOTE_INSN_DELETED_LABEL: -@@ -2521,8 +2555,19 @@ final_scan_insn (rtx insn, FILE *file, i - static bool - notice_source_line (rtx insn) - { -- const char *filename = insn_file (insn); -- int linenum = insn_line (insn); -+ const char *filename; -+ int linenum; -+ -+ if (override_filename) -+ { -+ filename = override_filename; -+ linenum = override_linenum; -+ } -+ else -+ { -+ filename = insn_file (insn); -+ linenum = insn_line (insn); -+ } - - if (filename - && (force_source_line ---- gcc/dwarf2out.c.jj 2007-04-03 13:13:27.000000000 +0200 -+++ gcc/dwarf2out.c 2007-09-25 15:01:49.000000000 +0200 -@@ -11667,6 +11667,10 @@ gen_subprogram_die (tree decl, dw_die_re - add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_not_inlined); - } - -+ if (DECL_DECLARED_INLINE_P (decl) -+ && lookup_attribute ("artificial", DECL_ATTRIBUTES (decl))) -+ add_AT_flag (subr_die, DW_AT_artificial, 1); -+ - equate_decl_number_to_die (decl, subr_die); - } - else if (!DECL_EXTERNAL (decl)) ---- gcc/c-common.c.jj 2007-03-27 15:40:15.000000000 +0200 -+++ gcc/c-common.c 2007-09-25 15:01:49.000000000 +0200 -@@ -505,8 +505,8 @@ static tree handle_noreturn_attribute (t - static tree handle_noinline_attribute (tree *, tree, tree, int, bool *); - static tree handle_always_inline_attribute (tree *, tree, tree, int, - bool *); --static tree handle_gnu_inline_attribute (tree *, tree, tree, int, -- bool *); -+static tree handle_gnu_inline_attribute (tree *, tree, tree, int, bool *); -+static tree handle_artificial_attribute (tree *, tree, tree, int, bool *); - static tree handle_flatten_attribute (tree *, tree, tree, int, bool *); - static tree handle_used_attribute (tree *, tree, tree, int, bool *); - static tree handle_unused_attribute (tree *, tree, tree, int, bool *); -@@ -577,6 +577,8 @@ const struct attribute_spec c_common_att - handle_always_inline_attribute }, - { "gnu_inline", 0, 0, true, false, false, - handle_gnu_inline_attribute }, -+ { "artificial", 0, 0, true, false, false, -+ handle_artificial_attribute }, - { "flatten", 0, 0, true, false, false, - handle_flatten_attribute }, - { "used", 0, 0, true, false, false, -@@ -4180,6 +4182,29 @@ handle_gnu_inline_attribute (tree *node, - return NULL_TREE; - } - -+/* Handle an "artificial" attribute; arguments as in -+ struct attribute_spec.handler. */ -+ -+static tree -+handle_artificial_attribute (tree *node, tree name, -+ tree ARG_UNUSED (args), -+ int ARG_UNUSED (flags), -+ bool *no_add_attrs) -+{ -+ if (TREE_CODE (*node) == FUNCTION_DECL && DECL_DECLARED_INLINE_P (*node)) -+ { -+ /* Do nothing else, just set the attribute. We'll get at -+ it later with lookup_attribute. */ -+ } -+ else -+ { -+ warning (OPT_Wattributes, "%qE attribute ignored", name); -+ *no_add_attrs = true; -+ } -+ -+ return NULL_TREE; -+} -+ - /* Handle a "flatten" attribute; arguments as in - struct attribute_spec.handler. */ - ---- gcc/config/i386/mmintrin.h.jj 2007-03-27 15:40:18.000000000 +0200 -+++ gcc/config/i386/mmintrin.h 2007-09-25 15:06:30.000000000 +0200 -@@ -43,26 +43,26 @@ typedef short __v4hi __attribute__ ((__v - typedef char __v8qi __attribute__ ((__vector_size__ (8))); - - /* Empty the multimedia state. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_empty (void) - { - __builtin_ia32_emms (); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _m_empty (void) - { - _mm_empty (); - } - - /* Convert I to a __m64 object. The integer is zero-extended to 64-bits. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi32_si64 (int __i) - { - return (__m64) __builtin_ia32_vec_init_v2si (__i, 0); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_from_int (int __i) - { - return _mm_cvtsi32_si64 (__i); -@@ -72,26 +72,26 @@ _m_from_int (int __i) - /* Convert I to a __m64 object. */ - - /* Intel intrinsic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_from_int64 (long long __i) - { - return (__m64) __i; - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64_m64 (long long __i) - { - return (__m64) __i; - } - - /* Microsoft intrinsic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64x_si64 (long long __i) - { - return (__m64) __i; - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set_pi64x (long long __i) - { - return (__m64) __i; -@@ -99,13 +99,13 @@ _mm_set_pi64x (long long __i) - #endif - - /* Convert the lower 32 bits of the __m64 object into an integer. */ --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64_si32 (__m64 __i) - { - return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _m_to_int (__m64 __i) - { - return _mm_cvtsi64_si32 (__i); -@@ -115,20 +115,20 @@ _m_to_int (__m64 __i) - /* Convert the __m64 object to a 64bit integer. */ - - /* Intel intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _m_to_int64 (__m64 __i) - { - return (long long)__i; - } - --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtm64_si64 (__m64 __i) - { - return (long long)__i; - } - - /* Microsoft intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64_si64x (__m64 __i) - { - return (long long)__i; -@@ -138,13 +138,13 @@ _mm_cvtsi64_si64x (__m64 __i) - /* Pack the four 16-bit values from M1 into the lower four 8-bit values of - the result, and the four 16-bit values from M2 into the upper four 8-bit - values of the result, all with signed saturation. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_packs_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_packsswb (__m64 __m1, __m64 __m2) - { - return _mm_packs_pi16 (__m1, __m2); -@@ -153,13 +153,13 @@ _m_packsswb (__m64 __m1, __m64 __m2) - /* Pack the two 32-bit values from M1 in to the lower two 16-bit values of - the result, and the two 32-bit values from M2 into the upper two 16-bit - values of the result, all with signed saturation. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_packs_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_packssdw (__m64 __m1, __m64 __m2) - { - return _mm_packs_pi32 (__m1, __m2); -@@ -168,13 +168,13 @@ _m_packssdw (__m64 __m1, __m64 __m2) - /* Pack the four 16-bit values from M1 into the lower four 8-bit values of - the result, and the four 16-bit values from M2 into the upper four 8-bit - values of the result, all with unsigned saturation. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_packs_pu16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_packuswb (__m64 __m1, __m64 __m2) - { - return _mm_packs_pu16 (__m1, __m2); -@@ -182,13 +182,13 @@ _m_packuswb (__m64 __m1, __m64 __m2) - - /* Interleave the four 8-bit values from the high half of M1 with the four - 8-bit values from the high half of M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_punpckhbw (__m64 __m1, __m64 __m2) - { - return _mm_unpackhi_pi8 (__m1, __m2); -@@ -196,13 +196,13 @@ _m_punpckhbw (__m64 __m1, __m64 __m2) - - /* Interleave the two 16-bit values from the high half of M1 with the two - 16-bit values from the high half of M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_punpckhwd (__m64 __m1, __m64 __m2) - { - return _mm_unpackhi_pi16 (__m1, __m2); -@@ -210,13 +210,13 @@ _m_punpckhwd (__m64 __m1, __m64 __m2) - - /* Interleave the 32-bit value from the high half of M1 with the 32-bit - value from the high half of M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_punpckhdq (__m64 __m1, __m64 __m2) - { - return _mm_unpackhi_pi32 (__m1, __m2); -@@ -224,13 +224,13 @@ _m_punpckhdq (__m64 __m1, __m64 __m2) - - /* Interleave the four 8-bit values from the low half of M1 with the four - 8-bit values from the low half of M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_punpcklbw (__m64 __m1, __m64 __m2) - { - return _mm_unpacklo_pi8 (__m1, __m2); -@@ -238,13 +238,13 @@ _m_punpcklbw (__m64 __m1, __m64 __m2) - - /* Interleave the two 16-bit values from the low half of M1 with the two - 16-bit values from the low half of M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_punpcklwd ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_punpcklwd (__m64 __m1, __m64 __m2) - { - return _mm_unpacklo_pi16 (__m1, __m2); -@@ -252,59 +252,59 @@ _m_punpcklwd (__m64 __m1, __m64 __m2) - - /* Interleave the 32-bit value from the low half of M1 with the 32-bit - value from the low half of M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_punpckldq ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_punpckldq (__m64 __m1, __m64 __m2) - { - return _mm_unpacklo_pi32 (__m1, __m2); - } - - /* Add the 8-bit values in M1 to the 8-bit values in M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_add_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddb (__m64 __m1, __m64 __m2) - { - return _mm_add_pi8 (__m1, __m2); - } - - /* Add the 16-bit values in M1 to the 16-bit values in M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_add_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddw (__m64 __m1, __m64 __m2) - { - return _mm_add_pi16 (__m1, __m2); - } - - /* Add the 32-bit values in M1 to the 32-bit values in M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_add_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddd ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddd (__m64 __m1, __m64 __m2) - { - return _mm_add_pi32 (__m1, __m2); - } - - /* Add the 64-bit values in M1 to the 64-bit values in M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_add_si64 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddq ((long long)__m1, (long long)__m2); -@@ -312,13 +312,13 @@ _mm_add_si64 (__m64 __m1, __m64 __m2) - - /* Add the 8-bit values in M1 to the 8-bit values in M2 using signed - saturated arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_adds_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddsb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddsb (__m64 __m1, __m64 __m2) - { - return _mm_adds_pi8 (__m1, __m2); -@@ -326,13 +326,13 @@ _m_paddsb (__m64 __m1, __m64 __m2) - - /* Add the 16-bit values in M1 to the 16-bit values in M2 using signed - saturated arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_adds_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddsw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddsw (__m64 __m1, __m64 __m2) - { - return _mm_adds_pi16 (__m1, __m2); -@@ -340,13 +340,13 @@ _m_paddsw (__m64 __m1, __m64 __m2) - - /* Add the 8-bit values in M1 to the 8-bit values in M2 using unsigned - saturated arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_adds_pu8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddusb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddusb (__m64 __m1, __m64 __m2) - { - return _mm_adds_pu8 (__m1, __m2); -@@ -354,59 +354,59 @@ _m_paddusb (__m64 __m1, __m64 __m2) - - /* Add the 16-bit values in M1 to the 16-bit values in M2 using unsigned - saturated arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_adds_pu16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_paddusw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_paddusw (__m64 __m1, __m64 __m2) - { - return _mm_adds_pu16 (__m1, __m2); - } - - /* Subtract the 8-bit values in M2 from the 8-bit values in M1. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sub_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubb (__m64 __m1, __m64 __m2) - { - return _mm_sub_pi8 (__m1, __m2); - } - - /* Subtract the 16-bit values in M2 from the 16-bit values in M1. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sub_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubw (__m64 __m1, __m64 __m2) - { - return _mm_sub_pi16 (__m1, __m2); - } - - /* Subtract the 32-bit values in M2 from the 32-bit values in M1. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sub_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubd ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubd (__m64 __m1, __m64 __m2) - { - return _mm_sub_pi32 (__m1, __m2); - } - - /* Add the 64-bit values in M1 to the 64-bit values in M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sub_si64 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubq ((long long)__m1, (long long)__m2); -@@ -414,13 +414,13 @@ _mm_sub_si64 (__m64 __m1, __m64 __m2) - - /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using signed - saturating arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_subs_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubsb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubsb (__m64 __m1, __m64 __m2) - { - return _mm_subs_pi8 (__m1, __m2); -@@ -428,13 +428,13 @@ _m_psubsb (__m64 __m1, __m64 __m2) - - /* Subtract the 16-bit values in M2 from the 16-bit values in M1 using - signed saturating arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_subs_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubsw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubsw (__m64 __m1, __m64 __m2) - { - return _mm_subs_pi16 (__m1, __m2); -@@ -442,13 +442,13 @@ _m_psubsw (__m64 __m1, __m64 __m2) - - /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using - unsigned saturating arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_subs_pu8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubusb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubusb (__m64 __m1, __m64 __m2) - { - return _mm_subs_pu8 (__m1, __m2); -@@ -456,13 +456,13 @@ _m_psubusb (__m64 __m1, __m64 __m2) - - /* Subtract the 16-bit values in M2 from the 16-bit values in M1 using - unsigned saturating arithmetic. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_subs_pu16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_psubusw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psubusw (__m64 __m1, __m64 __m2) - { - return _mm_subs_pu16 (__m1, __m2); -@@ -471,13 +471,13 @@ _m_psubusw (__m64 __m1, __m64 __m2) - /* Multiply four 16-bit values in M1 by four 16-bit values in M2 producing - four 32-bit intermediate results, which are then summed by pairs to - produce two 32-bit results. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_madd_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pmaddwd ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pmaddwd (__m64 __m1, __m64 __m2) - { - return _mm_madd_pi16 (__m1, __m2); -@@ -485,13 +485,13 @@ _m_pmaddwd (__m64 __m1, __m64 __m2) - - /* Multiply four signed 16-bit values in M1 by four signed 16-bit values in - M2 and produce the high 16 bits of the 32-bit results. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_mulhi_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pmulhw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pmulhw (__m64 __m1, __m64 __m2) - { - return _mm_mulhi_pi16 (__m1, __m2); -@@ -499,226 +499,226 @@ _m_pmulhw (__m64 __m1, __m64 __m2) - - /* Multiply four 16-bit values in M1 by four 16-bit values in M2 and produce - the low 16 bits of the results. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_mullo_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pmullw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pmullw (__m64 __m1, __m64 __m2) - { - return _mm_mullo_pi16 (__m1, __m2); - } - - /* Shift four 16-bit values in M left by COUNT. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sll_pi16 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psllw (__m64 __m, __m64 __count) - { - return _mm_sll_pi16 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_slli_pi16 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psllw ((__v4hi)__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psllwi (__m64 __m, int __count) - { - return _mm_slli_pi16 (__m, __count); - } - - /* Shift two 32-bit values in M left by COUNT. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sll_pi32 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_pslld ((__v2si)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pslld (__m64 __m, __m64 __count) - { - return _mm_sll_pi32 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_slli_pi32 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_pslld ((__v2si)__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pslldi (__m64 __m, int __count) - { - return _mm_slli_pi32 (__m, __count); - } - - /* Shift the 64-bit value in M left by COUNT. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sll_si64 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psllq (__m64 __m, __m64 __count) - { - return _mm_sll_si64 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_slli_si64 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psllqi (__m64 __m, int __count) - { - return _mm_slli_si64 (__m, __count); - } - - /* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sra_pi16 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psraw ((__v4hi)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psraw (__m64 __m, __m64 __count) - { - return _mm_sra_pi16 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srai_pi16 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psraw ((__v4hi)__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrawi (__m64 __m, int __count) - { - return _mm_srai_pi16 (__m, __count); - } - - /* Shift two 32-bit values in M right by COUNT; shift in the sign bit. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sra_pi32 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psrad ((__v2si)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrad (__m64 __m, __m64 __count) - { - return _mm_sra_pi32 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srai_pi32 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psrad ((__v2si)__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psradi (__m64 __m, int __count) - { - return _mm_srai_pi32 (__m, __count); - } - - /* Shift four 16-bit values in M right by COUNT; shift in zeros. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srl_pi16 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrlw (__m64 __m, __m64 __count) - { - return _mm_srl_pi16 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srli_pi16 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrlwi (__m64 __m, int __count) - { - return _mm_srli_pi16 (__m, __count); - } - - /* Shift two 32-bit values in M right by COUNT; shift in zeros. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srl_pi32 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psrld ((__v2si)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrld (__m64 __m, __m64 __count) - { - return _mm_srl_pi32 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srli_pi32 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psrld ((__v2si)__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrldi (__m64 __m, int __count) - { - return _mm_srli_pi32 (__m, __count); - } - - /* Shift the 64-bit value in M left by COUNT; shift in zeros. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srl_si64 (__m64 __m, __m64 __count) - { - return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrlq (__m64 __m, __m64 __count) - { - return _mm_srl_si64 (__m, __count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_srli_si64 (__m64 __m, int __count) - { - return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psrlqi (__m64 __m, int __count) - { - return _mm_srli_si64 (__m, __count); - } - - /* Bit-wise AND the 64-bit values in M1 and M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_and_si64 (__m64 __m1, __m64 __m2) - { - return __builtin_ia32_pand (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pand (__m64 __m1, __m64 __m2) - { - return _mm_and_si64 (__m1, __m2); -@@ -726,39 +726,39 @@ _m_pand (__m64 __m1, __m64 __m2) - - /* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the - 64-bit value in M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_andnot_si64 (__m64 __m1, __m64 __m2) - { - return __builtin_ia32_pandn (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pandn (__m64 __m1, __m64 __m2) - { - return _mm_andnot_si64 (__m1, __m2); - } - - /* Bit-wise inclusive OR the 64-bit values in M1 and M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_or_si64 (__m64 __m1, __m64 __m2) - { - return __builtin_ia32_por (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_por (__m64 __m1, __m64 __m2) - { - return _mm_or_si64 (__m1, __m2); - } - - /* Bit-wise exclusive OR the 64-bit values in M1 and M2. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_xor_si64 (__m64 __m1, __m64 __m2) - { - return __builtin_ia32_pxor (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pxor (__m64 __m1, __m64 __m2) - { - return _mm_xor_si64 (__m1, __m2); -@@ -766,25 +766,25 @@ _m_pxor (__m64 __m1, __m64 __m2) - - /* Compare eight 8-bit values. The result of the comparison is 0xFF if the - test is true and zero if false. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pcmpeqb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pcmpeqb (__m64 __m1, __m64 __m2) - { - return _mm_cmpeq_pi8 (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_pi8 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pcmpgtb ((__v8qi)__m1, (__v8qi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pcmpgtb (__m64 __m1, __m64 __m2) - { - return _mm_cmpgt_pi8 (__m1, __m2); -@@ -792,25 +792,25 @@ _m_pcmpgtb (__m64 __m1, __m64 __m2) - - /* Compare four 16-bit values. The result of the comparison is 0xFFFF if - the test is true and zero if false. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pcmpeqw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pcmpeqw (__m64 __m1, __m64 __m2) - { - return _mm_cmpeq_pi16 (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_pi16 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pcmpgtw ((__v4hi)__m1, (__v4hi)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pcmpgtw (__m64 __m1, __m64 __m2) - { - return _mm_cmpgt_pi16 (__m1, __m2); -@@ -818,53 +818,53 @@ _m_pcmpgtw (__m64 __m1, __m64 __m2) - - /* Compare two 32-bit values. The result of the comparison is 0xFFFFFFFF if - the test is true and zero if false. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pcmpeqd ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pcmpeqd (__m64 __m1, __m64 __m2) - { - return _mm_cmpeq_pi32 (__m1, __m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2) - { - return (__m64) __builtin_ia32_pcmpgtd ((__v2si)__m1, (__v2si)__m2); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pcmpgtd (__m64 __m1, __m64 __m2) - { - return _mm_cmpgt_pi32 (__m1, __m2); - } - - /* Creates a 64-bit zero. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_setzero_si64 (void) - { - return (__m64)0LL; - } - - /* Creates a vector of two 32-bit values; I0 is least significant. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set_pi32 (int __i1, int __i0) - { - return (__m64) __builtin_ia32_vec_init_v2si (__i0, __i1); - } - - /* Creates a vector of four 16-bit values; W0 is least significant. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set_pi16 (short __w3, short __w2, short __w1, short __w0) - { - return (__m64) __builtin_ia32_vec_init_v4hi (__w0, __w1, __w2, __w3); - } - - /* Creates a vector of eight 8-bit values; B0 is least significant. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set_pi8 (char __b7, char __b6, char __b5, char __b4, - char __b3, char __b2, char __b1, char __b0) - { -@@ -873,19 +873,19 @@ _mm_set_pi8 (char __b7, char __b6, char - } - - /* Similar, but with the arguments in reverse order. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_setr_pi32 (int __i0, int __i1) - { - return _mm_set_pi32 (__i1, __i0); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_setr_pi16 (short __w0, short __w1, short __w2, short __w3) - { - return _mm_set_pi16 (__w3, __w2, __w1, __w0); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_setr_pi8 (char __b0, char __b1, char __b2, char __b3, - char __b4, char __b5, char __b6, char __b7) - { -@@ -893,21 +893,21 @@ _mm_setr_pi8 (char __b0, char __b1, char - } - - /* Creates a vector of two 32-bit values, both elements containing I. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set1_pi32 (int __i) - { - return _mm_set_pi32 (__i, __i); - } - - /* Creates a vector of four 16-bit values, all elements containing W. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set1_pi16 (short __w) - { - return _mm_set_pi16 (__w, __w, __w, __w); - } - - /* Creates a vector of eight 8-bit values, all elements containing B. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_set1_pi8 (char __b) - { - return _mm_set_pi8 (__b, __b, __b, __b, __b, __b, __b, __b); ---- gcc/config/i386/pmmintrin.h.jj 2007-06-26 13:38:46.000000000 +0200 -+++ gcc/config/i386/pmmintrin.h 2007-09-25 15:01:52.000000000 +0200 -@@ -48,79 +48,79 @@ - #define _MM_GET_DENORMALS_ZERO_MODE() \ - (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK) - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_addsub_ps (__m128 __X, __m128 __Y) - { - return (__m128) __builtin_ia32_addsubps ((__v4sf)__X, (__v4sf)__Y); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_hadd_ps (__m128 __X, __m128 __Y) - { - return (__m128) __builtin_ia32_haddps ((__v4sf)__X, (__v4sf)__Y); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_hsub_ps (__m128 __X, __m128 __Y) - { - return (__m128) __builtin_ia32_hsubps ((__v4sf)__X, (__v4sf)__Y); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_movehdup_ps (__m128 __X) - { - return (__m128) __builtin_ia32_movshdup ((__v4sf)__X); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_moveldup_ps (__m128 __X) - { - return (__m128) __builtin_ia32_movsldup ((__v4sf)__X); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_addsub_pd (__m128d __X, __m128d __Y) - { - return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_hadd_pd (__m128d __X, __m128d __Y) - { - return (__m128d) __builtin_ia32_haddpd ((__v2df)__X, (__v2df)__Y); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_hsub_pd (__m128d __X, __m128d __Y) - { - return (__m128d) __builtin_ia32_hsubpd ((__v2df)__X, (__v2df)__Y); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_loaddup_pd (double const *__P) - { - return _mm_load1_pd (__P); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_movedup_pd (__m128d __X) - { - return _mm_shuffle_pd (__X, __X, _MM_SHUFFLE2 (0,0)); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_lddqu_si128 (__m128i const *__P) - { - return (__m128i) __builtin_ia32_lddqu ((char const *)__P); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_monitor (void const * __P, unsigned int __E, unsigned int __H) - { - __builtin_ia32_monitor (__P, __E, __H); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_mwait (unsigned int __E, unsigned int __H) - { - __builtin_ia32_mwait (__E, __H); ---- gcc/config/i386/mm3dnow.h.jj 2007-02-20 22:38:59.000000000 +0100 -+++ gcc/config/i386/mm3dnow.h 2007-09-25 15:01:52.000000000 +0200 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2004 Free Software Foundation, Inc. -+/* Copyright (C) 2004, 2007 Free Software Foundation, Inc. - - This file is part of GCC. - ---- gcc/config/i386/xmmintrin.h.jj 2007-06-26 13:38:46.000000000 +0200 -+++ gcc/config/i386/xmmintrin.h 2007-09-25 15:06:47.000000000 +0200 -@@ -88,7 +88,7 @@ enum _mm_hint - #define _MM_FLUSH_ZERO_OFF 0x0000 - - /* Create a vector of zeros. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_setzero_ps (void) - { - return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f }; -@@ -98,55 +98,55 @@ _mm_setzero_ps (void) - floating-point) values of A and B; the upper three SPFP values are - passed through from A. */ - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_add_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_sub_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_mul_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_div_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_sqrt_ss (__m128 __A) - { - return (__m128) __builtin_ia32_sqrtss ((__v4sf)__A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_rcp_ss (__m128 __A) - { - return (__m128) __builtin_ia32_rcpss ((__v4sf)__A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_rsqrt_ss (__m128 __A) - { - return (__m128) __builtin_ia32_rsqrtss ((__v4sf)__A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_min_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_minss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_max_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_maxss ((__v4sf)__A, (__v4sf)__B); -@@ -154,55 +154,55 @@ _mm_max_ss (__m128 __A, __m128 __B) - - /* Perform the respective operation on the four SPFP values in A and B. */ - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_add_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_addps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_sub_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_subps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_mul_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_mulps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_div_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_divps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_sqrt_ps (__m128 __A) - { - return (__m128) __builtin_ia32_sqrtps ((__v4sf)__A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_rcp_ps (__m128 __A) - { - return (__m128) __builtin_ia32_rcpps ((__v4sf)__A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_rsqrt_ps (__m128 __A) - { - return (__m128) __builtin_ia32_rsqrtps ((__v4sf)__A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_min_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_minps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_max_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_maxps ((__v4sf)__A, (__v4sf)__B); -@@ -210,25 +210,25 @@ _mm_max_ps (__m128 __A, __m128 __B) - - /* Perform logical bit-wise operations on 128-bit values. */ - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_and_ps (__m128 __A, __m128 __B) - { - return __builtin_ia32_andps (__A, __B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_andnot_ps (__m128 __A, __m128 __B) - { - return __builtin_ia32_andnps (__A, __B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_or_ps (__m128 __A, __m128 __B) - { - return __builtin_ia32_orps (__A, __B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_xor_ps (__m128 __A, __m128 __B) - { - return __builtin_ia32_xorps (__A, __B); -@@ -238,25 +238,25 @@ _mm_xor_ps (__m128 __A, __m128 __B) - comparison is true, place a mask of all ones in the result, otherwise a - mask of zeros. The upper three SPFP values are passed through from A. */ - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpeqss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpltss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmple_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpless ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movss ((__v4sf) __A, -@@ -266,7 +266,7 @@ _mm_cmpgt_ss (__m128 __A, __m128 __B) - __A)); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpge_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movss ((__v4sf) __A, -@@ -276,25 +276,25 @@ _mm_cmpge_ss (__m128 __A, __m128 __B) - __A)); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpneq_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpneqss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpnlt_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpnltss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpnle_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpnless ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpngt_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movss ((__v4sf) __A, -@@ -304,7 +304,7 @@ _mm_cmpngt_ss (__m128 __A, __m128 __B) - __A)); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpnge_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movss ((__v4sf) __A, -@@ -314,13 +314,13 @@ _mm_cmpnge_ss (__m128 __A, __m128 __B) - __A)); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpord_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpordss ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpunord_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpunordss ((__v4sf)__A, (__v4sf)__B); -@@ -330,73 +330,73 @@ _mm_cmpunord_ss (__m128 __A, __m128 __B) - element, if the comparison is true, place a mask of all ones in the - result, otherwise a mask of zeros. */ - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpeqps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmple_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpge_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpneq_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpneqps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpnlt_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpnltps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpnle_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpngt_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpnge_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpord_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpordps ((__v4sf)__A, (__v4sf)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cmpunord_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_cmpunordps ((__v4sf)__A, (__v4sf)__B); -@@ -405,73 +405,73 @@ _mm_cmpunord_ps (__m128 __A, __m128 __B) - /* Compare the lower SPFP values of A and B and return 1 if true - and 0 if false. */ - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comieq_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_comieq ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comilt_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_comilt ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comile_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_comile ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comigt_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_comigt ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comige_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_comige ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comineq_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_comineq ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomieq_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_ucomieq ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomilt_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_ucomilt ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomile_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_ucomile ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomigt_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_ucomigt ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomige_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_ucomige ((__v4sf)__A, (__v4sf)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomineq_ss (__m128 __A, __m128 __B) - { - return __builtin_ia32_ucomineq ((__v4sf)__A, (__v4sf)__B); -@@ -479,13 +479,13 @@ _mm_ucomineq_ss (__m128 __A, __m128 __B) - - /* Convert the lower SPFP value to a 32-bit integer according to the current - rounding mode. */ --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvtss_si32 (__m128 __A) - { - return __builtin_ia32_cvtss2si ((__v4sf) __A); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvt_ss2si (__m128 __A) - { - return _mm_cvtss_si32 (__A); -@@ -496,14 +496,14 @@ _mm_cvt_ss2si (__m128 __A) - current rounding mode. */ - - /* Intel intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtss_si64 (__m128 __A) - { - return __builtin_ia32_cvtss2si64 ((__v4sf) __A); - } - - /* Microsoft intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtss_si64x (__m128 __A) - { - return __builtin_ia32_cvtss2si64 ((__v4sf) __A); -@@ -512,26 +512,26 @@ _mm_cvtss_si64x (__m128 __A) - - /* Convert the two lower SPFP values to 32-bit integers according to the - current rounding mode. Return the integers in packed form. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtps_pi32 (__m128 __A) - { - return (__m64) __builtin_ia32_cvtps2pi ((__v4sf) __A); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvt_ps2pi (__m128 __A) - { - return _mm_cvtps_pi32 (__A); - } - - /* Truncate the lower SPFP value to a 32-bit integer. */ --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvttss_si32 (__m128 __A) - { - return __builtin_ia32_cvttss2si ((__v4sf) __A); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvtt_ss2si (__m128 __A) - { - return _mm_cvttss_si32 (__A); -@@ -541,14 +541,14 @@ _mm_cvtt_ss2si (__m128 __A) - /* Truncate the lower SPFP value to a 32-bit integer. */ - - /* Intel intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvttss_si64 (__m128 __A) - { - return __builtin_ia32_cvttss2si64 ((__v4sf) __A); - } - - /* Microsoft intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvttss_si64x (__m128 __A) - { - return __builtin_ia32_cvttss2si64 ((__v4sf) __A); -@@ -557,26 +557,26 @@ _mm_cvttss_si64x (__m128 __A) - - /* Truncate the two lower SPFP values to 32-bit integers. Return the - integers in packed form. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvttps_pi32 (__m128 __A) - { - return (__m64) __builtin_ia32_cvttps2pi ((__v4sf) __A); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtt_ps2pi (__m128 __A) - { - return _mm_cvttps_pi32 (__A); - } - - /* Convert B to a SPFP value and insert it as element zero in A. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi32_ss (__m128 __A, int __B) - { - return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvt_si2ss (__m128 __A, int __B) - { - return _mm_cvtsi32_ss (__A, __B); -@@ -586,14 +586,14 @@ _mm_cvt_si2ss (__m128 __A, int __B) - /* Convert B to a SPFP value and insert it as element zero in A. */ - - /* Intel intrinsic. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64_ss (__m128 __A, long long __B) - { - return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B); - } - - /* Microsoft intrinsic. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64x_ss (__m128 __A, long long __B) - { - return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B); -@@ -602,20 +602,20 @@ _mm_cvtsi64x_ss (__m128 __A, long long _ - - /* Convert the two 32-bit values in B to SPFP form and insert them - as the two lower elements in A. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpi32_ps (__m128 __A, __m64 __B) - { - return (__m128) __builtin_ia32_cvtpi2ps ((__v4sf) __A, (__v2si)__B); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvt_pi2ps (__m128 __A, __m64 __B) - { - return _mm_cvtpi32_ps (__A, __B); - } - - /* Convert the four signed 16-bit values in A to SPFP form. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpi16_ps (__m64 __A) - { - __v4hi __sign; -@@ -641,7 +641,7 @@ _mm_cvtpi16_ps (__m64 __A) - } - - /* Convert the four unsigned 16-bit values in A to SPFP form. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpu16_ps (__m64 __A) - { - __v2si __hisi, __losi; -@@ -661,7 +661,7 @@ _mm_cvtpu16_ps (__m64 __A) - } - - /* Convert the low four signed 8-bit values in A to SPFP form. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpi8_ps (__m64 __A) - { - __v8qi __sign; -@@ -678,7 +678,7 @@ _mm_cvtpi8_ps (__m64 __A) - } - - /* Convert the low four unsigned 8-bit values in A to SPFP form. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpu8_ps(__m64 __A) - { - __A = (__m64) __builtin_ia32_punpcklbw ((__v8qi)__A, (__v8qi)0LL); -@@ -686,7 +686,7 @@ _mm_cvtpu8_ps(__m64 __A) - } - - /* Convert the four signed 32-bit values in A and B to SPFP form. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpi32x2_ps(__m64 __A, __m64 __B) - { - __v4sf __zero = (__v4sf) _mm_setzero_ps (); -@@ -696,7 +696,7 @@ _mm_cvtpi32x2_ps(__m64 __A, __m64 __B) - } - - /* Convert the four SPFP values in A to four signed 16-bit integers. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtps_pi16(__m128 __A) - { - __v4sf __hisf = (__v4sf)__A; -@@ -707,7 +707,7 @@ _mm_cvtps_pi16(__m128 __A) - } - - /* Convert the four SPFP values in A to four signed 8-bit integers. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtps_pi8(__m128 __A) - { - __v4hi __tmp = (__v4hi) _mm_cvtps_pi16 (__A); -@@ -716,7 +716,7 @@ _mm_cvtps_pi8(__m128 __A) - - /* Selects four specific SPFP values from A and B based on MASK. */ - #if 0 --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_shuffle_ps (__m128 __A, __m128 __B, int __mask) - { - return (__m128) __builtin_ia32_shufps ((__v4sf)__A, (__v4sf)__B, __mask); -@@ -728,14 +728,14 @@ _mm_shuffle_ps (__m128 __A, __m128 __B, - - - /* Selects and interleaves the upper two SPFP values from A and B. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_unpckhps ((__v4sf)__A, (__v4sf)__B); - } - - /* Selects and interleaves the lower two SPFP values from A and B. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_unpcklps ((__v4sf)__A, (__v4sf)__B); -@@ -743,28 +743,28 @@ _mm_unpacklo_ps (__m128 __A, __m128 __B) - - /* Sets the upper two SPFP values with 64-bits of data loaded from P; - the lower two values are passed through from A. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_loadh_pi (__m128 __A, __m64 const *__P) - { - return (__m128) __builtin_ia32_loadhps ((__v4sf)__A, (__v2si *)__P); - } - - /* Stores the upper two SPFP values of A into P. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storeh_pi (__m64 *__P, __m128 __A) - { - __builtin_ia32_storehps ((__v2si *)__P, (__v4sf)__A); - } - - /* Moves the upper two values of B into the lower two values of A. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_movehl_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movhlps ((__v4sf)__A, (__v4sf)__B); - } - - /* Moves the lower two values of B into the upper two values of A. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_movelh_ps (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movlhps ((__v4sf)__A, (__v4sf)__B); -@@ -772,146 +772,146 @@ _mm_movelh_ps (__m128 __A, __m128 __B) - - /* Sets the lower two SPFP values with 64-bits of data loaded from P; - the upper two values are passed through from A. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_loadl_pi (__m128 __A, __m64 const *__P) - { - return (__m128) __builtin_ia32_loadlps ((__v4sf)__A, (__v2si *)__P); - } - - /* Stores the lower two SPFP values of A into P. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storel_pi (__m64 *__P, __m128 __A) - { - __builtin_ia32_storelps ((__v2si *)__P, (__v4sf)__A); - } - - /* Creates a 4-bit mask from the most significant bits of the SPFP values. */ --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_movemask_ps (__m128 __A) - { - return __builtin_ia32_movmskps ((__v4sf)__A); - } - - /* Return the contents of the control register. */ --static __inline unsigned int __attribute__((__always_inline__)) -+static __inline unsigned int __attribute__((__always_inline__, __artificial__)) - _mm_getcsr (void) - { - return __builtin_ia32_stmxcsr (); - } - - /* Read exception bits from the control register. */ --static __inline unsigned int __attribute__((__always_inline__)) -+static __inline unsigned int __attribute__((__always_inline__, __artificial__)) - _MM_GET_EXCEPTION_STATE (void) - { - return _mm_getcsr() & _MM_EXCEPT_MASK; - } - --static __inline unsigned int __attribute__((__always_inline__)) -+static __inline unsigned int __attribute__((__always_inline__, __artificial__)) - _MM_GET_EXCEPTION_MASK (void) - { - return _mm_getcsr() & _MM_MASK_MASK; - } - --static __inline unsigned int __attribute__((__always_inline__)) -+static __inline unsigned int __attribute__((__always_inline__, __artificial__)) - _MM_GET_ROUNDING_MODE (void) - { - return _mm_getcsr() & _MM_ROUND_MASK; - } - --static __inline unsigned int __attribute__((__always_inline__)) -+static __inline unsigned int __attribute__((__always_inline__, __artificial__)) - _MM_GET_FLUSH_ZERO_MODE (void) - { - return _mm_getcsr() & _MM_FLUSH_ZERO_MASK; - } - - /* Set the control register to I. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_setcsr (unsigned int __I) - { - __builtin_ia32_ldmxcsr (__I); - } - - /* Set exception bits in the control register. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _MM_SET_EXCEPTION_STATE(unsigned int __mask) - { - _mm_setcsr((_mm_getcsr() & ~_MM_EXCEPT_MASK) | __mask); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _MM_SET_EXCEPTION_MASK (unsigned int __mask) - { - _mm_setcsr((_mm_getcsr() & ~_MM_MASK_MASK) | __mask); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _MM_SET_ROUNDING_MODE (unsigned int __mode) - { - _mm_setcsr((_mm_getcsr() & ~_MM_ROUND_MASK) | __mode); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _MM_SET_FLUSH_ZERO_MODE (unsigned int __mode) - { - _mm_setcsr((_mm_getcsr() & ~_MM_FLUSH_ZERO_MASK) | __mode); - } - - /* Create a vector with element 0 as F and the rest zero. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_set_ss (float __F) - { - return __extension__ (__m128)(__v4sf){ __F, 0, 0, 0 }; - } - - /* Create a vector with all four elements equal to F. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_set1_ps (float __F) - { - return __extension__ (__m128)(__v4sf){ __F, __F, __F, __F }; - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_set_ps1 (float __F) - { - return _mm_set1_ps (__F); - } - - /* Create a vector with element 0 as *P and the rest zero. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_load_ss (float const *__P) - { - return _mm_set_ss (*__P); - } - - /* Create a vector with all four elements equal to *P. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_load1_ps (float const *__P) - { - return _mm_set1_ps (*__P); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_load_ps1 (float const *__P) - { - return _mm_load1_ps (__P); - } - - /* Load four SPFP values from P. The address must be 16-byte aligned. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_load_ps (float const *__P) - { - return (__m128) *(__v4sf *)__P; - } - - /* Load four SPFP values from P. The address need not be 16-byte aligned. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_loadu_ps (float const *__P) - { - return (__m128) __builtin_ia32_loadups (__P); - } - - /* Load four SPFP values in reverse order. The address must be aligned. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_loadr_ps (float const *__P) - { - __v4sf __tmp = *(__v4sf *)__P; -@@ -919,48 +919,48 @@ _mm_loadr_ps (float const *__P) - } - - /* Create the vector [Z Y X W]. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_set_ps (const float __Z, const float __Y, const float __X, const float __W) - { - return __extension__ (__m128)(__v4sf){ __W, __X, __Y, __Z }; - } - - /* Create the vector [W X Y Z]. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_setr_ps (float __Z, float __Y, float __X, float __W) - { - return __extension__ (__m128)(__v4sf){ __Z, __Y, __X, __W }; - } - - /* Stores the lower SPFP value. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_ss (float *__P, __m128 __A) - { - *__P = __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0); - } - --static __inline float __attribute__((__always_inline__)) -+static __inline float __attribute__((__always_inline__, __artificial__)) - _mm_cvtss_f32 (__m128 __A) - { - return __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0); - } - - /* Store four SPFP values. The address must be 16-byte aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_ps (float *__P, __m128 __A) - { - *(__v4sf *)__P = (__v4sf)__A; - } - - /* Store four SPFP values. The address need not be 16-byte aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storeu_ps (float *__P, __m128 __A) - { - __builtin_ia32_storeups (__P, (__v4sf)__A); - } - - /* Store the lower SPFP value across four words. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store1_ps (float *__P, __m128 __A) - { - __v4sf __va = (__v4sf)__A; -@@ -968,14 +968,14 @@ _mm_store1_ps (float *__P, __m128 __A) - _mm_storeu_ps (__P, __tmp); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_ps1 (float *__P, __m128 __A) - { - _mm_store1_ps (__P, __A); - } - - /* Store four SPFP values in reverse order. The address must be aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storer_ps (float *__P, __m128 __A) - { - __v4sf __va = (__v4sf)__A; -@@ -984,7 +984,7 @@ _mm_storer_ps (float *__P, __m128 __A) - } - - /* Sets the low SPFP value of A from the low value of B. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_move_ss (__m128 __A, __m128 __B) - { - return (__m128) __builtin_ia32_movss ((__v4sf)__A, (__v4sf)__B); -@@ -992,13 +992,13 @@ _mm_move_ss (__m128 __A, __m128 __B) - - /* Extracts one of the four words of A. The selector N must be immediate. */ - #if 0 --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_extract_pi16 (__m64 const __A, int const __N) - { - return __builtin_ia32_vec_ext_v4hi ((__v4hi)__A, __N); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _m_pextrw (__m64 const __A, int const __N) - { - return _mm_extract_pi16 (__A, __N); -@@ -1011,13 +1011,13 @@ _m_pextrw (__m64 const __A, int const __ - /* Inserts word D into one of four words of A. The selector N must be - immediate. */ - #if 0 --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_insert_pi16 (__m64 const __A, int const __D, int const __N) - { - return (__m64) __builtin_ia32_vec_set_v4hi ((__v4hi)__A, __D, __N); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pinsrw (__m64 const __A, int const __D, int const __N) - { - return _mm_insert_pi16 (__A, __D, __N); -@@ -1029,65 +1029,65 @@ _m_pinsrw (__m64 const __A, int const __ - #endif - - /* Compute the element-wise maximum of signed 16-bit values. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_max_pi16 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pmaxsw ((__v4hi)__A, (__v4hi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pmaxsw (__m64 __A, __m64 __B) - { - return _mm_max_pi16 (__A, __B); - } - - /* Compute the element-wise maximum of unsigned 8-bit values. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_max_pu8 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pmaxub ((__v8qi)__A, (__v8qi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pmaxub (__m64 __A, __m64 __B) - { - return _mm_max_pu8 (__A, __B); - } - - /* Compute the element-wise minimum of signed 16-bit values. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_min_pi16 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pminsw ((__v4hi)__A, (__v4hi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pminsw (__m64 __A, __m64 __B) - { - return _mm_min_pi16 (__A, __B); - } - - /* Compute the element-wise minimum of unsigned 8-bit values. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_min_pu8 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pminub ((__v8qi)__A, (__v8qi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pminub (__m64 __A, __m64 __B) - { - return _mm_min_pu8 (__A, __B); - } - - /* Create an 8-bit mask of the signs of 8-bit values. */ --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_movemask_pi8 (__m64 __A) - { - return __builtin_ia32_pmovmskb ((__v8qi)__A); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _m_pmovmskb (__m64 __A) - { - return _mm_movemask_pi8 (__A); -@@ -1095,13 +1095,13 @@ _m_pmovmskb (__m64 __A) - - /* Multiply four unsigned 16-bit values in A by four unsigned 16-bit values - in B and produce the high 16 bits of the 32-bit results. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_mulhi_pu16 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pmulhuw ((__v4hi)__A, (__v4hi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pmulhuw (__m64 __A, __m64 __B) - { - return _mm_mulhi_pu16 (__A, __B); -@@ -1110,13 +1110,13 @@ _m_pmulhuw (__m64 __A, __m64 __B) - /* Return a combination of the four 16-bit values in A. The selector - must be an immediate. */ - #if 0 --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_shuffle_pi16 (__m64 __A, int __N) - { - return (__m64) __builtin_ia32_pshufw ((__v4hi)__A, __N); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pshufw (__m64 __A, int __N) - { - return _mm_shuffle_pi16 (__A, __N); -@@ -1130,39 +1130,39 @@ _m_pshufw (__m64 __A, int __N) - /* Conditionally store byte elements of A into P. The high bit of each - byte in the selector N determines whether the corresponding byte from - A is stored. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_maskmove_si64 (__m64 __A, __m64 __N, char *__P) - { - __builtin_ia32_maskmovq ((__v8qi)__A, (__v8qi)__N, __P); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _m_maskmovq (__m64 __A, __m64 __N, char *__P) - { - _mm_maskmove_si64 (__A, __N, __P); - } - - /* Compute the rounded averages of the unsigned 8-bit values in A and B. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_avg_pu8 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pavgb ((__v8qi)__A, (__v8qi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pavgb (__m64 __A, __m64 __B) - { - return _mm_avg_pu8 (__A, __B); - } - - /* Compute the rounded averages of the unsigned 16-bit values in A and B. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_avg_pu16 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_pavgw ((__v4hi)__A, (__v4hi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_pavgw (__m64 __A, __m64 __B) - { - return _mm_avg_pu16 (__A, __B); -@@ -1171,13 +1171,13 @@ _m_pavgw (__m64 __A, __m64 __B) - /* Compute the sum of the absolute differences of the unsigned 8-bit - values in A and B. Return the value in the lower 16-bit word; the - upper words are cleared. */ --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_sad_pu8 (__m64 __A, __m64 __B) - { - return (__m64) __builtin_ia32_psadbw ((__v8qi)__A, (__v8qi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _m_psadbw (__m64 __A, __m64 __B) - { - return _mm_sad_pu8 (__A, __B); -@@ -1186,7 +1186,7 @@ _m_psadbw (__m64 __A, __m64 __B) - /* Loads one cache line from address P to a location "closer" to the - processor. The selector I specifies the type of prefetch operation. */ - #if 0 --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_prefetch (void *__P, enum _mm_hint __I) - { - __builtin_prefetch (__P, 0, __I); -@@ -1197,14 +1197,14 @@ _mm_prefetch (void *__P, enum _mm_hint _ - #endif - - /* Stores the data in A to the address P without polluting the caches. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_pi (__m64 *__P, __m64 __A) - { - __builtin_ia32_movntq ((unsigned long long *)__P, (unsigned long long)__A); - } - - /* Likewise. The address must be 16-byte aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_ps (float *__P, __m128 __A) - { - __builtin_ia32_movntps (__P, (__v4sf)__A); -@@ -1212,7 +1212,7 @@ _mm_stream_ps (float *__P, __m128 __A) - - /* Guarantees that every preceding store is globally visible before - any subsequent store. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_sfence (void) - { - __builtin_ia32_sfence (); -@@ -1221,7 +1221,7 @@ _mm_sfence (void) - /* The execution of the next instruction is delayed by an implementation - specific amount of time. The instruction does not modify the - architectural state. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_pause (void) - { - __asm__ __volatile__ ("rep; nop" : : ); ---- gcc/config/i386/ammintrin.h.jj 2007-06-26 13:38:46.000000000 +0200 -+++ gcc/config/i386/ammintrin.h 2007-09-25 15:05:56.000000000 +0200 -@@ -37,19 +37,19 @@ - /* We need definitions from the SSE3, SSE2 and SSE header files*/ - #include - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_sd (double * __P, __m128d __Y) - { - __builtin_ia32_movntsd (__P, (__v2df) __Y); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_ss (float * __P, __m128 __Y) - { - __builtin_ia32_movntss (__P, (__v4sf) __Y); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_extract_si64 (__m128i __X, __m128i __Y) - { - return (__m128i) __builtin_ia32_extrq ((__v2di) __X, (__v16qi) __Y); -@@ -58,7 +58,7 @@ _mm_extract_si64 (__m128i __X, __m128i _ - #define _mm_extracti_si64(X, I, L) \ - ((__m128i) __builtin_ia32_extrqi ((__v2di)(X), I, L)) - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_insert_si64 (__m128i __X,__m128i __Y) - { - return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y); ---- gcc/config/i386/emmintrin.h.jj 2007-06-26 13:38:46.000000000 +0200 -+++ gcc/config/i386/emmintrin.h 2007-09-25 15:06:19.000000000 +0200 -@@ -54,89 +54,89 @@ typedef double __m128d __attribute__ ((_ - (((fp1) << 1) | (fp0)) - - /* Create a vector with element 0 as F and the rest zero. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_set_sd (double __F) - { - return __extension__ (__m128d){ __F, 0 }; - } - - /* Create a vector with both elements equal to F. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_set1_pd (double __F) - { - return __extension__ (__m128d){ __F, __F }; - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_set_pd1 (double __F) - { - return _mm_set1_pd (__F); - } - - /* Create a vector with the lower value X and upper value W. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_set_pd (double __W, double __X) - { - return __extension__ (__m128d){ __X, __W }; - } - - /* Create a vector with the lower value W and upper value X. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_setr_pd (double __W, double __X) - { - return __extension__ (__m128d){ __W, __X }; - } - - /* Create a vector of zeros. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_setzero_pd (void) - { - return __extension__ (__m128d){ 0.0, 0.0 }; - } - - /* Sets the low DPFP value of A from the low value of B. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_move_sd (__m128d __A, __m128d __B) - { - return (__m128d) __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B); - } - - /* Load two DPFP values from P. The address must be 16-byte aligned. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_load_pd (double const *__P) - { - return *(__m128d *)__P; - } - - /* Load two DPFP values from P. The address need not be 16-byte aligned. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_loadu_pd (double const *__P) - { - return __builtin_ia32_loadupd (__P); - } - - /* Create a vector with all two elements equal to *P. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_load1_pd (double const *__P) - { - return _mm_set1_pd (*__P); - } - - /* Create a vector with element 0 as *P and the rest zero. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_load_sd (double const *__P) - { - return _mm_set_sd (*__P); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_load_pd1 (double const *__P) - { - return _mm_load1_pd (__P); - } - - /* Load two DPFP values in reverse order. The address must be aligned. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_loadr_pd (double const *__P) - { - __m128d __tmp = _mm_load_pd (__P); -@@ -144,40 +144,40 @@ _mm_loadr_pd (double const *__P) - } - - /* Store two DPFP values. The address must be 16-byte aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_pd (double *__P, __m128d __A) - { - *(__m128d *)__P = __A; - } - - /* Store two DPFP values. The address need not be 16-byte aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storeu_pd (double *__P, __m128d __A) - { - __builtin_ia32_storeupd (__P, __A); - } - - /* Stores the lower DPFP value. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_sd (double *__P, __m128d __A) - { - *__P = __builtin_ia32_vec_ext_v2df (__A, 0); - } - --static __inline double __attribute__((__always_inline__)) -+static __inline double __attribute__((__always_inline__, __artificial__)) - _mm_cvtsd_f64 (__m128d __A) - { - return __builtin_ia32_vec_ext_v2df (__A, 0); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storel_pd (double *__P, __m128d __A) - { - _mm_store_sd (__P, __A); - } - - /* Stores the upper DPFP value. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storeh_pd (double *__P, __m128d __A) - { - *__P = __builtin_ia32_vec_ext_v2df (__A, 1); -@@ -185,26 +185,26 @@ _mm_storeh_pd (double *__P, __m128d __A) - - /* Store the lower DPFP value across two words. - The address must be 16-byte aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store1_pd (double *__P, __m128d __A) - { - _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,0))); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_pd1 (double *__P, __m128d __A) - { - _mm_store1_pd (__P, __A); - } - - /* Store two DPFP values in reverse order. The address must be aligned. */ --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storer_pd (double *__P, __m128d __A) - { - _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,1))); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi128_si32 (__m128i __A) - { - return __builtin_ia32_vec_ext_v4si ((__v4si)__A, 0); -@@ -212,221 +212,221 @@ _mm_cvtsi128_si32 (__m128i __A) - - #ifdef __x86_64__ - /* Intel intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi128_si64 (__m128i __A) - { - return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0); - } - - /* Microsoft intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi128_si64x (__m128i __A) - { - return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0); - } - #endif - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_add_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_addpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_add_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_addsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_sub_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_subpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_sub_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_subsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_mul_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_mulpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_mul_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_mulsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_div_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_divpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_div_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_divsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_sqrt_pd (__m128d __A) - { - return (__m128d)__builtin_ia32_sqrtpd ((__v2df)__A); - } - - /* Return pair {sqrt (A[0), B[1]}. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_sqrt_sd (__m128d __A, __m128d __B) - { - __v2df __tmp = __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B); - return (__m128d)__builtin_ia32_sqrtsd ((__v2df)__tmp); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_min_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_minpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_min_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_minsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_max_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_maxpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_max_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_maxsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_and_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_andpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_andnot_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_andnpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_or_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_orpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_xor_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_xorpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpeqpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpltpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmple_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmplepd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpgtpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpge_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpgepd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpneq_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpneqpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpnlt_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpnltpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpnle_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpnlepd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpngt_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpngtpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpnge_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpngepd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpord_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpordpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpunord_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpunordpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpeqsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpltsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmple_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmplesd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_sd (__m128d __A, __m128d __B) - { - return (__m128d) __builtin_ia32_movsd ((__v2df) __A, -@@ -436,7 +436,7 @@ _mm_cmpgt_sd (__m128d __A, __m128d __B) - __A)); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpge_sd (__m128d __A, __m128d __B) - { - return (__m128d) __builtin_ia32_movsd ((__v2df) __A, -@@ -446,25 +446,25 @@ _mm_cmpge_sd (__m128d __A, __m128d __B) - __A)); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpneq_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpneqsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpnlt_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpnltsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpnle_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpnlesd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpngt_sd (__m128d __A, __m128d __B) - { - return (__m128d) __builtin_ia32_movsd ((__v2df) __A, -@@ -474,7 +474,7 @@ _mm_cmpngt_sd (__m128d __A, __m128d __B) - __A)); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpnge_sd (__m128d __A, __m128d __B) - { - return (__m128d) __builtin_ia32_movsd ((__v2df) __A, -@@ -484,85 +484,85 @@ _mm_cmpnge_sd (__m128d __A, __m128d __B) - __A)); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpord_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpordsd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cmpunord_sd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_cmpunordsd ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comieq_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_comisdeq ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comilt_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_comisdlt ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comile_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_comisdle ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comigt_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_comisdgt ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comige_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_comisdge ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_comineq_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_comisdneq ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomieq_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_ucomisdeq ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomilt_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_ucomisdlt ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomile_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_ucomisdle ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomigt_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_ucomisdgt ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomige_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_ucomisdge ((__v2df)__A, (__v2df)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_ucomineq_sd (__m128d __A, __m128d __B) - { - return __builtin_ia32_ucomisdneq ((__v2df)__A, (__v2df)__B); -@@ -570,25 +570,25 @@ _mm_ucomineq_sd (__m128d __A, __m128d __ - - /* Create a vector of Qi, where i is the element number. */ - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set_epi64x (long long __q1, long long __q0) - { - return __extension__ (__m128i)(__v2di){ __q0, __q1 }; - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set_epi64 (__m64 __q1, __m64 __q0) - { - return _mm_set_epi64x ((long long)__q1, (long long)__q0); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0) - { - return __extension__ (__m128i)(__v4si){ __q0, __q1, __q2, __q3 }; - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set_epi16 (short __q7, short __q6, short __q5, short __q4, - short __q3, short __q2, short __q1, short __q0) - { -@@ -596,7 +596,7 @@ _mm_set_epi16 (short __q7, short __q6, s - __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 }; - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set_epi8 (char __q15, char __q14, char __q13, char __q12, - char __q11, char __q10, char __q09, char __q08, - char __q07, char __q06, char __q05, char __q04, -@@ -610,31 +610,31 @@ _mm_set_epi8 (char __q15, char __q14, ch - - /* Set all of the elements of the vector to A. */ - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set1_epi64x (long long __A) - { - return _mm_set_epi64x (__A, __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set1_epi64 (__m64 __A) - { - return _mm_set_epi64 (__A, __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set1_epi32 (int __A) - { - return _mm_set_epi32 (__A, __A, __A, __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set1_epi16 (short __A) - { - return _mm_set_epi16 (__A, __A, __A, __A, __A, __A, __A, __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_set1_epi8 (char __A) - { - return _mm_set_epi8 (__A, __A, __A, __A, __A, __A, __A, __A, -@@ -644,26 +644,26 @@ _mm_set1_epi8 (char __A) - /* Create a vector of Qi, where i is the element number. - The parameter order is reversed from the _mm_set_epi* functions. */ - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_setr_epi64 (__m64 __q0, __m64 __q1) - { - return _mm_set_epi64 (__q1, __q0); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_setr_epi32 (int __q0, int __q1, int __q2, int __q3) - { - return _mm_set_epi32 (__q3, __q2, __q1, __q0); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_setr_epi16 (short __q0, short __q1, short __q2, short __q3, - short __q4, short __q5, short __q6, short __q7) - { - return _mm_set_epi16 (__q7, __q6, __q5, __q4, __q3, __q2, __q1, __q0); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_setr_epi8 (char __q00, char __q01, char __q02, char __q03, - char __q04, char __q05, char __q06, char __q07, - char __q08, char __q09, char __q10, char __q11, -@@ -675,134 +675,134 @@ _mm_setr_epi8 (char __q00, char __q01, c - - /* Create a vector with element 0 as *P and the rest zero. */ - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_load_si128 (__m128i const *__P) - { - return *__P; - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_loadu_si128 (__m128i const *__P) - { - return (__m128i) __builtin_ia32_loaddqu ((char const *)__P); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_loadl_epi64 (__m128i const *__P) - { - return _mm_set_epi64 ((__m64)0LL, *(__m64 *)__P); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_store_si128 (__m128i *__P, __m128i __B) - { - *__P = __B; - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storeu_si128 (__m128i *__P, __m128i __B) - { - __builtin_ia32_storedqu ((char *)__P, (__v16qi)__B); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_storel_epi64 (__m128i *__P, __m128i __B) - { - *(long long *)__P = __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_movepi64_pi64 (__m128i __B) - { - return (__m64) __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_movpi64_epi64 (__m64 __A) - { - return _mm_set_epi64 ((__m64)0LL, __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_move_epi64 (__m128i __A) - { - return _mm_set_epi64 ((__m64)0LL, _mm_movepi64_pi64 (__A)); - } - - /* Create a vector of zeros. */ --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_setzero_si128 (void) - { - return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 }; - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtepi32_pd (__m128i __A) - { - return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtepi32_ps (__m128i __A) - { - return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvtpd_epi32 (__m128d __A) - { - return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpd_pi32 (__m128d __A) - { - return (__m64)__builtin_ia32_cvtpd2pi ((__v2df) __A); - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtpd_ps (__m128d __A) - { - return (__m128)__builtin_ia32_cvtpd2ps ((__v2df) __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvttpd_epi32 (__m128d __A) - { - return (__m128i)__builtin_ia32_cvttpd2dq ((__v2df) __A); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_cvttpd_pi32 (__m128d __A) - { - return (__m64)__builtin_ia32_cvttpd2pi ((__v2df) __A); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtpi32_pd (__m64 __A) - { - return (__m128d)__builtin_ia32_cvtpi2pd ((__v2si) __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvtps_epi32 (__m128 __A) - { - return (__m128i)__builtin_ia32_cvtps2dq ((__v4sf) __A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvttps_epi32 (__m128 __A) - { - return (__m128i)__builtin_ia32_cvttps2dq ((__v4sf) __A); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtps_pd (__m128 __A) - { - return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __A); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvtsd_si32 (__m128d __A) - { - return __builtin_ia32_cvtsd2si ((__v2df) __A); -@@ -810,21 +810,21 @@ _mm_cvtsd_si32 (__m128d __A) - - #ifdef __x86_64__ - /* Intel intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtsd_si64 (__m128d __A) - { - return __builtin_ia32_cvtsd2si64 ((__v2df) __A); - } - - /* Microsoft intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvtsd_si64x (__m128d __A) - { - return __builtin_ia32_cvtsd2si64 ((__v2df) __A); - } - #endif - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_cvttsd_si32 (__m128d __A) - { - return __builtin_ia32_cvttsd2si ((__v2df) __A); -@@ -832,27 +832,27 @@ _mm_cvttsd_si32 (__m128d __A) - - #ifdef __x86_64__ - /* Intel intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvttsd_si64 (__m128d __A) - { - return __builtin_ia32_cvttsd2si64 ((__v2df) __A); - } - - /* Microsoft intrinsic. */ --static __inline long long __attribute__((__always_inline__)) -+static __inline long long __attribute__((__always_inline__, __artificial__)) - _mm_cvttsd_si64x (__m128d __A) - { - return __builtin_ia32_cvttsd2si64 ((__v2df) __A); - } - #endif - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_cvtsd_ss (__m128 __A, __m128d __B) - { - return (__m128)__builtin_ia32_cvtsd2ss ((__v4sf) __A, (__v2df) __B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi32_sd (__m128d __A, int __B) - { - return (__m128d)__builtin_ia32_cvtsi2sd ((__v2df) __A, __B); -@@ -860,21 +860,21 @@ _mm_cvtsi32_sd (__m128d __A, int __B) - - #ifdef __x86_64__ - /* Intel intrinsic. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64_sd (__m128d __A, long long __B) - { - return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B); - } - - /* Microsoft intrinsic. */ --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64x_sd (__m128d __A, long long __B) - { - return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B); - } - #endif - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_cvtss_sd (__m128d __A, __m128 __B) - { - return (__m128d)__builtin_ia32_cvtss2sd ((__v2df) __A, (__v4sf)__B); -@@ -882,242 +882,242 @@ _mm_cvtss_sd (__m128d __A, __m128 __B) - - #define _mm_shuffle_pd(__A, __B, __C) ((__m128d)__builtin_ia32_shufpd ((__v2df)__A, (__v2df)__B, (__C))) - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_pd (__m128d __A, __m128d __B) - { - return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__A, (__v2df)__B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_loadh_pd (__m128d __A, double const *__B) - { - return (__m128d)__builtin_ia32_loadhpd ((__v2df)__A, __B); - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_loadl_pd (__m128d __A, double const *__B) - { - return (__m128d)__builtin_ia32_loadlpd ((__v2df)__A, __B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_movemask_pd (__m128d __A) - { - return __builtin_ia32_movmskpd ((__v2df)__A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_packs_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_packsswb128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_packs_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_packssdw128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_packus_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_packuswb128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpckhdq128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpackhi_epi64 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpckhqdq128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpcklbw128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpcklwd128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpckldq128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_unpacklo_epi64 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_punpcklqdq128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_add_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_add_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_add_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddd128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_add_epi64 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddq128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_adds_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddsb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_adds_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddsw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_adds_epu8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddusb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_adds_epu16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_paddusw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sub_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sub_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sub_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubd128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sub_epi64 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubq128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_subs_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubsb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_subs_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubsw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_subs_epu8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubusb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_subs_epu16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psubusw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_madd_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmaddwd128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_mulhi_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmulhw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_mullo_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmullw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m64 __attribute__((__always_inline__)) -+static __inline __m64 __attribute__((__always_inline__, __artificial__)) - _mm_mul_su32 (__m64 __A, __m64 __B) - { - return (__m64)__builtin_ia32_pmuludq ((__v2si)__A, (__v2si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_mul_epu32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmuludq128 ((__v4si)__A, (__v4si)__B); - } - - #if 0 --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_slli_epi16 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psllwi128 ((__v8hi)__A, __B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_slli_epi32 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_pslldi128 ((__v4si)__A, __B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_slli_epi64 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psllqi128 ((__v2di)__A, __B); -@@ -1132,13 +1132,13 @@ _mm_slli_epi64 (__m128i __A, int __B) - #endif - - #if 0 --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srai_epi16 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psrawi128 ((__v8hi)__A, __B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srai_epi32 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psradi128 ((__v4si)__A, __B); -@@ -1151,13 +1151,13 @@ _mm_srai_epi32 (__m128i __A, int __B) - #endif - - #if 0 --static __m128i __attribute__((__always_inline__)) -+static __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srli_si128 (__m128i __A, int __B) - { - return ((__m128i)__builtin_ia32_psrldqi128 (__A, __B * 8)); - } - --static __m128i __attribute__((__always_inline__)) -+static __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srli_si128 (__m128i __A, int __B) - { - return ((__m128i)__builtin_ia32_pslldqi128 (__A, __B * 8)); -@@ -1170,19 +1170,19 @@ _mm_srli_si128 (__m128i __A, int __B) - #endif - - #if 0 --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srli_epi16 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psrlwi128 ((__v8hi)__A, __B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srli_epi32 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psrldi128 ((__v4si)__A, __B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srli_epi64 (__m128i __A, int __B) - { - return (__m128i)__builtin_ia32_psrlqi128 ((__v2di)__A, __B); -@@ -1196,140 +1196,140 @@ _mm_srli_epi64 (__m128i __A, int __B) - ((__m128i)__builtin_ia32_psrlqi128 ((__v4si)(__A), __B)) - #endif - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sll_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psllw128((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sll_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pslld128((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sll_epi64 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psllq128((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sra_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psraw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sra_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psrad128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srl_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psrlw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srl_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psrld128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_srl_epi64 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psrlq128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_and_si128 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pand128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_andnot_si128 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pandn128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_or_si128 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_por128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_xor_si128 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pxor128 ((__v2di)__A, (__v2di)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpeqb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpeqw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmpeq_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpeqd128 ((__v4si)__A, (__v4si)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__B, (__v16qi)__A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__B, (__v8hi)__A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmplt_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__B, (__v4si)__A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_epi8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cmpgt_epi32 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__A, (__v4si)__B); - } - - #if 0 --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_extract_epi16 (__m128i const __A, int const __N) - { - return __builtin_ia32_vec_ext_v8hi ((__v8hi)__A, __N); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_insert_epi16 (__m128i const __A, int const __D, int const __N) - { - return (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)__A, __D, __N); -@@ -1341,37 +1341,37 @@ _mm_insert_epi16 (__m128i const __A, int - ((__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)(A), (D), (N))) - #endif - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_max_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmaxsw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_max_epu8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmaxub128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_min_epi16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pminsw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_min_epu8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pminub128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline int __attribute__((__always_inline__)) -+static __inline int __attribute__((__always_inline__, __artificial__)) - _mm_movemask_epi8 (__m128i __A) - { - return __builtin_ia32_pmovmskb128 ((__v16qi)__A); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_mulhi_epu16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pmulhuw128 ((__v8hi)__A, (__v8hi)__B); -@@ -1381,67 +1381,67 @@ _mm_mulhi_epu16 (__m128i __A, __m128i __ - #define _mm_shufflelo_epi16(__A, __B) ((__m128i)__builtin_ia32_pshuflw ((__v8hi)__A, __B)) - #define _mm_shuffle_epi32(__A, __B) ((__m128i)__builtin_ia32_pshufd ((__v4si)__A, __B)) - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C) - { - __builtin_ia32_maskmovdqu ((__v16qi)__A, (__v16qi)__B, __C); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_avg_epu8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pavgb128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_avg_epu16 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_pavgw128 ((__v8hi)__A, (__v8hi)__B); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_sad_epu8 (__m128i __A, __m128i __B) - { - return (__m128i)__builtin_ia32_psadbw128 ((__v16qi)__A, (__v16qi)__B); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_si32 (int *__A, int __B) - { - __builtin_ia32_movnti (__A, __B); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_si128 (__m128i *__A, __m128i __B) - { - __builtin_ia32_movntdq ((__v2di *)__A, (__v2di)__B); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_stream_pd (double *__A, __m128d __B) - { - __builtin_ia32_movntpd (__A, (__v2df)__B); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_clflush (void const *__A) - { - __builtin_ia32_clflush (__A); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_lfence (void) - { - __builtin_ia32_lfence (); - } - --static __inline void __attribute__((__always_inline__)) -+static __inline void __attribute__((__always_inline__, __artificial__)) - _mm_mfence (void) - { - __builtin_ia32_mfence (); - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi32_si128 (int __A) - { - return _mm_set_epi32 (0, 0, 0, __A); -@@ -1449,14 +1449,14 @@ _mm_cvtsi32_si128 (int __A) - - #ifdef __x86_64__ - /* Intel intrinsic. */ --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64_si128 (long long __A) - { - return _mm_set_epi64x (0, __A); - } - - /* Microsoft intrinsic. */ --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_cvtsi64x_si128 (long long __A) - { - return _mm_set_epi64x (0, __A); -@@ -1465,37 +1465,37 @@ _mm_cvtsi64x_si128 (long long __A) - - /* Casts between various SP, DP, INT vector types. Note that these do no - conversion of values, they just change the type. */ --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_castpd_ps(__m128d __A) - { - return (__m128) __A; - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_castpd_si128(__m128d __A) - { - return (__m128i) __A; - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_castps_pd(__m128 __A) - { - return (__m128d) __A; - } - --static __inline __m128i __attribute__((__always_inline__)) -+static __inline __m128i __attribute__((__always_inline__, __artificial__)) - _mm_castps_si128(__m128 __A) - { - return (__m128i) __A; - } - --static __inline __m128 __attribute__((__always_inline__)) -+static __inline __m128 __attribute__((__always_inline__, __artificial__)) - _mm_castsi128_ps(__m128i __A) - { - return (__m128) __A; - } - --static __inline __m128d __attribute__((__always_inline__)) -+static __inline __m128d __attribute__((__always_inline__, __artificial__)) - _mm_castsi128_pd(__m128i __A) - { - return (__m128d) __A; diff --git a/gcc41-c++-gnu-inline-redecl.patch b/gcc41-c++-gnu-inline-redecl.patch deleted file mode 100644 index c213cef..0000000 --- a/gcc41-c++-gnu-inline-redecl.patch +++ /dev/null @@ -1,65 +0,0 @@ -2007-10-01 Alexandre Oliva - - * decl.c (duplicate_decls): Preserve linkage flags for mere - redeclarations of gnu_inline definitions. - - * g++.dg/ext/gnu-inline-global-redecl.C: New. - ---- gcc/cp/decl.c.orig 2007-09-28 00:02:33.000000000 -0300 -+++ gcc/cp/decl.c 2007-10-01 16:33:10.000000000 -0300 -@@ -1846,24 +1846,24 @@ duplicate_decls (tree newdecl, tree oldd - new_template = NULL_TREE; - if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl)) - { -- bool old_decl_gnu_inline; -+ bool new_redefines_gnu_inline = false; - -- if ((DECL_INTERFACE_KNOWN (olddecl) -- && TREE_CODE (olddecl) == FUNCTION_DECL) -- || (TREE_CODE (olddecl) == TEMPLATE_DECL -- && TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL)) -+ if (new_defines_function -+ && ((DECL_INTERFACE_KNOWN (olddecl) -+ && TREE_CODE (olddecl) == FUNCTION_DECL) -+ || (TREE_CODE (olddecl) == TEMPLATE_DECL -+ && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) -+ == FUNCTION_DECL)))) - { - tree fn = olddecl; - - if (TREE_CODE (fn) == TEMPLATE_DECL) - fn = DECL_TEMPLATE_RESULT (olddecl); - -- old_decl_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn); -+ new_redefines_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn); - } -- else -- old_decl_gnu_inline = false; - -- if (!old_decl_gnu_inline) -+ if (!new_redefines_gnu_inline) - { - DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl); - DECL_NOT_REALLY_EXTERN (newdecl) |= DECL_NOT_REALLY_EXTERN (olddecl); ---- gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C 1970-01-01 00:00:00.000000000 +0000 -+++ gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C 2007-10-01 16:45:49.000000000 -0300 -@@ -0,0 +1,19 @@ -+/* Test __attribute__((gnu_inline)). -+ -+ Check that we don't get out-of-line definitions for extern inline -+ gnu_inline functions, regardless of redeclaration. -+ -+ */ -+ -+/* { dg-do link } */ -+/* { dg-options "-O" } */ // such that static functions are optimized out -+ -+#include "gnu-inline-common.h" -+ -+decl(extern, fn) -+gnuindef(fn, 0) -+decl(extern, fn) -+ -+int main () { -+ fn (); -+} diff --git a/gcc41-c++-guard-visibility.patch b/gcc41-c++-guard-visibility.patch deleted file mode 100644 index 971100b..0000000 --- a/gcc41-c++-guard-visibility.patch +++ /dev/null @@ -1,36 +0,0 @@ -2007-09-06 Jason Merrill - - * g++.dg/ext/visibility/guard1.C: New test. - ---- gcc/testsuite/g++.dg/ext/visibility/guard1.C (revision 0) -+++ gcc/testsuite/g++.dg/ext/visibility/guard1.C (revision 128226) -@@ -0,0 +1,29 @@ -+// { dg-options "-fvisibility=hidden" } -+// { dg-require-visibility "" } -+// { dg-final { scan-not-hidden "_ZGVZN5otherclEvE4s_cd" } } -+ -+extern "C" int printf (const char *, ...); -+ -+#define DLLEXPORT __attribute__ ((visibility("default"))) -+ -+struct class_data -+{ -+ int apple; -+ class_data() { printf("non trivial ctor\n"); } -+}; -+ -+struct DLLEXPORT other -+{ -+ class_data* operator ()() -+ { -+ static class_data s_cd; -+ return &s_cd; -+ } -+}; -+ -+int main() -+{ -+ other aFoo; -+ aFoo(); -+ return 0; -+} diff --git a/gcc41-debug-fortran-array.patch b/gcc41-debug-fortran-array.patch deleted file mode 100644 index 69764cb..0000000 --- a/gcc41-debug-fortran-array.patch +++ /dev/null @@ -1,33 +0,0 @@ -2007-12-10 Jakub Jelinek - - * dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For - Fortran multi-dimensional arrays use DW_AT_ordering - DW_ORD_col_major. - ---- gcc/dwarf2out.c (revision 130741) -+++ gcc/dwarf2out.c (revision 130742) -@@ -11636,6 +11636,12 @@ gen_array_type_die (tree type, dw_die_re - add_AT_flag (array_die, DW_AT_GNU_vector, 1); - } - -+ /* For Fortran multidimensional arrays use DW_ORD_col_major ordering. */ -+ if (is_fortran () -+ && TREE_CODE (type) == ARRAY_TYPE -+ && TREE_CODE (TREE_TYPE (type)) == ARRAY_TYPE) -+ add_AT_unsigned (array_die, DW_AT_ordering, DW_ORD_col_major); -+ - #if 0 - /* We default the array ordering. SDB will probably do - the right things even if DW_AT_ordering is not present. It's not even -@@ -11787,6 +11793,11 @@ gen_descr_array_type_die (tree type, str - add_name_attribute (array_die, type_tag (type)); - equate_type_number_to_die (type, array_die); - -+ /* For Fortran multidimensional arrays use DW_ORD_col_major ordering. */ -+ if (is_fortran () -+ && info->ndimensions >= 2) -+ add_AT_unsigned (array_die, DW_AT_ordering, DW_ORD_col_major); -+ - if (info->data_location) - add_descr_info_field (array_die, DW_AT_data_location, info->data_location, - info->base_decl); diff --git a/gcc41-dsohandle.patch b/gcc41-dsohandle.patch deleted file mode 100644 index fb5a8e5..0000000 --- a/gcc41-dsohandle.patch +++ /dev/null @@ -1,22 +0,0 @@ -2006-05-12 Jakub Jelinek - - * crtstuff.c (__dso_handle): Make __dso_handle const. - ---- gcc/crtstuff.c.jj 2005-11-16 10:02:51.000000000 +0100 -+++ gcc/crtstuff.c 2006-05-12 18:28:18.000000000 +0200 -@@ -226,12 +226,12 @@ STATIC void *__JCR_LIST__[] - dynamic linker takes care of this. */ - - #ifdef HAVE_GAS_HIDDEN --extern void *__dso_handle __attribute__ ((__visibility__ ("hidden"))); -+extern void *const __dso_handle __attribute__ ((__visibility__ ("hidden"))); - #endif - #ifdef CRTSTUFFS_O --void *__dso_handle = &__dso_handle; -+void *const __dso_handle = (void *) &__dso_handle; - #else --void *__dso_handle = 0; -+void *const __dso_handle = 0; - #endif - - /* The __cxa_finalize function may not be available so we use only a diff --git a/gcc41-error-attrib.patch b/gcc41-error-attrib.patch deleted file mode 100644 index a306821..0000000 --- a/gcc41-error-attrib.patch +++ /dev/null @@ -1,295 +0,0 @@ -2007-09-23 Jakub Jelinek - - * expr.c (expand_expr_real_1) : Use get_callee_fndecl - instead of checking CALL_EXPR_FN directly to test for builtins. - If error or warning attributes are present, print - error resp. warning. - * c-common.c (handle_error_attribute): New function. - (c_common_attribute_table): Add error and warning - attributes. - * doc/extend.texi: Document error and warning attributes. - - * gcc.dg/va-arg-pack-len-1.c: Use error and warning - attributes. - * gcc.dg/va-arg-pack-len-2.c: New test. - * g++.dg/ext/va-arg-pack-len-1.C: Use error and warning - attributes. - * g++.dg/ext/va-arg-pack-len-2.C: New test. - ---- gcc/doc/extend.texi.jj 2007-09-25 15:04:15.000000000 +0200 -+++ gcc/doc/extend.texi 2007-09-25 15:32:22.000000000 +0200 -@@ -1589,8 +1589,8 @@ attributes are currently defined for fun - @code{section}, @code{constructor}, @code{destructor}, @code{used}, - @code{unused}, @code{deprecated}, @code{weak}, @code{malloc}, - @code{alias}, @code{warn_unused_result}, @code{nonnull}, --@code{gnu_inline}, @code{externally_visible} and @code{artificial}. --Several other -+@code{gnu_inline}, @code{externally_visible}, @code{artificial}, -+@code{error} and @code{warning}. Several other - attributes are defined for functions on particular target systems. Other - attributes, including @code{section} are supported for variables declarations - (@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}). -@@ -1688,6 +1688,30 @@ Whether the function itself is considere - the current inlining parameters. The @code{flatten} attribute only works - reliably in unit-at-a-time mode. - -+@item error ("@var{message}") -+@cindex @code{error} function attribute -+If this attribute is used on a function declaration and a call to such a function -+is not eliminated through dead code elimination or other optimizations, an error -+which will include @var{message} will be diagnosed. This is useful -+for compile time checking, especially together with @code{__builtin_constant_p} -+and inline functions where checking the inline function arguments is not -+possible through @code{extern char [(condition) ? 1 : -1];} tricks. -+While it is possible to leave the function undefined and thus invoke -+a link failure, when using this attribute the problem will be diagnosed -+earlier and with exact location of the call even in presence of inline -+functions or when not emitting debugging information. -+ -+@item warning ("@var{message}") -+@cindex @code{warning} function attribute -+If this attribute is used on a function declaration and a call to such a function -+is not eliminated through dead code elimination or other optimizations, a warning -+which will include @var{message} will be diagnosed. This is useful -+for compile time checking, especially together with @code{__builtin_constant_p} -+and inline functions. While it is possible to define the function with -+a message in @code{.gnu.warning*} section, when using this attribute the problem -+will be diagnosed earlier and with exact location of the call even in presence -+of inline functions or when not emitting debugging information. -+ - @item cdecl - @cindex functions that do pop the argument stack on the 386 - @opindex mrtd ---- gcc/expr.c.jj 2007-09-25 14:58:40.000000000 +0200 -+++ gcc/expr.c 2007-09-25 15:19:15.000000000 +0200 -@@ -7513,19 +7513,31 @@ expand_expr_real_1 (tree exp, rtx target - inlining. */ - if (CALL_EXPR_VA_ARG_PACK (exp)) - error ("invalid use of %<__builtin_va_arg_pack ()%>"); -- /* Check for a built-in function. */ -- if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR -- && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)) -- == FUNCTION_DECL) -- && DECL_BUILT_IN (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))) -- { -- if (DECL_BUILT_IN_CLASS (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)) -- == BUILT_IN_FRONTEND) -- return lang_hooks.expand_expr (exp, original_target, -- tmode, modifier, -- alt_rtl); -- else -- return expand_builtin (exp, target, subtarget, tmode, ignore); -+ { -+ tree fndecl = get_callee_fndecl (exp), attr; -+ -+ if (fndecl -+ && (attr = lookup_attribute ("error", -+ DECL_ATTRIBUTES (fndecl))) != NULL) -+ error ("call to %qs declared with attribute error: %s", -+ lang_hooks.decl_printable_name (fndecl, 1), -+ TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); -+ if (fndecl -+ && (attr = lookup_attribute ("warning", -+ DECL_ATTRIBUTES (fndecl))) != NULL) -+ warning (0, "call to %qs declared with attribute warning: %s", -+ lang_hooks.decl_printable_name (fndecl, 1), -+ TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); -+ -+ /* Check for a built-in function. */ -+ if (fndecl && DECL_BUILT_IN (fndecl)) -+ { -+ if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_FRONTEND) -+ return lang_hooks.expand_expr (exp, original_target, -+ tmode, modifier, alt_rtl); -+ else -+ return expand_builtin (exp, target, subtarget, tmode, ignore); -+ } - } - - return expand_call (exp, target, ignore); ---- gcc/c-common.c.jj 2007-09-25 15:01:49.000000000 +0200 -+++ gcc/c-common.c 2007-09-25 15:24:34.000000000 +0200 -@@ -508,6 +508,7 @@ static tree handle_always_inline_attribu - static tree handle_gnu_inline_attribute (tree *, tree, tree, int, bool *); - static tree handle_artificial_attribute (tree *, tree, tree, int, bool *); - static tree handle_flatten_attribute (tree *, tree, tree, int, bool *); -+static tree handle_error_attribute (tree *, tree, tree, int, bool *); - static tree handle_used_attribute (tree *, tree, tree, int, bool *); - static tree handle_unused_attribute (tree *, tree, tree, int, bool *); - static tree handle_externally_visible_attribute (tree *, tree, tree, int, -@@ -641,6 +642,10 @@ const struct attribute_spec c_common_att - handle_warn_unused_result_attribute }, - { "sentinel", 0, 1, false, true, true, - handle_sentinel_attribute }, -+ { "warning", 1, 1, true, false, false, -+ handle_error_attribute }, -+ { "error", 1, 1, true, false, false, -+ handle_error_attribute }, - { NULL, 0, 0, false, false, false, NULL } - }; - -@@ -4226,6 +4231,26 @@ handle_flatten_attribute (tree *node, tr - return NULL_TREE; - } - -+/* Handle a "warning" or "error" attribute; arguments as in -+ struct attribute_spec.handler. */ -+ -+static tree -+handle_error_attribute (tree *node, tree name, tree args, -+ int ARG_UNUSED (flags), bool *no_add_attrs) -+{ -+ if (TREE_CODE (*node) == FUNCTION_DECL -+ || TREE_CODE (TREE_VALUE (args)) == STRING_CST) -+ /* Do nothing else, just set the attribute. We'll get at -+ it later with lookup_attribute. */ -+ ; -+ else -+ { -+ warning (OPT_Wattributes, "%qE attribute ignored", name); -+ *no_add_attrs = true; -+ } -+ -+ return NULL_TREE; -+} - - /* Handle a "used" attribute; arguments as in - struct attribute_spec.handler. */ ---- gcc/testsuite/gcc.dg/va-arg-pack-len-1.c.jj 2007-09-25 12:23:05.000000000 +0200 -+++ gcc/testsuite/gcc.dg/va-arg-pack-len-1.c 2007-09-25 15:16:03.000000000 +0200 -@@ -3,8 +3,10 @@ - - #include - --extern int warn_open_missing_mode (void); --extern int warn_open_too_many_arguments (void); -+extern int error_open_missing_mode (void) -+ __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given"))); -+extern int warn_open_too_many_arguments (void) -+ __attribute__((__warning__ ("open called with more than 3 arguments"))); - extern void abort (void); - - char expected_char; -@@ -83,7 +85,7 @@ myopen (const char *path, int oflag, ... - { - if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1) - { -- warn_open_missing_mode (); -+ error_open_missing_mode (); - return myopen2 (path, oflag); - } - return myopenva (path, oflag, __builtin_va_arg_pack ()); ---- gcc/testsuite/gcc.dg/va-arg-pack-len-2.c.jj 2007-09-25 15:16:03.000000000 +0200 -+++ gcc/testsuite/gcc.dg/va-arg-pack-len-2.c 2007-09-25 15:16:03.000000000 +0200 -@@ -0,0 +1,42 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O2" } */ -+ -+#include -+ -+extern int error_open_missing_mode (void) -+ __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given"))); -+extern int warn_open_too_many_arguments (void) -+ __attribute__((__warning__ ("open called with more than 3 arguments"))); -+ -+extern int myopen2 (const char *path, int oflag); -+extern int myopenva (const char *path, int oflag, ...); -+ -+extern inline __attribute__((always_inline, gnu_inline)) int -+myopen (const char *path, int oflag, ...) -+{ -+ if (__builtin_va_arg_pack_len () > 1) -+ warn_open_too_many_arguments (); /* { dg-warning "called with more than 3" } */ -+ -+ if (__builtin_constant_p (oflag)) -+ { -+ if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1) -+ { -+ error_open_missing_mode (); /* { dg-error "needs 3 arguments, only 2 were given" } */ -+ return myopen2 (path, oflag); -+ } -+ return myopenva (path, oflag, __builtin_va_arg_pack ()); -+ } -+ -+ if (__builtin_va_arg_pack_len () < 1) -+ return myopen2 (path, oflag); -+ -+ return myopenva (path, oflag, __builtin_va_arg_pack ()); -+} -+ -+int -+main (void) -+{ -+ myopen ("h", 0x43); -+ myopen ("i", 0x43, 0644, 0655); -+ return 0; -+} ---- gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C.jj 2007-09-25 12:23:05.000000000 +0200 -+++ gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C 2007-09-25 15:16:03.000000000 +0200 -@@ -3,8 +3,10 @@ - - #include - --extern "C" int warn_open_missing_mode (void); --extern "C" int warn_open_too_many_arguments (void); -+extern "C" int error_open_missing_mode (void) -+ __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given"))); -+extern "C" int warn_open_too_many_arguments (void) -+ __attribute__((__warning__ ("open called with more than 3 arguments"))); - extern "C" void abort (void); - - char expected_char; -@@ -83,7 +85,7 @@ myopen (const char *path, int oflag, ... - { - if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1) - { -- warn_open_missing_mode (); -+ error_open_missing_mode (); - return myopen2 (path, oflag); - } - return myopenva (path, oflag, __builtin_va_arg_pack ()); ---- gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C.jj 2007-09-25 15:16:03.000000000 +0200 -+++ gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C 2007-09-25 15:16:03.000000000 +0200 -@@ -0,0 +1,42 @@ -+// { dg-do compile } -+// { dg-options "-O2" } -+ -+#include -+ -+extern int error_open_missing_mode (void) -+ __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given"))); -+extern int warn_open_too_many_arguments (void) -+ __attribute__((__warning__ ("open called with more than 3 arguments"))); -+ -+extern int myopen2 (const char *path, int oflag); -+extern int myopenva (const char *path, int oflag, ...); -+ -+extern inline __attribute__((always_inline, gnu_inline)) int -+myopen (const char *path, int oflag, ...) -+{ -+ if (__builtin_va_arg_pack_len () > 1) -+ warn_open_too_many_arguments (); // { dg-warning "called with more than 3" } -+ -+ if (__builtin_constant_p (oflag)) -+ { -+ if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1) -+ { -+ error_open_missing_mode (); // { dg-error "needs 3 arguments, only 2 were given" } -+ return myopen2 (path, oflag); -+ } -+ return myopenva (path, oflag, __builtin_va_arg_pack ()); -+ } -+ -+ if (__builtin_va_arg_pack_len () < 1) -+ return myopen2 (path, oflag); -+ -+ return myopenva (path, oflag, __builtin_va_arg_pack ()); -+} -+ -+int -+main (void) -+{ -+ myopen ("h", 0x43); -+ myopen ("i", 0x43, 0644, 0655); -+ return 0; -+} diff --git a/gcc41-gnuc-rh-release.patch b/gcc41-gnuc-rh-release.patch deleted file mode 100644 index a755c48..0000000 --- a/gcc41-gnuc-rh-release.patch +++ /dev/null @@ -1,50 +0,0 @@ -2004-10-19 Jakub Jelinek - - * c-cppbuiltin.c (define__GNUC__): Also define __GNUC_RH_RELEASE__. - ---- gcc/c-cppbuiltin.c.jj 2004-10-07 21:27:38.000000000 +0200 -+++ gcc/c-cppbuiltin.c 2004-10-19 11:41:50.000000000 +0200 -@@ -257,13 +257,13 @@ define__GNUC__ (void) - { - /* The format of the version string, enforced below, is - ([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)? */ -- const char *q, *v = version_string; -+ const char *q, *v = version_string, *vstart, *vend; - - while (*v && !ISDIGIT (*v)) - v++; - gcc_assert (*v && (v <= version_string || v[-1] == '-')); - -- q = v; -+ vstart = q = v; - while (ISDIGIT (*v)) - v++; - builtin_define_with_value_n ("__GNUC__", q, v - q); -@@ -289,6 +289,27 @@ define__GNUC__ (void) - builtin_define_with_value_n ("__GNUC_PATCHLEVEL__", "0", 1); - - gcc_assert (!*v || *v == ' ' || *v == '-'); -+ -+ vend = v; -+ v = strchr (v, '('); -+ if (v != NULL && strncmp (v + 1, "Red Hat ", 8) == 0) -+ { -+ v += 9; -+ if (strncmp (v, "Linux ", 6) == 0) -+ v += 6; -+ -+ gcc_assert (strncmp (v, vstart, vend - vstart) == 0); -+ gcc_assert (v[vend - vstart] == '-'); -+ -+ v += vend - vstart + 1; -+ q = v; -+ gcc_assert (ISDIGIT (*v)); -+ while (ISDIGIT (*v)) -+ v++; -+ builtin_define_with_value_n ("__GNUC_RH_RELEASE__", q, v - q); -+ -+ gcc_assert (!*v || *v == ')' || *v == '.'); -+ } - } - - /* Define macros used by . Currently only defines limits diff --git a/gcc41-hash-style-gnu.patch b/gcc41-hash-style-gnu.patch deleted file mode 100644 index 54afa16..0000000 --- a/gcc41-hash-style-gnu.patch +++ /dev/null @@ -1,136 +0,0 @@ -2006-07-11 Jakub Jelinek - - * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. - * config/i386/linux64.h (LINK_SPEC): Likewise. - * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. - * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, - LINK_OS_LINUX_SPEC64): Likewise. - * config/s390/linux.h (LINK_SPEC): Likewise. - * config/ia64/linux.h (LINK_SPEC): Likewise. - * config/sparc/linux.h (LINK_SPEC): Likewise. - * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, - LINK_ARCH64_SPEC): Likewise. - * config/alpha/linux-elf.h (LINK_SPEC): Likewise. - ---- gcc/config/rs6000/sysv4.h.jj 2006-07-11 10:54:00.000000000 +0200 -+++ gcc/config/rs6000/sysv4.h 2006-07-11 12:51:39.000000000 +0200 -@@ -1039,7 +1039,7 @@ extern int fixuplabelno; - - #define LINK_START_LINUX_SPEC "" - --#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - ---- gcc/config/rs6000/linux64.h.jj 2006-07-11 10:54:00.000000000 +0200 -+++ gcc/config/rs6000/linux64.h 2006-07-11 12:52:14.000000000 +0200 -@@ -337,11 +337,11 @@ extern int dot_symbols; - #undef LINK_OS_DEFAULT_SPEC - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" - --#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - --#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=gnu %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}" - ---- gcc/config/alpha/linux-elf.h.jj 2006-07-11 10:54:01.000000000 +0200 -+++ gcc/config/alpha/linux-elf.h 2006-07-11 12:53:48.000000000 +0200 -@@ -29,7 +29,7 @@ Boston, MA 02110-1301, USA. */ - - #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" - --#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ -+#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ - %{shared:-shared} \ - %{!shared: \ ---- gcc/config/s390/linux.h.jj 2006-07-11 10:54:02.000000000 +0200 -+++ gcc/config/s390/linux.h 2006-07-11 12:52:39.000000000 +0200 -@@ -79,7 +79,7 @@ Software Foundation, 51 Franklin Street, - - #undef LINK_SPEC - #define LINK_SPEC \ -- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ - %{shared:-shared} \ - %{!shared: \ - %{static:-static} \ ---- gcc/config/sparc/linux.h.jj 2006-07-11 10:54:03.000000000 +0200 -+++ gcc/config/sparc/linux.h 2006-07-11 12:54:16.000000000 +0200 -@@ -127,7 +127,7 @@ Boston, MA 02110-1301, USA. */ - /* If ELF is the default format, we should not use /lib/elf. */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ ---- gcc/config/sparc/linux64.h.jj 2006-07-11 10:54:03.000000000 +0200 -+++ gcc/config/sparc/linux64.h 2006-07-11 12:55:10.000000000 +0200 -@@ -157,7 +157,7 @@ Boston, MA 02110-1301, USA. */ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - --#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ -@@ -166,7 +166,7 @@ Boston, MA 02110-1301, USA. */ - %{static:-static}}} \ - " - --#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ -@@ -247,7 +247,7 @@ Boston, MA 02110-1301, USA. */ - #else /* !SPARC_BI_ARCH */ - - #undef LINK_SPEC --#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ -+#define LINK_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ ---- gcc/config/i386/linux.h.jj 2006-07-11 10:54:05.000000000 +0200 -+++ gcc/config/i386/linux.h 2006-07-11 12:44:45.000000000 +0200 -@@ -113,7 +113,7 @@ Boston, MA 02110-1301, USA. */ - { "dynamic_linker", DYNAMIC_LINKER } - - #undef LINK_SPEC --#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ -+#define LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ ---- gcc/config/i386/linux64.h.jj 2006-07-11 10:54:04.000000000 +0200 -+++ gcc/config/i386/linux64.h 2006-07-11 12:45:02.000000000 +0200 -@@ -55,7 +55,7 @@ Boston, MA 02110-1301, USA. */ - done. */ - - #undef LINK_SPEC --#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ -+#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=gnu \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ ---- gcc/config/ia64/linux.h.jj 2006-07-11 10:54:06.000000000 +0200 -+++ gcc/config/ia64/linux.h 2006-07-11 12:48:19.000000000 +0200 -@@ -40,7 +40,7 @@ do { \ - linux.h file. */ - - #undef LINK_SPEC --#define LINK_SPEC "\ -+#define LINK_SPEC "--hash-style=gnu \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ diff --git a/gcc41-ice-hack.patch b/gcc41-ice-hack.patch deleted file mode 100644 index 00b5362..0000000 --- a/gcc41-ice-hack.patch +++ /dev/null @@ -1,316 +0,0 @@ -2004-01-23 Jakub Jelinek - - * system.h (ICE_EXIT_CODE): Define. - * gcc.c (execute): Don't free first string early, but at the end - of the function. Call retry_ice if compiler exited with - ICE_EXIT_CODE. - (retry_ice): New function. - * diagnostic.c (diagnostic_count_diagnostic, - diagnostic_action_after_output, error_recursion): Exit with - ICE_EXIT_CODE instead of FATAL_EXIT_CODE. - ---- gcc/system.h.jj 2004-01-19 17:29:30.000000000 +0100 -+++ gcc/system.h 2004-01-21 11:53:41.000000000 +0100 -@@ -153,6 +153,10 @@ extern int errno; - # endif - #endif - -+#ifndef ICE_EXIT_CODE -+# define ICE_EXIT_CODE 27 -+#endif -+ - #ifdef HAVE_UNISTD_H - # include - #endif ---- gcc/gcc.c.jj 2004-01-21 11:45:20.000000000 +0100 -+++ gcc/gcc.c 2004-01-21 11:56:46.000000000 +0100 -@@ -346,6 +346,9 @@ static void init_gcc_specs (struct obsta - #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX) - static const char *convert_filename (const char *, int, int); - #endif -+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) -+static void retry_ice (const char *prog, const char **argv); -+#endif - - static const char *if_exists_spec_function (int, const char **); - static const char *if_exists_else_spec_function (int, const char **); -@@ -2841,7 +2844,7 @@ execute (void) - } - } - -- if (string != commands[i].prog) -+ if (i && string != commands[i].prog) - free ((void *) string); - } - -@@ -2897,6 +2900,16 @@ See %s for instructions.", - else if (WIFEXITED (status) - && WEXITSTATUS (status) >= MIN_FATAL_STATUS) - { -+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) -+ /* For ICEs in cc1, cc1obj, cc1plus see if it is -+ reproducible or not. */ -+ char *p; -+ if (WEXITSTATUS (status) == ICE_EXIT_CODE -+ && i == 0 -+ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) -+ && ! strncmp (p + 1, "cc1", 3)) -+ retry_ice (commands[0].prog, commands[0].argv); -+#endif - if (WEXITSTATUS (status) > greatest_status) - greatest_status = WEXITSTATUS (status); - ret_code = -1; -@@ -2917,6 +2930,9 @@ See %s for instructions.", - } - } - -+ if (commands[0].argv[0] != commands[0].prog) -+ free ((PTR) commands[0].argv[0]); -+ - return ret_code; - } - } -@@ -5898,6 +5914,224 @@ give_switch (int switchnum, int omit_fir - switches[switchnum].validated = 1; - } - -+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) -+#define RETRY_ICE_ATTEMPTS 2 -+ -+static void -+retry_ice (const char *prog, const char **argv) -+{ -+ int nargs, out_arg = -1, quiet = 0, attempt; -+ int pid, retries, sleep_interval; -+ const char **new_argv; -+ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2]; -+ -+ if (input_filename == NULL || ! strcmp (input_filename, "-")) -+ return; -+ -+ for (nargs = 0; argv[nargs] != NULL; ++nargs) -+ /* Only retry compiler ICEs, not preprocessor ones. */ -+ if (! strcmp (argv[nargs], "-E")) -+ return; -+ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o') -+ { -+ if (out_arg == -1) -+ out_arg = nargs; -+ else -+ return; -+ } -+ /* If the compiler is going to output any time information, -+ it might varry between invocations. */ -+ else if (! strcmp (argv[nargs], "-quiet")) -+ quiet = 1; -+ else if (! strcmp (argv[nargs], "-ftime-report")) -+ return; -+ -+ if (out_arg == -1 || !quiet) -+ return; -+ -+ memset (temp_filenames, '\0', sizeof (temp_filenames)); -+ new_argv = alloca ((nargs + 3) * sizeof (const char *)); -+ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *)); -+ new_argv[nargs++] = "-frandom-seed=0"; -+ new_argv[nargs] = NULL; -+ if (new_argv[out_arg][2] == '\0') -+ new_argv[out_arg + 1] = "-"; -+ else -+ new_argv[out_arg] = "-o-"; -+ -+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt) -+ { -+ int fd = -1; -+ int status; -+ -+ temp_filenames[attempt * 2] = make_temp_file (".out"); -+ temp_filenames[attempt * 2 + 1] = make_temp_file (".err"); -+ -+ if (attempt == RETRY_ICE_ATTEMPTS) -+ { -+ int i; -+ int fd1, fd2; -+ struct stat st1, st2; -+ size_t n, len; -+ char *buf; -+ -+ buf = xmalloc (8192); -+ -+ for (i = 0; i < 2; ++i) -+ { -+ fd1 = open (temp_filenames[i], O_RDONLY); -+ fd2 = open (temp_filenames[2 + i], O_RDONLY); -+ -+ if (fd1 < 0 || fd2 < 0) -+ { -+ i = -1; -+ close (fd1); -+ close (fd2); -+ break; -+ } -+ -+ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0) -+ { -+ i = -1; -+ close (fd1); -+ close (fd2); -+ break; -+ } -+ -+ if (st1.st_size != st2.st_size) -+ { -+ close (fd1); -+ close (fd2); -+ break; -+ } -+ -+ len = 0; -+ for (n = st1.st_size; n; n -= len) -+ { -+ len = n; -+ if (len > 4096) -+ len = 4096; -+ -+ if (read (fd1, buf, len) != (int) len -+ || read (fd2, buf + 4096, len) != (int) len) -+ { -+ i = -1; -+ break; -+ } -+ -+ if (memcmp (buf, buf + 4096, len) != 0) -+ break; -+ } -+ -+ close (fd1); -+ close (fd2); -+ -+ if (n) -+ break; -+ } -+ -+ free (buf); -+ if (i == -1) -+ break; -+ -+ if (i != 2) -+ { -+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n"); -+ break; -+ } -+ -+ fd = open (temp_filenames[attempt * 2], O_RDWR); -+ if (fd < 0) -+ break; -+ write (fd, "//", 2); -+ for (i = 0; i < nargs; i++) -+ { -+ write (fd, " ", 1); -+ write (fd, new_argv[i], strlen (new_argv[i])); -+ } -+ write (fd, "\n", 1); -+ new_argv[nargs] = "-E"; -+ new_argv[nargs + 1] = NULL; -+ } -+ -+ /* Fork a subprocess; wait and retry if it fails. */ -+ sleep_interval = 1; -+ pid = -1; -+ for (retries = 0; retries < 4; retries++) -+ { -+ pid = fork (); -+ if (pid >= 0) -+ break; -+ sleep (sleep_interval); -+ sleep_interval *= 2; -+ } -+ -+ if (pid < 0) -+ break; -+ else if (pid == 0) -+ { -+ if (attempt != RETRY_ICE_ATTEMPTS) -+ fd = open (temp_filenames[attempt * 2], O_RDWR); -+ if (fd < 0) -+ exit (-1); -+ if (fd != 1) -+ { -+ close (1); -+ dup (fd); -+ close (fd); -+ } -+ -+ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR); -+ if (fd < 0) -+ exit (-1); -+ if (fd != 2) -+ { -+ close (2); -+ dup (fd); -+ close (fd); -+ } -+ -+ if (prog == new_argv[0]) -+ execvp (prog, (char *const *) new_argv); -+ else -+ execv (new_argv[0], (char *const *) new_argv); -+ exit (-1); -+ } -+ -+ if (waitpid (pid, &status, 0) < 0) -+ break; -+ -+ if (attempt < RETRY_ICE_ATTEMPTS -+ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE)) -+ { -+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n"); -+ break; -+ } -+ else if (attempt == RETRY_ICE_ATTEMPTS) -+ { -+ close (fd); -+ if (WIFEXITED (status) -+ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE) -+ { -+ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n", -+ temp_filenames[attempt * 2]); -+ /* Make sure it is not deleted. */ -+ free (temp_filenames[attempt * 2]); -+ temp_filenames[attempt * 2] = NULL; -+ break; -+ } -+ } -+ } -+ -+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++) -+ if (temp_filenames[attempt]) -+ { -+ unlink (temp_filenames[attempt]); -+ free (temp_filenames[attempt]); -+ } -+} -+#endif -+ - /* Search for a file named NAME trying various prefixes including the - user's -B prefix and some standard ones. - Return the absolute file name found. If nothing is found, return NAME. */ ---- gcc/diagnostic.c.jj 2003-10-01 12:09:21.000000000 +0200 -+++ gcc/diagnostic.c 2004-01-21 11:54:47.000000000 +0100 -@@ -237,14 +237,14 @@ diagnostic_action_after_output (diagnost - fnotice (stderr, "Please submit a full bug report,\n" - "with preprocessed source if appropriate.\n" - "See %s for instructions.\n", bug_report_url); -- exit (FATAL_EXIT_CODE); -+ exit (ICE_EXIT_CODE); - - case DK_FATAL: - if (context->abort_on_error) - real_abort (); - - fnotice (stderr, "compilation terminated.\n"); -- exit (FATAL_EXIT_CODE); -+ exit (ICE_EXIT_CODE); - - default: - gcc_unreachable (); diff --git a/gcc41-java-arm1.patch b/gcc41-java-arm1.patch deleted file mode 100644 index 54858eb..0000000 --- a/gcc41-java-arm1.patch +++ /dev/null @@ -1,957 +0,0 @@ -2007-05-18 Aurelien Jarno - - * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted - from (ffi_prep_closure): ... this. - (FFI_INIT_TRAMPOLINE): Adjust. - -2005-12-31 Phil Blundell - - * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, - ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. - * src/arm/sysv.S(ffi_closure_SYSV): Likewise. - * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. - (FFI_CLOSURES): Enable closure support. - -2007-07-03 Andrew Haley - - * testsuite/libffi.call/cls_multi_ushort.c, - testsuite/libffi.call/cls_align_uint16.c, - testsuite/libffi.call/nested_struct1.c, - testsuite/libffi.call/nested_struct3.c, - testsuite/libffi.call/cls_7_1_byte.c, - testsuite/libffi.call/cls_double.c, - testsuite/libffi.call/cls_sint.c, - testsuite/libffi.call/cls_20byte1.c, - testsuite/libffi.call/cls_multi_sshortchar.c, - testsuite/libffi.call/cls_align_sint64.c, - testsuite/libffi.call/cls_3byte2.c, - testsuite/libffi.call/cls_multi_schar.c, - testsuite/libffi.call/cls_multi_uchar.c, - testsuite/libffi.call/cls_19byte.c, - testsuite/libffi.call/cls_9byte1.c, - testsuite/libffi.call/cls_align_float.c, - testsuite/libffi.call/closure_fn1.c, - testsuite/libffi.call/problem1.c, - testsuite/libffi.call/closure_fn3.c, - testsuite/libffi.call/cls_sshort.c, - testsuite/libffi.call/closure_fn5.c, - testsuite/libffi.call/cls_align_double.c, - testsuite/libffi.call/cls_2byte.c, - testsuite/libffi.call/nested_struct.c, - testsuite/libffi.call/cls_4byte.c, - testsuite/libffi.call/cls_6byte.c, - testsuite/libffi.call/cls_8byte.c, - testsuite/libffi.call/cls_multi_sshort.c, - testsuite/libffi.call/cls_align_uint32.c, - testsuite/libffi.call/cls_align_sint16.c, - testsuite/libffi.call/cls_float.c, - testsuite/libffi.call/cls_20byte.c, - testsuite/libffi.call/cls_5_1_byte.c, - testsuite/libffi.call/nested_struct2.c, - testsuite/libffi.call/cls_24byte.c, - testsuite/libffi.call/cls_64byte.c, - testsuite/libffi.call/cls_uint.c, - testsuite/libffi.call/cls_multi_ushortchar.c, - testsuite/libffi.call/cls_schar.c, - testsuite/libffi.call/cls_uchar.c, - testsuite/libffi.call/cls_align_uint64.c, - testsuite/libffi.call/cls_ulonglong.c, - testsuite/libffi.call/cls_align_longdouble.c, - testsuite/libffi.call/cls_1_1byte.c, - testsuite/libffi.call/cls_12byte.c, - testsuite/libffi.call/cls_3_1byte.c, - testsuite/libffi.call/cls_3byte1.c, - testsuite/libffi.call/cls_4_1byte.c, - testsuite/libffi.call/cls_6_1_byte.c, - testsuite/libffi.call/cls_16byte.c, - testsuite/libffi.call/cls_18byte.c, - testsuite/libffi.call/closure_fn0.c, - testsuite/libffi.call/cls_9byte2.c, - testsuite/libffi.call/closure_fn2.c, - testsuite/libffi.call/closure_fn4.c, - testsuite/libffi.call/cls_ushort.c, - testsuite/libffi.call/closure_fn6.c, - testsuite/libffi.call/cls_5byte.c, - testsuite/libffi.call/cls_align_pointer.c, - testsuite/libffi.call/cls_7byte.c, - testsuite/libffi.call/cls_align_sint32.c, - testsuite/libffi.special/unwindtest.cc: Enable for ARM. - ---- libffi/src/arm/ffitarget.h.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/src/arm/ffitarget.h 2007-09-06 14:07:30.000000000 +0200 -@@ -40,7 +40,8 @@ typedef enum ffi_abi { - - /* ---- Definitions for closures ----------------------------------------- */ - --#define FFI_CLOSURES 0 -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 20 - #define FFI_NATIVE_RAW_API 0 - - #endif ---- libffi/src/arm/ffi.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/src/arm/ffi.c 2007-09-06 14:07:30.000000000 +0200 -@@ -168,3 +168,122 @@ void ffi_call(ffi_cif *cif, void (*fn)() - break; - } - } -+ -+/** private members **/ -+ -+static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, -+ void** args, ffi_cif* cif); -+ -+void ffi_closure_SYSV (ffi_closure *); -+ -+/* This function is jumped to by the trampoline */ -+ -+unsigned int -+ffi_closure_SYSV_inner (closure, respp, args) -+ ffi_closure *closure; -+ void **respp; -+ void *args; -+{ -+ // our various things... -+ ffi_cif *cif; -+ void **arg_area; -+ -+ cif = closure->cif; -+ arg_area = (void**) alloca (cif->nargs * sizeof (void*)); -+ -+ /* this call will initialize ARG_AREA, such that each -+ * element in that array points to the corresponding -+ * value on the stack; and if the function returns -+ * a structure, it will re-set RESP to point to the -+ * structure return address. */ -+ -+ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); -+ -+ (closure->fun) (cif, *respp, arg_area, closure->user_data); -+ -+ return cif->flags; -+} -+ -+/*@-exportheader@*/ -+static void -+ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, -+ void **avalue, ffi_cif *cif) -+/*@=exportheader@*/ -+{ -+ register unsigned int i; -+ register void **p_argv; -+ register char *argp; -+ register ffi_type **p_arg; -+ -+ argp = stack; -+ -+ if ( cif->flags == FFI_TYPE_STRUCT ) { -+ *rvalue = *(void **) argp; -+ argp += 4; -+ } -+ -+ p_argv = avalue; -+ -+ for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) -+ { -+ size_t z; -+ -+ /* Align if necessary */ -+ if ((sizeof(int) - 1) & (unsigned) argp) { -+ argp = (char *) ALIGN(argp, sizeof(int)); -+ } -+ -+ z = (*p_arg)->size; -+ -+ /* because we're little endian, this is what it turns into. */ -+ -+ *p_argv = (void*) argp; -+ -+ p_argv++; -+ argp += z; -+ } -+ -+ return; -+} -+ -+/* How to make a trampoline. */ -+ -+#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ -+({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ -+ unsigned int __fun = (unsigned int)(FUN); \ -+ unsigned int __ctx = (unsigned int)(CTX); \ -+ *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */ \ -+ *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \ -+ *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \ -+ *(unsigned int*) &__tramp[12] = __ctx; \ -+ *(unsigned int*) &__tramp[16] = __fun; \ -+ register unsigned long _beg __asm ("a1") = (unsigned long) (&__tramp[0]); \ -+ register unsigned long _end __asm ("a2") = (unsigned long) (&__tramp[19]); \ -+ register unsigned long _flg __asm ("a3") = 0; \ -+ __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \ -+ : "=r" (_beg) \ -+ : "0" (_beg), "r" (_end), "r" (_flg)); \ -+ }) -+ -+ -+/* the cif must already be prep'ed */ -+ -+ffi_status -+ffi_prep_closure_loc (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*,void*,void**,void*), -+ void *user_data, -+ void *codeloc) -+{ -+ FFI_ASSERT (cif->abi == FFI_SYSV); -+ -+ FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ -+ &ffi_closure_SYSV, \ -+ codeloc); -+ -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; -+ -+ return FFI_OK; -+} ---- libffi/src/arm/sysv.S.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/src/arm/sysv.S 2007-09-06 14:08:26.000000000 +0200 -@@ -207,6 +207,54 @@ LSYM(Lepilogue): - .ffi_call_SYSV_end: - .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) - -+/* -+ unsigned int FFI_HIDDEN -+ ffi_closure_SYSV_inner (closure, respp, args) -+ ffi_closure *closure; -+ void **respp; -+ void *args; -+*/ -+ -+ARM_FUNC_START ffi_closure_SYSV -+ add ip, sp, #16 -+ stmfd sp!, {ip, lr} -+ add r2, sp, #8 -+ sub sp, sp, #16 -+ str sp, [sp, #8] -+ add r1, sp, #8 -+ bl ffi_closure_SYSV_inner -+ cmp r0, #FFI_TYPE_INT -+ beq .Lretint -+ cmp r0, #FFI_TYPE_FLOAT -+ beq .Lretfloat -+ cmp r0, #FFI_TYPE_DOUBLE -+ beq .Lretdouble -+ cmp r0, #FFI_TYPE_LONGDOUBLE -+ beq .Lretlongdouble -+ cmp r0, #FFI_TYPE_SINT64 -+ beq .Lretlonglong -+.Lclosure_epilogue: -+ add sp, sp, #16 -+ ldmfd sp, {sp, pc} -+.Lretint: -+ ldr r0, [sp] -+ b .Lclosure_epilogue -+.Lretlonglong: -+ ldr r0, [sp] -+ ldr r1, [sp, #4] -+ b .Lclosure_epilogue -+.Lretfloat: -+ ldfs f0, [sp] -+ b .Lclosure_epilogue -+.Lretdouble: -+ ldfd f0, [sp] -+ b .Lclosure_epilogue -+.Lretlongdouble: -+ ldfd f0, [sp] -+ b .Lclosure_epilogue -+.ffi_closure_SYSV_end: -+ .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) -+ - #if defined __ELF__ && defined __linux__ - .section .note.GNU-stack,"",@progbits - #endif ---- libffi/testsuite/libffi.call/cls_multi_ushort.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_multi_ushort.c 2007-09-06 14:07:30.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: PR13221. - Originator: 20031129 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - unsigned short test_func_fn(unsigned short a1, unsigned short a2) ---- libffi/testsuite/libffi.call/cls_align_uint16.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_uint16.c 2007-09-06 14:07:30.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/nested_struct1.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/nested_struct1.c 2007-09-06 14:07:30.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_16byte1 { ---- libffi/testsuite/libffi.call/nested_struct3.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/nested_struct3.c 2007-09-06 14:07:30.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030911 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct A { ---- libffi/testsuite/libffi.call/cls_7_1_byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_7_1_byte.c 2007-09-06 14:07:30.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20050708 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_7byte { ---- libffi/testsuite/libffi.call/cls_double.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_double.c 2007-09-06 14:07:30.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_double_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_sint.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_sint.c 2007-09-06 14:07:33.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031108 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_sint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_20byte1.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_20byte1.c 2007-09-06 14:07:34.000000000 +0200 -@@ -5,7 +5,9 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_20byte { ---- libffi/testsuite/libffi.call/cls_multi_sshortchar.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_multi_sshortchar.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: PR13221. - Originator: 20031129 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - signed short test_func_fn(signed char a1, signed short a2, ---- libffi/testsuite/libffi.call/cls_align_sint64.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_sint64.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/cls_3byte2.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_3byte2.c 2007-09-06 14:07:34.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_3byte_1 { ---- libffi/testsuite/libffi.call/cls_multi_schar.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_multi_schar.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: PR13221. - Originator: 20031129 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - signed char test_func_fn(signed char a1, signed char a2) ---- libffi/testsuite/libffi.call/cls_multi_uchar.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_multi_uchar.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: PR13221. - Originator: 20031129 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - unsigned char test_func_fn(unsigned char a1, unsigned char a2, ---- libffi/testsuite/libffi.call/cls_19byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_19byte.c 2007-09-06 14:07:34.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030915 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_19byte { ---- libffi/testsuite/libffi.call/cls_9byte1.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_9byte1.c 2007-09-06 14:07:34.000000000 +0200 -@@ -7,7 +7,7 @@ - PR: none. - Originator: 20030914 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_9byte { ---- libffi/testsuite/libffi.call/cls_align_float.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_float.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/closure_fn1.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/closure_fn1.c 2007-09-06 14:07:34.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - ---- libffi/testsuite/libffi.call/problem1.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/problem1.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct my_ffi_struct { ---- libffi/testsuite/libffi.call/closure_fn3.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/closure_fn3.c 2007-09-06 14:07:34.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_sshort.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_sshort.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031108 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/closure_fn5.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/closure_fn5.c 2007-09-06 14:07:34.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20031026 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void ---- libffi/testsuite/libffi.call/cls_align_double.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_double.c 2007-09-06 14:07:34.000000000 +0200 -@@ -4,7 +4,9 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/cls_2byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_2byte.c 2007-09-06 14:07:34.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_2byte { ---- libffi/testsuite/libffi.call/nested_struct.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/nested_struct.c 2007-09-06 14:07:34.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_16byte1 { ---- libffi/testsuite/libffi.call/cls_4byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_4byte.c 2007-09-06 14:07:35.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - - #include "ffitest.h" - ---- libffi/testsuite/libffi.call/cls_6byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_6byte.c 2007-09-06 14:07:35.000000000 +0200 -@@ -5,7 +5,8 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_6byte { ---- libffi/testsuite/libffi.call/cls_8byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_8byte.c 2007-09-06 14:07:35.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_8byte { ---- libffi/testsuite/libffi.call/cls_multi_sshort.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_multi_sshort.c 2007-09-06 14:07:35.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: PR13221. - Originator: 20031129 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - signed short test_func_fn(signed short a1, signed short a2) ---- libffi/testsuite/libffi.call/cls_align_uint32.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_uint32.c 2007-09-06 14:07:35.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/cls_align_sint16.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_sint16.c 2007-09-06 14:07:35.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/cls_float.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_float.c 2007-09-06 14:07:35.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_float_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_20byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_20byte.c 2007-09-06 14:07:35.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_20byte { ---- libffi/testsuite/libffi.call/cls_5_1_byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_5_1_byte.c 2007-09-06 14:07:35.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20050708 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_5byte { ---- libffi/testsuite/libffi.call/nested_struct2.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/nested_struct2.c 2007-09-06 14:07:35.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030911 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct A { ---- libffi/testsuite/libffi.call/cls_24byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_24byte.c 2007-09-06 14:07:35.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_24byte { ---- libffi/testsuite/libffi.call/cls_64byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_64byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_64byte { ---- libffi/testsuite/libffi.call/cls_uint.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_uint.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_uint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_multi_ushortchar.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_multi_ushortchar.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: PR13221. - Originator: 20031129 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - unsigned short test_func_fn(unsigned char a1, unsigned short a2, ---- libffi/testsuite/libffi.call/cls_schar.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_schar.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,9 @@ - PR: none. - Originator: 20031108 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_schar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_uchar.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_uchar.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_uchar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_align_uint64.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_uint64.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,8 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/cls_ulonglong.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_ulonglong.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp, ---- libffi/testsuite/libffi.call/cls_align_longdouble.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_longdouble.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - - #include "ffitest.h" - ---- libffi/testsuite/libffi.call/cls_1_1byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_1_1byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,9 @@ - PR: none. - Originator: 20030902 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_1_1byte { ---- libffi/testsuite/libffi.call/cls_12byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_12byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_12byte { ---- libffi/testsuite/libffi.call/cls_3_1byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_3_1byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030902 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_3_1byte { ---- libffi/testsuite/libffi.call/cls_3byte1.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_3byte1.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_3byte { ---- libffi/testsuite/libffi.call/cls_4_1byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_4_1byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030902 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_4_1byte { ---- libffi/testsuite/libffi.call/cls_6_1_byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_6_1_byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20050708 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_6byte { ---- libffi/testsuite/libffi.call/cls_16byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_16byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_16byte { ---- libffi/testsuite/libffi.call/cls_18byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_18byte.c 2007-09-06 14:07:37.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030915 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_18byte { ---- libffi/testsuite/libffi.call/closure_fn0.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/closure_fn0.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,10 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+ -+ -+ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void ---- libffi/testsuite/libffi.call/cls_9byte2.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_9byte2.c 2007-09-06 14:07:37.000000000 +0200 -@@ -7,7 +7,7 @@ - PR: none. - Originator: 20030914 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_9byte { ---- libffi/testsuite/libffi.call/closure_fn2.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/closure_fn2.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/closure_fn4.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/closure_fn4.c 2007-09-06 14:07:37.000000000 +0200 -@@ -6,7 +6,7 @@ - PR: none. - Originator: 20031026 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - - #include "ffitest.h" - ---- libffi/testsuite/libffi.call/cls_ushort.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_ushort.c 2007-09-06 14:07:37.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - static void cls_ret_ushort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, ---- libffi/testsuite/libffi.call/cls_5byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_5byte.c 2007-09-06 14:07:38.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_5byte { ---- libffi/testsuite/libffi.call/cls_align_pointer.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_pointer.c 2007-09-06 14:07:38.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.call/cls_7byte.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_7byte.c 2007-09-06 14:07:38.000000000 +0200 -@@ -5,7 +5,7 @@ - PR: none. - Originator: 20030828 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_7byte { ---- libffi/testsuite/libffi.call/cls_align_sint32.c.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.call/cls_align_sint32.c 2007-09-06 14:07:38.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: 20031203 */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitest.h" - - typedef struct cls_struct_align { ---- libffi/testsuite/libffi.special/unwindtest.cc.jj 2007-09-06 14:05:09.000000000 +0200 -+++ libffi/testsuite/libffi.special/unwindtest.cc 2007-09-06 14:07:39.000000000 +0200 -@@ -4,7 +4,7 @@ - PR: none. - Originator: Jeff Sturm */ - --/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ -+/* { dg-do run { xfail mips64*-*-* } } */ - #include "ffitestcxx.h" - - void diff --git a/gcc41-java-arm2.patch b/gcc41-java-arm2.patch deleted file mode 100644 index 16ffccc..0000000 --- a/gcc41-java-arm2.patch +++ /dev/null @@ -1,114 +0,0 @@ -2007-07-13 Andrew Haley - - * libgcj.ver: Add __gcj_personality_sj0. - -2007-07-11 Andrew Haley - - * configure.host (arm*-linux-gnu): New. - * sysdep/arm/locks.h: New. - ---- libjava/configure.host (revision 126621) -+++ libjava/configure.host (revision 126623) -@@ -82,6 +82,10 @@ case "${host}" in - enable_getenv_properties_default=no - enable_main_args_default=no - ;; -+ arm*-linux-gnu) -+ libgcj_interpreter=yes -+ sysdeps_dir=arm -+ ;; - mips-tx39-*|mipstx39-unknown-*) - libgcj_flags="${libgcj_flags} -G 0" - LDFLAGS="$LDFLAGS -Tjmr3904dram.ld" ---- libjava/libgcj.ver (revision 126621) -+++ libjava/libgcj.ver (revision 126623) -@@ -2,6 +2,6 @@ - # symbols in libgcj.so. - - { -- global: Jv*; _Jv_*; __gcj_personality_v0; _Z*; -+ global: Jv*; _Jv_*; __gcj_personality_v0; __gcj_personality_sj0; _Z*; - local: *; - }; ---- libjava/sysdep/arm/locks.h (revision 0) -+++ libjava/sysdep/arm/locks.h (revision 126623) -@@ -0,0 +1,79 @@ -+// locks.h - Thread synchronization primitives. ARM implementation. -+ -+/* Copyright (C) 2007 Free Software Foundation -+ -+ This file is part of libgcj. -+ -+This software is copyrighted work licensed under the terms of the -+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -+details. */ -+ -+#ifndef __SYSDEP_LOCKS_H__ -+#define __SYSDEP_LOCKS_H__ -+ -+typedef size_t obj_addr_t; /* Integer type big enough for object */ -+ /* address. */ -+ -+/* Atomic compare and exchange. These sequences are not actually -+ atomic; there is a race if *ADDR != OLD_VAL and we are preempted -+ between the two swaps. However, they are very close to atomic, and -+ are the best that a pre-ARMv6 implementation can do without -+ operating system support. LinuxThreads has been using these -+ sequences for many years. */ -+ -+inline static bool -+compare_and_swap(volatile obj_addr_t *addr, -+ obj_addr_t old_val, -+ obj_addr_t new_val) -+{ -+ volatile obj_addr_t result, tmp; -+ __asm__ ("\n" -+ "0: ldr %[tmp],[%[addr]]\n" -+ " cmp %[tmp],%[old_val]\n" -+ " movne %[result],#0\n" -+ " bne 1f\n" -+ " swp %[result],%[new_val],[%[addr]]\n" -+ " cmp %[tmp],%[result]\n" -+ " swpne %[tmp],%[result],[%[addr]]\n" -+ " bne 0b\n" -+ " mov %[result],#1\n" -+ "1:" -+ : [result] "=&r" (result), [tmp] "=&r" (tmp) -+ : [addr] "r" (addr), [new_val] "r" (new_val), [old_val] "r" (old_val) -+ : "cc", "memory"); -+ -+ return result; -+} -+ -+inline static void -+release_set(volatile obj_addr_t *addr, obj_addr_t new_val) -+{ -+ __asm__ __volatile__("" : : : "memory"); -+ *(addr) = new_val; -+} -+ -+inline static bool -+compare_and_swap_release(volatile obj_addr_t *addr, -+ obj_addr_t old, -+ obj_addr_t new_val) -+{ -+ return compare_and_swap(addr, old, new_val); -+} -+ -+// Ensure that subsequent instructions do not execute on stale -+// data that was loaded from memory before the barrier. -+inline static void -+read_barrier() -+{ -+ __asm__ __volatile__("" : : : "memory"); -+} -+ -+// Ensure that prior stores to memory are completed with respect to other -+// processors. -+inline static void -+write_barrier() -+{ -+ __asm__ __volatile__("" : : : "memory"); -+} -+ -+#endif diff --git a/gcc41-java-arm3.patch b/gcc41-java-arm3.patch deleted file mode 100644 index ac12ca1..0000000 --- a/gcc41-java-arm3.patch +++ /dev/null @@ -1,33 +0,0 @@ -2007-07-15 Andrew Haley - - * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL - before looking in the context. - - * configure.host: - arm*-linux-gnu -> arm*-linux*. - ---- gcc/unwind-sjlj.c (revision 126657) -+++ gcc/unwind-sjlj.c (revision 126659) -@@ -222,7 +222,10 @@ _Unwind_Ptr - _Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn) - { - *ip_before_insn = 0; -- return context->fc->call_site + 1; -+ if (context->fc != NULL) -+ return context->fc->call_site + 1; -+ else -+ return 0; - } - - /* Set the return landing pad index in CONTEXT. */ ---- libjava/configure.host (revision 126657) -+++ libjava/configure.host (revision 126659) -@@ -82,7 +82,7 @@ case "${host}" in - enable_getenv_properties_default=no - enable_main_args_default=no - ;; -- arm*-linux-gnu) -+ arm*-linux*) - libgcj_interpreter=yes - sysdeps_dir=arm - ;; diff --git a/gcc41-java-arm4.patch b/gcc41-java-arm4.patch deleted file mode 100644 index e6e2947..0000000 --- a/gcc41-java-arm4.patch +++ /dev/null @@ -1,138 +0,0 @@ -2007-09-04 Andrew Haley - - * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup" - when using the ARM EABI. - -2007-08-29 Andrew Haley - - * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0. - -2007-08-08 Andrew Haley - - * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New. - * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New. - * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New. - ---- gcc/java/decl.c (revision 128085) -+++ gcc/java/decl.c (revision 128088) -@@ -1075,7 +1075,10 @@ java_init_decl_processing (void) - eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS - ? "__gcj_personality_sj0" - : "__gcj_personality_v0"); -- default_init_unwind_resume_libfunc (); -+ if (targetm.arm_eabi_unwinder) -+ unwind_resume_libfunc = init_one_libfunc ("__cxa_end_cleanup"); -+ else -+ default_init_unwind_resume_libfunc (); - - lang_eh_runtime_type = do_nothing; - ---- gcc/config/arm/libunwind.S (revision 128085) -+++ gcc/config/arm/libunwind.S (revision 128088) -@@ -237,5 +237,6 @@ UNWIND_WRAPPER _Unwind_RaiseException 1 - UNWIND_WRAPPER _Unwind_Resume 1 - UNWIND_WRAPPER _Unwind_Resume_or_Rethrow 1 - UNWIND_WRAPPER _Unwind_ForcedUnwind 3 -+UNWIND_WRAPPER _Unwind_Backtrace 2 - --#endif /* __symbian__ */ -+#endif /* ndef __symbian__ */ ---- gcc/config/arm/libgcc-bpabi.ver (revision 128085) -+++ gcc/config/arm/libgcc-bpabi.ver (revision 128088) -@@ -81,3 +81,11 @@ GCC_3.5 { - # GNU-specific entry point. - __gnu_unwind_frame - } -+ -+%exclude { -+ _Unwind_Backtrace -+} -+%inherit GCC_4.3.0 GCC_4.2.0 -+GCC_4.3.0 { -+ _Unwind_Backtrace -+} ---- gcc/config/arm/unwind-arm.c (revision 128085) -+++ gcc/config/arm/unwind-arm.c (revision 128088) -@@ -950,6 +950,66 @@ _Unwind_DeleteException (_Unwind_Excepti - } - - -+/* Perform stack backtrace through unwind data. */ -+_Unwind_Reason_Code -+__gnu_Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument, -+ phase2_vrs * entry_vrs); -+_Unwind_Reason_Code -+__gnu_Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument, -+ phase2_vrs * entry_vrs) -+{ -+ phase1_vrs saved_vrs; -+ _Unwind_Reason_Code code; -+ -+ _Unwind_Control_Block ucb; -+ _Unwind_Control_Block *ucbp = &ucb; -+ -+ /* Set the pc to the call site. */ -+ entry_vrs->core.r[R_PC] = entry_vrs->core.r[R_LR]; -+ -+ /* Save the core registers. */ -+ saved_vrs.core = entry_vrs->core; -+ /* Set demand-save flags. */ -+ saved_vrs.demand_save_flags = ~(_uw) 0; -+ -+ do -+ { -+ /* Find the entry for this routine. */ -+ if (get_eit_entry (ucbp, saved_vrs.core.r[R_PC]) != _URC_OK) -+ { -+ code = _URC_FAILURE; -+ break; -+ } -+ -+ /* The dwarf unwinder assumes the context structure holds things -+ like the function and LSDA pointers. The ARM implementation -+ caches these in the exception header (UCB). To avoid -+ rewriting everything we make the virtual IP register point at -+ the UCB. */ -+ _Unwind_SetGR((_Unwind_Context *)&saved_vrs, 12, (_Unwind_Ptr) ucbp); -+ -+ /* Call trace function. */ -+ if ((*trace) ((_Unwind_Context *) &saved_vrs, trace_argument) -+ != _URC_NO_REASON) -+ { -+ code = _URC_FAILURE; -+ break; -+ } -+ -+ /* Call the pr to decide what to do. */ -+ code = ((personality_routine) UCB_PR_ADDR (ucbp)) -+ (_US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND, -+ ucbp, (void *) &saved_vrs); -+ } -+ while (code != _URC_END_OF_STACK -+ && code != _URC_FAILURE); -+ -+ finish: -+ restore_non_core_regs (&saved_vrs); -+ return code; -+} -+ -+ - /* Common implementation for ARM ABI defined personality routines. - ID is the index of the personality routine, other arguments are as defined - by __aeabi_unwind_cpp_pr{0,1,2}. */ ---- gcc/config/arm/unwind-arm.h (revision 128085) -+++ gcc/config/arm/unwind-arm.h (revision 128088) -@@ -205,6 +205,13 @@ extern "C" { - _Unwind_Control_Block *, struct _Unwind_Context *, void *); - _Unwind_Reason_Code _Unwind_ForcedUnwind (_Unwind_Control_Block *, - _Unwind_Stop_Fn, void *); -+ /* @@@ Use unwind data to perform a stack backtrace. The trace callback -+ is called for every stack frame in the call chain, but no cleanup -+ actions are performed. */ -+ typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) (_Unwind_Context *, void *); -+ _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, -+ void*); -+ - _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); - void _Unwind_Complete(_Unwind_Control_Block *ucbp); - void _Unwind_DeleteException (_Unwind_Exception *); diff --git a/gcc41-java-arm5.patch b/gcc41-java-arm5.patch deleted file mode 100644 index c5c5b73..0000000 --- a/gcc41-java-arm5.patch +++ /dev/null @@ -1,280 +0,0 @@ -2007-09-04 Andrew Haley - - * src/arm/sysv.S (UNWIND): New. - (Whole file): Conditionally compile unwinder directives. - * src/arm/sysv.S: Add unwinder directives. - - * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes. - Only treat r0 as a struct address if we're actually returning a - struct by address. - Only copy the bytes that are actually within a struct. - (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes - is returned in r0, not passed by address. - (ffi_call): Allocate a word-sized temporary for the case where - a composite is returned in r0. - (ffi_prep_incoming_args_SYSV): Align as necessary. - -2007-08-05 Steven Newbury - - * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of - directly using the sys_cacheflush syscall. - -2007-07-27 Andrew Haley - - * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float. - ---- libffi/src/arm/ffi.c (revision 128092) -+++ libffi/src/arm/ffi.c (revision 128093) -@@ -40,7 +40,7 @@ void ffi_prep_args(char *stack, extended - - argp = stack; - -- if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) { -+ if ( ecif->cif->flags == FFI_TYPE_STRUCT ) { - *(void **) argp = ecif->rvalue; - argp += 4; - } -@@ -58,6 +58,9 @@ void ffi_prep_args(char *stack, extended - argp = (char *) ALIGN(argp, (*p_arg)->alignment); - } - -+ if ((*p_arg)->type == FFI_TYPE_STRUCT) -+ argp = (char *) ALIGN(argp, 4); -+ - z = (*p_arg)->size; - if (z < sizeof(int)) - { -@@ -81,7 +84,7 @@ void ffi_prep_args(char *stack, extended - break; - - case FFI_TYPE_STRUCT: -- *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ memcpy(argp, *p_argv, (*p_arg)->size); - break; - - default: -@@ -115,7 +118,6 @@ ffi_status ffi_prep_cif_machdep(ffi_cif - switch (cif->rtype->type) - { - case FFI_TYPE_VOID: -- case FFI_TYPE_STRUCT: - case FFI_TYPE_FLOAT: - case FFI_TYPE_DOUBLE: - cif->flags = (unsigned) cif->rtype->type; -@@ -126,6 +128,17 @@ ffi_status ffi_prep_cif_machdep(ffi_cif - cif->flags = (unsigned) FFI_TYPE_SINT64; - break; - -+ case FFI_TYPE_STRUCT: -+ if (cif->rtype->size <= 4) -+ /* A Composite Type not larger than 4 bytes is returned in r0. */ -+ cif->flags = (unsigned)FFI_TYPE_INT; -+ else -+ /* A Composite Type larger than 4 bytes, or whose size cannot -+ be determined statically ... is stored in memory at an -+ address passed [in r0]. */ -+ cif->flags = (unsigned)FFI_TYPE_STRUCT; -+ break; -+ - default: - cif->flags = FFI_TYPE_INT; - break; -@@ -141,21 +154,27 @@ void ffi_call(ffi_cif *cif, void (*fn)() - { - extended_cif ecif; - -+ int small_struct = (cif->flags == FFI_TYPE_INT -+ && cif->rtype->type == FFI_TYPE_STRUCT); -+ - ecif.cif = cif; - ecif.avalue = avalue; -+ -+ unsigned int temp; - - /* If the return value is a struct and we don't have a return */ - /* value address then we need to make one */ - - if ((rvalue == NULL) && -- (cif->rtype->type == FFI_TYPE_STRUCT)) -+ (cif->flags == FFI_TYPE_STRUCT)) - { - ecif.rvalue = alloca(cif->rtype->size); - } -+ else if (small_struct) -+ ecif.rvalue = &temp; - else - ecif.rvalue = rvalue; -- -- -+ - switch (cif->abi) - { - case FFI_SYSV: -@@ -167,6 +186,8 @@ void ffi_call(ffi_cif *cif, void (*fn)() - FFI_ASSERT(0); - break; - } -+ if (small_struct) -+ memcpy (rvalue, &temp, cif->rtype->size); - } - - /** private members **/ -@@ -228,9 +249,12 @@ ffi_prep_incoming_args_SYSV(char *stack, - { - size_t z; - -+ size_t alignment = (*p_arg)->alignment; -+ if (alignment < 4) -+ alignment = 4; - /* Align if necessary */ -- if ((sizeof(int) - 1) & (unsigned) argp) { -- argp = (char *) ALIGN(argp, sizeof(int)); -+ if ((alignment - 1) & (unsigned) argp) { -+ argp = (char *) ALIGN(argp, alignment); - } - - z = (*p_arg)->size; -@@ -248,21 +272,16 @@ ffi_prep_incoming_args_SYSV(char *stack, - - /* How to make a trampoline. */ - --#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ --({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ -- unsigned int __fun = (unsigned int)(FUN); \ -- unsigned int __ctx = (unsigned int)(CTX); \ -+#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ -+({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ -+ unsigned int __fun = (unsigned int)(FUN); \ -+ unsigned int __ctx = (unsigned int)(CTX); \ - *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */ \ -- *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \ -- *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \ -- *(unsigned int*) &__tramp[12] = __ctx; \ -- *(unsigned int*) &__tramp[16] = __fun; \ -- register unsigned long _beg __asm ("a1") = (unsigned long) (&__tramp[0]); \ -- register unsigned long _end __asm ("a2") = (unsigned long) (&__tramp[19]); \ -- register unsigned long _flg __asm ("a3") = 0; \ -- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \ -- : "=r" (_beg) \ -- : "0" (_beg), "r" (_end), "r" (_flg)); \ -+ *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \ -+ *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \ -+ *(unsigned int*) &__tramp[12] = __ctx; \ -+ *(unsigned int*) &__tramp[16] = __fun; \ -+ __clear_cache((&__tramp[0]), (&__tramp[19])); \ - }) - - ---- libffi/src/arm/sysv.S (revision 128092) -+++ libffi/src/arm/sysv.S (revision 128093) -@@ -82,6 +82,14 @@ - # define call_reg(x) mov lr, pc ; mov pc, x - #endif - -+/* Conditionally compile unwinder directives. */ -+#ifdef __ARM_EABI__ -+#define UNWIND -+#else -+#define UNWIND @ -+#endif -+ -+ - #if defined(__thumb__) && !defined(__THUMB_INTERWORK__) - .macro ARM_FUNC_START name - .text -@@ -92,6 +100,7 @@ - bx pc - nop - .arm -+ UNWIND .fnstart - /* A hook to tell gdb that we've switched to ARM mode. Also used to call - directly from other local arm routines. */ - _L__\name: -@@ -102,6 +111,7 @@ _L__\name: - .align 0 - .arm - ENTRY(\name) -+ UNWIND .fnstart - .endm - #endif - -@@ -134,8 +144,11 @@ _L__\name: - ARM_FUNC_START ffi_call_SYSV - @ Save registers - stmfd sp!, {r0-r3, fp, lr} -+ UNWIND .save {r0-r3, fp, lr} - mov fp, sp - -+ UNWIND .setfp fp, sp -+ - @ Make room for all of the new args. - sub sp, fp, r2 - -@@ -205,6 +218,7 @@ LSYM(Lepilogue): - RETLDM "r0-r3,fp" - - .ffi_call_SYSV_end: -+ UNWIND .fnend - .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) - - /* -@@ -216,21 +230,40 @@ LSYM(Lepilogue): - */ - - ARM_FUNC_START ffi_closure_SYSV -+ UNWIND .pad #16 - add ip, sp, #16 - stmfd sp!, {ip, lr} -+ UNWIND .save {r0, lr} - add r2, sp, #8 -+ .pad #16 - sub sp, sp, #16 - str sp, [sp, #8] - add r1, sp, #8 - bl ffi_closure_SYSV_inner - cmp r0, #FFI_TYPE_INT - beq .Lretint -+ - cmp r0, #FFI_TYPE_FLOAT -+#ifdef __SOFTFP__ -+ beq .Lretint -+#else - beq .Lretfloat -+#endif -+ - cmp r0, #FFI_TYPE_DOUBLE -+#ifdef __SOFTFP__ -+ beq .Lretlonglong -+#else - beq .Lretdouble -+#endif -+ - cmp r0, #FFI_TYPE_LONGDOUBLE -+#ifdef __SOFTFP__ -+ beq .Lretlonglong -+#else - beq .Lretlongdouble -+#endif -+ - cmp r0, #FFI_TYPE_SINT64 - beq .Lretlonglong - .Lclosure_epilogue: -@@ -243,6 +276,8 @@ ARM_FUNC_START ffi_closure_SYSV - ldr r0, [sp] - ldr r1, [sp, #4] - b .Lclosure_epilogue -+ -+#ifndef __SOFTFP__ - .Lretfloat: - ldfs f0, [sp] - b .Lclosure_epilogue -@@ -252,6 +287,9 @@ ARM_FUNC_START ffi_closure_SYSV - .Lretlongdouble: - ldfd f0, [sp] - b .Lclosure_epilogue -+#endif -+ - .ffi_closure_SYSV_end: -+ UNWIND .fnend - .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) - diff --git a/gcc41-java-arm6.patch b/gcc41-java-arm6.patch deleted file mode 100644 index 221b1ab..0000000 --- a/gcc41-java-arm6.patch +++ /dev/null @@ -1,932 +0,0 @@ -2007-09-04 Andrew Haley - - PR java/27908 - * testsuite/libjava.lang/PR27908.java - ({run1,run2,run3}.isRunning): New Method. - (main): Fix race condition. - -2007-08-29 Andrew Haley - - * gnu/classpath/natVMStackWalker.cc (VMStackWalker::getCallingClass): - Make sure we're not sibcalled. - (GET_CALLING_CLASS): Define for ARM EABI. - -2007-08-22 Andrew Haley - - * configure.host (BACKTRACESPEC): Add arm*-linux*. - -2007-08-22 Andrew Haley - - * configure.ac (LIBSTDCXXSPEC): New. - * configure.host: Add arm*-linux* to pthread test. - * configure.ac (LIBGCJTESTSPEC): Add path to libstdc++ for ARM - EABI. - * testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Use - -fexceptions for ARM EABI. - * testsuite/lib/libjava.exp (libjava_arguments): Add libgcj-test.spec. - (libjava_invoke): Log the invocation. - -2007-08-15 Andrew Haley - - * configure.ac (extra_ldflags): Define. - * Makefile.am: Use extra_ldflags for all executables. - -2007-08-14 Andrew Haley - - * sysdep/arm/backtrace.h: Remove stubs for _Unwind_GetIPInfo, - _Unwind_GetRegionStart, and _Unwind_Backtrace. - -2007-07-27 Andrew Haley - - * gnu/classpath/natVMStackWalker.cc (GET_CALLING_CLASS): Stub for - ARM EABI. - * exception.cc (get_exception_header_from_ue): New. - (get_ttype_entry): ARM EABI version. - (PERSONALITY_FUNCTION): Add ARM EABI code. - * sysdep/arm/backtrace.h: New file. - * stacktrace.cc (_URC_NORMAL_STOP): New. - * configure.ac (extra_ldflags_libjava): Add libsupc++.la for ARM - EABI. - * configure.host (BACKTRACESPEC): Add arm/backtrace.h. - ---- libjava/testsuite/Makefile.in.jj 2007-09-06 14:06:13.000000000 +0200 -+++ libjava/testsuite/Makefile.in 2007-09-06 17:20:42.000000000 +0200 -@@ -160,6 +160,7 @@ LIBLTDL = @LIBLTDL@ - LIBMAGIC = @LIBMAGIC@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ -+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@ - LIBTOOL = @LIBTOOL@ - LN_S = @LN_S@ - LTLIBICONV = @LTLIBICONV@ -@@ -264,6 +265,7 @@ build_vendor = @build_vendor@ - datadir = @datadir@ - dbexecdir = @dbexecdir@ - exec_prefix = @exec_prefix@ -+extra_ldflags = @extra_ldflags@ - extra_ldflags_libjava = @extra_ldflags_libjava@ - gxx_include_dir = @gxx_include_dir@ - here = @here@ ---- libjava/testsuite/libjava.jni/jni.exp.jj 2007-09-06 14:06:13.000000000 +0200 -+++ libjava/testsuite/libjava.jni/jni.exp 2007-09-06 17:20:42.000000000 +0200 -@@ -29,6 +29,10 @@ proc gcj_jni_compile_c_to_so {file {opti - set name [file rootname $filename] - set soname lib${name}.${so_extension} - -+ if { [istarget "*arm-*eabi*"] } { -+ lappend options "additional_flags=-fexceptions" -+ } -+ - lappend options "additional_flags=${so_flag} -fPIC" - # Find the generated header. - lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir" ---- libjava/testsuite/lib/libjava.exp.jj 2007-09-06 14:06:13.000000000 +0200 -+++ libjava/testsuite/lib/libjava.exp 2007-09-06 17:20:42.000000000 +0200 -@@ -379,6 +379,7 @@ proc libjava_arguments {{mode compile}} - if {$mode == "link"} { - global wrapper_file wrap_compile_flags - lappend args "additional_flags=$wrap_compile_flags" -+ lappend args "additional_flags=-specs=libgcj-test.spec" - lappend args "libs=$wrapper_file" - lappend args "libs=$libjava" - lappend args debug ---- libjava/configure.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/configure 2007-09-06 17:27:04.000000000 +0200 -@@ -310,7 +310,7 @@ ac_includes_default="\ - # include - #endif" - --ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV LIBMAGIC PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS' -+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava extra_ldflags LIBSTDCXXSPEC LIBGCJTESTSPEC GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV LIBMAGIC PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS' - ac_subst_files='' - - # Initialize some variables set by options. -@@ -7640,9 +7640,6 @@ case "${host}" in - esac - - --LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs" -- -- - - # Check whether --with-system-zlib or --without-system-zlib was given. - if test "${with_system_zlib+set}" = set; then -@@ -9126,6 +9123,9 @@ fi - # FIXME: this should be _libs on some hosts. - libsubdir=.libs - -+LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs" -+ -+LIBSTDCXXSPEC= - # extra LD Flags which are required for targets - case "${host}" in - *-*-darwin[0-7].*) -@@ -9134,9 +9134,21 @@ case "${host}" in - # on Darwin -single_module speeds up loading of the dynamic libraries. - extra_ldflags_libjava=-Wl,-single_module - ;; -+arm*linux*eabi) -+ # Some of the ARM unwinder code is actually in libstdc++. We -+ # could in principle replicate it in libgcj, but it's better to -+ # have a dependency on libstdc++. -+ extra_ldflags='-L$(here)/../libstdc++-v3/src -lstdc++' -+ LIBSTDCXXSPEC=-lstdc++ -+ LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++" -+ ;; - esac - - -+ -+ -+ -+ - # Allow the GC to be disabled. Can be useful when debugging. - echo "$as_me:$LINENO: checking for garbage collector to use" >&5 - echo $ECHO_N "checking for garbage collector to use... $ECHO_C" >&6 -@@ -18024,7 +18036,6 @@ s,@USING_POSIX_PLATFORM_FALSE@,$USING_PO - s,@USING_DARWIN_CRT_TRUE@,$USING_DARWIN_CRT_TRUE,;t t - s,@USING_DARWIN_CRT_FALSE@,$USING_DARWIN_CRT_FALSE,;t t - s,@SYSTEMSPEC@,$SYSTEMSPEC,;t t --s,@LIBGCJTESTSPEC@,$LIBGCJTESTSPEC,;t t - s,@ZLIBSPEC@,$ZLIBSPEC,;t t - s,@ZLIBTESTSPEC@,$ZLIBTESTSPEC,;t t - s,@X_CFLAGS@,$X_CFLAGS,;t t -@@ -18032,6 +18043,9 @@ s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t - s,@X_LIBS@,$X_LIBS,;t t - s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t - s,@extra_ldflags_libjava@,$extra_ldflags_libjava,;t t -+s,@extra_ldflags@,$extra_ldflags,;t t -+s,@LIBSTDCXXSPEC@,$LIBSTDCXXSPEC,;t t -+s,@LIBGCJTESTSPEC@,$LIBGCJTESTSPEC,;t t - s,@GCLIBS@,$GCLIBS,;t t - s,@GCINCS@,$GCINCS,;t t - s,@GCDEPS@,$GCDEPS,;t t ---- libjava/Makefile.in.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/Makefile.in 2007-09-06 17:28:51.000000000 +0200 -@@ -627,6 +627,7 @@ LIBLTDL = @LIBLTDL@ - LIBMAGIC = @LIBMAGIC@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ -+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@ - LIBTOOL = @LIBTOOL@ - LN_S = @LN_S@ - LTLIBICONV = @LTLIBICONV@ -@@ -731,6 +732,7 @@ build_vendor = @build_vendor@ - datadir = @datadir@ - dbexecdir = @dbexecdir@ - exec_prefix = @exec_prefix@ -+extra_ldflags = @extra_ldflags@ - extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_5) - gxx_include_dir = @gxx_include_dir@ - here = @here@ -@@ -812,7 +814,7 @@ GCJLINK = $(LIBTOOL) --tag=GCJ --mode=li - - GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@ - LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ -- $(LDFLAGS) $(extra_ldflags_libjava) -o $@ -+ $(LDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@ - - WARNINGS = -Wextra -Wall - AM_CXXFLAGS = \ -@@ -872,7 +874,7 @@ xlib_nat_files = $(xlib_nat_source_files - - # Include THREADLIBS here to ensure that the correct version of - # certain linuxthread functions get linked: --libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \ -+libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \ - $(LIBLTDL) $(SYS_ZLIBS) \ - -version-info `grep -v '^\#' $(srcdir)/libtool-version` - -@@ -7784,7 +7786,7 @@ NM = nm - - jv_convert_SOURCES = - jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - jv_convert_LINK = $(GCJLINK) - jv_convert_LDADD = -L$(here)/.libs libgcj.la -@@ -7800,7 +7802,7 @@ gcj_dbtool_LDADD = gnu/gcj/tools/gcj_dbt - gcj_dbtool_DEPENDENCIES = gnu/gcj/tools/gcj_dbtool.lo libgcj.la libgcj.spec - gij_SOURCES = - gij_LDFLAGS = -rpath $(libdir)/gcj-$(gcc_version) -rpath $(toolexeclibdir) \ -- -shared-libgcc $(THREADLDFLAGS) -+ -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gij_LINK = $(GCJLINK) - gij_LDADD = -L$(here)/.libs libgij.la -@@ -7820,91 +7822,91 @@ ECJX_BASE_FLAGS = -findirect-dispatch \ - @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec - gappletviewer_SOURCES = - gappletviewer_LDFLAGS = --main=gnu.classpath.tools.appletviewer.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gappletviewer_LINK = $(GCJLINK) - gappletviewer_LDADD = -L$(here)/.libs libgcj-tools.la - gappletviewer_DEPENDENCIES = libgcj-tools.la - gjarsigner_SOURCES = - gjarsigner_LDFLAGS = --main=gnu.classpath.tools.jarsigner.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gjarsigner_LINK = $(GCJLINK) - gjarsigner_LDADD = -L$(here)/.libs libgcj-tools.la - gjarsigner_DEPENDENCIES = libgcj-tools.la - gkeytool_SOURCES = - gkeytool_LDFLAGS = --main=gnu.classpath.tools.keytool.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gkeytool_LINK = $(GCJLINK) - gkeytool_LDADD = -L$(here)/.libs libgcj-tools.la - gkeytool_DEPENDENCIES = libgcj-tools.la - gjar_SOURCES = - gjar_LDFLAGS = --main=gnu.classpath.tools.jar.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gjar_LINK = $(GCJLINK) - gjar_LDADD = -L$(here)/.libs libgcj-tools.la - gjar_DEPENDENCIES = libgcj-tools.la - gjavah_SOURCES = - gjavah_LDFLAGS = --main=gnu.classpath.tools.javah.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gjavah_LINK = $(GCJLINK) - gjavah_LDADD = -L$(here)/.libs libgcj-tools.la - gjavah_DEPENDENCIES = libgcj-tools.la - gcjh_SOURCES = - gcjh_LDFLAGS = --main=gnu.classpath.tools.javah.GcjhMain \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gcjh_LINK = $(GCJLINK) - gcjh_LDADD = -L$(here)/.libs libgcj-tools.la - gcjh_DEPENDENCIES = libgcj-tools.la - gnative2ascii_SOURCES = - gnative2ascii_LDFLAGS = --main=gnu.classpath.tools.native2ascii.Native2ASCII \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gnative2ascii_LINK = $(GCJLINK) - gnative2ascii_LDADD = -L$(here)/.libs libgcj-tools.la - gnative2ascii_DEPENDENCIES = libgcj-tools.la - gorbd_SOURCES = - gorbd_LDFLAGS = --main=gnu.classpath.tools.orbd.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gorbd_LINK = $(GCJLINK) - gorbd_LDADD = -L$(here)/.libs libgcj-tools.la - gorbd_DEPENDENCIES = libgcj-tools.la - grmid_SOURCES = - grmid_LDFLAGS = --main=gnu.classpath.tools.rmid.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - grmid_LINK = $(GCJLINK) - grmid_LDADD = -L$(here)/.libs libgcj-tools.la - grmid_DEPENDENCIES = libgcj-tools.la - gserialver_SOURCES = - gserialver_LDFLAGS = --main=gnu.classpath.tools.serialver.SerialVer \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gserialver_LINK = $(GCJLINK) - gserialver_LDADD = -L$(here)/.libs libgcj-tools.la - gserialver_DEPENDENCIES = libgcj-tools.la - gtnameserv_SOURCES = - gtnameserv_LDFLAGS = --main=gnu.classpath.tools.tnameserv.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - gtnameserv_LINK = $(GCJLINK) - gtnameserv_LDADD = -L$(here)/.libs libgcj-tools.la - gtnameserv_DEPENDENCIES = libgcj-tools.la - grmic_SOURCES = - grmic_LDFLAGS = --main=gnu.classpath.tools.rmic.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - grmic_LINK = $(GCJLINK) - grmic_LDADD = -L$(here)/.libs libgcj-tools.la - grmic_DEPENDENCIES = libgcj-tools.la - grmiregistry_SOURCES = - grmiregistry_LDFLAGS = --main=gnu.classpath.tools.rmiregistry.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - - grmiregistry_LINK = $(GCJLINK) - grmiregistry_LDADD = -L$(here)/.libs libgcj-tools.la ---- libjava/gcj/Makefile.in.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/gcj/Makefile.in 2007-09-06 17:20:42.000000000 +0200 -@@ -172,6 +172,7 @@ LIBLTDL = @LIBLTDL@ - LIBMAGIC = @LIBMAGIC@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ -+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@ - LIBTOOL = @LIBTOOL@ - LN_S = @LN_S@ - LTLIBICONV = @LTLIBICONV@ -@@ -276,6 +277,7 @@ build_vendor = @build_vendor@ - datadir = @datadir@ - dbexecdir = @dbexecdir@ - exec_prefix = @exec_prefix@ -+extra_ldflags = @extra_ldflags@ - extra_ldflags_libjava = @extra_ldflags_libjava@ - gxx_include_dir = @gxx_include_dir@ - here = @here@ ---- libjava/include/Makefile.in.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/include/Makefile.in 2007-09-06 17:20:42.000000000 +0200 -@@ -171,6 +171,7 @@ LIBLTDL = @LIBLTDL@ - LIBMAGIC = @LIBMAGIC@ - LIBOBJS = @LIBOBJS@ - LIBS = @LIBS@ -+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@ - LIBTOOL = @LIBTOOL@ - LN_S = @LN_S@ - LTLIBICONV = @LTLIBICONV@ -@@ -275,6 +276,7 @@ build_vendor = @build_vendor@ - datadir = @datadir@ - dbexecdir = @dbexecdir@ - exec_prefix = @exec_prefix@ -+extra_ldflags = @extra_ldflags@ - extra_ldflags_libjava = @extra_ldflags_libjava@ - gxx_include_dir = @gxx_include_dir@ - here = @here@ ---- libjava/configure.ac.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/configure.ac 2007-09-06 17:20:42.000000000 +0200 -@@ -777,9 +777,6 @@ case "${host}" in - esac - AC_SUBST(SYSTEMSPEC) - --LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs" --AC_SUBST(LIBGCJTESTSPEC) -- - AC_ARG_WITH(system-zlib, - AS_HELP_STRING([--with-system-zlib], - [use installed libz])) -@@ -793,6 +790,9 @@ AC_PATH_XTRA - # FIXME: this should be _libs on some hosts. - libsubdir=.libs - -+LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs" -+ -+LIBSTDCXXSPEC= - # extra LD Flags which are required for targets - case "${host}" in - *-*-darwin[[0-7]].*) -@@ -801,8 +801,20 @@ case "${host}" in - # on Darwin -single_module speeds up loading of the dynamic libraries. - extra_ldflags_libjava=-Wl,-single_module - ;; -+arm*linux*eabi) -+ # Some of the ARM unwinder code is actually in libstdc++. We -+ # could in principle replicate it in libgcj, but it's better to -+ # have a dependency on libstdc++. -+ extra_ldflags='-L$(here)/../libstdc++-v3/src -lstdc++' -+ LIBSTDCXXSPEC=-lstdc++ -+ LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++" -+ ;; - esac - AC_SUBST(extra_ldflags_libjava) -+AC_SUBST(extra_ldflags) -+AC_SUBST(LIBSTDCXXSPEC) -+ -+AC_SUBST(LIBGCJTESTSPEC) - - # Allow the GC to be disabled. Can be useful when debugging. - AC_MSG_CHECKING([for garbage collector to use]) ---- libjava/libgcj.spec.in.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/libgcj.spec.in 2007-09-06 17:20:42.000000000 +0200 -@@ -7,6 +7,6 @@ - *startfile: @THREADSTARTFILESPEC@ %(startfileorig) - - %rename lib liborig --*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(liborig) -+*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig) - - *jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ -fkeep-inline-functions ---- libjava/stacktrace.cc.jj 2007-09-06 14:06:16.000000000 +0200 -+++ libjava/stacktrace.cc 2007-09-06 17:20:42.000000000 +0200 -@@ -39,6 +39,10 @@ using namespace java::lang::reflect; - using namespace java::util; - using namespace gnu::gcj::runtime; - -+#ifdef __ARM_EABI_UNWINDER__ -+#define _URC_NORMAL_STOP _URC_FAILURE -+#endif -+ - // Maps ncode values to their containing native class. - // NOTE: Currently this Map contradicts class GC for native classes. This map - // (and the "new class stack") will need to use WeakReferences in order to ---- libjava/configure.host.jj 2007-09-06 17:11:05.000000000 +0200 -+++ libjava/configure.host 2007-09-06 17:20:42.000000000 +0200 -@@ -85,6 +85,7 @@ case "${host}" in - arm*-linux*) - libgcj_interpreter=yes - sysdeps_dir=arm -+ fallback_backtrace_h=sysdep/arm/backtrace.h - ;; - mips-tx39-*|mipstx39-unknown-*) - libgcj_flags="${libgcj_flags} -G 0" -@@ -258,6 +259,12 @@ EOF - sysdeps_dir=x86-64 - DIVIDESPEC=-f%{m32:no-}%{!m32:%{!m64:no-}}%{m64:}use-divide-subroutine - ;; -+ arm*-linux* ) -+ slow_pthread_self=no -+ can_unwind_signal=no -+ CHECKREFSPEC=-fcheck-references -+ DIVIDESPEC=-fuse-divide-subroutine -+ ;; - mips*-*-linux* ) - sysdeps_dir=mips - can_unwind_signal=yes ---- libjava/Makefile.am.jj 2007-09-06 14:06:16.000000000 +0200 -+++ libjava/Makefile.am 2007-09-06 17:28:27.000000000 +0200 -@@ -100,6 +100,7 @@ endif - GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated - - extra_ldflags_libjava = @extra_ldflags_libjava@ -+extra_ldflags = @extra_ldflags@ - - if ANONVERSCRIPT - extra_ldflags_libjava += -Wl,--version-script=$(srcdir)/libgcj.ver -@@ -110,7 +111,7 @@ GCJLINK = $(LIBTOOL) --tag=GCJ --mode=li - GCJ_FOR_ECJX = @GCJ_FOR_ECJX@ - GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@ - LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ -- $(LDFLAGS) $(extra_ldflags_libjava) -o $@ -+ $(LDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@ - - GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ - -@@ -232,7 +233,7 @@ xlib_nat_files = $(xlib_nat_source_files - # Include THREADLIBS here to ensure that the correct version of - # certain linuxthread functions get linked: - ## The mysterious backslash in the grep pattern is consumed by make. --libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \ -+libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \ - $(LIBLTDL) $(SYS_ZLIBS) \ - -version-info `grep -v '^\#' $(srcdir)/libtool-version` - libgcj_la_LIBADD = \ -@@ -614,7 +615,7 @@ jv_convert_SOURCES = - ## need this because we are explicitly using libtool to link using the - ## `.la' file. - jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - jv_convert_LINK = $(GCJLINK) - ## We don't explicitly link in the libraries we need; libgcj.la brings - ## in all dependencies. We need the -L so that gcj can find libgcj -@@ -635,7 +636,7 @@ gnu/gcj/tools/gcj_dbtool/natMain.cc - ## need this because we are explicitly using libtool to link using the - ## `.la' file. - gcj_dbtool_LDFLAGS = --main=gnu.gcj.tools.gcj_dbtool.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gcj_dbtool_LINK = $(GCJLINK) - ## We don't explicitly link in the libraries we need; libgcj.la brings - ## in all dependencies. We need the -L so that gcj can find libgcj -@@ -654,7 +655,7 @@ gij_SOURCES = - ## need this because we are explicitly using libtool to link using the - ## `.la' file. - gij_LDFLAGS = -rpath $(libdir)/gcj-$(gcc_version) -rpath $(toolexeclibdir) \ -- -shared-libgcc $(THREADLDFLAGS) -+ -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gij_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gij_LDADD = -L$(here)/.libs libgij.la -@@ -698,7 +699,7 @@ endif !NATIVE - ## This is a dummy definition. - gappletviewer_SOURCES = - gappletviewer_LDFLAGS = --main=gnu.classpath.tools.appletviewer.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gappletviewer_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gappletviewer_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -707,7 +708,7 @@ gappletviewer_DEPENDENCIES = libgcj-tool - ## This is a dummy definition. - gjarsigner_SOURCES = - gjarsigner_LDFLAGS = --main=gnu.classpath.tools.jarsigner.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gjarsigner_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gjarsigner_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -716,7 +717,7 @@ gjarsigner_DEPENDENCIES = libgcj-tools.l - ## This is a dummy definition. - gkeytool_SOURCES = - gkeytool_LDFLAGS = --main=gnu.classpath.tools.keytool.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gkeytool_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gkeytool_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -725,7 +726,7 @@ gkeytool_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - gjar_SOURCES = - gjar_LDFLAGS = --main=gnu.classpath.tools.jar.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gjar_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gjar_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -734,7 +735,7 @@ gjar_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - gjavah_SOURCES = - gjavah_LDFLAGS = --main=gnu.classpath.tools.javah.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gjavah_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gjavah_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -743,7 +744,7 @@ gjavah_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - gcjh_SOURCES = - gcjh_LDFLAGS = --main=gnu.classpath.tools.javah.GcjhMain \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gcjh_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gcjh_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -752,7 +753,7 @@ gcjh_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - gnative2ascii_SOURCES = - gnative2ascii_LDFLAGS = --main=gnu.classpath.tools.native2ascii.Native2ASCII \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gnative2ascii_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gnative2ascii_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -761,7 +762,7 @@ gnative2ascii_DEPENDENCIES = libgcj-tool - ## This is a dummy definition. - gorbd_SOURCES = - gorbd_LDFLAGS = --main=gnu.classpath.tools.orbd.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gorbd_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gorbd_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -770,7 +771,7 @@ gorbd_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - grmid_SOURCES = - grmid_LDFLAGS = --main=gnu.classpath.tools.rmid.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - grmid_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - grmid_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -779,7 +780,7 @@ grmid_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - gserialver_SOURCES = - gserialver_LDFLAGS = --main=gnu.classpath.tools.serialver.SerialVer \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gserialver_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gserialver_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -788,7 +789,7 @@ gserialver_DEPENDENCIES = libgcj-tools.l - ## This is a dummy definition. - gtnameserv_SOURCES = - gtnameserv_LDFLAGS = --main=gnu.classpath.tools.tnameserv.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - gtnameserv_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - gtnameserv_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -797,7 +798,7 @@ gtnameserv_DEPENDENCIES = libgcj-tools.l - ## This is a dummy definition. - grmic_SOURCES = - grmic_LDFLAGS = --main=gnu.classpath.tools.rmic.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - grmic_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - grmic_LDADD = -L$(here)/.libs libgcj-tools.la -@@ -806,7 +807,7 @@ grmic_DEPENDENCIES = libgcj-tools.la - ## This is a dummy definition. - grmiregistry_SOURCES = - grmiregistry_LDFLAGS = --main=gnu.classpath.tools.rmiregistry.Main \ -- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) -+ -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) - grmiregistry_LINK = $(GCJLINK) - ## See jv_convert_LDADD. - grmiregistry_LDADD = -L$(here)/.libs libgcj-tools.la ---- libjava/exception.cc.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/exception.cc 2007-09-06 17:20:42.000000000 +0200 -@@ -58,6 +58,21 @@ struct java_exception_header - _Unwind_Exception unwindHeader; - }; - -+#ifdef __ARM_EABI_UNWINDER__ -+// This is the exception class we report -- "GNUCJAVA". -+ -+const _Unwind_Exception_Class __gcj_exception_class -+ = {'G', 'N', 'U', 'C', 'J', 'A', 'V', 'A'}; -+ -+static inline java_exception_header * -+get_exception_header_from_ue (_Unwind_Exception *exc) -+{ -+ return reinterpret_cast(exc + 1) - 1; -+} -+ -+extern "C" void __cxa_begin_cleanup (_Unwind_Exception*); -+ -+#else // !__ARM_EABI_UNWINDER__ - // This is the exception class we report -- "GNUCJAVA". - const _Unwind_Exception_Class __gcj_exception_class - = ((((((((_Unwind_Exception_Class) 'G' -@@ -75,6 +90,7 @@ get_exception_header_from_ue (_Unwind_Ex - { - return reinterpret_cast(exc + 1) - 1; - } -+#endif // !__ARM_EABI_UNWINDER__ - - /* Perform a throw, Java style. Throw will unwind through this call, - so there better not be any handlers or exception thrown here. */ -@@ -89,7 +105,8 @@ _Jv_Throw (jthrowable value) - value = new java::lang::NullPointerException (); - xh->value = value; - -- xh->unwindHeader.exception_class = __gcj_exception_class; -+ memcpy (&xh->unwindHeader.exception_class, &__gcj_exception_class, -+ sizeof xh->unwindHeader.exception_class); - xh->unwindHeader.exception_cleanup = NULL; - - /* We're happy with setjmp/longjmp exceptions or region-based -@@ -159,6 +176,21 @@ parse_lsda_header (_Unwind_Context *cont - return p; - } - -+#ifdef __ARM_EABI_UNWINDER__ -+ -+static void ** -+get_ttype_entry(_Unwind_Context *, lsda_header_info* info, _Unwind_Word i) -+{ -+ _Unwind_Ptr ptr; -+ -+ ptr = (_Unwind_Ptr) (info->TType - (i * 4)); -+ ptr = _Unwind_decode_target2(ptr); -+ -+ return reinterpret_cast(ptr); -+} -+ -+#else -+ - static void ** - get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i) - { -@@ -170,6 +202,7 @@ get_ttype_entry (_Unwind_Context *contex - return reinterpret_cast(ptr); - } - -+#endif - - // Using a different personality function name causes link failures - // when trying to mix code using different exception handling models. -@@ -180,12 +213,33 @@ get_ttype_entry (_Unwind_Context *contex - #define PERSONALITY_FUNCTION __gcj_personality_v0 - #endif - -+#ifdef __ARM_EABI_UNWINDER__ -+ -+#define CONTINUE_UNWINDING \ -+ do \ -+ { \ -+ if (__gnu_unwind_frame(ue_header, context) != _URC_OK) \ -+ return _URC_FAILURE; \ -+ return _URC_CONTINUE_UNWIND; \ -+ } \ -+ while (0) -+ -+extern "C" _Unwind_Reason_Code -+PERSONALITY_FUNCTION (_Unwind_State state, -+ struct _Unwind_Exception* ue_header, -+ struct _Unwind_Context* context) -+#else -+ -+#define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND -+ - extern "C" _Unwind_Reason_Code - PERSONALITY_FUNCTION (int version, - _Unwind_Action actions, - _Unwind_Exception_Class exception_class, - struct _Unwind_Exception *ue_header, - struct _Unwind_Context *context) -+ -+#endif - { - java_exception_header *xh = get_exception_header_from_ue (ue_header); - -@@ -197,16 +251,56 @@ PERSONALITY_FUNCTION (int version, - int handler_switch_value; - bool saw_cleanup; - bool saw_handler; -+ bool foreign_exception; - int ip_before_insn = 0; - -+#ifdef __ARM_EABI_UNWINDER__ -+ _Unwind_Action actions; -+ -+ switch (state & _US_ACTION_MASK) -+ { -+ case _US_VIRTUAL_UNWIND_FRAME: -+ actions = _UA_SEARCH_PHASE; -+ break; -+ -+ case _US_UNWIND_FRAME_STARTING: -+ actions = _UA_CLEANUP_PHASE; -+ if (!(state & _US_FORCE_UNWIND) -+ && ue_header->barrier_cache.sp == _Unwind_GetGR(context, 13)) -+ actions |= _UA_HANDLER_FRAME; -+ break; -+ -+ case _US_UNWIND_FRAME_RESUME: -+ CONTINUE_UNWINDING; -+ break; -+ -+ default: -+ std::abort(); -+ } -+ actions |= state & _US_FORCE_UNWIND; -+ -+ // We don't know which runtime we're working with, so can't check this. -+ // However the ABI routines hide this from us, and we don't actually need -+ // to know. -+ foreign_exception = false; -+ -+ // The dwarf unwinder assumes the context structure holds things like the -+ // function and LSDA pointers. The ARM implementation caches these in -+ // the exception header (UCB). To avoid rewriting everything we make the -+ // virtual IP register point at the UCB. -+ ip = (_Unwind_Ptr) ue_header; -+ _Unwind_SetGR(context, 12, ip); - -+#else - // Interface version check. - if (version != 1) - return _URC_FATAL_PHASE1_ERROR; -+ foreign_exception = exception_class != __gcj_exception_class; -+#endif - - // Shortcut for phase 2 found handler for domestic exception. - if (actions == (_UA_CLEANUP_PHASE | _UA_HANDLER_FRAME) -- && exception_class == __gcj_exception_class) -+ && !foreign_exception) - { - handler_switch_value = xh->handlerSwitchValue; - landing_pad = xh->landingPad; -@@ -227,17 +321,17 @@ PERSONALITY_FUNCTION (int version, - - // If no LSDA, then there are no handlers or cleanups. - if (! language_specific_data) -- return _URC_CONTINUE_UNWIND; -+ CONTINUE_UNWINDING; - - // Parse the LSDA header. - p = parse_lsda_header (context, language_specific_data, &info); - #ifdef HAVE_GETIPINFO - ip = _Unwind_GetIPInfo (context, &ip_before_insn); -- if (! ip_before_insn) -- --ip; - #else - ip = _Unwind_GetIP (context) - 1; - #endif -+ if (! ip_before_insn) -+ --ip; - landing_pad = 0; - action_record = 0; - handler_switch_value = 0; -@@ -296,7 +390,7 @@ PERSONALITY_FUNCTION (int version, - // If ip is not present in the table, C++ would call terminate. - // ??? It is perhaps better to tweek the LSDA so that no-action - // is mapped to no-entry for Java. -- return _URC_CONTINUE_UNWIND; -+ CONTINUE_UNWINDING; - - found_something: - saw_cleanup = false; -@@ -334,7 +428,7 @@ PERSONALITY_FUNCTION (int version, - // During forced unwinding, we only run cleanups. With a - // foreign exception class, we have no class info to match. - else if ((actions & _UA_FORCE_UNWIND) -- || exception_class != __gcj_exception_class) -+ || foreign_exception) - ; - - else if (ar_filter > 0) -@@ -374,15 +468,15 @@ PERSONALITY_FUNCTION (int version, - } - - if (! saw_handler && ! saw_cleanup) -- return _URC_CONTINUE_UNWIND; -+ CONTINUE_UNWINDING; - - if (actions & _UA_SEARCH_PHASE) - { - if (! saw_handler) -- return _URC_CONTINUE_UNWIND; -+ CONTINUE_UNWINDING; - - // For domestic exceptions, we cache data from phase 1 for phase 2. -- if (exception_class == __gcj_exception_class) -+ if (! foreign_exception) - { - xh->handlerSwitchValue = handler_switch_value; - xh->landingPad = landing_pad; -@@ -396,5 +490,9 @@ PERSONALITY_FUNCTION (int version, - _Unwind_SetGR (context, __builtin_eh_return_data_regno (1), - handler_switch_value); - _Unwind_SetIP (context, landing_pad); -+#ifdef __ARM_EABI_UNWINDER__ -+ if (saw_cleanup) -+ __cxa_begin_cleanup(ue_header); -+#endif - return _URC_INSTALL_CONTEXT; - } ---- libjava/gnu/classpath/natVMStackWalker.cc.jj 2007-09-06 14:06:15.000000000 +0200 -+++ libjava/gnu/classpath/natVMStackWalker.cc 2007-09-06 17:20:42.000000000 +0200 -@@ -19,6 +19,7 @@ details. */ - #include - #include - -+#ifndef __ARM_EABI_UNWINDER__ - // Return the class of the method that contains PC. - // This is a macro not a function, since defining it as one would - // introduce an extra frame on the stack. */ -@@ -44,6 +45,11 @@ details. */ - \ - klass; \ - }) -+#else // __ARM_EABI_UNWINDER__ -+// ARM EABI doesn't support _Unwind_FindEnclosingFunction. -+#define GET_CALLING_CLASS(PC) \ -+ (_Jv_StackTrace::GetStackWalkerCallingClass ()) -+#endif - - JArray * - gnu::classpath::VMStackWalker::getClassContext(void) -@@ -59,14 +65,18 @@ jclass - gnu::classpath::VMStackWalker::getCallingClass(void) - { - _Jv_InitClass (&::gnu::classpath::VMStackWalker::class$); -- return _Jv_StackTrace::GetStackWalkerCallingClass (); -+ jclass result = _Jv_StackTrace::GetStackWalkerCallingClass (); -+ __asm__ __volatile__ ("" : : "g" (result)); -+ return result; - } - - jclass - gnu::classpath::VMStackWalker::getCallingClass(::gnu::gcj::RawData *pc) - { - _Jv_InitClass (&::gnu::classpath::VMStackWalker::class$); -- return GET_CALLING_CLASS(pc); -+ jclass result = GET_CALLING_CLASS(pc); -+ __asm__ __volatile__ ("" : : "g" (result)); -+ return result; - } - - ::java::lang::ClassLoader * ---- libjava/sysdep/arm/backtrace.h.jj 2007-09-06 17:20:42.000000000 +0200 -+++ libjava/sysdep/arm/backtrace.h 2007-09-06 17:20:42.000000000 +0200 -@@ -0,0 +1,35 @@ -+// backtrace.h - Fallback backtrace implementation. ARM implementation. -+ -+/* Copyright (C) 2005, 2006 Free Software Foundation -+ -+ This file is part of libgcj. -+ -+This software is copyrighted work licensed under the terms of the -+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -+details. */ -+ -+#ifndef __SYSDEP_BACKTRACE_H__ -+#define __SYSDEP_BACKTRACE_H__ -+ -+#include -+ -+extern "C" -+{ -+/* Unwind through the call stack calling TRACE_FN with STATE for every stack -+ frame. Returns the reason why the unwinding was stopped. */ -+#ifdef __ARM_EABI_UNWINDER__ -+ -+#define _Unwind_FindEnclosingFunction(PC) \ -+ (PC) -+ -+_Unwind_Reason_Code -+fallback_backtrace (_Unwind_Reason_Code (*)(struct _Unwind_Context*, void*), _Jv_UnwindState *) -+#else -+_Unwind_Reason_Code -+fallback_backtrace (_Unwind_Trace_Fn, _Jv_UnwindState *) -+#endif -+{ -+ return _URC_NO_REASON; -+} -+} -+#endif diff --git a/gcc41-java-arm7.patch b/gcc41-java-arm7.patch deleted file mode 100644 index 4cce530..0000000 --- a/gcc41-java-arm7.patch +++ /dev/null @@ -1,32 +0,0 @@ -2007-09-07 Andrew Haley - - * configure.in (noconfigdirs): Remove target-libffi and - target-libjava. - * configure: Regenerate. - ---- configure.in (revision 128249) -+++ configure.in (revision 128250) -@@ -501,8 +501,8 @@ case "${target}" in - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - ;; - arm*-*-linux-gnueabi) -- noconfigdirs="$noconfigdirs target-libffi target-qthreads" -- noconfigdirs="$noconfigdirs target-libjava target-libobjc" -+ noconfigdirs="$noconfigdirs target-qthreads" -+ noconfigdirs="$noconfigdirs target-libobjc" - ;; - arm*-*-symbianelf*) - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" ---- configure (revision 128249) -+++ configure (revision 128250) -@@ -1293,8 +1293,8 @@ case "${target}" in - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - ;; - arm*-*-linux-gnueabi) -- noconfigdirs="$noconfigdirs target-libffi target-qthreads" -- noconfigdirs="$noconfigdirs target-libjava target-libobjc" -+ noconfigdirs="$noconfigdirs target-qthreads" -+ noconfigdirs="$noconfigdirs target-libobjc" - ;; - arm*-*-symbianelf*) - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" diff --git a/gcc41-java-arm8.patch b/gcc41-java-arm8.patch deleted file mode 100644 index 4820731..0000000 --- a/gcc41-java-arm8.patch +++ /dev/null @@ -1,65 +0,0 @@ -2007-07-13 Andrew Haley - - * testsuite/libjava.jvmti/jvmti-interp.exp: Likewise. - * testsuite/libjava.jni/jni.exp: Use -fdollars-in-identifiers. - * testsuite/libjava.jni/cni.exp: Use -fdollars-in-identifiers. - * testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_compile_cxx_to_o): Likewise. - ---- libjava/testsuite/libjava.cni/cni.exp (revision 126621) -+++ libjava/testsuite/libjava.cni/cni.exp (revision 126622) -@@ -10,7 +10,7 @@ - set oname ${name}.o - - # Find the generated header. -- lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir" -+ lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir -fdollars-in-identifiers" - # Find libgcj headers. - lappend options "additional_flags=-I$srcdir/.." - ---- libjava/testsuite/libjava.jvmti/jvmti-interp.exp (revision 126621) -+++ libjava/testsuite/libjava.jvmti/jvmti-interp.exp (revision 126622) -@@ -47,7 +47,7 @@ - - # Find jni.h and jni_md.h. - lappend options "additional_flags=-I$srcdir/../include \ -- -I$srcdir/../classpath/include" -+ -I$srcdir/../classpath/include -fdollars-in-identifiers" - - # Append C++ options - lappend options "additional_flags=$options_cxx" ---- libjava/testsuite/libjava.jvmti/jvmti.exp (revision 126621) -+++ libjava/testsuite/libjava.jvmti/jvmti.exp (revision 126622) -@@ -11,11 +11,11 @@ - set oname ${name}.o - - # Find the generated header. -- lappend options "additional_flags=-g -I. -I.." -+ lappend options "additional_flags=-g -I. -I.. -fdollars-in-identifiers" - # Find libgcj headers. - lappend options "additional_flags=-I$srcdir/.." - # Find jvmti.h, jvmti_md.h, jvmti-int.h, jvm.h requirements -- lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -I$objdir/../include -I$objdir/../../boehm-gc/include" -+ lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -I$objdir/../include -I$objdir/../../boehm-gc/include " - - set x [libjava_prune_warnings \ - [target_compile $file $oname object $options]] ---- libjava/testsuite/libjava.jni/jni.exp (revision 126621) -+++ libjava/testsuite/libjava.jni/jni.exp (revision 126622) -@@ -31,7 +31,7 @@ - - lappend options "additional_flags=${so_flag} -fPIC" - # Find the generated header. -- lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir" -+ lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir -fdollars-in-identifiers" - - # Ensure that the generated header has correct prototypes. - set cfile [file rootname $file].c -@@ -219,7 +219,7 @@ - lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir" - - # Find jni.h and jni_md.h. -- lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include" -+ lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -fdollars-in-identifiers" - - # Append C++ options - lappend options "additional_flags=$options_cxx" diff --git a/gcc41-java-bogus-debugline.patch b/gcc41-java-bogus-debugline.patch deleted file mode 100644 index 9cbdb0b..0000000 --- a/gcc41-java-bogus-debugline.patch +++ /dev/null @@ -1,36 +0,0 @@ -2007-03-16 Andrew Haley - - * class.c (push_class): Don't bogusly guess the source filename. - * jcf-parse.c (give_name_to_class): Don't set input_location from - DECL_ARTIFICIAL decls. - ---- gcc/java/class.c (revision 122746) -+++ gcc/java/class.c (working copy) -@@ -426,8 +426,7 @@ - tree decl, signature; - location_t saved_loc = input_location; - #ifndef USE_MAPPED_LOCATION -- tree source_name = identifier_subst (class_name, "", '.', '/', ".java"); -- input_filename = IDENTIFIER_POINTER (source_name); -+ input_filename = ""; - input_line = 0; - #endif - CLASS_P (class_type) = 1; ---- gcc/java/jcf-parse.c (revision 122746) -+++ gcc/java/jcf-parse.c (working copy) -@@ -1221,9 +1221,12 @@ give_name_to_class (JCF *jcf, int i) - main_input_filename = sfname; - } - #else -- input_location = DECL_SOURCE_LOCATION (TYPE_NAME (this_class)); -- if (main_input_filename == NULL && jcf == main_jcf) -- main_input_filename = input_filename; -+ if (! DECL_ARTIFICIAL (TYPE_NAME (this_class))) -+ { -+ input_location = DECL_SOURCE_LOCATION (TYPE_NAME (this_class)); -+ if (main_input_filename == NULL && jcf == main_jcf) -+ main_input_filename = input_filename; -+ } - #endif - - jcf->cpool.data[i].t = this_class; diff --git a/gcc41-java-libdotdotlib.patch b/gcc41-java-libdotdotlib.patch deleted file mode 100644 index 5d2c0d3..0000000 --- a/gcc41-java-libdotdotlib.patch +++ /dev/null @@ -1,48 +0,0 @@ -2006-07-20 Jakub Jelinek - - * configure.ac (toolexeclibdir, dbexecdir): Canonicalize /lib/../lib - to /lib. - * configure: Rebuilt. - ---- libjava/configure.ac.jj 2006-07-20 14:01:02.000000000 +0200 -+++ libjava/configure.ac 2006-07-20 16:36:31.000000000 +0200 -@@ -1262,6 +1262,7 @@ case ${version_specific_libs} in - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /. -+ ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;; - *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;; - esac - ;; -@@ -1278,6 +1279,10 @@ case $multi_os_directory in - dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /. - ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`" - ;; -+ ../lib*) -+ dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory'/gcj-$(gcc_version))' -+ ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`" -+ ;; - *) - dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)' - ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`" ---- libjava/configure.jj 2006-07-20 14:01:02.000000000 +0200 -+++ libjava/configure 2006-07-20 16:45:24.000000000 +0200 -@@ -14863,6 +14864,7 @@ case ${version_specific_libs} in - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /. -+ ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;; - *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;; - esac - ;; -@@ -14879,6 +14881,10 @@ case $multi_os_directory in - dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /. - ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`" - ;; -+ ../lib*) -+ dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory'/gcj-$(gcc_version))' -+ ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`" -+ ;; - *) - dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)' - ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`" diff --git a/gcc41-java-nomulti.patch b/gcc41-java-nomulti.patch deleted file mode 100644 index 3a6554d..0000000 --- a/gcc41-java-nomulti.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- libjava/configure.ac.jj 2004-08-16 21:13:29.000000000 +0200 -+++ libjava/configure.ac 2004-08-21 11:44:59.020755542 +0200 -@@ -367,6 +367,10 @@ use_gtk_awt="" - TOOLKIT= - AC_SUBST(TOOLKIT) - -+if test -n "${with_multisubdir}"; then -+ peerlibs=no -+fi -+ - for peer in $peerlibs ; do - case $peer in - xlib) ---- libjava/configure.jj 2004-08-16 21:22:14.000000000 +0200 -+++ libjava/configure 2004-08-21 11:45:16.260738060 +0200 -@@ -4118,6 +4118,9 @@ use_gtk_awt="" - # The default toolkit to use is the first one specified. - TOOLKIT= - -+if test -n "${with_multisubdir}"; then -+ peerlibs=no -+fi - - for peer in $peerlibs ; do - case $peer in diff --git a/gcc41-java-slow_pthread_self.patch b/gcc41-java-slow_pthread_self.patch deleted file mode 100644 index de160be..0000000 --- a/gcc41-java-slow_pthread_self.patch +++ /dev/null @@ -1,15 +0,0 @@ -2005-05-20 Jakub Jelinek - - * configure.host (slow_pthread_self): Set to empty unconditionally - on Linux targets. - ---- libjava/configure.host (.../gcc-4_0-branch) (revision 107266) -+++ libjava/configure.host (.../redhat/gcc-4_0-branch) (revision 107414) -@@ -174,6 +174,7 @@ - sh-linux* | sh[34]*-linux*) - can_unwind_signal=yes - libgcj_ld_symbolic='-Wl,-Bsymbolic' -+ slow_pthread_self= - if test x$slow_pthread_self = xyes \ - && test x$cross_compiling != xyes; then - cat > conftest.c < - - * include/jvm.h (struct natThread): Add new field 'frame'. - * include/java-interp.h (_Jv_Frame): Use _Jv_ThreadStackPeek, - _Jv_ThreadStackPop, and _Jv_ThreadStackPush instead of - java.lang.Thread.frame. - (~_Jv_Frame): Use _Jv_ThreadStackPop. - * java/lang/natThread.cc (_Jv_ThreadStackPeek): New function. - (_Jv_ThreadStackPush): New function. - (_Jv_ThreadStackPop): New function. - * java/lang/Thread.java (frame): Remove field to restore - C++ ABI compatibility. - * gnu/classpath/jdwp/natVMVirtualMachine.cc (getFrames): Use - _Jv_ThreadStackPeek. - (getFrame): Likewise. - * gnu/classpath/jdwp/natVMFrame.cc (getFrameDepth): Likewise. - * jvmti.cc (getLocalFrame): Likewise. - (_Jv_JVMTI_GetFrameCount): Likewise. - (_Jv_JVMTI_GetThreadState): Likewise. - (_Jv_JVMTI_GetStackTrace): Likewise. - * interpret.cc (_Jv_ReportJVMTIExceptionThrow): Likewise. - * headers.txt (java/lang/Thread.h): Prepend declarations - for _Jv_ThreadStackPeek, _Jv_ThreadStackPush, and _Jv_ThreadStackPop. - Add as friend functions. - * jni.cc (_Jv_JNIMethod::call): Push a frame onto the stack when - calling a JNI method. - ---- libjava/interpret.cc (revision 128603) -+++ libjava/interpret.cc (working copy) -@@ -1709,7 +1709,7 @@ - _Jv_ReportJVMTIExceptionThrow (jthrowable ex) - { - jthread thread = ::java::lang::Thread::currentThread (); -- _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame); -+ _Jv_Frame *frame = _Jv_ThreadStackPeek (thread); - jmethodID throw_meth = frame->self->get_method (); - jlocation throw_loc = -1; - if (frame->frame_type == frame_interpreter) ---- libjava/include/java-interp.h (revision 128603) -+++ libjava/include/java-interp.h (working copy) -@@ -391,14 +391,14 @@ - { - self = s; - frame_type = type; -- next = (_Jv_Frame *) thr->frame; -- thr->frame = (gnu::gcj::RawData *) this; -+ next = _Jv_ThreadStackPeek (thr); -+ _Jv_ThreadStackPush (thr, this); - thread = thr; - } - - ~_Jv_Frame () - { -- thread->frame = (gnu::gcj::RawData *) next; -+ _Jv_ThreadStackPop (thread); - } - - int depth () ---- libjava/include/jvm.h (revision 128603) -+++ libjava/include/jvm.h (working copy) -@@ -34,6 +34,8 @@ - - #include - -+class _Jv_Frame; -+ - /* Macro for possible unused arguments. */ - #define MAYBE_UNUSED __attribute__((__unused__)) - -@@ -767,6 +769,12 @@ - - // Each thread has its own JNI object. - _Jv_JNIEnv *jni_env; -+ -+ // Describes the topmost frame in the thread's composite -+ // (interp + JNI) stack. Added here to maintain C++ ABI -+ // compatibility with previous versions. Newer versions -+ // of gcj put this in java/lang/Thread.java. -+ _Jv_Frame *frame; - }; - - #endif /* __JAVA_JVM_H__ */ ---- libjava/jni.cc (revision 128603) -+++ libjava/jni.cc (working copy) -@@ -2343,6 +2343,10 @@ - // Copy over passed-in arguments. - memcpy (&real_args[offset], args, _this->args_raw_size); - -+ // Add a frame to the composite (interpreted + JNI) call stack -+ java::lang::Thread *thread = java::lang::Thread::currentThread (); -+ _Jv_NativeFrame nat_frame (_this, thread); -+ - // The actual call to the JNI function. - #if FFI_NATIVE_RAW_API - ffi_raw_call (&_this->jni_cif, (void (*)()) _this->function, ---- libjava/jvmti.cc (revision 128603) -+++ libjava/jvmti.cc (working copy) -@@ -228,7 +228,7 @@ - THREAD_CHECK_VALID (thread); - THREAD_CHECK_IS_ALIVE (thread); - -- _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame); -+ _Jv_Frame *frame = _Jv_ThreadStackPeek (thread); - - for (int i = 0; i < depth; i++) - { -@@ -516,7 +516,7 @@ - THREAD_CHECK_VALID (thread); - THREAD_CHECK_IS_ALIVE (thread); - -- _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame); -+ _Jv_Frame *frame = _Jv_ThreadStackPeek (thread); - (*frame_count) = frame->depth (); - return JVMTI_ERROR_NONE; - } -@@ -543,7 +543,7 @@ - if (thread->isInterrupted ()) - state |= JVMTI_THREAD_STATE_INTERRUPTED; - -- _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame); -+ _Jv_Frame *frame = _Jv_ThreadStackPeek (thread); - if (frame != NULL && frame->frame_type == frame_native) - state |= JVMTI_THREAD_STATE_IN_NATIVE; - -@@ -1273,7 +1273,7 @@ - ILLEGAL_ARGUMENT (start_depth >= (*frame_count)); - ILLEGAL_ARGUMENT (start_depth < (-(*frame_count))); - -- _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame); -+ _Jv_Frame *frame = _Jv_ThreadStackPeek (thread); - - // If start_depth is negative use this to determine at what depth to start - // the trace by adding it to the length of the call stack. This allows the ---- libjava/headers.txt (revision 128603) -+++ libjava/headers.txt (working copy) -@@ -6,6 +6,7 @@ - - class java/lang/Thread - prepend class _Jv_JNIEnv; -+prepend class _Jv_Frame; - prepend #define _JV_NOT_OWNER 1 - prepend #define _JV_INTERRUPTED 2 - prepend _Jv_JNIEnv * _Jv_GetCurrentJNIEnv (); -@@ -17,6 +18,9 @@ - prepend jint _Jv_DetachCurrentThread (); - prepend struct _Jv_Thread_t; - prepend _Jv_Thread_t* _Jv_ThreadGetData (java::lang::Thread* thread); -+prepend _Jv_Frame *_Jv_ThreadStackPeek (java::lang::Thread *thread); -+prepend void _Jv_ThreadStackPush (java::lang::Thread *thread, _Jv_Frame *frame); -+prepend void _Jv_ThreadStackPop (java::lang::Thread *thread); - friend _Jv_JNIEnv * ::_Jv_GetCurrentJNIEnv (); - friend void ::_Jv_SetCurrentJNIEnv (_Jv_JNIEnv *env); - friend void ::_Jv_ThreadRun (java::lang::Thread* thread); -@@ -24,6 +28,9 @@ - friend java::lang::Thread* ::_Jv_AttachCurrentThread (jstring name, java::lang::ThreadGroup* group); - friend java::lang::Thread* ::_Jv_AttachCurrentThreadAsDaemon (jstring name, java::lang::ThreadGroup* group); - friend jint (::_Jv_DetachCurrentThread) (); -+friend _Jv_Frame *::_Jv_ThreadStackPeek (java::lang::Thread *thread); -+friend void ::_Jv_ThreadStackPush (java::lang::Thread *thread, _Jv_Frame *frame); -+friend void ::_Jv_ThreadStackPop (java::lang::Thread *thread); - - class java/lang/String - prepend jchar* _Jv_GetStringChars (jstring str); ---- libjava/gnu/classpath/jdwp/natVMFrame.cc (revision 128603) -+++ libjava/gnu/classpath/jdwp/natVMFrame.cc (working copy) -@@ -181,7 +181,7 @@ - getFrameDepth (_Jv_Frame *frame) - { - jint depth = 0; -- _Jv_Frame *top_frame = (_Jv_Frame *) frame->thread->frame; -+ _Jv_Frame *top_frame = _Jv_ThreadStackPeek (frame->thread); - jint num_frames = VMVirtualMachine::getFrameCount (frame->thread); - - while (frame != top_frame) ---- libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc (revision 128603) -+++ libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc (working copy) -@@ -553,7 +553,7 @@ - - frame_list = new ::java::util::ArrayList (num_frames); - -- _Jv_Frame *vm_frame = reinterpret_cast<_Jv_Frame *> (thread->frame); -+ _Jv_Frame *vm_frame = _Jv_ThreadStackPeek (thread); - - // Take start frames off the top of the stack - while (vm_frame != NULL && start > 0) -@@ -584,7 +584,7 @@ - { - using namespace gnu::classpath::jdwp::exception; - -- _Jv_Frame *vm_frame = (_Jv_Frame *) thread->frame; -+ _Jv_Frame *vm_frame = _Jv_ThreadStackPeek (thread); - jint depth = 0; - _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (frameID); - ---- libjava/java/lang/Thread.java (revision 128603) -+++ libjava/java/lang/Thread.java (working copy) -@@ -186,9 +186,6 @@ - // This describes the top-most interpreter frame for this thread. - RawData interp_frame; - -- // This describes the top most frame in the composite (interp + JNI) stack -- RawData frame; -- - // Current state. - volatile int state; - ---- libjava/java/lang/natThread.cc (revision 128603) -+++ libjava/java/lang/natThread.cc (working copy) -@@ -15,6 +15,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -525,3 +526,25 @@ - - return 0; - } -+ -+_Jv_Frame * -+_Jv_ThreadStackPeek (java::lang::Thread *thread) -+{ -+ struct natThread *nt = (natThread *) thread->data; -+ return nt->frame; -+} -+ -+void -+_Jv_ThreadStackPush (java::lang::Thread *thread, _Jv_Frame *frame) -+{ -+ struct natThread *nt = (natThread *) thread->data; -+ nt->frame = frame; -+} -+ -+void -+_Jv_ThreadStackPop (java::lang::Thread *thread) -+{ -+ struct natThread *nt = (natThread *) thread->data; -+ _Jv_Frame *next = nt->frame->next; -+ nt->frame = next; -+} diff --git a/gcc41-libjava-visibility.patch b/gcc41-libjava-visibility.patch deleted file mode 100644 index 763ecc3..0000000 --- a/gcc41-libjava-visibility.patch +++ /dev/null @@ -1,145 +0,0 @@ -2007-03-29 Andrew Haley - - * jvgenmain.c (main): Change main to use class$, not class$$. - (do_mangle_classname): Likewise. - * class.c (hide): New function. - (add_field): Hide everything that shouldn't be visible outside a - DSO. - (build_static_class_ref): Likewise. - (build_classdollar_field): Likewise. - (make_class_data): Likewise. - (layout_class_method): Likewise. - * expr.c (special_method_p): New function. - ---- gcc/java/class.c (revision 122746) -+++ gcc/java/class.c (working copy) -@@ -689,6 +688,13 @@ - return fntype; - } - -+static void -+hide (tree decl) -+{ -+ DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; -+ DECL_VISIBILITY_SPECIFIED (decl) = 1; -+} -+ - tree - add_method_1 (tree this_class, int access_flags, tree name, tree function_type) - { -@@ -799,6 +805,10 @@ - /* Always make field externally visible. This is required so - that native methods can always access the field. */ - TREE_PUBLIC (field) = 1; -+ /* Hide everything that shouldn't be visible outside a DSO. */ -+ if (flag_indirect_classes -+ || (FIELD_PRIVATE (field))) -+ hide (field); - /* Considered external unless we are compiling it into this - object file. */ - DECL_EXTERNAL (field) = (is_compiled_class (class) != 2); -@@ -956,7 +966,11 @@ - decl = build_decl (VAR_DECL, decl_name, class_type_node); - TREE_STATIC (decl) = 1; - if (! flag_indirect_classes) -- TREE_PUBLIC (decl) = 1; -+ { -+ TREE_PUBLIC (decl) = 1; -+ if (CLASS_PRIVATE (TYPE_NAME (type))) -+ hide (decl); -+ } - DECL_IGNORED_P (decl) = 1; - DECL_ARTIFICIAL (decl) = 1; - if (is_compiled_class (type) == 1) -@@ -995,6 +1009,7 @@ - TREE_CONSTANT (decl) = 1; - TREE_READONLY (decl) = 1; - TREE_PUBLIC (decl) = 1; -+ hide (decl); - DECL_IGNORED_P (decl) = 1; - DECL_ARTIFICIAL (decl) = 1; - MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC (decl); -@@ -1640,6 +1655,10 @@ - - TREE_PUBLIC (dtable_decl) = 1; - DECL_INITIAL (dtable_decl) = dtable; -+ /* The only dispatch table exported from a DSO is the dispatch -+ table for java.lang.Class. */ -+ if (DECL_NAME (type_decl) != id_class) -+ hide (dtable_decl); - if (! flag_indirect_classes) - rest_of_decl_compilation (dtable_decl, 1, 0); - /* Maybe we're compiling Class as the first class. If so, set -@@ -2509,6 +2528,12 @@ - - TREE_PUBLIC (method_decl) = 1; - -+ if (flag_indirect_classes -+ || (METHOD_PRIVATE (method_decl) && METHOD_STATIC (method_decl) -+ && ! METHOD_NATIVE (method_decl) -+ && ! special_method_p (method_decl))) -+ hide (method_decl); -+ - /* Considered external unless it is being compiled into this object - file, or it was already flagged as external. */ - if (!DECL_EXTERNAL (method_decl)) ---- gcc/java/jvgenmain.c (revision 122746) -+++ gcc/java/jvgenmain.c (working copy) -@@ -143,8 +143,8 @@ - fprintf (stream, " JvRunMainName (\"%s\", argc, argv);\n", classname); - else - { -- fprintf (stream, " extern void *%s;\n", mangled_classname); -- fprintf (stream, " JvRunMain (%s, argc, argv);\n", mangled_classname); -+ fprintf (stream, " extern char %s;\n", mangled_classname); -+ fprintf (stream, " JvRunMain (&%s, argc, argv);\n", mangled_classname); - } - fprintf (stream, "}\n"); - if (stream != stdout && fclose (stream) != 0) -@@ -176,7 +176,7 @@ - count++; - } - append_gpp_mangled_name (&ptr [-count], count); -- obstack_grow (mangle_obstack, "7class$$E", strlen ("7class$$E")); -+ obstack_grow (mangle_obstack, "6class$E", strlen ("6class$E")); - obstack_1grow (mangle_obstack, '\0'); - return obstack_finish (mangle_obstack); - } ---- gcc/java/expr.c (revision 122746) -+++ gcc/java/expr.c (working copy) -@@ -2121,6 +2121,25 @@ - - {NULL, NULL, NULL, NULL, 0, NULL}}; - -+/* True if this method is special, i.e. it's a private method that -+ should be exported fro a DSO. */ -+ -+bool -+special_method_p (tree candidate_method) -+{ -+ tree context = DECL_NAME (TYPE_NAME (DECL_CONTEXT (candidate_method))); -+ tree method = DECL_NAME (candidate_method); -+ rewrite_rule *p; -+ -+ for (p = rules; p->classname; p++) -+ { -+ if (get_identifier (p->classname) == context -+ && get_identifier (p->method) == method) -+ return true; -+ } -+ return false; -+} -+ - /* Scan the rules list for replacements for *METHOD_P and replace the - args accordingly. If the rewrite results in an access to a private - method, update SPECIAL.*/ ---- gcc/java/java-tree.h (revision 122746) -+++ gcc/java/java-tree.h (working copy) -@@ -1171,6 +1171,7 @@ - extern void initialize_builtins (void); - - extern tree lookup_name (tree); -+extern bool special_method_p (tree); - extern void maybe_rewrite_invocation (tree *, tree *, tree *, tree *); - extern tree build_known_method_ref (tree, tree, tree, tree, tree, tree); - extern tree build_class_init (tree, tree); diff --git a/gcc41-omp-outer-ctx.patch b/gcc41-omp-outer-ctx.patch deleted file mode 100644 index 7f0b1f6..0000000 --- a/gcc41-omp-outer-ctx.patch +++ /dev/null @@ -1,133 +0,0 @@ -2007-12-03 Jakub Jelinek - - * omp-low.c (lookup_decl_in_outer_ctx): Allow calling this - with !ctx->is_nested. - (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts - even if !ctx->is_nested. - (lower_copyprivate_clauses, lower_send_clauses, - lower_send_shared_vars): Call lookup_decl_in_outer_ctx - unconditionally. - - * testsuite/libgomp.c/private-1.c: New test. - ---- gcc/omp-low.c (revision 130589) -+++ gcc/omp-low.c (revision 130590) -@@ -1518,12 +1518,10 @@ lookup_decl_in_outer_ctx (tree decl, omp - tree t; - omp_context *up; - -- gcc_assert (ctx->is_nested); -- - for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer) - t = maybe_lookup_decl (decl, up); - -- gcc_assert (t || is_global_var (decl)); -+ gcc_assert (!ctx->is_nested || t || is_global_var (decl)); - - return t ? t : decl; - } -@@ -1538,9 +1536,8 @@ maybe_lookup_decl_in_outer_ctx (tree dec - tree t = NULL; - omp_context *up; - -- if (ctx->is_nested) -- for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer) -- t = maybe_lookup_decl (decl, up); -+ for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer) -+ t = maybe_lookup_decl (decl, up); - - return t ? t : decl; - } -@@ -2012,7 +2009,7 @@ lower_copyprivate_clauses (tree clauses, - by_ref = use_pointer_for_field (var, false); - - ref = build_sender_ref (var, ctx); -- x = (ctx->is_nested) ? lookup_decl_in_outer_ctx (var, ctx) : var; -+ x = lookup_decl_in_outer_ctx (var, ctx); - x = by_ref ? build_fold_addr_expr (x) : x; - x = build_gimple_modify_stmt (ref, x); - gimplify_and_add (x, slist); -@@ -2053,9 +2050,8 @@ lower_send_clauses (tree clauses, tree * - continue; - } - -- var = val = OMP_CLAUSE_DECL (c); -- if (ctx->is_nested) -- var = lookup_decl_in_outer_ctx (val, ctx); -+ val = OMP_CLAUSE_DECL (c); -+ var = lookup_decl_in_outer_ctx (val, ctx); - - if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_COPYIN - && is_global_var (var)) -@@ -2127,13 +2123,10 @@ lower_send_shared_vars (tree *ilist, tre - if (!nvar || !DECL_HAS_VALUE_EXPR_P (nvar)) - continue; - -- var = ovar; -- - /* If CTX is a nested parallel directive. Find the immediately - enclosing parallel or workshare construct that contains a - mapping for OVAR. */ -- if (ctx->is_nested) -- var = lookup_decl_in_outer_ctx (ovar, ctx); -+ var = lookup_decl_in_outer_ctx (ovar, ctx); - - if (use_pointer_for_field (ovar, true)) - { ---- libgomp/testsuite/libgomp.c/private-1.c (revision 0) -+++ libgomp/testsuite/libgomp.c/private-1.c (revision 130590) -@@ -0,0 +1,54 @@ -+extern void abort (void); -+ -+int a = 18; -+ -+void -+f1 (int i, int j, int k) -+{ -+ int l = 6, m = 7, n = 8; -+#pragma omp parallel private(j, m) shared(k, n) firstprivate(i, l) \ -+ num_threads(1) -+ { -+ j = 6; -+ m = 5; -+ if (++a != 19 || ++i != 9 || j != 6 || ++l != 7 || m != 5 || ++n != 9) -+ #pragma omp atomic -+ k++; -+ } -+ if (a != 19 || i != 8 || j != 26 || k != 0 || l != 6 || m != 7 || n != 9) -+ abort (); -+} -+ -+int v1 = 1, v2 = 2, v5 = 5; -+int err; -+ -+void -+f2 (void) -+{ -+ int v3 = 3; -+#pragma omp sections private (v1) firstprivate (v2) -+ { -+ #pragma omp section -+ { -+ int v4 = 4; -+ v1 = 7; -+ #pragma omp parallel num_threads(1) firstprivate(v1, v2, v3, v4) -+ { -+ if (++v1 != 8 || ++v2 != 3 || ++v3 != 4 || ++v4 != 5 || ++v5 != 6) -+ err = 1; -+ } -+ if (v1 != 7 || v2 != 2 || v3 != 3 || v4 != 4 || v5 != 6) -+ abort (); -+ if (err) -+ abort (); -+ } -+ } -+} -+ -+int -+main (void) -+{ -+ f1 (8, 26, 0); -+ f2 (); -+ return 0; -+} diff --git a/gcc41-ppc64-m32-m64-multilib-only.patch b/gcc41-ppc64-m32-m64-multilib-only.patch deleted file mode 100644 index 00dbeac..0000000 --- a/gcc41-ppc64-m32-m64-multilib-only.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc/config/rs6000/t-linux64 2003-06-03 05:11:45.000000000 -0400 -+++ gcc/config/rs6000/t-linux64 2003-06-11 17:07:16.000000000 -0400 -@@ -4,13 +4,13 @@ LIB2FUNCS_EXTRA = tramp.S $(srcdir)/conf - # Modify the shared lib version file - SHLIB_MKMAP_OPTS = -v dotsyms=1 - --MULTILIB_OPTIONS = m64/m32 msoft-float --MULTILIB_DIRNAMES = 64 32 nof -+MULTILIB_OPTIONS = m64/m32 -+MULTILIB_DIRNAMES = 64 32 - MULTILIB_EXTRA_OPTS = fPIC mstrict-align --MULTILIB_EXCEPTIONS = m64/msoft-float --MULTILIB_EXCLUSIONS = m64/!m32/msoft-float --MULTILIB_OSDIRNAMES = ../lib64 ../lib nof --MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) -+MULTILIB_EXCEPTIONS = -+MULTILIB_EXCLUSIONS = -+MULTILIB_OSDIRNAMES = ../lib64 ../lib -+MULTILIB_MATCHES = - - TARGET_LIBGCC2_CFLAGS = -mno-minimal-toc -fPIC - diff --git a/gcc41-pr20297-test.patch b/gcc41-pr20297-test.patch deleted file mode 100644 index 5be2012..0000000 --- a/gcc41-pr20297-test.patch +++ /dev/null @@ -1,62 +0,0 @@ -2006-04-06 Jakub Jelinek - - PR middle-end/20297 - * gcc.dg/visibility-11.c: Moved to... - * gcc.target/i386/visibility-1.c: ... here. Only run on - 32-bit linux and bsds. - ---- gcc/testsuite/gcc.dg/visibility-11.c.jj 2006-03-24 17:07:15.000000000 +0100 -+++ gcc/testsuite/gcc.dg/visibility-11.c 2006-03-28 14:59:27.000000000 +0200 -@@ -1,24 +0,0 @@ --/* PR middle-end/20297 */ --/* The memcpy FUNCTION_DECL built in the middle-end for block moves got -- hidden visibility from the first push, so the call didn't use the PLT. */ -- --/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ --/* { dg-require-visibility "" } */ --/* { dg-options "-Os -fpic" } --/* { dg-final { scan-assembler "memcpy@PLT" } } */ -- --#pragma GCC visibility push(hidden) --#pragma GCC visibility push(default) --extern void* memcpy (void *, const void *, __SIZE_TYPE__); --#pragma GCC visibility pop -- --struct a { int a[1024]; }; -- --extern void *bar (struct a *, struct a *, int); -- --void * --foo (struct a *a, struct a *b, int c) --{ -- struct a cc = *b; -- return bar (a, &cc, 4 * c); --} ---- gcc/testsuite/gcc.target/i386/visibility-1.c.jj 2006-03-28 14:30:17.000000000 +0200 -+++ gcc/testsuite/gcc.target/i386/visibility-1.c 2006-03-28 14:58:48.000000000 +0200 -@@ -0,0 +1,25 @@ -+/* PR middle-end/20297 */ -+/* The memcpy FUNCTION_DECL built in the middle-end for block moves got -+ hidden visibility from the first push, so the call didn't use the PLT. */ -+ -+/* { dg-do compile { target { { *-*-linux* *-*-*bsd* *-*-solaris2* *-*-elf* *-*-gnu* *-*-sysv[45]* } && ilp32 } } } */ -+/* { dg-require-effective-target fpic } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-Os -fpic" } */ -+/* { dg-final { scan-assembler "memcpy@PLT" } } */ -+ -+#pragma GCC visibility push(hidden) -+#pragma GCC visibility push(default) -+extern void* memcpy (void *, const void *, __SIZE_TYPE__); -+#pragma GCC visibility pop -+ -+struct a { int a[1024]; }; -+ -+extern void *bar (struct a *, struct a *, int); -+ -+void * -+foo (struct a *a, struct a *b, int c) -+{ -+ struct a cc = *b; -+ return bar (a, &cc, 4 * c); -+} diff --git a/gcc41-pr20880.patch b/gcc41-pr20880.patch deleted file mode 100644 index be72a81..0000000 --- a/gcc41-pr20880.patch +++ /dev/null @@ -1,59 +0,0 @@ -2006-11-24 Paul Thomas - - PR fortran/20880 - * parse.c (parse_interface): Error if procedure name is that of - encompassing scope. - - * gfortran.dg/interface_3a.f90: New test. - ---- gcc/fortran/parse.c (revision 119172) -+++ gcc/fortran/parse.c (revision 119173) -@@ -1694,6 +1694,7 @@ parse_interface (void) - gfc_interface_info save; - gfc_state_data s1, s2; - gfc_statement st; -+ locus proc_locus; - - accept_statement (ST_INTERFACE); - -@@ -1781,6 +1782,7 @@ loop: - accept_statement (st); - prog_unit = gfc_new_block; - prog_unit->formal_ns = gfc_current_ns; -+ proc_locus = gfc_current_locus; - - decl: - /* Read data declaration statements. */ -@@ -1796,8 +1798,15 @@ decl: - - current_interface = save; - gfc_add_interface (prog_unit); -- - pop_state (); -+ -+ if (current_interface.ns -+ && current_interface.ns->proc_name -+ && strcmp (current_interface.ns->proc_name->name, -+ prog_unit->name) == 0) -+ gfc_error ("INTERFACE procedure '%s' at %L has the same name as the " -+ "enclosing procedure", prog_unit->name, &proc_locus); -+ - goto loop; - - done: ---- gcc/testsuite/gfortran.dg/interface_3a.f90 -+++ gcc/testsuite/gfortran.dg/interface_3a.f90 -@@ -0,0 +1,13 @@ -+! { dg-do compile } -+! Contributed by Joost VandeVondele -+! -+! This was found whilst investigating => segfault -+subroutine thy_sub (a) -+ interface -+ subroutine thy_sub (a) ! { dg-error "enclosing procedure" } -+ real a -+ end subroutine -+ end interface -+ real a -+ print *, a -+end subroutine diff --git a/gcc41-pr23848.patch b/gcc41-pr23848.patch deleted file mode 100644 index 1fef579..0000000 --- a/gcc41-pr23848.patch +++ /dev/null @@ -1,225 +0,0 @@ -2007-11-15 Jakub Jelinek - - PR middle-end/23848 - * tree-ssa-ccp.c (optimize_stack_restore): New function. - (execute_fold_all_builtins): Call optimize_stack_restore for - BUILT_IN_STACK_RESTORE. - - * gcc.dg/tree-ssa/pr23848-1.c: New test. - * gcc.dg/tree-ssa/pr23848-2.c: New test. - * gcc.dg/tree-ssa/pr23848-3.c: New test. - * gcc.dg/tree-ssa/pr23848-4.c: New test. - ---- gcc/tree-ssa-ccp.c (revision 130205) -+++ gcc/tree-ssa-ccp.c (revision 130206) -@@ -2394,6 +2394,75 @@ fold_stmt_inplace (tree stmt) - return changed; - } - -+/* Try to optimize out __builtin_stack_restore. Optimize it out -+ if there is another __builtin_stack_restore in the same basic -+ block and no calls or ASM_EXPRs are in between, or if this block's -+ only outgoing edge is to EXIT_BLOCK and there are no calls or -+ ASM_EXPRs after this __builtin_stack_restore. */ -+ -+static tree -+optimize_stack_restore (basic_block bb, tree call, block_stmt_iterator i) -+{ -+ tree stack_save, stmt, callee; -+ -+ if (TREE_CODE (call) != CALL_EXPR -+ || TREE_OPERAND (call, 1) == NULL_TREE -+ || TREE_CHAIN (TREE_OPERAND (call, 1)) != NULL_TREE -+ || TREE_CODE (TREE_VALUE (TREE_OPERAND (call, 1))) != SSA_NAME -+ || !POINTER_TYPE_P (TREE_TYPE (TREE_VALUE (TREE_OPERAND (call, 1))))) -+ return NULL_TREE; -+ -+ for (bsi_next (&i); !bsi_end_p (i); bsi_next (&i)) -+ { -+ tree call; -+ -+ stmt = bsi_stmt (i); -+ if (TREE_CODE (stmt) == ASM_EXPR) -+ return NULL_TREE; -+ call = get_call_expr_in (stmt); -+ if (call == NULL) -+ continue; -+ -+ callee = get_callee_fndecl (call); -+ if (!callee || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL) -+ return NULL_TREE; -+ -+ if (DECL_FUNCTION_CODE (callee) == BUILT_IN_STACK_RESTORE) -+ break; -+ } -+ -+ if (bsi_end_p (i) -+ && (! single_succ_p (bb) -+ || single_succ_edge (bb)->dest != EXIT_BLOCK_PTR)) -+ return NULL_TREE; -+ -+ stack_save = SSA_NAME_DEF_STMT (TREE_VALUE (TREE_OPERAND (call, 1))); -+ if (TREE_CODE (stack_save) != MODIFY_EXPR -+ || TREE_OPERAND (stack_save, 0) -+ != TREE_VALUE (TREE_OPERAND (call, 1)) -+ || TREE_CODE (TREE_OPERAND (stack_save, 1)) != CALL_EXPR -+ || tree_could_throw_p (stack_save) -+ || !has_single_use (TREE_VALUE (TREE_OPERAND (call, 1)))) -+ return NULL_TREE; -+ -+ callee = get_callee_fndecl (TREE_OPERAND (stack_save, 1)); -+ if (!callee -+ || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL -+ || DECL_FUNCTION_CODE (callee) != BUILT_IN_STACK_SAVE -+ || TREE_OPERAND (TREE_OPERAND (stack_save, 1), 1) != NULL_TREE) -+ return NULL_TREE; -+ -+ stmt = stack_save; -+ if (!set_rhs (&stmt, -+ build_int_cst (TREE_TYPE (TREE_VALUE (TREE_OPERAND (call, -+ 1))), 0))) -+ return NULL_TREE; -+ gcc_assert (stmt == stack_save); -+ mark_new_vars_to_rename (stmt); -+ -+ return integer_zero_node; -+} -+ - /* Convert EXPR into a GIMPLE value suitable for substitution on the - RHS of an assignment. Insert the necessary statements before - iterator *SI_P. */ -@@ -2469,6 +2538,12 @@ execute_fold_all_builtins (void) - result = integer_zero_node; - break; - -+ case BUILT_IN_STACK_RESTORE: -+ result = optimize_stack_restore (bb, *stmtp, i); -+ if (result) -+ break; -+ /* FALLTHRU */ -+ - default: - bsi_next (&i); - continue; ---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c (revision 130206) -@@ -0,0 +1,32 @@ -+/* PR middle-end/23848 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-optimized" } */ -+ -+void bar1 (char *, int); -+void foo1 (int size) -+{ -+ char temp[size]; -+ temp[size-1] = '\0'; -+ bar1 (temp, size); -+} -+ -+void bar2 (char *, char *, char *, char *, int); -+void foo2 (int size) -+{ -+ char temp[size]; -+ temp[size-1] = '\0'; -+ { -+ char temp2[size]; -+ { -+ char temp3[size]; -+ { -+ char temp4[size]; -+ bar2 (temp, temp2, temp3, temp4, size); -+ } -+ } -+ } -+} -+ -+/* { dg-final { scan-tree-dump-not "__builtin_stack_save" "optimized"} } */ -+/* { dg-final { scan-tree-dump-not "__builtin_stack_restore" "optimized"} } */ -+/* { dg-final { cleanup-tree-dump "optimized" } } */ ---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-2.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-2.c (revision 130206) -@@ -0,0 +1,25 @@ -+/* PR middle-end/23848 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-optimized" } */ -+ -+void bar (char *, char *, char *, char *, int); -+void foo (int size) -+{ -+ char temp[size]; -+ temp[size-1] = '\0'; -+ { -+ char temp2[size]; -+ { -+ char temp3[size]; -+ { -+ char temp4[size]; -+ bar (temp, temp2, temp3, temp4, size); -+ } -+ } -+ bar (temp, temp2, (char *) 0, (char *) 0, size); -+ } -+} -+ -+/* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */ -+/* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */ -+/* { dg-final { cleanup-tree-dump "optimized" } } */ ---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-3.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-3.c (revision 130206) -@@ -0,0 +1,28 @@ -+/* PR middle-end/23848 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-optimized" } */ -+ -+void bar (int, char *, char *, char *, char *, int); -+void foo (int size) -+{ -+ int i; -+ for (i = 0; i < size; i++) -+ { -+ char temp[size]; -+ temp[size-1] = '\0'; -+ { -+ char temp2[size]; -+ { -+ char temp3[size]; -+ { -+ char temp4[size]; -+ bar (i, temp, temp2, temp3, temp4, size); -+ } -+ } -+ } -+ } -+} -+ -+/* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */ -+/* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */ -+/* { dg-final { cleanup-tree-dump "optimized" } } */ ---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-4.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-4.c (revision 130206) -@@ -0,0 +1,25 @@ -+/* PR middle-end/23848 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-optimized" } */ -+ -+void bar (char *, char *, char *, char *, int); -+void foo (int size) -+{ -+ char temp[size]; -+ temp[size-1] = '\0'; -+ { -+ char temp2[size]; -+ { -+ char temp3[size]; -+ { -+ char temp4[size]; -+ bar (temp, temp2, temp3, temp4, size); -+ } -+ } -+ __asm __volatile ("" : : "r" (&temp[0]), "r" (&temp2[0]) : "memory"); -+ } -+} -+ -+/* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */ -+/* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */ -+/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc41-pr27898.patch b/gcc41-pr27898.patch deleted file mode 100644 index 86bf862..0000000 --- a/gcc41-pr27898.patch +++ /dev/null @@ -1,92 +0,0 @@ -2006-07-06 Alexandre Oliva - - PR c/27898 - * c-typeck.c (tagged_types_tu_compatible_p): Enable exact - matches between anonymous union fields. - -2006-08-18 Jakub Jelinek - - PR c/27898 - * gcc.dg/pr27898.c: New test. - ---- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200 -+++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200 -@@ -0,0 +1,8 @@ -+/* PR c/27898 */ -+/* { dg-do compile } */ -+/* { dg-options "--combine" } */ -+/* { dg-additional-sources "pr27898.c" } */ -+ -+union u { struct { int i; }; }; -+ -+extern int foo (union u *); ---- gcc/c-typeck.c.jj 2006-08-17 09:55:11.000000000 +0200 -+++ gcc/c-typeck.c 2006-08-18 09:14:15.000000000 +0200 -@@ -1072,11 +1072,12 @@ tagged_types_tu_compatible_p (tree t1, t - { - int result; - -- -- if (DECL_NAME (s1) == NULL -- || DECL_NAME (s1) != DECL_NAME (s2)) -+ if (DECL_NAME (s1) != DECL_NAME (s2)) - break; - result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2)); -+ -+ if (result != 1 && !DECL_NAME (s1)) -+ break; - if (result == 0) - { - tu->val = 0; -@@ -1103,28 +1104,31 @@ tagged_types_tu_compatible_p (tree t1, t - { - bool ok = false; - -- if (DECL_NAME (s1) != NULL) -- for (s2 = TYPE_FIELDS (t2); s2; s2 = TREE_CHAIN (s2)) -- if (DECL_NAME (s1) == DECL_NAME (s2)) -- { -- int result; -- result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2)); -- if (result == 0) -- { -- tu->val = 0; -- return 0; -- } -- if (result == 2) -- needs_warning = true; -- -- if (TREE_CODE (s1) == FIELD_DECL -- && simple_cst_equal (DECL_FIELD_BIT_OFFSET (s1), -- DECL_FIELD_BIT_OFFSET (s2)) != 1) -- break; -+ for (s2 = TYPE_FIELDS (t2); s2; s2 = TREE_CHAIN (s2)) -+ if (DECL_NAME (s1) == DECL_NAME (s2)) -+ { -+ int result; -+ -+ result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2)); - -- ok = true; -+ if (result != 1 && !DECL_NAME (s1)) -+ continue; -+ if (result == 0) -+ { -+ tu->val = 0; -+ return 0; -+ } -+ if (result == 2) -+ needs_warning = true; -+ -+ if (TREE_CODE (s1) == FIELD_DECL -+ && simple_cst_equal (DECL_FIELD_BIT_OFFSET (s1), -+ DECL_FIELD_BIT_OFFSET (s2)) != 1) - break; -- } -+ -+ ok = true; -+ break; -+ } - if (!ok) - { - tu->val = 0; diff --git a/gcc41-pr28690.patch b/gcc41-pr28690.patch deleted file mode 100644 index b1c2cc1..0000000 --- a/gcc41-pr28690.patch +++ /dev/null @@ -1,155 +0,0 @@ -2007-06-26 Jakub Jelinek - - * defaults.h (TARGET_INDEX_OPERAND_FIRST): Define. - * config/rs6000/rs6000.h (TARGET_INDEX_OPERAND_FIRST): Define. - * optabs.c (emit_cmp_and_jump_insns): Don't call swap_operand - twice. - * rtlanal.c (commutative_operand_precedence): Only prefer - REG_POINTER and MEM_POINTER operands over REG and MEM operands - if TARGET_INDEX_OPERAND_FIRST. - (swap_commutative_operands_p): Only sort on REGNO if - TARGET_INDEX_OPERAND_FIRST. - * tree-ssa-address.c (gen_addr_rtx): Only use simplify_gen_binary - instead of gen_rtx_PLUS if TARGET_INDEX_OPERAND_FIRST. - -2007-06-20 Peter Bergner - - PR middle-end/28690 - * optabs.c (emit_cmp_and_jump_insns): Allow EQ compares. - * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER - and MEM_POINTER operands over REG and MEM operands. - (swap_commutative_operands_p): In case of a tie, sort on REGNO. - * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary - instead of gen_rtx_PLUS. - ---- gcc/defaults.h.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/defaults.h 2007-06-26 00:32:16.000000000 +0200 -@@ -785,6 +785,10 @@ Software Foundation, 51 Franklin Street, - #define TARGET_C99_FUNCTIONS 0 - #endif - -+#ifndef TARGET_INDEX_OPERAND_FIRST -+#define TARGET_INDEX_OPERAND_FIRST 0 -+#endif -+ - /* Indicate that CLZ and CTZ are undefined at zero. */ - #ifndef CLZ_DEFINED_VALUE_AT_ZERO - #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0 ---- gcc/config/rs6000/rs6000.h.jj 2007-02-20 22:39:00.000000000 +0100 -+++ gcc/config/rs6000/rs6000.h 2007-06-26 00:33:32.000000000 +0200 -@@ -57,6 +57,8 @@ - #define PPC405_ERRATUM77 0 - #endif - -+#define TARGET_INDEX_OPERAND_FIRST (rs6000_cpu == PROCESSOR_POWER6) -+ - /* Common ASM definitions used by ASM_SPEC among the various targets - for handling -mcpu=xxx switches. */ - #define ASM_CPU_SPEC \ ---- gcc/optabs.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/optabs.c 2007-06-26 00:30:27.000000000 +0200 -@@ -3673,12 +3673,16 @@ emit_cmp_and_jump_insns (rtx x, rtx y, e - /* Swap operands and condition to ensure canonical RTL. */ - if (swap_commutative_operands_p (x, y)) - { -- /* If we're not emitting a branch, this means some caller -- is out of sync. */ -- gcc_assert (label); -+ enum rtx_code swapped_comparison = swap_condition (comparison); -+ -+ /* If we're not emitting a branch, callers are required to pass -+ operands in an order conforming to canonical RTL. We relax this -+ for commutative comparsions so callers using EQ don't need to do -+ swapping by hand. */ -+ gcc_assert (label || swapped_comparison == comparison); - - op0 = y, op1 = x; -- comparison = swap_condition (comparison); -+ comparison = swapped_comparison; - } - - #ifdef HAVE_cc0 ---- gcc/rtlanal.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/rtlanal.c 2007-06-26 00:28:56.000000000 +0200 -@@ -2890,9 +2890,9 @@ commutative_operand_precedence (rtx op) - - /* Constants always come the second operand. Prefer "nice" constants. */ - if (code == CONST_INT) -- return -7; -+ return -10; - if (code == CONST_DOUBLE) -- return -6; -+ return -9; - op = avoid_constant_pool_reference (op); - code = GET_CODE (op); - -@@ -2900,26 +2900,31 @@ commutative_operand_precedence (rtx op) - { - case RTX_CONST_OBJ: - if (code == CONST_INT) -- return -5; -+ return -8; - if (code == CONST_DOUBLE) -- return -4; -- return -3; -+ return -7; -+ return -6; - - case RTX_EXTRA: - /* SUBREGs of objects should come second. */ - if (code == SUBREG && OBJECT_P (SUBREG_REG (op))) -- return -2; -+ return -5; - - if (!CONSTANT_P (op)) - return 0; - else - /* As for RTX_CONST_OBJ. */ -- return -3; -+ return -6; - - case RTX_OBJ: - /* Complex expressions should be the first, so decrease priority - of objects. */ -- return -1; -+ if (!TARGET_INDEX_OPERAND_FIRST) -+ return -1; -+ if (REG_P (op)) -+ return (REG_POINTER (op)) ? -1 : -3; -+ else -+ return (MEM_P (op) && MEM_POINTER (op)) ? -2 : -4; - - case RTX_COMM_ARITH: - /* Prefer operands that are themselves commutative to be first. -@@ -2949,8 +2954,16 @@ commutative_operand_precedence (rtx op) - int - swap_commutative_operands_p (rtx x, rtx y) - { -- return (commutative_operand_precedence (x) -- < commutative_operand_precedence (y)); -+ int result = (commutative_operand_precedence (x) -+ - commutative_operand_precedence (y)); -+ if (!TARGET_INDEX_OPERAND_FIRST || result) -+ return result < 0; -+ -+ /* Group together equal REGs to do more simplification. */ -+ if (REG_P (x) && REG_P (y)) -+ return REGNO (x) > REGNO (y); -+ -+ return 0; - } - - /* Return 1 if X is an autoincrement side effect and the register is ---- gcc/tree-ssa-address.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/tree-ssa-address.c 2007-06-26 00:29:49.000000000 +0200 -@@ -124,7 +124,9 @@ gen_addr_rtx (rtx symbol, rtx base, rtx - if (base) - { - if (*addr) -- *addr = gen_rtx_PLUS (Pmode, *addr, base); -+ *addr = (TARGET_INDEX_OPERAND_FIRST -+ ? simplify_gen_binary (PLUS, Pmode, base, *addr) -+ : gen_rtx_PLUS (Pmode, *addr, base)); - else - *addr = base; - } diff --git a/gcc41-pr28755.patch b/gcc41-pr28755.patch deleted file mode 100644 index d6bb90a..0000000 --- a/gcc41-pr28755.patch +++ /dev/null @@ -1,230 +0,0 @@ -2007-09-23 Jakub Jelinek - - PR middle-end/28755 - * expr.c (expand_constructor): New function. - (expand_expr_real_1) : Call it. - (expand_expr_real_1) : Call it if VALUE is - CONSTRUCTOR. - - * gcc.dg/pr28755.c: New test. - ---- gcc/expr.c (revision 128684) -+++ gcc/expr.c (revision 128685) -@@ -6435,6 +6435,89 @@ expand_expr_addr_expr (tree exp, rtx tar - return result; - } - -+/* Generate code for computing CONSTRUCTOR EXP. -+ An rtx for the computed value is returned. If AVOID_TEMP_MEM -+ is TRUE, instead of creating a temporary variable in memory -+ NULL is returned and the caller needs to handle it differently. */ -+ -+static rtx -+expand_constructor (tree exp, rtx target, enum expand_modifier modifier, -+ bool avoid_temp_mem) -+{ -+ tree type = TREE_TYPE (exp); -+ enum machine_mode mode = TYPE_MODE (type); -+ -+ /* Try to avoid creating a temporary at all. This is possible -+ if all of the initializer is zero. -+ FIXME: try to handle all [0..255] initializers we can handle -+ with memset. */ -+ if (TREE_STATIC (exp) -+ && !TREE_ADDRESSABLE (exp) -+ && target != 0 && mode == BLKmode -+ && all_zeros_p (exp)) -+ { -+ clear_storage (target, expr_size (exp), BLOCK_OP_NORMAL); -+ return target; -+ } -+ -+ /* All elts simple constants => refer to a constant in memory. But -+ if this is a non-BLKmode mode, let it store a field at a time -+ since that should make a CONST_INT or CONST_DOUBLE when we -+ fold. Likewise, if we have a target we can use, it is best to -+ store directly into the target unless the type is large enough -+ that memcpy will be used. If we are making an initializer and -+ all operands are constant, put it in memory as well. -+ -+ FIXME: Avoid trying to fill vector constructors piece-meal. -+ Output them with output_constant_def below unless we're sure -+ they're zeros. This should go away when vector initializers -+ are treated like VECTOR_CST instead of arrays. */ -+ if ((TREE_STATIC (exp) -+ && ((mode == BLKmode -+ && ! (target != 0 && safe_from_p (target, exp, 1))) -+ || TREE_ADDRESSABLE (exp) -+ || (host_integerp (TYPE_SIZE_UNIT (type), 1) -+ && (! MOVE_BY_PIECES_P -+ (tree_low_cst (TYPE_SIZE_UNIT (type), 1), -+ TYPE_ALIGN (type))) -+ && ! mostly_zeros_p (exp)))) -+ || ((modifier == EXPAND_INITIALIZER || modifier == EXPAND_CONST_ADDRESS) -+ && TREE_CONSTANT (exp))) -+ { -+ rtx constructor; -+ -+ if (avoid_temp_mem) -+ return NULL_RTX; -+ -+ constructor = output_constant_def (exp, 1); -+ -+ if (modifier != EXPAND_CONST_ADDRESS -+ && modifier != EXPAND_INITIALIZER -+ && modifier != EXPAND_SUM) -+ constructor = validize_mem (constructor); -+ -+ return constructor; -+ } -+ -+ /* Handle calls that pass values in multiple non-contiguous -+ locations. The Irix 6 ABI has examples of this. */ -+ if (target == 0 || ! safe_from_p (target, exp, 1) -+ || GET_CODE (target) == PARALLEL || modifier == EXPAND_STACK_PARM) -+ { -+ if (avoid_temp_mem) -+ return NULL_RTX; -+ -+ target -+ = assign_temp (build_qualified_type (type, (TYPE_QUALS (type) -+ | (TREE_READONLY (exp) -+ * TYPE_QUAL_CONST))), -+ 0, TREE_ADDRESSABLE (exp), 1); -+ } -+ -+ store_constructor (exp, target, 0, int_expr_size (exp)); -+ return target; -+} -+ - - /* expand_expr: generate code for computing expression EXP. - An rtx for the computed value is returned. The value is never null. -@@ -6899,71 +6982,7 @@ expand_expr_real_1 (tree exp, rtx target - return const0_rtx; - } - -- /* Try to avoid creating a temporary at all. This is possible -- if all of the initializer is zero. -- FIXME: try to handle all [0..255] initializers we can handle -- with memset. */ -- else if (TREE_STATIC (exp) -- && !TREE_ADDRESSABLE (exp) -- && target != 0 && mode == BLKmode -- && all_zeros_p (exp)) -- { -- clear_storage (target, expr_size (exp), BLOCK_OP_NORMAL); -- return target; -- } -- -- /* All elts simple constants => refer to a constant in memory. But -- if this is a non-BLKmode mode, let it store a field at a time -- since that should make a CONST_INT or CONST_DOUBLE when we -- fold. Likewise, if we have a target we can use, it is best to -- store directly into the target unless the type is large enough -- that memcpy will be used. If we are making an initializer and -- all operands are constant, put it in memory as well. -- -- FIXME: Avoid trying to fill vector constructors piece-meal. -- Output them with output_constant_def below unless we're sure -- they're zeros. This should go away when vector initializers -- are treated like VECTOR_CST instead of arrays. -- */ -- else if ((TREE_STATIC (exp) -- && ((mode == BLKmode -- && ! (target != 0 && safe_from_p (target, exp, 1))) -- || TREE_ADDRESSABLE (exp) -- || (host_integerp (TYPE_SIZE_UNIT (type), 1) -- && (! MOVE_BY_PIECES_P -- (tree_low_cst (TYPE_SIZE_UNIT (type), 1), -- TYPE_ALIGN (type))) -- && ! mostly_zeros_p (exp)))) -- || ((modifier == EXPAND_INITIALIZER -- || modifier == EXPAND_CONST_ADDRESS) -- && TREE_CONSTANT (exp))) -- { -- rtx constructor = output_constant_def (exp, 1); -- -- if (modifier != EXPAND_CONST_ADDRESS -- && modifier != EXPAND_INITIALIZER -- && modifier != EXPAND_SUM) -- constructor = validize_mem (constructor); -- -- return constructor; -- } -- else -- { -- /* Handle calls that pass values in multiple non-contiguous -- locations. The Irix 6 ABI has examples of this. */ -- if (target == 0 || ! safe_from_p (target, exp, 1) -- || GET_CODE (target) == PARALLEL -- || modifier == EXPAND_STACK_PARM) -- target -- = assign_temp (build_qualified_type (type, -- (TYPE_QUALS (type) -- | (TREE_READONLY (exp) -- * TYPE_QUAL_CONST))), -- 0, TREE_ADDRESSABLE (exp), 1); -- -- store_constructor (exp, target, 0, int_expr_size (exp)); -- return target; -- } -+ return expand_constructor (exp, target, modifier, false); - - case MISALIGNED_INDIRECT_REF: - case ALIGN_INDIRECT_REF: -@@ -7105,10 +7124,25 @@ expand_expr_real_1 (tree exp, rtx target - field, value) - if (tree_int_cst_equal (field, index)) - { -- if (!TREE_SIDE_EFFECTS (value)) -- return expand_expr (fold (value), target, tmode, -- modifier); -- break; -+ if (TREE_SIDE_EFFECTS (value)) -+ break; -+ -+ if (TREE_CODE (value) == CONSTRUCTOR) -+ { -+ /* If VALUE is a CONSTRUCTOR, this -+ optimization is only useful if -+ this doesn't store the CONSTRUCTOR -+ into memory. If it does, it is more -+ efficient to just load the data from -+ the array directly. */ -+ rtx ret = expand_constructor (value, target, -+ modifier, true); -+ if (ret == NULL_RTX) -+ break; -+ } -+ -+ return expand_expr (fold (value), target, tmode, -+ modifier); - } - } - else if(TREE_CODE (init) == STRING_CST) ---- gcc/testsuite/gcc.dg/pr28755.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr28755.c (revision 128685) -@@ -0,0 +1,22 @@ -+/* PR middle-end/28755 */ -+/* { dg-do compile } */ -+/* { dg-options "-Os" } */ -+/* { dg-final { scan-assembler-times "2112543726\|7deadbee" 2 } } */ -+ -+struct S -+{ -+ void *s1; -+ unsigned s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14; -+}; -+ -+const struct S array[] = { -+ { (void *) 0, 60, 640, 2112543726, 39682, 48, 16, 33, 10, 96, 2, 0, 0, 4 }, -+ { (void *) 0, 60, 2112543726, 192, 18251, 16, 33, 10, 96, 2, 0, 0, 4, 212 } -+}; -+ -+void -+foo (struct S *x) -+{ -+ x[0] = array[0]; -+ x[5] = array[1]; -+} diff --git a/gcc41-pr29225.patch b/gcc41-pr29225.patch deleted file mode 100644 index 995cd8c..0000000 --- a/gcc41-pr29225.patch +++ /dev/null @@ -1,50 +0,0 @@ -2007-11-13 Jakub Jelinek - - PR c++/29225 - * call.c (build_new_op): Call resolve_args before calling - build_over_call. - - * g++.dg/template/crash72.C: New test. - ---- gcc/cp/call.c (revision 130125) -+++ gcc/cp/call.c (revision 130126) -@@ -3918,7 +3918,10 @@ build_new_op (enum tree_code code, int f - if (overloaded_p) - *overloaded_p = true; - -- result = build_over_call (cand, LOOKUP_NORMAL); -+ if (resolve_args (arglist) == error_mark_node) -+ result = error_mark_node; -+ else -+ result = build_over_call (cand, LOOKUP_NORMAL); - } - else - { ---- gcc/testsuite/g++.dg/template/crash72.C (revision 0) -+++ gcc/testsuite/g++.dg/template/crash72.C (revision 130126) -@@ -0,0 +1,25 @@ -+// PR c++/29225 -+// { dg-do compile } -+ -+template bool operator< (L x, R y); -+struct T { int t (); }; -+class S {}; -+ -+struct U -+{ -+ typedef int (T::* M) (); -+ M m; -+ -+ bool operator() (S &x) -+ { -+ T a; -+ return (a.*m) < x; // { dg-error "invalid use of non-static member" } -+ } -+}; -+ -+void foo (S &x) -+{ -+ U m; -+ m.m = &T::t; -+ m (x); -+} diff --git a/gcc41-pr29712.patch b/gcc41-pr29712.patch deleted file mode 100644 index ea130c8..0000000 --- a/gcc41-pr29712.patch +++ /dev/null @@ -1,55 +0,0 @@ -2007-01-15 Paul Thomas - - PR fortran/29712 - * resolve.c (resolve_function): Only a reference to the final - dimension of an assumed size array is an error in an inquiry - function. - - * gfortran.dg/bound_2.f90: Reinstate commented out line. - * gfortran.dg/initialization_1.f90: Change warning. - ---- gcc/fortran/resolve.c (revision 120789) -+++ gcc/fortran/resolve.c (revision 120790) -@@ -1498,10 +1498,16 @@ resolve_function (gfc_expr * expr) - - for (arg = expr->value.function.actual; arg; arg = arg->next) - { -- if (inquiry && arg->next != NULL && arg->next->expr -- && arg->next->expr->expr_type != EXPR_CONSTANT) -- break; -- -+ if (inquiry && arg->next != NULL && arg->next->expr) -+ { -+ if (arg->next->expr->expr_type != EXPR_CONSTANT) -+ break; -+ -+ if ((int)mpz_get_si (arg->next->expr->value.integer) -+ < arg->expr->rank) -+ break; -+ } -+ - if (arg->expr != NULL - && arg->expr->rank > 0 - && resolve_assumed_size_actual (arg->expr)) ---- gcc/testsuite/gfortran.dg/initialization_1.f90 (revision 120789) -+++ gcc/testsuite/gfortran.dg/initialization_1.f90 (revision 120790) -@@ -27,7 +27,7 @@ contains - integer :: l1 = len (ch1) ! { dg-warning "assumed character length variable" } - - ! These are warnings because they are gfortran extensions. -- integer :: m3 = size (x, 1) ! { dg-warning "upper bound in the last dimension" } -+ integer :: m3 = size (x, 1) ! { dg-warning "Evaluation of nonstandard initialization" } - integer :: m4(2) = shape (z) ! { dg-warning "Evaluation of nonstandard initialization" } - - ! This does not depend on non-constant properties. ---- gcc/testsuite/gfortran.dg/bound_2.f90 (revision 120789) -+++ gcc/testsuite/gfortran.dg/bound_2.f90 (revision 120790) -@@ -194,7 +194,7 @@ contains - subroutine foo (x,n) - integer :: x(7,n,2,*), n - -- !if (ubound(x,1) /= 7 .or. ubound(x,2) /= 4 .or. ubound(x,3) /= 2) call abort -+ if (ubound(x,1) /= 7 .or. ubound(x,2) /= 4 .or. ubound(x,3) /= 2) call abort - end subroutine foo - - subroutine jackal (b, c) diff --git a/gcc41-pr30293.patch b/gcc41-pr30293.patch deleted file mode 100644 index eb8549a..0000000 --- a/gcc41-pr30293.patch +++ /dev/null @@ -1,180 +0,0 @@ -2007-11-23 Jakub Jelinek - - PR c++/30293 - PR c++/30294 - * decl.c (cp_finish_decl): Disallow variable or field - definitions if extern "Java" aggregates. - (grokparms): Disallow parameters with extern "Java" - aggregates. - (check_function_type): Disallow function return values - with extern "Java" aggregates. - * init.c (build_new_1): Disallow placement new with - extern "Java" aggregates. - - * g++.dg/ext/java-2.C: New test. - ---- gcc/cp/decl.c.jj 2007-11-19 17:46:41.000000000 +0100 -+++ gcc/cp/decl.c 2007-11-22 13:34:52.000000000 +0100 -@@ -5349,6 +5349,20 @@ cp_finish_decl (tree decl, tree init, bo - is *not* defined. */ - && (!DECL_EXTERNAL (decl) || init)) - { -+ if (TYPE_FOR_JAVA (type) && IS_AGGR_TYPE (type)) -+ { -+ tree jclass -+ = IDENTIFIER_GLOBAL_VALUE (get_identifier ("jclass")); -+ /* Allow libjava/prims.cc define primitive classes. */ -+ if (init != NULL_TREE -+ || jclass == NULL_TREE -+ || TREE_CODE (jclass) != TYPE_DECL -+ || !POINTER_TYPE_P (TREE_TYPE (jclass)) -+ || !same_type_ignoring_top_level_qualifiers_p -+ (type, TREE_TYPE (TREE_TYPE (jclass)))) -+ error ("Java object %qD not allocated with %", decl); -+ init = NULL_TREE; -+ } - if (init) - { - DECL_NONTRIVIALLY_INITIALIZED_P (decl) = 1; -@@ -5419,6 +5433,9 @@ cp_finish_decl (tree decl, tree init, bo - else if (TREE_CODE (type) == ARRAY_TYPE) - layout_type (type); - } -+ else if (TREE_CODE (decl) == FIELD_DECL -+ && TYPE_FOR_JAVA (type) && IS_AGGR_TYPE (type)) -+ error ("non-static data member %qD has Java class type", decl); - - /* Add this declaration to the statement-tree. This needs to happen - after the call to check_initializer so that the DECL_EXPR for a -@@ -8993,6 +9010,16 @@ grokparms (cp_parameter_declarator *firs - TREE_TYPE (decl) = error_mark_node; - } - -+ if (type != error_mark_node -+ && TYPE_FOR_JAVA (type) -+ && IS_AGGR_TYPE (type)) -+ { -+ error ("parameter %qD has Java class type", decl); -+ type = error_mark_node; -+ TREE_TYPE (decl) = error_mark_node; -+ init = NULL_TREE; -+ } -+ - if (type != error_mark_node) - { - /* Top-level qualifiers on the parameters are -@@ -10465,11 +10492,15 @@ check_function_type (tree decl, tree cur - - if (dependent_type_p (return_type)) - return; -- if (!COMPLETE_OR_VOID_TYPE_P (return_type)) -+ if (!COMPLETE_OR_VOID_TYPE_P (return_type) -+ || (TYPE_FOR_JAVA (return_type) && IS_AGGR_TYPE (return_type))) - { - tree args = TYPE_ARG_TYPES (fntype); -- -- error ("return type %q#T is incomplete", return_type); -+ -+ if (!COMPLETE_OR_VOID_TYPE_P (return_type)) -+ error ("return type %q#T is incomplete", return_type); -+ else -+ error ("return type has Java class type %q#T", return_type); - - /* Make it return void instead. */ - if (TREE_CODE (fntype) == METHOD_TYPE) ---- gcc/cp/init.c.jj 2007-09-20 21:26:48.000000000 +0200 -+++ gcc/cp/init.c 2007-11-22 10:49:47.000000000 +0100 -@@ -1786,6 +1786,11 @@ build_new_1 (tree placement, tree type, - (alloc_fn, - build_tree_list (NULL_TREE, class_addr))); - } -+ else if (TYPE_FOR_JAVA (elt_type)) -+ { -+ error ("Java class %q#T object allocated using placement new", elt_type); -+ return error_mark_node; -+ } - else - { - tree fnname; ---- gcc/testsuite/g++.dg/ext/java-2.C.jj 2007-11-22 10:55:10.000000000 +0100 -+++ gcc/testsuite/g++.dg/ext/java-2.C 2007-11-22 10:54:59.000000000 +0100 -@@ -0,0 +1,79 @@ -+// PR c++/30293 -+// PR c++/30294 -+// { dg-do compile } -+// { dg-options "" } -+ -+extern "Java" { -+typedef __java_byte jbyte; -+namespace java { -+namespace lang { -+ class Object {}; -+ class Class {}; -+} -+} -+typedef struct java::lang::Object* jobject; -+typedef java::lang::Class *jclass; -+} -+extern "C" jobject _Jv_AllocObject (jclass); -+ -+extern "Java" { -+ struct A { static java::lang::Class class$; }; -+} -+ -+struct B { -+ A a; // { dg-error "has Java class type" } -+}; -+ -+void* operator new (__SIZE_TYPE__, void*) throw(); -+char buf[1024]; -+ -+A a; // { dg-error "not allocated with" } -+A b = A (); // { dg-error "not allocated with" } -+A *c = new ((void *) buf) A (); // { dg-error "using placement new" } -+A *d = new A (); -+jbyte e = 6; -+ -+const A fn1 () // { dg-error "return type has Java class type" } -+{ -+ A a; // { dg-error "not allocated with" } -+ return a; -+} -+ -+A fn2 () // { dg-error "return type has Java class type" } -+{ -+ A a; // { dg-error "not allocated with" } -+ return a; -+} -+ -+A *fn3 () -+{ -+ return new A (); -+} -+ -+A &fn4 () -+{ -+ return *c; -+} -+ -+jbyte fn5 () -+{ -+ return 7; -+} -+ -+void fn6 (A x) // { dg-error "has Java class type" } -+{ -+} -+ -+void fn7 (const A x) // { dg-error "has Java class type" } -+{ -+} -+ -+void fn8 (A *x) -+{ -+ (void) x; -+} -+ -+void fn9 (jbyte x) -+{ -+ (void) x; -+} diff --git a/gcc41-pr30988.patch b/gcc41-pr30988.patch deleted file mode 100644 index fc26668..0000000 --- a/gcc41-pr30988.patch +++ /dev/null @@ -1,103 +0,0 @@ -2007-11-18 Jakub Jelinek - - PR c++/30988 - * semantics.c (finish_call_expr): Set - current_function_returns_abnormally if fn is noreturn FUNCTION_DECL - or OVERLOAD with all noreturn functions. - - * g++.dg/warn/noreturn-4.C: New test. - * g++.dg/warn/noreturn-5.C: New test. - * g++.dg/warn/noreturn-6.C: New test. - * g++.dg/warn/noreturn-7.C: New test. - ---- gcc/cp/semantics.c (revision 130279) -+++ gcc/cp/semantics.c (revision 130280) -@@ -1846,6 +1846,20 @@ finish_call_expr (tree fn, tree args, bo - { - result = build_nt_call_list (fn, args); - KOENIG_LOOKUP_P (result) = koenig_p; -+ if (cfun) -+ { -+ do -+ { -+ tree fndecl = OVL_CURRENT (fn); -+ if (TREE_CODE (fndecl) != FUNCTION_DECL -+ || !TREE_THIS_VOLATILE (fndecl)) -+ break; -+ fn = OVL_NEXT (fn); -+ } -+ while (fn); -+ if (!fn) -+ current_function_returns_abnormally = 1; -+ } - return result; - } - if (!BASELINK_P (fn) ---- gcc/testsuite/g++.dg/warn/noreturn-4.C (revision 0) -+++ gcc/testsuite/g++.dg/warn/noreturn-4.C (revision 130280) -@@ -0,0 +1,13 @@ -+// PR c++/30988 -+// { dg-do compile } -+// { dg-options "-O2 -Wall" } -+ -+void f (const char *) __attribute__ ((noreturn)); -+ -+template struct A -+{ -+ int g () -+ { -+ f (__FUNCTION__); -+ } -+}; ---- gcc/testsuite/g++.dg/warn/noreturn-5.C (revision 0) -+++ gcc/testsuite/g++.dg/warn/noreturn-5.C (revision 130280) -@@ -0,0 +1,15 @@ -+// PR c++/30988 -+// { dg-do compile } -+// { dg-options "-O2 -Wall" } -+ -+void f (const char *) __attribute__ ((noreturn)); -+void f (int) __attribute__ ((noreturn)); -+void f (double) __attribute__ ((noreturn)); -+ -+template struct A -+{ -+ int g () -+ { -+ f ((T) 0); -+ } -+}; ---- gcc/testsuite/g++.dg/warn/noreturn-6.C (revision 0) -+++ gcc/testsuite/g++.dg/warn/noreturn-6.C (revision 130280) -@@ -0,0 +1,13 @@ -+// PR c++/30988 -+// { dg-do compile } -+// { dg-options "-O2 -Wall" } -+ -+void f (const char *); -+ -+template struct A -+{ -+ int g () -+ { -+ f (__FUNCTION__); -+ } // { dg-warning "no return statement in function returning non-void" } -+}; ---- gcc/testsuite/g++.dg/warn/noreturn-7.C (revision 0) -+++ gcc/testsuite/g++.dg/warn/noreturn-7.C (revision 130280) -@@ -0,0 +1,15 @@ -+// PR c++/30988 -+// { dg-do compile } -+// { dg-options "-O2 -Wall" } -+ -+void f (const char *) __attribute__ ((noreturn)); -+void f (int); -+void f (double) __attribute__ ((noreturn)); -+ -+template struct A -+{ -+ int g () -+ { -+ f ((T) 0); -+ } // { dg-warning "no return statement in function returning non-void" } -+}; diff --git a/gcc41-pr32121.patch b/gcc41-pr32121.patch deleted file mode 100644 index 6bf332d..0000000 --- a/gcc41-pr32121.patch +++ /dev/null @@ -1,132 +0,0 @@ -2007-10-12 Jakub Jelinek - - PR c++/32121 - * parser.c (cp_parser_compound_statement): Handle label-declarations - at the beginning of the compound statement. - (cp_parser_block_declaration): Issue diagnostics about __label__ - not at the beginning of a block. - - * g++.dg/ext/label4.C: Adjust error regexp. - * g++.dg/ext/label7.C: New test. - * g++.dg/ext/label8.C: New test. - * g++.dg/ext/label9.C: New test. - ---- gcc/cp/parser.c (revision 129252) -+++ gcc/cp/parser.c (revision 129253) -@@ -6821,6 +6821,15 @@ cp_parser_expression_statement (cp_parse - compound-statement: - { statement-seq [opt] } - -+ GNU extension: -+ -+ compound-statement: -+ { label-declaration-seq [opt] statement-seq [opt] } -+ -+ label-declaration-seq: -+ label-declaration -+ label-declaration-seq label-declaration -+ - Returns a tree representing the statement. */ - - static tree -@@ -6834,6 +6843,9 @@ cp_parser_compound_statement (cp_parser - return error_mark_node; - /* Begin the compound-statement. */ - compound_stmt = begin_compound_stmt (in_try ? BCS_TRY_BLOCK : 0); -+ /* If the next keyword is `__label__' we have a label declaration. */ -+ while (cp_lexer_next_token_is_keyword (parser->lexer, RID_LABEL)) -+ cp_parser_label_declaration (parser); - /* Parse an (optional) statement-seq. */ - cp_parser_statement_seq_opt (parser, in_statement_expr); - /* Finish the compound-statement. */ -@@ -7711,7 +7723,6 @@ cp_parser_declaration (cp_parser* parser - - block-declaration: - __extension__ block-declaration -- label-declaration - - C++0x Extension: - -@@ -7772,12 +7783,16 @@ cp_parser_block_declaration (cp_parser * - cp_parser_using_declaration (parser, - /*access_declaration_p=*/false); - } -- /* If the next keyword is `__label__' we have a label declaration. */ -+ /* If the next keyword is `__label__' we have a misplaced label -+ declaration. */ - else if (token1->keyword == RID_LABEL) - { -- if (statement_p) -- cp_parser_commit_to_tentative_parse (parser); -- cp_parser_label_declaration (parser); -+ cp_lexer_consume_token (parser->lexer); -+ error ("%<__label__%> not at the beginning of a block"); -+ cp_parser_skip_to_end_of_statement (parser); -+ /* If the next token is now a `;', consume it. */ -+ if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) -+ cp_lexer_consume_token (parser->lexer); - } - /* If the next token is `static_assert' we have a static assertion. */ - else if (token1->keyword == RID_STATIC_ASSERT) - ---- gcc/testsuite/g++.dg/ext/label9.C (revision 0) -+++ gcc/testsuite/g++.dg/ext/label9.C (revision 129253) -@@ -0,0 +1,10 @@ -+// PR c++/32121 -+// { dg-do compile } -+ -+int f (void) -+{ -+ while (1) -+ __label__ a; // { dg-error "not at the beginning" } -+ for (;;) -+ __label__ b; // { dg-error "not at the beginning" } -+} ---- gcc/testsuite/g++.dg/ext/label4.C (revision 129252) -+++ gcc/testsuite/g++.dg/ext/label4.C (revision 129253) -@@ -3,4 +3,4 @@ - - // { dg-do compile } - --__label__ *l; // { dg-error "before" } -+__label__ *l; // { dg-error "not at the beginning of" } ---- gcc/testsuite/g++.dg/ext/label7.C (revision 0) -+++ gcc/testsuite/g++.dg/ext/label7.C (revision 129253) -@@ -0,0 +1,12 @@ -+// PR c++/32121 -+// { dg-do compile } -+ -+int f (void) -+{ -+ a:; -+ __label__ a; // { dg-error "not at the beginning" } -+ int b; -+ __label__ c; // { dg-error "not at the beginning" } -+ a:; // { dg-error "duplicate label" } -+ c:; -+} ---- gcc/testsuite/g++.dg/ext/label8.C (revision 0) -+++ gcc/testsuite/g++.dg/ext/label8.C (revision 129253) -@@ -0,0 +1,22 @@ -+// PR c++/32121 -+// { dg-do compile } -+ -+int f (void) -+{ -+ __label__ a, b; -+ __label__ c; -+ a:; -+ b:; -+ c:; -+ { -+ __label__ d; -+ d:; -+ if (0) -+ { -+ __label__ e; -+ __label__ f; -+ f:; -+ e:; -+ } -+ } -+} diff --git a/gcc41-pr32241.patch b/gcc41-pr32241.patch deleted file mode 100644 index a3dfe3c..0000000 --- a/gcc41-pr32241.patch +++ /dev/null @@ -1,91 +0,0 @@ -2007-11-10 Jakub Jelinek - - PR c++/32241 - * pt.c (tsubst_copy_and_build) : If object_type - is not scalar type, let finish_class_member_access_expr handle - diagnostics. Pass BIT_NOT_EXPR argument to - finish_pseudo_destructor_expr. Handle SCOPE_REF properly. - - * g++.dg/template/pseudodtor3.C: New test. - ---- gcc/cp/pt.c (revision 130065) -+++ gcc/cp/pt.c (revision 130066) -@@ -11004,15 +11004,23 @@ tsubst_copy_and_build (tree t, - - if (object_type && !CLASS_TYPE_P (object_type)) - { -- if (TREE_CODE (member) == BIT_NOT_EXPR) -- return finish_pseudo_destructor_expr (object, -- NULL_TREE, -- object_type); -- else if (TREE_CODE (member) == SCOPE_REF -- && (TREE_CODE (TREE_OPERAND (member, 1)) == BIT_NOT_EXPR)) -- return finish_pseudo_destructor_expr (object, -- object, -- object_type); -+ if (SCALAR_TYPE_P (object_type)) -+ { -+ tree s = NULL_TREE; -+ tree dtor = member; -+ -+ if (TREE_CODE (dtor) == SCOPE_REF) -+ { -+ s = TREE_OPERAND (dtor, 0); -+ dtor = TREE_OPERAND (dtor, 1); -+ } -+ if (TREE_CODE (dtor) == BIT_NOT_EXPR) -+ { -+ dtor = TREE_OPERAND (dtor, 0); -+ if (TYPE_P (dtor)) -+ return finish_pseudo_destructor_expr (object, s, dtor); -+ } -+ } - } - else if (TREE_CODE (member) == SCOPE_REF - && TREE_CODE (TREE_OPERAND (member, 1)) == TEMPLATE_ID_EXPR) ---- gcc/testsuite/g++.dg/template/pseudodtor3.C (revision 0) -+++ gcc/testsuite/g++.dg/template/pseudodtor3.C (revision 130066) -@@ -0,0 +1,43 @@ -+// PR c++/32241 -+// { dg-do compile } -+ -+struct A -+{ -+ typedef int T; -+ T &foo (); -+ A () { foo.~T (); } // { dg-error "does not have class type|expected" } -+}; -+ -+template struct B -+{ -+ T &foo (); -+ B () { foo.~T (); } // { dg-error "invalid use of member" } -+}; -+ -+B b; -+ -+template struct C -+{ -+ T t; -+ C () { t.~S (); } // { dg-error "is not of type" } -+}; -+ -+C c; -+ -+template struct D -+{ -+ T t; -+ typedef long int U; -+ D () { t.~U (); } // { dg-error "is not of type" } -+}; -+ -+D d; -+ -+template struct E -+{ -+ T &foo (); -+ typedef long int U; -+ E () { foo.~U (); } // { dg-error "is not of type" } -+}; -+ -+E e; diff --git a/gcc41-pr32384.patch b/gcc41-pr32384.patch deleted file mode 100644 index 983068f..0000000 --- a/gcc41-pr32384.patch +++ /dev/null @@ -1,108 +0,0 @@ -2007-11-01 Jakub Jelinek - - PR c++/32384 - * parser.c (cp_parser_postfix_dot_deref_expression): If - POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor - first and if that succeeds and type is SCALAR_TYPE_P, create - PSEUDO_DTOR_EXPR. - - * g++.dg/template/pseudodtor1.C: New test. - * g++.dg/template/pseudodtor2.C: New test. - ---- gcc/cp/parser.c (revision 129835) -+++ gcc/cp/parser.c (revision 129836) -@@ -4850,8 +4850,10 @@ cp_parser_postfix_dot_deref_expression ( - pseudo_destructor_p = false; - - /* If the SCOPE is a scalar type, then, if this is a valid program, -- we must be looking at a pseudo-destructor-name. */ -- if (scope && SCALAR_TYPE_P (scope)) -+ we must be looking at a pseudo-destructor-name. If POSTFIX_EXPRESSION -+ is type dependent, it can be pseudo-destructor-name or something else. -+ Try to parse it as pseudo-destructor-name first. */ -+ if ((scope && SCALAR_TYPE_P (scope)) || dependent_p) - { - tree s; - tree type; -@@ -4860,7 +4862,12 @@ cp_parser_postfix_dot_deref_expression ( - /* Parse the pseudo-destructor-name. */ - s = NULL_TREE; - cp_parser_pseudo_destructor_name (parser, &s, &type); -- if (cp_parser_parse_definitely (parser)) -+ if (dependent_p -+ && (cp_parser_error_occurred (parser) -+ || TREE_CODE (type) != TYPE_DECL -+ || !SCALAR_TYPE_P (TREE_TYPE (type)))) -+ cp_parser_abort_tentative_parse (parser); -+ else if (cp_parser_parse_definitely (parser)) - { - pseudo_destructor_p = true; - postfix_expression ---- gcc/testsuite/g++.dg/template/pseudodtor1.C (revision 0) -+++ gcc/testsuite/g++.dg/template/pseudodtor1.C (revision 129836) -@@ -0,0 +1,44 @@ -+// PR c++/32384 -+// { dg-do compile } -+ -+struct A -+{ -+ typedef int T; -+ T foo (); -+ -+ A () { foo ().~T (); } -+}; -+ -+template struct B -+{ -+ typedef int T; -+ T foo (); -+ -+ B () { foo ().~T (); } -+}; -+ -+template struct C -+{ -+ T t; -+ C () { t.~T (); } -+}; -+ -+template struct D -+{ -+ typedef int T; -+ S foo (); -+ -+ D () { foo ().~T(); } -+}; -+ -+struct Z -+{ -+ Z () {} -+ ~Z () {} -+}; -+ -+A a; -+B b; -+C c1; -+C c2; -+D d; ---- gcc/testsuite/g++.dg/template/pseudodtor2.C (revision 0) -+++ gcc/testsuite/g++.dg/template/pseudodtor2.C (revision 129836) -@@ -0,0 +1,18 @@ -+// PR c++/32384 -+// { dg-do compile } -+ -+template struct D -+{ -+ typedef int T; -+ S foo (); -+ -+ D () { foo ().~T(); } // { dg-error "is not of type" } -+}; -+ -+struct Z -+{ -+ Z () {} -+ ~Z () {} -+}; -+ -+D d; diff --git a/gcc41-pr32694.patch b/gcc41-pr32694.patch deleted file mode 100644 index 4b172e4..0000000 --- a/gcc41-pr32694.patch +++ /dev/null @@ -1,46 +0,0 @@ -2007-09-25 Jakub Jelinek - - PR tree-optimization/32694 - 2006-11-08 Roger Sayle - * tree-ssa-propagate.c (set_rhs): Verify tcc_comparison the same way - as tcc_binary. - - * gcc.c-torture/compile/20070925-1.c: New test. - ---- gcc/tree-ssa-propagate.c.jj 2007-09-23 19:43:36.000000000 +0200 -+++ gcc/tree-ssa-propagate.c 2007-09-25 09:30:50.000000000 +0200 -@@ -570,7 +570,8 @@ set_rhs (tree *stmt_p, tree expr) - ssa_op_iter iter; - - /* Verify the constant folded result is valid gimple. */ -- if (TREE_CODE_CLASS (code) == tcc_binary) -+ if (TREE_CODE_CLASS (code) == tcc_binary -+ || TREE_CODE_CLASS (code) == tcc_comparison) - { - if (!is_gimple_val (TREE_OPERAND (expr, 0)) - || !is_gimple_val (TREE_OPERAND (expr, 1))) ---- gcc/testsuite/gcc.c-torture/compile/20070925-1.c.jj 2007-09-25 09:28:37.000000000 +0200 -+++ gcc/testsuite/gcc.c-torture/compile/20070925-1.c 2007-09-25 09:29:41.000000000 +0200 -@@ -0,0 +1,22 @@ -+/* PR tree-optimization/32694 */ -+ -+typedef signed long long int WordS64; -+typedef unsigned long long int Word64; -+ -+int -+foo (Word64 * p) -+{ -+ while (1) -+ { -+ WordS64 c = 0x1llu; -+ WordS64 x = *p; -+ if (c >= 0) -+ { -+ if (x > (WordS64) 0x7FFFFFFFFFFFFFFFll - c) -+ return 6; -+ } -+ else if (x < (WordS64) 0x8000000000000000ll - c) -+ return 7; -+ p++; -+ } -+} diff --git a/gcc41-pr33136.patch b/gcc41-pr33136.patch deleted file mode 100644 index ed389aa..0000000 --- a/gcc41-pr33136.patch +++ /dev/null @@ -1,230 +0,0 @@ -2007-10-15 Jakub Jelinek - - PR tree-optimization/33136 - * opts.c (decode_options): Don't enable flag_ipa_type_escape. - - * gcc.c-torture/execute/20070824-1.c: New test. - * gcc.dg/pr33136-1.c: New test. - * gcc.dg/pr33136-2.c: New test. - * gcc.dg/pr33136-3.c: New test. - ---- gcc/opts.c (revision 129365) -+++ gcc/opts.c (revision 129366) -@@ -473,7 +473,6 @@ decode_options (unsigned int argc, const - flag_cse_skip_blocks = 1; - flag_gcse = 1; - flag_expensive_optimizations = 1; -- flag_ipa_type_escape = 1; - flag_strength_reduce = 1; - flag_rerun_cse_after_loop = 1; - flag_rerun_loop_opt = 1; ---- gcc/testsuite/gcc.c-torture/execute/20070824-1.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/20070824-1.c (revision 129366) -@@ -0,0 +1,24 @@ -+/* PR tree-optimization/33136 */ -+ -+extern void abort (void); -+ -+struct S -+{ -+ struct S *a; -+ int b; -+}; -+ -+int -+main (void) -+{ -+ struct S *s = (struct S *) 0, **p, *n; -+ for (p = &s; *p; p = &(*p)->a); -+ n = (struct S *) __builtin_alloca (sizeof (*n)); -+ n->a = *p; -+ n->b = 1; -+ *p = n; -+ -+ if (!s) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/pr33136-1.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr33136-1.c (revision 129366) -@@ -0,0 +1,54 @@ -+/* PR tree-optimization/33136 */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+extern void abort (void); -+ -+struct S -+{ -+ struct S *a; -+ int b; -+ float f; -+}; -+ -+static struct S s; -+ -+static int * -+__attribute__((noinline, const)) -+foo (void) -+{ -+ return &s.b; -+} -+ -+float -+__attribute__((noinline)) -+bar (float *f) -+{ -+ s.f = 1.0; -+ *f = 4.0; -+ return s.f; -+} -+ -+int -+__attribute__((noinline)) -+baz (int *x) -+{ -+ s.b = 1; -+ *x = 4; -+ return s.b; -+} -+ -+int -+t (void) -+{ -+ float f = 8.0; -+ return bar (&f) + baz (foo ()); -+} -+ -+int -+main (void) -+{ -+ if (t () != 5) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/pr33136-3.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr33136-3.c (revision 129366) -@@ -0,0 +1,60 @@ -+/* PR tree-optimization/33136 */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+extern void abort (void); -+ -+struct S -+{ -+ void *a; -+ int b[3]; -+ double *c; -+}; -+static double d, e; -+ -+static struct S s; -+ -+static int * -+__attribute__((noinline, const)) -+foo (void) -+{ -+ return (int *) &s.b; -+} -+ -+double * -+__attribute__((noinline)) -+bar (double **f) -+{ -+ s.c = &d; -+ *f = &e; -+ /* As nothing ever takes the address of any double * field in struct S, -+ the write to *f can't alias with the s.c field. */ -+ return s.c; -+} -+ -+int -+__attribute__((noinline)) -+baz (int *x) -+{ -+ s.b[0] = 1; -+ *x = 4; -+ /* Function foo takes address of an int array field in struct S, -+ so *x can alias with the s.b field (and it does in this testcase). */ -+ return s.b[0]; -+} -+ -+int -+__attribute__((noinline)) -+t (void) -+{ -+ double *f = (double *) 0; -+ return 10 * (bar (&f) != &d) + baz (foo ()); -+} -+ -+int -+main (void) -+{ -+ if (t () != 4) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/pr33136-2.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr33136-2.c (revision 129366) -@@ -0,0 +1,60 @@ -+/* PR tree-optimization/33136 */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+extern void abort (void); -+ -+struct S -+{ -+ void *a; -+ int b; -+ int *c; -+}; -+static int d, e; -+ -+static struct S s; -+ -+static int * -+__attribute__((noinline, const)) -+foo (void) -+{ -+ return &s.b; -+} -+ -+int * -+__attribute__((noinline)) -+bar (int **f) -+{ -+ s.c = &d; -+ *f = &e; -+ /* As nothing ever takes the address of any int * field in struct S, -+ the write to *f can't alias with the s.c field. */ -+ return s.c; -+} -+ -+int -+__attribute__((noinline)) -+baz (int *x) -+{ -+ s.b = 1; -+ *x = 4; -+ /* Function foo takes address of an int field in struct S, -+ so *x can alias with the s.b field (and it does in this testcase). */ -+ return s.b; -+} -+ -+int -+__attribute__((noinline)) -+t (void) -+{ -+ int *f = (int *) 0; -+ return 10 * (bar (&f) != &d) + baz (foo ()); -+} -+ -+int -+main (void) -+{ -+ if (t () != 4) -+ abort (); -+ return 0; -+} diff --git a/gcc41-pr33238.patch b/gcc41-pr33238.patch deleted file mode 100644 index 2ec285a..0000000 --- a/gcc41-pr33238.patch +++ /dev/null @@ -1,194 +0,0 @@ -2007-09-20 Jakub Jelinek - - PR c/33238 - PR c/27301 - * gimplify.c (gimplify_vla_decl): New function. - (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl. - Call it. - (gimplify_target_expr): Handle variable length TARGET_EXPRs. - - * gcc.c-torture/execute/20070919-1.c: New test. - * gcc.dg/pr33238.c: New test. - * gcc.dg/pr27301.c: New test. - ---- gcc/gimplify.c (revision 128628) -+++ gcc/gimplify.c (revision 128629) -@@ -1144,6 +1144,42 @@ gimplify_return_expr (tree stmt, tree *p - return GS_ALL_DONE; - } - -+static void -+gimplify_vla_decl (tree decl, tree *stmt_p) -+{ -+ /* This is a variable-sized decl. Simplify its size and mark it -+ for deferred expansion. Note that mudflap depends on the format -+ of the emitted code: see mx_register_decls(). */ -+ tree t, args, addr, ptr_type; -+ -+ gimplify_one_sizepos (&DECL_SIZE (decl), stmt_p); -+ gimplify_one_sizepos (&DECL_SIZE_UNIT (decl), stmt_p); -+ -+ /* All occurrences of this decl in final gimplified code will be -+ replaced by indirection. Setting DECL_VALUE_EXPR does two -+ things: First, it lets the rest of the gimplifier know what -+ replacement to use. Second, it lets the debug info know -+ where to find the value. */ -+ ptr_type = build_pointer_type (TREE_TYPE (decl)); -+ addr = create_tmp_var (ptr_type, get_name (decl)); -+ DECL_IGNORED_P (addr) = 0; -+ t = build_fold_indirect_ref (addr); -+ SET_DECL_VALUE_EXPR (decl, t); -+ DECL_HAS_VALUE_EXPR_P (decl) = 1; -+ -+ args = tree_cons (NULL, DECL_SIZE_UNIT (decl), NULL); -+ t = built_in_decls[BUILT_IN_ALLOCA]; -+ t = build_function_call_expr (t, args); -+ t = fold_convert (ptr_type, t); -+ t = build2 (MODIFY_EXPR, void_type_node, addr, t); -+ -+ gimplify_and_add (t, stmt_p); -+ -+ /* Indicate that we need to restore the stack level when the -+ enclosing BIND_EXPR is exited. */ -+ gimplify_ctxp->save_stack = true; -+} -+ - /* Gimplifies a DECL_EXPR node *STMT_P by making any necessary allocation - and initialization explicit. */ - -@@ -1168,39 +1204,7 @@ gimplify_decl_expr (tree *stmt_p) - tree init = DECL_INITIAL (decl); - - if (TREE_CODE (DECL_SIZE (decl)) != INTEGER_CST) -- { -- /* This is a variable-sized decl. Simplify its size and mark it -- for deferred expansion. Note that mudflap depends on the format -- of the emitted code: see mx_register_decls(). */ -- tree t, args, addr, ptr_type; -- -- gimplify_one_sizepos (&DECL_SIZE (decl), stmt_p); -- gimplify_one_sizepos (&DECL_SIZE_UNIT (decl), stmt_p); -- -- /* All occurrences of this decl in final gimplified code will be -- replaced by indirection. Setting DECL_VALUE_EXPR does two -- things: First, it lets the rest of the gimplifier know what -- replacement to use. Second, it lets the debug info know -- where to find the value. */ -- ptr_type = build_pointer_type (TREE_TYPE (decl)); -- addr = create_tmp_var (ptr_type, get_name (decl)); -- DECL_IGNORED_P (addr) = 0; -- t = build_fold_indirect_ref (addr); -- SET_DECL_VALUE_EXPR (decl, t); -- DECL_HAS_VALUE_EXPR_P (decl) = 1; -- -- args = tree_cons (NULL, DECL_SIZE_UNIT (decl), NULL); -- t = built_in_decls[BUILT_IN_ALLOCA]; -- t = build_function_call_expr (t, args); -- t = fold_convert (ptr_type, t); -- t = build2 (MODIFY_EXPR, void_type_node, addr, t); -- -- gimplify_and_add (t, stmt_p); -- -- /* Indicate that we need to restore the stack level when the -- enclosing BIND_EXPR is exited. */ -- gimplify_ctxp->save_stack = true; -- } -+ gimplify_vla_decl (decl, stmt_p); - - if (init && init != error_mark_node) - { -@@ -4146,8 +4150,15 @@ gimplify_target_expr (tree *expr_p, tree - if (init) - { - /* TARGET_EXPR temps aren't part of the enclosing block, so add it -- to the temps list. */ -- gimple_add_tmp_var (temp); -+ to the temps list. Handle also variable length TARGET_EXPRs. */ -+ if (TREE_CODE (DECL_SIZE (temp)) != INTEGER_CST) -+ { -+ if (!TYPE_SIZES_GIMPLIFIED (TREE_TYPE (temp))) -+ gimplify_type_sizes (TREE_TYPE (temp), pre_p); -+ gimplify_vla_decl (temp, pre_p); -+ } -+ else -+ gimple_add_tmp_var (temp); - - /* If TARGET_EXPR_INITIAL is void, then the mere evaluation of the - expression is supposed to initialize the slot. */ ---- gcc/testsuite/gcc.c-torture/execute/20070919-1.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/20070919-1.c (revision 128629) -@@ -0,0 +1,41 @@ -+/* PR c/33238 */ -+ -+typedef __SIZE_TYPE__ size_t; -+int memcmp (const void *, const void *, size_t); -+void abort (void); -+ -+void -+__attribute__((noinline)) -+bar (void *x, void *y) -+{ -+ struct S { char w[8]; } *p = x, *q = y; -+ if (memcmp (p->w, "zyxwvut", 8) != 0) -+ abort (); -+ if (memcmp (q[0].w, "abcdefg", 8) != 0) -+ abort (); -+ if (memcmp (q[1].w, "ABCDEFG", 8) != 0) -+ abort (); -+ if (memcmp (q[2].w, "zyxwvut", 8) != 0) -+ abort (); -+ if (memcmp (q[3].w, "zyxwvut", 8) != 0) -+ abort (); -+} -+ -+void -+__attribute__((noinline)) -+foo (void *x, int y) -+{ -+ struct S { char w[y]; } *p = x, a; -+ int i; -+ a = ({ struct S b; b = p[2]; p[3] = b; }); -+ bar (&a, x); -+} -+ -+int -+main (void) -+{ -+ struct S { char w[8]; } p[4] -+ = { "abcdefg", "ABCDEFG", "zyxwvut", "ZYXWVUT" }; -+ foo (p, 8); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/pr33238.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr33238.c (revision 128629) -@@ -0,0 +1,12 @@ -+/* PR c/33238 */ -+/* { dg-do compile } */ -+/* { dg-options "-std=gnu89" } */ -+ -+void -+reverse (void *x, int y, int z) -+{ -+ struct { char w[z]; } *p = x, a; -+ int i, j; -+ for (i = y - 1, j = 0; j < y / 2; i--, j++) -+ ({ a = p[i]; p[i] = p[j]; p[j] = a; }); -+} ---- gcc/testsuite/gcc.dg/pr27301.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr27301.c (revision 128629) -@@ -0,0 +1,15 @@ -+/* PR c/27301 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -std=gnu89" } */ -+ -+void -+foo (void *ptr, long n) -+{ -+ __asm__ __volatile__ ("" :: "m" (({ struct { char x[n]; } *p = ptr; *p; }))); -+} -+ -+void -+bar (void *ptr, long n) -+{ -+ __asm__ __volatile__ ("" :: "m" (*({ struct { char x[n]; } *p = ptr; p; }))); -+} diff --git a/gcc41-pr33501.patch b/gcc41-pr33501.patch deleted file mode 100644 index 0dab701..0000000 --- a/gcc41-pr33501.patch +++ /dev/null @@ -1,77 +0,0 @@ -2007-11-07 Jakub Jelinek - - PR c++/33501 - * call.c (build_over_call): Don't check TREE_ADDRESSABLE - on incomplete type. - - * g++.dg/warn/incomplete2.C: New test. - * g++.dg/template/incomplete4.C: New test. - * g++.dg/template/incomplete5.C: New test. - ---- gcc/cp/call.c (revision 129967) -+++ gcc/cp/call.c (revision 129968) -@@ -4993,7 +4993,8 @@ build_over_call (struct z_candidate *can - - /* Don't make a copy here if build_call is going to. */ - if (conv->kind == ck_rvalue -- && !TREE_ADDRESSABLE (complete_type (type))) -+ && COMPLETE_TYPE_P (complete_type (type)) -+ && !TREE_ADDRESSABLE (type)) - conv = conv->u.next; - - val = convert_like_with_context ---- gcc/testsuite/g++.dg/warn/incomplete2.C (revision 0) -+++ gcc/testsuite/g++.dg/warn/incomplete2.C (revision 129968) -@@ -0,0 +1,13 @@ -+// PR c++/33501 -+// { dg-do compile } -+ -+class A; // { dg-error "forward declaration" } -+ -+int f (A); -+const A &make (); -+ -+int -+main () -+{ -+ return f (make ()); // { dg-error "invalid use of undefined type|initializing argument" } -+} ---- gcc/testsuite/g++.dg/template/incomplete5.C (revision 0) -+++ gcc/testsuite/g++.dg/template/incomplete5.C (revision 129968) -@@ -0,0 +1,17 @@ -+// PR c++/33501 -+// { dg-do compile } -+ -+class A; // { dg-error "forward declaration" } -+ -+template struct X -+{ -+ static int f (T); -+ static const T &make (); -+ static const bool value = sizeof (f (make ())) == sizeof (int); // { dg-error "invalid use of undefined type|initializing argument" } -+}; -+ -+int -+main () -+{ -+ return X ::value; -+} ---- gcc/testsuite/g++.dg/template/incomplete4.C (revision 0) -+++ gcc/testsuite/g++.dg/template/incomplete4.C (revision 129968) -@@ -0,0 +1,16 @@ -+// PR c++/33501 -+// { dg-do compile } -+ -+class A; // { dg-error "forward declaration" } -+ -+template struct X -+{ -+ static int f (T); -+ static const T &make (); -+}; -+ -+int -+main () -+{ -+ return X::f (X::make ()); // { dg-error "invalid use of undefined type|initializing argument" } -+} diff --git a/gcc41-pr33506.patch b/gcc41-pr33506.patch deleted file mode 100644 index a5c7bca..0000000 --- a/gcc41-pr33506.patch +++ /dev/null @@ -1,168 +0,0 @@ -2007-09-21 Jakub Jelinek - - PR c++/33506 - * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq - field. - * langhooks.c (lhd_type_hash_eq): New function. - * langhooks-def.h (lhd_type_hash_eq): New prototype. - (LANG_HOOKS_TYPE_HASH_EQ): Define. - (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ. - * tree.c (type_hash_eq): For FUNCTION_TYPE use - lang_hooks.type.type_hash_eq in addition to generic tests. - - * cp-tree.h (cxx_type_hash_eq): New prototype. - * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine. - * tree.c (cxx_type_hash_eq): New function. - - * g++.dg/ext/attrib29.C: New test. - ---- gcc/langhooks.h.jj 2007-02-20 16:39:12.000000000 -0500 -+++ gcc/langhooks.h 2007-09-22 03:46:10.000000000 -0400 -@@ -148,6 +148,10 @@ struct lang_hooks_for_types - firstprivate variables. */ - void (*omp_firstprivatize_type_sizes) (struct gimplify_omp_ctx *, tree); - -+ /* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes. -+ Called only after doing all language independent checks. */ -+ bool (*type_hash_eq) (tree, tree); -+ - /* Nonzero if types that are identical are to be hashed so that only - one copy is kept. If a language requires unique types for each - user-specified type, such as Ada, this should be set to TRUE. */ ---- gcc/langhooks.c.jj 2007-02-20 16:39:12.000000000 -0500 -+++ gcc/langhooks.c 2007-09-22 03:46:10.000000000 -0400 -@@ -411,6 +411,16 @@ lhd_tree_dump_type_quals (tree t) - /* lang_hooks.expr_size: Determine the size of the value of an expression T - in a language-specific way. Returns a tree for the size in bytes. */ - -+/* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes. -+ Called only after doing all language independent checks. */ -+ -+bool -+lhd_type_hash_eq (tree typea ATTRIBUTE_UNUSED, -+ tree typeb ATTRIBUTE_UNUSED) -+{ -+ return true; -+} -+ - tree - lhd_expr_size (tree exp) - { ---- gcc/langhooks-def.h.jj 2007-02-20 16:39:13.000000000 -0500 -+++ gcc/langhooks-def.h 2007-09-22 03:46:56.000000000 -0400 -@@ -70,6 +70,7 @@ extern tree lhd_expr_size (tree); - extern size_t lhd_tree_size (enum tree_code); - extern HOST_WIDE_INT lhd_to_target_charset (HOST_WIDE_INT); - extern tree lhd_expr_to_decl (tree, bool *, bool *, bool *); -+extern bool lhd_type_hash_eq (tree, tree); - - /* Declarations of default tree inlining hooks. */ - extern tree lhd_tree_inlining_walk_subtrees (tree *, int *, walk_tree_fn, -@@ -220,6 +221,7 @@ extern tree lhd_make_node (enum tree_cod - #define LANG_HOOKS_TYPE_MAX_SIZE lhd_return_null_tree - #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \ - lhd_omp_firstprivatize_type_sizes -+#define LANG_HOOKS_TYPE_HASH_EQ lhd_type_hash_eq - #define LANG_HOOKS_HASH_TYPES true - - #define LANG_HOOKS_FOR_TYPES_INITIALIZER { \ -@@ -234,6 +236,7 @@ extern tree lhd_make_node (enum tree_cod - LANG_HOOKS_INCOMPLETE_TYPE_ERROR, \ - LANG_HOOKS_TYPE_MAX_SIZE, \ - LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES, \ -+ LANG_HOOKS_TYPE_HASH_EQ, \ - LANG_HOOKS_HASH_TYPES \ - } - ---- gcc/tree.c.jj 2007-04-03 07:18:26.000000000 -0400 -+++ gcc/tree.c 2007-09-22 03:46:10.000000000 -0400 -@@ -4168,17 +4168,21 @@ type_hash_eq (const void *va, const void - TYPE_FIELDS (b->type)))); - - case FUNCTION_TYPE: -- return (TYPE_ARG_TYPES (a->type) == TYPE_ARG_TYPES (b->type) -- || (TYPE_ARG_TYPES (a->type) -- && TREE_CODE (TYPE_ARG_TYPES (a->type)) == TREE_LIST -- && TYPE_ARG_TYPES (b->type) -- && TREE_CODE (TYPE_ARG_TYPES (b->type)) == TREE_LIST -- && type_list_equal (TYPE_ARG_TYPES (a->type), -- TYPE_ARG_TYPES (b->type)))); -+ if (TYPE_ARG_TYPES (a->type) == TYPE_ARG_TYPES (b->type) -+ || (TYPE_ARG_TYPES (a->type) -+ && TREE_CODE (TYPE_ARG_TYPES (a->type)) == TREE_LIST -+ && TYPE_ARG_TYPES (b->type) -+ && TREE_CODE (TYPE_ARG_TYPES (b->type)) == TREE_LIST -+ && type_list_equal (TYPE_ARG_TYPES (a->type), -+ TYPE_ARG_TYPES (b->type)))) -+ break; -+ return 0; - - default: - return 0; - } -+ -+ return lang_hooks.types.type_hash_eq (a->type, b->type); - } - - /* Return the cached hash value. */ ---- gcc/cp/cp-tree.h.jj 2007-06-26 07:57:09.000000000 -0400 -+++ gcc/cp/cp-tree.h 2007-09-22 03:50:22.000000000 -0400 -@@ -4421,7 +4421,8 @@ extern tree cp_add_pending_fn_decls (vo - extern int cp_auto_var_in_fn_p (tree,tree); - extern tree fold_if_not_in_template (tree); - extern tree rvalue (tree); -- -+extern bool cxx_type_hash_eq (tree, tree); -+ - /* in typeck.c */ - extern int string_conv_p (tree, tree, int); - extern tree cp_truthvalue_conversion (tree); ---- gcc/cp/cp-objcp-common.h.jj 2007-02-20 16:37:34.000000000 -0500 -+++ gcc/cp/cp-objcp-common.h 2007-09-22 03:49:38.000000000 -0400 -@@ -85,6 +85,8 @@ extern tree objcp_tsubst_copy_and_build - #define LANG_HOOKS_WRITE_GLOBALS lhd_do_nothing - #undef LANG_HOOKS_COMDAT_GROUP - #define LANG_HOOKS_COMDAT_GROUP cxx_comdat_group -+#undef LANG_HOOKS_TYPE_HASH_EQ -+#define LANG_HOOKS_TYPE_HASH_EQ cxx_type_hash_eq - - #undef LANG_HOOKS_FUNCTION_INIT - #define LANG_HOOKS_FUNCTION_INIT cxx_push_function_context ---- gcc/cp/tree.c.jj 2007-03-12 03:28:01.000000000 -0400 -+++ gcc/cp/tree.c 2007-09-22 03:46:10.000000000 -0400 -@@ -1959,6 +1959,22 @@ cp_build_type_attribute_variant (tree ty - return new_type; - } - -+/* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes. -+ Called only after doing all language independent checks. Only -+ to check TYPE_RAISES_EXCEPTIONS for FUNCTION_TYPE, the rest is already -+ compared in type_hash_eq. */ -+ -+bool -+cxx_type_hash_eq (tree typea, tree typeb) -+{ -+ if (TREE_CODE (typea) != FUNCTION_TYPE -+ || TYPE_RAISES_EXCEPTIONS (typea) == TYPE_RAISES_EXCEPTIONS (typeb)) -+ return true; -+ -+ return comp_except_specs (TYPE_RAISES_EXCEPTIONS (typea), -+ TYPE_RAISES_EXCEPTIONS (typeb), 1); -+} -+ - /* Apply FUNC to all language-specific sub-trees of TP in a pre-order - traversal. Called from walk_tree. */ - ---- gcc/testsuite/g++.dg/ext/attrib29.C.jj 2007-09-22 03:46:10.000000000 -0400 -+++ gcc/testsuite/g++.dg/ext/attrib29.C 2007-09-22 03:46:10.000000000 -0400 -@@ -0,0 +1,10 @@ -+// PR c++/33506 -+// { dg-do compile } -+ -+extern int f1 (char *) __attribute__ ((warn_unused_result)); -+extern int f2 (char *) throw () __attribute__ ((warn_unused_result)); -+extern int f2 (char *) throw (); -+ -+extern int f3 (char *) __attribute__ ((nonnull (1))); -+extern int f4 (char *) throw () __attribute__ ((nonnull (1))); -+extern int f4 (char *) throw (); diff --git a/gcc41-pr33516.patch b/gcc41-pr33516.patch deleted file mode 100644 index 2491e11..0000000 --- a/gcc41-pr33516.patch +++ /dev/null @@ -1,63 +0,0 @@ -2007-11-02 Jakub Jelinek - - PR c++/33516 - * parser.c (cp_parser_nested_name_specifier_opt): Use - TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete - typedef of currently open class. - - * g++.dg/lookup/typedef1.C: New test. - ---- gcc/cp/parser.c (revision 129861) -+++ gcc/cp/parser.c (revision 129862) -@@ -4085,7 +4085,15 @@ cp_parser_nested_name_specifier_opt (cp_ - && !COMPLETE_TYPE_P (new_scope) - /* Do not try to complete dependent types. */ - && !dependent_type_p (new_scope)) -- new_scope = complete_type (new_scope); -+ { -+ new_scope = complete_type (new_scope); -+ /* If it is a typedef to current class, use the current -+ class instead, as the typedef won't have any names inside -+ it yet. */ -+ if (!COMPLETE_TYPE_P (new_scope) -+ && currently_open_class (new_scope)) -+ new_scope = TYPE_MAIN_VARIANT (new_scope); -+ } - /* Make sure we look in the right scope the next time through - the loop. */ - parser->scope = new_scope; ---- gcc/testsuite/g++.dg/lookup/typedef1.C (revision 0) -+++ gcc/testsuite/g++.dg/lookup/typedef1.C (revision 129862) -@@ -0,0 +1,32 @@ -+// PR c++/33516 -+// { dg-do compile } -+ -+struct S1; -+typedef S1 T1; -+struct S1 { -+ typedef int U; -+ T1::U i; -+}; -+struct S2; -+typedef S2 T2; -+struct S2 { -+ typedef int U; -+}; -+T2::U j; -+struct S3; -+typedef S3 T3; -+struct S3 { -+ typedef int U; -+ S3::U i; -+}; -+ -+void -+foo () -+{ -+ S1 s1; -+ S2 s2; -+ S3 s3; -+ s1.i = 6; -+ j = 7; -+ s3.i = 8; -+} diff --git a/gcc41-pr33537.patch b/gcc41-pr33537.patch deleted file mode 100644 index 03fd500..0000000 --- a/gcc41-pr33537.patch +++ /dev/null @@ -1,62 +0,0 @@ -2007-11-01 Jakub Jelinek - - PR debug/33537 - * dwarf2out.c (gen_formal_parameter_die, gen_variable_die, - gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type - rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl). - ---- gcc/dwarf2out.c (revision 129819) -+++ gcc/dwarf2out.c (revision 129820) -@@ -11832,8 +11832,11 @@ gen_formal_parameter_die (tree node, dw_ - add_abstract_origin_attribute (parm_die, origin); - else - { -+ tree type = TREE_TYPE (node); - add_name_and_src_coords_attributes (parm_die, node); -- add_type_attribute (parm_die, TREE_TYPE (node), -+ if (DECL_BY_REFERENCE (node)) -+ type = TREE_TYPE (type); -+ add_type_attribute (parm_die, type, - TREE_READONLY (node), - TREE_THIS_VOLATILE (node), - context_die); -@@ -12437,8 +12440,14 @@ gen_variable_die (tree decl, dw_die_ref - } - else - { -+ tree type = TREE_TYPE (decl); -+ if ((TREE_CODE (decl) == PARM_DECL -+ || TREE_CODE (decl) == RESULT_DECL) -+ && DECL_BY_REFERENCE (decl)) -+ type = TREE_TYPE (type); -+ - add_name_and_src_coords_attributes (var_die, decl); -- add_type_attribute (var_die, TREE_TYPE (decl), TREE_READONLY (decl), -+ add_type_attribute (var_die, type, TREE_READONLY (decl), - TREE_THIS_VOLATILE (decl), context_die); - - if (TREE_PUBLIC (decl)) -@@ -13694,7 +13703,10 @@ gen_decl_die (tree decl, dw_die_ref cont - - /* Output any DIEs that are needed to specify the type of this data - object. */ -- gen_type_die (TREE_TYPE (decl), context_die); -+ if (TREE_CODE (decl) == RESULT_DECL && DECL_BY_REFERENCE (decl)) -+ gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die); -+ else -+ gen_type_die (TREE_TYPE (decl), context_die); - - /* And its containing type. */ - origin = decl_class_context (decl); -@@ -13728,7 +13740,10 @@ gen_decl_die (tree decl, dw_die_ref cont - break; - - case PARM_DECL: -- gen_type_die (TREE_TYPE (decl), context_die); -+ if (DECL_BY_REFERENCE (decl)) -+ gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die); -+ else -+ gen_type_die (TREE_TYPE (decl), context_die); - gen_formal_parameter_die (decl, context_die); - break; - diff --git a/gcc41-pr33616.patch b/gcc41-pr33616.patch deleted file mode 100644 index 7817fe1..0000000 --- a/gcc41-pr33616.patch +++ /dev/null @@ -1,74 +0,0 @@ -2007-10-30 Jakub Jelinek - - PR c++/33616 - * decl2.c (build_offset_ref_call_from_tree): Call - build_non_dependent_expr on object prior to building ADDR_EXPR from it - if FN is DOTSTAR_EXPR. - - * g++.dg/template/ptrmem18.C: New test. - ---- gcc/cp/decl2.c (revision 129783) -+++ gcc/cp/decl2.c (revision 129784) -@@ -3499,9 +3499,9 @@ build_offset_ref_call_from_tree (tree fn - parameter. That must be done before the FN is transformed - because we depend on the form of FN. */ - args = build_non_dependent_args (args); -+ object = build_non_dependent_expr (object); - if (TREE_CODE (fn) == DOTSTAR_EXPR) - object = build_unary_op (ADDR_EXPR, object, 0); -- object = build_non_dependent_expr (object); - args = tree_cons (NULL_TREE, object, args); - /* Now that the arguments are done, transform FN. */ - fn = build_non_dependent_expr (fn); ---- gcc/testsuite/g++.dg/template/ptrmem18.C (revision 0) -+++ gcc/testsuite/g++.dg/template/ptrmem18.C (revision 129784) -@@ -0,0 +1,49 @@ -+// PR c++/33616 -+// { dg-do run } -+// { dg-options "-O2" } -+ -+extern "C" void abort (); -+ -+struct S { -+ int c; -+ S () : c (0) {} -+ virtual void f1 () { c += 1; } -+ virtual void f2 () { c += 16; } -+}; -+ -+struct T { -+ S s; -+}; -+ -+typedef void (S::*Q) (); -+ -+template -+void test1 (T *t) -+{ -+ (t->s.*P)(); -+} -+ -+template -+void test2 (T *t) -+{ -+ S &s = t->s; -+ (s.*P)(); -+} -+ -+int -+main () -+{ -+ T t; -+ test1 <&S::f1> (&t); -+ if (t.s.c != 1) -+ abort (); -+ test1 <&S::f2> (&t); -+ if (t.s.c != 17) -+ abort (); -+ test2 <&S::f1> (&t); -+ if (t.s.c != 18) -+ abort (); -+ test2 <&S::f2> (&t); -+ if (t.s.c != 34) -+ abort (); -+} diff --git a/gcc41-pr33619.patch b/gcc41-pr33619.patch deleted file mode 100644 index 443aa1e..0000000 --- a/gcc41-pr33619.patch +++ /dev/null @@ -1,77 +0,0 @@ -2007-10-15 Jakub Jelinek - - PR tree-optimization/33619 - * tree-outof-ssa.c (check_replaceable): Return false for all - calls other than __builtin_expect. - - * gcc.dg/pr33619.c: New test. - ---- gcc/tree-outof-ssa.c 2007-10-11 22:01:41.000000000 +0200 -+++ gcc/tree-outof-ssa.c 2007-10-16 14:28:42.000000000 +0200 -@@ -1570,12 +1570,14 @@ check_replaceable (temp_expr_table_p tab - if (flag_float_store && FLOAT_TYPE_P (TREE_TYPE (TREE_OPERAND (stmt, 1)))) - return false; - -- /* Calls to functions with side-effects cannot be replaced. */ -+ /* No calls to functions other than __builtin_expect are replaceable. */ - if ((call_expr = get_call_expr_in (stmt)) != NULL_TREE) - { -- int call_flags = call_expr_flags (call_expr); -- if (TREE_SIDE_EFFECTS (call_expr) -- && !(call_flags & (ECF_PURE | ECF_CONST | ECF_NORETURN))) -+ tree fndecl = get_callee_fndecl (call_expr); -+ -+ if (fndecl == NULL_TREE -+ || DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL -+ || DECL_FUNCTION_CODE (fndecl) != BUILT_IN_EXPECT) - return false; - } - ---- gcc/testsuite/gcc.dg/pr33619.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr33619.c (revision 129350) -@@ -0,0 +1,45 @@ -+/* PR tree-optimization/33619 */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+#ifdef __powerpc__ -+# define REG1 __asm__ ("3") -+# define REG2 __asm__ ("4") -+#elif defined __x86_64__ -+# define REG1 __asm__ ("rdi") -+# define REG2 __asm__ ("rsi") -+#else -+# define REG1 -+# define REG2 -+#endif -+ -+static inline void -+bar (unsigned long x, int y) -+{ -+ register unsigned long p1 REG1 = x; -+ register unsigned long p2 REG2 = y; -+ __asm__ volatile ("" : "=r" (p1), "=r" (p2) : "0" (p1), "1" (p2) : "memory"); -+ if (p1 != 0xdeadUL || p2 != 0xbefUL) -+ __builtin_abort (); -+} -+ -+__attribute__((const, noinline)) int -+baz (int x) -+{ -+ return x; -+} -+ -+__attribute__((noinline)) void -+foo (unsigned long *x, int y) -+{ -+ unsigned long a = *x; -+ bar (a, baz (y)); -+} -+ -+int -+main (void) -+{ -+ unsigned long a = 0xdeadUL; -+ foo (&a, 0xbefUL); -+ return 0; -+} diff --git a/gcc41-pr33639.patch b/gcc41-pr33639.patch deleted file mode 100644 index 7dccdb4..0000000 --- a/gcc41-pr33639.patch +++ /dev/null @@ -1,84 +0,0 @@ -2007-10-03 Andrew Haley - - PR java/33639 - * class.c (mangled_classname): Detect and replace illegal - characters in assembly language symbols. - (gen_indirect_dispatch_tables): Call mangled_classname() on - the type. - ---- gcc/java/class.c (revision 128980) -+++ gcc/java/class.c (revision 128981) -@@ -314,10 +314,63 @@ identifier_subst (const tree old_id, - tree - mangled_classname (const char *prefix, tree type) - { -+ tree result; - tree ident = TYPE_NAME (type); - if (TREE_CODE (ident) != IDENTIFIER_NODE) - ident = DECL_NAME (ident); -- return identifier_subst (ident, prefix, '.', '_', ""); -+ result = identifier_subst (ident, prefix, '.', '_', ""); -+ -+ /* Replace any characters that aren't in the set [0-9a-zA-Z_$] with -+ "_0xXX". Class names containing such chracters are uncommon, but -+ they do sometimes occur in class files. Without this check, -+ these names cause assembly errors. -+ -+ There is a possibility that a real class name could conflict with -+ the identifier we generate, but it is unlikely and will -+ immediately be detected as an assembler error. At some point we -+ should do something more elaborate (perhaps using the full -+ unicode mangling scheme) in order to prevent such a conflict. */ -+ { -+ int i; -+ const int len = IDENTIFIER_LENGTH (result); -+ const char *p = IDENTIFIER_POINTER (result); -+ int illegal_chars = 0; -+ -+ /* Make two passes over the identifier. The first pass is merely -+ to count illegal characters; we need to do this in order to -+ allocate a buffer. */ -+ for (i = 0; i < len; i++) -+ { -+ char c = p[i]; -+ illegal_chars += (! ISALNUM (c) && c != '_' && c != '$'); -+ } -+ -+ /* And the second pass, which is rarely executed, does the -+ rewriting. */ -+ if (illegal_chars != 0) -+ { -+ char *buffer = alloca (illegal_chars * 4 + len + 1); -+ int j; -+ -+ for (i = 0, j = 0; i < len; i++) -+ { -+ char c = p[i]; -+ if (! ISALNUM (c) && c != '_' && c != '$') -+ { -+ buffer[j++] = '_'; -+ sprintf (&buffer[j], "0x%02x", c); -+ j += 4; -+ } -+ else -+ buffer[j++] = c; -+ } -+ -+ buffer[j] = 0; -+ result = get_identifier (buffer); -+ } -+ } -+ -+ return result; - } - - tree -@@ -389,7 +442,7 @@ while (0) - void - gen_indirect_dispatch_tables (tree type) - { -- const char *typename = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); -+ const char *typename = IDENTIFIER_POINTER (mangled_classname ("", type)); - { - tree field = NULL; - char *buf = alloca (strlen (typename) + strlen ("_catch_classes_") + 1); diff --git a/gcc41-pr33723.patch b/gcc41-pr33723.patch deleted file mode 100644 index 2d3e746..0000000 --- a/gcc41-pr33723.patch +++ /dev/null @@ -1,189 +0,0 @@ -2007-10-29 Jakub Jelinek - - PR tree-optimization/33723 - * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or - MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source. - -2007-11-20 Jakub Jelinek - - PR testsuite/33978 - * gcc.dg/tree-ssa/pr33723.c: Adjust scan pattern to make it less - dependent on target settings like move_by_pieces etc. - -2007-10-30 Jakub Jelinek - - PR tree-optimization/33723 - * gcc.dg/tree-ssa/pr33723.c (T): Decrease size of field s. - -2007-10-29 Jakub Jelinek - - PR tree-optimization/33723 - * gcc.c-torture/execute/20071029-1.c: New test. - * gcc.dg/tree-ssa/pr33723.c: New test. - ---- gcc/c-gimplify.c (revision 129742) -+++ gcc/c-gimplify.c (revision 129743) -@@ -233,6 +233,29 @@ c_gimplify_expr (tree *expr_p, tree *pre - case COMPOUND_LITERAL_EXPR: - return gimplify_compound_literal_expr (expr_p, pre_p); - -+ case INIT_EXPR: -+ case MODIFY_EXPR: -+ if (TREE_CODE (TREE_OPERAND (*expr_p, 1)) == COMPOUND_LITERAL_EXPR) -+ { -+ tree complit = TREE_OPERAND (*expr_p, 1); -+ tree decl_s = COMPOUND_LITERAL_EXPR_DECL_STMT (complit); -+ tree decl = DECL_EXPR_DECL (decl_s); -+ tree init = DECL_INITIAL (decl); -+ -+ /* struct T x = (struct T) { 0, 1, 2 } can be optimized -+ into struct T x = { 0, 1, 2 } if the address of the -+ compound literal has never been taken. */ -+ if (!TREE_ADDRESSABLE (complit) -+ && !TREE_ADDRESSABLE (decl) -+ && init) -+ { -+ *expr_p = copy_node (*expr_p); -+ TREE_OPERAND (*expr_p, 1) = init; -+ return GS_OK; -+ } -+ } -+ return GS_UNHANDLED; -+ - default: - return GS_UNHANDLED; - } ---- gcc/testsuite/gcc.c-torture/execute/20071029-1.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/20071029-1.c (revision 129743) -@@ -0,0 +1,56 @@ -+extern void exit (int); -+extern void abort (void); -+ -+typedef union -+{ -+ struct -+ { -+ int f1, f2, f3, f4, f5, f6, f7, f8; -+ long int f9, f10; -+ int f11; -+ } f; -+ char s[56]; -+ long int a; -+} T; -+ -+__attribute__((noinline)) -+void -+test (T *t) -+{ -+ static int i = 11; -+ if (t->f.f1 != i++) -+ abort (); -+ if (t->f.f2 || t->f.f3 || t->f.f4 || t->f.f5 || t->f.f6 -+ || t->f.f7 || t->f.f8 || t->f.f9 || t->f.f10 || t->f.f11) -+ abort (); -+ if (i == 20) -+ exit (0); -+} -+ -+__attribute__((noinline)) -+void -+foo (int i) -+{ -+ T t; -+again: -+ t = (T) { { ++i, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -+ test (&t); -+ goto again; -+} -+ -+int -+main (void) -+{ -+ T *t1, *t2; -+ int cnt = 0; -+ t1 = (T *) 0; -+loop: -+ t2 = t1; -+ t1 = & (T) { .f.f9 = cnt++ }; -+ if (cnt < 3) -+ goto loop; -+ if (t1 != t2 || t1->f.f9 != 2) -+ abort (); -+ foo (10); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/tree-ssa/pr33723.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr33723.c (revision 129743) -@@ -0,0 +1,72 @@ -+/* PR tree-optimization/33723 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-gimple" } */ -+ -+typedef union -+{ -+ struct -+ { -+ int f1, f2, f3, f4, f5, f6, f7, f8; -+ long int f9, f10; -+ int f11; -+ } f; -+ char s[4]; -+ long int a; -+} T; -+ -+void -+foo1 (void) -+{ -+ T t; -+ t = (T) { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -+ test (&t); -+} -+ -+void -+bar1 (void) -+{ -+ T t = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -+ test (&t); -+} -+ -+void -+baz1 (void) -+{ -+ T t; -+ t = (const T) { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -+ test (&t); -+} -+ -+void -+foo2 (void) -+{ -+ T t; -+ t = (T) { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } }; -+ test (&t); -+} -+ -+void -+bar2 (void) -+{ -+ T t = { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } }; -+ test (&t); -+} -+ -+void -+baz2 (void) -+{ -+ T t; -+ t = (const T) { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } }; -+ test (&t); -+} -+ -+void -+baz3 (void) -+{ -+ T t; -+ t = (const T) (T) { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } }; -+ test (&t); -+} -+ -+/* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */ -+/* { dg-final { cleanup-tree-dump "gimple" } } */ diff --git a/gcc41-pr33836.patch b/gcc41-pr33836.patch deleted file mode 100644 index 811e128..0000000 --- a/gcc41-pr33836.patch +++ /dev/null @@ -1,51 +0,0 @@ -2007-11-05 Jakub Jelinek - - PR c++/33836 - * parser.c (cp_parser_unary_expression): For &&label call - cp_parser_non_integral_constant_expression and return error_mark_node - if it returned true. - - * g++.dg/ext/label10.C: New test. - ---- gcc/cp/parser.c (revision 129895) -+++ gcc/cp/parser.c (revision 129896) -@@ -5329,13 +5329,18 @@ cp_parser_unary_expression (cp_parser *p - && token->type == CPP_AND_AND) - { - tree identifier; -+ tree expression; - - /* Consume the '&&' token. */ - cp_lexer_consume_token (parser->lexer); - /* Look for the identifier. */ - identifier = cp_parser_identifier (parser); - /* Create an expression representing the address. */ -- return finish_label_address_expr (identifier); -+ expression = finish_label_address_expr (identifier); -+ if (cp_parser_non_integral_constant_expression (parser, -+ "the address of a label")) -+ expression = error_mark_node; -+ return expression; - } - } - if (unary_operator != ERROR_MARK) ---- gcc/testsuite/g++.dg/ext/label10.C (revision 0) -+++ gcc/testsuite/g++.dg/ext/label10.C (revision 129896) -@@ -0,0 +1,17 @@ -+// PR c++/33836 -+// { dg-do compile } -+// { dg-options "-std=gnu++98" } -+ -+template struct A -+{ -+ enum { M = && N }; // { dg-error "referenced outside|cannot appear in" } -+}; -+ -+A<0> a; -+ -+void foo () -+{ -+ __label__ P; -+ enum { O = && P }; // { dg-error "cannot appear in" } -+ P:; -+} diff --git a/gcc41-pr33842.patch b/gcc41-pr33842.patch deleted file mode 100644 index 19803f1..0000000 --- a/gcc41-pr33842.patch +++ /dev/null @@ -1,130 +0,0 @@ -2007-10-27 Jakub Jelinek - - PR c++/33842 - * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype. - * cxx-pretty-print.c (pp_cxx_primary_expression): Handle - OFFSETOF_EXPR. - (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New - functions. - * error.c (dump_expr): Handle OFFSETOF_EXPR. - - * g++.dg/template/error34.C: New test. - ---- gcc/cp/error.c (revision 129676) -+++ gcc/cp/error.c (revision 129677) -@@ -1887,6 +1887,10 @@ dump_expr (tree t, int flags) - dump_expr (TREE_OPERAND (t, 0), flags); - break; - -+ case OFFSETOF_EXPR: -+ pp_cxx_offsetof_expression (cxx_pp, t); -+ break; -+ - /* This list is incomplete, but should suffice for now. - It is very important that `sorry' does not call - `report_error_function'. That could cause an infinite loop. */ ---- gcc/cp/cxx-pretty-print.c (revision 129676) -+++ gcc/cp/cxx-pretty-print.c (revision 129677) -@@ -356,6 +356,10 @@ pp_cxx_primary_expression (cxx_pretty_pr - pp_cxx_right_paren (pp); - break; - -+ case OFFSETOF_EXPR: -+ pp_cxx_offsetof_expression (pp, t); -+ break; -+ - default: - pp_c_primary_expression (pp_c_base (pp), t); - break; -@@ -1944,6 +1948,49 @@ typedef c_pretty_print_fn pp_fun; - - /* Initialization of a C++ pretty-printer object. */ - -+static bool -+pp_cxx_offsetof_expression_1 (cxx_pretty_printer *pp, tree t) -+{ -+ switch (TREE_CODE (t)) -+ { -+ case ARROW_EXPR: -+ if (TREE_CODE (TREE_OPERAND (t, 0)) == STATIC_CAST_EXPR -+ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (t, 0)))) -+ { -+ pp_cxx_type_id (pp, TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)))); -+ pp_cxx_separate_with (pp, ','); -+ return true; -+ } -+ return false; -+ case COMPONENT_REF: -+ if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0))) -+ return false; -+ if (TREE_CODE (TREE_OPERAND (t, 0)) != ARROW_EXPR) -+ pp_cxx_dot (pp); -+ pp_cxx_expression (pp, TREE_OPERAND (t, 1)); -+ return true; -+ case ARRAY_REF: -+ if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0))) -+ return false; -+ pp_left_bracket (pp); -+ pp_cxx_expression (pp, TREE_OPERAND (t, 1)); -+ pp_right_bracket (pp); -+ return true; -+ default: -+ return false; -+ } -+} -+ -+void -+pp_cxx_offsetof_expression (cxx_pretty_printer *pp, tree t) -+{ -+ pp_cxx_identifier (pp, "offsetof"); -+ pp_cxx_left_paren (pp); -+ if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0))) -+ pp_cxx_expression (pp, TREE_OPERAND (t, 0)); -+ pp_cxx_right_paren (pp); -+} -+ - void - pp_cxx_pretty_printer_init (cxx_pretty_printer *pp) - { ---- gcc/cp/cxx-pretty-print.h (revision 129676) -+++ gcc/cp/cxx-pretty-print.h (revision 129677) -@@ -70,6 +70,6 @@ void pp_cxx_separate_with (cxx_pretty_pr - - void pp_cxx_declaration (cxx_pretty_printer *, tree); - void pp_cxx_canonical_template_parameter (cxx_pretty_printer *, tree); -- -+void pp_cxx_offsetof_expression (cxx_pretty_printer *, tree); - - #endif /* GCC_CXX_PRETTY_PRINT_H */ ---- gcc/testsuite/g++.dg/template/error34.C (revision 0) -+++ gcc/testsuite/g++.dg/template/error34.C (revision 129677) -@@ -0,0 +1,29 @@ -+// PR c++/33842 -+// { dg-do compile } -+ -+template struct A -+{ -+ A<__builtin_offsetof(T, x)>(); // { dg-error "type/value mismatch|offsetof\\(T, x\\)" } -+}; -+ -+template struct B -+{ -+ B<__builtin_offsetof(T, x.y)>(); // { dg-error "type/value mismatch|offsetof\\(T, x.y\\)" } -+}; -+ -+template struct C -+{ -+ C<__builtin_offsetof(T, x[6])>(); // { dg-error "type/value mismatch|offsetof\\(T, x\\\[6\\\]\\)" } -+}; -+ -+template struct D -+{ -+ D<__builtin_offsetof(T, x.y[6].z)>(); // { dg-error "type/value mismatch|offsetof\\(T, x.y\\\[6\\\].z\\)" } -+}; -+ -+struct E { int x; }; -+ -+template struct F -+{ -+ F<__builtin_offsetof(E, x)>(); // { dg-error "type/value mismatch|offsetof\\(E, x\\)" } -+}; diff --git a/gcc41-pr33844.patch b/gcc41-pr33844.patch deleted file mode 100644 index 4d5d883..0000000 --- a/gcc41-pr33844.patch +++ /dev/null @@ -1,56 +0,0 @@ -2007-10-27 Jakub Jelinek - - PR c++/33844 - * cxx-pretty-print.c (pp_cxx_pm_expression) : Print - ->* rather than .*. - * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR. - - * g++.dg/other/ptrmem8.C: New test. - ---- gcc/cp/error.c (revision 129681) -+++ gcc/cp/error.c (revision 129682) -@@ -1891,6 +1891,11 @@ dump_expr (tree t, int flags) - pp_cxx_offsetof_expression (cxx_pp, t); - break; - -+ case MEMBER_REF: -+ case DOTSTAR_EXPR: -+ pp_multiplicative_expression (cxx_pp, t); -+ break; -+ - /* This list is incomplete, but should suffice for now. - It is very important that `sorry' does not call - `report_error_function'. That could cause an infinite loop. */ ---- gcc/cp/cxx-pretty-print.c (revision 129681) -+++ gcc/cp/cxx-pretty-print.c (revision 129682) -@@ -814,7 +814,10 @@ pp_cxx_pm_expression (cxx_pretty_printer - case MEMBER_REF: - case DOTSTAR_EXPR: - pp_cxx_pm_expression (pp, TREE_OPERAND (t, 0)); -- pp_cxx_dot (pp); -+ if (TREE_CODE (t) == MEMBER_REF) -+ pp_cxx_arrow (pp); -+ else -+ pp_cxx_dot (pp); - pp_star(pp); - pp_cxx_cast_expression (pp, TREE_OPERAND (t, 1)); - break; ---- gcc/testsuite/g++.dg/other/ptrmem8.C (revision 0) -+++ gcc/testsuite/g++.dg/other/ptrmem8.C (revision 129682) -@@ -0,0 +1,16 @@ -+// PR c++/33844 -+// { dg-do compile } -+ -+struct A {}; -+ -+template void foo(void (A::* f)()) -+{ -+ A a; -+ &(a.*f); // { dg-error "invalid use of\[^\n\]*\\.\\*\[^\n\]*to form|qualified-id is required" } -+} -+ -+template void bar(void (A::* f)()) -+{ -+ A *p; -+ &(p->*f); // { dg-error "invalid use of\[^\n\]*->\\*\[^\n\]*to form|qualified-id is required" } -+} diff --git a/gcc41-pr33962.patch b/gcc41-pr33962.patch deleted file mode 100644 index ecd83dc..0000000 --- a/gcc41-pr33962.patch +++ /dev/null @@ -1,39 +0,0 @@ -2007-11-20 Jakub Jelinek - - PR c++/33962 - * pt.c (more_specialized_fn): Don't segfault if one or - both argument list end with ellipsis. - - * g++.dg/overload/template3.C: New test. - ---- gcc/cp/pt.c (revision 130307) -+++ gcc/cp/pt.c (revision 130308) -@@ -13523,6 +13523,10 @@ more_specialized_fn (tree pat1, tree pat - - args1 = TREE_CHAIN (args1); - args2 = TREE_CHAIN (args2); -+ -+ /* Stop when an ellipsis is seen. */ -+ if (args1 == NULL_TREE || args2 == NULL_TREE) -+ break; - } - - processing_template_decl--; ---- gcc/testsuite/g++.dg/overload/template3.C (revision 0) -+++ gcc/testsuite/g++.dg/overload/template3.C (revision 130308) -@@ -0,0 +1,15 @@ -+// PR c++/33962 -+// { dg-do compile } -+ -+template struct A; -+ -+template void foo (const U &x, ...); -+template void foo (const A &x, ...); -+ -+void bar (const A &x, const char *y) -+{ -+ foo (x, y); -+} -+ -+/* { dg-final { scan-assembler "_Z3fooIiEvRK1AIT_Ez" } } */ -+/* { dg-final { scan-assembler-not "_Z3fooI1AIiEEvRKT_z" } } */ diff --git a/gcc41-pr34070.patch b/gcc41-pr34070.patch deleted file mode 100644 index b8b1f6a..0000000 --- a/gcc41-pr34070.patch +++ /dev/null @@ -1,62 +0,0 @@ -2007-11-12 Richard Guenther - - PR middle-end/34070 - * fold-const.c (fold_binary): If testing for non-negative - operands with tree_expr_nonnegative_warnv_p make sure to - use op0 which has all (sign) conversions retained. - - * gcc.c-torture/execute/pr34070-1.c: New testcase. - * gcc.c-torture/execute/pr34070-2.c: Likewise. - ---- gcc/fold-const.c (revision 130097) -+++ gcc/fold-const.c (revision 130098) -@@ -8509,7 +8509,7 @@ fold_binary (enum tree_code code, tree t - /* Simplify A / (B << N) where A and B are positive and B is - a power of 2, to A >> (N + log2(B)). */ - if (TREE_CODE (arg1) == LSHIFT_EXPR -- && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (arg0))) -+ && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (op0))) - { - tree sval = TREE_OPERAND (arg1, 0); - if (integer_pow2p (sval) && tree_int_cst_sgn (sval) > 0) -@@ -8584,7 +8584,7 @@ fold_binary (enum tree_code code, tree t - /* Optimize TRUNC_MOD_EXPR by a power of two into a BIT_AND_EXPR, - i.e. "X % C" into "X & (C - 1)", if X and C are positive. */ - if ((code == TRUNC_MOD_EXPR || code == FLOOR_MOD_EXPR) -- && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (arg0))) -+ && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (op0))) - { - tree c = arg1; - /* Also optimize A % (C << N) where C is a power of 2, ---- gcc/testsuite/gcc.c-torture/execute/pr34070-1.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/pr34070-1.c (revision 130098) -@@ -0,0 +1,13 @@ -+extern void abort (void); -+ -+int f(unsigned int x) -+{ -+ return ((int)x) % 4; -+} -+ -+int main() -+{ -+ if (f(-1) != -1) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gcc.c-torture/execute/pr34070-2.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/pr34070-2.c (revision 130098) -@@ -0,0 +1,13 @@ -+extern void abort (void); -+ -+int f(unsigned int x, int n) -+{ -+ return ((int)x) / (1 << n); -+} -+ -+int main() -+{ -+ if (f(-1, 1) != 0) -+ abort (); -+ return 0; -+} diff --git a/gcc41-pr34089.patch b/gcc41-pr34089.patch deleted file mode 100644 index 76ff9cf..0000000 --- a/gcc41-pr34089.patch +++ /dev/null @@ -1,39 +0,0 @@ -2007-11-20 Jakub Jelinek - - PR c++/34089 - * parser.c (cp_parser_class_head): Reject function template ids. - - * g++.dg/template/crash74.C: New test. - ---- gcc/cp/parser.c (revision 130315) -+++ gcc/cp/parser.c (revision 130316) -@@ -14536,8 +14536,18 @@ cp_parser_class_head (cp_parser* parser, - /* Look up the type. */ - if (template_id_p) - { -- type = TREE_TYPE (id); -- type = maybe_process_partial_specialization (type); -+ if (TREE_CODE (id) == TEMPLATE_ID_EXPR -+ && (DECL_FUNCTION_TEMPLATE_P (TREE_OPERAND (id, 0)) -+ || TREE_CODE (TREE_OPERAND (id, 0)) == OVERLOAD)) -+ { -+ error ("function template %qD redeclared as a class template", id); -+ type = error_mark_node; -+ } -+ else -+ { -+ type = TREE_TYPE (id); -+ type = maybe_process_partial_specialization (type); -+ } - if (nested_name_specifier) - pushed_scope = push_scope (nested_name_specifier); - } ---- gcc/testsuite/g++.dg/template/crash74.C (revision 0) -+++ gcc/testsuite/g++.dg/template/crash74.C (revision 130316) -@@ -0,0 +1,6 @@ -+// PR c++/34089 -+// { dg-do compile } -+// { dg-options "" } -+ -+template void foo () { } -+template struct foo { }; // { dg-error "redeclared as" } diff --git a/gcc41-pr34130.patch b/gcc41-pr34130.patch deleted file mode 100644 index f67f8ae..0000000 --- a/gcc41-pr34130.patch +++ /dev/null @@ -1,35 +0,0 @@ -2007-11-17 Richard Guenther - - PR middle-end/34130 - * fold-const.c (extract_muldiv_1): Do not move negative - constants inside ABS_EXPR. - - * gcc.c-torture/execute/pr34130.c: New testcase. - ---- gcc/fold-const.c (revision 130257) -+++ gcc/fold-const.c (revision 130258) -@@ -6095,6 +6095,9 @@ extract_muldiv_1 (tree t, tree c, enum t - } - break; - } -+ /* If the constant is negative, we cannot simplify this. */ -+ if (tree_int_cst_sgn (c) == -1) -+ break; - /* FALLTHROUGH */ - case NEGATE_EXPR: - if ((t1 = extract_muldiv (op0, c, code, wide_type, strict_overflow_p)) ---- gcc/testsuite/gcc.c-torture/execute/pr34130.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/pr34130.c (revision 130258) -@@ -0,0 +1,12 @@ -+extern void abort (void); -+int foo (int i) -+{ -+ return -2 * __builtin_abs(i - 2); -+} -+int main() -+{ -+ if (foo(1) != -2 -+ || foo(3) != -2) -+ abort (); -+ return 0; -+} diff --git a/gcc41-pr34146.patch b/gcc41-pr34146.patch deleted file mode 100644 index 9d830d6..0000000 --- a/gcc41-pr34146.patch +++ /dev/null @@ -1,133 +0,0 @@ -2007-11-20 Jakub Jelinek - - PR c/34146 - * c-gimplify.c (optimize_compound_literals_in_ctor): New function. - (c_gimplify_expr): Use it. - - * gcc.dg/tree-ssa/pr34146.c: New test. - ---- gcc/c-gimplify.c (revision 130310) -+++ gcc/c-gimplify.c (revision 130311) -@@ -208,6 +208,47 @@ gimplify_compound_literal_expr (tree *ex - return GS_OK; - } - -+/* Optimize embedded COMPOUND_LITERAL_EXPRs within a CONSTRUCTOR, -+ return a new CONSTRUCTOR if something changed. */ -+ -+static tree -+optimize_compound_literals_in_ctor (tree orig_ctor) -+{ -+ tree ctor = orig_ctor; -+ VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS (ctor); -+ unsigned int idx, num = VEC_length (constructor_elt, elts); -+ -+ for (idx = 0; idx < num; idx++) -+ { -+ tree value = VEC_index (constructor_elt, elts, idx)->value; -+ tree newval = value; -+ if (TREE_CODE (value) == CONSTRUCTOR) -+ newval = optimize_compound_literals_in_ctor (value); -+ else if (TREE_CODE (value) == COMPOUND_LITERAL_EXPR) -+ { -+ tree decl_s = COMPOUND_LITERAL_EXPR_DECL_STMT (value); -+ tree decl = DECL_EXPR_DECL (decl_s); -+ tree init = DECL_INITIAL (decl); -+ -+ if (!TREE_ADDRESSABLE (value) -+ && !TREE_ADDRESSABLE (decl) -+ && init) -+ newval = init; -+ } -+ if (newval == value) -+ continue; -+ -+ if (ctor == orig_ctor) -+ { -+ ctor = copy_node (orig_ctor); -+ CONSTRUCTOR_ELTS (ctor) = VEC_copy (constructor_elt, gc, elts); -+ elts = CONSTRUCTOR_ELTS (ctor); -+ } -+ VEC_index (constructor_elt, elts, idx)->value = newval; -+ } -+ return ctor; -+} -+ - /* Do C-specific gimplification. Args are as for gimplify_expr. */ - - int -@@ -254,6 +295,18 @@ c_gimplify_expr (tree *expr_p, tree *pre - return GS_OK; - } - } -+ else if (TREE_CODE (TREE_OPERAND (*expr_p, 1)) == CONSTRUCTOR) -+ { -+ tree ctor -+ = optimize_compound_literals_in_ctor (TREE_OPERAND (*expr_p, 1)); -+ -+ if (ctor != TREE_OPERAND (*expr_p, 1)) -+ { -+ *expr_p = copy_node (*expr_p); -+ TREE_OPERAND (*expr_p, 1) = ctor; -+ return GS_OK; -+ } -+ } - return GS_UNHANDLED; - - default: ---- gcc/testsuite/gcc.dg/tree-ssa/pr34146.c (revision 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr34146.c (revision 130311) -@@ -0,0 +1,53 @@ -+/* PR c/34146 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-tree-gimple" } */ -+ -+struct A -+{ -+ int f1, f2, f3; -+}; -+ -+struct B -+{ -+ struct A g1, g2; -+}; -+ -+struct C -+{ -+ struct B h1, h2; -+}; -+ -+typedef union -+{ -+ struct C c; -+ char s[4]; -+ long int a; -+} T; -+ -+void -+foo (void) -+{ -+ T t = { { { { 0, 0, 0 }, { 0, 0, 0 } }, { { 0, 0, 0 }, { 0, 0, 0 } } } }; -+ test (&t); -+} -+ -+void -+bar (void) -+{ -+ T t = { { { { 0, 0, 0 }, (struct A) { 0, 0, 0 } }, -+ (struct B) { (struct A) { 0, 0, 0 }, { 0, 0, 0 } } } }; -+ test (&t); -+} -+ -+void -+baz (void) -+{ -+ T t = { { { { 0, 0, 0 }, (struct A) { 1, 1, 1 } }, -+ (struct B) { (struct A) { 0, 0, 0 }, { 1, 1, 1 } } } }; -+ test (&t); -+} -+ -+/* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */ -+/* { dg-final { scan-tree-dump-not "t\.c\.h\[12\] = D" "gimple"} } */ -+/* { dg-final { scan-tree-dump-not "\.g\[12\] = D" "gimple"} } */ -+/* { dg-final { cleanup-tree-dump "gimple" } } */ diff --git a/gcc41-pr34178.patch b/gcc41-pr34178.patch deleted file mode 100644 index 7d9e655..0000000 --- a/gcc41-pr34178.patch +++ /dev/null @@ -1,128 +0,0 @@ -2007-12-09 Jakub Jelinek - - PR c++/34178 - PR c++/34340 - * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P - in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P. - Return 2 also if DECL_EXPLICIT_INSTANTIATION. - * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when - flag_use_repository and repo_emit_p returned 2. - - * g++.dg/template/repo6.C: New test. - * g++.dg/template/repo7.C: New test. - * g++.dg/template/repo8.C: New test. - ---- gcc/cp/decl2.c (revision 130726) -+++ gcc/cp/decl2.c (revision 130727) -@@ -2230,7 +2230,8 @@ import_export_decl (tree decl) - { - /* DECL is an implicit instantiation of a function or static - data member. */ -- if (flag_implicit_templates -+ if ((flag_implicit_templates -+ && !flag_use_repository) - || (flag_implicit_inline_templates - && TREE_CODE (decl) == FUNCTION_DECL - && DECL_DECLARED_INLINE_P (decl))) ---- gcc/cp/repo.c (revision 130726) -+++ gcc/cp/repo.c (revision 130727) -@@ -304,16 +304,19 @@ repo_emit_p (tree decl) - && (!TYPE_LANG_SPECIFIC (type) - || !CLASSTYPE_TEMPLATE_INSTANTIATION (type))) - return 2; -- /* Static data members initialized by constant expressions must -+ /* Const static data members initialized by constant expressions must - be processed where needed so that their definitions are - available. */ -- if (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) -+ if (DECL_INTEGRAL_CONSTANT_VAR_P (decl) - && DECL_CLASS_SCOPE_P (decl)) - return 2; - } - else if (!DECL_TEMPLATE_INSTANTIATION (decl)) - return 2; - -+ if (DECL_EXPLICIT_INSTANTIATION (decl)) -+ return 2; -+ - /* For constructors and destructors, the repository contains - information about the clones -- not the original function -- - because only the clones are emitted in the object file. */ ---- gcc/testsuite/g++.dg/template/repo7.C (revision 0) -+++ gcc/testsuite/g++.dg/template/repo7.C (revision 130727) -@@ -0,0 +1,23 @@ -+// PR c++/34340 -+// { dg-options "-frepo" } -+// { dg-final { cleanup-repo-files } } -+ -+struct A -+{ -+ int a; -+}; -+ -+template struct D -+{ -+ static const A b; -+}; -+ -+template const A D::b = { 2 }; -+template class D; -+ -+const A *x = &D::b; -+ -+int -+main () -+{ -+} ---- gcc/testsuite/g++.dg/template/repo8.C (revision 0) -+++ gcc/testsuite/g++.dg/template/repo8.C (revision 130727) -@@ -0,0 +1,22 @@ -+// PR c++/34340 -+// { dg-options "-frepo" } -+// { dg-final { cleanup-repo-files } } -+ -+struct A -+{ -+ int a; -+}; -+ -+template struct D -+{ -+ static const A b; -+}; -+ -+template const A D::b = { 2 }; -+ -+const A *x = &D::b; -+ -+int -+main () -+{ -+} ---- gcc/testsuite/g++.dg/template/repo6.C (revision 0) -+++ gcc/testsuite/g++.dg/template/repo6.C (revision 130727) -@@ -0,0 +1,24 @@ -+// PR c++/34178 -+// { dg-options "-frepo" } -+// { dg-final { cleanup-repo-files } } -+ -+template -+class A -+{ -+private: -+ static const int x; -+ static int y; -+ -+public: -+ int getX () { return x + y; } -+}; -+ -+template const int A::x = 0; -+template int A::y = 0; -+ -+int -+main () -+{ -+ A a; -+ return a.getX(); -+} diff --git a/gcc41-pr34213.patch b/gcc41-pr34213.patch deleted file mode 100644 index b102d39..0000000 --- a/gcc41-pr34213.patch +++ /dev/null @@ -1,68 +0,0 @@ -2007-11-27 Jakub Jelinek - - PR c++/34213 - * tree.c (decl_linkage): Static data members and static member - functions in anonymous ns classes are lk_external. - - * g++.dg/ext/visibility/anon8.C: New test. - ---- gcc/cp/tree.c (revision 130462) -+++ gcc/cp/tree.c (revision 130463) -@@ -2526,10 +2526,18 @@ decl_linkage (tree decl) - /* Members of the anonymous namespace also have TREE_PUBLIC unset, but - are considered to have external linkage for language purposes. DECLs - really meant to have internal linkage have DECL_THIS_STATIC set. */ -- if (TREE_CODE (decl) == TYPE_DECL -- || ((TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL) -- && !DECL_THIS_STATIC (decl))) -+ if (TREE_CODE (decl) == TYPE_DECL) - return lk_external; -+ if (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL) -+ { -+ if (!DECL_THIS_STATIC (decl)) -+ return lk_external; -+ -+ /* Static data members and static member functions from classes -+ in anonymous namespace also don't have TREE_PUBLIC set. */ -+ if (DECL_CLASS_CONTEXT (decl)) -+ return lk_external; -+ } - - /* Everything else has internal linkage. */ - return lk_internal; ---- gcc/testsuite/g++.dg/ext/visibility/anon8.C (revision 0) -+++ gcc/testsuite/g++.dg/ext/visibility/anon8.C (revision 130463) -@@ -0,0 +1,33 @@ -+// PR c++/34213 -+// { dg-do compile } -+ -+template -+void call () -+{ -+ fn (); -+} -+ -+namespace -+{ -+ struct B1 -+ { -+ static void fn1 () {} -+ static void fn4 (); -+ }; -+ void fn3 () {} -+ void B1::fn4 () {} -+ static void fn5 () {} -+} -+ -+int main () -+{ -+ struct B2 -+ { -+ static void fn2 () {} -+ }; -+ call<&B1::fn1> (); -+ call<&B2::fn2> (); // { dg-error "not external linkage|no matching" } -+ call<&fn3> (); -+ call<&B1::fn4> (); -+ call<&fn5> (); // { dg-error "not external linkage|no matching" } -+} diff --git a/gcc41-pr34275.patch b/gcc41-pr34275.patch deleted file mode 100644 index 3545fc5..0000000 --- a/gcc41-pr34275.patch +++ /dev/null @@ -1,35 +0,0 @@ -2007-11-30 Jakub Jelinek - - PR c++/34275 - * error.c (dump_expr): Handle OBJ_TYPE_REF. - - * g++.dg/other/error20.C: New test. - ---- gcc/cp/error.c (revision 130532) -+++ gcc/cp/error.c (revision 130533) -@@ -2056,6 +2056,10 @@ dump_expr (tree t, int flags) - pp_expression (cxx_pp, t); - break; - -+ case OBJ_TYPE_REF: -+ dump_expr (resolve_virtual_fun_from_obj_type_ref (t), flags); -+ break; -+ - /* This list is incomplete, but should suffice for now. - It is very important that `sorry' does not call - `report_error_function'. That could cause an infinite loop. */ ---- gcc/testsuite/g++.dg/other/error20.C (revision 0) -+++ gcc/testsuite/g++.dg/other/error20.C (revision 130533) -@@ -0,0 +1,12 @@ -+// PR c++/34275 -+// { dg-do compile } -+ -+struct A -+{ // { dg-error "candidates" } -+ virtual A foo (); -+}; -+ -+void bar (A& a) -+{ -+ a.foo () = 0; // { dg-error "A::foo\\(\\) = 0" } -+} diff --git a/gcc41-pr34364.patch b/gcc41-pr34364.patch deleted file mode 100644 index e21a607..0000000 --- a/gcc41-pr34364.patch +++ /dev/null @@ -1,54 +0,0 @@ -2007-12-11 Jakub Jelinek - - PR c++/34364 - * rtti.c (build_dynamic_cast): Call convert_from_reference even for - dynamic_cast in a template. - - * g++.dg/rtti/dyncast2.C: New test. - ---- gcc/cp/rtti.c (revision 130769) -+++ gcc/cp/rtti.c (revision 130770) -@@ -728,8 +728,7 @@ build_dynamic_cast (tree type, tree expr - { - expr = build_min (DYNAMIC_CAST_EXPR, type, expr); - TREE_SIDE_EFFECTS (expr) = 1; -- -- return expr; -+ return convert_from_reference (expr); - } - - return convert_from_reference (build_dynamic_cast_1 (type, expr)); ---- gcc/testsuite/g++.dg/rtti/dyncast2.C (revision 0) -+++ gcc/testsuite/g++.dg/rtti/dyncast2.C (revision 130770) -@@ -0,0 +1,31 @@ -+// PR c++/34364 -+// { dg-do run } -+ -+struct A -+{ -+ virtual ~A () {} -+}; -+ -+struct B : public A -+{ -+ template struct C -+ { -+ static void f (A &a) -+ { -+ dynamic_cast (a).g (); -+ } -+ }; -+ -+ B () : c (6) {} -+ void g () { c++; } -+ int c; -+}; -+ -+B b; -+ -+int -+main (void) -+{ -+ B::C::f (b); -+ return b.c != 7; -+} diff --git a/gcc41-pr34394.patch b/gcc41-pr34394.patch deleted file mode 100644 index 7449f43..0000000 --- a/gcc41-pr34394.patch +++ /dev/null @@ -1,29 +0,0 @@ -2007-12-10 Jakub Jelinek - - PR c++/34394 - * error.c (dump_expr): Handle ABS_EXPR. - - * g++.dg/other/error22.C: New test. - ---- gcc/cp/error.c (revision 130743) -+++ gcc/cp/error.c (revision 130744) -@@ -1757,6 +1757,7 @@ dump_expr (tree t, int flags) - break; - - case SCOPE_REF: -+ case ABS_EXPR: - pp_expression (cxx_pp, t); - break; - ---- gcc/testsuite/g++.dg/other/error22.C (revision 0) -+++ gcc/testsuite/g++.dg/other/error22.C (revision 130744) -@@ -0,0 +1,9 @@ -+// PR c++/34394 -+// { dg-do compile } -+ -+extern double fabs (double); -+ -+void foo (double x) -+{ -+ fabs (x) (); // { dg-error "__builtin_abs" } -+} diff --git a/gcc41-rh184446.patch b/gcc41-rh184446.patch deleted file mode 100644 index db1e47b..0000000 --- a/gcc41-rh184446.patch +++ /dev/null @@ -1,18 +0,0 @@ -2006-03-09 Richard Henderson - Alexandre Oliva - - * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use - secure-plt-compatible load sequence to compute the GOT address - for -fPIC -msecure-plt. - ---- gcc/config/rs6000/rs6000.c.orig 2006-03-09 20:02:13.000000000 -0300 -+++ gcc/config/rs6000/rs6000.c 2006-03-09 22:00:43.000000000 -0300 -@@ -3081,7 +3081,7 @@ rs6000_legitimize_tls_address (rtx addr, - { - rtx gsym = rs6000_got_sym (); - got = gen_reg_rtx (Pmode); -- if (flag_pic == 0) -+ if (flag_pic == 0 || (flag_pic && TARGET_SECURE_PLT)) - rs6000_emit_move (got, gsym, Pmode); - else - { diff --git a/gcc41-rh235008.patch b/gcc41-rh235008.patch deleted file mode 100644 index c6045e3..0000000 --- a/gcc41-rh235008.patch +++ /dev/null @@ -1,97 +0,0 @@ -2007-04-12 Jakub Jelinek - - * fr.po: Use %s rather than %S. - * sr.po: Likewise. - * tr.po: Likewise. - * sv.po: Likewise. - * rw.po: Comment out translations with bogus format - strings. - ---- gcc/po/fr.po (revision 123636) -+++ gcc/po/fr.po (working copy) -@@ -31416,7 +31416,7 @@ msgstr "attribut « %s » ignoré" - #~ msgstr "prise de l'adresse de la borne de l'expression d'un pointeur-vers-un membre" - - #~ msgid "%s from type `%T' to type `%T' casts away constness" --#~ msgstr "%S à partir du « %T » vers le type « %T » provoque un transtypage sans constante" -+#~ msgstr "%s à partir du « %T » vers le type « %T » provoque un transtypage sans constante" - - #~ msgid "invalid reinterpret_cast from type `%T' to type `%T'" - #~ msgstr "reinterpret_cast invalide à partir du type « %T » vers le type « %T »" ---- gcc/po/sr.po (revision 123636) -+++ gcc/po/sr.po (working copy) -@@ -8516,7 +8516,7 @@ msgstr "Ðе могу Ñе променР- #: fortran/symbol.c:592 - #, no-c-format - msgid "Duplicate %s attribute specified at %L" --msgstr "ДвоÑтруки атрибут %S наведен код %L" -+msgstr "ДвоÑтруки атрибут %s наведен код %L" - - #: fortran/symbol.c:733 - #, no-c-format ---- gcc/po/tr.po (revision 123636) -+++ gcc/po/tr.po (working copy) -@@ -6951,7 +6951,7 @@ msgstr "INTERFACE gövdesinde umulmadık - #: fortran/parse.c:1604 - #, no-c-format - msgid "%s statement must appear in a MODULE" --msgstr "%S deyimi bir MODULE'de görünmemeli" -+msgstr "%s deyimi bir MODULE'de görünmemeli" - - #: fortran/parse.c:1611 - #, no-c-format ---- gcc/po/rw.po (revision 123636) -+++ gcc/po/rw.po (working copy) -@@ -2168,8 +2168,8 @@ msgstr "" - - #: tlink.c:480 - #, fuzzy, c-format --msgid "renaming .rpo file" --msgstr "Gufungura %s%S Ibisohoka IDOSIYE" -+#~ msgid "renaming .rpo file" -+#~ msgstr "Gufungura %s%S Ibisohoka IDOSIYE" - - #: tlink.c:534 - #, c-format -@@ -17500,8 +17500,8 @@ msgstr "-Umutekano" - - #: c-opts.c:1040 - #, fuzzy, gcc-internal-format --msgid "opening output file %s: %m" --msgstr "Gufungura %s%S Ibisohoka IDOSIYE" -+#~ msgid "opening output file %s: %m" -+#~ msgstr "Gufungura %s%S Ibisohoka IDOSIYE" - - #: c-opts.c:1045 - #, fuzzy, gcc-internal-format -@@ -17515,8 +17515,8 @@ msgstr "" - - #: c-opts.c:1177 - #, fuzzy, gcc-internal-format --msgid "opening dependency file %s: %m" --msgstr "Gufungura %s%S IDOSIYE" -+#~ msgid "opening dependency file %s: %m" -+#~ msgstr "Gufungura %s%S IDOSIYE" - - #: c-opts.c:1187 - #, fuzzy, gcc-internal-format ---- gcc/po/sv.po 2007-02-20 22:38:45.000000000 +0100 -+++ gcc/po/sv.po 2007-04-13 00:18:11.000000000 +0200 -@@ -3328,7 +3328,7 @@ msgstr "ogiltig operand till %%R" - #: config/sh/sh.c:773 - #, c-format - msgid "invalid operand to %%S" --msgstr "ogiltig operand till %%R" -+msgstr "ogiltig operand till %%S" - - #: config/sh/sh.c:7679 - msgid "created and used with different architectures / ABIs" -@@ -8019,7 +8019,7 @@ msgstr "PROCEDURE-attribut i konflikt me - #: fortran/resolve.c:4943 - #, no-c-format - msgid "Parameter array '%s' at %L cannot be automatic or assumed shape" --msgstr "Parametervektor \"%S\" vid %L kan inte ha automatisk eller antagen form" -+msgstr "Parametervektor \"%s\" vid %L kan inte ha automatisk eller antagen form" - - #: fortran/resolve.c:4955 - #, no-c-format diff --git a/gcc41-rh236895.patch b/gcc41-rh236895.patch deleted file mode 100644 index f7fe9b5..0000000 --- a/gcc41-rh236895.patch +++ /dev/null @@ -1,16 +0,0 @@ -2007-04-18 Andrew Haley - - * java/lang/reflect/VMProxy.java (HAVE_NATIVE_GENERATE_PROXY_CLASS): - Set to false. - ---- libjava/java/lang/reflect/VMProxy.java (revision 123861) -+++ libjava/java/lang/reflect/VMProxy.java (working copy) -@@ -65,7 +65,7 @@ - * If this is true, HAVE_NATIVE_GET_PROXY_CLASS should be false. - * @see java.lang.reflect.Proxy - */ -- static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = true; -+ static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = false; - - /** - * Optional native method to replace (and speed up) the pure Java diff --git a/gcc41-rh247256.patch b/gcc41-rh247256.patch deleted file mode 100644 index bc3c778..0000000 --- a/gcc41-rh247256.patch +++ /dev/null @@ -1,42 +0,0 @@ -2007-07-10 Jakub Jelinek - - * simplify-rtx.c (simplify_plus_minus_op_data_cmp): If both operands - are REGs and TARGET_INDEX_OPERAND_FIRST, sort lower REGNOs first. - - * gcc.dg/20070710-1.c: New test. - ---- gcc/simplify-rtx.c.jj 2006-08-11 17:32:05.000000000 +0200 -+++ gcc/simplify-rtx.c 2007-07-09 22:53:26.000000000 +0200 -@@ -2608,6 +2608,12 @@ simplify_plus_minus_op_data_cmp (const v - - commutative_operand_precedence (d1->op)); - if (result) - return result; -+ -+ /* Group together equal REGs to do more simplification. */ -+ if (TARGET_INDEX_OPERAND_FIRST && REG_P (d1->op) && REG_P (d2->op) -+ && REGNO (d1->op) != REGNO (d2->op)) -+ return REGNO (d1->op) - REGNO (d2->op); -+ - return d1->ix - d2->ix; - } - ---- gcc/testsuite/gcc.dg/20070710-1.c.jj 2007-07-10 09:32:43.000000000 +0200 -+++ gcc/testsuite/gcc.dg/20070710-1.c 2007-07-10 09:31:39.000000000 +0200 -@@ -0,0 +1,17 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -ffast-math" } */ -+ -+extern float sqrtf (float); -+ -+float -+foo (const float *m) -+{ -+ float x = m[0] + m[1] + m[2] + 1.0f; -+ float s; -+ -+ if (x > 0.001) -+ s = 0.5f / sqrtf (x); -+ else -+ s = 2.0f * sqrtf (1.0f + m[0] - m[1] - m[2]); -+ return s; -+} diff --git a/gcc41-rh317051.patch b/gcc41-rh317051.patch deleted file mode 100644 index af4a040..0000000 --- a/gcc41-rh317051.patch +++ /dev/null @@ -1,291 +0,0 @@ -2006-07-26 Francois-Xavier Coudert - - * intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG, - LSTAT, MCLOCK and MCLOCK8 intrinsic functions. - (add_subroutines): Add LSTAT intrinsic subroutine. - * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_INT2, - GFC_ISYM_INT8, GFC_ISYM_LONG, GFC_ISYM_LSTAT, GFC_ISYM_MCLOCK - and GFC_ISYM_MCLOCK8. - * iresolve.c (gfc_resolve_int2, gfc_resolve_int8, - gfc_resolve_long, gfc_resolve_lstat, gfc_resolve_mclock, - gfc_resolve_mclock8, gfc_resolve_lstat_sub): New functions. - * check.c (gfc_check_intconv): New function. - * trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for - the added GFC_ISYM_*. - * simplify.c (gfc_simplify_intconv, gfc_simplify_int2, - gfc_simplify_int8, gfc_simplify_long): New functions. - * intrinsic.h (gfc_check_intconv, gfc_simplify_int2, - gfc_simplify_int8, gfc_simplify_long, gfc_resolve_int2, - gfc_resolve_int8, gfc_resolve_long, gfc_resolve_lstat, - gfc_resolve_mclock, gfc_resolve_mclock8, gfc_resolve_lstat_sub): - Add prototypes. - - * gfortran.dg/int_conv_1.f90: New test. - ---- gcc/testsuite/gfortran.dg/int_conv_1.f90 (revision 0) -+++ gcc/testsuite/gfortran.dg/int_conv_1.f90 (revision 115754) -@@ -0,0 +1,36 @@ -+! { dg-do run } -+! { dg-options "-std=gnu" } -+ integer(kind=2) :: i2, j2, k2, l2, m2, n2, o2 -+ integer(kind=4) :: i4, j4 -+ integer(kind=8) :: i8, j8 -+ real :: x -+ complex :: z -+ -+ i2 = huge(i2) / 3 -+ i8 = int8(i2) -+ i4 = long(i2) -+ j2 = short(i2) -+ k2 = int2(i2) -+ l2 = int2(i8) -+ m2 = short(i8) -+ n2 = int2(i4) -+ o2 = short(i4) -+ -+ if (i8 /= i2 .or. i4 /= i2 .or. j2 /= i2 .or. k2 /= i2 & -+ .or. l2 /= i2 .or. m2 /= i2 .or. n2 /= i2 .or. o2 /= i2) call abort -+ -+ x = i2 -+ i8 = int8(x) -+ i4 = long(x) -+ j2 = short(x) -+ k2 = int2(x) -+ if (i8 /= i2 .or. i4 /= i2 .or. j2 /= i2 .or. k2 /= i2) call abort -+ -+ z = i2 + (0.,-42.) -+ i8 = int8(z) -+ i4 = long(z) -+ j2 = short(z) -+ k2 = int2(z) -+ if (i8 /= i2 .or. i4 /= i2 .or. j2 /= i2 .or. k2 /= i2) call abort -+ -+ end ---- gcc/fortran/intrinsic.c (revision 115753) -+++ gcc/fortran/intrinsic.c (revision 115754) -@@ -1535,6 +1535,26 @@ add_functions (void) - - make_generic ("int", GFC_ISYM_INT, GFC_STD_F77); - -+ add_sym_1 ("int2", 1, 0, BT_INTEGER, di, GFC_STD_GNU, -+ gfc_check_intconv, gfc_simplify_int2, gfc_resolve_int2, -+ a, BT_REAL, dr, REQUIRED); -+ -+ make_alias ("short", GFC_STD_GNU); -+ -+ make_generic ("int2", GFC_ISYM_INT2, GFC_STD_GNU); -+ -+ add_sym_1 ("int8", 1, 0, BT_INTEGER, di, GFC_STD_GNU, -+ gfc_check_intconv, gfc_simplify_int8, gfc_resolve_int8, -+ a, BT_REAL, dr, REQUIRED); -+ -+ make_generic ("int8", GFC_ISYM_INT8, GFC_STD_GNU); -+ -+ add_sym_1 ("long", 1, 0, BT_INTEGER, di, GFC_STD_GNU, -+ gfc_check_intconv, gfc_simplify_long, gfc_resolve_long, -+ a, BT_REAL, dr, REQUIRED); -+ -+ make_generic ("long", GFC_ISYM_LONG, GFC_STD_GNU); -+ - add_sym_2 ("ior", 1, 1, BT_INTEGER, di, GFC_STD_F95, - gfc_check_ior, gfc_simplify_ior, gfc_resolve_ior, - i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED); ---- gcc/fortran/intrinsic.h (revision 115753) -+++ gcc/fortran/intrinsic.h (revision 115754) -@@ -74,6 +74,7 @@ try gfc_check_idnint (gfc_expr *); - try gfc_check_ieor (gfc_expr *, gfc_expr *); - try gfc_check_index (gfc_expr *, gfc_expr *, gfc_expr *); - try gfc_check_int (gfc_expr *, gfc_expr *); -+try gfc_check_intconv (gfc_expr *); - try gfc_check_ior (gfc_expr *, gfc_expr *); - try gfc_check_irand (gfc_expr *); - try gfc_check_isatty (gfc_expr *); -@@ -222,6 +223,9 @@ gfc_expr *gfc_simplify_ichar (gfc_expr * - gfc_expr *gfc_simplify_ieor (gfc_expr *, gfc_expr *); - gfc_expr *gfc_simplify_index (gfc_expr *, gfc_expr *, gfc_expr *); - gfc_expr *gfc_simplify_int (gfc_expr *, gfc_expr *); -+gfc_expr *gfc_simplify_int2 (gfc_expr *); -+gfc_expr *gfc_simplify_int8 (gfc_expr *); -+gfc_expr *gfc_simplify_long (gfc_expr *); - gfc_expr *gfc_simplify_ifix (gfc_expr *); - gfc_expr *gfc_simplify_idint (gfc_expr *); - gfc_expr *gfc_simplify_ior (gfc_expr *, gfc_expr *); -@@ -352,6 +356,9 @@ void gfc_resolve_ieor (gfc_expr *, gfc_e - void gfc_resolve_ichar (gfc_expr *, gfc_expr *); - void gfc_resolve_idnint (gfc_expr *, gfc_expr *); - void gfc_resolve_int (gfc_expr *, gfc_expr *, gfc_expr *); -+void gfc_resolve_int2 (gfc_expr *, gfc_expr *); -+void gfc_resolve_int8 (gfc_expr *, gfc_expr *); -+void gfc_resolve_long (gfc_expr *, gfc_expr *); - void gfc_resolve_ior (gfc_expr *, gfc_expr *, gfc_expr *); - void gfc_resolve_isatty (gfc_expr *, gfc_expr *); - void gfc_resolve_ishft (gfc_expr *, gfc_expr *, gfc_expr *); ---- gcc/fortran/gfortran.h (revision 115753) -+++ gcc/fortran/gfortran.h (revision 115754) -@@ -377,6 +377,8 @@ enum gfc_generic_isym_id - GFC_ISYM_IERRNO, - GFC_ISYM_INDEX, - GFC_ISYM_INT, -+ GFC_ISYM_INT2, -+ GFC_ISYM_INT8, - GFC_ISYM_IOR, - GFC_ISYM_IRAND, - GFC_ISYM_ISATTY, -@@ -391,10 +393,11 @@ enum gfc_generic_isym_id - GFC_ISYM_LGT, - GFC_ISYM_LLE, - GFC_ISYM_LLT, -- GFC_ISYM_LOG, - GFC_ISYM_LOC, -+ GFC_ISYM_LOG, - GFC_ISYM_LOG10, - GFC_ISYM_LOGICAL, -+ GFC_ISYM_LONG, - GFC_ISYM_MALLOC, - GFC_ISYM_MATMUL, - GFC_ISYM_MAX, ---- gcc/fortran/iresolve.c (revision 115753) -+++ gcc/fortran/iresolve.c (revision 115754) -@@ -854,6 +854,42 @@ gfc_resolve_int (gfc_expr * f, gfc_expr - - - void -+gfc_resolve_int2 (gfc_expr * f, gfc_expr * a) -+{ -+ f->ts.type = BT_INTEGER; -+ f->ts.kind = 2; -+ -+ f->value.function.name = -+ gfc_get_string ("__int_%d_%c%d", f->ts.kind, gfc_type_letter (a->ts.type), -+ a->ts.kind); -+} -+ -+ -+void -+gfc_resolve_int8 (gfc_expr * f, gfc_expr * a) -+{ -+ f->ts.type = BT_INTEGER; -+ f->ts.kind = 8; -+ -+ f->value.function.name = -+ gfc_get_string ("__int_%d_%c%d", f->ts.kind, gfc_type_letter (a->ts.type), -+ a->ts.kind); -+} -+ -+ -+void -+gfc_resolve_long (gfc_expr * f, gfc_expr * a) -+{ -+ f->ts.type = BT_INTEGER; -+ f->ts.kind = 4; -+ -+ f->value.function.name = -+ gfc_get_string ("__int_%d_%c%d", f->ts.kind, gfc_type_letter (a->ts.type), -+ a->ts.kind); -+} -+ -+ -+void - gfc_resolve_isatty (gfc_expr * f, gfc_expr * u) - { - gfc_typespec ts; ---- gcc/fortran/check.c (revision 115753) -+++ gcc/fortran/check.c (revision 115754) -@@ -1200,6 +1200,16 @@ gfc_check_int (gfc_expr * x, gfc_expr * - - - try -+gfc_check_intconv (gfc_expr * x) -+{ -+ if (numeric_check (x, 0) == FAILURE) -+ return FAILURE; -+ -+ return SUCCESS; -+} -+ -+ -+try - gfc_check_ior (gfc_expr * i, gfc_expr * j) - { - if (type_check (i, 0, BT_INTEGER) == FAILURE) ---- gcc/fortran/trans-intrinsic.c (revision 115753) -+++ gcc/fortran/trans-intrinsic.c (revision 115754) -@@ -3477,6 +3477,9 @@ gfc_conv_intrinsic_function (gfc_se * se - /* Integer conversions are handled separately to make sure we get the - correct rounding mode. */ - case GFC_ISYM_INT: -+ case GFC_ISYM_INT2: -+ case GFC_ISYM_INT8: -+ case GFC_ISYM_LONG: - gfc_conv_intrinsic_int (se, expr, FIX_TRUNC_EXPR); - break; - ---- gcc/fortran/simplify.c (revision 115753) -+++ gcc/fortran/simplify.c (revision 115754) -@@ -1610,6 +1610,66 @@ gfc_simplify_int (gfc_expr * e, gfc_expr - } - - -+static gfc_expr * -+gfc_simplify_intconv (gfc_expr * e, int kind, const char *name) -+{ -+ gfc_expr *rpart, *rtrunc, *result; -+ -+ if (e->expr_type != EXPR_CONSTANT) -+ return NULL; -+ -+ result = gfc_constant_result (BT_INTEGER, kind, &e->where); -+ -+ switch (e->ts.type) -+ { -+ case BT_INTEGER: -+ mpz_set (result->value.integer, e->value.integer); -+ break; -+ -+ case BT_REAL: -+ rtrunc = gfc_copy_expr (e); -+ mpfr_trunc (rtrunc->value.real, e->value.real); -+ gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real); -+ gfc_free_expr (rtrunc); -+ break; -+ -+ case BT_COMPLEX: -+ rpart = gfc_complex2real (e, kind); -+ rtrunc = gfc_copy_expr (rpart); -+ mpfr_trunc (rtrunc->value.real, rpart->value.real); -+ gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real); -+ gfc_free_expr (rpart); -+ gfc_free_expr (rtrunc); -+ break; -+ -+ default: -+ gfc_error ("Argument of %s at %L is not a valid type", name, &e->where); -+ gfc_free_expr (result); -+ return &gfc_bad_expr; -+ } -+ -+ return range_check (result, name); -+} -+ -+gfc_expr * -+gfc_simplify_int2 (gfc_expr * e) -+{ -+ return gfc_simplify_intconv (e, 2, "INT2"); -+} -+ -+gfc_expr * -+gfc_simplify_int8 (gfc_expr * e) -+{ -+ return gfc_simplify_intconv (e, 8, "INT8"); -+} -+ -+gfc_expr * -+gfc_simplify_long (gfc_expr * e) -+{ -+ return gfc_simplify_intconv (e, 4, "LONG"); -+} -+ -+ - gfc_expr * - gfc_simplify_ifix (gfc_expr * e) - { diff --git a/gcc41-rh341221.patch b/gcc41-rh341221.patch deleted file mode 100644 index a56154f..0000000 --- a/gcc41-rh341221.patch +++ /dev/null @@ -1,28 +0,0 @@ -2007-10-21 Jakub Jelinek - - * doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo - timestamp rather than from current date. - * doc/Makefile.in: Regenerated. - ---- libjava/classpath/doc/Makefile.am.jj 2007-03-29 12:23:05.000000000 +0200 -+++ libjava/classpath/doc/Makefile.am 2007-10-21 13:23:17.000000000 +0200 -@@ -31,7 +31,7 @@ TOOLS_MANFILES = \ - BASEVER = $(top_srcdir)/../../gcc/BASE-VER - DEVPHASE = $(top_srcdir)/../../gcc/DEV-PHASE - --POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" -+POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')" - TEXI2POD = perl $(top_srcdir)/../../contrib/texi2pod.pl - STAMP = echo timestamp > - ---- libjava/classpath/doc/Makefile.in.jj 2007-03-29 12:23:05.000000000 +0200 -+++ libjava/classpath/doc/Makefile.in 2007-10-21 13:24:00.000000000 +0200 -@@ -317,7 +317,7 @@ TOOLS_MANFILES = \ - - BASEVER = $(top_srcdir)/../../gcc/BASE-VER - DEVPHASE = $(top_srcdir)/../../gcc/DEV-PHASE --POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" -+POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')" - TEXI2POD = perl $(top_srcdir)/../../contrib/texi2pod.pl - STAMP = echo timestamp > - all: all-recursive diff --git a/gcc41-rh364001.patch b/gcc41-rh364001.patch deleted file mode 100644 index c58c958..0000000 --- a/gcc41-rh364001.patch +++ /dev/null @@ -1,676 +0,0 @@ -2007-11-16 Jakub Jelinek - - PR fortran/22244 - * langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define. - (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it. - * langhooks.h (struct array_descr_info): Forward declaration. - (struct lang_hooks_for_types): Add get_array_descr_info field. - * dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New. - (DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2 - compatibility. - * dwarf2out.h (struct array_descr_info): New type. - * dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to - DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size. - (descr_info_loc, add_descr_info_field, gen_descr_array_type_die): - New functions. - (gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info - and gen_descr_array_type_die. - - * trans.h (struct array_descr_info): Forward declaration. - (gfc_get_array_descr_info): New prototype. - (enum gfc_array_kind): New type. - (struct lang_type): Add akind field. - (GFC_TYPE_ARRAY_AKIND): Define. - * trans-types.c: Include dwarf2out.h. - (gfc_build_array_type): Add akind argument. Adjust - gfc_get_array_type_bounds call. - (gfc_get_nodesc_array_type): Include proper debug info even for - assumed-size arrays. - (gfc_get_array_type_bounds): Add akind argument, set - GFC_TYPE_ARRAY_AKIND to it. - (gfc_sym_type, gfc_get_derived_type): Adjust gfc_build_array_type - callers. - (gfc_get_array_descr_info): New function. - * trans-array.c (gfc_trans_create_temp_array, - gfc_conv_expr_descriptor): Adjust gfc_get_array_type_bounds - callers. - * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Likewise. - * trans-types.h (gfc_get_array_type_bounds): Adjust prototype. - * Make-lang.in (fortran/trans-types.o): Depend on dwarf2out.h. - * f95-lang.c (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define. - ---- gcc/fortran/trans.h.jj 2007-07-23 12:24:16.000000000 +0200 -+++ gcc/fortran/trans.h 2007-11-24 15:04:51.000000000 +0100 -@@ -453,6 +453,8 @@ tree getdecls (void); - tree gfc_truthvalue_conversion (tree); - tree builtin_function (const char *, tree, int, enum built_in_class, - const char *, tree); -+struct array_descr_info; -+bool gfc_get_array_descr_info (tree, struct array_descr_info *); - - /* In trans-openmp.c */ - bool gfc_omp_privatize_by_reference (tree); -@@ -541,10 +543,19 @@ extern GTY(()) tree gfor_fndecl_sr_kind; - - /* G95-specific declaration information. */ - -+enum gfc_array_kind -+{ -+ GFC_ARRAY_UNKNOWN, -+ GFC_ARRAY_ASSUMED_SHAPE, -+ GFC_ARRAY_ALLOCATABLE, -+ GFC_ARRAY_POINTER -+}; -+ - /* Array types only. */ - struct lang_type GTY(()) - { - int rank; -+ enum gfc_array_kind akind; - tree lbound[GFC_MAX_DIMENSIONS]; - tree ubound[GFC_MAX_DIMENSIONS]; - tree stride[GFC_MAX_DIMENSIONS]; -@@ -595,7 +606,8 @@ struct lang_decl GTY(()) - #define GFC_TYPE_ARRAY_RANK(node) (TYPE_LANG_SPECIFIC(node)->rank) - #define GFC_TYPE_ARRAY_SIZE(node) (TYPE_LANG_SPECIFIC(node)->size) - #define GFC_TYPE_ARRAY_OFFSET(node) (TYPE_LANG_SPECIFIC(node)->offset) --/* Code should use gfc_get_dtype instead of accesig this directly. It may -+#define GFC_TYPE_ARRAY_AKIND(node) (TYPE_LANG_SPECIFIC(node)->akind) -+/* Code should use gfc_get_dtype instead of accesing this directly. It may - not be known when the type is created. */ - #define GFC_TYPE_ARRAY_DTYPE(node) (TYPE_LANG_SPECIFIC(node)->dtype) - #define GFC_TYPE_ARRAY_DATAPTR_TYPE(node) \ ---- gcc/fortran/trans-stmt.c.jj 2007-03-12 08:28:15.000000000 +0100 -+++ gcc/fortran/trans-stmt.c 2007-11-24 14:58:20.000000000 +0100 -@@ -2313,7 +2313,8 @@ gfc_trans_pointer_assign_need_temp (gfc_ - /* Make a new descriptor. */ - parmtype = gfc_get_element_type (TREE_TYPE (desc)); - parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, -- loop.from, loop.to, 1); -+ loop.from, loop.to, 1, -+ GFC_ARRAY_UNKNOWN); - - /* Allocate temporary for nested forall construct. */ - tmp1 = allocate_temp_for_forall_nest (nested_forall_info, parmtype, ---- gcc/fortran/f95-lang.c.jj 2007-02-20 22:38:20.000000000 +0100 -+++ gcc/fortran/f95-lang.c 2007-11-24 15:03:19.000000000 +0100 -@@ -124,6 +124,7 @@ static HOST_WIDE_INT gfc_get_alias_set ( - #undef LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR - #undef LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE - #undef LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES -+#undef LANG_HOOKS_GET_ARRAY_DESCR_INFO - - /* Define lang hooks. */ - #define LANG_HOOKS_NAME "GNU F95" -@@ -150,6 +151,7 @@ static HOST_WIDE_INT gfc_get_alias_set ( - #define LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE gfc_omp_private_debug_clause - #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \ - gfc_omp_firstprivatize_type_sizes -+#define LANG_HOOKS_GET_ARRAY_DESCR_INFO gfc_get_array_descr_info - - const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; - ---- gcc/fortran/Make-lang.in.jj 2007-09-25 11:32:17.000000000 +0200 -+++ gcc/fortran/Make-lang.in 2007-11-24 15:02:36.000000000 +0100 -@@ -292,7 +292,7 @@ fortran/trans-decl.o: $(GFORTRAN_TRANS_D - cgraph.h $(TARGET_H) function.h $(FLAGS_H) $(RTL_H) tree-gimple.h \ - tree-dump.h - fortran/trans-types.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-types.h \ -- real.h toplev.h $(TARGET_H) $(FLAGS_H) -+ real.h toplev.h $(TARGET_H) $(FLAGS_H) dwarf2out.h - fortran/trans-const.o: $(GFORTRAN_TRANS_DEPS) - fortran/trans-expr.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h - fortran/trans-stmt.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h ---- gcc/fortran/trans-types.c.jj 2007-09-25 11:32:17.000000000 +0200 -+++ gcc/fortran/trans-types.c 2007-11-24 15:06:59.000000000 +0100 -@@ -36,6 +36,7 @@ Software Foundation, 51 Franklin Street, - #include "trans-const.h" - #include "real.h" - #include "flags.h" -+#include "dwarf2out.h" - - - #if (GFC_MAX_DIMENSIONS < 10) -@@ -821,7 +822,8 @@ gfc_is_nodesc_array (gfc_symbol * sym) - /* Create an array descriptor type. */ - - static tree --gfc_build_array_type (tree type, gfc_array_spec * as) -+gfc_build_array_type (tree type, gfc_array_spec * as, -+ enum gfc_array_kind akind) - { - tree lbound[GFC_MAX_DIMENSIONS]; - tree ubound[GFC_MAX_DIMENSIONS]; -@@ -837,7 +839,9 @@ gfc_build_array_type (tree type, gfc_arr - ubound[n] = gfc_conv_array_bound (as->upper[n]); - } - -- return gfc_get_array_type_bounds (type, as->rank, lbound, ubound, 0); -+ if (as->type == AS_ASSUMED_SHAPE) -+ akind = GFC_ARRAY_ASSUMED_SHAPE; -+ return gfc_get_array_type_bounds (type, as->rank, lbound, ubound, 0, akind); - } - - /* Returns the struct descriptor_dimension type. */ -@@ -1015,7 +1019,7 @@ gfc_get_nodesc_array_type (tree etype, g - if (expr->expr_type == EXPR_CONSTANT) - { - tmp = gfc_conv_mpz_to_tree (expr->value.integer, -- gfc_index_integer_kind); -+ gfc_index_integer_kind); - } - else - { -@@ -1107,7 +1111,7 @@ gfc_get_nodesc_array_type (tree etype, g - /* In debug info represent packed arrays as multi-dimensional - if they have rank > 1 and with proper bounds, instead of flat - arrays. */ -- if (known_stride && write_symbols != NO_DEBUG) -+ if (known_offset && write_symbols != NO_DEBUG) - { - tree gtype = etype, rtype, type_decl; - -@@ -1193,7 +1197,8 @@ gfc_get_array_descriptor_base (int dimen - - tree - gfc_get_array_type_bounds (tree etype, int dimen, tree * lbound, -- tree * ubound, int packed) -+ tree * ubound, int packed, -+ enum gfc_array_kind akind) - { - char name[8 + GFC_RANK_DIGITS + GFC_MAX_SYMBOL_LEN]; - tree fat_type, base_type, arraytype, lower, upper, stride, tmp; -@@ -1220,6 +1225,7 @@ gfc_get_array_type_bounds (tree etype, i - - GFC_TYPE_ARRAY_RANK (fat_type) = dimen; - GFC_TYPE_ARRAY_DTYPE (fat_type) = NULL_TREE; -+ GFC_TYPE_ARRAY_AKIND (fat_type) = akind; - - /* Build an array descriptor record type. */ - if (packed != 0) -@@ -1337,7 +1343,14 @@ gfc_sym_type (gfc_symbol * sym) - } - } - else -- type = gfc_build_array_type (type, sym->as); -+ { -+ enum gfc_array_kind akind = GFC_ARRAY_UNKNOWN; -+ if (sym->attr.pointer) -+ akind = GFC_ARRAY_POINTER; -+ else if (sym->attr.allocatable) -+ akind = GFC_ARRAY_ALLOCATABLE; -+ type = gfc_build_array_type (type, sym->as, akind); -+ } - } - else - { -@@ -1550,7 +1563,8 @@ gfc_get_derived_type (gfc_symbol * deriv - { - /* Pointers to arrays aren't actually pointer types. The - descriptors are separate, but the data is common. */ -- field_type = gfc_build_array_type (field_type, c->as); -+ field_type = gfc_build_array_type (field_type, c->as, -+ GFC_ARRAY_POINTER); - } - else - field_type = gfc_get_nodesc_array_type (field_type, c->as, 3); -@@ -1893,4 +1907,124 @@ gfc_signed_type (tree type) - return gfc_signed_or_unsigned_type (0, type); - } - -+/* Return TRUE if TYPE is a type with a hidden descriptor, fill in INFO -+ in that case. */ -+ -+bool -+gfc_get_array_descr_info (tree type, struct array_descr_info *info) -+{ -+ int rank, dim; -+ bool indirect = false; -+ tree etype, ptype, field, t, base_decl; -+ tree data_off, offset_off, dim_off, dim_size, elem_size; -+ tree lower_suboff, upper_suboff, stride_suboff; -+ -+ if (! GFC_DESCRIPTOR_TYPE_P (type)) -+ { -+ if (! POINTER_TYPE_P (type)) -+ return false; -+ type = TREE_TYPE (type); -+ if (! GFC_DESCRIPTOR_TYPE_P (type)) -+ return false; -+ indirect = true; -+ } -+ -+ rank = GFC_TYPE_ARRAY_RANK (type); -+ if (rank >= (int) (sizeof (info->dimen) / sizeof (info->dimen[0]))) -+ return false; -+ -+ etype = GFC_TYPE_ARRAY_DATAPTR_TYPE (type); -+ gcc_assert (POINTER_TYPE_P (etype)); -+ etype = TREE_TYPE (etype); -+ gcc_assert (TREE_CODE (etype) == ARRAY_TYPE); -+ etype = TREE_TYPE (etype); -+ /* Can't handle variable sized elements yet. */ -+ if (int_size_in_bytes (etype) <= 0) -+ return false; -+ /* Nor non-constant lower bounds in assumed shape arrays. */ -+ if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_SHAPE) -+ { -+ for (dim = 0; dim < rank; dim++) -+ if (GFC_TYPE_ARRAY_LBOUND (type, dim) == NULL_TREE -+ || TREE_CODE (GFC_TYPE_ARRAY_LBOUND (type, dim)) != INTEGER_CST) -+ return false; -+ } -+ -+ memset (info, '\0', sizeof (*info)); -+ info->ndimensions = rank; -+ info->element_type = etype; -+ ptype = build_pointer_type (gfc_array_index_type); -+ if (indirect) -+ { -+ info->base_decl = build_decl (VAR_DECL, NULL_TREE, -+ build_pointer_type (ptype)); -+ base_decl = build1 (INDIRECT_REF, ptype, info->base_decl); -+ } -+ else -+ info->base_decl = base_decl = build_decl (VAR_DECL, NULL_TREE, ptype); -+ -+ elem_size = fold_convert (gfc_array_index_type, TYPE_SIZE_UNIT (etype)); -+ field = TYPE_FIELDS (TYPE_MAIN_VARIANT (type)); -+ data_off = byte_position (field); -+ field = TREE_CHAIN (field); -+ offset_off = byte_position (field); -+ field = TREE_CHAIN (field); -+ field = TREE_CHAIN (field); -+ dim_off = byte_position (field); -+ dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (field))); -+ field = TYPE_FIELDS (TREE_TYPE (TREE_TYPE (field))); -+ stride_suboff = byte_position (field); -+ field = TREE_CHAIN (field); -+ lower_suboff = byte_position (field); -+ field = TREE_CHAIN (field); -+ upper_suboff = byte_position (field); -+ -+ t = base_decl; -+ if (!integer_zerop (data_off)) -+ t = build2 (PLUS_EXPR, ptype, t, data_off); -+ t = build1 (NOP_EXPR, build_pointer_type (ptr_type_node), t); -+ info->data_location = build1 (INDIRECT_REF, ptr_type_node, t); -+ if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ALLOCATABLE) -+ info->allocated = build2 (NE_EXPR, boolean_type_node, -+ info->data_location, null_pointer_node); -+ else if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_POINTER) -+ info->associated = build2 (NE_EXPR, boolean_type_node, -+ info->data_location, null_pointer_node); -+ -+ for (dim = 0; dim < rank; dim++) -+ { -+ t = build2 (PLUS_EXPR, ptype, base_decl, -+ size_binop (PLUS_EXPR, dim_off, lower_suboff)); -+ t = build1 (INDIRECT_REF, gfc_array_index_type, t); -+ info->dimen[dim].lower_bound = t; -+ t = build2 (PLUS_EXPR, ptype, base_decl, -+ size_binop (PLUS_EXPR, dim_off, upper_suboff)); -+ t = build1 (INDIRECT_REF, gfc_array_index_type, t); -+ info->dimen[dim].upper_bound = t; -+ if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_SHAPE) -+ { -+ /* Assumed shape arrays have known lower bounds. */ -+ info->dimen[dim].upper_bound -+ = build2 (MINUS_EXPR, gfc_array_index_type, -+ info->dimen[dim].upper_bound, -+ info->dimen[dim].lower_bound); -+ info->dimen[dim].lower_bound -+ = fold_convert (gfc_array_index_type, -+ GFC_TYPE_ARRAY_LBOUND (type, dim)); -+ info->dimen[dim].upper_bound -+ = build2 (PLUS_EXPR, gfc_array_index_type, -+ info->dimen[dim].lower_bound, -+ info->dimen[dim].upper_bound); -+ } -+ t = build2 (PLUS_EXPR, ptype, base_decl, -+ size_binop (PLUS_EXPR, dim_off, stride_suboff)); -+ t = build1 (INDIRECT_REF, gfc_array_index_type, t); -+ t = build2 (MULT_EXPR, gfc_array_index_type, t, elem_size); -+ info->dimen[dim].stride = t; -+ dim_off = size_binop (PLUS_EXPR, dim_off, dim_size); -+ } -+ -+ return true; -+} -+ - #include "gt-fortran-trans-types.h" ---- gcc/fortran/trans-array.c.jj 2007-04-03 13:10:00.000000000 +0200 -+++ gcc/fortran/trans-array.c 2007-11-24 14:58:20.000000000 +0100 -@@ -612,7 +612,8 @@ gfc_trans_allocate_temp_array (stmtblock - - /* Initialize the descriptor. */ - type = -- gfc_get_array_type_bounds (eltype, info->dimen, loop->from, loop->to, 1); -+ gfc_get_array_type_bounds (eltype, info->dimen, loop->from, loop->to, 1, -+ GFC_ARRAY_UNKNOWN); - desc = gfc_create_var (type, "atmp"); - GFC_DECL_PACKED_ARRAY (desc) = 1; - -@@ -4345,7 +4346,8 @@ gfc_conv_expr_descriptor (gfc_se * se, g - /* Otherwise make a new one. */ - parmtype = gfc_get_element_type (TREE_TYPE (desc)); - parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, -- loop.from, loop.to, 0); -+ loop.from, loop.to, 0, -+ GFC_ARRAY_UNKNOWN); - parm = gfc_create_var (parmtype, "parm"); - } - ---- gcc/fortran/trans-types.h.jj 2007-02-20 22:38:20.000000000 +0100 -+++ gcc/fortran/trans-types.h 2007-11-24 15:03:58.000000000 +0100 -@@ -79,7 +79,8 @@ tree gfc_signed_type (tree); - tree gfc_signed_or_unsigned_type (int, tree); - - tree gfc_get_element_type (tree); --tree gfc_get_array_type_bounds (tree, int, tree *, tree *, int); -+tree gfc_get_array_type_bounds (tree, int, tree *, tree *, int, -+ enum gfc_array_kind); - tree gfc_get_nodesc_array_type (tree, gfc_array_spec *, int); - - /* Add a field of given name and type to a UNION_TYPE or RECORD_TYPE. */ ---- gcc/dwarf2.h.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/dwarf2.h 2007-11-24 14:58:20.000000000 +0100 -@@ -275,7 +275,8 @@ enum dwarf_attribute - DW_AT_prototyped = 0x27, - DW_AT_return_addr = 0x2a, - DW_AT_start_scope = 0x2c, -- DW_AT_stride_size = 0x2e, -+ DW_AT_bit_stride = 0x2e, -+ DW_AT_stride_size = DW_AT_bit_stride, - DW_AT_upper_bound = 0x2f, - DW_AT_abstract_origin = 0x31, - DW_AT_accessibility = 0x32, -@@ -310,7 +311,8 @@ enum dwarf_attribute - DW_AT_allocated = 0x4e, - DW_AT_associated = 0x4f, - DW_AT_data_location = 0x50, -- DW_AT_stride = 0x51, -+ DW_AT_byte_stride = 0x51, -+ DW_AT_stride = DW_AT_byte_stride, - DW_AT_entry_pc = 0x52, - DW_AT_use_UTF8 = 0x53, - DW_AT_extension = 0x54, ---- gcc/langhooks.h.jj 2007-11-23 17:41:15.000000000 +0100 -+++ gcc/langhooks.h 2007-11-24 15:01:32.000000000 +0100 -@@ -28,6 +28,8 @@ struct diagnostic_info; - - struct gimplify_omp_ctx; - -+struct array_descr_info; -+ - /* A print hook for print_tree (). */ - typedef void (*lang_print_tree_hook) (FILE *, tree, int indent); - -@@ -153,6 +155,10 @@ struct lang_hooks_for_types - Called only after doing all language independent checks. */ - bool (*type_hash_eq) (tree, tree); - -+ /* Return TRUE if TYPE uses a hidden descriptor and fills in information -+ for the debugger about the array bounds, strides, etc. */ -+ bool (*get_array_descr_info) (tree, struct array_descr_info *); -+ - /* Nonzero if types that are identical are to be hashed so that only - one copy is kept. If a language requires unique types for each - user-specified type, such as Ada, this should be set to TRUE. */ ---- gcc/langhooks-def.h.jj 2007-11-23 17:41:15.000000000 +0100 -+++ gcc/langhooks-def.h 2007-11-24 15:00:47.000000000 +0100 -@@ -223,6 +223,7 @@ extern tree lhd_make_node (enum tree_cod - #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \ - lhd_omp_firstprivatize_type_sizes - #define LANG_HOOKS_TYPE_HASH_EQ lhd_type_hash_eq -+#define LANG_HOOKS_GET_ARRAY_DESCR_INFO NULL - #define LANG_HOOKS_HASH_TYPES true - - #define LANG_HOOKS_FOR_TYPES_INITIALIZER { \ -@@ -238,6 +239,7 @@ extern tree lhd_make_node (enum tree_cod - LANG_HOOKS_TYPE_MAX_SIZE, \ - LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES, \ - LANG_HOOKS_TYPE_HASH_EQ, \ -+ LANG_HOOKS_GET_ARRAY_DESCR_INFO, \ - LANG_HOOKS_HASH_TYPES \ - } - ---- gcc/dwarf2out.c.jj 2007-11-23 18:10:20.000000000 +0100 -+++ gcc/dwarf2out.c 2007-11-24 14:58:20.000000000 +0100 -@@ -4146,6 +4146,7 @@ static tree member_declared_type (tree); - static const char *decl_start_label (tree); - #endif - static void gen_array_type_die (tree, dw_die_ref); -+static void gen_descr_array_type_die (tree, struct array_descr_info *, dw_die_ref); - #if 0 - static void gen_entry_point_die (tree, dw_die_ref); - #endif -@@ -4552,8 +4553,8 @@ dwarf_attr_name (unsigned int attr) - return "DW_AT_return_addr"; - case DW_AT_start_scope: - return "DW_AT_start_scope"; -- case DW_AT_stride_size: -- return "DW_AT_stride_size"; -+ case DW_AT_bit_stride: -+ return "DW_AT_bit_stride"; - case DW_AT_upper_bound: - return "DW_AT_upper_bound"; - case DW_AT_abstract_origin: -@@ -4621,8 +4622,8 @@ dwarf_attr_name (unsigned int attr) - return "DW_AT_associated"; - case DW_AT_data_location: - return "DW_AT_data_location"; -- case DW_AT_stride: -- return "DW_AT_stride"; -+ case DW_AT_byte_stride: -+ return "DW_AT_byte_stride"; - case DW_AT_entry_pc: - return "DW_AT_entry_pc"; - case DW_AT_use_UTF8: -@@ -11169,6 +11170,159 @@ gen_array_type_die (tree type, dw_die_re - add_type_attribute (array_die, element_type, 0, 0, context_die); - } - -+static dw_loc_descr_ref -+descr_info_loc (tree val, tree base_decl) -+{ -+ HOST_WIDE_INT size; -+ dw_loc_descr_ref loc, loc2; -+ enum dwarf_location_atom op; -+ -+ if (val == base_decl) -+ return new_loc_descr (DW_OP_push_object_address, 0, 0); -+ -+ switch (TREE_CODE (val)) -+ { -+ case NOP_EXPR: -+ case CONVERT_EXPR: -+ return descr_info_loc (TREE_OPERAND (val, 0), base_decl); -+ case INTEGER_CST: -+ if (host_integerp (val, 0)) -+ return int_loc_descriptor (tree_low_cst (val, 0)); -+ break; -+ case INDIRECT_REF: -+ size = int_size_in_bytes (TREE_TYPE (val)); -+ if (size < 0) -+ break; -+ loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl); -+ if (!loc) -+ break; -+ if (size == DWARF2_ADDR_SIZE) -+ add_loc_descr (&loc, new_loc_descr (DW_OP_deref, 0, 0)); -+ else -+ add_loc_descr (&loc, new_loc_descr (DW_OP_deref_size, size, 0)); -+ return loc; -+ case PLUS_EXPR: -+ if (host_integerp (TREE_OPERAND (val, 1), 1) -+ && (unsigned HOST_WIDE_INT) tree_low_cst (TREE_OPERAND (val, 1), 1) -+ < 16384) -+ { -+ loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl); -+ if (!loc) -+ break; -+ add_loc_descr (&loc, -+ new_loc_descr (DW_OP_plus_uconst, -+ tree_low_cst (TREE_OPERAND (val, 1), -+ 1), 0)); -+ } -+ else -+ { -+ op = DW_OP_plus; -+ do_binop: -+ loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl); -+ if (!loc) -+ break; -+ loc2 = descr_info_loc (TREE_OPERAND (val, 1), base_decl); -+ if (!loc2) -+ break; -+ add_loc_descr (&loc, loc2); -+ add_loc_descr (&loc2, new_loc_descr (op, 0, 0)); -+ } -+ return loc; -+ case MINUS_EXPR: -+ op = DW_OP_minus; -+ goto do_binop; -+ case MULT_EXPR: -+ op = DW_OP_mul; -+ goto do_binop; -+ case EQ_EXPR: -+ op = DW_OP_eq; -+ goto do_binop; -+ case NE_EXPR: -+ op = DW_OP_ne; -+ goto do_binop; -+ default: -+ break; -+ } -+ return NULL; -+} -+ -+static void -+add_descr_info_field (dw_die_ref die, enum dwarf_attribute attr, -+ tree val, tree base_decl) -+{ -+ dw_loc_descr_ref loc; -+ -+ if (host_integerp (val, 0)) -+ { -+ add_AT_unsigned (die, attr, tree_low_cst (val, 0)); -+ return; -+ } -+ -+ loc = descr_info_loc (val, base_decl); -+ if (!loc) -+ return; -+ -+ add_AT_loc (die, attr, loc); -+} -+ -+/* This routine generates DIE for array with hidden descriptor, details -+ are filled into *info by a langhook. */ -+ -+static void -+gen_descr_array_type_die (tree type, struct array_descr_info *info, -+ dw_die_ref context_die) -+{ -+ dw_die_ref scope_die = scope_die_for (type, context_die); -+ dw_die_ref array_die; -+ int dim; -+ -+ array_die = new_die (DW_TAG_array_type, scope_die, type); -+ add_name_attribute (array_die, type_tag (type)); -+ equate_type_number_to_die (type, array_die); -+ -+ if (info->data_location) -+ add_descr_info_field (array_die, DW_AT_data_location, info->data_location, -+ info->base_decl); -+ if (info->associated) -+ add_descr_info_field (array_die, DW_AT_associated, info->associated, -+ info->base_decl); -+ if (info->allocated) -+ add_descr_info_field (array_die, DW_AT_allocated, info->allocated, -+ info->base_decl); -+ -+ for (dim = 0; dim < info->ndimensions; dim++) -+ { -+ dw_die_ref subrange_die -+ = new_die (DW_TAG_subrange_type, array_die, NULL); -+ -+ if (info->dimen[dim].lower_bound) -+ { -+ /* If it is the default value, omit it. */ -+ if ((is_c_family () || is_java ()) -+ && integer_zerop (info->dimen[dim].lower_bound)) -+ ; -+ else if (is_fortran () -+ && integer_onep (info->dimen[dim].lower_bound)) -+ ; -+ else -+ add_descr_info_field (subrange_die, DW_AT_lower_bound, -+ info->dimen[dim].lower_bound, -+ info->base_decl); -+ } -+ if (info->dimen[dim].upper_bound) -+ add_descr_info_field (subrange_die, DW_AT_upper_bound, -+ info->dimen[dim].upper_bound, -+ info->base_decl); -+ if (info->dimen[dim].stride) -+ add_descr_info_field (subrange_die, DW_AT_byte_stride, -+ info->dimen[dim].stride, -+ info->base_decl); -+ } -+ -+ gen_type_die (info->element_type, context_die); -+ add_type_attribute (array_die, info->element_type, 0, 0, context_die); -+} -+ - #if 0 - static void - gen_entry_point_die (tree decl, dw_die_ref context_die) -@@ -12478,6 +12632,7 @@ static void - gen_type_die (tree type, dw_die_ref context_die) - { - int need_pop; -+ struct array_descr_info info; - - if (type == NULL_TREE || type == error_mark_node) - return; -@@ -12496,6 +12651,16 @@ gen_type_die (tree type, dw_die_ref cont - return; - } - -+ /* If this is an array type with hidden descriptor, handle it first. */ -+ if (!TREE_ASM_WRITTEN (type) -+ && lang_hooks.types.get_array_descr_info -+ && lang_hooks.types.get_array_descr_info (type, &info)) -+ { -+ gen_descr_array_type_die (type, &info, context_die); -+ TREE_ASM_WRITTEN (type) = 1; -+ return; -+ } -+ - /* We are going to output a DIE to represent the unqualified version - of this type (i.e. without any const or volatile qualifiers) so - get the main variant (i.e. the unqualified version) of this type ---- gcc/dwarf2out.h.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/dwarf2out.h 2007-11-24 15:00:14.000000000 +0100 -@@ -27,3 +27,19 @@ struct die_struct; - extern void debug_dwarf_die (struct die_struct *); - extern void dwarf2out_set_demangle_name_func (const char *(*) (const char *)); - extern void dwarf2out_add_library_unit_info (const char *, const char *); -+ -+struct array_descr_info -+{ -+ int ndimensions; -+ tree element_type; -+ tree base_decl; -+ tree data_location; -+ tree allocated; -+ tree associated; -+ struct array_descr_dimen -+ { -+ tree lower_bound; -+ tree upper_bound; -+ tree stride; -+ } dimen[10]; -+}; diff --git a/gcc41-rh407281.patch b/gcc41-rh407281.patch deleted file mode 100644 index aabd073..0000000 --- a/gcc41-rh407281.patch +++ /dev/null @@ -1,190 +0,0 @@ -2007-12-02 Jakub Jelinek - - * gcc.c-torture/execute/20071202-1.c: New test. - -2007-02-19 Eric Botcazou - - * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap - due to calls to functions taking pointers as parameters. - - * gnat.dg/self_aggregate_with_call.adb: New test. - -2006-08-21 Olivier Hainque - - * gimplify.c (gimplify_init_constructor) : - Arrange for the temporary captures of components overlapping the lhs - to happen before the lhs is possibly cleared. - - * gnat.dg/self_aggregate_with_zeros.adb: New test. - * gnat.dg/self_aggregate_with_array.adb: New test. - ---- gcc/gimplify.c (revision 116299) -+++ gcc/gimplify.c (revision 116300) -@@ -2638,6 +2638,21 @@ gimplify_init_ctor_preeval_1 (tree *tp, - && alias_sets_conflict_p (data->lhs_alias_set, get_alias_set (t))) - return t; - -+ /* If the constructor component is a call, determine if it can hide a -+ potential overlap with the lhs through an INDIRECT_REF like above. */ -+ if (TREE_CODE (t) == CALL_EXPR) -+ { -+ tree type, fntype = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0))); -+ -+ for (type = TYPE_ARG_TYPES (fntype); type; type = TREE_CHAIN (type)) -+ if (POINTER_TYPE_P (TREE_VALUE (type)) -+ && (!data->lhs_base_decl || TREE_ADDRESSABLE (data->lhs_base_decl)) -+ && alias_sets_conflict_p (data->lhs_alias_set, -+ get_alias_set -+ (TREE_TYPE (TREE_VALUE (type))))) -+ return t; -+ } -+ - if (IS_TYPE_OR_DECL_P (t)) - *walk_subtrees = 0; - return NULL; -@@ -3061,6 +3061,20 @@ gimplify_init_constructor (tree *expr_p, - } - } - -+ /* If there are nonzero elements, pre-evaluate to capture elements -+ overlapping with the lhs into temporaries. We must do this before -+ clearing to fetch the values before they are zeroed-out. */ -+ if (num_nonzero_elements > 0) -+ { -+ preeval_data.lhs_base_decl = get_base_address (object); -+ if (!DECL_P (preeval_data.lhs_base_decl)) -+ preeval_data.lhs_base_decl = NULL; -+ preeval_data.lhs_alias_set = get_alias_set (object); -+ -+ gimplify_init_ctor_preeval (&TREE_OPERAND (*expr_p, 1), -+ pre_p, post_p, &preeval_data); -+ } -+ - if (cleared) - { - /* Zap the CONSTRUCTOR element list, which simplifies this case. -@@ -3076,16 +3090,7 @@ gimplify_init_constructor (tree *expr_p, - elements in the constructor, add assignments to the individual - scalar fields of the object. */ - if (!cleared || num_nonzero_elements > 0) -- { -- preeval_data.lhs_base_decl = get_base_address (object); -- if (!DECL_P (preeval_data.lhs_base_decl)) -- preeval_data.lhs_base_decl = NULL; -- preeval_data.lhs_alias_set = get_alias_set (object); -- -- gimplify_init_ctor_preeval (&TREE_OPERAND (*expr_p, 1), -- pre_p, post_p, &preeval_data); -- gimplify_init_ctor_eval (object, elts, pre_p, cleared); -- } -+ gimplify_init_ctor_eval (object, elts, pre_p, cleared); - - *expr_p = NULL_TREE; - } ---- gcc/testsuite/gcc.c-torture/execute/20071202-1.c.jj 2007-12-02 19:26:19.000000000 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/20071202-1.c 2007-12-02 19:24:28.000000000 +0100 -@@ -0,0 +1,25 @@ -+extern void abort (void); -+struct T { int t; int r[8]; }; -+struct S { int a; int b; int c[6]; struct T d; }; -+ -+__attribute__((noinline)) void -+foo (struct S *s) -+{ -+ *s = (struct S) { s->b, s->a, { 0, 0, 0, 0, 0, 0 }, s->d }; -+} -+ -+int -+main (void) -+{ -+ struct S s = { 6, 12, { 1, 2, 3, 4, 5, 6 }, -+ { 7, { 8, 9, 10, 11, 12, 13, 14, 15 } } }; -+ foo (&s); -+ if (s.a != 12 || s.b != 6 -+ || s.c[0] || s.c[1] || s.c[2] || s.c[3] || s.c[4] || s.c[5]) -+ abort (); -+ if (s.d.t != 7 || s.d.r[0] != 8 || s.d.r[1] != 9 || s.d.r[2] != 10 -+ || s.d.r[3] != 11 || s.d.r[4] != 12 || s.d.r[5] != 13 -+ || s.d.r[6] != 14 || s.d.r[7] != 15) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gnat.dg/self_aggregate_with_zeros.adb (revision 0) -+++ gcc/testsuite/gnat.dg/self_aggregate_with_zeros.adb (revision 116300) -@@ -0,0 +1,19 @@ -+-- { dg-do run } -+ -+procedure self_aggregate_with_zeros is -+ -+ type Sensor is record -+ Value : Natural; -+ A, B, C, D, E, F, G, H, I, J, K, L, M : Natural; -+ end record; -+ -+ Pressure : Sensor; -+ -+begin -+ Pressure.Value := 256; -+ Pressure := (Pressure.Value, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); -+ -+ if Pressure.Value /= 256 then -+ raise Program_Error; -+ end if; -+end; ---- gcc/testsuite/gnat.dg/self_aggregate_with_array.adb (revision 0) -+++ gcc/testsuite/gnat.dg/self_aggregate_with_array.adb (revision 116300) -@@ -0,0 +1,21 @@ -+-- { dg-do run } -+ -+procedure self_aggregate_with_array is -+ -+ type Value_Bounds is array (1 .. 2) of Natural; -+ -+ type Sensor is record -+ Value : Natural; -+ Bounds : Value_Bounds; -+ end record; -+ -+ Pressure : Sensor; -+ -+begin -+ Pressure.Value := 256; -+ Pressure := (Value => Pressure.Value, Bounds => (1, 2)); -+ -+ if Pressure.Value /= 256 then -+ raise Program_Error; -+ end if; -+end; ---- gcc/testsuite/gnat.dg/self_aggregate_with_call.adb (revision 0) -+++ gcc/testsuite/gnat.dg/self_aggregate_with_call.adb (revision 122134) -@@ -0,0 +1,30 @@ -+-- { dg-do run } -+-- { dg-options "-O2" } -+ -+procedure self_aggregate_with_call is -+ -+ type Values is array (1 .. 8) of Natural; -+ -+ type Vector is record -+ Components : Values; -+ end record; -+ -+ function Clone (Components: Values) return Values is -+ begin -+ return Components; -+ end; -+ -+ procedure Process (V : in out Vector) is -+ begin -+ V.Components (Values'First) := 1; -+ V := (Components => Clone (V.Components)); -+ -+ if V.Components (Values'First) /= 1 then -+ raise Program_Error; -+ end if; -+ end; -+ -+ V : Vector; -+begin -+ Process (V); -+end; diff --git a/gcc41-virtual-inline-backtrace.patch b/gcc41-virtual-inline-backtrace.patch deleted file mode 100644 index 2215f7c..0000000 --- a/gcc41-virtual-inline-backtrace.patch +++ /dev/null @@ -1,758 +0,0 @@ -2007-09-27 Jakub Jelinek - - * builtins.c (expand_builtin, expand_builtin_object_size, - expand_builtin_memory_chk, maybe_emit_chk_warning, - maybe_emit_sprintf_chk_warning): Use new %K format string specifier - for diagnostics. - * expr.c (expand_expr_real_1): Likewise. - * langhooks-def.h (struct diagnostic_info): Add forward decl. - (lhd_print_error_function): Add third argument. - * langhooks.h (struct diagnostic_info): Add forward decl. - (struct lang_hooks): Add third argument to print_error_function. - * diagnostic.h (diagnostic_info): Add abstract_origin field. - (diagnostic_last_function_changed, diagnostic_set_last_function): Add - second argument. - (diagnostic_report_current_function): Likewise. - * toplev.c (announce_function): Pass NULL as second argument to - diagnostic_set_last_function. - * diagnostic.c (diagnostic_report_current_function): Add second - argument, pass it as third argument to lang_hooks.print_error_function. - (default_diagnostic_starter): Pass DIAGNOSTIC as second argument - to diagnostic_report_current_function. - (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin - and message.abstract_origin. - (verbatim): Initialize abstract_origin. - * pretty-print.h (text_info): Add abstract_origin field. - * pretty-print.c (pp_base_format): Handle %K. - * langhooks.c (lhd_print_error_function): Add third argument. If - diagnostic->abstract_origin, print virtual backtrace. - * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table, - gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K. - (init_dynamic_diag_info): Likewise. -cp/ - * error.c (cxx_print_error_function): Add third argument, pass - it over to lhd_print_error_function. - (cp_print_error_function): If diagnostic->abstract_origin, print - virtual backtrace. - * cp-tree.h (struct diagnostic_info): New forward decl. - (cxx_print_error_function): Add third argument. -testsuite/ - * lib/prune.exp: Prune also "^In function .*$" lines and - "^ inlined from .*$" lines. -java/ - * lang.c (java_print_error_function): Add third argument. - ---- gcc/java/lang.c.jj 2007-02-20 22:35:09.000000000 +0100 -+++ gcc/java/lang.c 2007-09-28 22:47:38.000000000 +0200 -@@ -55,7 +55,8 @@ static bool java_post_options (const cha - static int java_handle_option (size_t scode, const char *arg, int value); - static void put_decl_string (const char *, int); - static void put_decl_node (tree); --static void java_print_error_function (diagnostic_context *, const char *); -+static void java_print_error_function (diagnostic_context *, const char *, -+ diagnostic_info *); - static tree java_tree_inlining_walk_subtrees (tree *, int *, walk_tree_fn, - void *, struct pointer_set_t *); - static int merge_init_test_initialization (void * *, void *); -@@ -511,7 +512,8 @@ static GTY(()) tree last_error_function_ - static GTY(()) tree last_error_function; - static void - java_print_error_function (diagnostic_context *context ATTRIBUTE_UNUSED, -- const char *file) -+ const char *file, -+ diagnostic_info *diagnostic ATTRIBUTE_UNUSED) - { - /* Don't print error messages with bogus function prototypes. */ - if (inhibit_error_function_printing) ---- gcc/diagnostic.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/diagnostic.c 2007-09-28 22:45:19.000000000 +0200 -@@ -272,10 +272,11 @@ diagnostic_action_after_output (diagnost - /* Prints out, if necessary, the name of the current function - that caused an error. Called from all error and warning functions. */ - void --diagnostic_report_current_function (diagnostic_context *context) -+diagnostic_report_current_function (diagnostic_context *context, -+ diagnostic_info *diagnostic) - { - diagnostic_report_current_module (context); -- lang_hooks.print_error_function (context, input_filename); -+ lang_hooks.print_error_function (context, input_filename, diagnostic); - } - - void -@@ -313,7 +314,7 @@ static void - default_diagnostic_starter (diagnostic_context *context, - diagnostic_info *diagnostic) - { -- diagnostic_report_current_function (context); -+ diagnostic_report_current_function (context, diagnostic); - pp_set_prefix (context->printer, diagnostic_build_prefix (diagnostic)); - } - -@@ -361,6 +362,8 @@ diagnostic_report_diagnostic (diagnostic - " [", cl_options[diagnostic->option_index].opt_text, "]", NULL)); - - diagnostic->message.locus = &diagnostic->location; -+ diagnostic->message.abstract_origin = &diagnostic->abstract_origin; -+ diagnostic->abstract_origin = NULL; - pp_format (context->printer, &diagnostic->message); - (*diagnostic_starter (context)) (context, diagnostic); - pp_output_formatted_text (context->printer); -@@ -368,6 +371,7 @@ diagnostic_report_diagnostic (diagnostic - pp_flush (context->printer); - diagnostic_action_after_output (context, diagnostic); - diagnostic->message.format_spec = saved_format_spec; -+ diagnostic->abstract_origin = NULL; - } - - context->lock--; -@@ -419,6 +423,7 @@ verbatim (const char *gmsgid, ...) - text.args_ptr = ≈ - text.format_spec = _(gmsgid); - text.locus = NULL; -+ text.abstract_origin = NULL; - pp_format_verbatim (global_dc->printer, &text); - pp_flush (global_dc->printer); - va_end (ap); ---- gcc/builtins.c.jj 2007-09-25 12:26:50.000000000 +0200 -+++ gcc/builtins.c 2007-09-28 22:47:00.000000000 +0200 -@@ -5982,13 +5982,13 @@ expand_builtin (tree exp, rtx target, rt - case BUILT_IN_VA_ARG_PACK: - /* All valid uses of __builtin_va_arg_pack () are removed during - inlining. */ -- error ("invalid use of %<__builtin_va_arg_pack ()%>"); -+ error ("%Kinvalid use of %<__builtin_va_arg_pack ()%>", exp); - return const0_rtx; - - case BUILT_IN_VA_ARG_PACK_LEN: - /* All valid uses of __builtin_va_arg_pack_len () are removed during - inlining. */ -- error ("invalid use of %<__builtin_va_arg_pack_len ()%>"); -+ error ("%Kinvalid use of %<__builtin_va_arg_pack_len ()%>", exp); - return const0_rtx; - - /* Return the address of the first anonymous stack arg. */ -@@ -10286,12 +10286,11 @@ expand_builtin_object_size (tree exp) - int object_size_type; - tree fndecl = get_callee_fndecl (exp); - tree arglist = TREE_OPERAND (exp, 1); -- location_t locus = EXPR_LOCATION (exp); - - if (!validate_arglist (arglist, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE)) - { -- error ("%Hfirst argument of %D must be a pointer, second integer constant", -- &locus, fndecl); -+ error ("%Kfirst argument of %D must be a pointer, second integer constant", -+ exp, fndecl); - expand_builtin_trap (); - return const0_rtx; - } -@@ -10303,8 +10302,8 @@ expand_builtin_object_size (tree exp) - || tree_int_cst_sgn (ost) < 0 - || compare_tree_int (ost, 3) > 0) - { -- error ("%Hlast argument of %D is not integer constant between 0 and 3", -- &locus, fndecl); -+ error ("%Klast argument of %D is not integer constant between 0 and 3", -+ exp, fndecl); - expand_builtin_trap (); - return const0_rtx; - } -@@ -10348,9 +10347,8 @@ expand_builtin_memory_chk (tree exp, rtx - - if (! integer_all_onesp (size) && tree_int_cst_lt (size, len)) - { -- location_t locus = EXPR_LOCATION (exp); -- warning (0, "%Hcall to %D will always overflow destination buffer", -- &locus, get_callee_fndecl (exp)); -+ warning (0, "%Kcall to %D will always overflow destination buffer", -+ exp, get_callee_fndecl (exp)); - return 0; - } - -@@ -10463,7 +10461,6 @@ maybe_emit_chk_warning (tree exp, enum b - int arg_mask, is_strlen = 0; - tree arglist = TREE_OPERAND (exp, 1), a; - tree len, size; -- location_t locus; - - switch (fcode) - { -@@ -10525,9 +10522,8 @@ maybe_emit_chk_warning (tree exp, enum b - src = c_strlen (src, 1); - if (! src || ! host_integerp (src, 1)) - { -- locus = EXPR_LOCATION (exp); -- warning (0, "%Hcall to %D might overflow destination buffer", -- &locus, get_callee_fndecl (exp)); -+ warning (0, "%Kcall to %D might overflow destination buffer", -+ exp, get_callee_fndecl (exp)); - return; - } - else if (tree_int_cst_lt (src, size)) -@@ -10536,9 +10532,8 @@ maybe_emit_chk_warning (tree exp, enum b - else if (! host_integerp (len, 1) || ! tree_int_cst_lt (size, len)) - return; - -- locus = EXPR_LOCATION (exp); -- warning (0, "%Hcall to %D will always overflow destination buffer", -- &locus, get_callee_fndecl (exp)); -+ warning (0, "%Kcall to %D will always overflow destination buffer", -+ exp, get_callee_fndecl (exp)); - } - - /* Emit warning if a buffer overflow is detected at compile time -@@ -10604,9 +10599,8 @@ maybe_emit_sprintf_chk_warning (tree exp - - if (! tree_int_cst_lt (len, size)) - { -- location_t locus = EXPR_LOCATION (exp); -- warning (0, "%Hcall to %D will always overflow destination buffer", -- &locus, get_callee_fndecl (exp)); -+ warning (0, "%Kcall to %D will always overflow destination buffer", -+ exp, get_callee_fndecl (exp)); - } - } - ---- gcc/diagnostic.h.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/diagnostic.h 2007-09-28 22:45:58.000000000 +0200 -@@ -37,10 +37,13 @@ typedef enum - /* A diagnostic is described by the MESSAGE to send, the FILE and LINE of - its context and its KIND (ice, error, warning, note, ...) See complete - list in diagnostic.def. */ --typedef struct -+typedef struct diagnostic_info - { - text_info message; - location_t location; -+ /* TREE_BLOCK if the diagnostic is to be reported in some inline -+ function inlined into other function, otherwise NULL. */ -+ tree abstract_origin; - /* The kind of diagnostic it is about. */ - diagnostic_t kind; - /* Which OPT_* directly controls this diagnostic. */ -@@ -130,13 +133,15 @@ struct diagnostic_context - - /* True if the last function in which a diagnostic was reported is - different from the current one. */ --#define diagnostic_last_function_changed(DC) \ -- ((DC)->last_function != current_function_decl) -+#define diagnostic_last_function_changed(DC, DI) \ -+ ((DC)->last_function != ((DI)->abstract_origin \ -+ ? (DI)->abstract_origin : current_function_decl)) - - /* Remember the current function as being the last one in which we report - a diagnostic. */ --#define diagnostic_set_last_function(DC) \ -- (DC)->last_function = current_function_decl -+#define diagnostic_set_last_function(DC, DI) \ -+ (DC)->last_function = (((DI) && (DI)->abstract_origin) \ -+ ? (DI)->abstract_origin : current_function_decl) - - /* True if the last module or file in which a diagnostic was reported is - different from the current one. */ -@@ -178,7 +183,8 @@ extern diagnostic_context *global_dc; - /* Diagnostic related functions. */ - extern void diagnostic_initialize (diagnostic_context *); - extern void diagnostic_report_current_module (diagnostic_context *); --extern void diagnostic_report_current_function (diagnostic_context *); -+extern void diagnostic_report_current_function (diagnostic_context *, -+ diagnostic_info *); - extern void diagnostic_report_diagnostic (diagnostic_context *, - diagnostic_info *); - #ifdef ATTRIBUTE_GCC_DIAG ---- gcc/toplev.c.jj 2007-04-03 13:18:27.000000000 +0200 -+++ gcc/toplev.c 2007-09-28 22:45:19.000000000 +0200 -@@ -448,7 +448,7 @@ announce_function (tree decl) - fprintf (stderr, " %s", lang_hooks.decl_printable_name (decl, 2)); - fflush (stderr); - pp_needs_newline (global_dc->printer) = true; -- diagnostic_set_last_function (global_dc); -+ diagnostic_set_last_function (global_dc, (diagnostic_info *) NULL); - } - } - ---- gcc/pretty-print.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/pretty-print.c 2007-09-28 22:45:19.000000000 +0200 -@@ -188,6 +188,7 @@ pp_base_indent (pretty_printer *pp) - %Ns: likewise, but length specified as constant in the format string. - %H: location_t. - %J: a decl tree, from which DECL_SOURCE_LOCATION will be recorded. -+ %K: a statement, from which EXPR_LOCATION and TREE_BLOCK will be recorded. - Flag 'q': quote formatted text (must come immediately after '%'). - - Arguments can be used sequentially, or through %N$ resp. *N$ -@@ -487,6 +488,33 @@ pp_base_format (pretty_printer *pp, text - } - break; - -+ case 'K': -+ { -+ tree t = va_arg (*text->args_ptr, tree), block; -+ gcc_assert (text->locus != NULL); -+ *text->locus = EXPR_LOCATION (t); -+ gcc_assert (text->abstract_origin != NULL); -+ block = TREE_BLOCK (t); -+ *text->abstract_origin = NULL; -+ while (block -+ && TREE_CODE (block) == BLOCK -+ && BLOCK_ABSTRACT_ORIGIN (block)) -+ { -+ tree ao = BLOCK_ABSTRACT_ORIGIN (block); -+ -+ while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) -+ ao = BLOCK_ABSTRACT_ORIGIN (ao); -+ -+ if (TREE_CODE (ao) == FUNCTION_DECL) -+ { -+ *text->abstract_origin = block; -+ break; -+ } -+ block = BLOCK_SUPERCONTEXT (block); -+ } -+ } -+ break; -+ - case '.': - { - int n; ---- gcc/pretty-print.h.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/pretty-print.h 2007-09-28 22:45:19.000000000 +0200 -@@ -36,6 +36,7 @@ typedef struct - va_list *args_ptr; - int err_no; /* for %m */ - location_t *locus; -+ tree *abstract_origin; - } text_info; - - /* How often diagnostics are prefixed by their locations: ---- gcc/testsuite/lib/prune.exp.jj 2007-02-20 22:37:09.000000000 +0100 -+++ gcc/testsuite/lib/prune.exp 2007-09-28 22:45:19.000000000 +0200 -@@ -19,9 +19,10 @@ - proc prune_gcc_output { text } { - #send_user "Before:$text\n" - -- regsub -all "(^|\n)\[^\n\]*: In ((static member )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data) \[^\n\]*" $text "" text -+ regsub -all "(^|\n)(\[^\n\]*: )?In ((static member )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data) \[^\n\]*" $text "" text - regsub -all "(^|\n)\[^\n\]*: At (top level|global scope):\[^\n\]*" $text "" text - regsub -all "(^|\n)\[^\n\]*: instantiated from \[^\n\]*" $text "" text -+ regsub -all "(^|\n) inlined from \[^\n\]*" $text "" text - regsub -all "(^|\n)collect2: ld returned \[^\n\]*" $text "" text - regsub -all "(^|\n)collect: re(compiling|linking)\[^\n\]*" $text "" text - regsub -all "(^|\n)Please submit.*instructions\[^\n\]*" $text "" text ---- gcc/cp/error.c.jj 2007-09-25 11:15:31.000000000 +0200 -+++ gcc/cp/error.c 2007-09-28 22:45:19.000000000 +0200 -@@ -2150,9 +2150,10 @@ cv_to_string (tree p, int v) - - /* Langhook for print_error_function. */ - void --cxx_print_error_function (diagnostic_context *context, const char *file) -+cxx_print_error_function (diagnostic_context *context, const char *file, -+ diagnostic_info *diagnostic) - { -- lhd_print_error_function (context, file); -+ lhd_print_error_function (context, file, diagnostic); - pp_base_set_prefix (context->printer, file); - maybe_print_instantiation_context (context); - } -@@ -2180,23 +2181,105 @@ static void - cp_print_error_function (diagnostic_context *context, - diagnostic_info *diagnostic) - { -- if (diagnostic_last_function_changed (context)) -+ if (diagnostic_last_function_changed (context, diagnostic)) - { - const char *old_prefix = context->printer->prefix; - const char *file = LOCATION_FILE (diagnostic->location); -- char *new_prefix = file ? file_name_as_prefix (file) : NULL; -+ tree abstract_origin = diagnostic->abstract_origin; -+ char *new_prefix = (file && abstract_origin == NULL) -+ ? file_name_as_prefix (file) : NULL; - - pp_base_set_prefix (context->printer, new_prefix); - - if (current_function_decl == NULL) - pp_base_string (context->printer, "At global scope:"); - else -- pp_printf (context->printer, "In %s %qs:", -- function_category (current_function_decl), -- cxx_printable_name (current_function_decl, 2)); -+ { -+ tree fndecl, ao; -+ -+ if (abstract_origin) -+ { -+ ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin); -+ while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) -+ ao = BLOCK_ABSTRACT_ORIGIN (ao); -+ gcc_assert (TREE_CODE (ao) == FUNCTION_DECL); -+ fndecl = ao; -+ } -+ else -+ fndecl = current_function_decl; -+ -+ pp_printf (context->printer, "In %s %qs", -+ function_category (fndecl), -+ cxx_printable_name (fndecl, 2)); -+ -+ while (abstract_origin) -+ { -+ location_t *locus; -+ tree block = abstract_origin; -+ -+ locus = &BLOCK_SOURCE_LOCATION (block); -+ fndecl = NULL; -+ block = BLOCK_SUPERCONTEXT (block); -+ while (block && TREE_CODE (block) == BLOCK -+ && BLOCK_ABSTRACT_ORIGIN (block)) -+ { -+ ao = BLOCK_ABSTRACT_ORIGIN (block); -+ -+ while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) -+ ao = BLOCK_ABSTRACT_ORIGIN (ao); -+ -+ if (TREE_CODE (ao) == FUNCTION_DECL) -+ { -+ fndecl = ao; -+ break; -+ } -+ else if (TREE_CODE (ao) != BLOCK) -+ break; -+ -+ block = BLOCK_SUPERCONTEXT (block); -+ } -+ if (fndecl) -+ abstract_origin = block; -+ else -+ { -+ while (block && TREE_CODE (block) == BLOCK) -+ block = BLOCK_SUPERCONTEXT (block); -+ -+ if (TREE_CODE (block) == FUNCTION_DECL) -+ fndecl = block; -+ abstract_origin = NULL; -+ } -+ if (fndecl) -+ { -+ expanded_location s = expand_location (*locus); -+ pp_base_character (context->printer, ','); -+ pp_base_newline (context->printer); -+ if (s.file != NULL) -+ { -+#ifdef USE_MAPPED_LOCATION -+ if (flag_show_column && s.column != 0) -+ pp_printf (context->printer, -+ " inlined from %qs at %s:%d:%d", -+ cxx_printable_name (fndecl, 2), -+ s.file, s.line, s.column); -+ else -+#endif -+ pp_printf (context->printer, -+ " inlined from %qs at %s:%d", -+ cxx_printable_name (fndecl, 2), -+ s.file, s.line); -+ -+ } -+ else -+ pp_printf (context->printer, " inlined from %qs", -+ cxx_printable_name (fndecl, 2)); -+ } -+ } -+ pp_base_character (context->printer, ':'); -+ } - pp_base_newline (context->printer); - -- diagnostic_set_last_function (context); -+ diagnostic_set_last_function (context, diagnostic); - pp_base_destroy_prefix (context->printer); - context->printer->prefix = old_prefix; - } ---- gcc/cp/cp-tree.h.jj 2007-09-25 11:45:25.000000000 +0200 -+++ gcc/cp/cp-tree.h 2007-09-28 22:45:19.000000000 +0200 -@@ -32,6 +32,7 @@ Boston, MA 02110-1301, USA. */ - #include "c-common.h" - #include "name-lookup.h" - struct diagnostic_context; -+struct diagnostic_info; - - /* Usage of TREE_LANG_FLAG_?: - 0: IDENTIFIER_MARKED (IDENTIFIER_NODEs) -@@ -3832,7 +3833,8 @@ extern void cxx_print_decl (FILE *, tr - extern void cxx_print_type (FILE *, tree, int); - extern void cxx_print_identifier (FILE *, tree, int); - extern void cxx_print_error_function (struct diagnostic_context *, -- const char *); -+ const char *, -+ struct diagnostic_info *); - extern void build_self_reference (void); - extern int same_signature_p (tree, tree); - extern void warn_hidden (tree); ---- gcc/c-format.c.jj 2007-09-25 12:27:55.000000000 +0200 -+++ gcc/c-format.c 2007-09-28 22:50:35.000000000 +0200 -@@ -547,7 +547,7 @@ static const format_char_info gcc_diag_c - { "H", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, - - /* These will require a "tree" at runtime. */ -- { "J", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, -+ { "JK", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, - - { "<>'", 0, STD_C89, NOARGUMENTS, "", "", NULL }, - { "m", 0, STD_C89, NOARGUMENTS, "q", "", NULL }, -@@ -570,7 +570,7 @@ static const format_char_info gcc_tdiag_ - { "H", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, - - /* These will require a "tree" at runtime. */ -- { "DFJT", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q+", "", NULL }, -+ { "DFJKT", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q+", "", NULL }, - - { "<>'", 0, STD_C89, NOARGUMENTS, "", "", NULL }, - { "m", 0, STD_C89, NOARGUMENTS, "q", "", NULL }, -@@ -593,7 +593,7 @@ static const format_char_info gcc_cdiag_ - { "H", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, - - /* These will require a "tree" at runtime. */ -- { "DEFJT", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q+", "", NULL }, -+ { "DEFJKT", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q+", "", NULL }, - - { "<>'", 0, STD_C89, NOARGUMENTS, "", "", NULL }, - { "m", 0, STD_C89, NOARGUMENTS, "q", "", NULL }, -@@ -616,7 +616,7 @@ static const format_char_info gcc_cxxdia - { "H", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, - - /* These will require a "tree" at runtime. */ -- { "ADEFJTV",0,STD_C89,{ T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q+#", "", NULL }, -+ { "ADEFJKTV",0,STD_C89,{ T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q+#", "", NULL }, - - /* These accept either an 'int' or an 'enum tree_code' (which is handled as an 'int'.) */ - { "CLOPQ",0,STD_C89, { T89_I, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "q", "", NULL }, -@@ -2601,6 +2601,9 @@ init_dynamic_diag_info (void) - i = find_char_info_specifier_index (diag_fci, 'J'); - diag_fci[i].types[0].type = &t; - diag_fci[i].pointer_count = 1; -+ i = find_char_info_specifier_index (diag_fci, 'K'); -+ diag_fci[i].types[0].type = &t; -+ diag_fci[i].pointer_count = 1; - } - - /* Handle the __gcc_tdiag__ format specifics. */ -@@ -2625,6 +2628,9 @@ init_dynamic_diag_info (void) - i = find_char_info_specifier_index (tdiag_fci, 'J'); - tdiag_fci[i].types[0].type = &t; - tdiag_fci[i].pointer_count = 1; -+ i = find_char_info_specifier_index (tdiag_fci, 'K'); -+ tdiag_fci[i].types[0].type = &t; -+ tdiag_fci[i].pointer_count = 1; - } - - /* Handle the __gcc_cdiag__ format specifics. */ -@@ -2649,6 +2655,9 @@ init_dynamic_diag_info (void) - i = find_char_info_specifier_index (cdiag_fci, 'J'); - cdiag_fci[i].types[0].type = &t; - cdiag_fci[i].pointer_count = 1; -+ i = find_char_info_specifier_index (cdiag_fci, 'K'); -+ cdiag_fci[i].types[0].type = &t; -+ cdiag_fci[i].pointer_count = 1; - } - - /* Handle the __gcc_cxxdiag__ format specifics. */ -@@ -2673,6 +2682,9 @@ init_dynamic_diag_info (void) - i = find_char_info_specifier_index (cxxdiag_fci, 'J'); - cxxdiag_fci[i].types[0].type = &t; - cxxdiag_fci[i].pointer_count = 1; -+ i = find_char_info_specifier_index (cxxdiag_fci, 'K'); -+ cxxdiag_fci[i].types[0].type = &t; -+ cxxdiag_fci[i].pointer_count = 1; - } - } - } ---- gcc/expr.c.jj 2007-09-25 15:19:15.000000000 +0200 -+++ gcc/expr.c 2007-09-28 22:45:19.000000000 +0200 -@@ -7512,21 +7512,21 @@ expand_expr_real_1 (tree exp, rtx target - /* All valid uses of __builtin_va_arg_pack () are removed during - inlining. */ - if (CALL_EXPR_VA_ARG_PACK (exp)) -- error ("invalid use of %<__builtin_va_arg_pack ()%>"); -+ error ("%Kinvalid use of %<__builtin_va_arg_pack ()%>", exp); - { - tree fndecl = get_callee_fndecl (exp), attr; - - if (fndecl - && (attr = lookup_attribute ("error", - DECL_ATTRIBUTES (fndecl))) != NULL) -- error ("call to %qs declared with attribute error: %s", -- lang_hooks.decl_printable_name (fndecl, 1), -+ error ("%Kcall to %qs declared with attribute error: %s", -+ exp, lang_hooks.decl_printable_name (fndecl, 1), - TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); - if (fndecl - && (attr = lookup_attribute ("warning", - DECL_ATTRIBUTES (fndecl))) != NULL) -- warning (0, "call to %qs declared with attribute warning: %s", -- lang_hooks.decl_printable_name (fndecl, 1), -+ warning (0, "%Kcall to %qs declared with attribute warning: %s", -+ exp, lang_hooks.decl_printable_name (fndecl, 1), - TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)))); - - /* Check for a built-in function. */ ---- gcc/langhooks.c.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/langhooks.c 2007-09-28 22:45:19.000000000 +0200 -@@ -494,12 +494,15 @@ lhd_initialize_diagnostics (struct diagn - /* The default function to print out name of current function that caused - an error. */ - void --lhd_print_error_function (diagnostic_context *context, const char *file) -+lhd_print_error_function (diagnostic_context *context, const char *file, -+ diagnostic_info *diagnostic) - { -- if (diagnostic_last_function_changed (context)) -+ if (diagnostic_last_function_changed (context, diagnostic)) - { - const char *old_prefix = context->printer->prefix; -- char *new_prefix = file ? file_name_as_prefix (file) : NULL; -+ tree abstract_origin = diagnostic->abstract_origin; -+ char *new_prefix = (file && abstract_origin == NULL) -+ ? file_name_as_prefix (file) : NULL; - - pp_set_prefix (context->printer, new_prefix); - -@@ -507,17 +510,95 @@ lhd_print_error_function (diagnostic_con - pp_printf (context->printer, _("At top level:")); - else - { -- if (TREE_CODE (TREE_TYPE (current_function_decl)) == METHOD_TYPE) -+ tree fndecl, ao; -+ -+ if (abstract_origin) -+ { -+ ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin); -+ while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) -+ ao = BLOCK_ABSTRACT_ORIGIN (ao); -+ gcc_assert (TREE_CODE (ao) == FUNCTION_DECL); -+ fndecl = ao; -+ } -+ else -+ fndecl = current_function_decl; -+ -+ if (TREE_CODE (TREE_TYPE (fndecl)) == METHOD_TYPE) - pp_printf -- (context->printer, _("In member function %qs:"), -- lang_hooks.decl_printable_name (current_function_decl, 2)); -+ (context->printer, _("In member function %qs"), -+ lang_hooks.decl_printable_name (fndecl, 2)); - else - pp_printf -- (context->printer, _("In function %qs:"), -- lang_hooks.decl_printable_name (current_function_decl, 2)); -+ (context->printer, _("In function %qs"), -+ lang_hooks.decl_printable_name (fndecl, 2)); -+ -+ while (abstract_origin) -+ { -+ location_t *locus; -+ tree block = abstract_origin; -+ -+ locus = &BLOCK_SOURCE_LOCATION (block); -+ fndecl = NULL; -+ block = BLOCK_SUPERCONTEXT (block); -+ while (block && TREE_CODE (block) == BLOCK -+ && BLOCK_ABSTRACT_ORIGIN (block)) -+ { -+ ao = BLOCK_ABSTRACT_ORIGIN (block); -+ -+ while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) -+ ao = BLOCK_ABSTRACT_ORIGIN (ao); -+ -+ if (TREE_CODE (ao) == FUNCTION_DECL) -+ { -+ fndecl = ao; -+ break; -+ } -+ else if (TREE_CODE (ao) != BLOCK) -+ break; -+ -+ block = BLOCK_SUPERCONTEXT (block); -+ } -+ if (fndecl) -+ abstract_origin = block; -+ else -+ { -+ while (block && TREE_CODE (block) == BLOCK) -+ block = BLOCK_SUPERCONTEXT (block); -+ -+ if (TREE_CODE (block) == FUNCTION_DECL) -+ fndecl = block; -+ abstract_origin = NULL; -+ } -+ if (fndecl) -+ { -+ expanded_location s = expand_location (*locus); -+ pp_character (context->printer, ','); -+ pp_newline (context->printer); -+ if (s.file != NULL) -+ { -+#ifdef USE_MAPPED_LOCATION -+ if (flag_show_column && s.column != 0) -+ pp_printf (context->printer, -+ _(" inlined from %qs at %s:%d:%d"), -+ lang_hooks.decl_printable_name (fndecl, 2), -+ s.file, s.line, s.column); -+ else -+#endif -+ pp_printf (context->printer, -+ _(" inlined from %qs at %s:%d"), -+ lang_hooks.decl_printable_name (fndecl, 2), -+ s.file, s.line); -+ -+ } -+ else -+ pp_printf (context->printer, _(" inlined from %qs"), -+ lang_hooks.decl_printable_name (fndecl, 2)); -+ } -+ } -+ pp_character (context->printer, ':'); - } - -- diagnostic_set_last_function (context); -+ diagnostic_set_last_function (context, diagnostic); - pp_flush (context->printer); - context->printer->prefix = old_prefix; - free ((char*) new_prefix); ---- gcc/langhooks.h.jj 2007-02-20 22:39:12.000000000 +0100 -+++ gcc/langhooks.h 2007-09-28 22:45:19.000000000 +0200 -@@ -24,6 +24,7 @@ Boston, MA 02110-1301, USA. */ - /* This file should be #include-d after tree.h. */ - - struct diagnostic_context; -+struct diagnostic_info; - - struct gimplify_omp_ctx; - -@@ -391,7 +392,8 @@ struct lang_hooks - tree (*lang_get_callee_fndecl) (tree); - - /* Called by report_error_function to print out function name. */ -- void (*print_error_function) (struct diagnostic_context *, const char *); -+ void (*print_error_function) (struct diagnostic_context *, const char *, -+ struct diagnostic_info *); - - /* Called from expr_size to calculate the size of the value of an - expression in a language-dependent way. Returns a tree for the size ---- gcc/langhooks-def.h.jj 2007-02-20 22:39:13.000000000 +0100 -+++ gcc/langhooks-def.h 2007-09-28 22:45:19.000000000 +0200 -@@ -25,6 +25,7 @@ Boston, MA 02110-1301, USA. */ - #include "hooks.h" - - struct diagnostic_context; -+struct diagnostic_info; - - /* Provide a hook routine for alias sets that always returns 1. This is - used by languages that haven't deal with alias sets yet. */ -@@ -57,7 +58,7 @@ extern int lhd_types_compatible_p (tree, - extern rtx lhd_expand_expr (tree, rtx, enum machine_mode, int, rtx *); - extern int lhd_expand_decl (tree); - extern void lhd_print_error_function (struct diagnostic_context *, -- const char *); -+ const char *, struct diagnostic_info *); - extern void lhd_set_decl_assembler_name (tree); - extern bool lhd_can_use_bit_fields_p (void); - extern bool lhd_warn_unused_global_decl (tree); diff --git a/gcc41.spec b/gcc41.spec deleted file mode 100644 index ba32978..0000000 --- a/gcc41.spec +++ /dev/null @@ -1,3078 +0,0 @@ -%define DATE 20071124 -%define gcc_version 4.1.2 -%define gcc_release 36 -%define _unpackaged_files_terminate_build 0 -%define multilib_64_archs sparc64 ppc64 s390x x86_64 -%define include_gappletviewer 1 -%ifarch %{ix86} x86_64 ia64 ppc alpha -%define build_ada 1 -%else -%define build_ada 0 -%endif -%define build_java 1 -# If you don't have already a usable gcc-java and libgcj for your arch, -# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec -# which creates libjava-classes-%{version}-%{release}.tar.bz2 -# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec -%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0} -%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0} -%ifarch s390x -%define multilib_32_arch s390 -%endif -%ifarch sparc64 -%define multilib_32_arch sparc -%endif -%ifarch ppc64 -%define multilib_32_arch ppc -%endif -%ifarch x86_64 -%define multilib_32_arch i386 -%endif -Summary: Various compilers (C, C++, Objective-C, Java, ...) -Name: gcc -Version: %{gcc_version} -Release: %{gcc_release} -# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows -# linking it into any kind of programs or shared libraries without -# restrictions. -License: GPLv2+ and GPLv2+ with exceptions -Group: Development/Languages -Source0: gcc-%{version}-%{DATE}.tar.bz2 -Source1: libgcc_post_upgrade.c -Source2: README.libgcjwebplugin.so -Source3: protoize.1 -URL: http://gcc.gnu.org -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -# Need binutils with -pie support >= 2.14.90.0.4-4 -# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4 -# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2 -# Need binutils which support .weakref >= 2.16.91.0.3-1 -# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7 -# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8 -# Need binutils which support --build-id >= 2.17.50.0.17-3 -BuildRequires: binutils >= 2.17.50.0.17-3 -BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils -%if %{build_java} -BuildRequires: /usr/share/java/eclipse-ecj.jar, zip, unzip -%if %{bootstrap_java} -Source10: libjava-classes-%{version}-%{release}.tar.bz2 -%else -BuildRequires: gcc-java, libgcj -%endif -%endif -# Make sure pthread.h doesn't contain __thread tokens -# Make sure glibc supports stack protector -# Make sure glibc supports DT_GNU_HASH -BuildRequires: glibc-devel >= 2.4.90-13 -BuildRequires: elfutils-devel >= 0.72 -%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha -# Make sure glibc supports TFmode long double -BuildRequires: glibc >= 2.3.90-35 -%endif -%ifarch %{multilib_64_archs} sparc ppc -# Ensure glibc{,-devel} is installed for both multilib arches -BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so -%endif -%if %{build_ada} -# Ada requires Ada to build -BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 -%endif -%ifarch ia64 -BuildRequires: libunwind >= 0.98 -%endif -Requires: cpp = %{version}-%{release} -# Need .eh_frame ld optimizations -# Need proper visibility support -# Need -pie support -# Need --as-needed/--no-as-needed support -# On ppc64, need omit dot symbols support and --non-overlapping-opd -# Need binutils that owns /usr/bin/c++filt -# Need binutils that support .weakref -# Need binutils that supports --hash-style=gnu -# Need binutils that support mffgpr/mftgpr -# Need binutils that support --build-id -Requires: binutils >= 2.17.50.0.17-3 -# Make sure gdb will understand DW_FORM_strp -Conflicts: gdb < 5.1-2 -Requires: glibc-devel >= 2.2.90-12 -%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha -# Make sure glibc supports TFmode long double -Requires: glibc >= 2.3.90-35 -%endif -Requires: libgcc >= %{version}-%{release} -Requires: libgomp = %{version}-%{release} -Obsoletes: gcc3 -Obsoletes: egcs -%ifarch sparc -Obsoletes: gcc-sparc32 -Obsoletes: gcc-c++-sparc32 -%endif -%ifarch ppc -Obsoletes: gcc-ppc32 -Obsoletes: gcc-c++-ppc32 -%endif -Obsoletes: gcc-chill -%if !%{build_ada} -Obsoletes: gcc-gnat < %{version}-%{release} -Obsoletes: libgnat < %{version}-%{release} -%endif -%ifarch sparc sparc64 -Obsoletes: egcs64 -%endif -Obsoletes: gcc34 -Obsoletes: gcc35 -Obsoletes: gcc4 -Prereq: /sbin/install-info -AutoReq: true - -Patch1: gcc41-ice-hack.patch -Patch2: gcc41-ppc64-m32-m64-multilib-only.patch -Patch3: gcc41-ia64-libunwind.patch -Patch4: gcc41-gnuc-rh-release.patch -Patch5: gcc41-java-nomulti.patch -Patch6: gcc41-ada-pr18302.patch -Patch7: gcc41-ada-tweaks.patch -Patch8: gcc41-java-slow_pthread_self.patch -Patch9: gcc41-ppc32-retaddr.patch -Patch10: gcc41-dsohandle.patch -Patch11: gcc41-rh184446.patch -Patch12: gcc41-pr20297-test.patch -Patch13: gcc41-hash-style-gnu.patch -Patch14: gcc41-java-libdotdotlib.patch -Patch15: gcc41-pr28755.patch -Patch16: gcc41-pr27898.patch -Patch17: gcc41-java-bogus-debugline.patch -Patch18: gcc41-libjava-visibility.patch -Patch19: gcc41-pr32139.patch -Patch20: gcc41-rh236895.patch -Patch21: gcc41-rh235008.patch -Patch22: gcc41-build-id.patch -Patch23: gcc41-pr28690.patch -Patch24: gcc41-rh247256.patch -Patch25: gcc41-ppc64-ia64-GNU-stack.patch -Patch26: gcc41-pr33506.patch -Patch27: gcc41-artificial-attrib.patch -Patch28: gcc41-error-attrib.patch -Patch29: gcc41-jdwp.patch -Patch30: gcc41-pr20880.patch -Patch31: gcc41-pr32694.patch -Patch32: gcc41-virtual-inline-backtrace.patch -Patch33: gcc41-c++-gnu-inline-redecl.patch -Patch34: gcc41-c++-builtin-redecl.patch -Patch35: gcc41-c++-guard-visibility.patch -Patch36: gcc41-pr32121.patch -Patch37: gcc41-pr33136.patch -Patch38: gcc41-pr33238.patch -Patch39: gcc41-pr33619.patch -Patch40: gcc41-pr33639.patch -Patch42: gcc41-pr33763.patch -Patch43: gcc41-rh317051.patch -Patch44: gcc41-rh330771.patch -Patch45: gcc41-rh341221.patch -Patch47: gcc41-java-arm1.patch -Patch48: gcc41-java-arm2.patch -Patch49: gcc41-java-arm3.patch -Patch50: gcc41-java-arm4.patch -Patch51: gcc41-java-arm5.patch -Patch52: gcc41-java-arm6.patch -Patch53: gcc41-java-arm7.patch -Patch54: gcc41-java-arm8.patch -Patch55: gcc41-pr23848.patch -Patch56: gcc41-pr29225.patch -Patch57: gcc41-pr29712.patch -Patch58: gcc41-pr30293.patch -Patch59: gcc41-pr30988.patch -Patch60: gcc41-pr32241.patch -Patch61: gcc41-pr32384.patch -Patch62: gcc41-pr33501.patch -Patch63: gcc41-pr33516.patch -Patch64: gcc41-pr33537.patch -Patch65: gcc41-pr33616.patch -Patch66: gcc41-pr33723.patch -Patch67: gcc41-pr33836.patch -Patch68: gcc41-pr33842.patch -Patch69: gcc41-pr33844.patch -Patch70: gcc41-pr33962.patch -Patch71: gcc41-pr34070.patch -Patch72: gcc41-pr34089.patch -Patch73: gcc41-pr34178.patch -Patch74: gcc41-pr34130.patch -Patch75: gcc41-pr34146.patch -Patch76: gcc41-rh364001.patch -Patch77: gcc41-pr34213.patch -Patch78: gcc41-pr34364.patch -Patch79: gcc41-pr34275.patch -Patch80: gcc41-rh407281.patch -Patch81: gcc41-pr34394.patch -Patch82: gcc41-debug-fortran-array.patch -Patch83: gcc41-omp-outer-ctx.patch - -# On ARM EABI systems, we do want -gnueabi to be part of the -# target triple. -%ifnarch %{arm} -%define _gnu %{nil} -%endif -%ifarch sparc -%define gcc_target_platform sparc64-%{_vendor}-%{_target_os} -%endif -%ifarch ppc -%define gcc_target_platform ppc64-%{_vendor}-%{_target_os} -%endif -%ifnarch sparc ppc -%define gcc_target_platform %{_target_platform} -%endif - -%description -The gcc package contains the GNU Compiler Collection version 4.1. -You'll need this package in order to compile C code. - -%package -n libgcc -Summary: GCC version 4.1 shared support library -Group: System Environment/Libraries -Autoreq: false - -%description -n libgcc -This package contains GCC shared support library which is needed -e.g. for exception handling support. - -%package c++ -Summary: C++ support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libstdc++ = %{version}-%{release} -Requires: libstdc++-devel = %{version}-%{release} -Obsoletes: gcc3-c++ -Obsoletes: gcc34-c++ -Obsoletes: gcc35-c++ -Obsoletes: gcc4-c++ -Autoreq: true - -%description c++ -This package adds C++ support to the GNU Compiler Collection. -It includes support for most of the current C++ specification, -including templates and exception handling. - -%package -n libstdc++ -Summary: GNU Standard C++ Library -Group: System Environment/Libraries -Obsoletes: libstdc++3 -Obsoletes: libstdc++34 -Autoreq: true - -%description -n libstdc++ -The libstdc++ package contains a rewritten standard compliant GCC Standard -C++ Library. - -%package -n libstdc++-devel -Summary: Header files and libraries for C++ development -Group: Development/Libraries -Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6 -Obsoletes: libstdc++3-devel -Obsoletes: libstdc++34-devel -Autoreq: true - -%description -n libstdc++-devel -This is the GNU implementation of the standard C++ libraries. This -package includes the header files and libraries needed for C++ -development. This includes rewritten implementation of STL. - -%package objc -Summary: Objective-C support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libobjc = %{version}-%{release} -Obsoletes: gcc3-objc -Autoreq: true - -%description objc -gcc-objc provides Objective-C support for the GCC. -Mainly used on systems running NeXTSTEP, Objective-C is an -object-oriented derivative of the C language. - -%package objc++ -Summary: Objective-C++ support for GCC -Group: Development/Languages -Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release} -Autoreq: true - -%description objc++ -gcc-objc++ package provides Objective-C++ support for the GCC. - -%package -n libobjc -Summary: Objective-C runtime -Group: System Environment/Libraries -Autoreq: true - -%description -n libobjc -This package contains Objective-C shared library which is needed to run -Objective-C dynamically linked programs. - -%package gfortran -Summary: Fortran 95 support -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libgfortran = %{version}-%{release} -BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1 -Prereq: /sbin/install-info -Obsoletes: gcc3-g77 -Obsoletes: gcc-g77 -Obsoletes: gcc4-gfortran -Autoreq: true - -%description gfortran -The gcc-gfortran package provides support for compiling Fortran 95 -programs with the GNU Compiler Collection. - -%package -n libgfortran -Summary: Fortran 95 runtime -Group: System Environment/Libraries -Obsoletes: libf2c -Autoreq: true - -%description -n libgfortran -This package contains Fortran 95 shared library which is needed to run -Fortran 95 dynamically linked programs. - -%package -n libgomp -Summary: GCC OpenMP 2.5 shared support library -Group: System Environment/Libraries - -%description -n libgomp -This package contains GCC shared support library which is needed -for OpenMP 2.5 support. - -%package -n libmudflap -Summary: GCC mudflap shared support library -Group: System Environment/Libraries - -%description -n libmudflap -This package contains GCC shared support library which is needed -for mudflap support. - -%package -n libmudflap-devel -Summary: GCC mudflap support -Group: Development/Libraries -Requires: libmudflap = %{version}-%{release} -Requires: gcc = %{version}-%{release} - -%description -n libmudflap-devel -This package contains headers and static libraries for building -mudflap-instrumented programs. - -To instrument a non-threaded program, add -fmudflap -option to GCC and when linking add -lmudflap, for threaded programs -also add -fmudflapth and -lmudflapth. - -%package java -Summary: Java support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libgcj = %{version}-%{release} -Requires: libgcj-devel = %{version}-%{release} -Requires: /usr/share/java/eclipse-ecj.jar -Obsoletes: gcc3-java -Obsoletes: gcc34-java -Obsoletes: gcc35-java -Obsoletes: gcc4-java -Prereq: /sbin/install-info -Autoreq: true - -%description java -This package adds support for compiling Java(tm) programs and -bytecode into native code. - -%package -n libgcj -Summary: Java runtime library for gcc -Group: System Environment/Libraries -Prereq: /sbin/install-info -Requires: zip >= 2.1 -Requires: gtk2 >= 2.4.0 -Requires: glib2 >= 2.4.0 -Requires: libart_lgpl >= 2.1.0 -%if %{build_java} -BuildRequires: gtk2-devel >= 2.4.0 -BuildRequires: glib2-devel >= 2.4.0 -BuildRequires: firefox-devel -BuildRequires: libart_lgpl-devel >= 2.1.0 -BuildRequires: alsa-lib-devel -BuildRequires: libXtst-devel -BuildRequires: libXt-devel -%endif -Obsoletes: gcc-libgcj -Obsoletes: libgcj3 -Obsoletes: libgcj34 -Obsoletes: libgcj4 -Autoreq: true - -%description -n libgcj -The Java(tm) runtime library. You will need this package to run your Java -programs compiled using the Java compiler from GNU Compiler Collection (gcj). - -%package -n libgcj-devel -Summary: Libraries for Java development using GCC -Group: Development/Languages -Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.8rh -Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so -Requires: /bin/awk -Obsoletes: libgcj3-devel -Obsoletes: libgcj34-devel -Obsoletes: libgcj4-devel -Autoreq: false -Autoprov: false - -%description -n libgcj-devel -The Java(tm) static libraries and C header files. You will need this -package to compile your Java programs using the GCC Java compiler (gcj). - -%package -n libgcj-src -Summary: Java library sources from GCC4 preview -Group: System Environment/Libraries -Requires: libgcj = %{version}-%{release} -Obsoletes: libgcj4-src -Autoreq: true - -%description -n libgcj-src -The Java(tm) runtime library sources for use in Eclipse. - -%package -n cpp -Summary: The C Preprocessor. -Group: Development/Languages -Prereq: /sbin/install-info -%ifarch ia64 -Obsoletes: gnupro -%endif -Autoreq: true - -%description -n cpp -Cpp is the GNU C-Compatible Compiler Preprocessor. -Cpp is a macro processor which is used automatically -by the C compiler to transform your program before actual -compilation. It is called a macro processor because it allows -you to define macros, abbreviations for longer -constructs. - -The C preprocessor provides four separate functionalities: the -inclusion of header files (files of declarations that can be -substituted into your program); macro expansion (you can define macros, -and the C preprocessor will replace the macros with their definitions -throughout the program); conditional compilation (using special -preprocessing directives, you can include or exclude parts of the -program according to various conditions); and line control (if you use -a program to combine or rearrange source files into an intermediate -file which is then compiled, you can use line control to inform the -compiler about where each source line originated). - -You should install this package if you are a C programmer and you use -macros. - -%package gnat -Summary: Ada 95 support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release} -Obsoletes: gnat-devel, gcc3-gnat -Prereq: /sbin/install-info -Autoreq: true - -%description gnat -GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools, -the documents and Ada 95 compiler. - -%package -n libgnat -Summary: GNU Ada 95 runtime shared libraries -Group: System Environment/Libraries -Obsoletes: gnat libgnat3 -Autoreq: true - -%description -n libgnat -GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries, -which are required to run programs compiled with the GNAT. - -%prep -%setup -q -n gcc-%{version}-%{DATE} -%patch1 -p0 -b .ice-hack~ -%patch2 -p0 -b .ppc64-m32-m64-multilib-only~ -%patch3 -p0 -b .ia64-libunwind~ -%patch4 -p0 -b .gnuc-rh-release~ -%patch5 -p0 -b .java-nomulti~ -%patch6 -p0 -b .ada-pr18302~ -%patch7 -p0 -b .ada-tweaks~ -%patch8 -p0 -b .java-slow_pthread_self~ -%patch9 -p0 -b .ppc32-retaddr~ -%patch10 -p0 -b .dsohandle~ -%patch11 -p0 -b .rh184446~ -%patch12 -p0 -E -b .pr20297-test~ -%patch13 -p0 -b .hash-style-gnu~ -%patch14 -p0 -b .java-libdotdotlib~ -%patch15 -p0 -b .pr28755~ -%patch16 -p0 -b .pr27898~ -%patch17 -p0 -b .java-bogus-debugline~ -%patch18 -p0 -b .libjava-visibility~ -%patch19 -p0 -b .pr32139~ -%patch20 -p0 -b .rh236895~ -%patch21 -p0 -b .rh235008~ -%patch22 -p0 -b .build-id~ -%patch23 -p0 -b .pr28690~ -%patch24 -p0 -b .rh247256~ -%patch25 -p0 -b .ppc64-ia64-GNU-stack~ -%patch26 -p0 -b .pr33506~ -%patch27 -p0 -b .artificial-attrib~ -%patch28 -p0 -b .error-attrib~ -%patch29 -p0 -b .jdwp~ -%patch30 -p0 -b .pr20880~ -%patch31 -p0 -b .pr32694~ -%patch32 -p0 -b .virtual-inline-backtrace~ -%patch33 -p0 -b .c++-gnu-inline-redecl~ -%patch34 -p0 -b .c++-builtin-redecl~ -%patch35 -p0 -b .c++-guard-visibility~ -%patch36 -p0 -b .pr32121~ -%patch37 -p0 -b .pr33136~ -%patch38 -p0 -b .pr33238~ -%patch39 -p0 -b .pr33619~ -%patch40 -p0 -b .pr33639~ -%patch42 -p0 -b .pr33763~ -%patch43 -p0 -b .rh317051~ -%patch44 -p0 -b .rh330771~ -%patch45 -p0 -b .rh341221~ -%patch47 -p0 -b .java-arm1~ -%patch48 -p0 -b .java-arm2~ -%patch49 -p0 -b .java-arm3~ -%patch50 -p0 -b .java-arm4~ -%patch51 -p0 -b .java-arm5~ -%patch52 -p0 -b .java-arm6~ -%patch53 -p0 -b .java-arm7~ -%patch54 -p0 -b .java-arm8~ -%patch55 -p0 -b .pr23848~ -%patch56 -p0 -b .pr29225~ -%patch57 -p0 -b .pr29712~ -%patch58 -p0 -b .pr30293~ -%patch59 -p0 -b .pr30988~ -%patch60 -p0 -b .pr32241~ -%patch61 -p0 -b .pr32384~ -%patch62 -p0 -b .pr33501~ -%patch63 -p0 -b .pr33516~ -%patch64 -p0 -b .pr33537~ -%patch65 -p0 -b .pr33616~ -%patch66 -p0 -b .pr33723~ -%patch67 -p0 -b .pr33836~ -%patch68 -p0 -b .pr33842~ -%patch69 -p0 -b .pr33844~ -%patch70 -p0 -b .pr33962~ -%patch71 -p0 -b .pr34070~ -%patch72 -p0 -b .pr34089~ -%patch73 -p0 -b .pr34178~ -%patch74 -p0 -b .pr34130~ -%patch75 -p0 -b .pr34146~ -%patch76 -p0 -b .rh364001~ -%patch77 -p0 -b .pr34213~ -%patch78 -p0 -b .pr34364~ -%patch79 -p0 -b .pr34275~ -%patch80 -p0 -b .rh407281~ -%patch81 -p0 -b .pr34394~ -%patch82 -p0 -b .debug-fortran-array~ -%patch83 -p0 -b .omp-outer-ctx~ - -%if %{bootstrap_java} -tar xjf %{SOURCE10} -%endif - -sed -i -e 's/4\.1\.3/4.1.2/' gcc/BASE-VER gcc/version.c -sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c - -cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h - -# Hack to avoid building multilib libjava -perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in -perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in -perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in -perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in -perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in -perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in - -./contrib/gcc_update --touch - -%ifarch ppc -if [ -d libstdc++-v3/config/abi/powerpc64-linux-gnu ]; then - mkdir -p libstdc++-v3/config/abi/powerpc64-linux-gnu/64 - mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{,64/}baseline_symbols.txt - mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{32/,}baseline_symbols.txt - rm -rf libstdc++-v3/config/abi/powerpc64-linux-gnu/32 -fi -%endif -%ifarch sparc -if [ -d libstdc++-v3/config/abi/sparc64-linux-gnu ]; then - mkdir -p libstdc++-v3/config/abi/sparc64-linux-gnu/64 - mv libstdc++-v3/config/abi/sparc64-linux-gnu/{,64/}baseline_symbols.txt - mv libstdc++-v3/config/abi/sparc64-linux-gnu/{32/,}baseline_symbols.txt - rm -rf libstdc++-v3/config/abi/sparc64-linux-gnu/32 -fi -%endif - -%build - -rm -fr obj-%{gcc_target_platform} -mkdir obj-%{gcc_target_platform} -cd obj-%{gcc_target_platform} - -if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then - mkdir locale - localedef -f ISO-8859-1 -i de_DE locale/de_DE - export LOCPATH=`pwd`/locale:/usr/lib/locale -fi - -%if %{build_java} -%if !%{bootstrap_java} -# If we don't have gjavah in $PATH, try to build it with the old gij -mkdir java_hacks -cd java_hacks -if [ ! -x /usr/bin/gjavah ]; then - cp -a ../../libjava/classpath/tools/external external - mkdir -p gnu/classpath/tools - cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/ - cp -a ../../libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common - cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../.. - for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done - gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real - cat > gjavah < ecj1 < gcc64 <<"EOF" -#!/bin/sh -exec /usr/bin/gcc -m64 "$@" -EOF -chmod +x gcc64 -CC=`pwd`/gcc64 -%endif -%ifarch ppc64 -if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then - cat > gcc64 <<"EOF" -#!/bin/sh -exec /usr/bin/gcc -m64 "$@" -EOF - chmod +x gcc64 - CC=`pwd`/gcc64 -fi -%endif -OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'` -case "$OPT_FLAGS" in - *-fasynchronous-unwind-tables*) - sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/' \ - ../gcc/Makefile.in - ;; -esac -CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="$OPT_FLAGS" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ - GCJFLAGS="$OPT_FLAGS" \ - ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --enable-shared --enable-threads=posix --enable-checking=release \ - --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ -%if !%{build_ada} - --enable-languages=c,c++,objc,obj-c++,java,fortran \ -%else - --enable-languages=c,c++,objc,obj-c++,java,fortran,ada \ -%endif -%if !%{build_java} - --disable-libgcj \ -%else - --enable-java-awt=gtk --disable-dssi --enable-plugin \ - --with-java-home=%{_prefix}/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre \ - --enable-libgcj-multifile --enable-java-maintainer-mode \ - --with-ecj-jar=/usr/share/java/eclipse-ecj.jar \ -%endif -%ifarch %{arm} - --disable-sjlj-exceptions \ -%endif -%ifarch ppc ppc64 - --enable-secureplt \ -%endif -%ifarch sparc ppc ppc64 s390 s390x alpha - --with-long-double-128 \ -%endif -%ifarch sparc - --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7 -%endif -%ifarch ppc - --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32 -%endif -%ifarch %{ix86} x86_64 - --with-cpu=generic \ -%endif -%ifarch s390 s390x - --with-tune=z9-109 \ -%endif -%ifnarch sparc ppc - --host=%{gcc_target_platform} -%endif - -#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap -GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap - -# run the tests. -make %{?_smp_mflags} -k check RUNTESTFLAGS="ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || : -cd gcc -mv testsuite{,.normal} -make %{?_smp_mflags} -k \ - `sed -n 's/check-ada//;s/^CHECK_TARGETS[[:blank:]]*=[[:blank:]]*//p' Makefile` \ - RUNTESTFLAGS="--target_board=unix/-fstack-protector ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || : -mv testsuite{,.ssp} -mv testsuite{.normal,} -cd .. -echo ====================TESTING========================= -( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' -echo ====================TESTING END===================== -mkdir testlogs-%{_target_platform}-%{version}-%{release} -for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do - ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || : -done -for i in `find . -name \*.log | grep -F testsuite.ssp/ | grep -v 'config.log\|acats\|ada'`; do - ln $i testlogs-%{_target_platform}-%{version}-%{release}/ssp-`basename $i` || : -done -tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \ - | uuencode testlogs-%{_target_platform}.tar.bz2 || : -rm -rf testlogs-%{_target_platform}-%{version}-%{release} - -# Make protoize -make -C gcc CC="./xgcc -B ./ -O2" proto - -# Make generated man pages even if Pod::Man is not new enough -perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl -for i in ../gcc/doc/*.texi; do - cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i -done -make -C gcc generated-manpages -for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done - -# Copy various doc files here and there -cd .. -mkdir -p rpm.doc/gfortran rpm.doc/objc -mkdir -p rpm.doc/boehm-gc rpm.doc/fastjar rpm.doc/libffi rpm.doc/libjava -mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp} -sed -e 's,@VERSION@,%{gcc_version},' %{SOURCE2} > rpm.doc/README.libgcjwebplugin.so - -for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do - cp -p $i rpm.doc/changelogs/$i -done - -(cd gcc/fortran; for i in ChangeLog*; do - cp -p $i ../../rpm.doc/gfortran/$i -done) -(cd libgfortran; for i in ChangeLog*; do - cp -p $i ../rpm.doc/gfortran/$i.libgfortran -done) -(cd gcc/objc; for i in README*; do - cp -p $i ../../rpm.doc/objc/$i.objc -done) -(cd libobjc; for i in README*; do - cp -p $i ../rpm.doc/objc/$i.libobjc -done) -(cd boehm-gc; for i in ChangeLog*; do - cp -p $i ../rpm.doc/boehm-gc/$i.gc -done) -(cd fastjar; for i in ChangeLog* README*; do - cp -p $i ../rpm.doc/fastjar/$i.fastjar -done) -(cd libffi; for i in ChangeLog* README* LICENSE; do - cp -p $i ../rpm.doc/libffi/$i.libffi -done) -(cd libjava; for i in ChangeLog* README*; do - cp -p $i ../rpm.doc/libjava/$i.libjava -done) -cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/ - -rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9] -find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9 - -%if %{build_java_tar} -find libjava -name \*.h -type f | xargs grep -l '// DO NOT EDIT THIS FILE - it is machine generated' > libjava-classes.list -find libjava -name \*.class -type f >> libjava-classes.list -find libjava/testsuite -name \*.jar -type f >> libjava-classes.list -tar cf - -T libjava-classes.list | bzip2 -9 > $RPM_SOURCE_DIR/libjava-classes-%{version}-%{release}.tar.bz2 -%endif - -%install -rm -fr $RPM_BUILD_ROOT - -perl -pi -e \ - 's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \ - libstdc++-v3/docs/html/documentation.html -ln -sf documentation.html libstdc++-v3/docs/html/index.html - -cd obj-%{gcc_target_platform} - -if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then - export LOCPATH=`pwd`/locale:/usr/lib/locale -fi - -%if %{build_java} -%if !%{bootstrap_java} -export PATH=`pwd`/java_hacks${PATH:+:$PATH} -%endif -%endif - -TARGET_PLATFORM=%{gcc_target_platform} - -# There are some MP bugs in libstdc++ Makefiles -make -C %{gcc_target_platform}/libstdc++-v3 - -make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \ - infodir=$RPM_BUILD_ROOT%{_infodir} install -%if %{build_java} -make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip -%endif -%if %{build_ada} -chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat* -%endif - -FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} - -# fix some things -ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc -mkdir -p $RPM_BUILD_ROOT/lib -ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp -ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95 -rm -f $RPM_BUILD_ROOT%{_infodir}/dir -gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info* -ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc - -cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`" -for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do - if ! diff -up $cxxconfig $i; then - cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h < -#if __WORDSIZE == 32 -%ifarch %{multilib_64_archs} -`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)` -%else -`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)` -%endif -#else -%ifarch %{multilib_64_archs} -`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)` -%else -`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)` -%endif -#endif -#endif -EOF - break - fi -done - -# Nuke bits/stdc++.h.gch dirs -# 1) there is no bits/stdc++.h header installed, so when gch file can't be -# used, compilation fails -# 2) sometimes it is hard to match the exact options used for building -# libstdc++-v3 or they aren't desirable -# 3) there are multilib issues, conflicts etc. with this -# 4) it is huge -# People can always precompile on their own whatever they want, but -# shipping this for everybody is unnecessary. -rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch - -%ifarch sparc sparc64 -ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \ - $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc -%endif -%ifarch ppc ppc64 -ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \ - $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc -%endif - -%ifarch sparc ppc -FULLLPATH=$FULLPATH/lib32 -%endif -%ifarch sparc64 ppc64 -FULLLPATH=$FULLPATH/lib64 -%endif -if [ -n "$FULLLPATH" ]; then - mkdir -p $FULLLPATH -else - FULLLPATH=$FULLPATH -fi - -find $RPM_BUILD_ROOT -name \*.la | xargs rm -f -%if %{build_java} -# gcj -static doesn't work properly anyway, unless using --whole-archive -# and saving 35MB is not bad. -find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \ - -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \ - -o -name libgij.a -o -name libgcj_bc.a | xargs rm -f - -mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/ -sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \ - $FULLPATH/libgcj.spec -%endif - -mkdir -p $RPM_BUILD_ROOT/%{_lib} -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 -chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 -ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1 -ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so -%ifarch sparc ppc -ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so -%endif -%ifarch %{multilib_64_archs} -ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so -%endif - -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/ -mv -f $RPM_BUILD_ROOT%{_prefix}/include/omp.h $FULLPATH/include/ - -%if %{build_ada} -mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ -mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ -rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so* -%endif - -mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf -if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then - ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default -else - ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default -fi - -%if %{build_java} -if [ "%{_lib}" != "lib" ]; then - mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig - sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \ - > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc` -fi -%endif - -pushd $FULLPATH -if [ "%{_lib}" = "lib" ]; then -ln -sf ../../../libobjc.so.1 libobjc.so -ln -sf ../../../libstdc++.so.6.* libstdc++.so -ln -sf ../../../libgfortran.so.1.* libgfortran.so -ln -sf ../../../libgomp.so.1.* libgomp.so -ln -sf ../../../libmudflap.so.0.* libmudflap.so -ln -sf ../../../libmudflapth.so.0.* libmudflapth.so -%if %{build_java} -ln -sf ../../../libgcj.so.8rh.* libgcj.so -ln -sf ../../../libgcj-tools.so.8rh.* libgcj-tools.so -ln -sf ../../../libgij.so.8rh.* libgij.so -%endif -%if %{build_ada} -cd adalib -ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-4.1.so -ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-4.1.so -cd .. -%endif -else -ln -sf ../../../../%{_lib}/libobjc.so.1 libobjc.so -ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++.so -ln -sf ../../../../%{_lib}/libgfortran.so.1.* libgfortran.so -ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so -ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so -ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so -%if %{build_java} -ln -sf ../../../../%{_lib}/libgcj.so.8rh.* libgcj.so -ln -sf ../../../../%{_lib}/libgcj-tools.so.8rh.* libgcj-tools.so -ln -sf ../../../../%{_lib}/libgij.so.8rh.* libgij.so -%endif -%if %{build_ada} -cd adalib -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.1.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.1.so -cd .. -%endif -fi -%if %{build_java} -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/ -%endif -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/ -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortranbegin.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/ -mv -f $RPM_BUILD_ROOT%{_prefix}/include/mf-runtime.h include/ - -%ifarch sparc ppc -ln -sf ../../../../../lib64/libobjc.so.1 64/libobjc.so -ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so -ln -sf ../`echo ../../../../lib/libgfortran.so.1.* | sed s~/lib/~/lib64/~` 64/libgfortran.so -ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so -ln -sf ../`echo ../../../../lib/libmudflap.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflap.so -ln -sf ../`echo ../../../../lib/libmudflapth.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflapth.so -%if %{build_java} -ln -sf ../`echo ../../../../lib/libgcj.so.8rh.* | sed s~/lib/~/lib64/~` 64/libgcj.so -ln -sf ../`echo ../../../../lib/libgcj-tools.so.8rh.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so -ln -sf ../`echo ../../../../lib/libgij.so.8rh.* | sed s~/lib/~/lib64/~` 64/libgij.so -ln -sf lib32/libgcj_bc.so libgcj_bc.so -ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so -%endif -mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortranbegin.*a 64/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/ -ln -sf lib32/libstdc++.a libstdc++.a -ln -sf ../lib64/libstdc++.a 64/libstdc++.a -ln -sf lib32/libmudflap.a libmudflap.a -ln -sf ../lib64/libmudflap.a 64/libmudflap.a -ln -sf lib32/libmudflapth.a libmudflapth.a -ln -sf ../lib64/libmudflapth.a 64/libmudflapth.a -%endif -%ifarch %{multilib_64_archs} -mkdir -p 32 -ln -sf ../../../../libobjc.so.1 32/libobjc.so -ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++.so -ln -sf ../`echo ../../../../lib64/libgfortran.so.1.* | sed s~/../lib64/~/~` 32/libgfortran.so -ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so -ln -sf ../`echo ../../../../lib64/libmudflap.so.0.* | sed s~/../lib64/~/~` 32/libmudflap.so -ln -sf ../`echo ../../../../lib64/libmudflapth.so.0.* | sed s~/../lib64/~/~` 32/libmudflapth.so -%if %{build_java} -ln -sf ../`echo ../../../../lib64/libgcj.so.8rh.* | sed s~/../lib64/~/~` 32/libgcj.so -ln -sf ../`echo ../../../../lib64/libgcj-tools.so.8rh.* | sed s~/../lib64/~/~` 32/libgcj-tools.so -ln -sf ../`echo ../../../../lib64/libgij.so.8rh.* | sed s~/../lib64/~/~` 32/libgij.so -%endif -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortranbegin.*a 32/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/ -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/ -%endif -%ifarch sparc64 ppc64 -ln -sf ../lib32/libstdc++.a 32/libstdc++.a -ln -sf lib64/libstdc++.a libstdc++.a -ln -sf ../lib32/libmudflap.a 32/libmudflap.a -ln -sf lib64/libmudflap.a libmudflap.a -ln -sf ../lib32/libmudflapth.a 32/libmudflapth.a -ln -sf lib64/libmudflapth.a libmudflapth.a -%if %{build_java} -ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so -ln -sf lib64/libgcj_bc.so libgcj_bc.so -%endif -%else -%ifarch %{multilib_64_archs} -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflap.a 32/libmudflap.a -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a -%if %{build_java} -ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so -%endif -%endif -%endif - -# Strip debug info from Fortran/ObjC/Java static libraries -strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ - -o -name libmudflap.a -o -name libmudflapth.a \ - -o -name libgcc.a -o -name libgcov.a \) -a -type f` -popd -chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.1.* -chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.* -chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.* -chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.1.* - -%if %{build_ada} -chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so* -chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so* -%endif - -for h in `find $FULLPATH/include -name \*.h`; do - if grep -q 'It has been auto-edited by fixincludes from' $h; then - rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'` - diff -up $rh $h || : - rm -f $h - fi -done - -cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF" -#!/bin/sh -fl="-std=c89" -for opt; do - case "$opt" in - -ansi|-std=c89|-std=iso9899:1990) fl="";; - -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 - exit 1;; - esac -done -exec gcc $fl ${1+"$@"} -EOF -cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF" -#!/bin/sh -fl="-std=c99" -for opt; do - case "$opt" in - -std=c99|-std=iso9899:1999) fl="";; - -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 - exit 1;; - esac -done -exec gcc $fl ${1+"$@"} -EOF -chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9 - -mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin -gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade -strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade - -cd .. -%find_lang %{name} -%find_lang cpplib - -# Remove binaries we will not be including, so that they don't end up in -# gcc-debuginfo -rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a} -rm -f $FULLEPATH/install-tools/{mkheaders,fixincl} -rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a -rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp* - -%ifarch %{multilib_64_archs} -# Remove libraries for the other arch on multilib arches -rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so* -rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a -%else -%ifarch sparc ppc -rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so* -rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a -%endif -%endif - -%if %{build_java} -mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \ - $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d -chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \ - $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \ - $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d -touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db -%endif - -install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1 -echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1 -chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1 - -%clean -rm -rf $RPM_BUILD_ROOT - -%post -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || : - -%preun -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || : -fi - -%post -n cpp -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || : - -%preun -n cpp -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || : -fi - -%post gfortran -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || : - -%preun gfortran -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || : -fi - -%post java -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || : - -%preun java -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || : -fi - -%post gnat -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || : -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || : -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || : - -%preun gnat -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || : - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || : - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || : -fi - -# Because glibc Prereq's libgcc and /sbin/ldconfig -# comes from glibc, it might not exist yet when -# libgcc is installed -%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade - -%post -n libstdc++ -p /sbin/ldconfig - -%postun -n libstdc++ -p /sbin/ldconfig - -%post -n libobjc -p /sbin/ldconfig - -%postun -n libobjc -p /sbin/ldconfig - -%post -n libgcj -/sbin/ldconfig -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || : - -%preun -n libgcj -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || : -fi - -%postun -n libgcj -p /sbin/ldconfig - -%post -n libgfortran -p /sbin/ldconfig - -%postun -n libgfortran -p /sbin/ldconfig - -%post -n libgnat -p /sbin/ldconfig - -%postun -n libgnat -p /sbin/ldconfig - -%post -n libgomp -p /sbin/ldconfig - -%postun -n libgomp -p /sbin/ldconfig - -%post -n libmudflap -p /sbin/ldconfig - -%postun -n libmudflap -p /sbin/ldconfig - -%files -f %{name}.lang -%defattr(-,root,root) -%{_prefix}/bin/cc -%{_prefix}/bin/c89 -%{_prefix}/bin/c99 -%{_prefix}/bin/gcc -%{_prefix}/bin/gcov -%{_prefix}/bin/protoize -%{_prefix}/bin/unprotoize -%ifarch sparc ppc -%{_prefix}/bin/%{_target_platform}-gcc -%endif -%ifarch sparc64 -%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc -%endif -%ifarch ppc64 -%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc -%endif -%{_prefix}/bin/%{gcc_target_platform}-gcc -%{_mandir}/man1/gcc.1* -%{_mandir}/man1/gcov.1* -%{_mandir}/man1/protoize.1* -%{_mandir}/man1/unprotoize.1* -%{_infodir}/gcc* -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.h -%ifarch %{ix86} x86_64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xmmintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/tmmintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ammintrin.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h -%endif -%ifarch ia64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h -%endif -%ifarch ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h -%endif -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/README -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_s.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.so -%endif -%ifarch %{multilib_64_archs} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so -%endif -%ifarch sparc sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so -%endif -%dir %{_prefix}/libexec/getconf -%{_prefix}/libexec/getconf/default -%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* - -%files -n cpp -f cpplib.lang -%defattr(-,root,root) -/lib/cpp -%{_prefix}/bin/cpp -%{_mandir}/man1/cpp.1* -%{_infodir}/cpp* -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1 - -%files -n libgcc -%defattr(-,root,root) -/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 -/%{_lib}/libgcc_s.so.1 -%{_prefix}/sbin/libgcc_post_upgrade -%doc gcc/COPYING.LIB - -%files c++ -%defattr(-,root,root) -%{_prefix}/bin/%{gcc_target_platform}-*++ -%{_prefix}/bin/g++ -%{_prefix}/bin/c++ -%{_mandir}/man1/g++.1* -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a -%endif -%ifarch %{multilib_64_archs} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a -%endif -%ifarch sparc ppc %{multilib_64_archs} -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a -%endif -%ifarch sparc sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a -%endif -%doc rpm.doc/changelogs/gcc/cp/ChangeLog* - -%files -n libstdc++ -%defattr(-,root,root) -%{_prefix}/%{_lib}/libstdc++.so.6* - -%files -n libstdc++-devel -%defattr(-,root,root) -%dir %{_prefix}/include/c++ -%dir %{_prefix}/include/c++/%{gcc_version} -%{_prefix}/include/c++/%{gcc_version}/[^gjos]* -%{_prefix}/include/c++/%{gcc_version}/os* -%{_prefix}/include/c++/%{gcc_version}/s[^u]* -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a -%endif -%ifarch sparc64 ppc64 -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a -%endif -%ifnarch sparc sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a -%endif -%ifnarch sparc ppc %{multilib_64_archs} -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a -%endif -%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/ - -%files objc -%defattr(-,root,root) -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/objc -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so -%endif -%ifarch %{multilib_64_archs} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so -%endif -%doc rpm.doc/objc/* -%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog* - -%files objc++ -%defattr(-,root,root) -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus - -%files -n libobjc -%defattr(-,root,root) -%{_prefix}/%{_lib}/libobjc.so.1* - -%files gfortran -%defattr(-,root,root) -%{_prefix}/bin/gfortran -%{_prefix}/bin/f95 -%{_mandir}/man1/gfortran.1* -%{_infodir}/gfortran* -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so -%endif -%ifarch %{multilib_64_archs} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so -%endif -%doc rpm.doc/gfortran/* - -%files -n libgfortran -%defattr(-,root,root) -%{_prefix}/%{_lib}/libgfortran.so.1* - -%if %{build_java} -%files java -%defattr(-,root,root) -%{_prefix}/bin/gcj -%{_prefix}/bin/gjavah -%{_prefix}/bin/gcjh -%{_prefix}/bin/jcf-dump -%{_mandir}/man1/gcj.1* -%{_mandir}/man1/jcf-dump.1* -%{_mandir}/man1/gjavah.1* -%{_mandir}/man1/gcjh.1* -%{_infodir}/gcj* -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1 -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/ecj1 -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so -%ifarch sparc sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so -%endif -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so -%endif -%ifarch %{multilib_64_archs} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so -%endif -%doc rpm.doc/changelogs/gcc/java/ChangeLog* - -%files -n libgcj -%defattr(-,root,root) -%{_prefix}/bin/jv-convert -%{_prefix}/bin/gij -%{_prefix}/bin/gjar -%{_prefix}/bin/fastjar -%{_prefix}/bin/grepjar -%{_prefix}/bin/grmic -%{_prefix}/bin/grmid -%{_prefix}/bin/grmiregistry -%{_prefix}/bin/gtnameserv -%{_prefix}/bin/gkeytool -%{_prefix}/bin/gorbd -%{_prefix}/bin/gserialver -%{_prefix}/bin/gcj-dbtool -%if %{include_gappletviewer} -%{_prefix}/bin/gappletviewer -%{_mandir}/man1/gappletviewer.1* -%endif -%{_prefix}/bin/gjarsigner -%{_mandir}/man1/fastjar.1* -%{_mandir}/man1/grepjar.1* -%{_mandir}/man1/gjar.1* -%{_mandir}/man1/gjarsigner.1* -%{_mandir}/man1/jv-convert.1* -%{_mandir}/man1/gij.1* -%{_mandir}/man1/grmic.1* -%{_mandir}/man1/grmiregistry.1* -%{_mandir}/man1/gcj-dbtool.1* -%{_mandir}/man1/gkeytool.1* -%{_mandir}/man1/gorbd.1* -%{_mandir}/man1/grmid.1* -%{_mandir}/man1/gserialver.1* -%{_mandir}/man1/gtnameserv.1* -%{_infodir}/fastjar* -%{_prefix}/%{_lib}/libgcj.so.* -%{_prefix}/%{_lib}/libgcj-tools.so.* -%{_prefix}/%{_lib}/libgcj_bc.so.* -%{_prefix}/%{_lib}/libgij.so.* -%dir %{_prefix}/%{_lib}/gcj-%{version} -%{_prefix}/%{_lib}/gcj-%{version}/libgtkpeer.so -%{_prefix}/%{_lib}/gcj-%{version}/libgjsmalsa.so -%{_prefix}/%{_lib}/gcj-%{version}/libjawt.so -%if %{include_gappletviewer} -%{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so -%endif -%{_prefix}/%{_lib}/gcj-%{version}/libjvm.so -%dir %{_prefix}/share/java -%{_prefix}/share/java/[^sl]* -%{_prefix}/share/java/libgcj-%{version}.jar -%dir %{_prefix}/%{_lib}/security -%config(noreplace) %{_prefix}/%{_lib}/security/classpath.security -%{_prefix}/%{_lib}/logging.properties -%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d -%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db -%if %{include_gappletviewer} -%doc rpm.doc/README.libgcjwebplugin.so -%endif - -%files -n libgcj-devel -%defattr(-,root,root) -%{_prefix}/bin/addr2name.awk -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/gcj -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so -%endif -%ifarch sparc64 ppc64 -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so -%endif -%ifnarch sparc sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so -%endif -%dir %{_prefix}/include/c++ -%dir %{_prefix}/include/c++/%{gcc_version} -%{_prefix}/include/c++/%{gcc_version}/[gj]* -%{_prefix}/include/c++/%{gcc_version}/org -%{_prefix}/include/c++/%{gcc_version}/sun -%{_prefix}/%{_lib}/pkgconfig/libgcj-*.pc -%doc rpm.doc/boehm-gc/* rpm.doc/fastjar/* rpm.doc/libffi/* -%doc rpm.doc/libjava/* - -%files -n libgcj-src -%defattr(-,root,root) -%dir %{_prefix}/share/java -%{_prefix}/share/java/src*.zip -%{_prefix}/share/java/libgcj-tools-%{version}.jar -%endif - -%if %{build_ada} -%files gnat -%defattr(-,root,root) -%{_prefix}/bin/gnat* -%{_prefix}/bin/gpr* -%{_infodir}/gnat* -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/libexec/gcc -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} -%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib -%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1 -%doc rpm.doc/changelogs/gcc/ada/ChangeLog* - -%files -n libgnat -%defattr(-,root,root) -%{_prefix}/%{_lib}/libgnat-*.so -%{_prefix}/%{_lib}/libgnarl-*.so -%endif - -%files -n libgomp -%defattr(-,root,root) -%{_prefix}/%{_lib}/libgomp.so.1* -%doc rpm.doc/changelogs/libgomp/ChangeLog* - -%files -n libmudflap -%defattr(-,root,root) -%{_prefix}/%{_lib}/libmudflap.so.0* -%{_prefix}/%{_lib}/libmudflapth.so.0* - -%files -n libmudflap-devel -%defattr(-,root,root) -%dir %{_prefix}/lib/gcc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mf-runtime.h -%ifarch sparc ppc -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflap.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflapth.a -%endif -%ifarch sparc64 ppc64 -%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflap.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflapth.a -%endif -%ifnarch sparc sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so -%endif -%doc rpm.doc/changelogs/libmudflap/ChangeLog* - -%changelog -* Wed Dec 12 2007 Jakub Jelinek 4.1.2-36 -- revert PR c++/34094 fix altogether, it was only accepts-invalid and - caused a bunch of valid or unclear cases to be rejected (#411871, #402521) -- fix OpenMP handling of global vars privatized in orphaned constructs - with #pragma omp parallel inside them -- -frepo fixes (#411741, PRs c++/34178, c++/34340) -- fix dynamic_cast in templates (PR c++/34364) -- fix error diagnostics involving ABS_EXPR (PR c++/34394) - -* Sun Dec 2 2007 Jakub Jelinek 4.1.2-35 -- two ctor preevaluation fixes (Olivier Hainque, - Eric Botcazou, #407281) -- slightly weaken diagnostics for declared, but undefined static data - members in anon ns classes (#402521, PR c++/34238) -- consider static data members and static member functions in anon ns - classes to be external for C++ linkage type handling (PR c++/34213) -- handle OBJ_TYPE_REF in C++ diagnostics (PR c++/34275) - -* Sat Nov 24 2007 Jakub Jelinek 4.1.2-34 -- update from gcc-4_1-branch (-r128736:130387) - - PRs middle-end/34030, rtl-optimization/28062, rtl-optimization/33822 - - fix if-conversion to avoid introducing races into threaded code - (Ian Lance Taylor, #391731) -- some C++ visibility fixes (Jason Merrill, PRs c++/32470, c++/33094, - c++/29365) -- arm Java support (Andrew Haley, #246800) -- add possibility to bootstrap gcj on architectures where libgcj - isn't already available or is too old - build on some already - supported arch the rpm with --with java_tar and the created - tarball bring to the new arch and build --with java_bootstrap -- backport a bunch of bugfixes from GCC trunk - - PRs c++/29225, c++/30293, c++/30294, c++/30988, c++/32241, - c++/32384, c++/33501, c++/33516, c++/33616, c++/33836, - c++/33842, c++/33844, c++/33962, c++/34089, c++/34094, - c/34146, debug/33537, middle-end/23848, middle-end/34070, - testsuite/33978, tree-optimization/33723 -- fix abs optimization (Richard Guenther, #394271, PR middle-end/34130) -- fortran lbound/ubound fix (Paul Thomas, #391151, PR fortran/29712) -- generate proper fortran debuginfo for assumed-size, assumed-shape - and deferred arrays (#364001) - -* Sun Oct 21 2007 Jakub Jelinek 4.1.2-33 -- rebuild to fix multilib conflict between i386 and x86_64 libgcj, - set java man page timestamp from the timestamp of *.texinfo rather - than current date to avoid this problem in the future (#341221) -- fix ppc64 unwinding of cr2 register if vdso=0 - -* Tue Oct 16 2007 Jakub Jelinek 4.1.2-32 -- only allow __label__ at the start of a block (PR c++/32121) -- disable -fipa-type-escape by default (PR tree-optimization/33136) -- VLA handling fix (PR c/33238, PR c/27301) -- disable TER of pure and const function calls except for __builtin_expect - (PR tree-optimization/33619) -- handle classes with characters other than [a-zA-Z0-9_$] in - their names (Andrew Haley, #297961, PR java/33639) -- fix parsing of C++ function-like cast in template argument where cast's - argument uses greater-than operator (PR c++/33744) -- ignore always_inline attribute on redefined extern inline - functions (Jan Hubicka, #329671, PR tree-optimization/33763) -- add support for Fortran int conversion intrinsics (Francois-Xavier - Coudert, #317051) -- link libgcj-tools.so* against libgcj.so* (#330771) - -* Wed Oct 3 2007 Jakub Jelinek 4.1.2-31 -- fix visibility of C++ guard variables (Jason Merrill) -- don't drop DECL_BUILT_IN_CLASS when defining a builtin function - -* Mon Oct 1 2007 Jakub Jelinek 4.1.2-30 -- fix ICE on C++ gnu_inline function followed by prototype of the same - fn (Alexandre Oliva) - -* Fri Sep 28 2007 Jakub Jelinek 4.1.2-29 -- print virtual inline backtrace in some diagnostic messages to help - locate bugs reported with -D_FORTIFY_SOURCE{,=2} - -* Tue Sep 25 2007 Jakub Jelinek 4.1.2-28 -- update from gcc-4_1-branch (-r127672:128736) - - PRs bootstrap/33418, c++/31941, c++/32113, java/31842, target/33256, - tree-optimization/33142 -- add support for artificial, error and warning attributes -- restore Java CNI ABI compatibility broken by JDWP changes (Keith Seitz) -- fix ICE with set_rhs allowing non-gimple (Roger Sayle, #247407, - PR tree-optimization/32694) -- fix ICE on Fortran interface-body declaring current subroutine name - (Paul Thomas, #300851, PR fortran/20880) - -* Sat Sep 22 2007 Jakub Jelinek 4.1.2-26 -- don't ignore throw specification of function types in type hashing - (PR c++/33506) -- handle makeinfo version >= 4.10 in gcc configury - -* Mon Sep 17 2007 Jakub Jelinek 4.1.2-25 -- fix ICE on __builtin_mem*_chk if it couldn't be folded until - expand time and at that point it can avoid a call (PR middle-end/33423) -- handle the upcoming POSIX 'm' *scanf allocation modifier in - GCC format checking, fix up some details about %as/%aS/%a[ - -* Fri Sep 14 2007 Jakub Jelinek 4.1.2-24 -- backport __builtin_va_arg_pack_len () support -- fix Fortran error recovery with DATA (Jerry DeLisle, #281331, - PR fortran/27954) - -* Fri Sep 7 2007 Jakub Jelinek 4.1.2-23 -- fix __builtin_va_arg_pack () support for C++ - -* Thu Sep 6 2007 Jakub Jelinek 4.1.2-22 -- backport __builtin_va_arg_pack () support -- make sure __builtin_{,v}{,f}{print,scan}f, __builtin_{,f}printf_unlocked - and __builtin___{,v}{,f}printf_chk can throw -- handle __*_chk builtins without __builtin_ in the name as anticipated in - C++ - -* Sat Sep 1 2007 Jakub Jelinek 4.1.2-21 -- fix libmudflap-devel multilib conflict on ppc/ppc64 and sparc/sparc64 - (#270281) - -* Fri Aug 31 2007 Jakub Jelinek 4.1.2-20 -- backport __attribute__((__gnu_inline__)) support for C++ -- fix ppc/ppc64 __sync_* builtins with aligned 8 or 16-bit values -- don't set executable flag on .note.GNU-stack on ppc64/ia64 even - when trampolines are used - trampolines on those architectures - don't need executable stack - -* Tue Aug 21 2007 Jakub Jelinek 4.1.2-19 -- update from gcc-4_1-branch (-r127528:127672) - - PR c++/32112 -- fix ppc32 libgcc.a(tramp.o), so that binaries using trampolines - aren't forced to use bss PLT -- fix a fortran charlen sharing bug (#253102) -- fix ICE with X|~X or X^~X with vectors (PR middle-end/32912) -- nuke bits/stdc++.gch directories from libstdc++-devel (#253304) - -* Thu Aug 16 2007 Jakub Jelinek 4.1.2-18 -- update from gcc-4_1-branch (-r126830:127528) - - PR c++/17763 -- fix --build-id patch on ia64 (#251936) -- fix fortran Tx format handling (Jerry DeLisle, #252152, - PR libgfortran/32678) -- add support for Sun UltraSPARC T1 chips - -mcpu=niagara (David S. Miller) -- don't NRV optimize fields inside anonymous unions (PR c++/32992) -- fortran debuginfo improvements for constant bound arrays (#248541, - PR fortran/22244) -- BuildRequire mpfr-devel -- update License tag - -* Tue Jul 24 2007 Jakub Jelinek 4.1.2-17 -- fix {,Build}Requires from last change (#249384) - -* Mon Jul 23 2007 Jakub Jelinek 4.1.2-16 -- update from gcc-4_1-branch (-r126302:126830) - - PRs rtl-optimization/32450, target/31331, target/32641, target/32660, - tree-optimization/32681 -- pass --build-id to ld for all linking but ld -r, update {,Build}Requires - to binutils that support it (Roland McGrath) -- backport ARM fixes from trunk (#246800) - - PRs middle-end/24998, target/28516, target/30486 -- fix simplify_plus_minus with ppc{,64} power6 tuning (regression from - 4.1.1-52.el5.2, #247256) - -* Wed Jul 4 2007 Jakub Jelinek 4.1.2-15 -- update from gcc-4_1-branch (-r126008:126302) - - PRs boehm-gc/21940, boehm-gc/21942, target/28307, target/32506, - tree-optimization/31966, tree-optimization/32533 -- merge in redhat/gcc-4_1-jdwp-merge-branch - - JDWP support (Keith Seitz) -- fix OpenMP handling of Fortran POINTER non-array vars (PR fortran/32550) - -* Tue Jun 26 2007 Jakub Jelinek 4.1.2-14 -- update from gcc-4_1-branch (-r125727:126008) - - PRs inline-asm/32109, rtl-optimization/28011, target/32389 -- gomp update from gcc-4_2-branch (-r125917:125918) - - PR middle-end/32362 -- on ppc{,64} when tuning for power6{,x}, try to put the base - register as first operand in instructions to improve - performance (Peter Bergner, #225425, PR middle-end/28690) -- on ppc64 emit nop after a call and disallow sibling calls - if the target function is not defined in the same object file - (David Edelsohn, #245424) -- gomp parallel sections fix and fix for checking whether combined - parallel can be used (PR libgomp/32468) - -* Fri Jun 15 2007 Jakub Jelinek 4.1.2-13 -- update from gcc-4_1-branch (-r124365:125727) - - PRs libfortran/31409, libfortran/31880, libfortran/31964, - rtl-optimization/31691, target/31022, target/31480, target/31701, - target/31876, target/32163, tree-optimization/26998 -- gomp updates from the trunk (-r125541:125542, -r125543:125544) and - from gcc-4_2-branch (-r125184:125185) - - PRs tree-optimization/31769, c++/32177 -- don't set TREE_READONLY on C++ objects that need runtime initialization - (PRs c++/31806, c++/31809) -- fix computation of common pointer type (PR tree-optimization/32139) -- precompute const and pure fn calls inside another fn call arguments - with accumulating outgoing args - (PRs middle-end/32285, tree-optimization/30493) -- fix handling of RESULT_DECLs in points-to analysis - (#243438, PR tree-optimization/32353) -- work around java.lang.reflect.Modifier.INTERPRETED clash with - java.lang.reflect.Modifier.SYNTHETIC (Andrew Haley, #240720) - -* Thu May 3 2007 Jakub Jelinek 4.1.2-12 -- update from gcc-4_1-branch (-r124100:124365) - - PRs c++/30016, c++/30221, middle-end/30761, target/18989, - target/28675, tree-optimization/29446, tree-optimization/31698 -- add default.css Java resource (Tom Fitzsimmons, #237304) -- don't increase alignment of TLS variables too much -- __do_global_dtors_aux hardening -- allow libgomp to be dlopened (PR libgomp/28482) -- speed up and improve libgomp omp_get_num_procs and dynamic - thread count computation -- GOMP_CPU_AFFINITY support -- fix ICE on C++ type passed as OpenMP clause variable (PR c++/31748) - -* Wed Apr 25 2007 Jakub Jelinek 4.1.2-11 -- update from gcc-4_1-branch (-r123951:124100) - - PRs middle-end/31448, preprocessor/30468, target/28623, target/31641 -- Java fixes - - PRs classpath/31626, classpath/31646, #236895 -- fix a couple of translation bugs that could lead to ICEs (#235008) -- fix ICE with #pragma omp parallel inside of a try catch construct - (PR tree-optimization/30558) -- fix OpenMP clause handling in templates (PR c++/31598) - -* Thu Apr 19 2007 Jakub Jelinek 4.1.2-10 -- fix folding of comparisions against min, min+1, max-1, max - (#236711, PR tree-optimization/31632) -- fix _mm_cmpord_ss on i?86/x86_64 (#237067) -- Java proxy fix (Andrew Haley, #236895) - -* Wed Apr 18 2007 Jakub Jelinek 4.1.2-9 -- update from gcc-4_1-branch (-r123462:123951) - - PRs c++/30168, c++/31074, c++/31449, c++/31517, c/31520, middle-end/30729, - target/25448, target/30289, target/30483, target/31361, target/31582, - testsuite/31578 -- fix %%build_java 0 build (#235500) -- fix libjava build on alpha (#236337) -- fix for Java AWT programs that could hang X server (Francis Kung, - PR classpath/31311) -- fix gnu.javax.net.ssl.provider.SSLSocketFactoryImpl (Tom Tromey, #236614) - -* Tue Apr 3 2007 Jakub Jelinek 4.1.2-8 -- update from gcc-4_1-branch (-r123245:123462) - - PRs target/31137, target/31380 -- libjava fixes (PRs classpath/31302, classpath/31303, libgcj/29869) -- java Proxy fix (Andrew Haley, #234836) -- deque::erase fix (Steve LoBasso, Paolo Carlini, #234515) -- fix java font rendering (Francis Kung, #231818) -- fix a regression caused by C++ visibility fixes (Jason Merrill, - PR c++/31187) -- use hidden visibility for non-native java private methods (Andrew Haley) - -* Thu Mar 29 2007 Jakub Jelinek 4.1.2-7 -- make sure boehm-gc doesn't use PROT_EXEC (#202209) -- fix C++ ICE on i ? j : k = (void) 0; (PR c++/30847) - -* Tue Mar 27 2007 Jakub Jelinek 4.1.2-6 -- update from gcc-4_1-branch (-r123011:123245) - - PRs fortran/31184, target/31245, tree-optimization/30590 -- libjava W^X support (Alexandre Oliva, #202209) -- fix gcjh -jni and gjavah -cni (Stepan Kasal, #233349) -- fix C++ accepts invalid bug (Mark Mitchell, PR c++/30863) - -* Sat Mar 17 2007 Jakub Jelinek 4.1.2-5 -- update from gcc-4_1-branch (-r122833:123011) - - PRs debug/29906, middle-end/30364, middle-end/30433, target/31123 -- rebuilt against newer rpm to fix libgcj debuginfo (#232222) - -* Mon Mar 12 2007 Jakub Jelinek 4.1.2-4 -- update from gcc-4_1-branch (-r122219:122833) - - PRs c++/30852, c++/30895, classpath/28550, classpath/30831, - classpath/30906, classpath/30983, fortran/29441, fortran/30400, - libgcj/17002, libgfortran/30910, libgfortran/30918, other/31050, - rtl-optimization/30931, target/30848, tree-optimization/29925 - - reenable memory CSE (Alexandre Oliva, #229366, PR rtl-optimization/30643) -- fix random seed handling with -frepo (Alexandre Oliva, #228769) -- fix fortran OPEN without ACTION on read-only filesystem (#231134) -- fix fortran module writer ICEs on implicit conversions (#231261) - -* Thu Feb 22 2007 Jakub Jelinek 4.1.2-3 -- update from gcc-4_1-branch (-r122163:122219) - - PR ada/30684 -- fix !$omp space space parsing in Fortran -- fix Fortran -ff2c (Tobias Schlueter, #229110, PR fortran/25392) -- add gnu.java.util.ZoneInfo class, use tzdata files for libgcj - timezone stuff (#227888) - -* Tue Feb 20 2007 Jakub Jelinek 4.1.2-2 -- merge from redhat/gcc-4_1-branch-java-merge-20070117 - to get an eclipse based Java 1.5 gcc-java/libgcj -- update from gcc-4_1-branch (-r121962:122163) - - PRs fortran/30478, fortran/30799, middle-end/24427, other/27843, - rtl-optimization/28173, rtl-optimization/28772, - rtl-optimization/29599, rtl-optimization/30787, target/19087, - tree-optimization/30823 - -* Wed Feb 14 2007 Jakub Jelinek 4.1.2-1 -- update from gcc-4_1-branch (-r121738:121962) - - GCC 4.1.2 release - - PRs fortran/24783, testsuite/30649, middle-end/30313 -- fix ICE in dwarf2out with limbo die nodes in namespace context - (Alexandre Oliva, #227376) -- fix a SRA bug with bitfields (Alexandre Oliva, #223576) - -* Sun Feb 11 2007 Jakub Jelinek 4.1.1-57 -- package up ammintrin.h on i386/x86_64 -- fix AMDfam10 testcases (H.J. Lu) -- fix f951 assert accessing memory after free (H.J. Lu, PR fortran/27351) - -* Sat Feb 10 2007 Jakub Jelinek 4.1.1-56 -- update from gcc-4_1-branch (-r121479:121738) - - PRs c++/29487, target/29487, target/30370 -- merge gomp fixes from gcc-4_2-branch (-r121689:121690) - PR c++/30703 -- add AMDfam10 support (Harsha Jagasia, #222897) -- set build_ada to 1 on alpha (#224247) -- regenerate libjava.util.TimeZone data from tzdata2007a (#227888) - -* Fri Feb 2 2007 Jakub Jelinek 4.1.1-55 -- update from gcc-4_1-branch (-r121069:121479) - - PRs c++/28988, fortran/30278, libstdc++/30586, middle-end/29683, - objc/27438 -- add -march=core2 and -mtune=core2 support (Vlad Makarov) -- fix sprintf builtin (PR middle-end/30473) -- fix ICE on invalid __thread register on fields (PR c++/30536) -- ignore install-info errors in scriptlets (#223687) -- rename MNI and mni to SSSE3 and ssse3, keep -m{,no-}mni option and - __MNI__ macro for compatibility - -* Tue Jan 23 2007 Jakub Jelinek 4.1.1-54 -- update from gcc-4_1-branch (-r120507:121069) - - PRs c++/28999, libgfortran/30435, objc/30479, rtl-optimization/29329, - target/30173, testsuite/12325 -- OpenMP fixes (PRs middle-end/27416, middle-end/30421, middle-end/30494) - -* Tue Jan 9 2007 Jakub Jelinek 4.1.1-53 -- fix libgomp testsuite driver (Ulrich Weigand) -- combiner fixes (Richard Sandiford, PR rtl-optimization/25514, - PR rtl-optimization/27736) - -* Fri Jan 5 2007 Jakub Jelinek 4.1.1-52 -- update from gcc-4_1-branch (-r120325:120507) - - PRs c++/30382, middle-end/27826, middle-end/28116, - tree-optimization/30212 - -* Thu Jan 4 2007 Jakub Jelinek 4.1.1-51 -- bootstrap Ada on ppc32 (David Woodhouse) -- fix complex division with -std=c99 or -std=gnu99 (PR c/30360) - -* Wed Jan 3 2007 Jakub Jelinek 4.1.1-50 -- backwards compatibility with old layout of struct _Unwind_Context - (#220627) -- fix preprocessor defines in assembly preprocessed with -std=... - (Steven Bosscher, PR c/25993) -- fix PCH creation with templates (Jason Merrill, PR c++/28217) -- fix dwarf2out ICE (Alexandre Oliva, #217529, PR debug/30189) - -* Tue Jan 2 2007 Jakub Jelinek 4.1.1-49 -- update from gcc-4_1-branch (-r120062:120325) - - PRs debug/26964, fortran/30200, libfortran/30145 -- fix endless recursion in negate_expr/fold_unary (PR middle-end/30286) -- fix cpp problem on empty source files (Tom Tromey, PR preprocessor/30001) -- improve constructor disambiguation (Mark Mitchell, PR c++/28261, - PR c++/29535) -- fix handling of non-NULL attribute on nested functions (Andrew Pinski, - PR tree-opt/30045) -- fix ICE with friend templatized static member function (PR c++/29054) - -* Wed Dec 20 2006 Jakub Jelinek 4.1.1-48 -- update from gcc-4_1-branch (-r119833:120062) - - PRs libstdc++/11953, target/24036 -- fix ia64 EH region boundaries where last br.call in the region - is not at the end of a bundle (#219596, PR target/30230) -- fix DI resp. TImode __sync_*_compare_and_swap on i?86 resp. x86_64 - (Kazu Hirata, #220258, PR target/27266) -- fix asm vs. nested functions or OpenMP (#220250, PRs middle-end/30262, - middle-end/30263) -- fix handling of complex shared OpenMP vars (Andrew Pinski, - PR middle-end/30143) - -* Thu Dec 14 2006 Jakub Jelinek 4.1.1-47 -- fix ia64 prologue generation (Andreas Schwab, #219594, PR target/29166) -- fix ppc64 divdi3 (PR target/30185) - -* Wed Dec 13 2006 Jakub Jelinek 4.1.1-46 -- update from gcc-4_1-branch (-r119654:119833) - - PRs c++/27316, c++/28740, c++/29732, fortran/29820, fortran/29821, - fortran/29912, fortran/29916, fortran/30003, libstdc++/26497, - libstdc++/28125, libstdc++/28265, target/30039 -- fix loop unswitching (Zdenek Dvorak, #219138, PR rtl-optimization/30113) - -* Fri Dec 8 2006 Jakub Jelinek 4.1.1-45 -- update from gcc-4_1-branch (-r119343:119654) - - PRs c++/14329, c++/28284, c++/29632, c++/29728, c++/29729, c++/29730, - c++/29733, c++/30022, libfortran/29810 -- add protoize.1 and unprotoize.1 man pages (#188914) -- fix RTL sharing problem in combine (#218603, PR rtl-optimization/27761) -- additions to libgcj-src (Ben Konrath, PR libgcj/30110) - -* Fri Dec 1 2006 Jakub Jelinek 4.1.1-44 -- fix OpenMP loops with 0 iterations (PR libgomp/29947) - -* Thu Nov 30 2006 Jakub Jelinek 4.1.1-43 -- update from gcc-4_1-branch (-r119167:119343) - - PRs c++/29022, fortran/29391, fortran/29489, fortran/29982, - libgfortran/29936, target/29319, tree-opt/29964 -- fix -fopenmp ICEs on omp constructs where the body never returns - (PR middle-end/29965) - -* Fri Nov 24 2006 Jakub Jelinek 4.1.1-42 -- update from gcc-4_1-branch (-r119021:119167) - - fix s390{,x} __sync_* builtins -- fix ppc64 libffi unwind info - -* Thu Nov 23 2006 Jakub Jelinek 4.1.1-41 -- fix ICE with -fopenmp -fexceptions on ia64 (#216988, PR c/29955) -- fix parsing of C++ if/switch/etc. conditions (PR c++/29886) - -* Wed Nov 22 2006 Jakub Jelinek 4.1.1-40 -- disallow multiple vector_size attributes (PR c/29736) -- don't ICE on main returning int with vector_size attribute (PR c++/29735) -- hide symbols that shouldn't be exported from libgcj.so (GC_*, ffi_*, - lt_* etc., #216120) - -* Tue Nov 20 2006 Jakub Jelinek 4.1.1-39 -- update from gcc-4_1-branch (-r118891:119021) - - PRs middle-end/26306, middle-end/29753, target/18553, target/29114, - target/29449, tree-opt/29788, tree-optimization/28888 -- fix some C++ vector conversions (PR c++/29734) -- fix C++ ICE with value dependent const brace enclosed initializer - (PR c++/29570) - -* Thu Nov 16 2006 Jakub Jelinek 4.1.1-38 -- update from gcc-4_1-branch (-r118805:118891) - - PRs rtl-optimization/29797 -- fix forwprop switch optimization (PR middle-end/29584) -- remove old *34* provides (#215839) - -* Tue Nov 14 2006 Jakub Jelinek 4.1.1-37 -- fix up check_effective_target_fopenmp tcl test for the testsuite - framework backport changes - -* Tue Nov 14 2006 Jakub Jelinek 4.1.1-36 -- update from gcc-4_1-branch (-r118571:118805) - - PRs c++/29106, c++/29518, fortran/24518, fortran/29216, fortran/29314, - fortran/29371, fortran/29387, fortran/29392, fortran/29490, - fortran/29565, fortran/29630, fortran/29679, fortran/29713, - middle-end/21032, testsuite/28703, tree-opt/28545 -- honor initial conditions and variable types in conversion to perfect - nesting for -ftree-loop-linear optimizations (#209297, - PR tree-optimization/29581) - -* Sat Nov 11 2006 Jakub Jelinek 4.1.1-35 -- fix libgcj_bc.so dummy lib on i?86/x86_64/ia64/s390/s390x - -* Sat Nov 11 2006 Jakub Jelinek 4.1.1-34 -- fix libgcj_bc.so symlink and dummy lib placement to avoid 64-bit gcc-java - requiring 32-bit libc or vice versa -- fix ICE on Fortran !$omp continued line followed by !$ conditional - line (PR fortran/29759) - -* Wed Nov 8 2006 Jakub Jelinek 4.1.1-33 -- update from gcc-4_1-branch (-r118468:118571) - - PRs fortran/24398, fortran/27701, fortran/29098, fortran/29115, - fortran/29211, fortran/29232, fortran/29364, fortran/29373, - fortran/29407, libfortran/29627, tree-optimization/29610 -- fix java.net.SocketPermission (Gary Benson, #212739) -- fix java.util.regex.Matcher (Ito Kazumitsu, #183698, PR classpath/29703) -- fix # handling in libcpp when switching - from system header to non-system header or main source - (PR preprocessor/29612) -- fix gcc configury detection of ld COMDAT support -- move *.so symlinks from libgcj-devel to gcc-java (#214195) - -* Sat Nov 4 2006 Jakub Jelinek 4.1.1-32 -- update from gcc-4_1-branch (-r118025:118468) - - PRs bootstrap/28400, fortran/29067, libgfortran/29563, middle-end/29250, - rtl-optimization/28970, rtl-optimization/29631, target/29377, - tree-optimization/27891 - - fix infinite recursion in make_vector_type (#212848, - PR tree-optimization/29637) -- merge gomp fixes from the trunk (-r118133:118134) - - PR fortran/29629 -- fix A < 0 ? : 0 optimization (#213821, PR middle-end/29695) -- fix ICE in gfc_get_derived_type (Paul Thomas, #212936, PR fortran/29641) - -* Wed Oct 25 2006 Jakub Jelinek 4.1.1-31 -- update from gcc-4_1-branch (-r117629:118025) - - PRs c++/20647, c++/25878, c++/26884, c++/27787, c++/28506, c++/28906, - c++/29020, c++/29175, c++/29318, c++/29408, c++/29435, c/27184, - c/29092, fortran/25091, fortran/25092, fortran/29284, fortran/29321, - fortran/29322, fortran/29393, fortran/29403, gcov/profile/26570, - inline-asm/29119, middle-end/20491, rtl-optimization/29323, - target/25519, target/28825, target/28960, target/29300, - testsuite/28829, tree-optimization/26969 - - fix libstdc++.so backwards compatibility with GCC 3.4.x (#210452) -- fix always_inline attribute at -O0 (Jan Hubicka, PR middle-end/29241) -- fix function local static vars with used attribute (Jan Hubicka, - Richard Guenther, PR middle-end/29299) - -* Wed Oct 11 2006 Jakub Jelinek 4.1.1-30 -- update from gcc-4_1-branch (-r117464:117629) - - PRs c++/28302, c++/28349, c++/28450, c++/29002, libstdc++/29095, - libstdc++/29354, libstdc++/29368, target/28490 -- fix gnu.xml.transform.TransformerImpl (Tom Tromey, #208854, - PR classpath/29362) - -* Fri Oct 6 2006 Jakub Jelinek 4.1.1-29 -- update from gcc-4_1-branch (-r117266:117464) - - PRs bootstrap/26764, bootstrap/27334, c++/29080, c++/29138, c++/29226, - c/27489, c/27490, debug/28980, fortran/18791, libfortran/18791, - middle-end/28862, objc/29195, other/25035, tree-opt/28952 - - fix s390{,x} address legitimization with TLS symbols (Angel Nunez - Mencias) -- fix -fno-automatic with Fortran auto arrays with non-constant size - (#203928, PR fortran/28415) -- fix char and short __sync_fetch_and_XXX (PR target/28924) -- fix emitting of vector constants with incomplete initializers (PR c/29091) -- fix ICE with multiple exit loop and -ftree-loop-linear - (#208935, PR tree-optimization/29290) - -* Sat Sep 30 2006 Jakub Jelinek 4.1.1-28 -- fix i386/x86_64 legitimize_pic_address with TLS symbols (PR target/29198) -- fix gimplification of post-increment with side-effects on the inner - expression (PR c/29154) - -* Thu Sep 28 2006 Jakub Jelinek 4.1.1-27 -- update from gcc-4_1-branch (-r117225:117266) - - PR target/29230 -- restrict single entry mem{{,p}cpy,move,set} optimization to vars - and components thereof (PR middle-end/29272) -- fix java.util.Locale (Tom Tromey, #201712) - -* Tue Sep 26 2006 Jakub Jelinek 4.1.1-26 -- update from gcc-4_1-branch (-r117162:117225) - - PRs classpath/28661, libgcj/29178, libstdc++/29179, libstdc++/29224 - - fix unwind info generation, broken in gcc-4.1.1-21 - (Roger Sayle, PR debug/29132) - -* Sat Sep 23 2006 Jakub Jelinek 4.1.1-25 -- update from gcc-4_1-branch (-r117069:117162) - - PRs c++/28996, c++/29087, middle-end/26983 -- fix -fprofile-use with anonymous namespaces (Jan Hubicka, PRs profile/20815, - profile/26399) -- fix #pragma omp parallel and #pragma omp section that call nested - functions (PRs middle-end/25261, middle-end/28790) - -* Wed Sep 20 2006 Jakub Jelinek 4.1.1-24 -- update from gcc-4_1-branch (-r117000:117069) - - PRs fortran/21918, fortran/28526, fortran/28817, fortran/29060, - fortran/29101, java/28754, java/28892, java/29013, - middle-end/27226, middle-end/4520, tree-optimization/28900 -- fix java.utils.logging.Logger (Mark Wielaard, #207111) -- fix gnu.javax.net.ssl.provider.SSLSocket (Tom Tromey, #206904) -- add support for Fortran OpenMP conditional inclusion (PR fortran/29097) -- add some -D_FORTIFY_SOURCE compile time strncat buffer overflow checks - -* Sun Sep 17 2006 Jakub Jelinek 4.1.1-23 -- update from gcc-4_1-branch (-r116958:117000) - - PRs fortran/29051, target/28946 -- fix single entry mem{{,p}cpy,move,set} optimization (Andrew Pinski, - PR tree-opt/29059) - -* Fri Sep 15 2006 Jakub Jelinek 4.1.1-22 -- update from gcc-4_1-branch (-r116778:116958) - - PRs ada/21952, ada/29025, c++/26957, fortran/28890, fortran/28923, - fortran/28959, libfortran/28890, libfortran/28923, libfortran/28947, - middle-end/28493, other/23541, other/26507, rtl-optimization/28243, - rtl-optimization/28634, rtl-optimization/28636, rtl-optimization/28726, - target/13685, target/26504, target/27537, target/27681, target/28621, - target/29006, testsuite/28950, testsuite/29007 -- fix #pragma omp atomic (PR middle-end/28046) -- speed up dominance frontiers calculation (Jan Hubicka) -- add README.libgcjwebplugin.so to libgcj %%doc (Tom Fitzsimmons) -- fix gcc-gfortran %%doc (#206333) -- fix gcc-debuginfo (#205500) - -* Fri Sep 8 2006 Jakub Jelinek 4.1.1-21 -- update from gcc-4_1-branch (-r116498:116778) - - PRs c++/19809, c++/26102, c++/26195, c++/26571, c++/26670, c++/26671, - c++/26696, c++/26917, c++/28860, c++/28878, c++/28886, fortran/20067, - fortran/24866, fortran/25077, fortran/25102, fortran/28005, - fortran/28873, fortran/28885, fortran/28908, libfortran/28005, - middle-end/27724, middle-end/28814, other/22313, - rtl-optimization/27616, rtl-optimization/28386, target/24367 -- add primitive class object symbols to libgcj_bc.so (Tom Tromey, - PR libgcj/28698) -- optimize single entry memcpy/mempcpy/memmove/memset already at the tree - level (PR middle-end/27567) -- add dependencies to *-devel subpackages, so that e.g. ppc64 - libstdc++-devel requires 64-bit libstdc++, similarly for libgcj-devel - and libgcj/zlib-devel - -* Fri Aug 25 2006 Jakub Jelinek 4.1.1-20 -- update from gcc-4_1-branch (-r116389:116498) - - PRs c++/28056, c++/28058, c++/28595, c++/28853, c/27558, - c/27893, c/28299, c/28418, driver/27622, libfortran/28452, - libfortran/28542, target/27075 -- optimize A / (B << N) where A and B is positive and B is a power of two - (Alan Modra, #195924, PR rtl-optimization/26026) -- fix attribute handling in C++ (Jason Merrill, #204277, #204035, - PRs c++/28659, c++/28863) - -* Fri Aug 25 2006 Jakub Jelinek 4.1.1-19 -- update from gcc-4_1-branch (-r116223:116389) - - PRs c++/23372, c++/27714, c++/28346, c++/28385, fortran/18111, - fortran/20886, fortran/25217, fortran/25828, fortran/28425, - fortran/28496, fortran/28601, fortran/28630, fortran/28660, - fortran/28735, fortran/28762, fortran/28771, fortran/28788, - libstdc++/28765, target/27565 -- another big Java merge from the trunk (Tom Fitzsimmons) -- fix ICE in add_reg_br_prob_note (PR middle-end/28683) - -* Fri Aug 18 2006 Jakub Jelinek 4.1.1-18 -- update from gcc-4_1-branch (-r116176:116223) - - PRs c++/28593, c++/28606, c++/28710, c/27697, middle-end/20256, - middle-end/25211, middle-end/26435 -- don't waste .rodata space when copying from const array with large - entries (PR middle-end/28755) -- fix --combine with anonymous structures in unions (Alexandre Oliva, - PR c/27898) -- rebuilt with latest binutils to pick up 64K -z commonpagesize on ppc* - (#203001) - -* Wed Aug 16 2006 Jakub Jelinek 4.1.1-17 -- update from gcc-4_1-branch (-r116082:116176) - - PRs c++/27894, c++/28677, c/28649, middle-end/28075, - rtl-optimization/23454 -- merge gomp fixes from the trunk (-r116152:116154) - - PRs middle-end/28713, middle-end/28724 -- add -march=geode and -mtune=geode support (Vlad Makarov) -- use %gs rather than %fs register on x86_64 with - -mcmodel=kernel -fstack-protector (Arjan van de Ven, #202842) -- don't create jar manifest in libgcj-tools-4.*.jar (#200887) -- externally_visible attribute fixes (Jan Hubicka, PRs c/25795, c++/27369) -- --combine fixes for aggregates with attributes (PRs c/28706, c/28712) -- further externally_visible attr fixes (PR c/28744) -- fix invalid token pasting error message (PR preprocessor/28709) -- obey OpenMP 2.5 chapter 4 env var requirements (whitespace rules - and case insensitivity in the env vars; PR libgomp/28725) -- fix OPT_FLAGS on sparc - -* Sat Aug 12 2006 Jakub Jelinek 4.1.1-16 -- fix multilib conflict in libgcj-tools-4.1.1.jar (#200887) - -* Fri Aug 11 2006 Jakub Jelinek 4.1.1-15 -- update from gcc-4_1-branch (-r115877:116082) - - PRs c++/27508, c++/28148, c++/28250, c++/28256, c++/28257, c++/28259, - c++/28267, c++/28274, c++/28347, c++/28432, c++/28557, c++/28594, - c++/28637, c++/28638, c++/28639, c++/28640, c++/28641, c/27721, - c/28136, fortran/27981, fortran/28548, fortran/28590, - middle-end/28651, rtl-optimization/27291, rtl-optimization/28221, - target/27566, target/27827 -- fix Fortran ICE with nested function (Paul Thomas, #200618, - PR fortran/28600) - -* Wed Aug 2 2006 Jakub Jelinek 4.1.1-14 -- update from gcc-4_1-branch (-r115644:115877) - - PRs c++/27572, c++/27668, c++/27962, c++/28025, c++/28258, c++/28523, - debug/25468, fortran/20892, fortran/27874, fortran/28129, - fortran/28439, libgfortran/28335, libgfortran/28339, - middle-end/28402, middle-end/28403, middle-end/28473, - target/27287, target/28247, tree-optimization/26719, - tree-optimization/27639, tree-optimization/27795, - tree-optimization/28029, tree-optimization/28238 -- BuildRequire firefox-devel instead of mozilla-devel - -* Tue Jul 25 2006 Alexandre Oliva 4.1.1-13 -- backport fix by Andrew Haley for build problems related with the - bootstrap ClassLoader - -* Mon Jul 24 2006 Alexandre Oliva 4.1.1-12 -- backport fix by Mark Wielaard for NullPointerException in GCJ web plugin - -* Fri Jul 21 2006 Jakub Jelinek 4.1.1-11 -- update from gcc-4_1-branch (-r115565:115644) - - PRs target/27363, c++/27495, c++/28048, c++/28235, c++/28337, c++/28338, - c++/28363, middle-end/28283 -- turn back autoprov/autoreq on gcc-java, instead disable it on - libgcj-devel - -* Thu Jul 20 2006 Jakub Jelinek 4.1.1-10 -- Java backport of from GCC trunk (Tom Tromey, Bryce McKinlay) - - include libgcjwebplugin.so, gappletviewer, gjarsigner, gkeytool -- C++ visibility changes (Jason Merrill, PRs c++/28407, c++/28409) - -* Tue Jul 18 2006 Jakub Jelinek 4.1.1-9 -- update from gcc-4_1-branch (-r115330:115565) - - PRs c++/28016, c++/28051, c++/28249, c++/28291, c++/28294, c++/28304, - c++/28343, c/26993, c/28286, fortran/20844, fortran/20893, - fortran/20903, fortran/25097, fortran/27980, fortran/28201, - fortran/28353, fortran/28384, libstdc++/27878, - tree-optimization/19505, tree-optimization/28162, - tree-optimization/28187 -- fix directory traversal issue in fastjar (Richard Guenther, CVE-2006-3619, - PR fastjar/28359) -- fix ICE on complex assignment in nested fn (Richard Henderson, - PR middle-end/27889) -- fix __builtin_constant_p in initializers (Mark Shinwell, #198849) -- fix tree verification - IDENTIFIER_NODE can be shared (Diego Novillo) -- fix duplicate_eh_regions -- handle > 99 tree dumps in the testsuite - -* Sat Jul 15 2006 Jakub Jelinek 4.1.1-8 -- fix handling of C++ template static data members in anonymous namespace - (PR c++/28370) -- fix Fortran OpenMP handling of !$omp parallel do with lastprivate on the - iteration variable (PR fortran/28390) -- backported reassociation pass rewrite (Daniel Berlin, Jeff Law, - Roger Sayle, Peter Bergner, PRs ada/24994, tree-optimization/26854) -- BuildReq sharutils for uuencode - -* Tue Jul 11 2006 Jakub Jelinek 4.1.1-7 -- update from gcc-4_1-branch (-r115058:115330) - - PRs c++/13983, c++/17519, c++/18681, c++/18698, c++/26577, c++/27019, - c++/27424, c++/27768, c++/27820, c++/28114, fortran/23420, - fortran/23862, fortran/24748, fortran/26801, fortran/27965, - fortran/28081, fortran/28094, fortran/28167, fortran/28174, - fortran/28213, fortran/28237, middle-end/27428, target/28084, - target/28207, tree-optimization/28218 -- use --hash-style=gnu by default -- C++ visibility fixes (Jason Merrill, PRs c++/17470, c++/19134, - c++/21581, c++/21675, c++/25915, c++/26612, c++/26905, c++/26984, - c++/27000, c++/28215, c++/28279) -- fix ppc insvdi_internal2/3 (David Edelsohn, Alan Modra, #197755, - PR target/28170) -- avoid TFmode PRE_INC/PRE_DEC on ppc (David Edelsohn, PR target/28150) - -* Thu Jun 29 2006 Jakub Jelinek 4.1.1-6 -- update from gcc-4_1-branch (-r114766:115058) - - PRs c++/27821, c++/28109, c++/28110, c++/28112, fortran/16206, - fortran/18769, fortran/19310, fortran/19904, fortran/20867, - fortran/20874, fortran/20876, fortran/22038, fortran/25049, - fortran/25050, fortran/25056, fortran/25073, fortran/27554, - fortran/27715, fortran/27784, fortran/27895, fortran/27958, - fortran/28118, fortran/28119, libfortran/27784, libfortran/27895, - libgcj/28178, middle-end/28045, middle-end/28151, target/27082, - target/27861, tree-optimization/27781 -- fix a reload problem that lead sometimes to writes to read-only objects - (Bernd Schmidt, #196736, PR middle-end/26991, PR rtl-optimization/25636) -- ppc -mcpu=power6 initial support (Pete Steinmetz, #195924) - -* Tue Jun 20 2006 Jakub Jelinek 4.1.1-5 -- fix C++ #pragma omp atomic (Mark Mitchell) - -* Mon Jun 19 2006 Jakub Jelinek 4.1.1-4 -- update from gcc-4_1-branch (-r114555:114766) - - PRs bootstrap/22541, c++/21210, c++/26559, c++/27227, c++/27648, - c++/27665, c++/27666, c++/27689, c++/27884, c++/27933, c++/27951, - fortran/27786, java/28024, middle-end/27733, middle-end/27802, - target/27858, tree-optimization/27830 -- merge gomp changes from the trunk (-r114642:114643) - - PR libgomp/28008 -- fix -fmerge-all-constants -- fix #pragma omp critical handling if not --enable-linux-futex - -* Tue Jun 13 2006 Jakub Jelinek 4.1.1-3 -- add BuildRequires for elfutils-devel on ia64 -- fix a reload bug visible on s390x (Andreas Krebbel, #193912, - PR middle-end/27959) - -* Mon Jun 12 2006 Jakub Jelinek 4.1.1-2 -- update from gcc-4_1-branch (-r114107:114555) - - PRs ada/27769, c++/20173, c++/26068, c++/26433, c++/26496, c++/27177, - c++/27385, c++/27447, c++/27451, c++/27601, c++/27713, c++/27716, - c++/27722, c++/27801, c++/27806, c++/27807, c++/27819, c/25161, - c/26818, c/27020, c/27718, fortran/14067, fortran/16943, - fortran/18003, fortran/19015, fortran/19777, fortran/20839, - fortran/20877, fortran/23091, fortran/23151, fortran/24168, - fortran/24558, fortran/25047, fortran/25058, fortran/25082, - fortran/25090, fortran/25098, fortran/25147, fortran/25746, - fortran/26551, fortran/27155, fortran/27320, fortran/27411, - fortran/27449, fortran/27470, fortran/27524, fortran/27552, - fortran/27584, fortran/27613, fortran/27655, fortran/27662, - fortran/27709, fortran/27897, libgcj/26483, libgfortran/24459, - libgfortran/27757, middle-end/27743, middle-end/27793, - target/25758, target/26223, target/27790, target/27842, - testsuite/27705, tree-optimization/26242, tree-optimization/26622 -- merge gomp changes from the trunk (-r114518:114520 and -r114524:114525) - - PRs preprocessor/27746, c/27747, c++/27748, fortran/27916 -- don't generate decls with the same DECL_UID in C++ FE (PR middle-end/27793) - -* Thu May 25 2006 Jakub Jelinek 4.1.1-1 -- update from gcc-4_1-branch (-r113848:114107) - - GCC 4.1.1 release - - PR fortran/27553 -- fix i386/x86_64 -O0 -fpic link failure (#192816, PR target/27758) -- fix gcjh on 64-bit hosts (#192700) -- -fvar-tracking fixes needed for SystemTap (Alexandre Oliva, BZ#2438) - -* Wed May 17 2006 Jakub Jelinek 4.1.0-19 -- update from gcc-4_1-branch (-r113785:113848) - - PRs c++/26757, c++/27339, c++/27491, driver/26885, rtl-optimization/14261, - target/26600, tree-optimization/27603 -- merge gomp changes from the trunk (-r113513:113514, -r113821:113823 and - -r113845:113846) - - PRs middle-end/27415, middle-end/27573 -- optimize handling of large CONSTRUCTORs (Bernd Schmidt, - PR middle-end/27620) - -* Mon May 15 2006 Jakub Jelinek 4.1.0-18 -- update from gcc-4_1-branch (-r113722:113785) - - PRs c++/27315, c++/27581, c++/27582, rtl-optimization/22563 -- merge gomp changes from the trunk (-r113786:113790) - -* Sun May 14 2006 Jakub Jelinek 4.1.0-17 -- make -mtune=z9-109 the default on s390{,x} (#184630) - -* Sat May 13 2006 Jakub Jelinek 4.1.0-16 -- update from gcc-4_1-branch (-r113637:113722) - - PRs bootstrap/26872, c++/27547, fortran/20460, fortran/24549, - middle-end/27384, middle-end/27488, target/26545, target/27158 -- fix libgcj.pc location and content on x86_64, ppc64 and s390x (#185230) -- make __dso_handle const, so that it is added into .data.rel.ro section - in shared libraries -- fix a typo in __builtin_object_size computation (Richard Guenther, - PR tree-optimization/27532) -- fix ICE on -O0 -g if static local variables are in unreachable code blocks - (Jan Hubicka, PR debug/26881) -- fix ICEs with conflicts across abnormal edges (Zdenek Dvorak, - PRs tree-optimization/27283, tree-optimization/27548, - tree-optimization/27549) -- warn about OpenMP section 2.9 region nesting violations -- fix OpenMP fortran array REDUCTION with -fbounds-check (PR fortran/27446) -- fix OpenMP {{FIRST,LAST}PRIVATE,REDUCTION} in orphaned construct on - Fortran dummy argument (PR middle-end/27416) -- fix ICE on #pragma omp for unsigned iteration variable (PR c/27499) - -* Tue May 9 2006 Jakub Jelinek 4.1.0-15 -- update from gcc-4_1-branch (-r113623:113637) - - PR fortran/27378 -- update from trunk (-r109500:109501, -r109670:109671, -r111341:111342, - -r111704:111705, -r112546:112547, -r113111:113112, - -r113339:113341, -r113511:113513) -- fix loop peeling (Zdenek Dvorak, #190039, PR rtl-optimization/27335) - -* Mon May 8 2006 Jakub Jelinek 4.1.0-14 -- update from gcc-4_1-branch (-r113489:113623) - - PRs c++/27422, c++/27427, fortran/24813, fortran/25099, fortran/25681, - fortran/27269, fortran/27324, libfortran/26985, objc/27240, - target/26481, target/26765, tree-optimization/25985, - tree-optimization/27151 -- fix zero size field handling in structalias (Richard Guenther, - PR tree-optimization/27409) -- fix PR tree-optimization/27136 (Richard Guenther) -- fix classification of invalid struct types on x86_64 (Volker Reichelt, - PR target/27421) - -* Wed May 3 2006 Jakub Jelinek 4.1.0-13 -- update from gcc-4_1-branch (-r113416:113489) - - PRs c/25309, target/27374, target/27387, tree-optimization/27364 -- merge gomp changes from trunk (-r113267:113271, -r113411:113412, - -r113452:113456, -r113482:113483, -r113493:113494) - - PR fortran/27395 -- additional gomp fixes (PRs c++/27359, middle-end/27388) -- package SYSCALLS.c.X for protoize (#190047) -- fix gcj -fprofile-arcs -ftest-coverage (Alexandre Oliva, #177450) -- reenable profiledbootstrap -- in 64-bit builds remove 32-bit /usr/lib/lib* libraries from the - buildroots (and similarly on 32-bit builds remove 64-bit /usr/lib64/lib*) - before AutoReq generation (#190541) - -* Mon May 1 2006 Jakub Jelinek 4.1.0-12 -- update from gcc-4_1-branch (-r113242:113416) - - PRs c++/26534, c++/26912, c++/27094, c++/27278, c++/27279, fortran/26017, - libgfortran/20257, libgfortran/27304, libgfortran/27360, - libstdc++/26513, middle-end/26565, middle-end/26869, - rtl-optimization/26685, target/26826 -- merge gomp changes from trunk (-r113255:113256, -r113420:113421) - - PRs libgomp/25865, c/27358 -- assorted gomp fixes (PRs middle-end/27325, middle-end/27310, - middle-end/27328, middle-end/27337, c++/26943) -- fix builtin memset (Alan Modra, PR middle-end/27260, PR middle-end/27095) - -* Tue Apr 25 2006 Jakub Jelinek 4.1.0-11 -- update from gcc-4_1-branch (-r113149:113242) - - PRs c/25875, c/26774, fortran/18803, fortran/25597, fortran/25669, - fortran/26787, fortran/26822, fortran/26834, fortran/27089, - fortran/27113, fortran/27122, fortran/27124, target/21283, - target/26961 -- fix number of iterations computation (Zdenek Dvorak, #189376, - PR tree-optimization/27285) -- fix handling of volatile in the inliner (Andrew Pinski, Richard Guenther, - PR tree-optimization/27236) -- strip useless type conversions in the inliner (Andrew Pinski, - Richard Guenther, PR tree-optimization/27218) - -* Fri Apr 21 2006 Jakub Jelinek 4.1.0-10 -- update from gcc-4_1-branch (-r113110:113149) - - PRs libgcj/21941, libgcj/27170, libgcj/27231, libgfortran/27138, - libstdc++/26424, mudflap/26789 -- improve dir/../-stripping code to support /usr/lib64 and /usr/lib in - separate AFS mountpoints (Alexandre Oliva, #137200) -- fix fortran real(16) transpose and reshape on 32-bit architectures - (PR fortran/26769) -- fix i?86/x86_64 vector extraction (Alexandre Oliva, #187450) -- fix testcase for ppc32 va_arg bug -- fix testsuite log uuencoding -- fix acats timeout framework - -* Thu Apr 20 2006 Jakub Jelinek 4.1.0-9 -- update from gcc-4_1-branch (-r112951:113110) - - PRs c++/10385, c++/26036, c++/26365, c++/26558, classpath/27163, - fortran/26769, libgcj/27171, libgfortran/26766, libstdc++/27162, - middle-end/27095, middle-end/27134, target/27182, - tree-optimization/26643, tree-optimization/26821, - tree-optimization/26854, tree-optimization/27087 -- fix ppc32 va_arg bug (Alan Modra) -- assorted gomp fixes (PRs c++/25874, middle-end/25989, c/25996, c/26171, - middle-end/26913) -- fix pretty printing C array types (#188944) -- fix ICE on unprototyped alloca (PR tree-optimization/26865) -- fix truncation optimization overflow handling (PR middle-end/26729) -- uuencode dejagnu testsuite log files in rpmbuild output - -* Fri Apr 14 2006 Jakub Jelinek 4.1.0-8 -- update from gcc-4_1-branch (-r112825:112951) - - PRs c++/26122, c++/26295, fortran/23634, fortran/25619, fortran/26257, - libgcj/23829, libgcj/26522, libgfortran/26890, target/27006 -- merge gomp changes from trunk (-r112934:112935) - - PR libgomp/26651 -- fix ICE in gomp handling of EH regions (PR middle-end/26823) - -* Mon Apr 10 2006 Jakub Jelinek 4.1.0-7 -- update from gcc-4_1-branch (-r112727:112825) - - PRs fortran/19101, fortran/25031, fortran/26779, fortran/26891, - fortran/26976, target/26508, tree-optimization/26919 -- fix libgfortran printing of REAL*16 for IEEE quad and IBM extended formats - (PR libgfortran/24685) -- fix Fortran -fbounds-check (Roger Sayle, #188409, PR middle-end/22375) -- fix Java StackTraceElement.toString() (Mark Wielaard, #183212, - PR classpath/27081) -- fix -fopenmp -static - -* Thu Apr 6 2006 Jakub Jelinek 4.1.0-6 -- update from gcc-4_1-branch (-r112706:112727) - - PRs classpath/24752, classpath/27028, libgcj/26625, libgcj/27024, - tree-optimization/26996 -- reenable PR c++/19238, c++/21764 fixes, only PR c++/21581 is not - applied -- better fix for Java GC vs. pthread_create (Bryce McKinlay, #182263, - PR libgcj/13212) -- fix objc_push_parm (#185398) -- fix ICE with -feliminate-dwarf2-dups and using namespace (#187787, - PR debug/27057) - -* Wed Apr 5 2006 Jakub Jelinek 4.1.0-5 -- update from gcc-4_1-branch (-r112431:112706) - - PRs bootstrap/26936, bootstrap/27023, classpath/25924, fortran/19303, - fortran/25358, fortran/26816, java/25414, java/26042, java/26858, - libfortran/26735, libgcj/26990, libstdc++/26777, testsuite/25741, - tree-optimization/18527, tree-optimization/26763, - tree-optimization/26830 -- merge gomp changes from trunk (-r112602:112603 and -r112618:112619) -- temporarily revert PR c++/21764, c++/19238, c++/21581 fixes (#187399) - -* Tue Mar 28 2006 Jakub Jelinek 4.1.0-4 -- update from gcc-4_1-branch (-r111697:112431) - - PRs ada/25885, c/26004, fortran/17298, fortran/20935, fortran/20938, - fortran/23092, fortran/24519, fortran/24557, fortran/25045, - fortran/25054, fortran/25075, fortran/25089, fortran/25378, - fortran/25395, fortran/26041, fortran/26054, fortran/26064, - fortran/26107, fortran/26277, fortran/26393, fortran/26716, - fortran/26741, libfortran/21303, libfortran/24903, libgcj/24461, - libgcj/25713, libgcj/26103, libgcj/26688, libgcj/26706, - libgfortran/26499, libgfortran/26509, libgfortran/26554, - libgfortran/26661, libgfortran/26880, libstdc++/26132, - middle-end/18859, middle-end/19543, middle-end/26557, - middle-end/26630, other/26489, target/25917, target/26347, - target/26459, target/26532, target/26607, tree-optimization/26524, - tree-optimization/26587, tree-optimization/26672 - - fix visibility and builtins interaction (Jason Merrill, - PR middle-end/20297, #175442) -- merge gomp changes from trunk (-r112022:112023, -r112250:112251, - -r112252:112253, -r112350:112351 and -r112282:112283) - - PRs c++/26691, middle-end/26084, middle-end/26611, c++/26690, - middle-end/25989 -- support visibility attribute on namespaces (Jason Merrill, PR c++/21764, - PR c++/19238) -- use hidden visibility for anonymous namespaces by default (Jason Merrill, - PR c++/21581) - -* Thu Mar 9 2006 Alexandre Oliva 4.1.0-3 -- make ppc32 TLS PIC code sequences compatible with secure plt (#184446) - (Richard Henderson and myself) - -* Sat Mar 4 2006 Jakub Jelinek 4.1.0-2 -- update from gcc-4_1-branch (-r111570:111697) - - PRs c++/26291, libgfortran/26136, libgfortran/26423, libgfortran/26464, - libstdc++/26526, rtl-optimization/26345, target/19061, target/26453 -- handle DW_CFA_val_{offset,offset_sf,expression} in the libgcc{,_s} unwinder - -* Tue Feb 28 2006 Jakub Jelinek 4.1.0-1 -- update from gcc-4_1-branch (-r111466:111570) - - GCC 4.1.0 release - - PR other/26473 - -* Mon Feb 27 2006 Jakub Jelinek 4.1.0-0.31 -- add __floatuns[sdt]i[sdxt]f exports to libgcc_s.so.1 (Joseph S. Myers) -- fix unwinding through signal frames (#175951, PR other/26208, glibc BZ#300) - -* Mon Feb 27 2006 Jakub Jelinek 4.1.0-0.30 -- update from gcc-4_1-branch (-r111278:111466) - - GCC 4.1.0 RC2 - - PRs fortran/26201, libobjc/26309, rtl-optimization/25603, target/25603 - - fix nested vector shifts (#182047, PR middle-end/26379) -- merge gomp changes from trunk (-r111390:111391, -r111428:111429 and - -r111440:111441) - - PR middle-end/26412 -- fortran MATMUL optimization (Richard Sandiford) -- fortran WHERE optimizations (Roger Sayle) -- x86_64 _mm_monitor fixes (H.J. Lu, PR target/24879) -- add MNI support on i?86/x86_64, -mmni option and header - (H.J Lu) - -* Sun Feb 19 2006 Jakub Jelinek 4.1.0-0.29 -- update from gcc-4_1-branch (-r111179:111278) - - PRs ada/13408, c++/26266, target/22209, target/26189 - - fix ppc32 -fpic reload problem with extenddftf2 pattern - (David Edelsohn, #181625, PR target/26350) - - fix the PR middle-end/26334 patch - -* Fri Feb 17 2006 Jakub Jelinek 4.1.0-0.28 -- update from gcc-4_1-branch (-r110978:111179) - - PRs ada/20753, bootstrap/16787, bootstrap/26053, fortran/25806, - libfortran/15234, libgfortran/25949, middle-end/25335, - target/25259, target/26255 - - fix ICE with shift by -1 (#181586, PR middle-end/26300) -- merge gomp changes from trunk (-r110983:110984, -r111017:111018, - -r111152:111153 and -r111204:111205) - - PRs bootstrap/26161, fortran/26224, libgomp/25938, libgomp/25984 -- don't define _REENTRANT in gthr*.h (#176278, PR libstdc++/11953) -- define _REENTRANT if -pthread and _POSIX_SOURCE if -posix on s390{,x} - and ia64 -- fix ICE with register variable and __asm statement (#181731, - PR middle-end/26334) - -* Tue Feb 14 2006 Alexandre Oliva 4.1.0-0.27 -- merge fix by Zdenek Dvorak for regression introduced by patch for PR - tree-optimization/26209 - -* Tue Feb 14 2006 Jakub Jelinek 4.1.0-0.26 -- update from gcc-4_1-branch (-r110903:110978) - - PRs fortran/20861, fortran/20871, fortran/25059, fortran/25070, - fortran/25083, fortran/25088, fortran/25103, fortran/26038, - fortran/26074, inline-asm/16194, libfortran/24685, - libfortran/25425, target/26141, tree-optimization/26258 -- ABI change - revert to GCC 3.3 and earlier behaviour of - zero sized bitfields in packed structs (Michael Matz, PR middle-end/22275) -- fix valarrays vs. non-POD (Paolo Carlini, Gabriel Dos Reis, - PR libstdc++/25626) -- fix C++ duplicate declspec diagnostics (Volker Reichelt, PR c++/26151) -- fix dominance ICE (Zdenek Dvorak, PR tree-optimization/26209) -- add some new Intel {,e,x}mmintrin.h intrinsics (H.J. Lu) -- speedup bitset<>::_M_copy_to_string (Paolo Carlini) -- fix tree_expr_nonzero_p (Jeff Law) -- fix TRUTH_XOR_EXPR handling in VRP (Jeff Law) - -* Mon Feb 13 2006 Jakub Jelinek 4.1.0-0.25 -- update from gcc-4_1-branch (-r110831:110903) - - PRs c++/16405, c++/24996, fortran/14771, fortran/20858, fortran/25756, - middle-end/22439 -- merge gomp changes from trunk (-r110719:110720, -r110852:110853 and - -r110907:110908) - - PR libgomp/25936 -- fix gimplification of const fn pointers to builting functions - (PR middle-end/26092) -- make sure Fortran length artifical variables aren't SAVEd (Andrew Pinski, - PR fortran/26246) - -* Fri Feb 10 2006 Jakub Jelinek 4.1.0-0.24 -- update from gcc-4_1-branch (-r110632:110831) - - PRs tree-opt/26180, c++/26070, c++/26071, fortran/25577, java/26192, - libfortran/23815, libstdc++/26127, target/23359, target/26109, - tree-opt/25251 -- remove gcc-ppc32, gcc-c++-ppc32, gcc-sparc32 and gcc-c++-sparc32 - subpackages, they do more harm than good. Particularly this time - gcc*ppc32 and gcc*sparc32 defaulted to DFmode long double rather - than TFmode long double - -* Mon Feb 6 2006 Jakub Jelinek 4.1.0-0.23 -- update from gcc-4_1-branch (-r110582:110632) - - PRs classpath/24618, classpath/25141, classpath/25727, fortran/25046, - fortran/26039 -- use LOGICAL*1 instead of LOGICAL*4 for Fortran where temporary masks - (Roger Sayle) -- fix symbol versions in s390 libgcc_s.so.1 -- sparc32 and alpha long double fixes -- BuildRequires libXt-devel -- BuildRequires and Requires glibc-devel >= 2.3.90-35 on arches - that are switching long double - -* Sat Feb 4 2006 Jakub Jelinek 4.1.0-0.22 -- fix ia64 debug info patch -- fix libjava pthread_create wrapper patch - -* Sat Feb 4 2006 Jakub Jelinek 4.1.0-0.21 -- update from gcc-4_1-branch (-r110433:110582) - - PRs c++/25342, c++/25979, fortran/20845, fortran/24266, - fortran/24958, fortran/25072, libstdc++/21554, middle-end/24901, - middle-end/25977, middle-end/26001, target/25864, target/25926, - target/25960 - - put ia64 read-only sections that require runtime relocations - even in -fno-pic code into .data.rel.ro etc. sections - rather than .rodata to avoid DT_TEXTREL binaries - (Richard Henderson, PR target/26090) -- merge gomp changes from trunk (-r110511:110512 and -r110549:110552) -- fix ia64 debug info coverage of epilogues (Alexandre Oliva, PR debug/24444) -- export pthread_create from libgcj.so.7 as a wrapper around - libpthread.so.0's pthread_create that handles GC (Anthony Green, Tom Tromey) -- BC-ABI java lookup fix (Andrew Haley, #179070, #178156) -- on sparc64 emit .register %g7,#ignore instead of .register %g7,#scratch - to avoid problems with TLS or -fstack-protector -- switch to IBM extended format long double by default on ppc and ppc64 -- switch to IEEE 754 quad format long double by default on s390, s390x, - sparc32 and alpha - -* Wed Feb 1 2006 Jakub Jelinek 4.1.0-0.20 -- merge from gomp-20050808-branch (up to -r110392) - - fix PR c++/25874 (Diego Novillo) - -* Wed Feb 1 2006 Jakub Jelinek 4.1.0-0.19 -- s390{,x} long double patch fix for s390x ICEs on test-ldouble - and tst-align2 (Andreas Krebbel) - -* Tue Jan 31 2006 Jakub Jelinek 4.1.0-0.18 -- update from gcc-4_1-branch (-r110317:110433) - - PRs c++/25855, c++/25999, fortran/17911, fortran/18578, fortran/18579, - fortran/20857, fortran/20885, fortran/20895, fortran/25030, - fortran/25835, fortran/25951, java/21428, libgfortran/25835, - target/14798, target/25706, target/25718, target/25947, - target/26018, testsuite/25318 -- add -mtune=generic support for i?86 and x86_64 (Jan Hubicka, H.J. Lu, - Evandro Menezes) -- use -mtune=generic by default if neither -march= nor -mtune= is specified - on command line on i?86 or x86_64 -- updated s390{,x} long double patch, fixing ICEs on s390x glibc build - (Andreas Krebbel, Ulrich Weigand) - -* Sat Jan 28 2006 Jakub Jelinek 4.1.0-0.17 -- update from gcc-4_1-branch (-r110062:110317) - - PRs ada/20548, ada/21317, bootstrap/25859, c++/25552, c++/25856, - c++/25858, c++/25895, c/25892, fortran/18540, fortran/20852, - fortran/20881, fortran/23308, fortran/24276, fortran/25084, - fortran/25085, fortran/25086, fortran/25124, fortran/25416, - fortran/25538, fortran/25625, fortran/25710, fortran/25716, - fortran/25901, fortran/25964, java/25816, other/24829, - rtl-optimization/24626, rtl-optimization/25654, target/24831, - testsuite/24962, testsuite/25590 -- atomic builtin fixes (Richard Henderson) -- -mlong-double-128 support on ppc32 (David Edelsohn, Alan Modra) -- -mlong-double-128 support on s390 and s390x (Andreas Krebbel, - Ulrich Weigand) - -* Sat Jan 21 2006 Jakub Jelinek 4.1.0-0.16 -- update from gcc-4_1-branch (-r109815:110062) - - PRs ada/24533, c++/16829, c++/22136, c++/25836, c++/25854, c/25805, - classpath/20198, fortran/20869, fortran/20875, fortran/25024, - fortran/25631, fortran/25697, fortran/25785, libgcj/25840, - libgfortran/25631, libgfortran/25697, libstdc++/25823, - libstdc++/25824, target/25731, testsuite/25171 - - fix X509Certificate.java (#174708, #177733) - -* Tue Jan 17 2006 Jakub Jelinek 4.1.0-0.15 -- update from gcc-4_1-branch (-r109401:109815) - - PRs c++/24824, c++/25386, c++/25663, c/25682, classpath/25803, - fortran/12456, fortran/20868, fortran/20870, fortran/21256, - fortran/21977, fortran/22146, fortran/24640, fortran/25029, - fortran/25093, fortran/25101, fortran/25486, fortran/25598, - fortran/25730, libgcj/21637, libgcj/23499, libgfortran/25598, - libstdc++/23591, libstdc++/25472, rtl-optimization/24257, - rtl-optimization/25367, rtl-optimization/25662, target/20754, - target/25042, target/25168, testsuite/25728, testsuite/25777, - tree-opt/24365, tree-optimization/23109, tree-optimization/23948, - tree-optimization/24123, tree-optimization/25125 -- update from gomp-20050608-branch (up to -r109816) -- fix ppc32 libffi (#177655) -- fix lookup_conversions_r (#177918) -- define __STDC__ as a normal macro rather than a preprocessor builtin - unless it needs to change its value between system and non-system - headers (PR preprocessor/25717) - -* Fri Jan 6 2006 Jakub Jelinek 4.1.0-0.14 -- update from gcc-4_1-branch (-r109369:109401) - - PR fortran/23675 - - fix Java shutdown hook (Tom Tromey, #165136) -- fix libjava/shlibpath.m4 (PR libgcj/24940) - -* Thu Jan 5 2006 Jakub Jelinek 4.1.0-0.13 -- update from gcc-4_1-branch (-r108957:109369) - - PRs c++/23171, c++/23172, c++/24671, c++/24782, c++/25294, c++/25417, - c++/25439, c++/25492, c++/25625, c++/25632, c++/25633, c++/25634, - c++/25635, c++/25637, c++/25638, c/25183, c/25559, debug/25562, - fortran/18990, fortran/19362, fortran/20244, fortran/20862, - fortran/20864, fortran/20889, fortran/22607, fortran/23152, - fortran/25018, fortran/25053, fortran/25055, fortran/25063, - fortran/25064, fortran/25066, fortran/25067, fortran/25068, - fortran/25069, fortran/25106, fortran/25391, fortran/25532, - fortran/25586, fortran/25587, libgcj/9715, libgcj/19132, - libgfortran/25139, libgfortran/25419, libgfortran/25510, - libgfortran/25550, libgfortran/25594, middle-end/24827, objc/25328, - rtl-optimization/21041, rtl-optimization/25130, target/24342, - target/25554, target/25572, testsuite/25214, testsuite/25441, - testsuite/25442, testsuite/25444, tree-opt/25513 - - create java Package for compiled classes which are linked in but - loaded by the system class loader (Tom Tromey, #176956) - - fix posix_memalign prototype in (#176461) -- update from gomp-20050608-branch (up to -r109349) -- buildrequire libXtst-devel (#176898) -- fix built in path to classmap.db on x86_64, s390x and ppc64 (#176562) -- fix debug info for preprocessed Fortran code (#175071, PR fortran/25324) - -* Fri Dec 22 2005 Jakub Jelinek 4.1.0-0.12 -- make sure GCJFLAGS are propagated down to libjava's configure -- build crt{begin,end}*.o with -fno-asynchronous-unwind-tables - if RPM_OPT_FLAGS include -fasynchronous-unwind-tables -- fix PR c++/25369 (Mark Mitchell) -- fix PR libgfortran/25307 (Jerry DeLisle) - -* Thu Dec 22 2005 Jakub Jelinek 4.1.0-0.11 -- update from gcc-4_1-branch (-r108861:108957) - - PRs debug/25518, fortran/24268, fortran/25423, libgfortran/25463, - rtl-optimization/25196, tree-optimization/24793 -- validate changes in forward copy propagation (PR target/25005) -- fix Java constants constructors on 64-bit big endian arches - (Andrew Haley, PR java/25535) -- fix PR c++/25364 (Mark Mitchell) - -* Wed Dec 21 2005 Jakub Jelinek 4.1.0-0.10 -- update from gcc-4_1-branch (-r108539:108861) - - PRs ada/18659, ada/18819, c++/20552, c++/21228, c++/24278, c++/24915, - fortran/18197, fortran/25458, libgfortran/25039, libgfortran/25264, - libgfortran/25349, libobjc/14382, libstdc++/25421, middle-end/22313, - middle-end/24306, rtl-optimization/23837, rtl-optimization/25224, - rtl-optimization/25310, target/24969, testsuite/25215, - tree-optimization/23838, tree-optimization/24378 -- update from gomp-20050608-branch (up to -r108859) - - fix _Pragma handling (Richard Henderson, PR preprocessor/25240) -- fix reload re-recognition of insns (Alan Modra, PR rtl-optimization/25432) -- don't peephole RTX_FRAME_RELATED_P insns (Andrew Haley, - PR middle-end/25121) - -* Thu Dec 15 2005 Jakub Jelinek 4.1.0-0.9 -- fix OpenMP lastprivate handling for global vars (Aldy Hernandez) -- fix gnu.xml.dom.DomNode's detach method (Caolan McNamara, - PR classpath/25426) -- fix up the #175569 fix (Tom Tromey, #175833, PR java/25429) -- fix strength reduction miscompilation of libgnomecanvas - (#175669, PR rtl-optimization/24899) -- create libgcj-*.jar with -@E options and feed a sorted list to - it rather than relying on filesystem sorting - -* Wed Dec 14 2005 Jakub Jelinek 4.1.0-0.8 -- update from gcc-4_1-branch (-r108414:108539) - - PRs classpath/25389, fortran/23815, fortran/25078, target/25254 -- fix Java ICE on initialized static final var used in case - (Andrew Haley, #175569, PR java/25429) -- fix crash in _Unwind_IteratePhdrCallback (Andrew Haley) -- don't Require alsa-lib-devel, just BuildRequire it - (#175627) -- use .gnu.linkonce.d.rel.ro.* sections for objects that - are constant after relocation processing - -* Mon Dec 12 2005 Jakub Jelinek 4.1.0-0.7 -- update from gcc-4_1-branch (-r108157:108414) - - PRs c++/19317, c++/19397, c++/19762, c++/19764, c++/25010, c++/25300, - c++/25337, debug/24908, fortran/25292, libfortran/25116, - libgcj/25265, target/17828, target/19005, target/23424, - target/25212, target/25258, target/25311, testsuite/20772, - testsuite/24478, testsuite/25167, tree-optimization/25248 -- update from gomp-20050608-branch (up to -r108424) -- add BuildReq for alsa-lib-devel and configure with --disable-dssi -- sort files in libgcj-*.jar and touch them to latest ChangeLog - timestamp, so that libgcj-*.jar is identical across multilib arches -- don't use pushw instruction on i?86, as that leads to ICEs - in def_cfa_1, because negative CFA offsets not multiple of 4 - aren't representable in the unwind and debug info (PR debug/25023, - PR target/25293) -- fix ICEs with x86_64 -mlarge-data-threshold=N and STRING_CSTs - (Jan Hubicka, PR target/24188) -- fix Java ICE with input_filename being unset (Alexandre Oliva, #174912) -- don't accept invalid int x,; in C++ (Petr Machata, PR c++/24907) -- fix Java ICE in do_resolve_class (Andrew Haley, PR java/25366, - PR java/25368) -- make sure g*.dg/compat/struct-layout-1.exp generated tests - don't use arrays with entries aligned more than their size (PR c++/25331) -- don't use -liberty in g++.dg/compat/struct-layout-1.exp tests - -* Wed Dec 7 2005 Jakub Jelinek 4.1.0-0.6 -- allow #pragmas at C struct scope as well as ObjC class scope - (PR c/25246) -- some gomp testcase fixes - -* Wed Dec 7 2005 Jakub Jelinek 4.1.0-0.5 -- update from gcc-4_1-branch (-r107810:108157) - - PRs bootstrap/25207, c++/24103, c++/24138, c++/24173, fortran/15809, - fortran/21302, fortran/23912, java/25283, libfortran/24919, - libgfortran/25149, middle-end/25176, other/13873, target/18580, - target/24108, target/24475, target/24934, target/25199, - testsuite/25247, tree-optimization/24963 -- update from gomp-20050608-branch (up to -r108105) -- -Wstrict-aliasing C++ support (Richard Guenther, Dirk Mueller, - Paolo Carlini, PRs c++/14024, libstdc++/24975) -- fix mark_used_regs regression (Andreas Krebbel, PR rtl-optimization/24823) -- fix reload ICE (Kaz Kojima, PR target/24982) -- fix PPC ICE on Linux kernel (Paolo Bonzini, PR target/24982) -- fix s390{,x} shifts with shift count ANDed with constant mask - (Andreas Krebbel, PR target/25268) -- s390{,x} atomic builtins enhancements (Adrian Straetling) - -* Thu Dec 1 2005 Jakub Jelinek 4.1.0-0.4 -- update from gcc-4_1-branch (-r107618:107810) - - PRs c++/21123, c++/21166, fortran/24223, fortran/24705, java/18278, - libgfortran/25109, middle-end/20109, middle-end/25120, - middle-end/25158, rtl-opt/24930 -- use %%{_tmppath} in BuildRoot (#174594) -- require libgomp in gcc subpackage -- fix Java .so symlinks - -* Tue Nov 29 2005 Jakub Jelinek 4.1.0-0.3 -- fix IA-64 local-exec TLS handling -- fix IA-64 __sync_fetch_and_{sub,xor,...} - -* Mon Nov 28 2005 Jakub Jelinek 4.1.0-0.2 -- update from gcc-4_1-branch (-r107462:107618) - - PRs fortran/24917, libgcj/25016, libgfortran/24945, middle-end/21309, - middle-end/25022, libfortran/24991 -- update from gomp-20050608-branch (up to -r107619) - - fix omp_get_wti{me,ck} on older kernels -- ppc32 EH fix -- fix #pragma omp atomic -- resurrected multi32 hack for ppc32 and sparc32 - -* Thu Nov 24 2005 Jakub Jelinek 4.1.0-0.1 -- initial 4.1 package, using newly created redhat/gcc-4_1-branch diff --git a/gcc41-build-id.patch b/gcc43-build-id.patch similarity index 100% rename from gcc41-build-id.patch rename to gcc43-build-id.patch diff --git a/gcc41-c++-builtin-redecl.patch b/gcc43-c++-builtin-redecl.patch similarity index 100% rename from gcc41-c++-builtin-redecl.patch rename to gcc43-c++-builtin-redecl.patch diff --git a/gcc41-ia64-libunwind.patch b/gcc43-ia64-libunwind.patch similarity index 100% rename from gcc41-ia64-libunwind.patch rename to gcc43-ia64-libunwind.patch diff --git a/gcc43-java-nomulti.patch b/gcc43-java-nomulti.patch new file mode 100644 index 0000000..f07ead8 --- /dev/null +++ b/gcc43-java-nomulti.patch @@ -0,0 +1,44 @@ +--- libjava/configure.ac.jj 2007-12-07 17:55:50.000000000 +0100 ++++ libjava/configure.ac 2007-12-07 18:36:56.000000000 +0100 +@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode, + [allow rebuilding of .class and .h files])) + AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes) + ++AC_ARG_ENABLE(libjava-multilib, ++ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib])) ++if test "$enable_libjava_multilib" = no; then ++ multilib=no ++ ac_configure_args="$ac_configure_args --disable-multilib" ++fi ++ + # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX. + GCC_NO_EXECUTABLES + +--- libjava/configure.jj 2007-12-07 17:55:50.000000000 +0100 ++++ libjava/configure 2007-12-07 18:39:58.000000000 +0100 +@@ -1018,6 +1018,8 @@ Optional Features: + --enable-gconf-peer compile GConf native peers for util.preferences + --enable-java-maintainer-mode + allow rebuilding of .class and .h files ++ --enable-libjava-multilib ++ build libjava as multilib + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-maintainer-mode enable make rules and dependencies not useful +@@ -1848,6 +1850,16 @@ else + fi + + ++# Check whether --enable-libjava-multilib was given. ++if test "${enable_libjava_multilib+set}" = set; then ++ enableval=$enable_libjava_multilib; ++fi ++ ++if test "$enable_libjava_multilib" = no; then ++ multilib=no ++ ac_configure_args="$ac_configure_args --disable-multilib" ++fi ++ + # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX. + + diff --git a/gcc43-libjava-test.patch b/gcc43-libjava-test.patch new file mode 100644 index 0000000..957796d --- /dev/null +++ b/gcc43-libjava-test.patch @@ -0,0 +1,22 @@ +--- libjava/testsuite/Makefile.am 2007-02-07 13:07:16.000000000 +0100 ++++ libjava/testsuite/Makefile.am 2007-12-08 10:58:02.000000000 +0100 +@@ -43,7 +43,7 @@ if JAVA_MAINTAINER_MODE + testdep="libjava.loader/MyLoader.java";; \ + libjava.jni/register2.java) \ + ;; \ +- libjava.jni/*.java) \ ++ libjava.jni/*.java|libjava.jvmti/interp/*.java) \ + genheader=-jni;; \ + libjava.jvmti/*.java|libjava.cni/*.java) \ + genheader=-cni;; \ +--- libjava/testsuite/Makefile.in 2007-09-04 23:09:37.000000000 +0200 ++++ libjava/testsuite/Makefile.in 2007-12-08 10:58:25.000000000 +0100 +@@ -558,7 +558,7 @@ compile-tests: + @JAVA_MAINTAINER_MODE_TRUE@ testdep="libjava.loader/MyLoader.java";; \ + @JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/register2.java) \ + @JAVA_MAINTAINER_MODE_TRUE@ ;; \ +-@JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/*.java) \ ++@JAVA_MAINTAINER_MODE_TRUE@ libjava.jni/*.java|libjava.jvmti/interp/*.java) \ + @JAVA_MAINTAINER_MODE_TRUE@ genheader=-jni;; \ + @JAVA_MAINTAINER_MODE_TRUE@ libjava.jvmti/*.java|libjava.cni/*.java) \ + @JAVA_MAINTAINER_MODE_TRUE@ genheader=-cni;; \ diff --git a/gcc41-ppc32-retaddr.patch b/gcc43-ppc32-retaddr.patch similarity index 100% rename from gcc41-ppc32-retaddr.patch rename to gcc43-ppc32-retaddr.patch diff --git a/gcc41-ppc64-ia64-GNU-stack.patch b/gcc43-ppc64-ia64-GNU-stack.patch similarity index 61% rename from gcc41-ppc64-ia64-GNU-stack.patch rename to gcc43-ppc64-ia64-GNU-stack.patch index 655f0fe..d49f2b9 100644 --- a/gcc41-ppc64-ia64-GNU-stack.patch +++ b/gcc43-ppc64-ia64-GNU-stack.patch @@ -6,17 +6,17 @@ * config/ia64/ia64.c (ia64_linux_file_end): new. * config/ia64/linux.h (TARGET_ASM_FILE_END): Use ia64_linux_file_end. ---- gcc/config/rs6000/rs6000.c.jj 2007-06-27 12:10:19.000000000 +0200 -+++ gcc/config/rs6000/rs6000.c 2007-08-27 19:27:24.000000000 +0200 -@@ -638,6 +638,7 @@ static void rs6000_file_start (void); - static unsigned int rs6000_elf_section_type_flags (tree, const char *, int); +--- gcc/config/rs6000/rs6000.c.jj 2007-12-07 18:41:08.000000000 +0100 ++++ gcc/config/rs6000/rs6000.c 2007-12-07 18:42:12.000000000 +0100 +@@ -746,6 +746,7 @@ static void rs6000_file_start (void); + static int rs6000_elf_reloc_rw_mask (void); static void rs6000_elf_asm_out_constructor (rtx, int); static void rs6000_elf_asm_out_destructor (rtx, int); +static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED; - static void rs6000_elf_select_section (tree, int, unsigned HOST_WIDE_INT); - static void rs6000_elf_unique_section (tree, int); - static void rs6000_elf_select_rtx_section (enum machine_mode, rtx, -@@ -18896,6 +18897,20 @@ rs6000_elf_declare_function_name (FILE * + static void rs6000_elf_asm_init_sections (void); + static section *rs6000_elf_select_rtx_section (enum machine_mode, rtx, + unsigned HOST_WIDE_INT); +@@ -20418,6 +20419,20 @@ rs6000_elf_declare_function_name (FILE * } ASM_OUTPUT_LABEL (file, name); } @@ -37,9 +37,9 @@ #endif #if TARGET_XCOFF ---- gcc/config/rs6000/linux64.h.jj 2006-11-08 17:53:15.000000000 +0100 -+++ gcc/config/rs6000/linux64.h 2007-08-27 19:25:09.000000000 +0200 -@@ -549,7 +549,7 @@ while (0) +--- gcc/config/rs6000/linux64.h.jj 2007-12-07 17:18:06.000000000 +0100 ++++ gcc/config/rs6000/linux64.h 2007-12-07 18:41:21.000000000 +0100 +@@ -504,7 +504,7 @@ extern int dot_symbols; #undef DRAFT_V4_STRUCT_RET #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT) @@ -48,8 +48,8 @@ #define TARGET_POSIX_IO ---- gcc/config/ia64/linux.h.jj 2006-07-14 18:00:58.000000000 +0200 -+++ gcc/config/ia64/linux.h 2007-08-27 19:21:12.000000000 +0200 +--- gcc/config/ia64/linux.h.jj 2007-12-07 18:17:43.000000000 +0100 ++++ gcc/config/ia64/linux.h 2007-12-07 18:41:21.000000000 +0100 @@ -5,7 +5,7 @@ #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); @@ -59,19 +59,19 @@ /* This is for -profile to use -lc_p instead of -lc. */ #undef CC1_SPEC ---- gcc/config/ia64/ia64.c.jj 2007-01-05 23:54:11.000000000 +0100 -+++ gcc/config/ia64/ia64.c 2007-08-27 19:21:43.000000000 +0200 -@@ -246,6 +246,8 @@ static void ia64_hpux_add_extern_decl (t - ATTRIBUTE_UNUSED; - static void ia64_hpux_file_end (void) +--- gcc/config/ia64/ia64.c.jj 2007-12-07 15:41:58.000000000 +0100 ++++ gcc/config/ia64/ia64.c 2007-12-07 18:43:18.000000000 +0100 +@@ -262,6 +262,8 @@ static section *ia64_select_rtx_section + static void ia64_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; + static unsigned int ia64_section_type_flags (tree, const char *, int); +static void ia64_linux_file_end (void) + ATTRIBUTE_UNUSED; static void ia64_init_libfuncs (void) ATTRIBUTE_UNUSED; static void ia64_hpux_init_libfuncs (void) -@@ -9096,4 +9098,13 @@ ia64_invalid_binary_op (int op ATTRIBUTE - return NULL; +@@ -9957,4 +9959,13 @@ ia64_c_mode_for_suffix (char suffix) + return VOIDmode; } +static void diff --git a/gcc43-pr27898.patch b/gcc43-pr27898.patch new file mode 100644 index 0000000..172bb81 --- /dev/null +++ b/gcc43-pr27898.patch @@ -0,0 +1,16 @@ +2006-08-18 Jakub Jelinek + + PR c/27898 + * gcc.dg/pr27898.c: New test. + +--- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200 ++++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200 +@@ -0,0 +1,8 @@ ++/* PR c/27898 */ ++/* { dg-do compile } */ ++/* { dg-options "--combine" } */ ++/* { dg-additional-sources "pr27898.c" } */ ++ ++union u { struct { int i; }; }; ++ ++extern int foo (union u *); diff --git a/gcc41-pr32139.patch b/gcc43-pr32139.patch similarity index 100% rename from gcc41-pr32139.patch rename to gcc43-pr32139.patch diff --git a/gcc43-pr32636.patch b/gcc43-pr32636.patch new file mode 100644 index 0000000..4222ddf --- /dev/null +++ b/gcc43-pr32636.patch @@ -0,0 +1,25 @@ +2007-12-11 Jakub Jelinek + + PR rtl-optimization/32636 + * df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx + regno in entry_block_defs even if HAVE_prologue && epilogue_completed. + +--- gcc/df-scan.c.jj 2007-10-26 13:45:44.000000000 +0200 ++++ gcc/df-scan.c 2007-12-11 22:24:21.000000000 +0100 +@@ -3530,12 +3530,12 @@ df_get_entry_block_def_set (bitmap entry + bitmap_set_bit (entry_block_defs, STATIC_CHAIN_REGNUM); + #endif + #endif +- +- r = targetm.calls.struct_value_rtx (current_function_decl, true); +- if (r && REG_P (r)) +- bitmap_set_bit (entry_block_defs, REGNO (r)); + } + ++ r = targetm.calls.struct_value_rtx (current_function_decl, true); ++ if (r && REG_P (r)) ++ bitmap_set_bit (entry_block_defs, REGNO (r)); ++ + if ((!reload_completed) || frame_pointer_needed) + { + /* Any reference to any pseudo before reload is a potential diff --git a/gcc41-pr33763.patch b/gcc43-pr33763.patch similarity index 82% rename from gcc41-pr33763.patch rename to gcc43-pr33763.patch index 8f111ba..9e9c90d 100644 --- a/gcc41-pr33763.patch +++ b/gcc43-pr33763.patch @@ -1,18 +1,18 @@ -2007-10-16 Jakub Jelinek +2007-11-06 Jakub Jelinek PR tree-optimization/33763 * gcc.dg/pr33763.c: New test. - * g++.dg/opt/inline12.C: New test. + * g++.dg/opt/inline13.C: New test. -2007-10-14 Jan Hubicka +2007-11-06 Jan Hubicka PR tree-optimization/33763 * tree-inline.c (expand_call_inline): Silently ignore always_inline attribute for redefined extern inline functions. ---- gcc/tree-inline.c.jj 2007-09-25 12:23:05.000000000 +0200 -+++ gcc/tree-inline.c 2007-10-16 15:27:51.000000000 +0200 -@@ -2059,6 +2059,12 @@ expand_call_inline (basic_block bb, tree +--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100 ++++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100 +@@ -2582,6 +2582,12 @@ expand_call_inline (basic_block bb, tree if (!cgraph_inline_p (cg_edge, &reason)) { if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) @@ -25,8 +25,8 @@ /* Avoid warnings during early inline pass. */ && (!flag_unit_at_a_time || cgraph_global_info_ready)) { ---- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-10-16 15:20:41.000000000 +0200 -+++ gcc/testsuite/gcc.dg/pr33763.c 2007-10-16 15:20:35.000000000 +0200 +--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100 ++++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100 @@ -0,0 +1,60 @@ +/* PR tree-optimization/33763 */ +/* { dg-do compile } */ @@ -88,8 +88,8 @@ +{ + return inl (x, y); +} ---- gcc/testsuite/g++.dg/opt/inline12.C.jj 2007-10-16 15:26:01.000000000 +0200 -+++ gcc/testsuite/g++.dg/opt/inline12.C 2007-10-16 15:26:20.000000000 +0200 +--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100 ++++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100 @@ -0,0 +1,60 @@ +// PR tree-optimization/33763 +// { dg-do compile } diff --git a/gcc43-pr34427.patch b/gcc43-pr34427.patch index 1f64723..ac6cf71 100644 --- a/gcc43-pr34427.patch +++ b/gcc43-pr34427.patch @@ -26,7 +26,7 @@ push_char (dtp, c); -@@ -1141,13 +1136,6 @@ parse_real (st_parameter_dt *dtp, void * +@@ -1141,13 +1136,7 @@ parse_real (st_parameter_dt *dtp, void * exp2: if (!isdigit (c)) @@ -37,10 +37,11 @@ - goto bad; - } - - goto bad; ++ goto bad; push_char (dtp, c); -@@ -1178,41 +1166,6 @@ parse_real (st_parameter_dt *dtp, void * + for (;;) +@@ -1177,41 +1166,6 @@ parse_real (st_parameter_dt *dtp, void * return m; @@ -82,7 +83,7 @@ bad: if (nml_bad_return (dtp, c)) -@@ -1340,12 +1293,6 @@ read_real (st_parameter_dt *dtp, int len +@@ -1339,12 +1293,6 @@ read_real (st_parameter_dt *dtp, int len eat_separator (dtp); return; @@ -95,7 +96,7 @@ default: goto bad_real; } -@@ -1420,12 +1367,7 @@ read_real (st_parameter_dt *dtp, int len +@@ -1419,12 +1367,7 @@ read_real (st_parameter_dt *dtp, int len } if (!isdigit (c) && c != '.') @@ -109,7 +110,7 @@ if (c == '.') { -@@ -1522,37 +1464,6 @@ read_real (st_parameter_dt *dtp, int len +@@ -1521,37 +1464,6 @@ read_real (st_parameter_dt *dtp, int len dtp->u.p.saved_type = BT_REAL; return; diff --git a/gcc41-rh330771.patch b/gcc43-rh330771.patch similarity index 100% rename from gcc41-rh330771.patch rename to gcc43-rh330771.patch diff --git a/gcc43-rh341221.patch b/gcc43-rh341221.patch new file mode 100644 index 0000000..28e73b0 --- /dev/null +++ b/gcc43-rh341221.patch @@ -0,0 +1,28 @@ +2007-10-21 Jakub Jelinek + + * doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo + timestamp rather than from current date. + * doc/Makefile.in: Regenerated. + +--- libjava/classpath/doc/Makefile.am.jj 2007-12-07 17:55:00.000000000 +0100 ++++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100 +@@ -30,7 +30,7 @@ TOOLS_MANFILES = \ + gserialver.1 \ + gtnameserv.1 + +-POD2MAN = pod2man --center="GNU" --release="$(VERSION)" ++POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')" + TEXI2POD = perl $(srcdir)/texi2pod.pl + STAMP = echo timestamp > + +--- libjava/classpath/doc/Makefile.in.jj 2007-12-07 17:55:00.000000000 +0100 ++++ libjava/classpath/doc/Makefile.in 2007-12-07 18:55:43.000000000 +0100 +@@ -357,7 +357,7 @@ TOOLS_MANFILES = \ + gserialver.1 \ + gtnameserv.1 + +-POD2MAN = pod2man --center="GNU" --release="$(VERSION)" ++POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')" + TEXI2POD = perl $(srcdir)/texi2pod.pl + STAMP = echo timestamp > + @GENINSRC_FALSE@STAMP_GENINSRC = diff --git a/gcc43.spec b/gcc43.spec new file mode 100644 index 0000000..52548a6 --- /dev/null +++ b/gcc43.spec @@ -0,0 +1,1620 @@ +%define DATE 20071212 +%define gcc_version 4.3.0 +%define gcc_release 0.2 +%define _unpackaged_files_terminate_build 0 +%define multilib_64_archs sparc64 ppc64 s390x x86_64 +%define include_gappletviewer 1 +%ifarch %{ix86} x86_64 ia64 ppc alpha +%define build_ada 1 +%else +%define build_ada 0 +%endif +%define build_java 1 +# If you don't have already a usable gcc-java and libgcj for your arch, +# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec +# which creates libjava-classes-%{version}-%{release}.tar.bz2 +# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec +%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0} +%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0} +%ifarch s390x +%define multilib_32_arch s390 +%endif +%ifarch sparc64 +%define multilib_32_arch sparc +%endif +%ifarch ppc64 +%define multilib_32_arch ppc +%endif +%ifarch x86_64 +%define multilib_32_arch i386 +%endif +Summary: Various compilers (C, C++, Objective-C, Java, ...) +Name: gcc +Version: %{gcc_version} +Release: %{gcc_release} +# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows +# linking it into any kind of programs or shared libraries without +# restrictions. +License: GPLv3+ and GPLv2+ with exceptions +Group: Development/Languages +Source0: gcc-%{version}-%{DATE}.tar.bz2 +Source1: libgcc_post_upgrade.c +Source2: README.libgcjwebplugin.so +Source3: protoize.1 +URL: http://gcc.gnu.org +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +# Need binutils with -pie support >= 2.14.90.0.4-4 +# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4 +# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2 +# Need binutils which support .weakref >= 2.16.91.0.3-1 +# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7 +# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8 +# Need binutils which support --build-id >= 2.17.50.0.17-3 +BuildRequires: binutils >= 2.17.50.0.17-3 +BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils +%if %{build_java} +BuildRequires: /usr/share/java/eclipse-ecj.jar, zip, unzip +%if %{bootstrap_java} +Source10: libjava-classes-%{version}-%{release}.tar.bz2 +%else +BuildRequires: gcc-java, libgcj +%endif +%endif +# Make sure pthread.h doesn't contain __thread tokens +# Make sure glibc supports stack protector +# Make sure glibc supports DT_GNU_HASH +BuildRequires: glibc-devel >= 2.4.90-13 +BuildRequires: elfutils-devel >= 0.72 +%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha +# Make sure glibc supports TFmode long double +BuildRequires: glibc >= 2.3.90-35 +%endif +%ifarch %{multilib_64_archs} sparc ppc +# Ensure glibc{,-devel} is installed for both multilib arches +BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so +%endif +%if %{build_ada} +# Ada requires Ada to build +BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 +%endif +%ifarch ia64 +BuildRequires: libunwind >= 0.98 +%endif +Requires: cpp = %{version}-%{release} +# Need .eh_frame ld optimizations +# Need proper visibility support +# Need -pie support +# Need --as-needed/--no-as-needed support +# On ppc64, need omit dot symbols support and --non-overlapping-opd +# Need binutils that owns /usr/bin/c++filt +# Need binutils that support .weakref +# Need binutils that supports --hash-style=gnu +# Need binutils that support mffgpr/mftgpr +# Need binutils that support --build-id +Requires: binutils >= 2.17.50.0.17-3 +# Make sure gdb will understand DW_FORM_strp +Conflicts: gdb < 5.1-2 +Requires: glibc-devel >= 2.2.90-12 +%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha +# Make sure glibc supports TFmode long double +Requires: glibc >= 2.3.90-35 +%endif +Requires: libgcc >= %{version}-%{release} +Requires: libgomp = %{version}-%{release} +Obsoletes: gcc3 +Obsoletes: egcs +%ifarch sparc +Obsoletes: gcc-sparc32 +Obsoletes: gcc-c++-sparc32 +%endif +%ifarch ppc +Obsoletes: gcc-ppc32 +Obsoletes: gcc-c++-ppc32 +%endif +Obsoletes: gcc-chill +%if !%{build_ada} +Obsoletes: gcc-gnat < %{version}-%{release} +Obsoletes: libgnat < %{version}-%{release} +%endif +%ifarch sparc sparc64 +Obsoletes: egcs64 +%endif +Obsoletes: gcc34 +Obsoletes: gcc35 +Obsoletes: gcc4 +Prereq: /sbin/install-info +AutoReq: true + +Patch1: gcc43-build-id.patch +Patch2: gcc43-c++-builtin-redecl.patch +Patch3: gcc43-ia64-libunwind.patch +Patch4: gcc43-java-nomulti.patch +Patch5: gcc43-ppc32-retaddr.patch +Patch6: gcc43-ppc64-ia64-GNU-stack.patch +Patch7: gcc43-pr27898.patch +Patch8: gcc43-pr32139.patch +Patch9: gcc43-pr33763.patch +Patch10: gcc43-pr32636.patch +Patch11: gcc43-rh330771.patch +Patch12: gcc43-rh341221.patch +Patch13: gcc43-libjava-test.patch +Patch14: gcc43-pr34427.patch + +# On ARM EABI systems, we do want -gnueabi to be part of the +# target triple. +%ifnarch %{arm} +%define _gnu %{nil} +%endif +%ifarch sparc +%define gcc_target_platform sparc64-%{_vendor}-%{_target_os} +%endif +%ifarch ppc +%define gcc_target_platform ppc64-%{_vendor}-%{_target_os} +%endif +%ifnarch sparc ppc +%define gcc_target_platform %{_target_platform} +%endif + +%description +The gcc package contains the GNU Compiler Collection version 4.3. +You'll need this package in order to compile C code. + +%package -n libgcc +Summary: GCC version 4.3 shared support library +Group: System Environment/Libraries +Autoreq: false + +%description -n libgcc +This package contains GCC shared support library which is needed +e.g. for exception handling support. + +%package c++ +Summary: C++ support for GCC +Group: Development/Languages +Requires: gcc = %{version}-%{release} +Requires: libstdc++ = %{version}-%{release} +Requires: libstdc++-devel = %{version}-%{release} +Obsoletes: gcc3-c++ +Obsoletes: gcc34-c++ +Obsoletes: gcc35-c++ +Obsoletes: gcc4-c++ +Autoreq: true + +%description c++ +This package adds C++ support to the GNU Compiler Collection. +It includes support for most of the current C++ specification, +including templates and exception handling. + +%package -n libstdc++ +Summary: GNU Standard C++ Library +Group: System Environment/Libraries +Obsoletes: libstdc++3 +Obsoletes: libstdc++34 +Autoreq: true + +%description -n libstdc++ +The libstdc++ package contains a rewritten standard compliant GCC Standard +C++ Library. + +%package -n libstdc++-devel +Summary: Header files and libraries for C++ development +Group: Development/Libraries +Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6 +Obsoletes: libstdc++3-devel +Obsoletes: libstdc++34-devel +Autoreq: true + +%description -n libstdc++-devel +This is the GNU implementation of the standard C++ libraries. This +package includes the header files and libraries needed for C++ +development. This includes rewritten implementation of STL. + +%package objc +Summary: Objective-C support for GCC +Group: Development/Languages +Requires: gcc = %{version}-%{release} +Requires: libobjc = %{version}-%{release} +Obsoletes: gcc3-objc +Autoreq: true + +%description objc +gcc-objc provides Objective-C support for the GCC. +Mainly used on systems running NeXTSTEP, Objective-C is an +object-oriented derivative of the C language. + +%package objc++ +Summary: Objective-C++ support for GCC +Group: Development/Languages +Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release} +Autoreq: true + +%description objc++ +gcc-objc++ package provides Objective-C++ support for the GCC. + +%package -n libobjc +Summary: Objective-C runtime +Group: System Environment/Libraries +Autoreq: true + +%description -n libobjc +This package contains Objective-C shared library which is needed to run +Objective-C dynamically linked programs. + +%package gfortran +Summary: Fortran 95 support +Group: Development/Languages +Requires: gcc = %{version}-%{release} +Requires: libgfortran = %{version}-%{release} +BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1 +Prereq: /sbin/install-info +Obsoletes: gcc3-g77 +Obsoletes: gcc-g77 +Obsoletes: gcc4-gfortran +Autoreq: true + +%description gfortran +The gcc-gfortran package provides support for compiling Fortran 95 +programs with the GNU Compiler Collection. + +%package -n libgfortran +Summary: Fortran 95 runtime +Group: System Environment/Libraries +Obsoletes: libf2c +Autoreq: true + +%description -n libgfortran +This package contains Fortran 95 shared library which is needed to run +Fortran 95 dynamically linked programs. + +%package -n libgomp +Summary: GCC OpenMP 2.5 shared support library +Group: System Environment/Libraries + +%description -n libgomp +This package contains GCC shared support library which is needed +for OpenMP 2.5 support. + +%package -n libmudflap +Summary: GCC mudflap shared support library +Group: System Environment/Libraries + +%description -n libmudflap +This package contains GCC shared support library which is needed +for mudflap support. + +%package -n libmudflap-devel +Summary: GCC mudflap support +Group: Development/Libraries +Requires: libmudflap = %{version}-%{release} +Requires: gcc = %{version}-%{release} + +%description -n libmudflap-devel +This package contains headers and static libraries for building +mudflap-instrumented programs. + +To instrument a non-threaded program, add -fmudflap +option to GCC and when linking add -lmudflap, for threaded programs +also add -fmudflapth and -lmudflapth. + +%package java +Summary: Java support for GCC +Group: Development/Languages +Requires: gcc = %{version}-%{release} +Requires: libgcj = %{version}-%{release} +Requires: libgcj-devel = %{version}-%{release} +Requires: /usr/share/java/eclipse-ecj.jar +Obsoletes: gcc3-java +Obsoletes: gcc34-java +Obsoletes: gcc35-java +Obsoletes: gcc4-java +Prereq: /sbin/install-info +Autoreq: true + +%description java +This package adds support for compiling Java(tm) programs and +bytecode into native code. + +%package -n libgcj +Summary: Java runtime library for gcc +Group: System Environment/Libraries +Prereq: /sbin/install-info +Requires: zip >= 2.1 +Requires: gtk2 >= 2.4.0 +Requires: glib2 >= 2.4.0 +Requires: libart_lgpl >= 2.1.0 +%if %{build_java} +BuildRequires: gtk2-devel >= 2.4.0 +BuildRequires: glib2-devel >= 2.4.0 +BuildRequires: firefox-devel +BuildRequires: libart_lgpl-devel >= 2.1.0 +BuildRequires: alsa-lib-devel +BuildRequires: libXtst-devel +BuildRequires: libXt-devel +%endif +Obsoletes: gcc-libgcj +Obsoletes: libgcj3 +Obsoletes: libgcj34 +Obsoletes: libgcj4 +Autoreq: true + +%description -n libgcj +The Java(tm) runtime library. You will need this package to run your Java +programs compiled using the Java compiler from GNU Compiler Collection (gcj). + +%package -n libgcj-devel +Summary: Libraries for Java development using GCC +Group: Development/Languages +Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.9 +Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so +Requires: /bin/awk +Obsoletes: libgcj3-devel +Obsoletes: libgcj34-devel +Obsoletes: libgcj4-devel +Autoreq: false +Autoprov: false + +%description -n libgcj-devel +The Java(tm) static libraries and C header files. You will need this +package to compile your Java programs using the GCC Java compiler (gcj). + +%package -n libgcj-src +Summary: Java library sources from GCC4 preview +Group: System Environment/Libraries +Requires: libgcj = %{version}-%{release} +Obsoletes: libgcj4-src +Autoreq: true + +%description -n libgcj-src +The Java(tm) runtime library sources for use in Eclipse. + +%package -n cpp +Summary: The C Preprocessor. +Group: Development/Languages +Prereq: /sbin/install-info +%ifarch ia64 +Obsoletes: gnupro +%endif +Autoreq: true + +%description -n cpp +Cpp is the GNU C-Compatible Compiler Preprocessor. +Cpp is a macro processor which is used automatically +by the C compiler to transform your program before actual +compilation. It is called a macro processor because it allows +you to define macros, abbreviations for longer +constructs. + +The C preprocessor provides four separate functionalities: the +inclusion of header files (files of declarations that can be +substituted into your program); macro expansion (you can define macros, +and the C preprocessor will replace the macros with their definitions +throughout the program); conditional compilation (using special +preprocessing directives, you can include or exclude parts of the +program according to various conditions); and line control (if you use +a program to combine or rearrange source files into an intermediate +file which is then compiled, you can use line control to inform the +compiler about where each source line originated). + +You should install this package if you are a C programmer and you use +macros. + +%package gnat +Summary: Ada 95 support for GCC +Group: Development/Languages +Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release} +Obsoletes: gnat-devel, gcc3-gnat +Prereq: /sbin/install-info +Autoreq: true + +%description gnat +GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools, +the documents and Ada 95 compiler. + +%package -n libgnat +Summary: GNU Ada 95 runtime shared libraries +Group: System Environment/Libraries +Obsoletes: gnat libgnat3 +Autoreq: true + +%description -n libgnat +GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries, +which are required to run programs compiled with the GNAT. + +%prep +%setup -q -n gcc-%{version}-%{DATE} +%patch1 -p0 -b .build-id~ +%patch2 -p0 -b .c++-builtin-redecl~ +%patch3 -p0 -b .ia64-libunwind~ +%patch4 -p0 -b .java-nomulti~ +%patch5 -p0 -b .ppc32-retaddr~ +%patch6 -p0 -b .ppc64-ia64-GNU-stack~ +%patch7 -p0 -b .pr27898~ +%patch8 -p0 -b .pr32139~ +%patch9 -p0 -b .pr33763~ +%patch10 -p0 -b .pr32636~ +%patch11 -p0 -b .rh330771~ +%patch12 -p0 -b .rh341221~ +%patch13 -p0 -b .libjava-test~ +%patch14 -p0 -E -b .pr34427~ + +%if %{bootstrap_java} +tar xjf %{SOURCE10} +%endif + +sed -i -e 's/4\.3\.0/4.3.0/' gcc/BASE-VER +echo '(Red Hat %{version}-%{gcc_release})' > gcc/DEV-PHASE + +cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h + +# Hack to avoid building multilib libjava +perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in +perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in +perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in +perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in +perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in +perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in + +./contrib/gcc_update --touch + +%ifarch ppc +if [ -d libstdc++-v3/config/abi/powerpc64-linux-gnu ]; then + mkdir -p libstdc++-v3/config/abi/powerpc64-linux-gnu/64 + mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{,64/}baseline_symbols.txt + mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{32/,}baseline_symbols.txt + rm -rf libstdc++-v3/config/abi/powerpc64-linux-gnu/32 +fi +%endif +%ifarch sparc +if [ -d libstdc++-v3/config/abi/sparc64-linux-gnu ]; then + mkdir -p libstdc++-v3/config/abi/sparc64-linux-gnu/64 + mv libstdc++-v3/config/abi/sparc64-linux-gnu/{,64/}baseline_symbols.txt + mv libstdc++-v3/config/abi/sparc64-linux-gnu/{32/,}baseline_symbols.txt + rm -rf libstdc++-v3/config/abi/sparc64-linux-gnu/32 +fi +%endif + +%build + +rm -fr obj-%{gcc_target_platform} +mkdir obj-%{gcc_target_platform} +cd obj-%{gcc_target_platform} + +if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then + mkdir locale + localedef -f ISO-8859-1 -i de_DE locale/de_DE + export LOCPATH=`pwd`/locale:/usr/lib/locale +fi + +%if %{build_java} +%if !%{bootstrap_java} +# If we don't have gjavah in $PATH, try to build it with the old gij +mkdir java_hacks +cd java_hacks +if [ ! -x /usr/bin/gjavah ]; then + cp -a ../../libjava/classpath/tools/external external + mkdir -p gnu/classpath/tools + cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/ + cp -a ../../libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common + cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../.. + for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done + gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real + cat > gjavah < ecj1 < gcc64 <<"EOF" +#!/bin/sh +exec /usr/bin/gcc -m64 "$@" +EOF +chmod +x gcc64 +CC=`pwd`/gcc64 +%endif +%ifarch ppc64 +if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then + cat > gcc64 <<"EOF" +#!/bin/sh +exec /usr/bin/gcc -m64 "$@" +EOF + chmod +x gcc64 + CC=`pwd`/gcc64 +fi +%endif +OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'` +case "$OPT_FLAGS" in + *-fasynchronous-unwind-tables*) + sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/' \ + ../gcc/Makefile.in + ;; +esac +CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ + GCJFLAGS="$OPT_FLAGS" \ + ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ + --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \ + --enable-shared --enable-threads=posix --enable-checking=release \ + --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \ +%if !%{build_ada} + --enable-languages=c,c++,objc,obj-c++,java,fortran \ +%else + --enable-languages=c,c++,objc,obj-c++,java,fortran,ada \ +%endif +%if !%{build_java} + --disable-libgcj \ +%else + --enable-java-awt=gtk --disable-dssi --enable-plugin \ + --with-java-home=%{_prefix}/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre \ + --enable-libgcj-multifile --enable-java-maintainer-mode \ + --with-ecj-jar=/usr/share/java/eclipse-ecj.jar \ + --disable-libjava-multilib \ +%endif +%ifarch %{arm} + --disable-sjlj-exceptions \ +%endif +%ifarch ppc ppc64 + --enable-secureplt \ +%endif +%ifarch sparc ppc ppc64 s390 s390x alpha + --with-long-double-128 \ +%endif +%ifarch sparc + --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7 +%endif +%ifarch ppc + --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32 +%endif +%ifarch %{ix86} x86_64 + --with-cpu=generic \ +%endif +%ifarch s390 s390x + --with-tune=z9-109 \ +%endif +%ifnarch sparc ppc + --build=%{gcc_target_platform} +%endif + +GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap +#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap + +# run the tests. +make %{?_smp_mflags} -k check RUNTESTFLAGS="ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || : +cd gcc +mv testsuite{,.normal} +make %{?_smp_mflags} -k \ + `sed -n 's/check-ada//;s/^CHECK_TARGETS[[:blank:]]*=[[:blank:]]*//p' Makefile` \ + RUNTESTFLAGS="--target_board=unix/-fstack-protector ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || : +mv testsuite{,.ssp} +mv testsuite{.normal,} +cd .. +echo ====================TESTING========================= +( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' +echo ====================TESTING END===================== +mkdir testlogs-%{_target_platform}-%{version}-%{release} +for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do + ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || : +done +for i in `find . -name \*.log | grep -F testsuite.ssp/ | grep -v 'config.log\|acats\|ada'`; do + ln $i testlogs-%{_target_platform}-%{version}-%{release}/ssp-`basename $i` || : +done +tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \ + | uuencode testlogs-%{_target_platform}.tar.bz2 || : +rm -rf testlogs-%{_target_platform}-%{version}-%{release} + +# Make protoize +make -C gcc CC="./xgcc -B ./ -O2" proto + +# Make generated man pages even if Pod::Man is not new enough +perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl +for i in ../gcc/doc/*.texi; do + cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i +done +make -C gcc generated-manpages +for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done + +# Copy various doc files here and there +cd .. +mkdir -p rpm.doc/gfortran rpm.doc/objc +mkdir -p rpm.doc/boehm-gc rpm.doc/libffi rpm.doc/libjava +mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp} +sed -e 's,@VERSION@,%{gcc_version},' %{SOURCE2} > rpm.doc/README.libgcjwebplugin.so + +for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do + cp -p $i rpm.doc/changelogs/$i +done + +(cd gcc/fortran; for i in ChangeLog*; do + cp -p $i ../../rpm.doc/gfortran/$i +done) +(cd libgfortran; for i in ChangeLog*; do + cp -p $i ../rpm.doc/gfortran/$i.libgfortran +done) +(cd gcc/objc; for i in README*; do + cp -p $i ../../rpm.doc/objc/$i.objc +done) +(cd libobjc; for i in README*; do + cp -p $i ../rpm.doc/objc/$i.libobjc +done) +(cd boehm-gc; for i in ChangeLog*; do + cp -p $i ../rpm.doc/boehm-gc/$i.gc +done) +(cd libffi; for i in ChangeLog* README* LICENSE; do + cp -p $i ../rpm.doc/libffi/$i.libffi +done) +(cd libjava; for i in ChangeLog* README*; do + cp -p $i ../rpm.doc/libjava/$i.libjava +done) +cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/ + +rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9] +find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9 + +%if %{build_java_tar} +find libjava -name \*.h -type f | xargs grep -l '// DO NOT EDIT THIS FILE - it is machine generated' > libjava-classes.list +find libjava -name \*.class -type f >> libjava-classes.list +find libjava/testsuite -name \*.jar -type f >> libjava-classes.list +tar cf - -T libjava-classes.list | bzip2 -9 > $RPM_SOURCE_DIR/libjava-classes-%{version}-%{release}.tar.bz2 +%endif + +%install +rm -fr $RPM_BUILD_ROOT + +perl -pi -e \ + 's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \ + libstdc++-v3/docs/html/documentation.html +ln -sf documentation.html libstdc++-v3/docs/html/index.html + +cd obj-%{gcc_target_platform} + +if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then + export LOCPATH=`pwd`/locale:/usr/lib/locale +fi + +%if %{build_java} +%if !%{bootstrap_java} +export PATH=`pwd`/java_hacks${PATH:+:$PATH} +%endif +%endif + +TARGET_PLATFORM=%{gcc_target_platform} + +# There are some MP bugs in libstdc++ Makefiles +make -C %{gcc_target_platform}/libstdc++-v3 + +make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \ + infodir=$RPM_BUILD_ROOT%{_infodir} install +%if %{build_java} +make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip +%endif +%if %{build_ada} +chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat* +%endif + +FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} + +# fix some things +ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc +mkdir -p $RPM_BUILD_ROOT/lib +ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp +ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95 +rm -f $RPM_BUILD_ROOT%{_infodir}/dir +gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info* +ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc + +cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`" +for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do + if ! diff -up $cxxconfig $i; then + cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h < +#if __WORDSIZE == 32 +%ifarch %{multilib_64_archs} +`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)` +%else +`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)` +%endif +#else +%ifarch %{multilib_64_archs} +`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)` +%else +`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)` +%endif +#endif +#endif +EOF + break + fi +done + +# Nuke bits/stdc++.h.gch dirs +# 1) there is no bits/stdc++.h header installed, so when gch file can't be +# used, compilation fails +# 2) sometimes it is hard to match the exact options used for building +# libstdc++-v3 or they aren't desirable +# 3) there are multilib issues, conflicts etc. with this +# 4) it is huge +# People can always precompile on their own whatever they want, but +# shipping this for everybody is unnecessary. +rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch + +%ifarch sparc sparc64 +ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \ + $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc +%endif +%ifarch ppc ppc64 +ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \ + $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc +%endif + +%ifarch sparc ppc +FULLLPATH=$FULLPATH/lib32 +%endif +%ifarch sparc64 ppc64 +FULLLPATH=$FULLPATH/lib64 +%endif +if [ -n "$FULLLPATH" ]; then + mkdir -p $FULLLPATH +else + FULLLPATH=$FULLPATH +fi + +find $RPM_BUILD_ROOT -name \*.la | xargs rm -f +%if %{build_java} +# gcj -static doesn't work properly anyway, unless using --whole-archive +# and saving 35MB is not bad. +find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \ + -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \ + -o -name libgij.a -o -name libgcj_bc.a | xargs rm -f + +mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/ +sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \ + $FULLPATH/libgcj.spec +%endif + +mkdir -p $RPM_BUILD_ROOT/%{_lib} +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 +chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 +ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1 +ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so +%ifarch sparc ppc +ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so +%endif +%ifarch %{multilib_64_archs} +ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so +%endif + +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/ + +%if %{build_ada} +mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ +mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ +rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so* +%endif + +mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf +if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then + ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default +else + ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default +fi + +%if %{build_java} +if [ "%{_lib}" != "lib" ]; then + mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig + sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \ + > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc` +fi +%endif + +pushd $FULLPATH +if [ "%{_lib}" = "lib" ]; then +ln -sf ../../../libobjc.so.2 libobjc.so +ln -sf ../../../libstdc++.so.6.* libstdc++.so +ln -sf ../../../libgfortran.so.3.* libgfortran.so +ln -sf ../../../libgomp.so.1.* libgomp.so +ln -sf ../../../libmudflap.so.0.* libmudflap.so +ln -sf ../../../libmudflapth.so.0.* libmudflapth.so +%if %{build_java} +ln -sf ../../../libgcj.so.9.* libgcj.so +ln -sf ../../../libgcj-tools.so.9.* libgcj-tools.so +ln -sf ../../../libgij.so.9.* libgij.so +%endif +%if %{build_ada} +cd adalib +ln -sf ../../../../libgnarl-*.so libgnarl.so +ln -sf ../../../../libgnarl-*.so libgnarl-4.3.so +ln -sf ../../../../libgnat-*.so libgnat.so +ln -sf ../../../../libgnat-*.so libgnat-4.3.so +cd .. +%endif +else +ln -sf ../../../../%{_lib}/libobjc.so.2 libobjc.so +ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++.so +ln -sf ../../../../%{_lib}/libgfortran.so.3.* libgfortran.so +ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so +ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so +ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so +%if %{build_java} +ln -sf ../../../../%{_lib}/libgcj.so.9.* libgcj.so +ln -sf ../../../../%{_lib}/libgcj-tools.so.9.* libgcj-tools.so +ln -sf ../../../../%{_lib}/libgij.so.9.* libgij.so +%endif +%if %{build_ada} +cd adalib +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.3.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.3.so +cd .. +%endif +fi +%if %{build_java} +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/ +%endif +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/ +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a . +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a . +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a . +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a . +mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/ + +%ifarch sparc ppc +ln -sf ../../../../../lib64/libobjc.so.2 64/libobjc.so +ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so +ln -sf ../`echo ../../../../lib/libgfortran.so.3.* | sed s~/lib/~/lib64/~` 64/libgfortran.so +ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so +ln -sf ../`echo ../../../../lib/libmudflap.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflap.so +ln -sf ../`echo ../../../../lib/libmudflapth.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflapth.so +%if %{build_java} +ln -sf ../`echo ../../../../lib/libgcj.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj.so +ln -sf ../`echo ../../../../lib/libgcj-tools.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so +ln -sf ../`echo ../../../../lib/libgij.so.9.* | sed s~/lib/~/lib64/~` 64/libgij.so +ln -sf lib32/libgcj_bc.so libgcj_bc.so +ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so +%endif +mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/ +mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/ +mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/ +mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/ +ln -sf lib32/libstdc++.a libstdc++.a +ln -sf ../lib64/libstdc++.a 64/libstdc++.a +ln -sf lib32/libmudflap.a libmudflap.a +ln -sf ../lib64/libmudflap.a 64/libmudflap.a +ln -sf lib32/libmudflapth.a libmudflapth.a +ln -sf ../lib64/libmudflapth.a 64/libmudflapth.a +%endif +%ifarch %{multilib_64_archs} +mkdir -p 32 +ln -sf ../../../../libobjc.so.2 32/libobjc.so +ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++.so +ln -sf ../`echo ../../../../lib64/libgfortran.so.3.* | sed s~/../lib64/~/~` 32/libgfortran.so +ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so +ln -sf ../`echo ../../../../lib64/libmudflap.so.0.* | sed s~/../lib64/~/~` 32/libmudflap.so +ln -sf ../`echo ../../../../lib64/libmudflapth.so.0.* | sed s~/../lib64/~/~` 32/libmudflapth.so +%if %{build_java} +ln -sf ../`echo ../../../../lib64/libgcj.so.9.* | sed s~/../lib64/~/~` 32/libgcj.so +ln -sf ../`echo ../../../../lib64/libgcj-tools.so.9.* | sed s~/../lib64/~/~` 32/libgcj-tools.so +ln -sf ../`echo ../../../../lib64/libgij.so.9.* | sed s~/../lib64/~/~` 32/libgij.so +%endif +mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/ +mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/ +mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/ +mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/ +%endif +%ifarch sparc64 ppc64 +ln -sf ../lib32/libstdc++.a 32/libstdc++.a +ln -sf lib64/libstdc++.a libstdc++.a +ln -sf ../lib32/libmudflap.a 32/libmudflap.a +ln -sf lib64/libmudflap.a libmudflap.a +ln -sf ../lib32/libmudflapth.a 32/libmudflapth.a +ln -sf lib64/libmudflapth.a libmudflapth.a +%if %{build_java} +ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so +ln -sf lib64/libgcj_bc.so libgcj_bc.so +%endif +%else +%ifarch %{multilib_64_archs} +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflap.a 32/libmudflap.a +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a +%if %{build_java} +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so +%endif +%endif +%endif + +# Strip debug info from Fortran/ObjC/Java static libraries +strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ + -o -name libmudflap.a -o -name libmudflapth.a \ + -o -name libgcc.a -o -name libgcov.a \) -a -type f` +popd +chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.3.* +chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.* +chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.* +chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.2.* + +%if %{build_ada} +chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so* +chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so* +%endif + +mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h +mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h +for h in `find $FULLPATH/include -name \*.h`; do + if grep -q 'It has been auto-edited by fixincludes from' $h; then + rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'` + diff -up $rh $h || : + rm -f $h + fi +done + +cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF" +#!/bin/sh +fl="-std=c89" +for opt; do + case "$opt" in + -ansi|-std=c89|-std=iso9899:1990) fl="";; + -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 + exit 1;; + esac +done +exec gcc $fl ${1+"$@"} +EOF +cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF" +#!/bin/sh +fl="-std=c99" +for opt; do + case "$opt" in + -std=c99|-std=iso9899:1999) fl="";; + -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 + exit 1;; + esac +done +exec gcc $fl ${1+"$@"} +EOF +chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9 + +mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin +gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade +strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade + +cd .. +%find_lang %{name} +%find_lang cpplib + +# Remove binaries we will not be including, so that they don't end up in +# gcc-debuginfo +rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a} +rm -f $FULLEPATH/install-tools/{mkheaders,fixincl} +rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a +rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp* + +%ifarch %{multilib_64_archs} +# Remove libraries for the other arch on multilib arches +rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so* +rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a +%else +%ifarch sparc ppc +rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so* +rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a +%endif +%endif + +%if %{build_java} +mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \ + $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d +chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \ + $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \ + $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d +touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db +%endif + +install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1 +echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1 +chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1 + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || : + +%preun +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || : +fi + +%post -n cpp +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || : + +%preun -n cpp +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || : +fi + +%post gfortran +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || : + +%preun gfortran +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || : +fi + +%post java +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || : + +%preun java +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || : +fi + +%post gnat +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || : +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || : +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || : + +%preun gnat +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || : + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || : + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || : +fi + +# Because glibc Prereq's libgcc and /sbin/ldconfig +# comes from glibc, it might not exist yet when +# libgcc is installed +%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade + +%post -n libstdc++ -p /sbin/ldconfig + +%postun -n libstdc++ -p /sbin/ldconfig + +%post -n libobjc -p /sbin/ldconfig + +%postun -n libobjc -p /sbin/ldconfig + +%post -n libgcj +/sbin/ldconfig +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || : + +%preun -n libgcj +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || : +fi + +%postun -n libgcj -p /sbin/ldconfig + +%post -n libgfortran -p /sbin/ldconfig + +%postun -n libgfortran -p /sbin/ldconfig + +%post -n libgnat -p /sbin/ldconfig + +%postun -n libgnat -p /sbin/ldconfig + +%post -n libgomp +/sbin/ldconfig +/sbin/install-info \ + --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || : + +%preun -n libgomp +if [ $1 = 0 ]; then + /sbin/install-info --delete \ + --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || : +fi + +%postun -n libgomp -p /sbin/ldconfig + +%post -n libmudflap -p /sbin/ldconfig + +%postun -n libmudflap -p /sbin/ldconfig + +%files -f %{name}.lang +%defattr(-,root,root) +%{_prefix}/bin/cc +%{_prefix}/bin/c89 +%{_prefix}/bin/c99 +%{_prefix}/bin/gcc +%{_prefix}/bin/gcov +%{_prefix}/bin/protoize +%{_prefix}/bin/unprotoize +%ifarch sparc ppc +%{_prefix}/bin/%{_target_platform}-gcc +%endif +%ifarch sparc64 +%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc +%endif +%ifarch ppc64 +%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc +%endif +%{_prefix}/bin/%{gcc_target_platform}-gcc +%{_mandir}/man1/gcc.1* +%{_mandir}/man1/gcov.1* +%{_mandir}/man1/protoize.1* +%{_mandir}/man1/unprotoize.1* +%{_infodir}/gcc* +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.h +%ifarch %{ix86} x86_64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/tmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ammintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/smmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/nmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/bmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin-common.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h +%endif +%ifarch ia64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h +%endif +%ifarch ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h +%endif +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_s.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.so +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so +%endif +%ifarch sparc sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so +%endif +%dir %{_prefix}/libexec/getconf +%{_prefix}/libexec/getconf/default +%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* + +%files -n cpp -f cpplib.lang +%defattr(-,root,root) +/lib/cpp +%{_prefix}/bin/cpp +%{_mandir}/man1/cpp.1* +%{_infodir}/cpp* +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1 + +%files -n libgcc +%defattr(-,root,root) +/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 +/%{_lib}/libgcc_s.so.1 +%{_prefix}/sbin/libgcc_post_upgrade +%doc gcc/COPYING.LIB + +%files c++ +%defattr(-,root,root) +%{_prefix}/bin/%{gcc_target_platform}-*++ +%{_prefix}/bin/g++ +%{_prefix}/bin/c++ +%{_mandir}/man1/g++.1* +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a +%endif +%ifarch sparc ppc %{multilib_64_archs} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a +%endif +%ifarch sparc sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a +%endif +%doc rpm.doc/changelogs/gcc/cp/ChangeLog* + +%files -n libstdc++ +%defattr(-,root,root) +%{_prefix}/%{_lib}/libstdc++.so.6* + +%files -n libstdc++-devel +%defattr(-,root,root) +%dir %{_prefix}/include/c++ +%dir %{_prefix}/include/c++/%{gcc_version} +%{_prefix}/include/c++/%{gcc_version}/[^gjos]* +%{_prefix}/include/c++/%{gcc_version}/os* +%{_prefix}/include/c++/%{gcc_version}/s[^u]* +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a +%endif +%ifarch sparc64 ppc64 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a +%endif +%ifnarch sparc sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a +%endif +%ifnarch sparc ppc %{multilib_64_archs} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a +%endif +%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/ + +%files objc +%defattr(-,root,root) +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/objc +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so +%endif +%doc rpm.doc/objc/* +%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog* + +%files objc++ +%defattr(-,root,root) +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus + +%files -n libobjc +%defattr(-,root,root) +%{_prefix}/%{_lib}/libobjc.so.2* + +%files gfortran +%defattr(-,root,root) +%{_prefix}/bin/gfortran +%{_prefix}/bin/f95 +%{_mandir}/man1/gfortran.1* +%{_infodir}/gfortran* +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so +%endif +%doc rpm.doc/gfortran/* + +%files -n libgfortran +%defattr(-,root,root) +%{_prefix}/%{_lib}/libgfortran.so.3* + +%if %{build_java} +%files java +%defattr(-,root,root) +%{_prefix}/bin/gcj +%{_prefix}/bin/gjavah +%{_prefix}/bin/gcjh +%{_prefix}/bin/jcf-dump +%{_mandir}/man1/gcj.1* +%{_mandir}/man1/jcf-dump.1* +%{_mandir}/man1/gjavah.1* +%{_mandir}/man1/gcjh.1* +%{_infodir}/gcj* +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1 +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/ecj1 +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so +%ifarch sparc sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so +%endif +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so +%endif +%doc rpm.doc/changelogs/gcc/java/ChangeLog* + +%files -n libgcj +%defattr(-,root,root) +%{_prefix}/bin/jv-convert +%{_prefix}/bin/gij +%{_prefix}/bin/gjar +%{_prefix}/bin/grmic +%{_prefix}/bin/grmid +%{_prefix}/bin/grmiregistry +%{_prefix}/bin/gtnameserv +%{_prefix}/bin/gkeytool +%{_prefix}/bin/gorbd +%{_prefix}/bin/gserialver +%{_prefix}/bin/gcj-dbtool +%if %{include_gappletviewer} +%{_prefix}/bin/gappletviewer +%{_mandir}/man1/gappletviewer.1* +%endif +%{_prefix}/bin/gjarsigner +%{_mandir}/man1/gjar.1* +%{_mandir}/man1/gjarsigner.1* +%{_mandir}/man1/jv-convert.1* +%{_mandir}/man1/gij.1* +%{_mandir}/man1/grmic.1* +%{_mandir}/man1/grmiregistry.1* +%{_mandir}/man1/gcj-dbtool.1* +%{_mandir}/man1/gkeytool.1* +%{_mandir}/man1/gorbd.1* +%{_mandir}/man1/grmid.1* +%{_mandir}/man1/gserialver.1* +%{_mandir}/man1/gtnameserv.1* +%{_infodir}/cp-tools.info* +%{_prefix}/%{_lib}/libgcj.so.* +%{_prefix}/%{_lib}/libgcj-tools.so.* +%{_prefix}/%{_lib}/libgcj_bc.so.* +%{_prefix}/%{_lib}/libgij.so.* +%dir %{_prefix}/%{_lib}/gcj-%{version} +%{_prefix}/%{_lib}/gcj-%{version}/libgtkpeer.so +%{_prefix}/%{_lib}/gcj-%{version}/libgjsmalsa.so +%{_prefix}/%{_lib}/gcj-%{version}/libjawt.so +%if %{include_gappletviewer} +%{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so +%endif +%{_prefix}/%{_lib}/gcj-%{version}/libjvm.so +%dir %{_prefix}/share/java +%{_prefix}/share/java/[^sl]* +%{_prefix}/share/java/libgcj-%{version}.jar +%dir %{_prefix}/%{_lib}/security +%config(noreplace) %{_prefix}/%{_lib}/security/classpath.security +%{_prefix}/%{_lib}/logging.properties +%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d +%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db +%if %{include_gappletviewer} +%doc rpm.doc/README.libgcjwebplugin.so +%endif + +%files -n libgcj-devel +%defattr(-,root,root) +%{_prefix}/bin/addr2name.awk +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/gcj +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so +%endif +%ifarch sparc64 ppc64 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so +%endif +%ifnarch sparc sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so +%endif +%dir %{_prefix}/include/c++ +%dir %{_prefix}/include/c++/%{gcc_version} +%{_prefix}/include/c++/%{gcc_version}/[gj]* +%{_prefix}/include/c++/%{gcc_version}/org +%{_prefix}/include/c++/%{gcc_version}/sun +%{_prefix}/%{_lib}/pkgconfig/libgcj-*.pc +%doc rpm.doc/boehm-gc/* rpm.doc/libffi/* +%doc rpm.doc/libjava/* + +%files -n libgcj-src +%defattr(-,root,root) +%dir %{_prefix}/share/java +%{_prefix}/share/java/src*.zip +%{_prefix}/share/java/libgcj-tools-%{version}.jar +%endif + +%if %{build_ada} +%files gnat +%defattr(-,root,root) +%{_prefix}/bin/gnat* +%{_infodir}/gnat* +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/libexec/gcc +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform} +%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib +%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1 +%doc rpm.doc/changelogs/gcc/ada/ChangeLog* + +%files -n libgnat +%defattr(-,root,root) +%{_prefix}/%{_lib}/libgnat-*.so +%{_prefix}/%{_lib}/libgnarl-*.so +%endif + +%files -n libgomp +%defattr(-,root,root) +%{_prefix}/%{_lib}/libgomp.so.1* +%{_infodir}/libgomp.info* +%doc rpm.doc/changelogs/libgomp/ChangeLog* + +%files -n libmudflap +%defattr(-,root,root) +%{_prefix}/%{_lib}/libmudflap.so.0* +%{_prefix}/%{_lib}/libmudflapth.so.0* + +%files -n libmudflap-devel +%defattr(-,root,root) +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mf-runtime.h +%ifarch sparc ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflap.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflapth.a +%endif +%ifarch sparc64 ppc64 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflap.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflapth.a +%endif +%ifnarch sparc sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so +%endif +%doc rpm.doc/changelogs/libmudflap/ChangeLog* + +%changelog +* Wed Dec 12 2007 Jakub Jelinek 4.3.0-0.2 +- update from the trunk + +* Sun Dec 9 2007 Jakub Jelinek 4.3.0-0.1 +- initial 4.3 package, using newly created redhat/gcc-4_3-branch diff --git a/sources b/sources index 5fee11f..251a5ca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b0e332f1be680c13608e127c6ed9acf9 gcc-4.1.2-20071124.tar.bz2 +65ac33620b3605f6c612b8591d7f7fa1 gcc-4.3.0-20071212.tar.bz2