[OpenMP][libomp] Replace accidental VLA with KMP_ALLOCA
authorJonathan Peyton <jonathan.l.peyton@intel.com>
Wed, 9 Feb 2022 14:04:47 +0000 (08:04 -0600)
committerJonathan Peyton <jonathan.l.peyton@intel.com>
Wed, 9 Feb 2022 14:09:27 +0000 (08:09 -0600)
MSVC does not support variable length arrays. Replace with KMP_ALLOCA
which is already used in the same file for stack-allocated variables.

openmp/runtime/src/kmp_affinity.cpp

index 71e8b7f..d1f1b67 100644 (file)
@@ -948,7 +948,7 @@ bool kmp_topology_t::filter_hw_subset() {
   bool using_core_effs = false;
   int hw_subset_depth = __kmp_hw_subset->get_depth();
   kmp_hw_t specified[KMP_HW_LAST];
-  int topology_levels[hw_subset_depth];
+  int *topology_levels = (int *)KMP_ALLOCA(sizeof(int) * hw_subset_depth);
   KMP_ASSERT(hw_subset_depth > 0);
   KMP_FOREACH_HW_TYPE(i) { specified[i] = KMP_HW_UNKNOWN; }
   int core_level = get_level(KMP_HW_CORE);