diff options
author | Joel E. Denny <jdenny.ornl@gmail.com> | 2020-04-21 16:27:32 -0400 |
---|---|---|
committer | Joel E. Denny <jdenny.ornl@gmail.com> | 2020-04-21 17:10:50 -0400 |
commit | ba942610f6be63fe11b61e637ca5db2c4ef9ba8a (patch) | |
tree | 4ddb7185a2e903a6fbc1413eb31ce93d71e817a8 | |
parent | 060efd24c7f06a6c66afc15fc5c499eb0d591523 (diff) | |
download | llvm-ba942610f6be63fe11b61e637ca5db2c4ef9ba8a.zip llvm-ba942610f6be63fe11b61e637ca5db2c4ef9ba8a.tar.gz llvm-ba942610f6be63fe11b61e637ca5db2c4ef9ba8a.tar.bz2 |
[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
-rw-r--r-- | openmp/README.rst | 4 | ||||
-rw-r--r-- | openmp/cmake/OpenMPTesting.cmake | 12 | ||||
-rw-r--r-- | openmp/libomptarget/deviceRTLs/nvptx/test/lit.cfg | 1 | ||||
-rw-r--r-- | openmp/libomptarget/deviceRTLs/nvptx/test/lit.site.cfg.in | 1 | ||||
-rw-r--r-- | openmp/libomptarget/test/lit.cfg | 7 | ||||
-rw-r--r-- | openmp/libomptarget/test/lit.site.cfg.in | 1 | ||||
-rw-r--r-- | openmp/runtime/test/lit.cfg | 1 | ||||
-rw-r--r-- | openmp/runtime/test/lit.site.cfg.in | 1 | ||||
-rw-r--r-- | openmp/tools/archer/tests/lit.cfg | 1 | ||||
-rw-r--r-- | openmp/tools/archer/tests/lit.site.cfg.in | 1 |
10 files changed, 30 insertions, 0 deletions
diff --git a/openmp/README.rst b/openmp/README.rst index 55342e4..aac0f7f 100644 --- a/openmp/README.rst +++ b/openmp/README.rst @@ -130,6 +130,10 @@ Options for all Libraries Specify full path to ``FileCheck`` executable for running tests. The default 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`` ---------------------- diff --git a/openmp/cmake/OpenMPTesting.cmake b/openmp/cmake/OpenMPTesting.cmake index c776b8a..f854e4d 100644 --- a/openmp/cmake/OpenMPTesting.cmake +++ b/openmp/cmake/OpenMPTesting.cmake @@ -34,6 +34,17 @@ function(find_standalone_test_dependencies) set(ENABLE_CHECK_TARGETS FALSE PARENT_SCOPE) return() 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() if (${OPENMP_STANDALONE_BUILD}) @@ -55,6 +66,7 @@ if (${OPENMP_STANDALONE_BUILD}) separate_arguments(OPENMP_LIT_ARGS) else() set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck) + set(OPENMP_NOT_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/not) endif() # Macro to extract information about compiler from file. (no own scope) diff --git a/openmp/libomptarget/deviceRTLs/nvptx/test/lit.cfg b/openmp/libomptarget/deviceRTLs/nvptx/test/lit.cfg index 0774c25..d9f8bd7 100644 --- a/openmp/libomptarget/deviceRTLs/nvptx/test/lit.cfg +++ b/openmp/libomptarget/deviceRTLs/nvptx/test/lit.cfg @@ -67,3 +67,4 @@ config.substitutions.append(("%openmp_flags", config.test_openmp_flags)) config.substitutions.append(("%flags", config.test_flags)) config.substitutions.append(("%run", "%t")) +config.substitutions.append((r"\bnot\b", config.libomptarget_not)) diff --git a/openmp/libomptarget/deviceRTLs/nvptx/test/lit.site.cfg.in b/openmp/libomptarget/deviceRTLs/nvptx/test/lit.site.cfg.in index d9c14cb..f0e02e5 100644 --- a/openmp/libomptarget/deviceRTLs/nvptx/test/lit.site.cfg.in +++ b/openmp/libomptarget/deviceRTLs/nvptx/test/lit.site.cfg.in @@ -9,6 +9,7 @@ config.library_dir = "@LIBOMPTARGET_LIBRARY_DIR@" config.omp_header_directory = "@LIBOMPTARGET_OPENMP_HEADER_FOLDER@" config.omp_host_rtl_directory = "@LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER@" config.libomptarget_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@" +config.libomptarget_not = "@OPENMP_NOT_EXECUTABLE@" # Let the main config do the real work. lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg") diff --git a/openmp/libomptarget/test/lit.cfg b/openmp/libomptarget/test/lit.cfg index 4311605..6818226 100644 --- a/openmp/libomptarget/test/lit.cfg +++ b/openmp/libomptarget/test/lit.cfg @@ -101,6 +101,9 @@ for libomptarget_target in config.libomptarget_all_targets: config.substitutions.append(("%libomptarget-run-" + \ libomptarget_target, \ "%t-" + libomptarget_target)) + config.substitutions.append(("%libomptarget-run-fail-" + \ + libomptarget_target, \ + "not %t-" + libomptarget_target)) config.substitutions.append(("%clangxx-" + libomptarget_target, \ "%clangxx %openmp_flags %flags -fopenmp-targets=" + 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-" + \ libomptarget_target, \ "echo ignored-command")) + config.substitutions.append(("%libomptarget-run-fail-" + \ + libomptarget_target, \ + "echo ignored-command")) config.substitutions.append(("%clang-" + libomptarget_target, \ "echo ignored-command")) 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(("%openmp_flags", config.test_openmp_flags)) config.substitutions.append(("%flags", config.test_flags)) +config.substitutions.append((r"\bnot\b", config.libomptarget_not)) diff --git a/openmp/libomptarget/test/lit.site.cfg.in b/openmp/libomptarget/test/lit.site.cfg.in index 26ef492..53c91c9 100644 --- a/openmp/libomptarget/test/lit.site.cfg.in +++ b/openmp/libomptarget/test/lit.site.cfg.in @@ -13,6 +13,7 @@ config.operating_system = "@CMAKE_SYSTEM_NAME@" config.libomptarget_all_targets = "@LIBOMPTARGET_ALL_TARGETS@".split() config.libomptarget_system_targets = "@LIBOMPTARGET_SYSTEM_TARGETS@".split() config.libomptarget_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@" +config.libomptarget_not = "@OPENMP_NOT_EXECUTABLE@" config.libomptarget_debug = @LIBOMPTARGET_DEBUG@ # Let the main config do the real work. diff --git a/openmp/runtime/test/lit.cfg b/openmp/runtime/test/lit.cfg index 8e15a38..9a90906 100644 --- a/openmp/runtime/test/lit.cfg +++ b/openmp/runtime/test/lit.cfg @@ -127,6 +127,7 @@ config.substitutions.append(("%clang", config.test_c_compiler)) config.substitutions.append(("%openmp_flags", config.test_openmp_flags)) config.substitutions.append(("%flags", config.test_flags)) config.substitutions.append(("%python", '"%s"' % (sys.executable))) +config.substitutions.append((r"\bnot\b", config.test_not)) if config.has_ompt: config.substitutions.append(("FileCheck", "tee %%t.out | %s" % config.test_filecheck)) diff --git a/openmp/runtime/test/lit.site.cfg.in b/openmp/runtime/test/lit.site.cfg.in index c2825ee..a77ecc3 100644 --- a/openmp/runtime/test/lit.site.cfg.in +++ b/openmp/runtime/test/lit.site.cfg.in @@ -4,6 +4,7 @@ config.test_c_compiler = "@OPENMP_TEST_C_COMPILER@" config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@" config.test_compiler_features = @OPENMP_TEST_COMPILER_FEATURES@ config.test_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@" +config.test_not = "@OPENMP_NOT_EXECUTABLE@" config.test_openmp_flags = "@OPENMP_TEST_OPENMP_FLAGS@" config.test_extra_flags = "@OPENMP_TEST_FLAGS@" config.libomp_obj_root = "@CMAKE_CURRENT_BINARY_DIR@" diff --git a/openmp/tools/archer/tests/lit.cfg b/openmp/tools/archer/tests/lit.cfg index 7ec88d3c..514976a 100644 --- a/openmp/tools/archer/tests/lit.cfg +++ b/openmp/tools/archer/tests/lit.cfg @@ -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(("FileCheck", config.test_filecheck)) +config.substitutions.append((r"\bnot\b", config.test_not)) config.substitutions.append(("%sort-threads", "sort --numeric-sort --stable")) if config.operating_system == 'Windows': # No such environment variable on Windows. diff --git a/openmp/tools/archer/tests/lit.site.cfg.in b/openmp/tools/archer/tests/lit.site.cfg.in index cde10b2..55edfde 100644 --- a/openmp/tools/archer/tests/lit.site.cfg.in +++ b/openmp/tools/archer/tests/lit.site.cfg.in @@ -4,6 +4,7 @@ config.test_c_compiler = "@OPENMP_TEST_C_COMPILER@" config.test_cxx_compiler = "@OPENMP_TEST_CXX_COMPILER@" config.test_compiler_features = @OPENMP_TEST_COMPILER_FEATURES@ config.test_filecheck = "@OPENMP_FILECHECK_EXECUTABLE@" +config.test_not = "@OPENMP_NOT_EXECUTABLE@" config.test_openmp_flags = "@OPENMP_TEST_OPENMP_FLAGS@" config.test_extra_flags = "@OPENMP_TEST_FLAGS@" config.libomp_obj_root = "@CMAKE_CURRENT_BINARY_DIR@" |