From: Jakub Jelinek Date: Fri, 27 Sep 2019 20:13:00 +0000 (+0200) Subject: re PR middle-end/91920 (ggc 9.2.0 failing openmp compile on ppc64le) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=00798c58439037e3de959c3a003d6f4251eb93c6;p=gcc.git re PR middle-end/91920 (ggc 9.2.0 failing openmp compile on ppc64le) PR middle-end/91920 * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL variables as shared. * c-c++-common/gomp/pr91920.c: New test. From-SVN: r276211 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c935cf3d3d4..29f56d5b61a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-09-27 Jakub Jelinek + + PR middle-end/91920 + * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL + variables as shared. + 2019-09-27 Iain Sandoe * config/rs6000/darwin.md (@macho_correct_pic_): New, diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 623cdbfed7c..88d6571976f 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -7132,6 +7132,8 @@ omp_default_clause (struct gimplify_omp_ctx *ctx, tree decl, kind = lang_hooks.decls.omp_predetermined_sharing (decl); if (kind != OMP_CLAUSE_DEFAULT_UNSPECIFIED) default_kind = kind; + else if (VAR_P (decl) && TREE_STATIC (decl) && DECL_IN_CONSTANT_POOL (decl)) + default_kind = OMP_CLAUSE_DEFAULT_SHARED; switch (default_kind) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8386c33770b..9aee20c994a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,7 +1,10 @@ 2019-09-27 Jakub Jelinek + PR middle-end/91920 + * c-c++-common/gomp/pr91920.c: New test. + PR target/91919 - * gcc.c-torture/compile/pr91919.c: New.test + * gcc.c-torture/compile/pr91919.c: New test. 2019-09-27 Manfred Schwarb diff --git a/gcc/testsuite/c-c++-common/gomp/pr91920.c b/gcc/testsuite/c-c++-common/gomp/pr91920.c new file mode 100644 index 00000000000..604fd5986f8 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr91920.c @@ -0,0 +1,19 @@ +/* PR middle-end/91920 */ + +void bar (float *); + +void +foo (void) +{ + int i; + float f[3] = { 0.0f, 0.0f, 0.0f }; +#pragma omp parallel for default(none) reduction(+:f[:3]) + for (i = 0; i < 1000; i++) + { + int j; + float k[3] = { 0.25f, 0.5f, 0.75f }; + for (j = 0; j < 3; j++) + f[j] += k[j]; + } + bar (f); +}