aboutsummaryrefslogtreecommitdiff
path: root/clang/utils
diff options
context:
space:
mode:
authorAmir Ayupov <aaupov@fb.com>2024-01-22 14:56:17 -0800
committerAmir Ayupov <aaupov@fb.com>2024-01-22 14:56:43 -0800
commit6953b367027e4234607a6718a0a1d57eb52ef57e (patch)
tree009605b4b3c35166fdf0ebe81f997ded5d474d3f /clang/utils
parent1d5c16d7805806e920feee2b4ec93d5800293837 (diff)
downloadllvm-6953b367027e4234607a6718a0a1d57eb52ef57e.zip
llvm-6953b367027e4234607a6718a0a1d57eb52ef57e.tar.gz
llvm-6953b367027e4234607a6718a0a1d57eb52ef57e.tar.bz2
Revert "Reland [Clang][CMake] Support perf, LBR, and Instrument CLANG_BOLT options (#69133)"
This reverts commit b83b8d3fd17885438b0ea154e07088d877d293a8. Breaks buildbots e.g. https://lab.llvm.org/buildbot/#/builders/225/builds/29950
Diffstat (limited to 'clang/utils')
-rw-r--r--clang/utils/perf-training/CMakeLists.txt29
-rw-r--r--clang/utils/perf-training/bolt.lit.cfg47
-rw-r--r--clang/utils/perf-training/bolt.lit.site.cfg.in2
-rw-r--r--clang/utils/perf-training/perf-helper.py58
4 files changed, 11 insertions, 125 deletions
diff --git a/clang/utils/perf-training/CMakeLists.txt b/clang/utils/perf-training/CMakeLists.txt
index 601f409..c6d5186 100644
--- a/clang/utils/perf-training/CMakeLists.txt
+++ b/clang/utils/perf-training/CMakeLists.txt
@@ -62,9 +62,7 @@ if(APPLE AND DTRACE AND NOT LLVM_TOOL_LLVM_DRIVER_BUILD)
DEPENDS generate-dtrace-logs)
endif()
-if(CLANG_BOLT AND NOT LLVM_BUILD_INSTRUMENTED)
- set(CLANG_BOLT_INSTRUMENTED "clang-bolt.inst" CACHE STRING
- "Name of BOLT-instrumented Clang binary")
+if(CLANG_BOLT_INSTRUMENT AND NOT LLVM_BUILD_INSTRUMENTED)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/bolt.lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/bolt-fdata/lit.site.cfg
@@ -73,37 +71,16 @@ if(CLANG_BOLT AND NOT LLVM_BUILD_INSTRUMENTED)
add_lit_testsuite(generate-bolt-fdata "Generating BOLT profile for Clang"
${CMAKE_CURRENT_BINARY_DIR}/bolt-fdata/
EXCLUDE_FROM_CHECK_ALL
- DEPENDS clang-bolt-training-deps clear-bolt-fdata clear-perf-data
+ DEPENDS clang-instrumented clear-bolt-fdata
)
add_custom_target(clear-bolt-fdata
COMMAND "${Python3_EXECUTABLE}" ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} fdata
COMMENT "Clearing old BOLT fdata")
- add_custom_target(clear-perf-data
- COMMAND "${Python3_EXECUTABLE}" ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} perf.data
- COMMENT "Clearing old perf data")
-
- string(TOUPPER "${CLANG_BOLT}" CLANG_BOLT)
- if (CLANG_BOLT STREQUAL "LBR")
- set(BOLT_LBR "--lbr")
- endif()
-
- add_custom_target(merge-fdata-deps)
- if (CLANG_BOLT STREQUAL "INSTRUMENT")
- add_dependencies(merge-fdata-deps generate-bolt-fdata)
- else()
- # Convert perf profiles into fdata
- add_custom_target(convert-perf-fdata
- COMMAND "${Python3_EXECUTABLE}" ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py perf2bolt $<TARGET_FILE:llvm-bolt> ${CMAKE_CURRENT_BINARY_DIR} $<TARGET_FILE:clang> ${BOLT_LBR}
- COMMENT "Converting perf files to BOLT fdata"
- DEPENDS llvm-bolt generate-bolt-fdata)
- add_dependencies(merge-fdata-deps convert-perf-fdata)
- endif()
-
# Merge profiles into one using merge-fdata
add_custom_target(clang-bolt-profile
COMMAND "${Python3_EXECUTABLE}" ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py merge-fdata $<TARGET_FILE:merge-fdata> ${CMAKE_CURRENT_BINARY_DIR}/prof.fdata ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Merging BOLT fdata"
- DEPENDS merge-fdata merge-fdata-deps)
+ DEPENDS merge-fdata generate-bolt-fdata)
endif()
diff --git a/clang/utils/perf-training/bolt.lit.cfg b/clang/utils/perf-training/bolt.lit.cfg
index 0e81a55..234ac85 100644
--- a/clang/utils/perf-training/bolt.lit.cfg
+++ b/clang/utils/perf-training/bolt.lit.cfg
@@ -6,46 +6,15 @@ import lit.util
import os
import subprocess
-clang_bolt_mode = config.clang_bolt_mode.lower()
-clang_binary = "clang"
-perf_wrapper = f"{config.python_exe} {config.perf_helper_dir}/perf-helper.py perf "
+config.clang = os.path.realpath(lit.util.which('clang-bolt.inst', config.clang_tools_dir)).replace('\\', '/')
-if clang_bolt_mode == "instrument":
- perf_wrapper = ""
- clang_binary = config.clang_bolt_name
-elif clang_bolt_mode == "lbr":
- perf_wrapper += " --lbr -- "
-elif clang_bolt_mode == "perf":
- perf_wrapper += " -- "
-else:
- assert 0, "Unsupported CLANG_BOLT_MODE variable"
-
-config.clang = perf_wrapper + os.path.realpath(
- lit.util.which(clang_binary, config.clang_tools_dir)
-).replace("\\", "/")
-
-config.name = "Clang Perf Training"
-config.suffixes = [
- ".c",
- ".cc",
- ".cpp",
- ".m",
- ".mm",
- ".cu",
- ".ll",
- ".cl",
- ".s",
- ".S",
- ".modulemap",
- ".test",
-]
+config.name = 'Clang Perf Training'
+config.suffixes = ['.c', '.cc', '.cpp', '.m', '.mm', '.cu', '.ll', '.cl', '.s', '.S', '.modulemap', '.test']
use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL")
config.test_format = lit.formats.ShTest(use_lit_shell == "0")
-config.substitutions.append(
- ("%clang_cpp_skip_driver", f" {config.clang} --driver-mode=g++ ")
-)
-config.substitutions.append(("%clang_cpp", f" {config.clang} --driver-mode=g++ "))
-config.substitutions.append(("%clang_skip_driver", config.clang))
-config.substitutions.append(("%clang", config.clang))
-config.substitutions.append(("%test_root", config.test_exec_root))
+config.substitutions.append( ('%clang_cpp_skip_driver', ' %s --driver-mode=g++ ' % (config.clang)))
+config.substitutions.append( ('%clang_cpp', ' %s --driver-mode=g++ ' % (config.clang)))
+config.substitutions.append( ('%clang_skip_driver', ' %s ' % (config.clang)))
+config.substitutions.append( ('%clang', ' %s ' % (config.clang) ) )
+config.substitutions.append( ('%test_root', config.test_exec_root ) )
diff --git a/clang/utils/perf-training/bolt.lit.site.cfg.in b/clang/utils/perf-training/bolt.lit.site.cfg.in
index 54de127..3029319 100644
--- a/clang/utils/perf-training/bolt.lit.site.cfg.in
+++ b/clang/utils/perf-training/bolt.lit.site.cfg.in
@@ -9,8 +9,6 @@ config.test_source_root = "@CLANG_PGO_TRAINING_DATA@"
config.target_triple = "@LLVM_TARGET_TRIPLE@"
config.python_exe = "@Python3_EXECUTABLE@"
config.clang_obj_root = path(r"@CLANG_BINARY_DIR@")
-config.clang_bolt_mode = "@CLANG_BOLT@"
-config.clang_bolt_name = "@CLANG_BOLT_INSTRUMENTED@"
# Let the main config do the real work.
lit_config.load_config(config, "@CLANG_SOURCE_DIR@/utils/perf-training/bolt.lit.cfg")
diff --git a/clang/utils/perf-training/perf-helper.py b/clang/utils/perf-training/perf-helper.py
index 959bdba..99d6a33 100644
--- a/clang/utils/perf-training/perf-helper.py
+++ b/clang/utils/perf-training/perf-helper.py
@@ -67,62 +67,6 @@ def merge_fdata(args):
return 0
-def perf(args):
- parser = argparse.ArgumentParser(
- prog="perf-helper perf", description="perf wrapper for BOLT profile collection"
- )
- parser.add_argument(
- "--lbr", action="store_true", help="Use perf with branch stacks"
- )
- parser.add_argument("cmd", nargs=argparse.REMAINDER, help="")
-
- opts = parser.parse_args(args)
- cmd = opts.cmd[1:]
-
- perf_args = [
- "perf",
- "record",
- "--event=cycles:u",
- "--freq=max",
- "--output=%d.perf.data" % os.getpid(),
- ]
- if opts.lbr:
- perf_args += ["--branch-filter=any,u"]
- perf_args.extend(cmd)
-
- start_time = time.time()
- subprocess.check_call(perf_args)
-
- elapsed = time.time() - start_time
- print("... data collection took %.4fs" % elapsed)
- return 0
-
-
-def perf2bolt(args):
- parser = argparse.ArgumentParser(
- prog="perf-helper perf2bolt",
- description="perf2bolt conversion wrapper for perf.data files",
- )
- parser.add_argument("bolt", help="Path to llvm-bolt")
- parser.add_argument("path", help="Path containing perf.data files")
- parser.add_argument("binary", help="Input binary")
- parser.add_argument("--lbr", action="store_true", help="Use LBR perf2bolt mode")
- opts = parser.parse_args(args)
-
- p2b_args = [
- opts.bolt,
- opts.binary,
- "--aggregate-only",
- "--profile-format=yaml",
- ]
- if not opts.lbr:
- p2b_args += ["-nl"]
- p2b_args += ["-p"]
- for filename in findFilesWithExtension(opts.path, "perf.data"):
- subprocess.check_call(p2b_args + [filename, "-o", filename + ".fdata"])
- return 0
-
-
def dtrace(args):
parser = argparse.ArgumentParser(
prog="perf-helper dtrace",
@@ -563,8 +507,6 @@ commands = {
"cc1": cc1,
"gen-order-file": genOrderFile,
"merge-fdata": merge_fdata,
- "perf": perf,
- "perf2bolt": perf2bolt,
}