]> granicus.if.org Git - llvm/commitdiff
[opt-viewer] Add column number support
authorAdam Nemet <anemet@apple.com>
Fri, 11 Nov 2016 01:51:34 +0000 (01:51 +0000)
committerAdam Nemet <anemet@apple.com>
Fri, 11 Nov 2016 01:51:34 +0000 (01:51 +0000)
With this the yellow (bubble) part of the remark shows up under the
corresponding expression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286545 91177308-0d34-0410-b5e6-96231b3b80d8

utils/opt-viewer/opt-viewer.py

index 510302b0c224d2decabe42f17861115e6e759929..378c22027f6923c935b9c667e6b71344bb1b44a0 100755 (executable)
@@ -10,6 +10,7 @@ The tools requires PyYAML and Pygments Python packages.'''
 import yaml
 import argparse
 import os.path
+import re
 import subprocess
 import shutil
 from pygments import highlight
@@ -150,19 +151,23 @@ class SourceFileRenderer:
 <td>{html_line}</td>
 </tr>'''.format(**locals()), file=self.stream)
 
-    def render_inline_remarks(self, r):
+    def render_inline_remarks(self, r, line):
         inlining_context = r.DemangledFunctionName
         dl = Remark.caller_loc.get(r.Function)
         if dl:
             link = Remark.make_link(dl['File'], dl['Line'] - 2)
             inlining_context = "<a href={link}>{r.DemangledFunctionName}</a>".format(**locals())
 
+        # Column is the number of characters *including* tabs, keep those and
+        # replace everything else with spaces.
+        indent = line[:r.Column - 1]
+        indent = re.sub('\S', ' ', indent)
         print('''
 <tr>
 <td></td>
 <td>{r.RelativeHotness}%</td>
 <td class=\"column-entry-{r.color}\">{r.Pass}</td>
-<td class=\"column-entry-yellow\">{r.message}</td>
+<td><pre style="display:inline">{indent}</pre><span class=\"column-entry-yellow\"> {r.message}&nbsp;</span></td>
 <td class=\"column-entry-yellow\">{inlining_context}</td>
 </tr>'''.format(**locals()), file=self.stream)
 
@@ -188,7 +193,7 @@ class SourceFileRenderer:
         for (linenum, line) in enumerate(self.source_stream.readlines(), start=1):
             self.render_source_line(linenum, line)
             for remark in line_remarks.get(linenum, []):
-                self.render_inline_remarks(remark)
+                self.render_inline_remarks(remark, line)
         print('''
 </table>
 </body>