4.4.2-25
This commit is contained in:
		
							parent
							
								
									6e98f300dc
								
							
						
					
					
						commit
						1fd246efa8
					
				@ -1,2 +1,2 @@
 | 
				
			|||||||
fastjar-0.97.tar.gz
 | 
					fastjar-0.97.tar.gz
 | 
				
			||||||
gcc-4.4.2-20091222.tar.bz2
 | 
					gcc-4.4.2-20100114.tar.bz2
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										59
									
								
								gcc.spec
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								gcc.spec
									
									
									
									
									
								
							@ -1,9 +1,9 @@
 | 
				
			|||||||
%global DATE 20091222
 | 
					%global DATE 20100114
 | 
				
			||||||
%global SVNREV 155395
 | 
					%global SVNREV 155909
 | 
				
			||||||
%global gcc_version 4.4.2
 | 
					%global gcc_version 4.4.2
 | 
				
			||||||
# Note, gcc_release must be integer, if you want to add suffixes to
 | 
					# Note, gcc_release must be integer, if you want to add suffixes to
 | 
				
			||||||
# %{release}, append them after %{gcc_release} on Release: line.
 | 
					# %{release}, append them after %{gcc_release} on Release: line.
 | 
				
			||||||
%global gcc_release 20
 | 
					%global gcc_release 25
 | 
				
			||||||
%global _unpackaged_files_terminate_build 0
 | 
					%global _unpackaged_files_terminate_build 0
 | 
				
			||||||
%global multilib_64_archs sparc64 ppc64 s390x x86_64
 | 
					%global multilib_64_archs sparc64 ppc64 s390x x86_64
 | 
				
			||||||
%if 0%{?fedora} >= 13
 | 
					%if 0%{?fedora} >= 13
 | 
				
			||||||
@ -165,6 +165,10 @@ Patch16: gcc44-unwind-debug-hook.patch
 | 
				
			|||||||
Patch17: gcc44-pr38757.patch
 | 
					Patch17: gcc44-pr38757.patch
 | 
				
			||||||
Patch18: gcc44-libstdc++-docs.patch
 | 
					Patch18: gcc44-libstdc++-docs.patch
 | 
				
			||||||
Patch19: gcc44-ppc64-aixdesc.patch
 | 
					Patch19: gcc44-ppc64-aixdesc.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
 | 
					Patch1000: fastjar-0.97-segfault.patch
 | 
				
			||||||
Patch1001: fastjar-0.97-len1.patch
 | 
					Patch1001: fastjar-0.97-len1.patch
 | 
				
			||||||
@ -473,6 +477,10 @@ which are required to compile with the GNAT.
 | 
				
			|||||||
%patch18 -p0 -b .libstdc++-docs~
 | 
					%patch18 -p0 -b .libstdc++-docs~
 | 
				
			||||||
%endif
 | 
					%endif
 | 
				
			||||||
%patch19 -p0 -b .ppc64-aixdesc~
 | 
					%patch19 -p0 -b .ppc64-aixdesc~
 | 
				
			||||||
 | 
					%patch20 -p0 -b .max-vartrack-size~
 | 
				
			||||||
 | 
					%patch21 -p0 -b .pr42657~
 | 
				
			||||||
 | 
					%patch22 -p0 -b .pr42608~
 | 
				
			||||||
 | 
					%patch23 -p0 -b .pr42674~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This testcase doesn't compile.
 | 
					# This testcase doesn't compile.
 | 
				
			||||||
rm libjava/testsuite/libjava.lang/PR35020*
 | 
					rm libjava/testsuite/libjava.lang/PR35020*
 | 
				
			||||||
