Fix a performance bug in the Linker.

Now that we hava a convinient place to keep it, remeber the set of
identified structs as we merge modules.

This speeds up the linking of all the bitcode files in clang with the
gold plugin and -plugin-opt=emit-llvm (i.e., link only, no codegen) from
5:25 minutes to 13.6 seconds!

Patch by Xiaofei Wan!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181104 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2013-05-04 05:05:18 +00:00
parent 2e013028f2
commit cfb320f5f9
2 changed files with 25 additions and 11 deletions

View File

@@ -10,12 +10,14 @@
#ifndef LLVM_LINKER_H
#define LLVM_LINKER_H
#include "llvm/ADT/SmallPtrSet.h"
#include <string>
namespace llvm {
class Module;
class StringRef;
class StructType;
/// This class provides the core functionality of linking in LLVM. It keeps a
/// pointer to the merged module so far. It doesn't take ownership of the
@@ -47,6 +49,7 @@ class Linker {
private:
Module *Composite;
SmallPtrSet<StructType*, 32> IdentifiedStructTypes;
};
} // End llvm namespace