[llvm-dev] Deleting function IR after codegen
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 7 16:56:45 PST 2016
----- Original Message -----
> From: "Pete Cooper" <peter_cooper at apple.com>
> To: "Chandler Carruth" <chandlerc at gmail.com>, "Duncan P. N. Exon Smith" <dexonsmith at apple.com>, "Hal Finkel"
> <hfinkel at anl.gov>, "Philip Reames" <listmail at philipreames.com>, "Mehdi Amini" <mehdi.amini at apple.com>, "Rafael
> Espíndola" <rafael.espindola at gmail.com>
> Cc: "llvm-dev" <llvm-dev at lists.llvm.org>
> Sent: Monday, March 7, 2016 6:44:06 PM
> Subject: Deleting function IR after codegen
>
> Hi all
>
> After codegen for a given function, the IR should no longer be
> needed. In the AsmPrinter we convert from MI->MCInstr, and then we
> never go back and look at the IR during the MC layer.
>
> I’ve prototyped a simple pass which can be (optionally) scheduled to
> do just this. It is added at the end of addPassesToEmitFile. It is
> optional so that clang can continue to leak the IR with
> --disable-free, but i would propose that all other tools, and
> especially LTO, would enable it. The savings are 20% of peak memory
> in LTO of clang itself.
>
> I could attach a patch, but first i’d really like to know if anyone
> is fundamentally opposed to this.
>
> I should note, a couple of issues have come up in the prototype.
> - llvm::getDISubprogram was walking the function body to find the
> subprogram. This is trivial to fix as functions now have !dbg on
> them.
> - The AsmPrinter is calling canBeOmittedFromSymbolTable on
> GlobalValue’s which then walks all their uses. I think this should
> be done earlier in codegen as an analysis whose results are
> available to the AsmPrinter.
I imagine that these are good cleanups regardless, it sounds like the fixes are also likely compile-time improvements.
> - BB’s whose addresses are taken, i.e. jump tables, can’t be deleted.
> Those functions will just keep their IR around so no changes there.
>
> With the above issues fixed, I can run make check and pass all the
> tests.
>
> Comments very welcome.
As an optional feature, it certainly makes sense to me.
-Hal
>
> Cheers,
> Pete
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev
mailing list