Proposal: type uniquing of debug info for LTO

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

On 20 June 2013 17:51, Manman Ren <mren at> 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

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.


More information about the llvm-commits mailing list