]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR c/51360 (spurious unused-but-set-variable warning for var used in...
authorJakub Jelinek <jakub@redhat.com>
Thu, 9 Feb 2012 17:15:29 +0000 (18:15 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 9 Feb 2012 17:15:29 +0000 (18:15 +0100)
Backported from mainline
2011-12-15  Jakub Jelinek  <jakub@redhat.com>

PR c/51360
* c-parser.c (c_parser_omp_clause_num_threads,
c_parser_omp_clause_schedule): Call mark_exp_read.

* semantics.c (finish_omp_clauses): For OMP_CLAUSE_NUM_THREADS_EXPR
and OMP_CLAUSE_SCHEDULE_CHUNK_EXPR call mark_rvalue_use.

* gcc.dg/gomp/pr51360.c: New test.
* g++.dg/gomp/pr51360.C: New test.
* g++.dg/gomp/pr51360-2.C: New test.

From-SVN: r184049

gcc/ChangeLog
gcc/c-parser.c
gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/gomp/pr51360-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/gomp/pr51360.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/gomp/pr51360.c [new file with mode: 0644]

index fdd0daa557dc99d5fced959eeb14b7b37bbd6098..ee858180e85bbd5721f28931866d0d7f696aacb0 100644 (file)
@@ -3,6 +3,10 @@
        Backported from mainline
        2011-12-15  Jakub Jelinek  <jakub@redhat.com>
 
+       PR c/51360
+       * c-parser.c (c_parser_omp_clause_num_threads,
+       c_parser_omp_clause_schedule): Call mark_exp_read.
+
        PR debug/51517
        * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test
        !DECL_IGNORED_P instead of !DECL_ARTIFICIAL.
index 083a29f6373e7e173578b3221a280f49ef78ebd1..499a230ecf1b4983ec73f1fad04205d58d06cc68 100644 (file)
@@ -8629,6 +8629,7 @@ c_parser_omp_clause_num_threads (c_parser *parser, tree list)
     {
       location_t expr_loc = c_parser_peek_token (parser)->location;
       tree c, t = c_parser_expression (parser).value;
+      mark_exp_read (t);
       t = c_fully_fold (t, false, NULL);
 
       c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
@@ -8815,6 +8816,7 @@ c_parser_omp_clause_schedule (c_parser *parser, tree list)
 
       here = c_parser_peek_token (parser)->location;
       t = c_parser_expr_no_commas (parser, NULL).value;
+      mark_exp_read (t);
       t = c_fully_fold (t, false, NULL);
 
       if (OMP_CLAUSE_SCHEDULE_KIND (c) == OMP_CLAUSE_SCHEDULE_RUNTIME)
index e1e00f5db4f4e2538373b3b9ea1d8560ba4f1ac3..cd1881a95a8c435c3223e8b5959d65f77cd31f4b 100644 (file)
@@ -1,3 +1,12 @@
+2012-02-09  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       2011-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/51360
+       * semantics.c (finish_omp_clauses): For OMP_CLAUSE_NUM_THREADS_EXPR
+       and OMP_CLAUSE_SCHEDULE_CHUNK_EXPR call mark_rvalue_use.
+
 2012-01-19  Kai Tietz  <ktietz@redhat.com>
 
        PR c++/51344
index db2b3db052d402202023bee0eb0d3d9c418c603a..3af9bb9ceac251b7b68c5d14f68eed7fec03ff8d 100644 (file)
@@ -3817,6 +3817,8 @@ finish_omp_clauses (tree clauses)
              error ("num_threads expression must be integral");
              remove = true;
            }
+         else
+           OMP_CLAUSE_NUM_THREADS_EXPR (c) = mark_rvalue_use (t);
          break;
 
        case OMP_CLAUSE_SCHEDULE:
@@ -3831,6 +3833,8 @@ finish_omp_clauses (tree clauses)
              error ("schedule chunk size expression must be integral");
              remove = true;
            }
+         else
+           OMP_CLAUSE_SCHEDULE_CHUNK_EXPR (c) = mark_rvalue_use (t);
          break;
 
        case OMP_CLAUSE_NOWAIT:
index ebc3533510e4caf790b452b4198d591f111cb4c5..1c5a1b7071eda49159f554081684dc3a4d4eb6c3 100644 (file)
@@ -1,3 +1,13 @@
+2012-02-09  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       2011-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/51360
+       * gcc.dg/gomp/pr51360.c: New test.
+       * g++.dg/gomp/pr51360.C: New test.
+       * g++.dg/gomp/pr51360-2.C: New test.
+
 2012-02-09  Peter Bergner  <bergner@vnet.ibm.com>
 
        Backport from mainline
diff --git a/gcc/testsuite/g++.dg/gomp/pr51360-2.C b/gcc/testsuite/g++.dg/gomp/pr51360-2.C
new file mode 100644 (file)
index 0000000..cc03849
--- /dev/null
@@ -0,0 +1,21 @@
+/* PR c/51360 */
+/* { dg-do compile } */
+/* { dg-options "-Wunused -W -fopenmp" } */
+
+void
+foo (int a, int b, int c)
+{
+  int m, n, o, i;
+  m = 6;
+  n = 1;
+  o = 5;
+  a = 6;
+  b = 1;
+  c = 5;
+  #pragma omp parallel for num_threads (m) if (n) schedule (static, o)
+  for (i = 0; i < 10; i++)
+    ;
+  #pragma omp parallel for num_threads (a) if (b) schedule (static, c)
+  for (i = 0; i < 10; i++)
+    ;
+}
diff --git a/gcc/testsuite/g++.dg/gomp/pr51360.C b/gcc/testsuite/g++.dg/gomp/pr51360.C
new file mode 100644 (file)
index 0000000..06c6487
--- /dev/null
@@ -0,0 +1,28 @@
+// PR c/51360
+// { dg-do compile }
+// { dg-options "-Wunused -W -fopenmp" }
+
+template <typename T>
+void
+foo (T a, T b, T c)
+{
+  T m, n, o, i;
+  m = 6;
+  n = 1;
+  o = 5;
+  a = 6;
+  b = 1;
+  c = 5;
+  #pragma omp parallel for num_threads (m) if (n) schedule (static, o)
+  for (i = 0; i < 10; i++)
+    ;
+  #pragma omp parallel for num_threads (a) if (b) schedule (static, c)
+  for (i = 0; i < 10; i++)
+    ;
+}
+
+void
+bar ()
+{
+  foo (0, 0, 0);
+}
diff --git a/gcc/testsuite/gcc.dg/gomp/pr51360.c b/gcc/testsuite/gcc.dg/gomp/pr51360.c
new file mode 100644 (file)
index 0000000..cc03849
--- /dev/null
@@ -0,0 +1,21 @@
+/* PR c/51360 */
+/* { dg-do compile } */
+/* { dg-options "-Wunused -W -fopenmp" } */
+
+void
+foo (int a, int b, int c)
+{
+  int m, n, o, i;
+  m = 6;
+  n = 1;
+  o = 5;
+  a = 6;
+  b = 1;
+  c = 5;
+  #pragma omp parallel for num_threads (m) if (n) schedule (static, o)
+  for (i = 0; i < 10; i++)
+    ;
+  #pragma omp parallel for num_threads (a) if (b) schedule (static, c)
+  for (i = 0; i < 10; i++)
+    ;
+}