From: Jakub Jelinek Date: Thu, 9 Feb 2012 17:15:29 +0000 (+0100) Subject: backport: re PR c/51360 (spurious unused-but-set-variable warning for var used in... X-Git-Tag: releases/gcc-4.6.3~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6668d411dfabedd9c89501cae46e5624afbb011f;p=thirdparty%2Fgcc.git backport: re PR c/51360 (spurious unused-but-set-variable warning for var used in OpenMP pragma) Backported from mainline 2011-12-15 Jakub Jelinek 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fdd0daa557dc..ee858180e85b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Backported from mainline 2011-12-15 Jakub Jelinek + 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. diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 083a29f6373e..499a230ecf1b 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -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) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e1e00f5db4f4..cd1881a95a8c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2012-02-09 Jakub Jelinek + + Backported from mainline + 2011-12-15 Jakub Jelinek + + 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 PR c++/51344 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index db2b3db052d4..3af9bb9ceac2 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -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: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ebc3533510e4..1c5a1b7071ed 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2012-02-09 Jakub Jelinek + + Backported from mainline + 2011-12-15 Jakub Jelinek + + 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 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 index 000000000000..cc03849a1885 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr51360-2.C @@ -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 index 000000000000..06c64873c70e --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr51360.C @@ -0,0 +1,28 @@ +// PR c/51360 +// { dg-do compile } +// { dg-options "-Wunused -W -fopenmp" } + +template +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 index 000000000000..cc03849a1885 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/pr51360.c @@ -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++) + ; +}