!RUN: bbc -emit-hlfir -fopenacc -fopenmp -o - %s | FileCheck %s !https://github.com/llvm/llvm-project/issues/91526 !CHECK-LABEL: func.func @_QPsimple1 !CHECK: cf.cond_br %{{[0-9]+}}, ^bb[[THEN:[0-9]+]], ^bb[[ELSE:[0-9]+]] !CHECK: ^bb[[THEN]]: !CHECK: omp.parallel !CHECK: cf.br ^bb[[ENDIF:[0-9]+]] !CHECK: ^bb[[ELSE]]: !CHECK: fir.call @_FortranAStopStatement !CHECK: fir.unreachable !CHECK: ^bb[[ENDIF]]: !CHECK: return subroutine simple1(y) implicit none logical, intent(in) :: y integer :: i if (y) then !$omp parallel i = 1 !$omp end parallel else stop 1 end if end subroutine !CHECK-LABEL: func.func @_QPsimple2 !CHECK: cf.cond_br %{{[0-9]+}}, ^bb[[THEN:[0-9]+]], ^bb[[ELSE:[0-9]+]] !CHECK: ^bb[[THEN]]: !CHECK: omp.parallel !CHECK: cf.br ^bb[[ENDIF:[0-9]+]] !CHECK: ^bb[[ELSE]]: !CHECK: fir.call @_FortranAStopStatement !CHECK: fir.unreachable !CHECK: ^bb[[ENDIF]]: !CHECK: fir.call @_FortranAioOutputReal64 !CHECK: return subroutine simple2(x, yn) implicit none logical, intent(in) :: yn integer, intent(in) :: x integer :: i real(8) :: E E = 0d0 if (yn) then !$omp parallel do private(i) reduction(+:E) do i = 1, x E = E + i end do !$omp end parallel do else stop 1 end if print *, E end subroutine !CHECK-LABEL: func.func @_QPacccase !CHECK: fir.select_case %{{[0-9]+}} : i32 [{{.*}}, ^bb[[CASE1:[0-9]+]], {{.*}}, ^bb[[CASE2:[0-9]+]], {{.*}}, ^bb[[CASE3:[0-9]+]]] !CHECK: ^bb[[CASE1]]: !CHECK: acc.serial !CHECK: cf.br ^bb[[EXIT:[0-9]+]] !CHECK: ^bb[[CASE2]]: !CHECK: fir.call @_FortranAioOutputAscii !CHECK: cf.br ^bb[[EXIT]] !CHECK: ^bb[[CASE3]]: !CHECK: fir.call @_FortranAioOutputAscii !CHECK: cf.br ^bb[[EXIT]] !CHECK: ^bb[[EXIT]]: !CHECK: return subroutine acccase(var) integer :: var integer :: res(10) select case (var) case (1) print *, "case 1" !$acc serial res(1) = 1 !$acc end serial case (2) print *, "case 2" case default print *, "case default" end select end subroutine