89 lines · plain
1!RUN: bbc -emit-hlfir -fopenacc -fopenmp -o - %s | FileCheck %s2 3!https://github.com/llvm/llvm-project/issues/915264 5!CHECK-LABEL: func.func @_QPsimple16!CHECK: cf.cond_br %{{[0-9]+}}, ^bb[[THEN:[0-9]+]], ^bb[[ELSE:[0-9]+]]7!CHECK: ^bb[[THEN]]:8!CHECK: omp.parallel9!CHECK: cf.br ^bb[[ENDIF:[0-9]+]]10!CHECK: ^bb[[ELSE]]:11!CHECK: fir.call @_FortranAStopStatement12!CHECK: fir.unreachable13!CHECK: ^bb[[ENDIF]]:14!CHECK: return15 16subroutine simple1(y)17 implicit none18 logical, intent(in) :: y19 integer :: i20 if (y) then21 !$omp parallel22 i = 123 !$omp end parallel24 else25 stop 126 end if27end subroutine28 29!CHECK-LABEL: func.func @_QPsimple230!CHECK: cf.cond_br %{{[0-9]+}}, ^bb[[THEN:[0-9]+]], ^bb[[ELSE:[0-9]+]]31!CHECK: ^bb[[THEN]]:32!CHECK: omp.parallel33!CHECK: cf.br ^bb[[ENDIF:[0-9]+]]34!CHECK: ^bb[[ELSE]]:35!CHECK: fir.call @_FortranAStopStatement36!CHECK: fir.unreachable37!CHECK: ^bb[[ENDIF]]:38!CHECK: fir.call @_FortranAioOutputReal6439!CHECK: return40subroutine simple2(x, yn)41 implicit none42 logical, intent(in) :: yn43 integer, intent(in) :: x44 integer :: i45 real(8) :: E46 E = 0d047 48 if (yn) then49 !$omp parallel do private(i) reduction(+:E)50 do i = 1, x51 E = E + i52 end do53 !$omp end parallel do54 else55 stop 156 end if57 print *, E58end subroutine59 60!CHECK-LABEL: func.func @_QPacccase61!CHECK: fir.select_case %{{[0-9]+}} : i32 [{{.*}}, ^bb[[CASE1:[0-9]+]], {{.*}}, ^bb[[CASE2:[0-9]+]], {{.*}}, ^bb[[CASE3:[0-9]+]]]62!CHECK: ^bb[[CASE1]]:63!CHECK: acc.serial64!CHECK: cf.br ^bb[[EXIT:[0-9]+]]65!CHECK: ^bb[[CASE2]]:66!CHECK: fir.call @_FortranAioOutputAscii67!CHECK: cf.br ^bb[[EXIT]]68!CHECK: ^bb[[CASE3]]:69!CHECK: fir.call @_FortranAioOutputAscii70!CHECK: cf.br ^bb[[EXIT]]71!CHECK: ^bb[[EXIT]]:72!CHECK: return73subroutine acccase(var)74 integer :: var75 integer :: res(10)76 select case (var)77 case (1)78 print *, "case 1"79 !$acc serial80 res(1) = 181 !$acc end serial82 case (2)83 print *, "case 2"84 case default85 print *, "case default"86 end select87end subroutine88 89