[AVX] Make StringInit Unique

Use a StringMap to ensure the StringInits are unique.  This is
especially important for AVX where we will have many smallish
strings representing instruction prefixes, suffixes and the like.

llvm-svn: 136491
This commit is contained in:
David Greene 2011-07-29 19:07:14 +00:00
parent a44263c0cc
commit 3ff33c9123
1 changed files with 7 additions and 1 deletions

View File

@ -21,6 +21,7 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
using namespace llvm;
@ -565,7 +566,12 @@ IntInit::convertInitializerBitRange(const std::vector<unsigned> &Bits) const {
}
const StringInit *StringInit::get(const std::string &V) {
return new StringInit(V);
typedef StringMap<StringInit *> Pool;
static Pool ThePool;
StringInit *&I = ThePool[V];
if (!I) I = new StringInit(V);
return I;
}
const CodeInit *CodeInit::get(const std::string &V) {