[llvm] [TOOLS][opt-viewer] fixed error for demangler_lock and string formatting (PR #102298)
Vyom Sharma via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 7 03:16:02 PDT 2024
https://github.com/vyom1611 created https://github.com/llvm/llvm-project/pull/102298
Using the old opt_viewer script gives an error:
```clang++ -O2 -fsave-optimization-record -c main.cpp -o lemmet
(base) vyomsharma at Vyoms-MacBook-Air CMAKE LLVM % /users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py -source-dir=. lemmet.opt.yaml
Reading YAML files...
Rendering index page...
Rendering HTML files...
27 of 27multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/miniforge/base/lib/python3.10/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
File "/opt/homebrew/Caskroom/miniforge/base/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
return list(map(*args))
File "/Users/vyomsharma/llvm-project/llvm/tools/opt-viewer/optpmap.py", line 25, in _wrapped_func
return func(argument, filter_)
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 293, in _render_file
SourceFileRenderer(source_dir, output_dir, filename, no_highlight).render(remarks)
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 216, in render
self.render_source_lines(self.source_stream, line_remarks)
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 123, in render_source_lines
self.render_inline_remarks(remark, html_line)
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 126, in render_inline_remarks
inlining_context = r.DemangledFunctionName
File "/Users/vyomsharma/llvm-project/llvm/tools/opt-viewer/optrecord.py", line 153, in DemangledFunctionName
return self.demangle(self.Function)
File "/Users/vyomsharma/llvm-project/llvm/tools/opt-viewer/optrecord.py", line 77, in demangle
with cls.demangler_lock:
AttributeError: type object 'Missed' has no attribute 'demangler_lock'
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 471, in <module>
main()
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 457, in main
generate_report(
File "/users/vyomsharma/llvm-project/llvm/tools/opt-viewer/opt-viewer.py", line 376, in generate_report
optpmap.pmap(
File "/Users/vyomsharma/llvm-project/llvm/tools/opt-viewer/optpmap.py", line 57, in pmap
result = pool.map(_wrapped_func, func_and_args, *args, **kwargs)
File "/opt/homebrew/Caskroom/miniforge/base/lib/python3.10/multiprocessing/pool.py", line 367, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/opt/homebrew/Caskroom/miniforge/base/lib/python3.10/multiprocessing/pool.py", line 774, in get
raise self._value
AttributeError: type object 'Missed' has no attribute 'demangler_lock'
```
So I updated these 2 files which works perfectly fine now.
>From 1014b9398d72634d2c7c8f891c2134f4ab21192b Mon Sep 17 00:00:00 2001
From: vyom1611 <sharm843 at umn.edu>
Date: Wed, 7 Aug 2024 15:44:13 +0530
Subject: [PATCH] [TOOLS][opt-viewer] fixed error for demangler_lock and string
formatting
---
llvm/tools/opt-viewer/opt-viewer.py | 2 +-
llvm/tools/opt-viewer/optrecord.py | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/llvm/tools/opt-viewer/opt-viewer.py b/llvm/tools/opt-viewer/opt-viewer.py
index c9c7db726f7652..2d32d66bbe3aee 100755
--- a/llvm/tools/opt-viewer/opt-viewer.py
+++ b/llvm/tools/opt-viewer/opt-viewer.py
@@ -135,7 +135,7 @@ def render_inline_remarks(self, r, line):
# Column is the number of characters *including* tabs, keep those and
# replace everything else with spaces.
indent = line[: max(r.Column, 1) - 1]
- indent = re.sub("\S", " ", indent)
+ indent = re.sub(r"\S", " ", indent)
# Create expanded message and link if we have a multiline message.
lines = r.message.split("\n")
diff --git a/llvm/tools/opt-viewer/optrecord.py b/llvm/tools/opt-viewer/optrecord.py
index 9e2fc7cb553b58..9b20562e803cb0 100644
--- a/llvm/tools/opt-viewer/optrecord.py
+++ b/llvm/tools/opt-viewer/optrecord.py
@@ -74,6 +74,8 @@ def set_demangler(cls, demangler):
@classmethod
def demangle(cls, name):
+ if cls.demangler_proc is None:
+ return name # Return the original name if demangler is not available
with cls.demangler_lock:
cls.demangler_proc.stdin.write((name + "\n").encode("utf-8"))
cls.demangler_proc.stdin.flush()
@@ -299,7 +301,7 @@ def get_remarks(input_file, filter_=None):
filter_e = re.compile(filter_)
for remark in docs:
remark.canonicalize()
- # Avoid remarks withoug debug location or if they are duplicated
+ # Avoid remarks without debug location or if they are duplicated
if not hasattr(remark, "DebugLoc") or remark.key in all_remarks:
continue
More information about the llvm-commits
mailing list