forked from OSchip/llvm-project
Reapply [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. Reapply: Make sure OPENMP_TEST_COMPILER_FEATURES is defined properly in all other test subdirectories other than runtime/test too. Differential Revision: https://reviews.llvm.org/D138738
This commit is contained in:
parent
98454e3885
commit
2bd2734f44
|
@ -159,6 +159,20 @@ else()
|
|||
endif()
|
||||
|
||||
# Function to set compiler features for use in lit.
|
||||
function(update_test_compiler_features)
|
||||
set(FEATURES "[")
|
||||
set(first TRUE)
|
||||
foreach(feat IN LISTS OPENMP_TEST_COMPILER_FEATURE_LIST)
|
||||
if (NOT first)
|
||||
string(APPEND FEATURES ", ")
|
||||
endif()
|
||||
set(first FALSE)
|
||||
string(APPEND FEATURES "'${feat}'")
|
||||
endforeach()
|
||||
string(APPEND FEATURES "]")
|
||||
set(OPENMP_TEST_COMPILER_FEATURES ${FEATURES} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(set_test_compiler_features)
|
||||
if ("${OPENMP_TEST_COMPILER_ID}" STREQUAL "GNU")
|
||||
set(comp "gcc")
|
||||
|
@ -168,9 +182,10 @@ 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()
|
||||
update_test_compiler_features()
|
||||
|
||||
# Function to add a testsuite for an OpenMP runtime library.
|
||||
function(add_openmp_testsuite target comment)
|
||||
|
|
|
@ -24,6 +24,9 @@ macro(pythonize_bool var)
|
|||
endif()
|
||||
endmacro()
|
||||
|
||||
list(APPEND OPENMP_TEST_COMPILER_FEATURE_LIST "${LIBOMP_ARCH}")
|
||||
update_test_compiler_features()
|
||||
|
||||
pythonize_bool(LIBOMP_USE_HWLOC)
|
||||
pythonize_bool(LIBOMP_OMPT_SUPPORT)
|
||||
pythonize_bool(LIBOMP_OMPT_OPTIONAL)
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
||||
|
|
Loading…
Reference in New Issue