rpms/gcc/F-12 gcc44-max-vartrack-size.patch, 1.2, 1.3 gcc44-pr42674.patch, NONE, 1.1 .cvsignore, 1.320, 1.321 gcc.spec, 1.104, 1.105 sources, 1.327, 1.328 gcc44-pr41371.patch, 1.1, NONE

Jakub Jelinek jakub at fedoraproject.org
Thu Jan 14 16:39:18 UTC 2010


Author: jakub

Update of /cvs/pkgs/rpms/gcc/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31032

Modified Files:
	.cvsignore gcc.spec sources 
Added Files:
	gcc44-max-vartrack-size.patch gcc44-pr42674.patch 
Removed Files:
	gcc44-pr41371.patch 
Log Message:
gcc-4.4.2-25

gcc44-max-vartrack-size.patch:
 Makefile.in     |    3 +-
 doc/invoke.texi |    9 ++++++
 params.def      |    7 ++++
 var-tracking.c  |   82 +++++++++++++++++++++++++++++++++++++++++++++++---------
 4 files changed, 87 insertions(+), 14 deletions(-)

Index: gcc44-max-vartrack-size.patch
===================================================================
RCS file: gcc44-max-vartrack-size.patch
diff -N gcc44-max-vartrack-size.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gcc44-max-vartrack-size.patch	14 Jan 2010 16:39:18 -0000	1.3
@@ -0,0 +1,230 @@
+2010-01-05  Alexandre Oliva  <aoliva at redhat.com>
+
+	* params.def (PARAM_MAX_VARTRACK_SIZE): New.
+	* doc/invoke.texi: Document it.
+	* var-tracking.c: Include toplev.h and params.h.
+	(vt_find_locations): Return bool indicating success.  Compute
+	hash sizes unconditionally.  Check new parameter, report.
+	(variable_tracking_main_1): Check vt_find_locations results and
+	retry.  Renamed from...
+	(variable_tracking_main): ... this.  New wrapper to preserve
+	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
+@@ -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.
+ 
++ at item max-vartrack-size
++Sets a maximum number of hash table slots to use during variable
++tracking dataflow analysis of any function.  If this limit is exceeded
++with variable tracking at assignments enabled, analysis for that
++function is retried without it, after removing all debug insns from
++the function.  If the limit is exceeded even without debug insns, var
++tracking analysis is completely disabled for the function.  Setting
++the parameter to zero makes it unlimited.
++
+ @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
+@@ -771,6 +771,13 @@ DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_I
+ 	  "max basic blocks number in loop for loop invariant motion",
+ 	  10000, 0, 0)
+ 
++/* Set maximum hash table size for var tracking.  */
++
++DEFPARAM (PARAM_MAX_VARTRACK_SIZE,
++	  "max-vartrack-size",
++	  "Max. size of var tracking hash tables",
++	  50000000, 0, 0)
++
+ /* 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"
+ #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 *);
+ static void add_uses_1 (rtx *, void *);
+ static void add_stores (rtx, const_rtx, void *);
+ static bool compute_bb_dataflow (basic_block);
+-static void vt_find_locations (void);
++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)
+ 
+ /* Find the locations of variables in the whole function.  */
+ 
+-static void
++static bool
+ vt_find_locations (void)
+ {
+   fibheap_t worklist, pending, fibheap_swap;
+@@ -5465,6 +5467,8 @@ vt_find_locations (void)
+   int *rc_order;
+   int i;
+   int htabsz = 0;
++  int htabmax = PARAM_VALUE (PARAM_MAX_VARTRACK_SIZE);
++  bool success = true;
+ 
+   /* 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)
+     fibheap_insert (pending, bb_order[bb->index], bb);
+   sbitmap_ones (in_pending);
+ 
+-  while (!fibheap_empty (pending))
++  while (success && !fibheap_empty (pending))
+     {
+       fibheap_swap = pending;
+       pending = worklist;
+@@ -5509,11 +5513,11 @@ vt_find_locations (void)
+ 
+ 	      SET_BIT (visited, bb->index);
+ 
+-	      if (dump_file && VTI (bb)->in.vars)
++	      if (VTI (bb)->in.vars)
+ 		{
+ 		  htabsz
+-		    -= htab_size (shared_hash_htab (VTI (bb)->in.vars))
+-		       + htab_size (shared_hash_htab (VTI (bb)->out.vars));
++		    -= (htab_size (shared_hash_htab (VTI (bb)->in.vars))
++			+ htab_size (shared_hash_htab (VTI (bb)->out.vars)));
+ 		  oldinsz
+ 		    = htab_elements (shared_hash_htab (VTI (bb)->in.vars));
+ 		  oldoutsz
+@@ -5577,9 +5581,20 @@ vt_find_locations (void)
+ 		}
+ 
+ 	      changed = compute_bb_dataflow (bb);
+-	      if (dump_file)
+-		htabsz += htab_size (shared_hash_htab (VTI (bb)->in.vars))
+-			  + htab_size (shared_hash_htab (VTI (bb)->out.vars));
++	      htabsz += (htab_size (shared_hash_htab (VTI (bb)->in.vars))
++			 + htab_size (shared_hash_htab (VTI (bb)->out.vars)));
++
++	      if (htabmax && htabsz > htabmax)
++		{
++		  if (MAY_HAVE_DEBUG_INSNS)
++		    inform (DECL_SOURCE_LOCATION (cfun->decl),
++			    "variable tracking size limit exceeded with debug insns, retrying without");
++		  else
++		    inform (DECL_SOURCE_LOCATION (cfun->decl),
++			    "variable tracking size limit exceeded");
++		  success = false;
++		  break;
++		}
+ 
+ 	      if (changed)
+ 		{
+@@ -5630,7 +5645,7 @@ vt_find_locations (void)
+ 	}
+     }
+ 
+-  if (MAY_HAVE_DEBUG_INSNS)
++  if (success && MAY_HAVE_DEBUG_INSNS)
+     FOR_EACH_BB (bb)
+       gcc_assert (VTI (bb)->flooded);
+ 
+@@ -5640,6 +5655,8 @@ vt_find_locations (void)
+   sbitmap_free (visited);
+   sbitmap_free (in_worklist);
+   sbitmap_free (in_pending);
++
++  return success;
+ }
+ 
+ /* Print the content of the LIST to dump file.  */
+@@ -7542,9 +7558,11 @@ vt_finalize (void)
+ 
+ /* The entry point to variable tracking pass.  */
+ 
+-unsigned int
+-variable_tracking_main (void)
++static inline unsigned int
++variable_tracking_main_1 (void)
+ {
++  bool success;
++
+   if (flag_var_tracking_assignments < 0)
+     {
+       delete_debug_insns ();
+@@ -7569,7 +7587,31 @@ variable_tracking_main (void)
+ 	}
+     }
+ 
+-  vt_find_locations ();
++  success = vt_find_locations ();
++
++  if (!success && flag_var_tracking_assignments > 0)
++    {
++      vt_finalize ();
++
++      delete_debug_insns ();
++
++      /* This is later restored by our caller.  */
++      flag_var_tracking_assignments = 0;
++
++      vt_initialize ();
++
++      if (!frame_pointer_needed && !vt_stack_adjustments ())
++	gcc_unreachable ();
++
++      success = vt_find_locations ();
++    }
++
++  if (!success)
++    {
++      vt_finalize ();
++      vt_debug_insns_local (false);
++      return 0;
++    }
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     {
+@@ -7583,6 +7625,19 @@ variable_tracking_main (void)
+   vt_debug_insns_local (false);
+   return 0;
+ }
++
++unsigned int
++variable_tracking_main (void)
++{
++  unsigned int ret;
++  int save = flag_var_tracking_assignments;
++
++  ret = variable_tracking_main_1 ();
++
++  flag_var_tracking_assignments = save;
++
++  return ret;
++}
+ 
+ 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) \
+    $(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)
+ 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 \

