From 65bf3ca9aa474db6c5c2a0d3ea0f4a22af514184 Mon Sep 17 00:00:00 2001 From: David Greene Date: Fri, 29 Jul 2011 19:07:24 +0000 Subject: [PATCH] [AVX] Make FieldInit Unique Make sure FieldInits are unique and created only once. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136500 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/Record.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index 89de3edfd19..d4e60839753 100644 --- a/utils/TableGen/Record.cpp +++ b/utils/TableGen/Record.cpp @@ -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 Key; + typedef DenseMap 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,