rpms/gcc/devel gcc41-pr26823.patch, NONE, 1.1 gcc41-rh188649-test.patch, NONE, 1.1 .cvsignore, 1.143, 1.144 gcc41.spec, 1.48, 1.49 sources, 1.145, 1.146 gcc41-gomp-static.patch, 1.1, NONE gcc41-rh183212.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Fri Apr 14 09:40:32 UTC 2006


Author: jakub

Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv30071

Modified Files:
	.cvsignore gcc41.spec sources 
Added Files:
	gcc41-pr26823.patch gcc41-rh188649-test.patch 
Removed Files:
	gcc41-gomp-static.patch gcc41-rh183212.patch 
Log Message:
4.1.0-8


gcc41-pr26823.patch:
 except.c                          |   42 ++++++++++++++++++++++++++++++++++++++
 except.h                          |    1 
 testsuite/g++.dg/gomp/pr26823-1.C |   23 ++++++++++++++++++++
 testsuite/g++.dg/gomp/pr26823-2.C |   29 ++++++++++++++++++++++++++
 tree-cfg.c                        |   13 +++++++++--
 5 files changed, 105 insertions(+), 3 deletions(-)

--- NEW FILE gcc41-pr26823.patch ---
2006-04-13  Jakub Jelinek  <jakub at redhat.com>

	PR middle-end/26823
	* except.h (eh_region_outermost): New prototype.
	* except.c (eh_region_outermost): New function.
	* tree-cfg.c (find_outermost_region_in_block): Use it.

	* g++.dg/gomp/pr26823-1.C: New test.
	* g++.dg/gomp/pr26823-2.C: New test.

--- gcc/except.h.jj	2006-03-24 17:07:23.000000000 +0100
+++ gcc/except.h	2006-04-13 15:24:47.000000000 +0200
@@ -108,6 +108,7 @@ extern void expand_resx_expr (tree);
 extern void verify_eh_tree (struct function *);
 extern void dump_eh_tree (FILE *, struct function *);
 extern bool eh_region_outer_p (struct function *, int, int);
+extern int eh_region_outermost (struct function *, int, int);
 
 /* tree-eh.c */
 extern void add_stmt_to_eh_region_fn (struct function *, tree, int);
--- gcc/tree-cfg.c.jj	2006-04-01 13:14:58.000000000 +0200
+++ gcc/tree-cfg.c	2006-04-13 15:38:15.000000000 +0200
@@ -4733,9 +4733,16 @@ find_outermost_region_in_block (struct f
       int stmt_region;
 
       stmt_region = lookup_stmt_eh_region_fn (src_cfun, stmt);
-      if (stmt_region > 0
-	  && (region < 0 || eh_region_outer_p (src_cfun, stmt_region, region)))
-	region = stmt_region;
+      if (stmt_region > 0)
+	{
+	  if (region < 0)
+	    region = stmt_region;
+	  else if (stmt_region != region)
+	    {
+	      region = eh_region_outermost (src_cfun, stmt_region, region);
+	      gcc_assert (region != -1);
+	    }
+	}
     }
 
   return region;
--- gcc/except.c.jj	2006-04-10 13:54:18.000000000 +0200
+++ gcc/except.c	2006-04-13 15:35:53.000000000 +0200
@@ -1078,6 +1078,48 @@ eh_region_outer_p (struct function *ifun
 
   return false;
 }
+
+/* Return region number of region that is outer to both if REGION_A and
+   REGION_B in IFUN.  */
+
+int
+eh_region_outermost (struct function *ifun, int region_a, int region_b)
+{
+  struct eh_region *rp_a, *rp_b;
+  sbitmap b_outer;
+
+  gcc_assert (ifun->eh->last_region_number > 0);
+  gcc_assert (ifun->eh->region_tree);
+
+  rp_a = VEC_index (eh_region, ifun->eh->region_array, region_a);
+  rp_b = VEC_index (eh_region, ifun->eh->region_array, region_b);
+  gcc_assert (rp_a != NULL);
+  gcc_assert (rp_b != NULL);
+
+  b_outer = sbitmap_alloc (ifun->eh->last_region_number + 1);
+  sbitmap_zero (b_outer);
+
+  do
+    {
+      SET_BIT (b_outer, rp_b->region_number);
+      rp_b = rp_b->outer;
+    }
+  while (rp_b);
+
+  do
+    {
+      if (TEST_BIT (b_outer, rp_a->region_number))
+	{
+	  sbitmap_free (b_outer);
+	  return rp_a->region_number;
+	}
+      rp_a = rp_a->outer;
+    }
+  while (rp_a);
+
+  sbitmap_free (b_outer);
+  return -1;
+}
 
 static int
 t2r_eq (const void *pentry, const void *pdata)