gcc44-pr42674.patch:
 c-decl.c                         |    2 ++
 cp/decl.c                        |    2 ++
 testsuite/c-c++-common/pr42674.c |   13 +++++++++++++
 3 files changed, 17 insertions(+)

--- NEW FILE gcc44-pr42674.patch ---
2010-01-13  Jakub Jelinek  <jakub at redhat.com>

	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 ();
+}


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/F-12/.cvsignore,v
retrieving revision 1.320
retrieving revision 1.321
diff -u -p -r1.320 -r1.321
--- .cvsignore	12 Jan 2010 19:34:19 -0000	1.320
+++ .cvsignore	14 Jan 2010 16:39:17 -0000	1.321
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.2-20100112.tar.bz2
+gcc-4.4.2-20100114.tar.bz2


Index: gcc.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/F-12/gcc.spec,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -p -r1.104 -r1.105
--- gcc.spec	12 Jan 2010 19:34:20 -0000	1.104
+++ gcc.spec	14 Jan 2010 16:39:18 -0000	1.105
@@ -1,9 +1,9 @@
-%global DATE 20100112
-%global SVNREV 155843
+%global DATE 20100114
+%global SVNREV 155909
 %global gcc_version 4.4.2
 # 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 24
+%global gcc_release 25
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %if 0%{?fedora} >= 13
@@ -165,9 +165,10 @@ Patch16: gcc44-unwind-debug-hook.patch
 Patch17: gcc44-pr38757.patch
 Patch18: gcc44-libstdc++-docs.patch
 Patch19: gcc44-ppc64-aixdesc.patch
