summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-03-10 19:39:30 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-03-10 19:39:30 +0000
commitb821e7908a9ea91b3f46bfedee8330a256aed8db (patch)
treee7427aeb89403e376f2ec5442aca8c328cc8f960
parent29797a976c6c5ebfc0a095d29dc331878e51da37 (diff)
downloadppe42-gcc-b821e7908a9ea91b3f46bfedee8330a256aed8db.tar.gz
ppe42-gcc-b821e7908a9ea91b3f46bfedee8330a256aed8db.zip
PR middle-end/35099
* tree-cfg.c (new_label_mapper): Update cfun->last_label_uid. * g++.dg/gomp/pr35099.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133084 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr35099.C39
-rw-r--r--gcc/tree-cfg.c2
4 files changed, 51 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9d3ba56ca53..f6d48e7f494 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/35099
+ * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
+
2008-03-10 H.J. Lu <hongjiu.lu@intel.com>
PR tree-optimization/35494
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d4cb32611cb..5cefdef4011 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/35099
+ * g++.dg/gomp/pr35099.C: New test.
+
2008-03-10 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/range_check2.adb: New test.
diff --git a/gcc/testsuite/g++.dg/gomp/pr35099.C b/gcc/testsuite/g++.dg/gomp/pr35099.C
new file mode 100644
index 00000000000..6c793a3f8c2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr35099.C
@@ -0,0 +1,39 @@
+// PR middle-end/35099
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp" }
+
+struct A
+{
+ ~A () throw ();
+ void foo ();
+};
+
+struct B
+{
+ B () { A ().foo (); }
+};
+
+void
+bar ()
+{
+#pragma omp parallel
+ {
+ #pragma omp single
+ B ();
+ #pragma omp for
+ for (int i = 0; i < 2; ++i)
+ B ();
+ }
+}
+
+void
+baz ()
+{
+#pragma omp parallel
+ {
+ #pragma omp single
+ B ();
+ #pragma omp single
+ B ();
+ }
+}
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index f98c684471e..5e551aa4517 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -5895,6 +5895,8 @@ new_label_mapper (tree decl, void *data)
m->base.from = decl;
m->to = create_artificial_label ();
LABEL_DECL_UID (m->to) = LABEL_DECL_UID (decl);
+ if (LABEL_DECL_UID (m->to) >= cfun->last_label_uid)
+ cfun->last_label_uid = LABEL_DECL_UID (m->to) + 1;
slot = htab_find_slot_with_hash (hash, m, m->hash, INSERT);
gcc_assert (*slot == NULL);
OpenPOWER on IntegriCloud