[AVX] Make FieldInit Unique

Make sure FieldInits are unique and created only once.

llvm-svn: 136500
This commit is contained in:
David Greene 2011-07-29 19:07:24 +00:00
parent 619a865a18
commit e1cb4aa5bb

View File

@ -1475,7 +1475,15 @@ std::string DefInit::getAsString() const {
}
const FieldInit *FieldInit::get(const Init *R, const std::string &FN) {
return new FieldInit(R, FN);
typedef std::pair<const Init *, TableGenStringKey> Key;
typedef DenseMap<Key, FieldInit *> Pool;
static Pool ThePool;
Key TheKey(std::make_pair(R, FN));
FieldInit *&I = ThePool[TheKey];
if (!I) I = new FieldInit(R, FN);
return I;
}
const Init *FieldInit::resolveBitReference(Record &R, const RecordVal *RV,