-Patch20: gcc44-pr41371.patch
+Patch20: gcc44-max-vartrack-size.patch
 Patch21: gcc44-pr42657.patch
 Patch22: gcc44-pr42608.patch
+Patch23: gcc44-pr42674.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -476,9 +477,10 @@ which are required to compile with the G
 %patch18 -p0 -b .libstdc++-docs~
 %endif
 %patch19 -p0 -b .ppc64-aixdesc~
-%patch20 -p0 -b .pr41371~
+%patch20 -p0 -b .max-vartrack-size~
 %patch21 -p0 -b .pr42657~
 %patch22 -p0 -b .pr42608~
+%patch23 -p0 -b .pr42674~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -1868,7 +1870,16 @@ fi
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
-* Mon Jan 12 2010 Jakub Jelinek <jakub at redhat.com> 4.4.2-24
+* Thu Jan 14 2010 Jakub Jelinek <jakub at redhat.com> 4.4.2-25
+- update from gcc-4_4-branch
+  - PRs c/42721, middle-end/40281, middle-end/42667, rtl-optimization/42699
+- re-add --param max-vartrack-size patch, but this time with default 50mil
+  instead of 5mil (#531218, #548826)
+- don't emit -Wreturn-type warnings in noreturn functions
+  (PR middle-end/42674)
+- march=native fixes for ix86/x86_64
+
+* Tue Jan 12 2010 Jakub Jelinek <jakub at redhat.com> 4.4.2-24
 - update from gcc-4_4-branch
   - PRs debug/42662, libjava/40859
 - speed up var-tracking on various KDE sources (PR debug/41371)


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/F-12/sources,v
retrieving revision 1.327
retrieving revision 1.328
diff -u -p -r1.327 -r1.328
--- sources	12 Jan 2010 19:34:20 -0000	1.327
+++ sources	14 Jan 2010 16:39:18 -0000	1.328
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-9f5b52cba2b186e3e496531b8855f060  gcc-4.4.2-20100112.tar.bz2
+43b87119460d344d8052a51eb87cd05e  gcc-4.4.2-20100114.tar.bz2


--- gcc44-pr41371.patch DELETED ---



More information about the scm-commits mailing list