re PR middle-end/85879 (ICE in expand_debug_locations, at cfgexpand.c:5405)
Fix PR middle-end/85879 gcc/ * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true' when emitting error on private/firstprivate reductions. * omp-low.c (lower_omp_target): Avoid reference-type processing on pointers for firstprivate clause. gcc/testsuite/ * gfortran.dg/goacc/pr77371-1.f90: New test. * gfortran.dg/goacc/pr77371-2.f90: New test. * gfortran.dg/goacc/pr85879.f90: New test. Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com> From-SVN: r261025
This commit is contained in:
parent
22f1f4c790
commit
bd1cab35c5
7 changed files with 53 additions and 4 deletions
|
@ -1,3 +1,12 @@
|
|||
2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
Cesar Philippidis <cesar@codesourcery.com>
|
||||
|
||||
PR middle-end/85879
|
||||
* gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
|
||||
when emitting error on private/firstprivate reductions.
|
||||
* omp-low.c (lower_omp_target): Avoid reference-type processing
|
||||
on pointers for firstprivate clause.
|
||||
|
||||
2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
|
||||
|
||||
* config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
|
||||
|
|
|
@ -9275,13 +9275,16 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, gimple_seq body, tree *list_p,
|
|||
case OMP_CLAUSE_REDUCTION:
|
||||
decl = OMP_CLAUSE_DECL (c);
|
||||
/* OpenACC reductions need a present_or_copy data clause.
|
||||
Add one if necessary. Error is the reduction is private. */
|
||||
Add one if necessary. Emit error when the reduction is private. */
|
||||
if (ctx->region_type == ORT_ACC_PARALLEL)
|
||||
{
|
||||
n = splay_tree_lookup (ctx->variables, (splay_tree_key) decl);
|
||||
if (n->value & (GOVD_PRIVATE | GOVD_FIRSTPRIVATE))
|
||||
error_at (OMP_CLAUSE_LOCATION (c), "invalid private "
|
||||
"reduction on %qE", DECL_NAME (decl));
|
||||
{
|
||||
remove = true;
|
||||
error_at (OMP_CLAUSE_LOCATION (c), "invalid private "
|
||||
"reduction on %qE", DECL_NAME (decl));
|
||||
}
|
||||
else if ((n->value & GOVD_MAP) == 0)
|
||||
{
|
||||
tree next = OMP_CLAUSE_CHAIN (c);
|
||||
|
|
|
@ -7700,7 +7700,8 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx)
|
|||
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE)
|
||||
{
|
||||
gcc_assert (is_gimple_omp_oacc (ctx->stmt));
|
||||
if (omp_is_reference (new_var))
|
||||
if (omp_is_reference (new_var)
|
||||
&& TREE_CODE (TREE_TYPE (new_var)) != POINTER_TYPE)
|
||||
{
|
||||
/* Create a local object to hold the instance
|
||||
value. */
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
Cesar Philippidis <cesar@codesourcery.com>
|
||||
|
||||
PR middle-end/85879
|
||||
* gfortran.dg/goacc/pr77371-1.f90: New test.
|
||||
* gfortran.dg/goacc/pr77371-2.f90: New test.
|
||||
* gfortran.dg/goacc/pr85879.f90: New test.
|
||||
|
||||
2018-05-31 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/stack_usage1.adb: Replace -fstack-usage with -Wstack-usage.
|
||||
|
|
9
gcc/testsuite/gfortran.dg/goacc/pr77371-1.f90
Normal file
9
gcc/testsuite/gfortran.dg/goacc/pr77371-1.f90
Normal file
|
@ -0,0 +1,9 @@
|
|||
! PR fortran/77371
|
||||
! { dg-do compile }
|
||||
program p
|
||||
character(:), allocatable :: z
|
||||
!$acc parallel
|
||||
z = 'abc'
|
||||
!$acc end parallel
|
||||
print *, z
|
||||
end
|
7
gcc/testsuite/gfortran.dg/goacc/pr77371-2.f90
Normal file
7
gcc/testsuite/gfortran.dg/goacc/pr77371-2.f90
Normal file
|
@ -0,0 +1,7 @@
|
|||
! PR fortran/77371
|
||||
! { dg-do compile }
|
||||
program p
|
||||
integer, allocatable :: n
|
||||
!$acc parallel reduction (+:n) private(n) ! { dg-error "invalid private reduction" }
|
||||
!$acc end parallel
|
||||
end
|
12
gcc/testsuite/gfortran.dg/goacc/pr85879.f90
Normal file
12
gcc/testsuite/gfortran.dg/goacc/pr85879.f90
Normal file
|
@ -0,0 +1,12 @@
|
|||
! PR middle-end/85879
|
||||
! { dg-do compile }
|
||||
|
||||
program p
|
||||
integer, pointer :: i
|
||||
integer, target :: j
|
||||
j = 2
|
||||
i => j
|
||||
!$acc parallel
|
||||
j = i
|
||||
!$acc end parallel
|
||||
end
|
Loading…
Add table
Reference in a new issue