From 108494b92dc60fa9d1b33556b9efa956bc33fa2d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Jan 21 2010 17:25:47 +0000 Subject: 4.4.3-1 --- diff --git a/.cvsignore b/.cvsignore index bc790a9..b0e15f9 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ fastjar-0.97.tar.gz -gcc-4.4.2-20100114.tar.bz2 +gcc-4.4.3-20100121.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 854c041..2719dc0 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20100114 -%global SVNREV 155909 -%global gcc_version 4.4.2 +%global DATE 20100121 +%global SVNREV 156157 +%global gcc_version 4.4.3 # 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 25 +%global gcc_release 1 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %if 0%{?fedora} >= 13 @@ -166,9 +166,7 @@ Patch17: gcc44-pr38757.patch Patch18: gcc44-libstdc++-docs.patch Patch19: gcc44-ppc64-aixdesc.patch Patch20: gcc44-max-vartrack-size.patch -Patch21: gcc44-pr42657.patch -Patch22: gcc44-pr42608.patch -Patch23: gcc44-pr42674.patch +Patch21: gcc44-vta-non-call-exception.patch Patch1000: fastjar-0.97-segfault.patch Patch1001: fastjar-0.97-len1.patch @@ -478,9 +476,7 @@ which are required to compile with the GNAT. %endif %patch19 -p0 -b .ppc64-aixdesc~ %patch20 -p0 -b .max-vartrack-size~ -%patch21 -p0 -b .pr42657~ -%patch22 -p0 -b .pr42608~ -%patch23 -p0 -b .pr42674~ +%patch21 -p0 -b .vta-non-call-exception~ # This testcase doesn't compile. rm libjava/testsuite/libjava.lang/PR35020* @@ -494,7 +490,7 @@ tar xzf %{SOURCE4} tar xjf %{SOURCE10} %endif -sed -i -e 's/4\.4\.3/4.4.2/' gcc/BASE-VER +sed -i -e 's/4\.4\.4/4.4.3/' gcc/BASE-VER echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE # Default to -gdwarf-3 rather than -gdwarf-2 @@ -1870,6 +1866,32 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Thu Jan 21 2010 Jakub Jelinek 4.4.3-1 +- update from gcc-4_4-branch + - GCC 4.4.3 release +- don't insert DEBUG_STMTs after stmts that can throw, instead insert them + at the start of the next bb + +* Thu Jan 21 2010 Jakub Jelinek 4.4.2-28 +- update from gcc-4_4-branch + - PRs middle-end/42803, rtl-optimization/42691, target/42542, target/42774, + tree-optimization/41826, tree-optimization/42773 + - fix DW_OP_mod handling in the unwinder +- VTA backports + - PRs debug/42782, debug/42767 + - avoid dead VALUES to magically reappear during var-tracking + (#557068, PR debug/42715) + - don't assume non-addressable automatic MEMs die at each call + during var-tracking (#556975, PR debug/42728) + +* Fri Jan 15 2010 Jakub Jelinek 4.4.2-27 +- fix ICE with std::complex copy (#555705, PR middle-end/42760) +- avoid exponential hangs in gen_lsm_tmp_name + +* Fri Jan 15 2010 Jakub Jelinek 4.4.2-26 +- update from gcc-4_4-branch + - PR c++/42655 + * Thu Jan 14 2010 Jakub Jelinek 4.4.2-25 - update from gcc-4_4-branch - PRs c/42721, middle-end/40281, middle-end/42667, rtl-optimization/42699 diff --git a/gcc44-max-vartrack-size.patch b/gcc44-max-vartrack-size.patch index 496e346..70bcd75 100644 --- a/gcc44-max-vartrack-size.patch +++ b/gcc44-max-vartrack-size.patch @@ -11,8 +11,8 @@ flag_var_tracking_assignments. * Makefile.in (var-tracking.o): Adjust dependencies. ---- gcc/doc/invoke.texi.jj 2009-12-09 00:36:51.000000000 +0100 -+++ gcc/doc/invoke.texi 2010-01-05 10:23:34.000000000 +0100 +--- gcc/doc/invoke.texi.jj 2010-01-09 20:39:58.000000000 +0100 ++++ gcc/doc/invoke.texi 2010-01-21 10:00:15.979730377 +0100 @@ -7937,6 +7937,15 @@ with more basic blocks than this paramet motion optimization performed on them. The default value of the parameter is 1000 for -O1 and 10000 for -O2 and above. @@ -29,8 +29,8 @@ @item min-nondebug-insn-uid Use uids starting at this parameter for nondebug insns. The range below the parameter is reserved exclusively for debug insns created by ---- gcc/params.def.jj 2009-09-16 21:35:17.000000000 +0200 -+++ gcc/params.def 2010-01-06 10:18:04.000000000 +0100 +--- gcc/params.def.jj 2010-01-09 20:39:58.000000000 +0100 ++++ gcc/params.def 2010-01-21 10:00:15.980730943 +0100 @@ -771,6 +771,13 @@ DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_I "max basic blocks number in loop for loop invariant motion", 10000, 0, 0) @@ -45,18 +45,18 @@ /* Set minimum insn uid for non-debug insns. */ DEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID, ---- gcc/var-tracking.c.jj 2009-12-17 20:42:04.000000000 +0100 -+++ gcc/var-tracking.c 2010-01-06 10:17:28.000000000 +0100 -@@ -108,6 +108,8 @@ - #include "tree-pass.h" +--- gcc/var-tracking.c.jj 2010-01-21 09:10:37.000000000 +0100 ++++ gcc/var-tracking.c 2010-01-21 10:00:15.983740989 +0100 +@@ -109,6 +109,8 @@ + #include "tree-flow.h" #include "cselib.h" #include "target.h" +#include "toplev.h" +#include "params.h" - /* Type of micro operation. */ - enum micro_operation_type -@@ -443,7 +445,7 @@ static int add_uses (rtx *, void *); + /* var-tracking.c assumes that tree code with the same value as VALUE rtx code + has no chance to appear in REG_EXPR/MEM_EXPRs and isn't a decl. +@@ -451,7 +453,7 @@ static int add_uses (rtx *, void *); static void add_uses_1 (rtx *, void *); static void add_stores (rtx, const_rtx, void *); static bool compute_bb_dataflow (basic_block); @@ -64,8 +64,8 @@ +static bool vt_find_locations (void); static void dump_attrs_list (attrs); - static int dump_variable_slot (void **, void *); -@@ -5454,7 +5456,7 @@ compute_bb_dataflow (basic_block bb) + static int dump_var_slot (void **, void *); +@@ -5511,7 +5513,7 @@ compute_bb_dataflow (basic_block bb) /* Find the locations of variables in the whole function. */ @@ -74,7 +74,7 @@ vt_find_locations (void) { fibheap_t worklist, pending, fibheap_swap; -@@ -5465,6 +5467,8 @@ vt_find_locations (void) +@@ -5522,6 +5524,8 @@ vt_find_locations (void) int *rc_order; int i; int htabsz = 0; @@ -83,7 +83,7 @@ /* Compute reverse completion order of depth first search of the CFG so that the data-flow runs faster. */ -@@ -5486,7 +5490,7 @@ vt_find_locations (void) +@@ -5543,7 +5547,7 @@ vt_find_locations (void) fibheap_insert (pending, bb_order[bb->index], bb); sbitmap_ones (in_pending); @@ -92,7 +92,7 @@ { fibheap_swap = pending; pending = worklist; -@@ -5509,11 +5513,11 @@ vt_find_locations (void) +@@ -5566,11 +5570,11 @@ vt_find_locations (void) SET_BIT (visited, bb->index); @@ -107,7 +107,7 @@ oldinsz = htab_elements (shared_hash_htab (VTI (bb)->in.vars)); oldoutsz -@@ -5577,9 +5581,20 @@ vt_find_locations (void) +@@ -5634,9 +5638,20 @@ vt_find_locations (void) } changed = compute_bb_dataflow (bb); @@ -131,7 +131,7 @@ if (changed) { -@@ -5630,7 +5645,7 @@ vt_find_locations (void) +@@ -5687,7 +5702,7 @@ vt_find_locations (void) } } @@ -140,7 +140,7 @@ FOR_EACH_BB (bb) gcc_assert (VTI (bb)->flooded); -@@ -5640,6 +5655,8 @@ vt_find_locations (void) +@@ -5698,6 +5713,8 @@ vt_find_locations (void) sbitmap_free (visited); sbitmap_free (in_worklist); sbitmap_free (in_pending); @@ -149,7 +149,7 @@ } /* Print the content of the LIST to dump file. */ -@@ -7542,9 +7558,11 @@ vt_finalize (void) +@@ -7600,9 +7617,11 @@ vt_finalize (void) /* The entry point to variable tracking pass. */ @@ -163,7 +163,7 @@ if (flag_var_tracking_assignments < 0) { delete_debug_insns (); -@@ -7569,7 +7587,31 @@ variable_tracking_main (void) +@@ -7627,7 +7646,31 @@ variable_tracking_main (void) } } @@ -196,7 +196,7 @@ if (dump_file && (dump_flags & TDF_DETAILS)) { -@@ -7583,6 +7625,19 @@ variable_tracking_main (void) +@@ -7641,6 +7684,19 @@ variable_tracking_main (void) vt_debug_insns_local (false); return 0; } @@ -216,15 +216,14 @@ static bool gate_handle_var_tracking (void) ---- gcc/Makefile.in.jj 2010-01-04 10:07:40.000000000 +0100 -+++ gcc/Makefile.in 2010-01-05 10:24:39.000000000 +0100 -@@ -2750,7 +2750,8 @@ regstat.o : regstat.c $(CONFIG_H) $(SYST - var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ +--- gcc/Makefile.in.jj 2010-01-21 08:58:12.000000000 +0100 ++++ gcc/Makefile.in 2010-01-21 10:00:45.555730868 +0100 +@@ -2751,7 +2751,7 @@ var-tracking.o : var-tracking.c $(CONFIG $(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \ $(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \ -- $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H) -+ $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H) \ -+ $(TOPLEV_H) $(PARAMS_H) + $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H) \ +- $(TREE_FLOW_H) ++ $(TREE_FLOW_H) $(TOPLEV_H) $(PARAMS_H) profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \ $(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \ diff --git a/gcc44-pr42608.patch b/gcc44-pr42608.patch deleted file mode 100644 index 6002f21..0000000 --- a/gcc44-pr42608.patch +++ /dev/null @@ -1,68 +0,0 @@ -2010-01-09 Jakub Jelinek - - PR c++/42608 - * varasm.c (declare_weak): Add weak attribute to decl if it - doesn't have one already. - (assemble_external): Only add decls to weak_decls if they also - have weak attribute. - - * g++.dg/template/instantiate11.C: New test. - ---- gcc/varasm.c.jj 2009-11-09 16:38:29.000000000 +0100 -+++ gcc/varasm.c 2010-01-08 13:30:12.000000000 +0100 -@@ -2309,13 +2309,15 @@ assemble_external (tree decl ATTRIBUTE_U - /* We want to output annotation for weak and external symbols at - very last to check if they are references or not. */ - -- if (SUPPORTS_WEAK && DECL_WEAK (decl) -+ if (SUPPORTS_WEAK -+ && DECL_WEAK (decl) - /* TREE_STATIC is a weird and abused creature which is not - generally the right test for whether an entity has been - locally emitted, inlined or otherwise not-really-extern, but - for declarations that can be weak, it happens to be - match. */ -- && !TREE_STATIC (decl)) -+ && !TREE_STATIC (decl) -+ && lookup_attribute ("weak", DECL_ATTRIBUTES (decl))) - weak_decls = tree_cons (NULL, decl, weak_decls); - - #ifdef ASM_OUTPUT_EXTERNAL -@@ -5008,6 +5010,9 @@ declare_weak (tree decl) - warning (0, "weak declaration of %q+D not supported", decl); - - mark_weak (decl); -+ if (!lookup_attribute ("weak", DECL_ATTRIBUTES (decl))) -+ DECL_ATTRIBUTES (decl) -+ = tree_cons (get_identifier ("weak"), NULL, DECL_ATTRIBUTES (decl)); - } - - static void ---- gcc/testsuite/g++.dg/template/instantiate11.C.jj 2010-01-08 13:48:58.000000000 +0100 -+++ gcc/testsuite/g++.dg/template/instantiate11.C 2010-01-08 14:18:44.000000000 +0100 -@@ -0,0 +1,25 @@ -+// PR c++/42608 -+// { dg-do compile } -+ -+template -+struct A; -+ -+template -+struct A -+{ -+ void f (); -+}; -+ -+template struct A; -+ -+int -+main () -+{ -+ A a; -+ a.f (); -+ return 0; -+} -+ -+// Make sure we get undefined reference error if -+// A::f () isn't instantiated elsewhere. -+// { dg-final { scan-assembler-not "weak\[\n\t\]*_ZN1AIiiE1fEv" } } diff --git a/gcc44-pr42657.patch b/gcc44-pr42657.patch deleted file mode 100644 index af7f4a9..0000000 --- a/gcc44-pr42657.patch +++ /dev/null @@ -1,73 +0,0 @@ -2010-01-09 Alexandre Oliva - - PR debug/42657 - * var-tracking.c (var_reg_delete): Don't delete the association - between REGs and values or one-part variables if the register - isn't clobbered. - -2010-01-08 Jakub Jelinek - - PR debug/42657 - * tree-inline.c (copy_debug_stmt): Don't reset debug stmt just - because its first operand is a non-localized variable. - ---- gcc/tree-inline.c.jj 2010-01-08 10:21:30.000000000 +0100 -+++ gcc/tree-inline.c 2010-01-08 10:19:49.000000000 +0100 -@@ -2043,6 +2043,12 @@ copy_debug_stmt (gimple stmt, copy_body_ - gcc_assert (TREE_CODE (*n) == VAR_DECL); - t = *n; - } -+ else if (TREE_CODE (t) == VAR_DECL -+ && !TREE_STATIC (t) -+ && gimple_in_ssa_p (cfun) -+ && !pointer_map_contains (id->decl_map, t) -+ && !var_ann (t)) -+ /* T is a non-localized variable. */; - else - walk_tree (&t, remap_gimple_op_r, &wi, NULL); - ---- gcc/var-tracking.c.orig 2010-01-09 07:00:12.000000000 -0200 -+++ gcc/var-tracking.c 2010-01-09 07:00:14.000000000 -0200 -@@ -1401,14 +1401,15 @@ var_reg_delete_and_set (dataflow_set *se - var_reg_set (set, loc, initialized, set_src); - } - --/* Delete current content of register LOC in dataflow set SET. If -- CLOBBER is true, also delete any other live copies of the same -- variable part. */ -+/* Delete the association of register LOC in dataflow set SET with any -+ variables that aren't onepart. If CLOBBER is true, also delete any -+ other live copies of the same variable part, and delete the -+ association with onepart dvs too. */ - - static void - var_reg_delete (dataflow_set *set, rtx loc, bool clobber) - { -- attrs *reg = &set->regs[REGNO (loc)]; -+ attrs *nextp = &set->regs[REGNO (loc)]; - attrs node, next; - - if (clobber) -@@ -1421,13 +1422,18 @@ var_reg_delete (dataflow_set *set, rtx l - clobber_variable_part (set, NULL, dv_from_decl (decl), offset, NULL); - } - -- for (node = *reg; node; node = next) -+ for (node = *nextp; node; node = next) - { - next = node->next; -- delete_variable_part (set, node->loc, node->dv, node->offset); -- pool_free (attrs_pool, node); -+ if (clobber || !dv_onepart_p (node->dv)) -+ { -+ delete_variable_part (set, node->loc, node->dv, node->offset); -+ pool_free (attrs_pool, node); -+ *nextp = next; -+ } -+ else -+ nextp = &node->next; - } -- *reg = NULL; - } - - /* Delete content of register with number REGNO in dataflow set SET. */ diff --git a/gcc44-pr42674.patch b/gcc44-pr42674.patch deleted file mode 100644 index 4319834..0000000 --- a/gcc44-pr42674.patch +++ /dev/null @@ -1,49 +0,0 @@ -2010-01-13 Jakub Jelinek - - PR middle-end/42674 - * c-decl.c (finish_function): Don't emit -Wreturn-type warnings in - functions with noreturn attribute. - - * decl.c (finish_function): Don't emit -Wreturn-type warnings in - functions with noreturn attribute. - - * c-c++-common/pr42674.c: New test. - ---- gcc/c-decl.c.jj 2010-01-04 10:46:33.000000000 +0100 -+++ gcc/c-decl.c 2010-01-13 18:41:44.000000000 +0100 -@@ -8032,6 +8032,8 @@ finish_function (void) - && !current_function_returns_value && !current_function_returns_null - /* Don't complain if we are no-return. */ - && !current_function_returns_abnormally -+ /* Don't complain if we are declared noreturn. */ -+ && !TREE_THIS_VOLATILE (fndecl) - /* Don't warn for main(). */ - && !MAIN_NAME_P (DECL_NAME (fndecl)) - /* Or if they didn't actually specify a return type. */ ---- gcc/cp/decl.c.jj 2009-12-23 17:31:06.000000000 +0100 -+++ gcc/cp/decl.c 2010-01-13 18:43:01.000000000 +0100 -@@ -12541,6 +12541,8 @@ finish_function (int flags) - && !current_function_returns_value && !current_function_returns_null - /* Don't complain if we abort or throw. */ - && !current_function_returns_abnormally -+ /* Don't complain if we are declared noreturn. */ -+ && !TREE_THIS_VOLATILE (fndecl) - && !DECL_NAME (DECL_RESULT (fndecl)) - && !TREE_NO_WARNING (fndecl) - /* Structor return values (if any) are set by the compiler. */ ---- gcc/testsuite/c-c++-common/pr42674.c.jj 2010-01-13 18:57:20.000000000 +0100 -+++ gcc/testsuite/c-c++-common/pr42674.c 2010-01-13 18:57:58.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* PR middle-end/42674 */ -+/* { dg-do compile } */ -+/* { dg-options "-Wreturn-type" } */ -+ -+extern void bar (void); -+static int foo (void) __attribute__ ((__noreturn__, __used__)); -+ -+static int -+foo (void) -+{ -+ while (1) -+ bar (); -+} diff --git a/gcc44-vta-non-call-exception.patch b/gcc44-vta-non-call-exception.patch new file mode 100644 index 0000000..d7e633d --- /dev/null +++ b/gcc44-vta-non-call-exception.patch @@ -0,0 +1,38 @@ +2010-01-21 Jakub Jelinek + + * tree-into-ssa.c (maybe_register_def): If stmt ends the bb, + insert the debug stmt on the single non-EH edge from the stmt. + +--- gcc/tree-into-ssa.c.jj 2010-01-21 09:58:38.000000000 +0100 ++++ gcc/tree-into-ssa.c 2010-01-21 12:25:22.000000000 +0100 +@@ -1968,7 +1968,29 @@ maybe_register_def (def_operand_p def_p, + if (tracked_var) + { + gimple note = gimple_build_debug_bind (tracked_var, def, stmt); +- gsi_insert_after (&gsi, note, GSI_SAME_STMT); ++ if (gsi_one_before_end_p (gsi) && stmt_ends_bb_p (stmt)) ++ { ++ basic_block bb = gsi_bb (gsi); ++ edge_iterator ei; ++ edge e, ef = NULL; ++ FOR_EACH_EDGE (e, ei, bb->succs) ++ if (!(e->flags & EDGE_EH)) ++ { ++ if (ef) ++ { ++ ef = NULL; ++ break; ++ } ++ ef = e; ++ } ++ if (ef ++ && single_pred_p (ef->dest) ++ && !phi_nodes (ef->dest) ++ && ef->dest != EXIT_BLOCK_PTR) ++ gsi_insert_on_edge_immediate (ef, note); ++ } ++ else ++ gsi_insert_after (&gsi, note, GSI_SAME_STMT); + } + } + diff --git a/import.log b/import.log index 68225f6..e0e9ee7 100644 --- a/import.log +++ b/import.log @@ -3,3 +3,4 @@ gcc-4_4_0-5:HEAD:gcc-4.4.0-5.src.rpm:1242291126 gcc-4_4_2-14_fc13:HEAD:gcc-4.4.2-14.fc13.src.rpm:1259930464 gcc-4_4_2-20_fc13:HEAD:gcc-4.4.2-20.fc13.src.rpm:1261484502 gcc-4_4_2-25_fc13:HEAD:gcc-4.4.2-25.fc13.src.rpm:1263487371 +gcc-4_4_3-1_fc13:HEAD:gcc-4.4.3-1.fc13.src.rpm:1264094717 diff --git a/sources b/sources index f8ddaaa..f1c292e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -43b87119460d344d8052a51eb87cd05e gcc-4.4.2-20100114.tar.bz2 +6583a7c9552f341f1fc386e31e580d42 gcc-4.4.3-20100121.tar.bz2