[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