From 2bd44468966f1d316d948489c3ba6289bb8eb82e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: May 25 2010 22:50:28 +0000 Subject: 4.4.4-5.fc14 --- diff --git a/.cvsignore b/.cvsignore index 00c0ebe..3e46d10 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ fastjar-0.97.tar.gz -gcc-4.4.4-20100518.tar.bz2 +gcc-4.4.4-20100525.tar.bz2 diff --git a/gcc.spec b/gcc.spec index a338abe..01aec4c 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20100518 -%global SVNREV 159543 +%global DATE 20100525 +%global SVNREV 159836 %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 4 +%global gcc_release 5 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 @@ -165,7 +165,6 @@ Patch5: gcc44-ppc32-retaddr.patch Patch6: gcc44-pr33763.patch Patch7: gcc44-rh330771.patch Patch8: gcc44-rh341221.patch -Patch9: gcc44-java-debug-iface-type.patch Patch10: gcc44-i386-libgomp.patch Patch11: gcc44-sparc-config-detection.patch Patch12: gcc44-libgomp-omp_h-multilib.patch @@ -176,7 +175,7 @@ Patch17: gcc44-pr38757.patch Patch18: gcc44-libstdc++-docs.patch Patch19: gcc44-ppc64-aixdesc.patch Patch20: gcc44-no-add-needed.patch -Patch21: gcc44-debug-sra-be.patch +Patch21: gcc44-pr44199.patch Patch1000: fastjar-0.97-segfault.patch Patch1001: fastjar-0.97-len1.patch @@ -471,7 +470,6 @@ which are required to compile with the GNAT. %patch6 -p0 -b .pr33763~ %patch7 -p0 -b .rh330771~ %patch8 -p0 -b .rh341221~ -%patch9 -p0 -b .java-debug-iface-type~ %patch10 -p0 -b .i386-libgomp~ %patch11 -p0 -b .sparc-config-detection~ %patch12 -p0 -b .libgomp-omp_h-multilib~ @@ -488,7 +486,7 @@ which are required to compile with the GNAT. %if 0%{?fedora} >= 13 %patch20 -p0 -b .no-add-needed~ %endif -%patch21 -p0 -b .debug-sra-be~ +%patch21 -p0 -b .pr44199~ # This testcase doesn't compile. rm libjava/testsuite/libjava.lang/PR35020* @@ -1878,6 +1876,14 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Tue May 25 2010 Jakub Jelinek 4.4.4-5 +- update from gcc-4_4-branch + - PRs bootstrap/43870, debug/44205, target/43733, target/44074, + target/44202, target/44245, tree-optimization/43845 + - fix cv-qual issue with function types (#593750, PR c++/44193) +- VTA backports + - PRs debug/41371, debug/42801, debug/43260, debug/43521 + * Tue May 18 2010 Jakub Jelinek 4.4.4-4 - update from gcc-4_4-branch - PR fortran/44135 diff --git a/gcc44-debug-sra-be.patch b/gcc44-debug-sra-be.patch deleted file mode 100644 index 8f82f6d..0000000 --- a/gcc44-debug-sra-be.patch +++ /dev/null @@ -1,92 +0,0 @@ -2010-05-18 Jakub Jelinek - - * dwarf2out.c (new_loc_descr_op_bit_piece): Add offset - argument. Don't use DW_OP_piece if offset is non-zero, - put offset into second DW_OP_bit_piece argument. - (dw_sra_loc_expr): Adjust callers. For memory expressions - compute offset. - ---- gcc/dwarf2out.c.jj 2010-05-15 08:09:16.000000000 +0200 -+++ gcc/dwarf2out.c 2010-05-18 15:49:26.000000000 +0200 -@@ -14364,12 +14364,12 @@ dw_loc_list_1 (tree loc, rtx varloc, int - if it is not possible. */ - - static dw_loc_descr_ref --new_loc_descr_op_bit_piece (HOST_WIDE_INT bitsize) -+new_loc_descr_op_bit_piece (HOST_WIDE_INT bitsize, HOST_WIDE_INT offset) - { -- if ((bitsize % BITS_PER_UNIT) == 0) -+ if ((bitsize % BITS_PER_UNIT) == 0 && offset == 0) - return new_loc_descr (DW_OP_piece, bitsize / BITS_PER_UNIT, 0); - else if (dwarf_version >= 3 || !dwarf_strict) -- return new_loc_descr (DW_OP_bit_piece, bitsize, 0); -+ return new_loc_descr (DW_OP_bit_piece, bitsize, offset); - else - return NULL; - } -@@ -14448,7 +14448,7 @@ dw_sra_loc_expr (tree decl, rtx loc) - if (padsize > decl_size) - return NULL; - decl_size -= padsize; -- *descr_tail = new_loc_descr_op_bit_piece (padsize); -+ *descr_tail = new_loc_descr_op_bit_piece (padsize, 0); - if (*descr_tail == NULL) - return NULL; - descr_tail = &(*descr_tail)->dw_loc_next; -@@ -14461,7 +14461,46 @@ dw_sra_loc_expr (tree decl, rtx loc) - decl_size -= bitsize; - if (last == NULL) - { -- *descr_tail = new_loc_descr_op_bit_piece (bitsize); -+ HOST_WIDE_INT offset = 0; -+ if (GET_CODE (varloc) == VAR_LOCATION -+ && GET_CODE (PAT_VAR_LOCATION_LOC (varloc)) != PARALLEL) -+ { -+ varloc = PAT_VAR_LOCATION_LOC (varloc); -+ if (GET_CODE (varloc) == EXPR_LIST) -+ varloc = XEXP (varloc, 0); -+ } -+ do -+ { -+ if (GET_CODE (varloc) == CONST -+ || GET_CODE (varloc) == SIGN_EXTEND -+ || GET_CODE (varloc) == ZERO_EXTEND) -+ varloc = XEXP (varloc, 0); -+ else if (GET_CODE (varloc) == SUBREG) -+ varloc = SUBREG_REG (varloc); -+ else -+ break; -+ } -+ while (1); -+ /* DW_OP_bit_size offset should be zero for register -+ or implicit location descriptions and empty location -+ descriptions, but for memory addresses needs big endian -+ adjustment. */ -+ if (MEM_P (varloc) -+ && ((unsigned HOST_WIDE_INT) INTVAL (MEM_SIZE (varloc)) -+ * BITS_PER_UNIT) != bitsize) -+ { -+ unsigned HOST_WIDE_INT memsize -+ = INTVAL (MEM_SIZE (varloc)) * BITS_PER_UNIT; -+ if (BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN -+ && (memsize > BITS_PER_WORD || bitsize > BITS_PER_WORD)) -+ return NULL; -+ if (memsize < bitsize) -+ return NULL; -+ if (BITS_BIG_ENDIAN) -+ offset = memsize - bitsize; -+ } -+ -+ *descr_tail = new_loc_descr_op_bit_piece (bitsize, offset); - if (*descr_tail == NULL) - return NULL; - descr_tail = &(*descr_tail)->dw_loc_next; -@@ -14472,7 +14511,7 @@ dw_sra_loc_expr (tree decl, rtx loc) - the decl. */ - if (descr != NULL && decl_size != 0) - { -- *descr_tail = new_loc_descr_op_bit_piece (decl_size); -+ *descr_tail = new_loc_descr_op_bit_piece (decl_size, 0); - if (*descr_tail == NULL) - return NULL; - } diff --git a/gcc44-java-debug-iface-type.patch b/gcc44-java-debug-iface-type.patch deleted file mode 100644 index 63a1b50..0000000 --- a/gcc44-java-debug-iface-type.patch +++ /dev/null @@ -1,17 +0,0 @@ -2008-01-25 Jakub Jelinek - - * lang.c (java_classify_record): Revert 2007-12-20 change. - ---- gcc/java/lang.c 2007-12-27 09:09:49.000000000 +0100 -+++ gcc/java/lang.c 2008-01-25 17:43:57.000000000 +0100 -@@ -965,9 +965,7 @@ java_classify_record (tree type) - if (! CLASS_P (type)) - return RECORD_IS_STRUCT; - -- /* ??? GDB does not support DW_TAG_interface_type as of December, -- 2007. Re-enable this at a later time. */ -- if (0 && CLASS_INTERFACE (TYPE_NAME (type))) -+ if (CLASS_INTERFACE (TYPE_NAME (type))) - return RECORD_IS_INTERFACE; - - return RECORD_IS_CLASS; diff --git a/gcc44-pr44199.patch b/gcc44-pr44199.patch new file mode 100644 index 0000000..f68c05c --- /dev/null +++ b/gcc44-pr44199.patch @@ -0,0 +1,60 @@ +2010-05-20 Jakub Jelinek + + PR target/44199 + * config/rs6000/rs6000.c (rs6000_emit_epilogue): If cfun->calls_alloca + or total_size is larger than red zone size for non-V4 ABI, emit a + stack_tie resp. frame_tie insn before stack pointer restore. + * config/rs6000/rs6000.md (frame_tie): New insn. + +--- gcc/config/rs6000/rs6000.c.jj 2010-05-17 07:52:06.000000000 +0200 ++++ gcc/config/rs6000/rs6000.c 2010-05-19 22:15:53.000000000 +0200 +@@ -19775,6 +19775,16 @@ rs6000_emit_epilogue (int sibcall) + frame_reg_rtx = sp_reg_rtx; + if (DEFAULT_ABI == ABI_V4) + frame_reg_rtx = gen_rtx_REG (Pmode, 11); ++ /* Prevent reordering memory accesses against stack pointer restore. */ ++ else if (cfun->calls_alloca ++ || offset_below_red_zone_p (-info->total_size)) ++ { ++ rtx mem1 = gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx); ++ rtx mem2 = gen_rtx_MEM (BLKmode, sp_reg_rtx); ++ MEM_NOTRAP_P (mem1) = 1; ++ MEM_NOTRAP_P (mem2) = 1; ++ emit_insn (gen_frame_tie (mem1, mem2)); ++ } + + insn = emit_insn (gen_add3_insn (frame_reg_rtx, hard_frame_pointer_rtx, + GEN_INT (info->total_size))); +@@ -19784,6 +19794,14 @@ rs6000_emit_epilogue (int sibcall) + && DEFAULT_ABI != ABI_V4 + && !crtl->calls_eh_return) + { ++ /* Prevent reordering memory accesses against stack pointer restore. */ ++ if (cfun->calls_alloca ++ || offset_below_red_zone_p (-info->total_size)) ++ { ++ rtx mem = gen_rtx_MEM (BLKmode, sp_reg_rtx); ++ MEM_NOTRAP_P (mem) = 1; ++ emit_insn (gen_stack_tie (mem)); ++ } + insn = emit_insn (gen_add3_insn (sp_reg_rtx, sp_reg_rtx, + GEN_INT (info->total_size))); + sp_offset = 0; +--- gcc/config/rs6000/rs6000.md.jj 2010-03-26 17:13:37.000000000 +0100 ++++ gcc/config/rs6000/rs6000.md 2010-05-19 22:15:19.000000000 +0200 +@@ -15286,6 +15286,15 @@ (define_insn "stack_tie" + "" + [(set_attr "length" "0")]) + ++; Like stack_tie, but depend on both fp and sp based memory. ++(define_insn "frame_tie" ++ [(set (match_operand:BLK 0 "memory_operand" "+m") ++ (unspec:BLK [(match_dup 0) ++ (match_operand:BLK 1 "memory_operand" "m")] UNSPEC_TIE))] ++ "" ++ "" ++ [(set_attr "length" "0")]) ++ + + (define_expand "epilogue" + [(use (const_int 0))] diff --git a/import.log b/import.log index c620a56..95788ba 100644 --- a/import.log +++ b/import.log @@ -17,3 +17,4 @@ gcc-4_4_4-1_fc14:HEAD:gcc-4.4.4-1.fc14.src.rpm:1272658058 gcc-4_4_4-2_fc14:HEAD:gcc-4.4.4-2.fc14.src.rpm:1272918393 gcc-4_4_4-3_fc14:HEAD:gcc-4.4.4-3.fc14.src.rpm:1273873902 gcc-4_4_4-4_fc14:HEAD:gcc-4.4.4-4.fc14.src.rpm:1274217418 +gcc-4_4_4-5_fc14:HEAD:gcc-4.4.4-5.fc14.src.rpm:1274827803 diff --git a/sources b/sources index ecf79a9..d99cd55 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -b7e838fc8d20ea7431118b45d6a7ecca gcc-4.4.4-20100518.tar.bz2 +c413ea290fdbe54dbd60816ad80857a1 gcc-4.4.4-20100525.tar.bz2