[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
This commit is contained in:
Martin Storsjö 2022-11-25 16:26:50 +02:00
parent 63f0fdc262
commit 03bf001b6d
3 changed files with 18 additions and 1 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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()
{