[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136491 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Greene 2011-07-29 19:07:14 +00:00
parent 2855b0f073
commit d0e9d04ab0

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) {