From e29a68e7a9b0a4eeedb6a4c5ed7c843fb24e4efb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 11 Sep 2009 10:19:55 +0000 Subject: [PATCH] 4.4.1-13 --- .cvsignore | 2 +- gcc.spec | 27 ++- gcc44-pr41175-2.patch | 8 +- gcc44-rh518303.patch | 30 +++ gcc44-rh522577.patch | 15 ++ ...-cselib-subreg-of-value-more-pr41276.patch | 188 ------------------ sources | 2 +- 7 files changed, 69 insertions(+), 203 deletions(-) create mode 100644 gcc44-rh518303.patch create mode 100644 gcc44-rh522577.patch delete mode 100644 gcc44-vta-cselib-subreg-of-value-more-pr41276.patch diff --git a/.cvsignore b/.cvsignore index 71dab69..9b9e5e6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ fastjar-0.97.tar.gz -gcc-4.4.1-20090910.tar.bz2 +gcc-4.4.1-20090911.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 228badd..0b5052a 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20090910 -%global SVNREV 151593 +%global DATE 20090911 +%global SVNREV 151630 %global gcc_version 4.4.1 # 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 12 +%global gcc_release 13 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %global include_gappletviewer 1 @@ -160,9 +160,11 @@ Patch16: gcc44-unwind-debug-hook.patch Patch17: gcc44-pr38757.patch Patch18: gcc44-libstdc++-docs.patch Patch19: gcc44-vta-cfgexpand-ptr-mode-pr41248.patch -Patch20: gcc44-vta-cselib-subreg-of-value-more-pr41276.patch -Patch21: gcc44-powerpc-libgcc_s_so.patch -Patch22: gcc44-pr41175.patch +Patch20: gcc44-powerpc-libgcc_s_so.patch +Patch21: gcc44-pr41175.patch +Patch22: gcc44-pr41175-2.patch +Patch23: gcc44-rh518303.patch +Patch24: gcc44-rh522577.patch Patch1000: fastjar-0.97-segfault.patch @@ -469,9 +471,11 @@ which are required to compile with the GNAT. %patch18 -p0 -b .libstdc++-docs~ %endif %patch19 -p0 -b .vta-cfgexpand-ptr-mode-pr41248~ -%patch20 -p0 -b .gcc44-vta-cselib-subreg-of-value-more-pr41276~ -%patch21 -p0 -b .powerpc-libgcc_s_so~ -%patch22 -p0 -b .pr41175~ +%patch20 -p0 -b .powerpc-libgcc_s_so~ +%patch21 -p0 -b .pr41175~ +%patch22 -p0 -b .pr41175-2~ +%patch23 -p0 -b .rh518303~ +%patch24 -p0 -b .rh522577~ # This testcase doesn't compile. rm libjava/testsuite/libjava.lang/PR35020* @@ -1827,6 +1831,11 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Fri Sep 11 2009 Jakub Jelinek 4.4.1-13 +- fix ICE in debuginfo output with BLOCK_NONLOCALIZED_VARS (#518303) +- wrap_constant when propagating for subst in debug in the combiner (#522577) +- further fix for ppc -m32 -Os out of line gpr/fpr restoring (PR target/41175) + * Thu Sep 10 2009 Jakub Jelinek 4.4.1-12 - update from gcc-4_4-branch - PRs bootstrap/41180, target/41315 diff --git a/gcc44-pr41175-2.patch b/gcc44-pr41175-2.patch index aade733..41d1b65 100644 --- a/gcc44-pr41175-2.patch +++ b/gcc44-pr41175-2.patch @@ -13,9 +13,9 @@ --- gcc/config/rs6000/rs6000.c.jj 2009-09-09 20:46:57.000000000 +0200 +++ gcc/config/rs6000/rs6000.c 2009-09-11 10:29:01.101406443 +0200 -@@ -18104,8 +18104,12 @@ rs6000_emit_stack_reset (rs6000_stack_t - if (frame_reg_rtx != sp_reg_rtx) +@@ -18083,8 +18083,12 @@ rs6000_emit_stack_reset (rs6000_stack_t { + rs6000_emit_stack_tie (); if (sp_offset != 0) - return emit_insn (gen_addsi3 (sp_reg_rtx, frame_reg_rtx, - GEN_INT (sp_offset))); @@ -28,7 +28,7 @@ else if (!savres) return emit_move_insn (sp_reg_rtx, frame_reg_rtx); } -@@ -19541,9 +19545,13 @@ rs6000_emit_epilogue (int sibcall) +@@ -19525,9 +19529,13 @@ rs6000_emit_epilogue (int sibcall) rs6000_emit_stack_reset (info, sp_reg_rtx, frame_reg_rtx, sp_offset, can_use_exit); else @@ -45,7 +45,7 @@ par = rs6000_make_savres_rtx (info, frame_reg_rtx, info->gp_save_offset, reg_mode, -@@ -19648,12 +19656,10 @@ rs6000_emit_epilogue (int sibcall) +@@ -19632,12 +19640,10 @@ rs6000_emit_epilogue (int sibcall) info->lr_save_offset + sp_offset); emit_move_insn (gen_rtx_REG (Pmode, 0), mem); diff --git a/gcc44-rh518303.patch b/gcc44-rh518303.patch new file mode 100644 index 0000000..271b1df --- /dev/null +++ b/gcc44-rh518303.patch @@ -0,0 +1,30 @@ +2009-09-09 Jakub Jelinek + + * integrate.c (set_block_abstract_flags): Call + set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs. + +--- gcc/integrate.c.jj 2009-03-04 12:12:03.000000000 +0100 ++++ gcc/integrate.c 2009-09-09 18:07:07.000000000 +0200 +@@ -167,6 +167,7 @@ set_block_abstract_flags (tree stmt, int + { + tree local_decl; + tree subblock; ++ unsigned int i; + + BLOCK_ABSTRACT (stmt) = setting; + +@@ -175,6 +176,14 @@ set_block_abstract_flags (tree stmt, int + local_decl = TREE_CHAIN (local_decl)) + set_decl_abstract_flags (local_decl, setting); + ++ for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++) ++ { ++ local_decl = BLOCK_NONLOCALIZED_VAR (stmt, i); ++ if ((TREE_CODE (local_decl) == VAR_DECL && !TREE_STATIC (local_decl)) ++ || TREE_CODE (local_decl) == PARM_DECL) ++ set_decl_abstract_flags (local_decl, setting); ++ } ++ + for (subblock = BLOCK_SUBBLOCKS (stmt); + subblock != NULL_TREE; + subblock = BLOCK_CHAIN (subblock)) diff --git a/gcc44-rh522577.patch b/gcc44-rh522577.patch new file mode 100644 index 0000000..4de10d7 --- /dev/null +++ b/gcc44-rh522577.patch @@ -0,0 +1,15 @@ +2009-09-11 Jakub Jelinek + + * combine.c (propagate_for_debug_subst): Call wrap_constant on top. + +--- gcc/combine.c.jj 2009-09-08 12:32:31.000000000 +0200 ++++ gcc/combine.c 2009-09-11 11:01:32.000000000 +0200 +@@ -2311,7 +2311,7 @@ propagate_for_debug_subst (rtx *loc, voi + to = simplify_gen_subreg (GET_MODE (x), to, + GET_MODE (from), SUBREG_BYTE (x)); + } +- *loc = to; ++ *loc = wrap_constant (GET_MODE (x), to); + pair->changed = true; + return -1; + } diff --git a/gcc44-vta-cselib-subreg-of-value-more-pr41276.patch b/gcc44-vta-cselib-subreg-of-value-more-pr41276.patch deleted file mode 100644 index a61935c..0000000 --- a/gcc44-vta-cselib-subreg-of-value-more-pr41276.patch +++ /dev/null @@ -1,188 +0,0 @@ -for gcc/ChangeLog -from Alexandre Oliva - - PR debug/41276 - PR debug/41307 - * cselib.c (cselib_expand_value_rtx_cb): Document callback - interface. - (cselib_expand_value_rtx_1): Use callback for SUBREGs. Adjust - for VALUEs, to implement the documented interface. - * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs. - Adjust for VALUEs and anything else, to implement the - documented interface. - -Index: gcc/cselib.c -=================================================================== ---- gcc/cselib.c.orig 2009-09-08 19:34:10.000000000 -0300 -+++ gcc/cselib.c 2009-09-09 05:20:52.000000000 -0300 -@@ -1053,7 +1053,10 @@ cselib_expand_value_rtx (rtx orig, bitma - } - - /* Same as cselib_expand_value_rtx, but using a callback to try to -- resolve VALUEs that expand to nothing. */ -+ resolve some expressions. The CB function should return ORIG if it -+ can't or does not want to deal with a certain RTX. Any other -+ return value, including NULL, will be used as the expansion for -+ VALUE, without any further changes. */ - - rtx - cselib_expand_value_rtx_cb (rtx orig, bitmap regs_active, int max_depth, -@@ -1068,6 +1071,9 @@ cselib_expand_value_rtx_cb (rtx orig, bi - return cselib_expand_value_rtx_1 (orig, &evd, max_depth); - } - -+/* Internal implementation of cselib_expand_value_rtx and -+ cselib_expand_value_rtx_cb. */ -+ - static rtx - cselib_expand_value_rtx_1 (rtx orig, struct expand_value_data *evd, - int max_depth) -@@ -1158,26 +1164,36 @@ cselib_expand_value_rtx_1 (rtx orig, str - - case SUBREG: - { -- rtx subreg = cselib_expand_value_rtx_1 (SUBREG_REG (orig), evd, -- max_depth - 1); -+ rtx subreg; -+ -+ if (evd->callback) -+ { -+ subreg = evd->callback (orig, evd->regs_active, max_depth, -+ evd->callback_arg); -+ if (subreg != orig) -+ return subreg; -+ } -+ -+ subreg = cselib_expand_value_rtx_1 (SUBREG_REG (orig), evd, -+ max_depth - 1); - if (!subreg) - return NULL; - scopy = simplify_gen_subreg (GET_MODE (orig), subreg, - GET_MODE (SUBREG_REG (orig)), - SUBREG_BYTE (orig)); -- if ((scopy == NULL -- || (GET_CODE (scopy) == SUBREG -- && !REG_P (SUBREG_REG (scopy)) -- && !MEM_P (SUBREG_REG (scopy)))) -- && (REG_P (SUBREG_REG (orig)) -- || MEM_P (SUBREG_REG (orig)))) -- return shallow_copy_rtx (orig); -+ if (scopy == NULL -+ || (GET_CODE (scopy) == SUBREG -+ && !REG_P (SUBREG_REG (scopy)) -+ && !MEM_P (SUBREG_REG (scopy)))) -+ return NULL; -+ - return scopy; - } - - case VALUE: - { - rtx result; -+ - if (dump_file && (dump_flags & TDF_DETAILS)) - { - fputs ("\nexpanding ", dump_file); -@@ -1185,20 +1201,16 @@ cselib_expand_value_rtx_1 (rtx orig, str - fputs (" into...", dump_file); - } - -- if (!evd->callback) -- result = NULL; -- else -+ if (evd->callback) - { - result = evd->callback (orig, evd->regs_active, max_depth, - evd->callback_arg); -- if (result == orig) -- result = NULL; -- else if (result) -- result = cselib_expand_value_rtx_1 (result, evd, max_depth); -+ -+ if (result != orig) -+ return result; - } - -- if (!result) -- result = expand_loc (CSELIB_VAL_PTR (orig)->locs, evd, max_depth); -+ result = expand_loc (CSELIB_VAL_PTR (orig)->locs, evd, max_depth); - return result; - } - default: -Index: gcc/var-tracking.c -=================================================================== ---- gcc/var-tracking.c.orig 2009-09-08 19:33:55.000000000 -0300 -+++ gcc/var-tracking.c 2009-09-08 20:08:08.000000000 -0300 -@@ -6243,7 +6243,8 @@ check_wrap_constant (enum machine_mode m - } - - /* Callback for cselib_expand_value, that looks for expressions -- holding the value in the var-tracking hash tables. */ -+ holding the value in the var-tracking hash tables. Return X for -+ standard processing, anything else is to be used as-is. */ - - static rtx - vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data) -@@ -6254,19 +6255,46 @@ vt_expand_loc_callback (rtx x, bitmap re - location_chain loc; - rtx result; - -- gcc_assert (GET_CODE (x) == VALUE); -+ if (GET_CODE (x) == SUBREG) -+ { -+ rtx subreg = SUBREG_REG (x); -+ -+ if (GET_CODE (SUBREG_REG (x)) != VALUE) -+ return x; -+ -+ subreg = cselib_expand_value_rtx_cb (SUBREG_REG (x), regs, -+ max_depth - 1, -+ vt_expand_loc_callback, data); -+ -+ if (!subreg) -+ return NULL; -+ -+ result = simplify_gen_subreg (GET_MODE (x), subreg, -+ GET_MODE (SUBREG_REG (x)), -+ SUBREG_BYTE (x)); -+ -+ /* Invalid SUBREGs are ok in debug info. ??? We could try -+ alternate expansions for the VALUE as well. */ -+ if (!result && (REG_P (subreg) || MEM_P (subreg))) -+ result = gen_rtx_raw_SUBREG (GET_MODE (x), subreg, SUBREG_BYTE (x)); -+ -+ return result; -+ } -+ -+ if (GET_CODE (x) != VALUE) -+ return x; - - if (VALUE_RECURSED_INTO (x)) -- return NULL; -+ return x; - - dv = dv_from_value (x); - var = (variable) htab_find_with_hash (vars, dv, dv_htab_hash (dv)); - - if (!var) -- return NULL; -+ return x; - - if (var->n_var_parts == 0) -- return NULL; -+ return x; - - gcc_assert (var->n_var_parts == 1); - -@@ -6283,7 +6311,10 @@ vt_expand_loc_callback (rtx x, bitmap re - } - - VALUE_RECURSED_INTO (x) = false; -- return result; -+ if (result) -+ return result; -+ else -+ return x; - } - - /* Expand VALUEs in LOC, using VARS as well as cselib's equivalence diff --git a/sources b/sources index 23c42fb..fde2eab 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -e928ff85387b4b7c8f1f065a15f0a4f9 gcc-4.4.1-20090910.tar.bz2 +36739b78d9654be37ccf6019e72db459 gcc-4.4.1-20090911.tar.bz2