From: Jakub Jelinek Date: Mon, 21 Oct 2019 11:43:16 +0000 (+0200) Subject: backport: re PR middle-end/91920 (ggc 9.2.0 failing openmp compile on ppc64le) X-Git-Tag: releases/gcc-9.3.0~516 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5737654316be25066704e570aff136bda662c137;p=thirdparty%2Fgcc.git backport: re PR middle-end/91920 (ggc 9.2.0 failing openmp compile on ppc64le) Backported from mainline 2019-09-27 Jakub Jelinek 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: r277252 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fc6fbfd3e2a9..f5196aebb463 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2019-10-21 Jakub Jelinek Backported from mainline + 2019-09-27 Jakub Jelinek + + PR middle-end/91920 + * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL + variables as shared. + 2019-09-11 Jakub Jelinek PR tree-optimization/91723 diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 98408b981dcc..28e13a710215 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -7058,6 +7058,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 b7623bb03e6e..01b45cca48e1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2019-10-21 Jakub Jelinek Backported from mainline + 2019-09-27 Jakub Jelinek + + PR middle-end/91920 + * c-c++-common/gomp/pr91920.c: New test. + 2019-09-11 Jakub Jelinek PR rtl-optimization/89435 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 000000000000..604fd5986f8b --- /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); +}