rpms/gcc/F-12 gcc44-pr41371.patch, NONE, 1.1 gcc44-pr42608.patch, NONE, 1.1 .cvsignore, 1.319, 1.320 gcc.spec, 1.103, 1.104 sources, 1.326, 1.327 gcc44-max-vartrack-size.patch, 1.1, NONE

Jakub Jelinek jakub at fedoraproject.org
Tue Jan 12 19:34:21 UTC 2010


Author: jakub

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

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

gcc44-pr41371.patch:
 var-tracking.c |   38 ++++++++++++++++++++++++++++++--------
 1 file changed, 30 insertions(+), 8 deletions(-)

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

	PR debug/41371
	* var-tracking.c (values_to_unmark): New variable.
	(find_loc_in_1pdv): Clear VALUE_RECURSED_INTO of values in
	values_to_unmark vector.  Moved body to...
	(find_loc_in_1pdv_1): ... this.  Don't clear VALUE_RECRUSED_INTO,
	instead queue it into values_to_unmark vector.
	(vt_find_locations): Free values_to_unmark vector.

--- gcc/var-tracking.c.jj	2010-01-12 10:37:30.000000000 +0100
+++ gcc/var-tracking.c	2010-01-12 17:41:39.000000000 +0100
@@ -2252,12 +2252,18 @@ dv_changed_p (decl_or_value dv)
 	  : DECL_CHANGED (dv_as_decl (dv)));
 }
 
-/* Return a location list node whose loc is rtx_equal to LOC, in the
+/* Vector of VALUEs that should have VALUE_RECURSED_INTO bit cleared
+   at the end of find_loc_in_1pdv.  Not a static variable in find_loc_in_1pdv
+   to avoid constant allocation/freeing of it.  */
+static VEC(rtx, heap) *values_to_unmark;
+
+/* Helper function for find_loc_in_1pdv.
+   Return a location list node whose loc is rtx_equal to LOC, in the
    location list of a one-part variable or value VAR, or in that of
    any values recursively mentioned in the location lists.  */
 
 static location_chain
-find_loc_in_1pdv (rtx loc, variable var, htab_t vars)
+find_loc_in_1pdv_1 (rtx loc, variable var, htab_t vars)
 {
   location_chain node;
 
@@ -2285,18 +2291,33 @@ find_loc_in_1pdv (rtx loc, variable var,
 	  {
 	    location_chain where;
 	    VALUE_RECURSED_INTO (node->loc) = true;
-	    if ((where = find_loc_in_1pdv (loc, var, vars)))
-	      {
-		VALUE_RECURSED_INTO (node->loc) = false;
-		return where;
-	      }
-	    VALUE_RECURSED_INTO (node->loc) = false;
+	    VEC_safe_push (rtx, heap, values_to_unmark, node->loc);
+	    if ((where = find_loc_in_1pdv_1 (loc, var, vars)))
+	      return where;
 	  }
       }
 
   return NULL;
 }
 
+/* Return a location list node whose loc is rtx_equal to LOC, in the
+   location list of a one-part variable or value VAR, or in that of
+   any values recursively mentioned in the location lists.  */
+
+static location_chain
+find_loc_in_1pdv (rtx loc, variable var, htab_t vars)
+{
+  location_chain ret;
+  unsigned int i;
+  rtx value;
+
+  ret = find_loc_in_1pdv_1 (loc, var, vars);
+  for (i = 0; VEC_iterate (rtx, values_to_unmark, i, value); i++)
+    VALUE_RECURSED_INTO (value) = false;
+  VEC_truncate (rtx, values_to_unmark, 0);
+  return ret;
+}
+
 /* Hash table iteration argument passed to variable_merge.  */
 struct dfset_merge
 {
@@ -5648,6 +5669,7 @@ vt_find_locations (void)
     FOR_EACH_BB (bb)
       gcc_assert (VTI (bb)->flooded);
 
+  VEC_free (rtx, heap, values_to_unmark);
   free (bb_order);
   fibheap_delete (worklist);
   fibheap_delete (pending);

gcc44-pr42608.patch:
 testsuite/g++.dg/template/instantiate11.C |   25 +++++++++++++++++++++++++
 varasm.c                                  |    9 +++++++--
 2 files changed, 32 insertions(+), 2 deletions(-)

--- NEW FILE gcc44-pr42608.patch ---
2010-01-09  Jakub Jelinek  <jakub at 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" } }


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/F-12/.cvsignore,v
retrieving revision 1.319
retrieving revision 1.320
diff -u -p -r1.319 -r1.320
--- .cvsignore	9 Jan 2010 22:06:05 -0000	1.319
+++ .cvsignore	12 Jan 2010 19:34:19 -0000	1.320
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.2-20100109.tar.bz2
+gcc-4.4.2-20100112.tar.bz2


Index: gcc.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/F-12/gcc.spec,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -p -r1.103 -r1.104
--- gcc.spec	9 Jan 2010 22:06:06 -0000	1.103
+++ gcc.spec	12 Jan 2010 19:34:20 -0000	1.104
@@ -1,9 +1,9 @@
-%global DATE 20100109
-%global SVNREV 155777
+%global DATE 20100112
+%global SVNREV 155843
 %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 23
+%global gcc_release 24
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %if 0%{?fedora} >= 13
@@ -165,8 +165,9 @@ Patch16: gcc44-unwind-debug-hook.patch
 Patch17: gcc44-pr38757.patch
 Patch18: gcc44-libstdc++-docs.patch
 Patch19: gcc44-ppc64-aixdesc.patch
-Patch20: gcc44-max-vartrack-size.patch
+Patch20: gcc44-pr41371.patch
 Patch21: gcc44-pr42657.patch
+Patch22: gcc44-pr42608.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -475,8 +476,9 @@ which are required to compile with the G
 %patch18 -p0 -b .libstdc++-docs~
 %endif
 %patch19 -p0 -b .ppc64-aixdesc~
-%patch20 -p0 -b .max-vartrack-size~
+%patch20 -p0 -b .pr41371~
 %patch21 -p0 -b .pr42657~
+%patch22 -p0 -b .pr42608~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -1866,6 +1868,16 @@ fi
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Mon 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)
+- 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 at redhat.com> 4.4.2-23
 - update from gcc-4_4-branch
   - PRs target/42511, target/42542, target/42564


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/F-12/sources,v
retrieving revision 1.326
retrieving revision 1.327
diff -u -p -r1.326 -r1.327
--- sources	9 Jan 2010 22:06:06 -0000	1.326
+++ sources	12 Jan 2010 19:34:20 -0000	1.327
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-8f96c4b6c1ee1928dd5c30f999bf6d86  gcc-4.4.2-20100109.tar.bz2
+9f5b52cba2b186e3e496531b8855f060  gcc-4.4.2-20100112.tar.bz2


--- gcc44-max-vartrack-size.patch DELETED ---



More information about the scm-commits mailing list