[flang-commits] [flang] [llvm] [openmp] [OpenMP] [Flang] Add Fortran integer(kind=8) overloads for omp_lib APIs (PR #221451)

Sairudra More via flang-commits flang-commits at lists.llvm.org
Tue Sep 8 07:45:58 PDT 2026


================
@@ -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 kmp_set_num_threads_8(num_threads) bind(c)
+            integer (kind=8), value :: num_threads
+          end subroutine kmp_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 kmp_set_max_active_levels_8(max_levels) bind(c)
+            integer (kind=8), value :: max_levels
+          end subroutine kmp_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 kmp_get_ancestor_thread_num_8(level) bind(c)
+            use omp_lib_kinds
+            integer (kind=omp_integer_kind) kmp_get_ancestor_thread_num_8
+            integer (kind=8), value :: level
+          end function kmp_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 kmp_get_team_size_8(level) bind(c)
----------------
Saieiei wrote:

Could we either add the corresponding DeviceRTL entry points for the integer(8) overloads that are usable on devices, or make these overloads host-only?

For example, `omp_get_team_size(0_8)` resolves to `kmp_get_team_size_8`, while DeviceRTL currently only defines `omp_get_team_size`. I was able to reproduce this as an undefined device symbol with an integer(8) target call.


https://github.com/llvm/llvm-project/pull/221451


More information about the flang-commits mailing list