[llvm-dev] Commit module to Git after each Pass
Daniel Neilson via llvm-dev
llvm-dev at lists.llvm.org
Wed Mar 14 14:31:54 PDT 2018
The print-module-after-all type of option exists in upstream:
-print-module-scope - When printing IR for print-[before|after]{-all} always print a module IR
commit 7d160f714357f6784ead669ce516e94991c12e5a
Author: Fedor Sergeev <fedor.sergeev at azul.com<mailto:fedor.sergeev at azul.com>>
Date: Fri Dec 1 17:42:46 2017 +0000
IR printing improvement for function passes - introducing -print-module-scope
Summary:
When debugging function passes it happens to be rather useful to dump
the whole module before the transformation and then use this dump
to analyze this single transformation by running it separately
on that particular module state.
Introducing
-print-module-scope
debugging option that forces all the function-level IR dumps
to become whole-module dumps.
This option builds on top of normal dumping controls like
-print-before/after
-filter-print-funcs
The plan is to eventually extend this option to cover other local passes
(at least loop passes) but that should go as a separate change.
Loop passes here:
commit 5608259c999fb77c5d6093895696f4daebe6b8cd
Author: Fedor Sergeev <fedor.sergeev at azul.com<mailto:fedor.sergeev at azul.com>>
Date: Fri Dec 1 18:33:58 2017 +0000
IR printing improvement for loop passes - handle -print-module-scope
-Daniel
On Mar 14, 2018, at 3:51 PM, Philip Reames via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
This is interesting, and might be useful. I don't know that this is broadly useful enough for upstream inclusion, but if you could post this to github somewhere, I might play with it.
There might also be room to factor out common functionality. We've also run into the need to print whole-module instead of containing construct (i.e. this loop). If we added upstream support for something along the lines of -print-module-after-all, building the git history could easily be done as a post processing step.
Philip
On 03/06/2018 10:43 AM, Alexandre Isoard via llvm-dev wrote:
Hello,
I had a stupid idea recently that turned out not so stupid after all. I wanted to be able to "see" an entire pass pipeline in action to find unnecessary transformations and/or missed opportunities and generally improve the debug-ability of LLVM.
So as the title suggest, I implemented an equivalent of "-print-after-all" but instead of printing into stdout I dump into a file that get commit into a temporary git. There are some quirks with it but it's working and is actually awesome. For example, at first sight, I see multiple time lcssa and instcombine cancelling each other's work.
Of course, that has a big impact on compile time when enabled, but that's still practical (git being quite good at its job) when debugging.
There are improvement I can make, but would you guys be interested in such feature?
--
Alexandre Isoard
_______________________________________________
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
_______________________________________________
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180314/3a663688/attachment-0001.html>
More information about the llvm-dev
mailing list