--- gcc/testsuite/g++.dg/gomp/pr26823-1.C.jj	2006-04-13 15:42:27.000000000 +0200
+++ gcc/testsuite/g++.dg/gomp/pr26823-1.C	2006-04-13 15:42:15.000000000 +0200
@@ -0,0 +1,23 @@
+// PR middle-end/26823
+// { dg-do compile }
+
+struct A
+{
+  ~A () {}
+};
+
+struct B
+{
+  A a;
+  B ();
+};
+
+void
+foo ()
+{
+#pragma omp parallel
+  {
+    B b[1];
+    new int;
+  }
+}
--- gcc/testsuite/g++.dg/gomp/pr26823-2.C.jj	2006-04-13 15:42:35.000000000 +0200
+++ gcc/testsuite/g++.dg/gomp/pr26823-2.C	2006-04-13 15:43:05.000000000 +0200
@@ -0,0 +1,29 @@
+// PR middle-end/26823
+// { dg-do compile }
+
+struct A
+{
+  ~A () {}
+};
+
+extern void bar ();
+
+void
+foo ()
+{
+#pragma omp parallel
+  {
+    {
+      A a;
+      bar ();
+    }
+    {
+      A a;
+      bar ();
+    }
+    {
+      A a;
+      bar ();
+    }
+  }
+}

gcc41-rh188649-test.patch:
 20060412-1.c |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+)

--- NEW FILE gcc41-rh188649-test.patch ---
2006-04-12  Jakub Jelinek  <jakub at redhat.com>

	* gcc.c-torture/execute/20060412-1.c: New test.

--- gcc/testsuite/gcc.c-torture/execute/20060412-1.c.jj	2006-04-03 11:04:53.758553500 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20060412-1.c	2006-04-12 10:54:20.000000000 +0200
@@ -0,0 +1,33 @@
+extern void abort (void);
+
+struct S
+{
+  long o;
+};
+
+struct T
+{
+  long o;
+  struct S m[82];
+};
+
+struct T t;
+
+int
+main ()
+{
+  struct S *p, *q;
+
+  p = (struct S *) &t;
+  p = &((struct T *) p)->m[0];
+  q = p + 82;
+  while (--q > p)
+    q->o = -1;
+  q->o = 0;
+
+  if (q > p)
+    abort ();
+  if (q - p > 0)
+    abort ();
+  return 0;
+}


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -r1.143 -r1.144
--- .cvsignore	10 Apr 2006 21:30:11 -0000	1.143
+++ .cvsignore	14 Apr 2006 09:40:18 -0000	1.144
@@ -1 +1 @@
-gcc-4.1.0-20060410.tar.bz2
+gcc-4.1.0-20060414.tar.bz2


Index: gcc41.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc41.spec,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- gcc41.spec	10 Apr 2006 21:30:22 -0000	1.48
+++ gcc41.spec	14 Apr 2006 09:40:18 -0000	1.49
@@ -1,6 +1,6 @@
-%define DATE 20060410
+%define DATE 20060414
 %define gcc_version 4.1.0
-%define gcc_release 7
+%define gcc_release 8
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64
@@ -113,10 +113,10 @@
 Patch16: gcc41-pr20297-test.patch
 Patch17: gcc41-java-pr13212.patch
 Patch18: gcc41-objc-rh185398.patch
-Patch19: gcc41-gomp-static.patch
+Patch19: gcc41-pr26823.patch
 Patch20: gcc41-pr22375.patch
 Patch21: gcc41-pr24685.patch
-Patch22: gcc41-rh183212.patch
+Patch22: gcc41-rh188649-test.patch
 
 %define _gnu %{nil}
 %ifarch sparc
@@ -414,10 +414,10 @@
 %patch16 -p0 -E -b .pr20297-test~
 %patch17 -p0 -b .java-pr13212~
 %patch18 -p0 -b .objc-rh185398~
-%patch19 -p0 -b .gomp-static~
+%patch19 -p0 -b .pr26823~
 %patch20 -p0 -b .pr22375~
 %patch21 -p0 -b .pr24685~
-%patch22 -p0 -b .rh183212~
+%patch22 -p0 -b .rh188649-test~
 
 sed -i -e 's/4\.1\.1/4.1.0/' gcc/BASE-VER gcc/version.c
 sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
@@ -1435,6 +1435,14 @@
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Fri Apr 14 2006 Jakub Jelinek <jakub at redhat.com> 4.1.0-8
+- update from gcc-4_1-branch (-r112825:112951)
+  - PRs c++/26122, c++/26295, fortran/23634, fortran/25619, fortran/26257,
+	libgcj/23829, libgcj/26522, libgfortran/26890, target/27006
+- merge gomp changes from trunk (-r112934:112935)
+  - PR libgomp/26651
+- fix ICE in gomp handling of EH regions (PR middle-end/26823)
+
 * Mon Apr 10 2006 Jakub Jelinek <jakub at redhat.com> 4.1.0-7
 - update from gcc-4_1-branch (-r112727:112825)
   - PRs fortran/19101, fortran/25031, fortran/26779, fortran/26891,


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/sources,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -r1.145 -r1.146
--- sources	10 Apr 2006 21:30:22 -0000	1.145
+++ sources	14 Apr 2006 09:40:18 -0000	1.146
@@ -1 +1 @@
-56f6a8fc0e1e97ff5f73df39ec08726b  gcc-4.1.0-20060410.tar.bz2
+3d39e406b849c2225ebb203a84013838  gcc-4.1.0-20060414.tar.bz2


--- gcc41-gomp-static.patch DELETED ---


--- gcc41-rh183212.patch DELETED ---




More information about the fedora-cvs-commits mailing list