@ -1862,6 +1870,51 @@ fi
 | 
				
			|||||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
 | 
					%doc rpm.doc/changelogs/libmudflap/ChangeLog*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%changelog
 | 
					%changelog
 | 
				
			||||||
 | 
					* Thu Jan 14 2010 Jakub Jelinek <jakub@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@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)
 | 
				
			||||||
 | 
					- revert --param max-vartrack-size=NNNN hack
 | 
				
			||||||
 | 
					- fix up epilogue unwinding with -fsched2-use-superblocks (PR middle-end/41883)
 | 
				
			||||||
 | 
					- fix a -fcompare-debug failure (PR tree-optimization/42645)
 | 
				
			||||||
 | 
					- don't make undef symbols weak just because they are known to have C++ vague
 | 
				
			||||||
 | 
					  linkage (PR c++/42608)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Sat Jan  9 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-23
 | 
				
			||||||
 | 
					- update from gcc-4_4-branch
 | 
				
			||||||
 | 
					  - PRs target/42511, target/42542, target/42564
 | 
				
			||||||
 | 
					- VTA backports
 | 
				
			||||||
 | 
					  - PRs debug/42630, debug/42631
 | 
				
			||||||
 | 
					- improve construction of ppc64 constants between 0x80000000 and 0xffffffff
 | 
				
			||||||
 | 
					- fix inliner and var-tracking not to drop location info needlessly in certain
 | 
				
			||||||
 | 
					  cases (#552376, PR debug/42657)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Wed Jan  6 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-22
 | 
				
			||||||
 | 
					- add --param max-vartrack-size=NNNN parameter, give up on
 | 
				
			||||||
 | 
					  -fvar-tracking-assignments if var-tracking hash tables are over that limit
 | 
				
			||||||
 | 
					- fix VTA bugs in the vectorizer (PRs debug/42604, debug/42395)
 | 
				
			||||||
 | 
					- fix VTA bug with noreturn calls (PR middle-end/42363)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Tue Jan  5 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-21
 | 
				
			||||||
 | 
					- update from gcc-4_4-branch
 | 
				
			||||||
 | 
					  - PRs c++/42331, middle-end/41344, middle-end/42099, other/42611,
 | 
				
			||||||
 | 
						rtl-optimization/42475, target/40134, target/42448, target/42503,
 | 
				
			||||||
 | 
						target/42549, tree-optimization/41956, tree-optimization/42231,
 | 
				
			||||||
 | 
						tree-optimization/42337, tree-optimization/42614
 | 
				
			||||||
 | 
					- fix -m*=native with several sources on the command line (PR driver/42442)
 | 
				
			||||||
 | 
					- avoid code size differences from traversing decl hash tables hashed by uid
 | 
				
			||||||
 | 
					  if uid gap sizes differ
 | 
				
			||||||
 | 
					- fix .debug_ranges with -ffunction-sections (PR debug/42454)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Tue Dec 22 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-20
 | 
					* Tue Dec 22 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-20
 | 
				
			||||||
- fix MEM_SIZE of reload created stack slots (#548825,
 | 
					- fix MEM_SIZE of reload created stack slots (#548825,
 | 
				
			||||||
  PR rtl-optimization/42429)
 | 
					  PR rtl-optimization/42429)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										230
									
								
								gcc44-max-vartrack-size.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										230
									
								
								gcc44-max-vartrack-size.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,230 @@
 | 
				
			|||||||
 | 
					2010-01-05  Alexandre Oliva  <aoliva@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.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+@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 \
 | 
				
			||||||
							
								
								
									
										68
									
								
								gcc44-pr42608.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								gcc44-pr42608.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					2010-01-09  Jakub Jelinek  <jakub@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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 <class U, class V>
 | 
				
			||||||
 | 
					+struct A;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+template <class V>
 | 
				
			||||||
 | 
					+struct A<int, V>
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  void f ();
 | 
				
			||||||
 | 
					+};
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+template struct A<int, int>;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+int
 | 
				
			||||||
 | 
					+main ()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  A<int, int> a;
 | 
				
			||||||
 | 
					+  a.f ();
 | 
				
			||||||
 | 
					+  return 0;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+// Make sure we get undefined reference error if
 | 
				
			||||||
 | 
					+// A<int, int>::f () isn't instantiated elsewhere.
 | 
				
			||||||
 | 
					+// { dg-final { scan-assembler-not "weak\[\n\t\]*_ZN1AIiiE1fEv" } }
 | 
				
			||||||
							
								
								
									
										73
									
								
								gcc44-pr42657.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								gcc44-pr42657.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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  <jakub@redhat.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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.  */
 | 
				
			||||||
							
								
								
									
										49
									
								
								gcc44-pr42674.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								gcc44-pr42674.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					2010-01-13  Jakub Jelinek  <jakub@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 ();
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
@ -2,3 +2,4 @@ gcc-4_4_0-0_3:HEAD:gcc-4.4.0-0.3.src.rpm:1232130841
 | 
				
			|||||||
gcc-4_4_0-5:HEAD:gcc-4.4.0-5.src.rpm:1242291126
 | 
					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-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-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
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user