Proposal: type uniquing of debug info for LTO

Rafael EspĂ­ndola rafael.espindola at gmail.com
Tue Oct 1 05:54:38 PDT 2013


On 20 June 2013 17:51, Manman Ren <mren at apple.com> wrote:
>
> The intent of this proposal is to speedup compilation of "-flto -g" for c++ programs.
> This is based on discussions with Adrian, David and Eric.
>
> ---------------------------
> Problem:
> A single class can be used in multiple source files and the DI (Debug Info) class is included in multiple bc files. The duplication of
> class definitions causes blow-up in # of MDNodes, # of DIEs, leading to large memory requirement.
>
> As an example, SPEC xalancbmk requires 7GB of memory when compiled with -flto -g.
> With a preliminary implementation of type uniquing, the memory usage will be down to 2GB.

This is awesome! :-)

> In order to unique types, we have to break cycles in the MDNodes.

Sorry I missed this email earlier, but do we really need to break the
cycles? This is not a generic graph isomorphism problem. If we just
add the hashes to the metadata nodes representing types, merging then
becomes

for every two types with the same hashes:
  try merging them recursively. The order is important, so this is
just a dfs that succeeds or not.

Cheers,
Rafael



More information about the llvm-commits mailing list