From 8e232cacaec5b289aaf877ad143dbd994fd10558 Mon Sep 17 00:00:00 2001 From: Adam Nemet Date: Fri, 11 Nov 2016 01:51:34 +0000 Subject: [PATCH] [opt-viewer] Add column number support With this the yellow (bubble) part of the remark shows up under the corresponding expression. llvm-svn: 286545 --- llvm/utils/opt-viewer/opt-viewer.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/llvm/utils/opt-viewer/opt-viewer.py b/llvm/utils/opt-viewer/opt-viewer.py index 510302b..378c220 100755 --- a/llvm/utils/opt-viewer/opt-viewer.py +++ b/llvm/utils/opt-viewer/opt-viewer.py @@ -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: {html_line} '''.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 = "{r.DemangledFunctionName}".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(''' {r.RelativeHotness}% {r.Pass} -{r.message} +
{indent}
{r.message}  {inlining_context} '''.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(''' -- 2.7.4