[clang] [clang][cmake] Apply bolt optimizations as part of the clang target (PR #119896)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 13 08:12:16 PST 2024
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {darker}-->
:warning: Python code formatter, darker found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
darker --check --diff -r ea6e13586ce22291e9e7a4e382f6b2409b406da9...dd1f6807904691586c715d447fff54915a46c751 clang/utils/perf-training/perf-helper.py
``````````
</details>
<details>
<summary>
View the diff from darker here.
</summary>
``````````diff
--- perf-helper.py 2024-12-12 23:56:07.000000 +0000
+++ perf-helper.py 2024-12-13 16:11:45.771269 +0000
@@ -560,76 +560,109 @@
return 0
def bolt_optimize(args):
parser = argparse.ArgumentParser("%prog [options] ")
- parser.add_argument('--method')
- parser.add_argument('--input')
- parser.add_argument('--instrumented-output')
- parser.add_argument('--fdata')
- parser.add_argument('--perf-training-binary-dir')
- parser.add_argument('--readelf')
- parser.add_argument('--bolt')
- parser.add_argument('--lit')
- parser.add_argument('--merge-fdata')
-
+ parser.add_argument("--method")
+ parser.add_argument("--input")
+ parser.add_argument("--instrumented-output")
+ parser.add_argument("--fdata")
+ parser.add_argument("--perf-training-binary-dir")
+ parser.add_argument("--readelf")
+ parser.add_argument("--bolt")
+ parser.add_argument("--lit")
+ parser.add_argument("--merge-fdata")
+
opts = parser.parse_args(args)
readelf = opts.readelf
bolt = opts.bolt
lit = opts.lit
output = subprocess.check_output(
[readelf, "-WS", opts.input], universal_newlines=True
)
-
+
# This binary has already been bolt-optimized, so skip further processing.
- if re.search('\\.bolt\\.org\\.text', output, re.MULTILINE):
+ if re.search("\\.bolt\\.org\\.text", output, re.MULTILINE):
return 0
- if opts.method == 'INSTRUMENT':
+ if opts.method == "INSTRUMENT":
process = subprocess.run(
- [bolt, opts.input, '-o', opts.instrumented_output, '-instrument', '--instrumentation-file-append-pid',
- f'--instrumentation-file={opts.fdata}'],
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text = True)
+ [
+ bolt,
+ opts.input,
+ "-o",
+ opts.instrumented_output,
+ "-instrument",
+ "--instrumentation-file-append-pid",
+ f"--instrumentation-file={opts.fdata}",
+ ],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True,
+ )
print(process.args)
for line in process.stdout:
sys.stdout.write(line)
process.check_returncode()
process = subprocess.run(
- [sys.executable, lit, os.path.join(opts.perf_training_binary_dir, 'bolt-fdata')],
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text = True)
+ [
+ sys.executable,
+ lit,
+ os.path.join(opts.perf_training_binary_dir, "bolt-fdata"),
+ ],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True,
+ )
print(process.args)
for line in process.stdout:
sys.stdout.write(line)
process.check_returncode()
- if opts.method == 'PERF':
+ if opts.method == "PERF":
perf2bolt([bolt, opts.perf_training_binary_dir, opts.input])
merge_fdata([opts.merge_fdata, opts.fdata, opts.perf_training_binary_dir])
-
- shutil.copy(opts.input, f'{opts.input}-prebolt')
+
+ shutil.copy(opts.input, f"{opts.input}-prebolt")
process = subprocess.run(
- [bolt, f'{opts.input}-prebolt', '-o', opts.input, '-data', opts.fdata,
- '-reorder-blocks=ext-tsp', '-reorder-functions=cdsort', '-split-functions',
- '-split-all-cold', '-split-eh', '-dyno-stats', '-use-gnu-stack', '-update-debug-sections',
- '-nl' if opts.method == 'PERF' else ''],
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text = True)
+ [
+ bolt,
+ f"{opts.input}-prebolt",
+ "-o",
+ opts.input,
+ "-data",
+ opts.fdata,
+ "-reorder-blocks=ext-tsp",
+ "-reorder-functions=cdsort",
+ "-split-functions",
+ "-split-all-cold",
+ "-split-eh",
+ "-dyno-stats",
+ "-use-gnu-stack",
+ "-update-debug-sections",
+ "-nl" if opts.method == "PERF" else "",
+ ],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True,
+ )
print(process.args)
for line in process.stdout:
sys.stdout.write(line)
process.check_returncode()
-
+
commands = {
- "bolt-optimize" : bolt_optimize,
+ "bolt-optimize": bolt_optimize,
"clean": clean,
"merge": merge,
"dtrace": dtrace,
"cc1": cc1,
"gen-order-file": genOrderFile,
``````````
</details>
https://github.com/llvm/llvm-project/pull/119896
More information about the cfe-commits
mailing list