Skip to content

Commit

Permalink
Revert "[LIT] Added an option to llvm-lit to emit the necessary test …
Browse files Browse the repository at this point in the history
…coverage data, divided per test case"

This reverts commit d8e26bc.
Test case are meant to run only when LLVM_INDIVIDUAL_TEST_COVERAGE is set.
  • Loading branch information
xgupta committed Jul 21, 2023
1 parent 453a75d commit db04f01
Show file tree
Hide file tree
Showing 14 changed files with 16 additions and 123 deletions.
36 changes: 16 additions & 20 deletions llvm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -676,9 +676,6 @@ set(LIT_ARGS_DEFAULT "-sv")
if (MSVC_IDE OR XCODE)
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
endif()
if(LLVM_INDIVIDUAL_TEST_COVERAGE)
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --per-test-coverage")
endif()
set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")

# On Win32 hosts, provide an option to specify the path to the GnuWin32 tools.
Expand Down Expand Up @@ -800,25 +797,24 @@ if (MSVC_IDE)
option(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION "Configure project to use Visual Studio native visualizers" TRUE)
endif()

if(NOT LLVM_INDIVIDUAL_TEST_COVERAGE)
if(LLVM_BUILD_INSTRUMENTED OR LLVM_BUILD_INSTRUMENTED_COVERAGE OR LLVM_ENABLE_IR_PGO)
if(NOT LLVM_PROFILE_MERGE_POOL_SIZE)
# A pool size of 1-2 is probably sufficient on an SSD. 3-4 should be fine
# for spinning disks. Anything higher may only help on slower mediums.
set(LLVM_PROFILE_MERGE_POOL_SIZE "4")
endif()
if(NOT LLVM_PROFILE_FILE_PATTERN)
if(NOT LLVM_PROFILE_DATA_DIR)
file(TO_NATIVE_PATH "${LLVM_BINARY_DIR}/profiles" LLVM_PROFILE_DATA_DIR)
endif()
file(TO_NATIVE_PATH "${LLVM_PROFILE_DATA_DIR}/%${LLVM_PROFILE_MERGE_POOL_SIZE}m.profraw" LLVM_PROFILE_FILE_PATTERN)
if (LLVM_BUILD_INSTRUMENTED OR LLVM_BUILD_INSTRUMENTED_COVERAGE OR
LLVM_ENABLE_IR_PGO)
if(NOT LLVM_PROFILE_MERGE_POOL_SIZE)
# A pool size of 1-2 is probably sufficient on a SSD. 3-4 should be fine
# for spining disks. Anything higher may only help on slower mediums.
set(LLVM_PROFILE_MERGE_POOL_SIZE "4")
endif()
if(NOT LLVM_PROFILE_FILE_PATTERN)
if(NOT LLVM_PROFILE_DATA_DIR)
file(TO_NATIVE_PATH "${LLVM_BINARY_DIR}/profiles" LLVM_PROFILE_DATA_DIR)
endif()
if(NOT LLVM_CSPROFILE_FILE_PATTERN)
if(NOT LLVM_CSPROFILE_DATA_DIR)
file(TO_NATIVE_PATH "${LLVM_BINARY_DIR}/csprofiles" LLVM_CSPROFILE_DATA_DIR)
endif()
file(TO_NATIVE_PATH "${LLVM_CSPROFILE_DATA_DIR}/%${LLVM_PROFILE_MERGE_POOL_SIZE}m.profraw" LLVM_CSPROFILE_FILE_PATTERN)
file(TO_NATIVE_PATH "${LLVM_PROFILE_DATA_DIR}/%${LLVM_PROFILE_MERGE_POOL_SIZE}m.profraw" LLVM_PROFILE_FILE_PATTERN)
endif()
if(NOT LLVM_CSPROFILE_FILE_PATTERN)
if(NOT LLVM_CSPROFILE_DATA_DIR)
file(TO_NATIVE_PATH "${LLVM_BINARY_DIR}/csprofiles" LLVM_CSPROFILE_DATA_DIR)
endif()
file(TO_NATIVE_PATH "${LLVM_CSPROFILE_DATA_DIR}/%${LLVM_PROFILE_MERGE_POOL_SIZE}m.profraw" LLVM_CSPROFILE_FILE_PATTERN)
endif()
endif()

Expand Down
1 change: 0 additions & 1 deletion llvm/cmake/modules/HandleLLVMOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1155,7 +1155,6 @@ if(LLVM_PROFDATA_FILE AND EXISTS ${LLVM_PROFDATA_FILE})
endif()

