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

Adam Nemet via llvm-dev llvm-dev at lists.llvm.org
Mon May 8 08:32:35 PDT 2017


> On May 7, 2017, at 9:25 AM, vivek pandya <vivekvpandya at gmail.com> wrote:
> 
> 
> 
> On Fri, May 5, 2017 at 9:25 PM, Adam Nemet <anemet at apple.com <mailto:anemet at apple.com>> wrote:
> 
>> On May 5, 2017, at 8:49 AM, Hal Finkel <hfinkel at anl.gov <mailto: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 <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.

Moving the discussion to https://bugs.llvm.org/show_bug.cgi?id=32352.

Adam

> 
> 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 list
>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://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/20170508/74871ebe/attachment.html>


More information about the llvm-dev mailing list