packages: gcc/gcc.spec, gcc/gcc-revert.patch (NEW) - rel 6; revert one opti...

arekm arekm at pld-linux.org
Mon May 24 15:31:44 CEST 2010


Author: arekm                        Date: Mon May 24 13:31:43 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- rel 6; revert one optimization until gcc bug 44258 is fixed

---- Files affected:
packages/gcc:
   gcc.spec (1.617 -> 1.618) , gcc-revert.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/gcc/gcc.spec
diff -u packages/gcc/gcc.spec:1.617 packages/gcc/gcc.spec:1.618
--- packages/gcc/gcc.spec:1.617	Thu May 20 14:17:23 2010
+++ packages/gcc/gcc.spec	Mon May 24 15:31:34 2010
@@ -77,7 +77,7 @@
 Summary(pt_BR.UTF-8):	Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
 Name:		gcc
 Version:	%{major_ver}.%{minor_ver}
-Release:	5
+Release:	6
 Epoch:		6
 License:	GPL v3+
 Group:		Development/Languages
@@ -100,6 +100,8 @@
 Patch10:	%{name}-moresparcs.patch
 Patch11:	%{name}-build-id.patch
 Patch12:	%{name}-plugin-decl-hook.patch
+# until http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44258 is fixed
+Patch13:	%{name}-revert.patch
 URL:		http://gcc.gnu.org/
 BuildRequires:	autoconf
 %{?with_tests:BuildRequires:	autogen}
@@ -1404,6 +1406,7 @@
 %patch10 -p0
 %patch11 -p0
 %patch12 -p0
+%patch13 -p0
 
 mv ChangeLog ChangeLog.general
 
@@ -2320,6 +2323,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.618  2010/05/24 13:31:34  arekm
+- rel 6; revert one optimization until gcc bug 44258 is fixed
+
 Revision 1.617  2010/05/20 12:17:23  arekm
 - rel 5; branch diff updated
 

