Test case: program F03_2_9_3_5_2b use omp_lib implicit none integer, parameter :: NT = 4 integer, parameter :: int64_t = selected_int_kind(18) integer (kind=int64_t), parameter::DYNAMIC_MEMORY = 536870912_int64_t !512MiB integer (kind=int64_t), parameter::ARRAY_SIZE = DYNAMIC_MEMORY/NT/8 integer, parameter :: EXPECTED_RESULT = 1 logical :: fail = .false. integer :: i integer (kind=int64_t), allocatable :: A(:)
call omp_set_num_threads(NT) call omp_set_dynamic(.false.) !$omp parallel if (omp_get_thread_num() == NT-1) then allocate(A(ARRAY_SIZE)) end if !$omp barrier ! ensure A is allocated before the sections region !$omp sections lastprivate(A) ! This thread sleeps to attempt to let the thread that executes the ! next section get ahead. call sleep(5) A = EXPECTED_RESULT+1 !$omp section A = EXPECTED_RESULT !$omp end sections ! implicit barrier at end of sections construct !$omp master ! verify that all elements of the array are EXPECTED_RESULT if (MAXVAL(A) /= EXPECTED_RESULT .or. MINVAL(A) /= EXPECTED_RESULT) then print *, 'FAIL - MAXVAL(A) == ', MAXVAL(A), ' (expected ', & EXPECTED_RESULT, '), MINVAL(A) == ', MINVAL(A), & ' (expected ', EXPECTED_RESULT, ')' stop 1 end if !$omp end master !$omp end parallel end program F03_2_9_3_5_2b Compilation: > gfortran -c -fopenmp test.f90 test.f90: In function 'f03_2_9_3_5_2b': test.f90:25: internal compiler error: in single_pred_edge, at basic-block.h:658 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. -- Summary: ICE: in single_pred_edge, at basic-block.h:658 Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: longb at cray dot com GCC build triplet: x86_64-suse-linux GCC host triplet: x86_64-suse-linux GCC target triplet: x86_64-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43338