[llvm-dev] Idea for Open Project : Smarter way of dumping LLVM IR with -emit-after-all

vivek pandya via llvm-dev llvm-dev at lists.llvm.org
Sun May 7 09:25:39 PDT 2017


On Fri, May 5, 2017 at 9:25 PM, Adam Nemet <anemet at apple.com> wrote:

>
> On May 5, 2017, at 8:49 AM, Hal Finkel <hfinkel at anl.gov> wrote:
>
>
>
> On 05/05/2017 10:44 AM, vivek pandya via llvm-dev wrote:
>
> Hello LLVM Devs,
>
> I have an idea to improve effectiveness of IR dump with -emit-after-all
> based on Adam Nemet's 2016 LLVM Dev presentation.
> I think we can track changes in each function, basic block and
> instructions by dumping it to YAML files (initially) then track changes
> done by each pass incrementally as it is done in optimization remark
> emitter. Once we have required information in YAML files we can present it
> in much readable way (similar to diff ) through HTML technologies.
>
>
> I think this sounds useful.
>
> I think we can track chances in each entities by giving them a unique
> number and that will also map to HTML presentation layer.
> However I have not thought if existing ORE framework can be used or not
> for this purpose.
>
>
> I think that we can use ORE for this; I think you'll need some
> infrastructure improvement so that we can emit the remarks from the pass
> managers but not pay the cost of serializing the IR unless something is
> going to use the information.
>
>
> That is a general feature we just have to have for other remarks too that
> are expensive to construct.  See https://bugs.llvm.org/
> show_bug.cgi?id=32352.
>
> Vivek, feel free to grab this if you want to work on it.  I can describe
> the current situation and we can discuss the design in the PR.
>
> Hi Adam,

I looked into code related to above feature request and perhaps I am not
yet clear about this.
I have tried out following things:

1) allowExtraAnalysis function will have a string parameter which is pass
name.

2) Find an appropriate entry point in Clang where we can make a shared_ptr
for
OptimizationRemarkPattern, OptimizationRemarkAnalysisPattern in LLVMContext
class.

3) Use above changes so that allowExtraAnalysis can be used to check if
specific
remark is on or not.

However I am confused because there is one more class DiagnosticInfo in
LLVM which handles same thing for opt's flags, but why those informations
are not used in allowExtraAnalysis() ? Have I understood the purpose of
allowExtraAnalysis or not ?

Please guide here.

Sincerely,
Vivek


> Thanks,
> Adam
>
>
>  -Hal
>
> But if community thinks this is useful then I would like to work on this.
> Also suggest if you can find any problem with this approach.
>
> Sincerely,
> Vivek
>
>
> _______________________________________________
> LLVM Developers mailing listllvm-dev at lists.llvm.orghttp://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
> --
> Hal Finkel
> Lead, Compiler Technology and Programming Languages
> Leadership Computing Facility
> Argonne National Laboratory
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170507/0584df13/attachment.html>


More information about the llvm-dev mailing list