[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