[TableGen] Merge single prefix bit in RecordVal into PointerIntPair with Name to reduce memory usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239021 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Craig Topper 2015-06-04 07:40:12 +00:00
parent 7c290adeb4
commit 40c791eda9
2 changed files with 10 additions and 11 deletions

View File

@ -1113,22 +1113,21 @@ public:
//===----------------------------------------------------------------------===//
class RecordVal {
Init *Name;
PointerIntPair<Init *, 1, bool> NameAndPrefix;
RecTy *Ty;
unsigned Prefix;
Init *Value;
public:
RecordVal(Init *N, RecTy *T, unsigned P);
RecordVal(const std::string &N, RecTy *T, unsigned P);
RecordVal(Init *N, RecTy *T, bool P);
RecordVal(const std::string &N, RecTy *T, bool P);
const std::string &getName() const;
const Init *getNameInit() const { return Name; }
const Init *getNameInit() const { return NameAndPrefix.getPointer(); }
std::string getNameInitAsString() const {
return getNameInit()->getAsUnquotedString();
}
unsigned getPrefix() const { return Prefix; }
bool getPrefix() const { return NameAndPrefix.getInt(); }
RecTy *getType() const { return Ty; }
Init *getValue() const { return Value; }

View File

@ -1532,20 +1532,20 @@ std::string DagInit::getAsString() const {
// Other implementations
//===----------------------------------------------------------------------===//
RecordVal::RecordVal(Init *N, RecTy *T, unsigned P)
: Name(N), Ty(T), Prefix(P) {
RecordVal::RecordVal(Init *N, RecTy *T, bool P)
: NameAndPrefix(N, P), Ty(T) {
Value = UnsetInit::get()->convertInitializerTo(Ty);
assert(Value && "Cannot create unset value for current type!");
}
RecordVal::RecordVal(const std::string &N, RecTy *T, unsigned P)
: Name(StringInit::get(N)), Ty(T), Prefix(P) {
RecordVal::RecordVal(const std::string &N, RecTy *T, bool P)
: NameAndPrefix(StringInit::get(N), P), Ty(T) {
Value = UnsetInit::get()->convertInitializerTo(Ty);
assert(Value && "Cannot create unset value for current type!");
}
const std::string &RecordVal::getName() const {
return cast<StringInit>(Name)->getValue();
return cast<StringInit>(getNameInit())->getValue();
}
void RecordVal::dump() const { errs() << *this; }