[Bug fortran/95869] New: ICE when "target parallel" construct used with "if" clause in Fortran
kcy at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Wed Jun 24 15:23:51 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95869
Bug ID: 95869
Summary: ICE when "target parallel" construct used with "if"
clause in Fortran
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: kcy at codesourcery dot com
Target Milestone: ---
Compiling the following program results in an ICE:
program target_parallel_if
implicit none
integer, parameter :: N = 100
integer, parameter :: LIMIT = 60
integer :: i, j
integer, dimension(N) :: a = (/ (i, i = 1,N) /)
do j = 1, N
!$omp target parallel if(j .lt. LIMIT) map(tofrom: a(1:N))
do i = 1, N
a(i) = a(i) + 1
end do
!$omp end target parallel
end do
end program
$ x86_64-none-linux-gnu-gfortran target_parallel_if.f90 -O -fopenmp -S -o
target_parallel_if.s
target_parallel_if.f90:9:0:
9 | !$omp target parallel if(j .lt. LIMIT) map(tofrom: a(1:N))
|
internal compiler error: in gimplify_var_or_parm_decl, at gimplify.c:2830
0xf6c765 gimplify_var_or_parm_decl
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:2830
0xf9efdc gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:14071
0xf76084 gimplify_modify_expr
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:5782
0xf9d09b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:13612
0xf7a44b gimplify_stmt(tree_node**, gimple**)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:6825
0xf696fc gimplify_statement_list
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:1869
0xf9ef01 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:14055
0xf7a44b gimplify_stmt(tree_node**, gimple**)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:6825
0xf67d53 gimplify_bind_expr
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:1424
0xf9ddfc gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:13812
0xf7a44b gimplify_stmt(tree_node**, gimple**)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:6825
0xf696fc gimplify_statement_list
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:1869
0xf9ef01 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:14055
0xf7a44b gimplify_stmt(tree_node**, gimple**)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:6825
0xf67d53 gimplify_bind_expr
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:1424
0xf9ddfc gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:13812
0xf7a44b gimplify_stmt(tree_node**, gimple**)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:6825
0xf65136 gimplify_and_add(tree_node*, gimple**)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:486
0xf6960a gimplify_loop_expr
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:1843
0xf9de1d gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/gimplify.c:13816
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://sourcery.mentor.com/GNUToolchain/> for instructions.
The issue seems to have been present since GCC 8. In GCC 7, it also ICEs but
with a different backtrace:
$ x86_64-none-linux-gnu-gfortran target_parallel_if.f90 -O -fopenmp -S -o
target_parallel_if.s
f951: internal compiler error: in parse_omp_structured_block, at
fortran/parse.c:5096
0x89fec2 parse_omp_structured_block
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/parse.c:5096
0x8a02f5 parse_executable
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/parse.c:5345
0x89f541 parse_do_block
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/parse.c:4649
0x8a0280 parse_executable
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/parse.c:5299
0x8a0c04 parse_progunit
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/parse.c:5659
0x8a1af4 gfc_parse_file()
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/parse.c:6161
0x8f89f1 gfc_be_parse_file
/scratch/kyeung/openacc/trunk/src/gcc-mainline/gcc/fortran/f95-lang.c:204
The problem does not occur if the 'target parallel' is changed to 'target
parallel do', or if the 'if' clause is omitted. An equivalent program in C also
does not trigger the ICE.
More information about the Gcc-bugs
mailing list