forked from OSchip/llvm-project
[OpenMP] Add scaffolding for negative runtime tests
Without this patch, the openmp project's test suites do not appear to have support for negative tests. However, D78170 needs to add a test that an expected runtime failure occurs. This patch makes `not` visible in all of the openmp project's test suites. In all but `libomptarget/test`, it should be possible for a test author to insert `not` before a use of the lit substitution for running a test program. In `libomptarget/test`, that substitution is target-specific, and its value is `echo` when the target is not available. In that case, inserting `not` before a lit substitution would expect an `echo` fail, so this patch instead defines a separate lit substitution for expected runtime fails. Reviewed By: jdoerfert, Hahnfeld Differential Revision: https://reviews.llvm.org/D78566
This commit is contained in:
parent
060efd24c7
commit
ba942610f6
|
@ -130,6 +130,10 @@ Options for all Libraries
|
||||||
Specify full path to ``FileCheck`` executable for running tests. The default
|
Specify full path to ``FileCheck`` executable for running tests. The default
|
||||||
is to search the ``PATH`` and the directory in **OPENMP_LLVM_TOOLS_DIR**.
|
is to search the ``PATH`` and the directory in **OPENMP_LLVM_TOOLS_DIR**.
|
||||||
|
|
||||||
|
**OPENMP_NOT_EXECUTABLE** = ``/path/to/not``
|
||||||
|
Specify full path to ``not`` executable for running tests. The default
|
||||||
|
is to search the ``PATH`` and the directory in **OPENMP_LLVM_TOOLS_DIR**.
|
||||||
|
|
||||||
Options for ``libomp``
|
Options for ``libomp``
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,17 @@ function(find_standalone_test_dependencies)
|
||||||
set(ENABLE_CHECK_TARGETS FALSE PARENT_SCOPE)
|
set(ENABLE_CHECK_TARGETS FALSE PARENT_SCOPE)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
find_program(OPENMP_NOT_EXECUTABLE
|
||||||
|
NAMES not
|
||||||
|
PATHS ${OPENMP_LLVM_TOOLS_DIR})
|
||||||
|
if (NOT OPENMP_NOT_EXECUTABLE)
|
||||||
|
message(STATUS "Cannot find 'not'.")
|
||||||
|
message(STATUS "Please put 'not' in your PATH, set OPENMP_NOT_EXECUTABLE to its full path, or point OPENMP_LLVM_TOOLS_DIR to its directory.")
|
||||||
|
message(WARNING "The check targets will not be available!")
|
||||||
|
set(ENABLE_CHECK_TARGETS FALSE PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
if (${OPENMP_STANDALONE_BUILD})
|
if (${OPENMP_STANDALONE_BUILD})
|
||||||
|
@ -55,6 +66,7 @@ if (${OPENMP_STANDALONE_BUILD})
|
||||||
separate_arguments(OPENMP_LIT_ARGS)
|
separate_arguments(OPENMP_LIT_ARGS)
|
||||||
else()
|
else()
|
||||||
set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck)
|
set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck)
|
||||||
|
set(OPENMP_NOT_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/not)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Macro to extract information about compiler from file. (no own scope)
|
# Macro to extract information about compiler from file. (no own scope)
|
||||||
|
|
|
@ -67,3 +67,4 @@ config.substitutions.append(("%openmp_flags", config.test_openmp_flags))
|
||||||
config.substitutions.append(("%flags", config.test_flags))
|
config.substitutions.append(("%flags", config.test_flags))
|
||||||
|
|
||||||
config.substitutions.append(("%run", "%t"))
|
config.substitutions.append(("%run", "%t"))
|
||||||
|
config.substitutions.append((r"\bnot\b", config.libomptarget_not))
|
||||||
|
|
|
@ -9,6 +9,7 @@ config.library_dir = "@LIBOMPTARGET_LIBRARY_DIR@"
|
||||||
config.omp_header_directory = "@LIBOMPTARGET_OPENMP_HEADER_FOLDER@"
|
config.omp_header_directory = "@LIBOMPTARGET_OPENMP_HEADER_FOLDER@"
|
||||||
config.omp_host_rtl_directory = "@LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER@"
|
config.omp_host_rtl_directory = "@LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER@"
|
||||||
config.libomptarget_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
config.libomptarget_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
||||||
|
config.libomptarget_not = "@OPENMP_NOT_EXECUTABLE@"
|
||||||
|
|
||||||
# Let the main config do the real work.
|
# Let the main config do the real work.
|
||||||
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg")
|
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg")
|
||||||
|
|
|
@ -101,6 +101,9 @@ for libomptarget_target in config.libomptarget_all_targets:
|
||||||
config.substitutions.append(("%libomptarget-run-" + \
|
config.substitutions.append(("%libomptarget-run-" + \
|
||||||
libomptarget_target, \
|
libomptarget_target, \
|
||||||
"%t-" + libomptarget_target))
|
"%t-" + libomptarget_target))
|
||||||
|
config.substitutions.append(("%libomptarget-run-fail-" + \
|
||||||
|
libomptarget_target, \
|
||||||
|
"not %t-" + libomptarget_target))
|
||||||
config.substitutions.append(("%clangxx-" + libomptarget_target, \
|
config.substitutions.append(("%clangxx-" + libomptarget_target, \
|
||||||
"%clangxx %openmp_flags %flags -fopenmp-targets=" + libomptarget_target))
|
"%clangxx %openmp_flags %flags -fopenmp-targets=" + libomptarget_target))
|
||||||
config.substitutions.append(("%clang-" + libomptarget_target, \
|
config.substitutions.append(("%clang-" + libomptarget_target, \
|
||||||
|
@ -129,6 +132,9 @@ for libomptarget_target in config.libomptarget_all_targets:
|
||||||
config.substitutions.append(("%libomptarget-run-" + \
|
config.substitutions.append(("%libomptarget-run-" + \
|
||||||
libomptarget_target, \
|
libomptarget_target, \
|
||||||
"echo ignored-command"))
|
"echo ignored-command"))
|
||||||
|
config.substitutions.append(("%libomptarget-run-fail-" + \
|
||||||
|
libomptarget_target, \
|
||||||
|
"echo ignored-command"))
|
||||||
config.substitutions.append(("%clang-" + libomptarget_target, \
|
config.substitutions.append(("%clang-" + libomptarget_target, \
|
||||||
"echo ignored-command"))
|
"echo ignored-command"))
|
||||||
config.substitutions.append(("%clangxx-" + libomptarget_target, \
|
config.substitutions.append(("%clangxx-" + libomptarget_target, \
|
||||||
|
@ -140,3 +146,4 @@ config.substitutions.append(("%clangxx", config.test_cxx_compiler))
|
||||||
config.substitutions.append(("%clang", config.test_c_compiler))
|
config.substitutions.append(("%clang", config.test_c_compiler))
|
||||||
config.substitutions.append(("%openmp_flags", config.test_openmp_flags))
|
config.substitutions.append(("%openmp_flags", config.test_openmp_flags))
|
||||||
config.substitutions.append(("%flags", config.test_flags))
|
config.substitutions.append(("%flags", config.test_flags))
|
||||||
|
config.substitutions.append((r"\bnot\b", config.libomptarget_not))
|
||||||
|
|
|
@ -13,6 +13,7 @@ config.operating_system = "@CMAKE_SYSTEM_NAME@"
|
||||||
config.libomptarget_all_targets = "@LIBOMPTARGET_ALL_TARGETS@".split()
|
config.libomptarget_all_targets = "@LIBOMPTARGET_ALL_TARGETS@".split()
|
||||||
config.libomptarget_system_targets = "@LIBOMPTARGET_SYSTEM_TARGETS@".split()
|
config.libomptarget_system_targets = "@LIBOMPTARGET_SYSTEM_TARGETS@".split()
|
||||||
config.libomptarget_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
config.libomptarget_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
||||||
|
config.libomptarget_not = "@OPENMP_NOT_EXECUTABLE@"
|
||||||
config.libomptarget_debug = @LIBOMPTARGET_DEBUG@
|
config.libomptarget_debug = @LIBOMPTARGET_DEBUG@
|
||||||
|
|
||||||
# Let the main config do the real work.
|
# Let the main config do the real work.
|
||||||
|
|
|
@ -127,6 +127,7 @@ config.substitutions.append(("%clang", config.test_c_compiler))
|
||||||
config.substitutions.append(("%openmp_flags", config.test_openmp_flags))
|
config.substitutions.append(("%openmp_flags", config.test_openmp_flags))
|
||||||
config.substitutions.append(("%flags", config.test_flags))
|
config.substitutions.append(("%flags", config.test_flags))
|
||||||
config.substitutions.append(("%python", '"%s"' % (sys.executable)))
|
config.substitutions.append(("%python", '"%s"' % (sys.executable)))
|
||||||
|
config.substitutions.append((r"\bnot\b", config.test_not))
|
||||||
|
|
||||||
if config.has_ompt:
|
if config.has_ompt:
|
||||||
config.substitutions.append(("FileCheck", "tee %%t.out | %s" % config.test_filecheck))
|
config.substitutions.append(("FileCheck", "tee %%t.out | %s" % config.test_filecheck))
|
||||||
|
|
|
@ -4,6 +4,7 @@ config.test_c_compiler = "@OPENMP_TEST_C_COMPILER@"
|
||||||
config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@"
|
config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@"
|
||||||
config.test_compiler_features = @OPENMP_TEST_COMPILER_FEATURES@
|
config.test_compiler_features = @OPENMP_TEST_COMPILER_FEATURES@
|
||||||
config.test_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
config.test_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
||||||
|
config.test_not = "@OPENMP_NOT_EXECUTABLE@"
|
||||||
config.test_openmp_flags = "@OPENMP_TEST_OPENMP_FLAGS@"
|
config.test_openmp_flags = "@OPENMP_TEST_OPENMP_FLAGS@"
|
||||||
config.test_extra_flags = "@OPENMP_TEST_FLAGS@"
|
config.test_extra_flags = "@OPENMP_TEST_FLAGS@"
|
||||||
config.libomp_obj_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
config.libomp_obj_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
||||||
|
|
|
@ -111,6 +111,7 @@ config.substitutions.append(("%suppression", "env TSAN_OPTIONS='ignore_noninstru
|
||||||
config.substitutions.append(("%deflake", os.path.join(os.path.dirname(__file__), "deflake.bash")))
|
config.substitutions.append(("%deflake", os.path.join(os.path.dirname(__file__), "deflake.bash")))
|
||||||
|
|
||||||
config.substitutions.append(("FileCheck", config.test_filecheck))
|
config.substitutions.append(("FileCheck", config.test_filecheck))
|
||||||
|
config.substitutions.append((r"\bnot\b", config.test_not))
|
||||||
config.substitutions.append(("%sort-threads", "sort --numeric-sort --stable"))
|
config.substitutions.append(("%sort-threads", "sort --numeric-sort --stable"))
|
||||||
if config.operating_system == 'Windows':
|
if config.operating_system == 'Windows':
|
||||||
# No such environment variable on Windows.
|
# No such environment variable on Windows.
|
||||||
|
|
|
@ -4,6 +4,7 @@ config.test_c_compiler = "@OPENMP_TEST_C_COMPILER@"
|
||||||
config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@"
|
config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@"
|
||||||
config.test_compiler_features = @OPENMP_TEST_COMPILER_FEATURES@
|
config.test_compiler_features = @OPENMP_TEST_COMPILER_FEATURES@
|
||||||
config.test_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
config.test_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@"
|
||||||
|
config.test_not = "@OPENMP_NOT_EXECUTABLE@"
|
||||||
config.test_openmp_flags = "@OPENMP_TEST_OPENMP_FLAGS@"
|
config.test_openmp_flags = "@OPENMP_TEST_OPENMP_FLAGS@"
|
||||||
config.test_extra_flags = "@OPENMP_TEST_FLAGS@"
|
config.test_extra_flags = "@OPENMP_TEST_FLAGS@"
|
||||||
config.libomp_obj_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
config.libomp_obj_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
||||||
|
|
Loading…
Reference in New Issue