[flang-commits] [flang] [llvm] [openmp] [OpenMP] [Flang] Add Fortran integer(kind=8) overloads for omp_lib APIs (PR #221451)
via flang-commits
flang-commits at lists.llvm.org
Sat Sep 5 07:33:11 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-fir-hlfir
Author: shivaramaarao
<details>
<summary>Changes</summary>
Fortran code that uses integer(8) arguments, including -fdefault-integer-8, did not match omp_lib interfaces declared with omp_integer_kind (typically kind 4). Added *_8 specific procedures to named generic interfaces in omp_lib, exported matching Fortran and C runtime entry points, and implemented the *_8 functions as thin wrappers that saturate-convert arguments to 32-bit and call the existing APIs.
Assisted by Cursor in generating the repetitive code and testcase
---
Patch is 73.72 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/221451.diff
12 Files Affected:
- (added) flang/test/Lower/OpenMP/omp-lib-integer-wrappers.f90 (+148)
- (modified) llvm/include/llvm/Frontend/OpenMP/OMPKinds.def (+25)
- (modified) openmp/device/include/Interface.h (+1)
- (modified) openmp/device/src/State.cpp (+8)
- (modified) openmp/module/omp_lib.F90.var (+279-103)
- (modified) openmp/runtime/src/dllexports (+23)
- (modified) openmp/runtime/src/include/omp.h.var (+20)
- (modified) openmp/runtime/src/kmp.h (+1)
- (modified) openmp/runtime/src/kmp_csupport.cpp (+8)
- (modified) openmp/runtime/src/kmp_ftn_entry.h (+141)
- (modified) openmp/runtime/src/kmp_ftn_os.h (+80)
- (modified) openmp/runtime/src/kmp_stub.cpp (+2)
``````````diff
diff --git a/flang/test/Lower/OpenMP/omp-lib-integer-wrappers.f90 b/flang/test/Lower/OpenMP/omp-lib-integer-wrappers.f90
new file mode 100644
index 0000000000000..ff9904bebf425
--- /dev/null
+++ b/flang/test/Lower/OpenMP/omp-lib-integer-wrappers.f90
@@ -0,0 +1,148 @@
+! REQUIRES: openmp_runtime
+
+! RUN: %flang_fc1 -emit-hlfir %openmp_flags %s -o - 2>&1 | FileCheck %s
+! RUN: bbc %openmp_flags -emit-hlfir -o - %s 2>&1 | FileCheck %s
+! RUN: %flang_fc1 -emit-fir %openmp_flags %s -o - 2>&1 | FileCheck %s
+! RUN: bbc -emit-fir %openmp_flags -o - %s 2>&1 | FileCheck %s
+!
+! Test that omp_lib generic interfaces select the default bind(c) entry for
+! omp_integer_kind arguments and the newly added *_8 entries for integer(8).
+
+program main
+ use omp_lib
+ integer(omp_integer_kind) :: i4
+ integer(8) :: i8
+ integer(omp_integer_kind) :: ires
+ integer(omp_sched_kind) :: sched_kind
+ integer(kmp_affinity_mask_kind) :: mask
+ integer(omp_integer_kind) :: ids4(1)
+ integer(8) :: ids8(1)
+ integer(omp_integer_kind) :: parts4(1)
+ integer(8) :: parts8(1)
+
+ i4 = 4
+ i8 = 8_8
+
+ call omp_set_num_threads(i4)
+ call omp_set_num_threads(i8)
+
+ call omp_set_max_active_levels(i4)
+ call omp_set_max_active_levels(i8)
+
+ call omp_set_default_device(i4)
+ call omp_set_default_device(i8)
+
+ call omp_set_num_teams(i4)
+ call omp_set_num_teams(i8)
+
+ call omp_set_teams_thread_limit(i4)
+ call omp_set_teams_thread_limit(i8)
+
+ call kmp_set_stacksize(i4)
+ call kmp_set_stacksize(i8)
+
+ call kmp_set_blocktime(i4)
+ call kmp_set_blocktime(i8)
+
+ call kmp_set_library(i4)
+ call kmp_set_library(i8)
+
+ call kmp_set_disp_num_buffers(i4)
+ call kmp_set_disp_num_buffers(i8)
+
+ ires = omp_get_ancestor_thread_num(i4)
+ ires = omp_get_ancestor_thread_num(i8)
+
+ ires = omp_get_team_size(i4)
+ ires = omp_get_team_size(i8)
+
+ ires = omp_get_place_num_procs(i4)
+ ires = omp_get_place_num_procs(i8)
+
+ call omp_set_schedule(omp_sched_static, i4)
+ call omp_set_schedule(omp_sched_static, i8)
+
+ call omp_get_schedule(sched_kind, i4)
+ call omp_get_schedule(sched_kind, i8)
+
+ ires = omp_pause_resource(omp_pause_soft, i4)
+ ires = omp_pause_resource(omp_pause_soft, i8)
+
+ call kmp_create_affinity_mask(mask)
+ ires = kmp_set_affinity_mask_proc(i4, mask)
+ ires = kmp_set_affinity_mask_proc(i8, mask)
+
+ ires = kmp_unset_affinity_mask_proc(i4, mask)
+ ires = kmp_unset_affinity_mask_proc(i8, mask)
+
+ ires = kmp_get_affinity_mask_proc(i4, mask)
+ ires = kmp_get_affinity_mask_proc(i8, mask)
+
+ call omp_get_place_proc_ids(i4, ids4)
+ call omp_get_place_proc_ids(i8, ids8)
+
+ call omp_get_partition_place_nums(parts4)
+ call omp_get_partition_place_nums(parts8)
+end program
+
+! CHECK-NOT: not yet implemented: intrinsic:
+
+! CHECK: fir.call @omp_set_num_threads(
+! CHECK: fir.call @omp_set_num_threads_8(
+
+! CHECK: fir.call @omp_set_max_active_levels(
+! CHECK: fir.call @omp_set_max_active_levels_8(
+
+! CHECK: fir.call @omp_set_default_device(
+! CHECK: fir.call @omp_set_default_device_8(
+
+! CHECK: fir.call @omp_set_num_teams(
+! CHECK: fir.call @omp_set_num_teams_8(
+
+! CHECK: fir.call @omp_set_teams_thread_limit(
+! CHECK: fir.call @omp_set_teams_thread_limit_8(
+
+! CHECK: fir.call @kmp_set_stacksize(
+! CHECK: fir.call @kmp_set_stacksize_8(
+
+! CHECK: fir.call @kmp_set_blocktime(
+! CHECK: fir.call @kmp_set_blocktime_8(
+
+! CHECK: fir.call @kmp_set_library(
+! CHECK: fir.call @kmp_set_library_8(
+
+! CHECK: fir.call @kmp_set_disp_num_buffers(
+! CHECK: fir.call @kmp_set_disp_num_buffers_8(
+
+! CHECK: fir.call @omp_get_ancestor_thread_num(
+! CHECK: fir.call @omp_get_ancestor_thread_num_8(
+
+! CHECK: fir.call @omp_get_team_size(
+! CHECK: fir.call @omp_get_team_size_8(
+
+! CHECK: fir.call @omp_get_place_num_procs(
+! CHECK: fir.call @omp_get_place_num_procs_8(
+
+! CHECK: fir.call @omp_set_schedule(
+! CHECK: fir.call @omp_set_schedule_8(
+
+! CHECK: fir.call @omp_get_schedule(
+! CHECK: fir.call @omp_get_schedule_8(
+
+! CHECK: fir.call @omp_pause_resource(
+! CHECK: fir.call @omp_pause_resource_8(
+
+! CHECK: fir.call @kmp_set_affinity_mask_proc(
+! CHECK: fir.call @kmp_set_affinity_mask_proc_8(
+
+! CHECK: fir.call @kmp_unset_affinity_mask_proc(
+! CHECK: fir.call @kmp_unset_affinity_mask_proc_8(
+
+! CHECK: fir.call @kmp_get_affinity_mask_proc(
+! CHECK: fir.call @kmp_get_affinity_mask_proc_8(
+
+! CHECK: fir.call @omp_get_place_proc_ids(
+! CHECK: fir.call @omp_get_place_proc_ids_8(
+
+! CHECK: fir.call @omp_get_partition_place_nums(
+! CHECK: fir.call @omp_get_partition_place_nums_8(
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
index 8e2a386cf55e9..5caa8e828de38 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
@@ -237,28 +237,36 @@ __OMP_RTL(omp_get_dynamic, false, Int32, )
__OMP_RTL(omp_get_cancellation, false, Int32, )
__OMP_RTL(omp_get_nested, false, Int32, )
__OMP_RTL(omp_get_schedule, false, Void, Int32Ptr, Int32Ptr)
+__OMP_RTL(omp_get_schedule_8, false, Void, Int32Ptr, Int64Ptr)
__OMP_RTL(omp_get_thread_limit, false, Int32, )
__OMP_RTL(omp_get_supported_active_levels, false, Int32, )
__OMP_RTL(omp_get_max_active_levels, false, Int32, )
__OMP_RTL(omp_get_level, false, Int32, )
__OMP_RTL(omp_get_ancestor_thread_num, false, Int32, Int32)
+__OMP_RTL(omp_get_ancestor_thread_num_8, false, Int32, Int64)
__OMP_RTL(omp_get_team_size, false, Int32, Int32)
+__OMP_RTL(omp_get_team_size_8, false, Int32, Int64)
__OMP_RTL(omp_get_active_level, false, Int32, )
__OMP_RTL(omp_in_final, false, Int32, )
__OMP_RTL(omp_get_proc_bind, false, Int32, )
__OMP_RTL(omp_get_num_places, false, Int32, )
__OMP_RTL(omp_get_num_procs, false, Int32, )
__OMP_RTL(omp_get_place_proc_ids, false, Void, Int32, Int32Ptr)
+__OMP_RTL(omp_get_place_proc_ids_8, false, Void, Int64, Int64Ptr)
__OMP_RTL(omp_get_place_num, false, Int32, )
__OMP_RTL(omp_get_partition_num_places, false, Int32, )
__OMP_RTL(omp_get_partition_place_nums, false, Void, Int32Ptr)
+__OMP_RTL(omp_get_partition_place_nums_8, false, Void, Int64Ptr)
__OMP_RTL(omp_get_wtime, false, Double,)
__OMP_RTL(omp_set_num_threads, false, Void, Int32)
+__OMP_RTL(omp_set_num_threads_8, false, Void, Int64)
__OMP_RTL(omp_set_dynamic, false, Void, Int32)
__OMP_RTL(omp_set_nested, false, Void, Int32)
__OMP_RTL(omp_set_schedule, false, Void, Int32, Int32)
+__OMP_RTL(omp_set_schedule_8, false, Void, Int32, Int64)
__OMP_RTL(omp_set_max_active_levels, false, Void, Int32)
+__OMP_RTL(omp_set_max_active_levels_8, false, Void, Int64)
__OMP_RTL(__kmpc_master, false, Int32, IdentPtr, Int32)
__OMP_RTL(__kmpc_end_master, false, Void, IdentPtr, Int32)
@@ -733,12 +741,18 @@ __OMP_RTL_ATTRS(
omp_get_schedule, GetterArgWriteAttrs, AttributeSet(),
ParamAttrs(AttributeSet(NoCaptureAttr, EnumAttr(WriteOnly)),
AttributeSet(NoCaptureAttr, EnumAttr(WriteOnly))))
+__OMP_RTL_ATTRS(
+ omp_get_schedule_8, GetterArgWriteAttrs, AttributeSet(),
+ ParamAttrs(AttributeSet(NoCaptureAttr, EnumAttr(WriteOnly)),
+ AttributeSet(NoCaptureAttr, EnumAttr(WriteOnly))))
__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, SExt, ParamAttrs(SExt))
+__OMP_RTL_ATTRS(omp_get_ancestor_thread_num_8, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, SExt, ParamAttrs(SExt))
+__OMP_RTL_ATTRS(omp_get_team_size_8, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, SExt, ParamAttrs())
@@ -747,20 +761,31 @@ __OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(),
ParamAttrs(SExt, AttributeSet(NoCaptureAttr,
EnumAttr(WriteOnly))))
+__OMP_RTL_ATTRS(omp_get_place_proc_ids_8, GetterArgWriteAttrs, AttributeSet(),
+ ParamAttrs(AttributeSet(),
+ AttributeSet(NoCaptureAttr, EnumAttr(WriteOnly))))
__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, SExt, ParamAttrs())
__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterArgWriteAttrs, AttributeSet(),
ParamAttrs())
+__OMP_RTL_ATTRS(omp_get_partition_place_nums_8, GetterArgWriteAttrs,
+ AttributeSet(), ParamAttrs())
__OMP_RTL_ATTRS(omp_get_wtime, GetterAttrs, AttributeSet(), ParamAttrs())
__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(),
ParamAttrs(SExt))
+__OMP_RTL_ATTRS(omp_set_num_threads_8, SetterAttrs, AttributeSet(),
+ ParamAttrs())
__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs(SExt))
__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs(SExt))
__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(),
ParamAttrs(SExt, SExt))
+__OMP_RTL_ATTRS(omp_set_schedule_8, SetterAttrs, AttributeSet(),
+ ParamAttrs(SExt, AttributeSet()))
__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(),
ParamAttrs(SExt))
+__OMP_RTL_ATTRS(omp_set_max_active_levels_8, SetterAttrs, AttributeSet(),
+ ParamAttrs())
__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, SExt,
ParamAttrs(ReadOnlyPtrAttrs, SExt))
diff --git a/openmp/device/include/Interface.h b/openmp/device/include/Interface.h
index 601694871597b..665f78abe2db8 100644
--- a/openmp/device/include/Interface.h
+++ b/openmp/device/include/Interface.h
@@ -44,6 +44,7 @@ int omp_get_dynamic(void);
///
///{
void omp_set_num_threads(int);
+void omp_set_num_threads_8(int64_t);
int omp_get_max_threads(void);
///}
diff --git a/openmp/device/src/State.cpp b/openmp/device/src/State.cpp
index 779f4d5159311..8c4dc1907dcd8 100644
--- a/openmp/device/src/State.cpp
+++ b/openmp/device/src/State.cpp
@@ -383,6 +383,14 @@ int omp_get_dynamic(void) { return 0; }
void omp_set_num_threads(int V) { icv::NThreads = V; }
+void omp_set_num_threads_8(int64_t V) {
+ if (V > INT32_MAX)
+ V = INT32_MAX;
+ else if (V < INT32_MIN)
+ V = INT32_MIN;
+ omp_set_num_threads((int)V);
+}
+
int omp_get_max_threads(void) {
int NT = icv::NThreads;
return NT > 0 ? NT : mapping::getMaxTeamThreads();
diff --git a/openmp/module/omp_lib.F90.var b/openmp/module/omp_lib.F90.var
index a41b2faad9d3d..10b23f921f009 100644
--- a/openmp/module/omp_lib.F90.var
+++ b/openmp/module/omp_lib.F90.var
@@ -244,17 +244,178 @@
integer (kind=omp_interop_rc_kind), parameter, public :: omp_irc_type_str = -5
integer (kind=omp_interop_rc_kind), parameter, public :: omp_irc_other = -6
- interface
! ***
! *** omp_* entry points
! ***
+ interface omp_set_num_threads
subroutine omp_set_num_threads(num_threads) bind(c)
use omp_lib_kinds
integer (kind=omp_integer_kind), value :: num_threads
end subroutine omp_set_num_threads
+ subroutine omp_set_num_threads_8(num_threads) bind(c)
+ integer (kind=8), value :: num_threads
+ end subroutine omp_set_num_threads_8
+ end interface omp_set_num_threads
+
+ interface omp_set_max_active_levels
+ subroutine omp_set_max_active_levels(max_levels) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind), value :: max_levels
+ end subroutine omp_set_max_active_levels
+
+ subroutine omp_set_max_active_levels_8(max_levels) bind(c)
+ integer (kind=8), value :: max_levels
+ end subroutine omp_set_max_active_levels_8
+ end interface omp_set_max_active_levels
+
+ interface omp_get_ancestor_thread_num
+ function omp_get_ancestor_thread_num(level) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
+ integer (kind=omp_integer_kind), value :: level
+ end function omp_get_ancestor_thread_num
+
+ function omp_get_ancestor_thread_num_8(level) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind) omp_get_ancestor_thread_num_8
+ integer (kind=8), value :: level
+ end function omp_get_ancestor_thread_num_8
+ end interface omp_get_ancestor_thread_num
+
+ interface omp_get_team_size
+ function omp_get_team_size(level) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind) omp_get_team_size
+ integer (kind=omp_integer_kind), value :: level
+ end function omp_get_team_size
+
+ function omp_get_team_size_8(level) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind) omp_get_team_size_8
+ integer (kind=8), value :: level
+ end function omp_get_team_size_8
+ end interface omp_get_team_size
+
+ interface omp_set_schedule
+ subroutine omp_set_schedule(kind, chunk_size) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_sched_kind), value :: kind
+ integer (kind=omp_integer_kind), value :: chunk_size
+ end subroutine omp_set_schedule
+
+ subroutine omp_set_schedule_8(kind, chunk_size) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_sched_kind), value :: kind
+ integer (kind=8), value :: chunk_size
+ end subroutine omp_set_schedule_8
+ end interface omp_set_schedule
+
+ interface omp_get_schedule
+ subroutine omp_get_schedule(kind, chunk_size) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_sched_kind) kind
+ integer (kind=omp_integer_kind) chunk_size
+ end subroutine omp_get_schedule
+
+ subroutine omp_get_schedule_8(kind, chunk_size) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_sched_kind) kind
+ integer (kind=8) chunk_size
+ end subroutine omp_get_schedule_8
+ end interface omp_get_schedule
+
+ interface omp_get_place_num_procs
+ function omp_get_place_num_procs(place_num) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind), value :: place_num
+ integer (kind=omp_integer_kind) omp_get_place_num_procs
+ end function omp_get_place_num_procs
+
+ function omp_get_place_num_procs_8(place_num) bind(c)
+ use omp_lib_kinds
+ integer (kind=8), value :: place_num
+ integer (kind=omp_integer_kind) omp_get_place_num_procs_8
+ end function omp_get_place_num_procs_8
+ end interface omp_get_place_num_procs
+
+ interface omp_get_place_proc_ids
+ subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind), value :: place_num
+ integer (kind=omp_integer_kind) ids(*)
+ end subroutine omp_get_place_proc_ids
+
+ subroutine omp_get_place_proc_ids_8(place_num, ids) bind(c)
+ integer (kind=8), value :: place_num
+ integer (kind=8) ids(*)
+ end subroutine omp_get_place_proc_ids_8
+ end interface omp_get_place_proc_ids
+
+ interface omp_get_partition_place_nums
+ subroutine omp_get_partition_place_nums(place_nums) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind) place_nums(*)
+ end subroutine omp_get_partition_place_nums
+
+ subroutine omp_get_partition_place_nums_8(place_nums) bind(c)
+ integer (kind=8) place_nums(*)
+ end subroutine omp_get_partition_place_nums_8
+ end interface omp_get_partition_place_nums
+
+ interface omp_set_default_device
+ subroutine omp_set_default_device(device_num) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind), value :: device_num
+ end subroutine omp_set_default_device
+
+ subroutine omp_set_default_device_8(device_num) bind(c)
+ integer (kind=8), value :: device_num
+ end subroutine omp_set_default_device_8
+ end interface omp_set_default_device
+
+ interface omp_pause_resource
+ function omp_pause_resource(kind, device_num) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_pause_resource_kind), value :: kind
+ integer (kind=omp_integer_kind), value :: device_num
+ integer (kind=omp_integer_kind) omp_pause_resource
+ end function omp_pause_resource
+
+ function omp_pause_resource_8(kind, device_num) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_pause_resource_kind), value :: kind
+ integer (kind=8), value :: device_num
+ integer (kind=omp_integer_kind) omp_pause_resource_8
+ end function omp_pause_resource_8
+ end interface omp_pause_resource
+
+ interface omp_set_num_teams
+ subroutine omp_set_num_teams(num_teams) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind), value :: num_teams
+ end subroutine omp_set_num_teams
+
+ subroutine omp_set_num_teams_8(num_teams) bind(c)
+ integer (kind=8), value :: num_teams
+ end subroutine omp_set_num_teams_8
+ end interface omp_set_num_teams
+
+ interface omp_set_teams_thread_limit
+ subroutine omp_set_teams_thread_limit(thread_limit) bind(c)
+ use omp_lib_kinds
+ integer (kind=omp_integer_kind), value :: thread_limit
+ end subroutine omp_set_teams_thread_limit
+
+ subroutine omp_set_teams_thread_limit_8(thread_limit) bind(c)
+ integer (kind=8), value :: thread_limit
+ end subroutine omp_set_teams_thread_limit_8
+ end interface omp_set_teams_thread_limit
+
+ interface
+
subroutine omp_set_dynamic(dynamic_threads) bind(c)
use omp_lib_kinds
logical (kind=omp_logical_kind), value :: dynamic_threads
@@ -310,11 +471,6 @@
integer (kind=omp_integer_kind) omp_get_thread_limit
end function omp_get_thread_limit
- subroutine omp_set_max_active_levels(max_levels) bind(c)
- use omp_lib_kinds
- integer (kind=omp_integer_kind), value :: max_levels
- end subroutine omp_set_max_active_levels
-
function omp_get_max_active_levels() bind(c)
use omp_lib_kinds
integer (kind=omp_integer_kind) omp_get_max_active_levels
@@ -330,30 +486,6 @@
integer (kind=omp_integer_kind) omp_get_active_level
end function omp_get_active_level
- function omp_get_ancestor_thread_num(level) bind(c)
- use omp_lib_kinds
- integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
- integer (kind=omp_integer_kind), value :: level
- end function omp_get_ancestor_thread_num
-
- function omp_get_team_size(level) bind(c)
- use omp_lib_kinds
- integer (kind=omp_integer_kind) omp_get_team_size
- integer (kind=omp_integer_kind), value :: level
- end function omp_get_team_size
-
- subroutine omp_set_schedule(kind, chunk_size) bind(c)
- use omp_lib_kinds
- integer (kind=omp_sched_kind), value :: kind
- integer (kind=omp_integer_kind), value :: chunk_size
- end subroutine omp_set_schedule
-
- subroutine omp_get_schedule(kind, chunk_size) bind(c)
- use omp_lib_kinds
- integer (kind=omp_sched_kind) kind
- integer (kind=omp_integer_kind) chunk_size
- end subroutine omp_get_schedule
-
function omp_get_proc_bind() bind(c)
use omp_lib_kinds
...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/221451
More information about the flang-commits
mailing list