[Openmp-commits] [openmp] 03bf001 - [openmp] [test] XFAIL many-microtask-args.c on ARM

Martin Storsjö via Openmp-commits openmp-commits at lists.llvm.org
Mon Nov 28 12:40:49 PST 2022


Author: Martin Storsjö
Date: 2022-11-28T22:40:02+02:00
New Revision: 03bf001b6d95f7c6a88a2b95f3cad752b9d1ed45

URL: https://github.com/llvm/llvm-project/commit/03bf001b6d95f7c6a88a2b95f3cad752b9d1ed45
DIFF: https://github.com/llvm/llvm-project/commit/03bf001b6d95f7c6a88a2b95f3cad752b9d1ed45.diff

LOG: [openmp] [test] XFAIL many-microtask-args.c on ARM

On ARM, a C fallback version of __kmp_invoke_microtask is used,
which only handles up to a fixed number of arguments - while
many-microtask-args.c tests that the function can handle an
arbitrarily large number of arguments (the testcase produces 17
arguments).

On the CMake level, we can't add ${LIBOMP_ARCH} directly to
OPENMP_TEST_COMPILER_FEATURES in OpenMPTesting.cmake, since
that file is parsed before LIBOMP_ARCH is set. Instead
convert the feature list into a proper CMake list, and append
${LIBOMP_ARCH} into it before serializing it to an Python array.

Differential Revision: https://reviews.llvm.org/D138738

Added: 
    

Modified: 
    openmp/cmake/OpenMPTesting.cmake
    openmp/runtime/test/CMakeLists.txt
    openmp/runtime/test/misc_bugs/many-microtask-args.c

Removed: 
    


################################################################################
diff  --git a/openmp/cmake/OpenMPTesting.cmake b/openmp/cmake/OpenMPTesting.cmake
index a93f7199ed7a7..a936304a6a328 100644
--- a/openmp/cmake/OpenMPTesting.cmake
+++ b/openmp/cmake/OpenMPTesting.cmake
@@ -168,7 +168,7 @@ function(set_test_compiler_features)
     # Just use the lowercase of the compiler ID as fallback.
     string(TOLOWER "${OPENMP_TEST_COMPILER_ID}" comp)
   endif()
-  set(OPENMP_TEST_COMPILER_FEATURES "['${comp}', '${comp}-${OPENMP_TEST_COMPILER_VERSION_MAJOR}', '${comp}-${OPENMP_TEST_COMPILER_VERSION_MAJOR_MINOR}', '${comp}-${OPENMP_TEST_COMPILER_VERSION}']" PARENT_SCOPE)
+  set(OPENMP_TEST_COMPILER_FEATURE_LIST ${comp}, ${comp}-${OPENMP_TEST_COMPILER_VERSION_MAJOR}, ${comp}-${OPENMP_TEST_COMPILER_VERSION_MAJOR_MINOR}, ${comp}-${OPENMP_TEST_COMPILER_VERSION} PARENT_SCOPE)
 endfunction()
 set_test_compiler_features()
 

diff  --git a/openmp/runtime/test/CMakeLists.txt b/openmp/runtime/test/CMakeLists.txt
index 71680a31ae256..45a4891e775b6 100644
--- a/openmp/runtime/test/CMakeLists.txt
+++ b/openmp/runtime/test/CMakeLists.txt
@@ -24,6 +24,18 @@ macro(pythonize_bool var)
   endif()
 endmacro()
 
+list(APPEND OPENMP_TEST_COMPILER_FEATURE_LIST "${LIBOMP_ARCH}")
+set(OPENMP_TEST_COMPILER_FEATURES "[")
+set(first TRUE)
+foreach(feat IN LISTS OPENMP_TEST_COMPILER_FEATURE_LIST)
+  if (NOT first)
+    string(APPEND OPENMP_TEST_COMPILER_FEATURES ", ")
+  endif()
+  set(first FALSE)
+  string(APPEND OPENMP_TEST_COMPILER_FEATURES "'${feat}'")
+endforeach()
+string(APPEND OPENMP_TEST_COMPILER_FEATURES "]")
+
 pythonize_bool(LIBOMP_USE_HWLOC)
 pythonize_bool(LIBOMP_OMPT_SUPPORT)
 pythonize_bool(LIBOMP_OMPT_OPTIONAL)

diff  --git a/openmp/runtime/test/misc_bugs/many-microtask-args.c b/openmp/runtime/test/misc_bugs/many-microtask-args.c
index d644515d9a4f2..1ede11038eed3 100644
--- a/openmp/runtime/test/misc_bugs/many-microtask-args.c
+++ b/openmp/runtime/test/misc_bugs/many-microtask-args.c
@@ -1,6 +1,11 @@
 // RUN: %libomp-compile-and-run
 #include <stdio.h>
 
+// This test fails with Clang unless __kmp_invoke_microtask supports at least
+// 17 arguments. On ARM, the fallback C implementation of __kmp_invoke_microtask
+// is used, and that one only currently supports up to 15 arguments.
+// XFAIL: arm
+
 int main()
 {
 


        


More information about the Openmp-commits mailing list