[Openmp-commits] [llvm] [openmp] [OpenMP][Runtime] Handling crash with OMP_TARGET_OFFLOAD=DISABLED and invalid default device (PR #173630)

Julian Brown via Openmp-commits openmp-commits at lists.llvm.org
Mon Dec 29 06:25:13 PST 2025


================
@@ -3295,30 +3295,43 @@ static kmp_internal_control_t __kmp_get_global_icvs(void) {
 
   KMP_DEBUG_ASSERT(__kmp_nested_proc_bind.used > 0);
 
+  // When offload is disabled, default_device should be the initial device
+  // regardless of OMP_DEFAULT_DEVICE environment variable or explicit set
+  int default_device_icv = __kmp_default_device;
+  if (__kmp_target_offload == tgt_disabled) {
+    // Initial device is same as num_devices when offload is disabled
+    int (*fptr)();
+    if ((*(void **)(&fptr) = KMP_DLSYM("__tgt_get_num_devices"))) {
+      default_device_icv = (*fptr)();
+    } else {
+      default_device_icv = 0;
+    }
+  }
+
   kmp_internal_control_t g_icvs = {
-    0, // int serial_nesting_level; //corresponds to value of th_team_serialized
-    (kmp_int8)__kmp_global.g.g_dynamic, // internal control for dynamic
-    // adjustment of threads (per thread)
-    (kmp_int8)__kmp_env_blocktime, // int bt_set; //internal control for
-    // whether blocktime is explicitly set
-    __kmp_dflt_blocktime, // int blocktime; //internal control for blocktime
+      0, // int serial_nesting_level; //corresponds to value of
----------------
jtb20 wrote:

Maybe take out these reformatting changes?

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


More information about the Openmp-commits mailing list