https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100555
Bug ID: 100555 Summary: [OPENMP] ICE in target parallel construct with if-clause Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: xiao....@compiler-dev.com Target Milestone: --- The test case is, program test use omp_lib integer :: i i = 1 !!$omp target parallel if(target: i > 0) if(parallel: i > 0) !ICE !!$omp target parallel if(target: i > 0) !!$omp target parallel if(parallel: i > 0) !ICE !!$omp target parallel if(i > 0) !ICE !$omp target parallel print *, "thread id = ", omp_get_thread_num() !$omp end target parallel end program It seems that when exist if-clause applies to parallel directive, there is an ICE. If change target parallel construct to target parallel loop construct, there is no ICE.