================================================================
Index: packages/gcc/gcc-revert.patch
diff -u /dev/null packages/gcc/gcc-revert.patch:1.1
--- /dev/null	Mon May 24 15:31:44 2010
+++ packages/gcc/gcc-revert.patch	Mon May 24 15:31:26 2010
@@ -0,0 +1,141 @@
+Index: gcc/testsuite/gcc.dg/tree-ssa/sra-10.c
+===================================================================
+--- gcc/testsuite/gcc.dg/tree-ssa/sra-10.c	(wersja 158826)
++++ gcc/testsuite/gcc.dg/tree-ssa/sra-10.c	(wersja 158825)
+@@ -1,19 +0,0 @@
+-/* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-esra-details" } */
+-
+-struct S
+-{
+-  int a[1];
+-  int z[256];
+-};
+-
+-void foo (struct S *s, int i)
+-{
+-  struct S disappear;
+-
+-  disappear.a[i] = 12;
+-  *s = disappear;
+-}
+-
+-/* { dg-final { scan-tree-dump-times "disappear" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+Index: gcc/tree-sra.c
+===================================================================
+--- gcc/tree-sra.c	(wersja 158826)
++++ gcc/tree-sra.c	(wersja 158825)
+@@ -182,10 +182,6 @@
+      access tree.  */
+   unsigned grp_read : 1;
+ 
+-  /* Does this group contain a read access that comes from an assignment
+-     statement?  This flag is propagated down the access tree.  */
+-  unsigned grp_assignment_read : 1;
+-
+   /* Other passes of the analysis use this bit to make function
+      analyze_access_subtree create scalar replacements for this group if
+      possible.  */
+@@ -1035,13 +1031,9 @@
+   racc = build_access_from_expr_1 (rhs_ptr, stmt, false);
+   lacc = build_access_from_expr_1 (lhs_ptr, stmt, true);
+ 
+-  if (racc)
+-    {
+-      racc->grp_assignment_read = 1;
+-      if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
+-	  && !is_gimple_reg_type (racc->type))
+-	bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base));
+-    }
++  if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
++      && racc && !is_gimple_reg_type (racc->type))
++    bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base));
+ 
+   if (lacc && racc
+       && (sra_mode == SRA_MODE_EARLY_INTRA || sra_mode == SRA_MODE_INTRA)
+@@ -1586,7 +1578,6 @@
+       struct access *access = VEC_index (access_p, access_vec, i);
+       bool grp_write = access->write;
+       bool grp_read = !access->write;
+-      bool grp_assignment_read = access->grp_assignment_read;
+       bool multiple_reads = false;
+       bool total_scalarization = access->total_scalarization;
+       bool grp_partial_lhs = access->grp_partial_lhs;
+@@ -1620,7 +1611,6 @@
+ 	      else
+ 		grp_read = true;
+ 	    }
+-	  grp_assignment_read |= ac2->grp_assignment_read;
+ 	  grp_partial_lhs |= ac2->grp_partial_lhs;
+ 	  unscalarizable_region |= ac2->grp_unscalarizable_region;
+ 	  total_scalarization |= ac2->total_scalarization;
+@@ -1639,7 +1629,6 @@
+       access->group_representative = access;
+       access->grp_write = grp_write;
+       access->grp_read = grp_read;
+-      access->grp_assignment_read = grp_assignment_read;
+       access->grp_hint = multiple_reads || total_scalarization;
+       access->grp_partial_lhs = grp_partial_lhs;
+       access->grp_unscalarizable_region = unscalarizable_region;
+@@ -1774,17 +1763,14 @@
+   return false;
+ }
+ 
+-enum mark_read_status { SRA_MR_NOT_READ, SRA_MR_READ, SRA_MR_ASSIGN_READ};
+-
+ /* Analyze the subtree of accesses rooted in ROOT, scheduling replacements when
+-   both seeming beneficial and when ALLOW_REPLACEMENTS allows it.  Also set all
+-   sorts of access flags appropriately along the way, notably always set
+-   grp_read and grp_assign_read according to MARK_READ and grp_write when
+-   MARK_WRITE is true.  */
++   both seeming beneficial and when ALLOW_REPLACEMENTS allows it.  Also set
++   all sorts of access flags appropriately along the way, notably always ser
++   grp_read when MARK_READ is true and grp_write when MARK_WRITE is true.  */
+ 
+ static bool
+ analyze_access_subtree (struct access *root, bool allow_replacements,
+-			enum mark_read_status mark_read, bool mark_write)
++			bool mark_read, bool mark_write)
+ {
+   struct access *child;
+   HOST_WIDE_INT limit = root->offset + root->size;
+@@ -1793,17 +1779,10 @@
+   bool hole = false, sth_created = false;
+   bool direct_read = root->grp_read;
+ 
+-  if (mark_read == SRA_MR_ASSIGN_READ)
+-    {
+-      root->grp_read = 1;
+-      root->grp_assignment_read = 1;
+-    }
+-  if (mark_read == SRA_MR_READ)
+-    root->grp_read = 1;
+-  else if (root->grp_assignment_read)
+-    mark_read = SRA_MR_ASSIGN_READ;
++  if (mark_read)
++    root->grp_read = true;
+   else if (root->grp_read)
+-    mark_read = SRA_MR_READ;
++    mark_read = true;
+ 
+   if (mark_write)
+     root->grp_write = true;
+@@ -1832,7 +1811,7 @@
+ 
+   if (allow_replacements && scalar && !root->first_child
+       && (root->grp_hint
+-	  || (root->grp_write && (direct_read || root->grp_assignment_read)))
++	  || (direct_read && root->grp_write))
+       /* We must not ICE later on when trying to build an access to the
+ 	 original data within the aggregate even when it is impossible to do in
+ 	 a defined way like in the PR 42703 testcase.  Therefore we check
+@@ -1877,7 +1856,7 @@
+ 
+   while (access)
+     {
+-      if (analyze_access_subtree (access, true, SRA_MR_NOT_READ, false))
++      if (analyze_access_subtree (access, true, false, false))
+ 	ret = true;
+       access = access->next_grp;
+     }
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gcc/gcc.spec?r1=1.617&r2=1.618&f=u



More information about the pld-cvs-commit mailing list