47 lines · plain
1!RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s2 3! Check the first entry point4!CHECK: func.func @_QPprocess_a5!CHECK: omp.parallel6!CHECK: omp.wsloop7!CHECK: %[[V0:[0-9]+]] = fir.load %{{[0-9]+}} : !fir.ref<f32>8!CHECK: %[[V1:[a-z_0-9]+]] = arith.constant 2.000000e+00 : f329!CHECK: = arith.mulf %[[V0]], %[[V1]] fastmath<contract> : f3210!CHECK: omp.terminator11!CHECK-NOT: omp12!CHECK: return13 14! Check the second entry point15!CHECK: func.func @_QPprocess_b16!CHECK: omp.parallel17!CHECK: fir.do_loop18!CHECK: %[[V3:[0-9]+]] = fir.load %[[V2:[0-9]+]]#0 : !fir.ref<i32>19!CHECK: %[[V4:[0-9]+]] = fir.load %[[V2]]#0 : !fir.ref<i32>20!CHECK: = arith.muli %[[V3]], %[[V4]] : i3221!CHECK: omp.terminator22!CHECK-NOT: omp23!CHECK: return24 25subroutine process_a(n, a)26 integer, intent(in) :: n27 real, intent(inout) :: a(n)28 integer :: i29 30 !$omp parallel do31 do i = 1, n32 a(i) = a(i) * 2.033 end do34 !$omp end parallel do35 36 return37 38 entry process_b(n, b)39 40 !$omp parallel41 do i = 1, n42 a(i) = i * i43 end do44 !$omp end parallel45 46end subroutine process_a47