option(LLVM_BUILD_INSTRUMENTED_COVERAGE "Build LLVM and tools with Code Coverage instrumentation" Off)
option(LLVM_INDIVIDUAL_TEST_COVERAGE "Emit individual coverage file for each test case." OFF)
mark_as_advanced(LLVM_BUILD_INSTRUMENTED_COVERAGE)
append_if(LLVM_BUILD_INSTRUMENTED_COVERAGE "-fprofile-instr-generate=\"${LLVM_PROFILE_FILE_PATTERN}\" -fcoverage-mapping"
CMAKE_CXX_FLAGS
Expand Down
6 changes: 0 additions & 6 deletions llvm/docs/CMake.rst
Original file line number Diff line number Diff line change
Expand Up @@ -375,12 +375,6 @@ enabled sub-projects. Nearly all of these variable names begin with
will limit code coverage summaries to just the listed directories. If unset,
coverage reports will include all sources identified by the tooling.

**LLVM_INDIVIDUAL_TEST_COVERAGE**: BOOL
Enable individual test case coverage. When set to ON, code coverage data for
each test case will be generated and stored in a separate directory under the
config.test_exec_root path. This feature allows code coverage analysis of each
individual test case. Defaults to OFF.

**LLVM_BUILD_LLVM_DYLIB**:BOOL
If enabled, the target for building the libLLVM shared library is added.
This library contains all of LLVM's components in a single shared library.
Expand Down
6 changes: 0 additions & 6 deletions llvm/docs/CommandGuide/lit.rst
Original file line number Diff line number Diff line change
Expand Up @@ -181,12 +181,6 @@ The timing data is stored in the `test_exec_root` in a file named
Run the tests in a random order, not failing/slowest first. Deprecated,
use :option:`--order` instead.

.. option:: --per-test-coverage

Emit the necessary test coverage data, divided per test case (involves
setting a unique value to LLVM_PROFILE_FILE for each RUN). The coverage
data files will be emitted in the directory specified by `config.test_exec_root`.

.. option:: --max-failures N

Stop execution after the given number ``N`` of failures.
Expand Down
18 changes: 0 additions & 18 deletions llvm/utils/lit/lit/LitConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ def __init__(
maxIndividualTestTime=0,
parallelism_groups={},
echo_all_commands=False,
per_test_coverage=False,
):
# The name of the test runner.
self.progname = progname
Expand Down Expand Up @@ -88,7 +87,6 @@ def __init__(
self.maxIndividualTestTime = maxIndividualTestTime
self.parallelism_groups = parallelism_groups
self.echo_all_commands = echo_all_commands
self.per_test_coverage = per_test_coverage

@property
def maxIndividualTestTime(self):
Expand Down Expand Up @@ -130,22 +128,6 @@ def maxIndividualTestTime(self, value):
elif self.maxIndividualTestTime < 0:
self.fatal("The timeout per test must be >= 0 seconds")

@property
def per_test_coverage(self):
"""
Interface for getting the per_test_coverage value
"""
return self._per_test_coverage

@per_test_coverage.setter
def per_test_coverage(self, value):
"""
Interface for setting the per_test_coverage value
"""
if not isinstance(value, bool):
self.fatal("per_test_coverage must set to a value of type bool.")
self._per_test_coverage = value

def load_config(self, config, path):
"""load_config(config, path) - Load a config object from an alternate
path."""
Expand Down
17 changes: 0 additions & 17 deletions llvm/utils/lit/lit/TestRunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -1067,27 +1067,10 @@ def executeScriptInternal(test, litConfig, tmpBase, commands, cwd):
def executeScript(test, litConfig, tmpBase, commands, cwd):
bashPath = litConfig.getBashPath()
isWin32CMDEXE = litConfig.isWindows and not bashPath
coverage_index = 0 # Counter for coverage file index
script = tmpBase + ".script"
if isWin32CMDEXE:
script += ".bat"

# Set unique LLVM_PROFILE_FILE for each run command
for j, ln in enumerate(commands):
match = re.match(kPdbgRegex, ln)
if match:
command = match.group(2)
commands[j] = match.expand(": '\\1'; \\2" if command else ": '\\1'")
if litConfig.per_test_coverage:
# Extract the test case name from the test object
test_case_name = test.path_in_suite[-1]
test_case_name = test_case_name.rsplit(".", 1)[0] # Remove the file extension
llvm_profile_file = f"{test_case_name}{coverage_index}.profraw"
env = dict(test.config.environment) # Create a copy of the environment
env["LLVM_PROFILE_FILE"] = llvm_profile_file
commands[j] = f"export LLVM_PROFILE_FILE={llvm_profile_file} && {commands[j]}"
coverage_index += 1

# Write script file
mode = "w"
open_kwargs = {}
Expand Down
6 changes: 0 additions & 6 deletions llvm/utils/lit/lit/cl_arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,12 +184,6 @@ def parse_args():
help="Do not fail the run if all tests are filtered out",
action="store_true",
)
execution_group.add_argument(
"--per-test-coverage",
dest="per_test_coverage",
action="store_true",
help="Enable individual test case coverage",
)
execution_group.add_argument(
"--ignore-fail",
dest="ignoreFail",
Expand Down
1 change: 0 additions & 1 deletion llvm/utils/lit/lit/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ def main(builtin_params={}):
params=params,
config_prefix=opts.configPrefix,
echo_all_commands=opts.echoAllCommands,
per_test_coverage=opts.per_test_coverage,
)

discovered_tests = lit.discovery.find_tests_for_inputs(
Expand Down

This file was deleted.

This file was deleted.

7 changes: 0 additions & 7 deletions llvm/utils/lit/tests/Inputs/per-test-coverage/lit.cfg

This file was deleted.

11 changes: 0 additions & 11 deletions llvm/utils/lit/tests/Inputs/per-test-coverage/per-test-coverage.py

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/utils/lit/tests/per-test-coverage-by-lit-cfg.py

This file was deleted.

6 changes: 0 additions & 6 deletions llvm/utils/lit/tests/per-test-coverage.py

This file was deleted.

0 comments on commit db04f01

Please sign in to comment.