!===----------------------------------------------------------------------===! ! 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. !===----------------------------------------------------------------------===! ! Regression test for an intermittent crash in taskloop LLVM IR codegen. ! A dead saveIP/restoreIP pair in OpenMPIRBuilder::createTaskloop introduced ! stale IRBuilder/debug-location state on the restore path before an ! immediately following SetInsertPoint override. Removing the dead restore ! avoids that restore path entirely. ! RUN: %flang_fc1 -emit-llvm -fopenmp -o - %s | FileCheck %s ! Verify that the taskloop runtime call is present in the generated LLVM IR ! and that the i64 bounds casts required by the ABI are emitted. ! CHECK-LABEL: define void @test_taskloop_( ! CHECK: sext i32 {{.*}} to i64 ! CHECK: call void @__kmpc_taskloop( subroutine test_taskloop(n) integer, intent(in) :: n integer :: i !$omp taskloop do i = 1, n end do !$omp end taskloop end subroutine test_taskloop