| !===----------------------------------------------------------------------===! | |
| ! This directory can be used to add Integration tests involving multiple | |
| ! stages of the compiler (for eg. from Fortran to LLVM IR). It should not | |
| ! contain executable tests. We should only add tests here sparingly and only | |
| ! if there is no other way to test. Repeat this message in each test that is | |
| ! added to this directory and sub-directories. | |
| !===----------------------------------------------------------------------===! | |
| ! This test is to ensure that allocas generated inside the loop body of a | |
| ! taskloop are located correctly inside the omp.taskloop.context but not inside | |
| ! the loop itself. | |
| ! RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | tco -test-gen | FileCheck %s | |
| ! CHECK-LABEL: llvm.func @_QPtest_taskloop( | |
| subroutine test_taskloop(lb,ub,step,a) | |
| integer :: lb, ub, step | |
| integer, allocatable :: a(:) | |
| !$omp taskloop shared(a) | |
| ! CHECK: omp.taskloop.context private({{.*}}) { | |
| ! CHECK: llvm.alloca | |
| ! CHECK: omp.taskloop.wrapper { | |
| do i = lb,ub,step | |
| ! CHECK-NOT: llvm.alloca | |
| a(i) = i | |
| enddo | |
| !$omp end taskloop | |
| ! CHECK: omp.yield | |
| ! CHECK-NEXT: } | |
| end subroutine |