From e308cb012da7e0b1fd748e5143a3f507468a6c04 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 24 Jun 2010 20:17:17 +0000 Subject: [PATCH] 4.4.4-9 --- .cvsignore | 2 +- fastjar-man.patch | 27 ++++++ gcc.spec | 77 ++++++++++------ gcc44-pr44492.patch | 207 +++++++++++++++++++++++++++++++++++++++++++ gcc44-pr44542.patch | 49 ++++++++++ gcc44-pr44610.patch | 32 +++++++ gcc44-rh341221.patch | 28 ------ import.log | 1 + sources | 2 +- 9 files changed, 369 insertions(+), 56 deletions(-) create mode 100644 fastjar-man.patch create mode 100644 gcc44-pr44492.patch create mode 100644 gcc44-pr44542.patch create mode 100644 gcc44-pr44610.patch delete mode 100644 gcc44-rh341221.patch diff --git a/.cvsignore b/.cvsignore index f13fa87..6b76a78 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ fastjar-0.97.tar.gz -gcc-4.4.4-20100611.tar.bz2 +gcc-4.4.4-20100624.tar.bz2 diff --git a/fastjar-man.patch b/fastjar-man.patch new file mode 100644 index 0000000..34bf704 --- /dev/null +++ b/fastjar-man.patch @@ -0,0 +1,27 @@ +2010-03-24 Jan Kratochvil + + * Makefile.am (POD2MAN): Provide --date from ChangeLog. + * Makefile.in: Regenerate. + +--- fastjar-0.97/Makefile.am.jj 2008-10-16 04:24:55.000000000 -0400 ++++ fastjar-0.97/Makefile.am 2010-06-21 09:29:41.021398000 -0400 +@@ -39,7 +39,7 @@ EXTRA_DIST = \ + texi2pod.pl + + TEXI2POD = perl $(srcdir)/texi2pod.pl +-POD2MAN = pod2man --center="GNU" --release=@VERSION@ ++POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog) + + .pod.1: + -($(POD2MAN) --section=1 $< > $(@).T$$$$ && \ +--- fastjar-0.97/Makefile.in.jj 2008-10-16 04:15:16.000000000 -0400 ++++ fastjar-0.97/Makefile.in 2010-06-21 09:30:15.882810000 -0400 +@@ -515,7 +515,7 @@ EXTRA_DIST = \ + texi2pod.pl + + TEXI2POD = perl $(srcdir)/texi2pod.pl +-POD2MAN = pod2man --center="GNU" --release=@VERSION@ ++POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog) + + #SPLINT_FLAGS=-I . -I $(srcdir)/lib -I $(srcdir) -DHAVE_CONFIG_H +posixlib +weak + SPLINT_FLAGS = -I . -I $(srcdir)/lib -I $(srcdir) -DHAVE_CONFIG_H -DPRIx32= -warnposix +weak diff --git a/gcc.spec b/gcc.spec index a2e8320..6320523 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20100611 -%global SVNREV 160596 +%global DATE 20100624 +%global SVNREV 161335 %global gcc_version 4.4.4 # Note, gcc_release must be integer, if you want to add suffixes to # %{release}, append them after %{gcc_release} on Release: line. -%global gcc_release 8 +%global gcc_release 9 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 @@ -164,22 +164,25 @@ Patch4: gcc44-java-nomulti.patch Patch5: gcc44-ppc32-retaddr.patch Patch6: gcc44-pr33763.patch Patch7: gcc44-rh330771.patch -Patch8: gcc44-rh341221.patch -Patch10: gcc44-i386-libgomp.patch -Patch11: gcc44-sparc-config-detection.patch -Patch12: gcc44-libgomp-omp_h-multilib.patch -Patch13: gcc44-libtool-no-rpath.patch -Patch14: gcc44-cloog-dl.patch -Patch16: gcc44-unwind-debug-hook.patch -Patch17: gcc44-pr38757.patch -Patch18: gcc44-libstdc++-docs.patch -Patch19: gcc44-ppc64-aixdesc.patch -Patch20: gcc44-no-add-needed.patch +Patch8: gcc44-i386-libgomp.patch +Patch9: gcc44-sparc-config-detection.patch +Patch10: gcc44-libgomp-omp_h-multilib.patch +Patch11: gcc44-libtool-no-rpath.patch +Patch12: gcc44-cloog-dl.patch +Patch13: gcc44-unwind-debug-hook.patch +Patch14: gcc44-pr38757.patch +Patch15: gcc44-libstdc++-docs.patch +Patch16: gcc44-ppc64-aixdesc.patch +Patch17: gcc44-no-add-needed.patch +Patch18: gcc44-pr44492.patch +Patch19: gcc44-pr44542.patch +Patch20: gcc44-pr44610.patch Patch1000: fastjar-0.97-segfault.patch Patch1001: fastjar-0.97-len1.patch Patch1002: fastjar-0.97-filename0.patch Patch1003: fastjar-CVE-2010-0831.patch +Patch1004: fastjar-man.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -496,23 +499,25 @@ GNAT is a GNU Ada 95 front-end to GCC. This package includes static libraries. %patch5 -p0 -b .ppc32-retaddr~ %patch6 -p0 -b .pr33763~ %patch7 -p0 -b .rh330771~ -%patch8 -p0 -b .rh341221~ -%patch10 -p0 -b .i386-libgomp~ -%patch11 -p0 -b .sparc-config-detection~ -%patch12 -p0 -b .libgomp-omp_h-multilib~ -%patch13 -p0 -b .libtool-no-rpath~ +%patch8 -p0 -b .i386-libgomp~ +%patch9 -p0 -b .sparc-config-detection~ +%patch10 -p0 -b .libgomp-omp_h-multilib~ +%patch11 -p0 -b .libtool-no-rpath~ %if %{build_cloog} -%patch14 -p0 -b .cloog-dl~ +%patch12 -p0 -b .cloog-dl~ %endif -%patch16 -p0 -b .unwind-debug-hook~ -%patch17 -p0 -b .pr38757~ +%patch13 -p0 -b .unwind-debug-hook~ +%patch14 -p0 -b .pr38757~ %if %{build_libstdcxx_docs} -%patch18 -p0 -b .libstdc++-docs~ +%patch15 -p0 -b .libstdc++-docs~ %endif -%patch19 -p0 -b .ppc64-aixdesc~ +%patch16 -p0 -b .ppc64-aixdesc~ %if 0%{?fedora} >= 13 -%patch20 -p0 -b .no-add-needed~ +%patch17 -p0 -b .no-add-needed~ %endif +%patch18 -p0 -b .pr44492~ +%patch19 -p0 -b .pr44542~ +%patch20 -p0 -b .pr44610~ # This testcase doesn't compile. rm libjava/testsuite/libjava.lang/PR35020* @@ -523,6 +528,7 @@ tar xzf %{SOURCE4} %patch1001 -p0 -b .fastjar-0.97-len1~ %patch1002 -p0 -b .fastjar-0.97-filename0~ %patch1003 -p0 -b .fastjar-CVE-2010-0831~ +%patch1004 -p0 -b .fastjar-man~ %if %{bootstrap_java} tar xjf %{SOURCE10} @@ -1929,7 +1935,7 @@ fi %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adalib/libgnarl.a %endif %ifnarch sparcv9 sparc64 ppc ppc64 -%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib/libgnat.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib/libgnarl.a %endif @@ -1998,6 +2004,25 @@ fi %endif %changelog +* Thu Jun 24 2010 Jakub Jelinek 4.4.4-9 +- update from gcc-4_4-branch + - PRs bootstrap/44426, bootstrap/44544, c++/44627, fortran/44536, + libgcj/44216, target/39690, target/43740, target/44261, target/44481, + target/44534, target/44615, testsuite/32843, testsuite/43739, + tree-optimization/44508 +- VTA backports + - PRs debug/43650, debug/44181, debug/44247 +- -Wunused-but-set-* ->*/.* fix (PR c++/44619) +- undeprecate #ident and #sccs (#606069) +%if 0%{?fedora} >= 14 +- fix up libgnat-static +%endif +- fixup dates in generated man pages even for fastjar and gcc/ man pages +- don't realign stack on x86/x86-64 just because a DECL_ALIGN was set + too high by expansion code (#603924, PR target/44542) +- don't allow side-effects in inline-asm memory operands unless + < or > is present in operand's constraint (#602359, PR middle-end/44492) + * Fri Jun 11 2010 Jakub Jelinek 4.4.4-8 - update from gcc-4_4-branch - fix demangler (PR other/43838) diff --git a/gcc44-pr44492.patch b/gcc44-pr44492.patch new file mode 100644 index 0000000..cbedae8 --- /dev/null +++ b/gcc44-pr44492.patch @@ -0,0 +1,207 @@ +2010-06-24 Jakub Jelinek + + PR middle-end/44492 + * recog.h (struct recog_data): Add is_asm field. + * recog.c (asm_operand_ok, constrain_operands): If neither < nor > is + present in constraints of inline-asm operand and memory operand + contains {PRE,POST}_{INC,DEC,MODIFY}, return 0. + (extract_insn): Initialize recog_data.is_asm. + * doc/md.texi (Constraints): Document operand side-effect rules. + + * g++.dg/torture/pr44492.C: New test. + +--- gcc/doc/md.texi (revision 161327) ++++ gcc/doc/md.texi (revision 161328) +@@ -1052,6 +1052,10 @@ an operand may be in a register, and whi + operand can be a memory reference, and which kinds of address; whether the + operand may be an immediate constant, and which possible values it may + have. Constraints can also require two operands to match. ++Side-effects aren't allowed in operands of inline @code{asm}, unless ++@samp{<} or @samp{>} constraints are used, because there is no guarantee ++that the side-effects will happen exactly once in an instruction that can update ++the addressing register. + + @ifset INTERNALS + @menu +@@ -1129,12 +1133,21 @@ would fit the @samp{m} constraint but no + @cindex @samp{<} in constraint + @item @samp{<} + A memory operand with autodecrement addressing (either predecrement or +-postdecrement) is allowed. ++postdecrement) is allowed. In inline @code{asm} this constraint is only ++allowed if the operand is used exactly once in an instruction that can ++handle the side-effects. Not using an operand with @samp{<} in constraint ++string in the inline @code{asm} pattern at all or using it in multiple ++instructions isn't valid, because the side-effects wouldn't be performed ++or would be performed more than once. Furthermore, on some targets ++the operand with @samp{<} in constraint string must be accompanied by ++special instruction suffixes like @code{%U0} instruction suffix on PowerPC ++or @code{%P0} on IA-64. + + @cindex @samp{>} in constraint + @item @samp{>} + A memory operand with autoincrement addressing (either preincrement or +-postincrement) is allowed. ++postincrement) is allowed. In inline @code{asm} the same restrictions ++as for @samp{<} apply. + + @cindex @samp{r} in constraint + @cindex registers in constraints +--- gcc/recog.c (revision 161327) ++++ gcc/recog.c (revision 161328) +@@ -1601,6 +1601,9 @@ int + asm_operand_ok (rtx op, const char *constraint, const char **constraints) + { + int result = 0; ++#ifdef AUTO_INC_DEC ++ bool incdec_ok = false; ++#endif + + /* Use constrain_operands after reload. */ + gcc_assert (!reload_completed); +@@ -1608,7 +1611,7 @@ asm_operand_ok (rtx op, const char *cons + /* Empty constraint string is the same as "X,...,X", i.e. X for as + many alternatives as required to match the other operands. */ + if (*constraint == '\0') +- return 1; ++ result = 1; + + while (*constraint) + { +@@ -1685,6 +1688,9 @@ asm_operand_ok (rtx op, const char *cons + || GET_CODE (XEXP (op, 0)) == PRE_DEC + || GET_CODE (XEXP (op, 0)) == POST_DEC)) + result = 1; ++#ifdef AUTO_INC_DEC ++ incdec_ok = true; ++#endif + break; + + case '>': +@@ -1693,6 +1699,9 @@ asm_operand_ok (rtx op, const char *cons + || GET_CODE (XEXP (op, 0)) == PRE_INC + || GET_CODE (XEXP (op, 0)) == POST_INC)) + result = 1; ++#ifdef AUTO_INC_DEC ++ incdec_ok = true; ++#endif + break; + + case 'E': +@@ -1814,6 +1823,23 @@ asm_operand_ok (rtx op, const char *cons + return 0; + } + ++#ifdef AUTO_INC_DEC ++ /* For operands without < or > constraints reject side-effects. */ ++ if (!incdec_ok && result && MEM_P (op)) ++ switch (GET_CODE (XEXP (op, 0))) ++ { ++ case PRE_INC: ++ case POST_INC: ++ case PRE_DEC: ++ case POST_DEC: ++ case PRE_MODIFY: ++ case POST_MODIFY: ++ return 0; ++ default: ++ break; ++ } ++#endif ++ + return result; + } + +@@ -2039,6 +2065,7 @@ extract_insn (rtx insn) + recog_data.n_operands = 0; + recog_data.n_alternatives = 0; + recog_data.n_dups = 0; ++ recog_data.is_asm = false; + + switch (GET_CODE (body)) + { +@@ -2085,6 +2112,7 @@ extract_insn (rtx insn) + while (*p) + recog_data.n_alternatives += (*p++ == ','); + } ++ recog_data.is_asm = true; + break; + } + fatal_insn_not_found (insn); +@@ -2699,6 +2727,30 @@ constrain_operands (int strict) + = recog_data.operand[funny_match[funny_match_index].this_op]; + } + ++#ifdef AUTO_INC_DEC ++ /* For operands without < or > constraints reject side-effects. */ ++ if (recog_data.is_asm) ++ { ++ for (opno = 0; opno < recog_data.n_operands; opno++) ++ if (MEM_P (recog_data.operand[opno])) ++ switch (GET_CODE (XEXP (recog_data.operand[opno], 0))) ++ { ++ case PRE_INC: ++ case POST_INC: ++ case PRE_DEC: ++ case POST_DEC: ++ case PRE_MODIFY: ++ case POST_MODIFY: ++ if (strchr (recog_data.constraints[opno], '<') == NULL ++ || strchr (recog_data.constraints[opno], '>') ++ == NULL) ++ return 0; ++ break; ++ default: ++ break; ++ } ++ } ++#endif + return 1; + } + } +--- gcc/recog.h (revision 161327) ++++ gcc/recog.h (revision 161328) +@@ -230,6 +230,9 @@ struct recog_data + /* The number of alternatives in the constraints for the insn. */ + char n_alternatives; + ++ /* True if insn is ASM_OPERANDS. */ ++ bool is_asm; ++ + /* Specifies whether an insn alternative is enabled using the + `enabled' attribute in the insn pattern definition. For back + ends not using the `enabled' attribute the array fields are +--- gcc/testsuite/g++.dg/torture/pr44492.C (revision 0) ++++ gcc/testsuite/g++.dg/torture/pr44492.C (revision 161328) +@@ -0,0 +1,31 @@ ++// PR middle-end/44492 ++// { dg-do run } ++ ++struct T { unsigned long p; }; ++struct S { T a, b, c; unsigned d; }; ++ ++__attribute__((noinline)) ++void ++bar (const T &x, const T &y) ++{ ++ if (x.p != 0x2348 || y.p != 0x2346) ++ __builtin_abort (); ++} ++ ++__attribute__((noinline)) ++void ++foo (S &s, T e) ++{ ++ unsigned long a = e.p; ++ unsigned long b = s.b.p; ++ __asm__ volatile ("" : : "rm" (a), "rm" (b)); ++ bar (e, s.b); ++} ++ ++int ++main () ++{ ++ S s = { { 0x2345 }, { 0x2346 }, { 0x2347 }, 6 }; ++ T t = { 0x2348 }; ++ foo (s, t); ++} diff --git a/gcc44-pr44542.patch b/gcc44-pr44542.patch new file mode 100644 index 0000000..0926e40 --- /dev/null +++ b/gcc44-pr44542.patch @@ -0,0 +1,49 @@ +2010-06-17 Jakub Jelinek + + PR target/44542 + * cfgexpand.c (expand_one_stack_var_at): Limit align to maximum + of max_used_stack_slot_alignment and PREFERRED_STACK_BOUNDARY + instead of MAX_SUPPORTED_STACK_ALIGNMENT. + (expand_one_var): Don't consider DECL_ALIGN for variables for + which expand_one_stack_var_at has been already called. + +--- gcc/cfgexpand.c.jj 2010-06-17 17:01:11.964198458 +0200 ++++ gcc/cfgexpand.c 2010-06-17 18:25:18.940335757 +0200 +@@ -839,7 +839,7 @@ static void + expand_one_stack_var_at (tree decl, HOST_WIDE_INT offset) + { + /* Alignment is unsigned. */ +- unsigned HOST_WIDE_INT align; ++ unsigned HOST_WIDE_INT align, max_align; + rtx x; + + /* If this fails, we've overflowed the stack frame. Error nicely? */ +@@ -852,10 +852,10 @@ expand_one_stack_var_at (tree decl, HOST + offset -= frame_phase; + align = offset & -offset; + align *= BITS_PER_UNIT; +- if (align == 0) +- align = STACK_BOUNDARY; +- else if (align > MAX_SUPPORTED_STACK_ALIGNMENT) +- align = MAX_SUPPORTED_STACK_ALIGNMENT; ++ max_align = MAX (crtl->max_used_stack_slot_alignment, ++ PREFERRED_STACK_BOUNDARY); ++ if (align == 0 || align > max_align) ++ align = max_align; + DECL_ALIGN (decl) = align; + DECL_USER_ALIGN (decl) = 0; + +@@ -1054,6 +1054,13 @@ expand_one_var (tree var, bool toplevel, + align = MINIMUM_ALIGNMENT (TREE_TYPE (var), + TYPE_MODE (TREE_TYPE (var)), + TYPE_ALIGN (TREE_TYPE (var))); ++ else if (DECL_HAS_VALUE_EXPR_P (var) ++ || (DECL_RTL_SET_P (var) && MEM_P (DECL_RTL (var)))) ++ /* Don't consider debug only variables with DECL_HAS_VALUE_EXPR_P set ++ or variables which were assigned a stack slot already by ++ expand_one_stack_var_at - in the latter case DECL_ALIGN has been ++ changed from the offset chosen to it. */ ++ align = crtl->stack_alignment_estimated; + else + align = MINIMUM_ALIGNMENT (var, DECL_MODE (var), DECL_ALIGN (var)); + diff --git a/gcc44-pr44610.patch b/gcc44-pr44610.patch new file mode 100644 index 0000000..de89604 --- /dev/null +++ b/gcc44-pr44610.patch @@ -0,0 +1,32 @@ +2010-06-23 Alexandre Oliva + + PR debug/44610 + * simplify-rtx.c (delegitimize_mem_from_attrs): Don't use a base + address if the offset is unknown. + +--- gcc/simplify-rtx.c.orig 2010-06-23 01:15:14.000000000 -0300 ++++ gcc/simplify-rtx.c 2010-06-23 01:20:21.000000000 -0300 +@@ -208,10 +208,11 @@ avoid_constant_pool_reference (rtx x) + rtx + delegitimize_mem_from_attrs (rtx x) + { ++ /* MEMs without MEM_OFFSETs may have been offset, so we can't just ++ use their base addresses as equivalent. */ + if (MEM_P (x) + && MEM_EXPR (x) +- && (!MEM_OFFSET (x) +- || GET_CODE (MEM_OFFSET (x)) == CONST_INT)) ++ && MEM_OFFSET (x)) + { + tree decl = MEM_EXPR (x); + enum machine_mode mode = GET_MODE (x); +@@ -264,8 +265,7 @@ delegitimize_mem_from_attrs (rtx x) + { + rtx newx; + +- if (MEM_OFFSET (x)) +- offset += INTVAL (MEM_OFFSET (x)); ++ offset += INTVAL (MEM_OFFSET (x)); + + newx = DECL_RTL (decl); + diff --git a/gcc44-rh341221.patch b/gcc44-rh341221.patch deleted file mode 100644 index 1f5ff91..0000000 --- a/gcc44-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-12-07 17:55:00.000000000 +0100 -+++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100 -@@ -31,7 +31,7 @@ TOOLS_MANFILES = \ - gtnameserv.1 \ - gjdoc.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 -@@ -382,7 +382,7 @@ TOOLS_MANFILES = \ - gtnameserv.1 \ - gjdoc.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/import.log b/import.log index 8ed359c..fd3b2e9 100644 --- a/import.log +++ b/import.log @@ -26,3 +26,4 @@ gcc-4_4_4-4_fc13:F-13:gcc-4.4.4-4.fc13.src.rpm:1274217265 gcc-4_4_4-5_fc13:F-13:gcc-4.4.4-5.fc13.src.rpm:1274827909 gcc-4_4_4-7_fc13:F-13:gcc-4.4.4-7.fc13.src.rpm:1275991168 gcc-4_4_4-8_fc13:F-13:gcc-4.4.4-8.fc13.src.rpm:1276244305 +gcc-4_4_4-9_fc13:F-13:gcc-4.4.4-9.fc13.src.rpm:1277410568 diff --git a/sources b/sources index bae7310..7f1bce5 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -a896e6090fb9f4ef74a8b292fda42af4 gcc-4.4.4-20100611.tar.bz2 +32d385c34788faa23d93cd8b55fecd32 gcc-4.4.4-20100624.tar.bz2