int64_t Val = II->getValue();
if (Val != 0 && Val != 1) return 0; // Only accept 0 or 1 for a bit!
- return BitInit::Create(Val != 0);
+ return BitInit::get(Val != 0);
}
const Init *BitRecTy::convertValue(const TypedInit *VI) {
SmallVector<const Init *, 16> Bits(Size);
for (unsigned i = 0; i != Size; ++i)
- Bits[i] = UnsetInit::Create();
+ Bits[i] = UnsetInit::get();
- return BitsInit::Create(Bits.begin(), Bits.end());
+ return BitsInit::get(Bits.begin(), Bits.end());
}
const Init *BitsRecTy::convertValue(const BitInit *UI) {
const Init *Bits[1] = { UI };
- return BitsInit::Create(Bits, array_endof(Bits));
+ return BitsInit::get(Bits, array_endof(Bits));
}
/// canFitInBitfield - Return true if the number of bits is large enough to hold
SmallVector<const Init *, 16> Bits(Size);
for (unsigned i = 0; i != Size; ++i)
- Bits[i] = BitInit::Create(Value & (1LL << i));
+ Bits[i] = BitInit::get(Value & (1LL << i));
- return BitsInit::Create(Bits.begin(), Bits.end());
+ return BitsInit::get(Bits.begin(), Bits.end());
}
const Init *BitsRecTy::convertValue(const BitsInit *BI) {
SmallVector<const Init *, 16> Bits(Size);
for (unsigned i = 0; i != Size; ++i)
- Bits[i] = VarBitInit::Create(VI, i);
- return BitsInit::Create(Bits.begin(), Bits.end());
+ Bits[i] = VarBitInit::get(VI, i);
+ return BitsInit::get(Bits.begin(), Bits.end());
}
if (Size == 1 && dynamic_cast<BitRecTy*>(VI->getType())) {
const Init *Bits[1] = { VI };
- return BitsInit::Create(Bits, array_endof(Bits));
+ return BitsInit::get(Bits, array_endof(Bits));
}
if (const TernOpInit *Tern = dynamic_cast<const TernOpInit*>(VI)) {
for (unsigned i = 0; i != Size; ++i)
NewBits[i] =
- TernOpInit::Create(TernOpInit::IF, LHS,
- IntInit::Create((MHSVal & (1LL << i)) ? 1 : 0),
- IntInit::Create((RHSVal & (1LL << i)) ? 1 : 0),
+ TernOpInit::get(TernOpInit::IF, LHS,
+ IntInit::get((MHSVal & (1LL << i)) ? 1 : 0),
+ IntInit::get((RHSVal & (1LL << i)) ? 1 : 0),
VI->getType());
- return BitsInit::Create(NewBits.begin(), NewBits.end());
+ return BitsInit::get(NewBits.begin(), NewBits.end());
}
} else {
const BitsInit *MHSbs = dynamic_cast<const BitsInit*>(MHS);
SmallVector<const Init *, 16> NewBits(Size);
for (unsigned i = 0; i != Size; ++i)
- NewBits[i] = TernOpInit::Create(TernOpInit::IF, LHS,
+ NewBits[i] = TernOpInit::get(TernOpInit::IF, LHS,
MHSbs->getBit(i),
RHSbs->getBit(i),
VI->getType());
- return BitsInit::Create(NewBits.begin(), NewBits.end());
+ return BitsInit::get(NewBits.begin(), NewBits.end());
}
}
}
}
const Init *IntRecTy::convertValue(const BitInit *BI) {
- return IntInit::Create(BI->getValue());
+ return IntInit::get(BI->getValue());
}
const Init *IntRecTy::convertValue(const BitsInit *BI) {
} else {
return 0;
}
- return IntInit::Create(Result);
+ return IntInit::get(Result);
}
const Init *IntRecTy::convertValue(const TypedInit *TI) {
const Init *L = BO->getOperand()->convertInitializerTo(this);
if (L == 0) return 0;
if (L != BO->getOperand())
- return UnOpInit::Create(UnOpInit::CAST, L, new StringRecTy);
+ return UnOpInit::get(UnOpInit::CAST, L, new StringRecTy);
return BO;
}
const Init *R = BO->getRHS()->convertInitializerTo(this);
if (L == 0 || R == 0) return 0;
if (L != BO->getLHS() || R != BO->getRHS())
- return BinOpInit::Create(BinOpInit::STRCONCAT, L, R, new StringRecTy);
+ return BinOpInit::get(BinOpInit::STRCONCAT, L, R, new StringRecTy);
return BO;
}
return 0;
}
- return ListInit::Create(Elements, new ListRecTy(Ty));
+ return ListInit::get(Elements, new ListRecTy(Ty));
}
const Init *ListRecTy::convertValue(const TypedInit *TI) {
const Init *L = BO->getOperand()->convertInitializerTo(this);
if (L == 0) return 0;
if (L != BO->getOperand())
- return UnOpInit::Create(UnOpInit::CAST, L, new DagRecTy);
+ return UnOpInit::get(UnOpInit::CAST, L, new DagRecTy);
return BO;
}
return 0;
const Init *R = BO->getRHS()->convertInitializerTo(this);
if (L == 0 || R == 0) return 0;
if (L != BO->getLHS() || R != BO->getRHS())
- return BinOpInit::Create(BinOpInit::CONCAT, L, R, new DagRecTy);
+ return BinOpInit::get(BinOpInit::CONCAT, L, R, new DagRecTy);
return BO;
}
return 0;
void Init::dump() const { return print(errs()); }
-const UnsetInit *UnsetInit::Create() {
+const UnsetInit *UnsetInit::get() {
FoldingSetNodeID ID;
ID.AddInteger(initUnset);
return I;
}
-const BitInit *BitInit::Create(bool V) {
+const BitInit *BitInit::get(bool V) {
FoldingSetNodeID ID;
ID.AddInteger(initBit);
ID.AddBoolean(V);
NewBits[i] = getBit(Bits[i]);
}
- return BitsInit::Create(NewBits.begin(), NewBits.end());
+ return BitsInit::get(NewBits.begin(), NewBits.end());
}
std::string BitsInit::getAsString() const {
}
if (Changed)
- return BitsInit::Create(Bits.begin(), Bits.end());
+ return BitsInit::get(Bits.begin(), Bits.end());
return this;
}
-const IntInit *IntInit::Create(int64_t V) {
+const IntInit *IntInit::get(int64_t V) {
FoldingSetNodeID ID;
ID.AddInteger(initInt);
ID.AddInteger(V);
if (Bits[i] >= 64)
return 0;
- NewBits[i] = BitInit::Create(Value & (INT64_C(1) << Bits[i]));
+ NewBits[i] = BitInit::get(Value & (INT64_C(1) << Bits[i]));
}
- return BitsInit::Create(NewBits.begin(), NewBits.end());
+ return BitsInit::get(NewBits.begin(), NewBits.end());
}
-const StringInit *StringInit::Create(const std::string &V) {
+const StringInit *StringInit::get(const std::string &V) {
FoldingSetNodeID ID;
ID.AddInteger(initString);
ID.AddString(V);
return I;
}
-const CodeInit *CodeInit::Create(const std::string &V) {
+const CodeInit *CodeInit::get(const std::string &V) {
FoldingSetNodeID ID;
ID.AddInteger(initCode);
ID.AddString(V);
return I;
}
-const ListInit *ListInit::Create(std::vector<const Init *> &Vs, RecTy *EltTy) {
+const ListInit *ListInit::get(std::vector<const Init *> &Vs, RecTy *EltTy) {
FoldingSetNodeID ID;
ID.AddInteger(initList);
ID.AddString(EltTy->getAsString());
return 0;
Vals.push_back(getElement(Elements[i]));
}
- return ListInit::Create(Vals, getType());
+ return ListInit::get(Vals, getType());
}
Record *ListInit::getElementAsRecord(unsigned i) const {
}
if (Changed)
- return ListInit::Create(Resolved, getType());
+ return ListInit::get(Resolved, getType());
return this;
}
return 0;
}
-const UnOpInit *UnOpInit::Create(UnaryOp opc, const Init *lhs, RecTy *Type) {
+const UnOpInit *UnOpInit::get(UnaryOp opc, const Init *lhs, RecTy *Type) {
FoldingSetNodeID ID;
ID.AddInteger(initUnOp);
ID.AddInteger(opc);
const DefInit *LHSd = dynamic_cast<const DefInit*>(LHS);
if (LHSd) {
- return StringInit::Create(LHSd->getDef()->getName());
+ return StringInit::get(LHSd->getDef()->getName());
}
} else {
const StringInit *LHSs = dynamic_cast<const StringInit*>(LHS);
if (const RecordVal *RV = CurRec->getValue(Name)) {
if (RV->getType() != getType())
throw "type mismatch in cast";
- return VarInit::Create(Name, RV->getType());
+ return VarInit::get(Name, RV->getType());
}
std::string TemplateArgName = CurRec->getName()+":"+Name;
if (RV->getType() != getType())
throw "type mismatch in cast";
- return VarInit::Create(TemplateArgName, RV->getType());
+ return VarInit::get(TemplateArgName, RV->getType());
}
}
if (RV->getType() != getType())
throw "type mismatch in cast";
- return VarInit::Create(MCName, RV->getType());
+ return VarInit::get(MCName, RV->getType());
}
}
if (Record *D = (CurRec->getRecords()).getDef(Name))
- return DefInit::Create(D);
+ return DefInit::get(D);
throw TGError(CurRec->getLoc(), "Undefined reference:'" + Name + "'\n");
}
assert(0 && "Empty list in cdr");
return 0;
}
- const ListInit *Result = ListInit::Create(LHSl->begin()+1, LHSl->end(),
+ const ListInit *Result = ListInit::get(LHSl->begin()+1, LHSl->end(),
LHSl->getType());
return Result;
}
const ListInit *LHSl = dynamic_cast<const ListInit*>(LHS);
if (LHSl) {
if (LHSl->getSize() == 0) {
- return IntInit::Create(1);
+ return IntInit::get(1);
} else {
- return IntInit::Create(0);
+ return IntInit::get(0);
}
}
const StringInit *LHSs = dynamic_cast<const StringInit*>(LHS);
if (LHSs) {
if (LHSs->getValue().empty()) {
- return IntInit::Create(1);
+ return IntInit::get(1);
} else {
- return IntInit::Create(0);
+ return IntInit::get(0);
}
}
const Init *lhs = LHS->resolveReferences(R, RV);
if (LHS != lhs)
- return (UnOpInit::Create(getOpcode(), lhs, getType()))->Fold(&R, 0);
+ return (UnOpInit::get(getOpcode(), lhs, getType()))->Fold(&R, 0);
return Fold(&R, 0);
}
return Result + "(" + LHS->getAsString() + ")";
}
-const BinOpInit *BinOpInit::Create(BinaryOp opc, const Init *lhs,
+const BinOpInit *BinOpInit::get(BinaryOp opc, const Init *lhs,
const Init *rhs, RecTy *Type) {
FoldingSetNodeID ID;
ID.AddInteger(initBinOp);
Args.push_back(RHSs->getArg(i));
ArgNames.push_back(RHSs->getArgName(i));
}
- return DagInit::Create(LHSs->getOperator(), "", Args, ArgNames);
+ return DagInit::get(LHSs->getOperator(), "", Args, ArgNames);
}
break;
}
const StringInit *LHSs = dynamic_cast<const StringInit*>(LHS);
const StringInit *RHSs = dynamic_cast<const StringInit*>(RHS);
if (LHSs && RHSs)
- return StringInit::Create(LHSs->getValue() + RHSs->getValue());
+ return StringInit::get(LHSs->getValue() + RHSs->getValue());
break;
}
case EQ: {
dynamic_cast<const IntInit*>(RHS->convertInitializerTo(new IntRecTy()));
if (L && R)
- return IntInit::Create(L->getValue() == R->getValue());
+ return IntInit::get(L->getValue() == R->getValue());
const StringInit *LHSs = dynamic_cast<const StringInit*>(LHS);
const StringInit *RHSs = dynamic_cast<const StringInit*>(RHS);
// Make sure we've resolved
if (LHSs && RHSs)
- return IntInit::Create(LHSs->getValue() == RHSs->getValue());
+ return IntInit::get(LHSs->getValue() == RHSs->getValue());
break;
}
case SRA: Result = LHSv >> RHSv; break;
case SRL: Result = (uint64_t)LHSv >> (uint64_t)RHSv; break;
}
- return IntInit::Create(Result);
+ return IntInit::get(Result);
}
break;
}
const Init *rhs = RHS->resolveReferences(R, RV);
if (LHS != lhs || RHS != rhs)
- return (BinOpInit::Create(getOpcode(), lhs, rhs, getType()))->Fold(&R, 0);
+ return (BinOpInit::get(getOpcode(), lhs, rhs, getType()))->Fold(&R, 0);
return Fold(&R, 0);
}
return Result + "(" + LHS->getAsString() + ", " + RHS->getAsString() + ")";
}
-const TernOpInit *TernOpInit::Create(TernaryOp opc, const Init *lhs,
+const TernOpInit *TernOpInit::get(TernaryOp opc, const Init *lhs,
const Init *mhs, const Init *rhs,
RecTy *Type) {
FoldingSetNodeID ID;
args.push_back(std::make_pair(Arg, ArgName));
}
- return DagInit::Create(Val, "", args);
+ return DagInit::get(Val, "", args);
}
if (MHSl) {
std::vector<const Init *> NewOperands;
*li = NewItem;
}
}
- return ListInit::Create(NewList, MHSl->getType());
+ return ListInit::get(NewList, MHSl->getType());
}
}
return 0;
if (LHSd->getAsString() == RHSd->getAsString()) {
Val = MHSd->getDef();
}
- return DefInit::Create(Val);
+ return DefInit::get(Val);
}
if (RHSv) {
std::string Val = RHSv->getName();
if (LHSv->getAsString() == RHSv->getAsString()) {
Val = MHSv->getName();
}
- return VarInit::Create(Val, getType());
+ return VarInit::get(Val, getType());
}
if (RHSs) {
std::string Val = RHSs->getValue();
idx = found + MHSs->getValue().size();
} while (found != std::string::npos);
- return StringInit::Create(Val);
+ return StringInit::get(Val);
}
}
break;
// Short-circuit
if (Value->getValue()) {
const Init *mhs = MHS->resolveReferences(R, RV);
- return (TernOpInit::Create(getOpcode(), lhs, mhs,
+ return (TernOpInit::get(getOpcode(), lhs, mhs,
RHS, getType()))->Fold(&R, 0);
} else {
const Init *rhs = RHS->resolveReferences(R, RV);
- return (TernOpInit::Create(getOpcode(), lhs, MHS,
+ return (TernOpInit::get(getOpcode(), lhs, MHS,
rhs, getType()))->Fold(&R, 0);
}
}
const Init *rhs = RHS->resolveReferences(R, RV);
if (LHS != lhs || MHS != mhs || RHS != rhs)
- return (TernOpInit::Create(getOpcode(), lhs, mhs, rhs, getType()))->
+ return (TernOpInit::get(getOpcode(), lhs, mhs, rhs, getType()))->
Fold(&R, 0);
return Fold(&R, 0);
}
if (Bits[i] >= NumBits) {
return 0;
}
- NewBits[i] = VarBitInit::Create(this, Bits[i]);
+ NewBits[i] = VarBitInit::get(this, Bits[i]);
}
- return BitsInit::Create(NewBits.begin(), NewBits.end());
+ return BitsInit::get(NewBits.begin(), NewBits.end());
}
const Init *
if (T == 0) return 0; // Cannot subscript a non-list variable.
if (Elements.size() == 1)
- return VarListElementInit::Create(this, Elements[0]);
+ return VarListElementInit::get(this, Elements[0]);
std::vector<const Init*> ListInits;
ListInits.reserve(Elements.size());
for (unsigned i = 0, e = Elements.size(); i != e; ++i)
- ListInits.push_back(VarListElementInit::Create(this, Elements[i]));
- return ListInit::Create(ListInits, T);
+ ListInits.push_back(VarListElementInit::get(this, Elements[i]));
+ return ListInit::get(ListInits, T);
}
-const VarInit *VarInit::Create(const std::string &VN, RecTy *T) {
+const VarInit *VarInit::get(const std::string &VN, RecTy *T) {
FoldingSetNodeID ID;
ID.AddInteger(initVar);
ID.AddString(VN);
if (!LI) {
const VarInit *VI = dynamic_cast<const VarInit*>(RV->getValue());
assert(VI && "Invalid list element!");
- return VarListElementInit::Create(VI, Elt);
+ return VarListElementInit::get(VI, Elt);
}
if (Elt >= LI->getSize())
return this;
}
-const VarBitInit *VarBitInit::Create(const TypedInit *T, unsigned B) {
+const VarBitInit *VarBitInit::get(const TypedInit *T, unsigned B) {
FoldingSetNodeID ID;
ID.AddInteger(initVarBit);
ID.AddPointer(T);
return this;
}
-const VarListElementInit *VarListElementInit::Create(const TypedInit *T,
+const VarListElementInit *VarListElementInit::get(const TypedInit *T,
unsigned E) {
FoldingSetNodeID ID;
ID.AddInteger(initVarListElement);
return 0;
}
-const DefInit *DefInit::Create(Record *D) {
+const DefInit *DefInit::get(Record *D) {
FoldingSetNodeID ID;
ID.AddInteger(initDef);
ID.AddString(D->getName());
return Def->getName();
}
-const FieldInit *FieldInit::Create(const Init *R, const std::string &FN) {
+const FieldInit *FieldInit::get(const Init *R, const std::string &FN) {
FoldingSetNodeID ID;
ID.AddInteger(initField);
ID.AddPointer(R);
}
if (NewRec != Rec) {
- return FieldInit::Create(NewRec, FieldName);
+ return FieldInit::get(NewRec, FieldName);
}
return this;
}
const DagInit *
-DagInit::Create(const Init *V, const std::string &VN,
+DagInit::get(const Init *V, const std::string &VN,
const std::vector<std::pair<const Init*, std::string> > &args) {
FoldingSetNodeID ID;
ID.AddInteger(initDag);
}
const DagInit *
-DagInit::Create(const Init *V, const std::string &VN,
+DagInit::get(const Init *V, const std::string &VN,
const std::vector<const Init *> &args,
const std::vector<std::string> &argNames) {
FoldingSetNodeID ID;
const Init *Op = Val->resolveReferences(R, RV);
if (Args != NewArgs || Op != Val)
- return DagInit::Create(Op, ValName, NewArgs, ArgNames);
+ return DagInit::get(Op, ValName, NewArgs, ArgNames);
return this;
}
RecordVal::RecordVal(const std::string &N, RecTy *T, unsigned P)
: Name(N), Ty(T), Prefix(P) {
- Value = Ty->convertValue(UnsetInit::Create());
+ Value = Ty->convertValue(UnsetInit::get());
assert(Value && "Cannot create unset value for current type!");
}
UnsetInit &operator=(const UnsetInit &Other); // Do not define.
public:
- static const UnsetInit *Create();
+ static const UnsetInit *get();
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
BitInit &operator=(BitInit &Other); // Do not define.
public:
- static const BitInit *Create(bool V);
+ static const BitInit *get(bool V);
bool getValue() const { return Value; }
public:
template<typename InputIterator>
- static const BitsInit *Create(InputIterator Start, InputIterator End) {
+ static const BitsInit *get(InputIterator Start, InputIterator End) {
FoldingSetNodeID ID;
ID.AddInteger(initBits);
ID.AddInteger(std::distance(Start, End));
IntInit &operator=(const IntInit &Other); // Do note define.
public:
- static const IntInit *Create(int64_t V);
+ static const IntInit *get(int64_t V);
int64_t getValue() const { return Value; }
StringInit &operator=(const StringInit &Other); // Do not define.
public:
- static const StringInit *Create(const std::string &V);
+ static const StringInit *get(const std::string &V);
const std::string &getValue() const { return Value; }
CodeInit &operator=(const CodeInit &Other); // Do not define.
public:
- static const CodeInit *Create(const std::string &V);
+ static const CodeInit *get(const std::string &V);
const std::string &getValue() const { return Value; }
ListInit &operator=(const ListInit &Other); // Do not define.
public:
- static const ListInit *Create(std::vector<const Init*> &Vs, RecTy *EltTy);
+ static const ListInit *get(std::vector<const Init*> &Vs, RecTy *EltTy);
template<typename InputIterator>
- static const ListInit *Create(InputIterator Start, InputIterator End,
- RecTy *EltTy) {
+ static const ListInit *get(InputIterator Start, InputIterator End,
+ RecTy *EltTy) {
FoldingSetNodeID ID;
ID.AddInteger(initList);
ID.AddString(EltTy->getAsString());
UnOpInit &operator=(const UnOpInit &Other); // Do not define.
public:
- static const UnOpInit *Create(UnaryOp opc, const Init *lhs, RecTy *Type);
+ static const UnOpInit *get(UnaryOp opc, const Init *lhs, RecTy *Type);
// Clone - Clone this operator, replacing arguments with the new list
virtual const OpInit *clone(std::vector<const Init *> &Operands) const {
assert(Operands.size() == 1 &&
"Wrong number of operands for unary operation");
- return UnOpInit::Create(getOpcode(), *Operands.begin(), getType());
+ return UnOpInit::get(getOpcode(), *Operands.begin(), getType());
}
int getNumOperands() const { return 1; }
BinOpInit &operator=(const BinOpInit &Other); // Do not define.
public:
- static const BinOpInit *Create(BinaryOp opc, const Init *lhs, const Init *rhs,
- RecTy *Type);
+ static const BinOpInit *get(BinaryOp opc, const Init *lhs, const Init *rhs,
+ RecTy *Type);
// Clone - Clone this operator, replacing arguments with the new list
virtual const OpInit *clone(std::vector<const Init *> &Operands) const {
assert(Operands.size() == 2 &&
"Wrong number of operands for binary operation");
- return BinOpInit::Create(getOpcode(), Operands[0], Operands[1], getType());
+ return BinOpInit::get(getOpcode(), Operands[0], Operands[1], getType());
}
int getNumOperands() const { return 2; }
TernOpInit &operator=(const TernOpInit &Other); // Do not define.
public:
- static const TernOpInit *Create(TernaryOp opc, const Init *lhs,
- const Init *mhs, const Init *rhs,
- RecTy *Type);
+ static const TernOpInit *get(TernaryOp opc, const Init *lhs,
+ const Init *mhs, const Init *rhs,
+ RecTy *Type);
// Clone - Clone this operator, replacing arguments with the new list
virtual const OpInit *clone(std::vector<const Init *> &Operands) const {
assert(Operands.size() == 3 &&
"Wrong number of operands for ternary operation");
- return TernOpInit::Create(getOpcode(), Operands[0], Operands[1],
- Operands[2], getType());
+ return TernOpInit::get(getOpcode(), Operands[0], Operands[1],
+ Operands[2], getType());
}
int getNumOperands() const { return 3; }
VarInit &operator=(const VarInit &Other); // Do not define.
public:
- static const VarInit *Create(const std::string &VN, RecTy *T);
- static const VarInit *Create(const Init *VN, RecTy *T);
+ static const VarInit *get(const std::string &VN, RecTy *T);
+ static const VarInit *get(const Init *VN, RecTy *T);
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
VarBitInit &operator=(const VarBitInit &Other); // Do not define.
public:
- static const VarBitInit *Create(const TypedInit *T, unsigned B);
+ static const VarBitInit *get(const TypedInit *T, unsigned B);
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
// define.
public:
- static const VarListElementInit *Create(const TypedInit *T, unsigned E);
+ static const VarListElementInit *get(const TypedInit *T, unsigned E);
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
DefInit &operator=(const DefInit &Other); // Do not define.
public:
- static const DefInit *Create(Record *D);
+ static const DefInit *get(Record *D);
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
FieldInit &operator=(const FieldInit &Other); // Do not define.
public:
- static const FieldInit *Create(const Init *R, const std::string &FN);
- static const FieldInit *Create(const Init *R, const Init *FN);
+ static const FieldInit *get(const Init *R, const std::string &FN);
+ static const FieldInit *get(const Init *R, const Init *FN);
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
DagInit &operator=(const DagInit &Other); // Do not define.
public:
- static const DagInit *Create(const Init *V, const std::string &VN,
- const std::vector<
- std::pair<const Init*, std::string> > &args);
- static const DagInit *Create(const Init *V, const std::string &VN,
- const std::vector<const Init*> &args,
- const std::vector<std::string> &argNames);
+ static const DagInit *get(const Init *V, const std::string &VN,
+ const std::vector<
+ std::pair<const Init*, std::string> > &args);
+ static const DagInit *get(const Init *V, const std::string &VN,
+ const std::vector<const Init*> &args,
+ const std::vector<std::string> &argNames);
virtual const Init *convertInitializerTo(RecTy *Ty) const {
return Ty->convertValue(this);
if (NewBits[i] == 0)
NewBits[i] = CurVal->getBit(i);
- V = BitsInit::Create(NewBits.begin(), NewBits.end());
+ V = BitsInit::get(NewBits.begin(), NewBits.end());
}
if (RV->setValue(V))
const std::string &Name, SMLoc NameLoc) {
if (CurRec) {
if (const RecordVal *RV = CurRec->getValue(Name))
- return VarInit::Create(Name, RV->getType());
+ return VarInit::get(Name, RV->getType());
std::string TemplateArgName = CurRec->getName()+":"+Name;
if (CurRec->isTemplateArg(TemplateArgName)) {
const RecordVal *RV = CurRec->getValue(TemplateArgName);
assert(RV && "Template arg doesn't exist??");
- return VarInit::Create(TemplateArgName, RV->getType());
+ return VarInit::get(TemplateArgName, RV->getType());
}
}
if (CurMultiClass->Rec.isTemplateArg(MCName)) {
const RecordVal *RV = CurMultiClass->Rec.getValue(MCName);
assert(RV && "Template arg doesn't exist??");
- return VarInit::Create(MCName, RV->getType());
+ return VarInit::get(MCName, RV->getType());
}
}
if (Record *D = Records.getDef(Name))
- return DefInit::Create(D);
+ return DefInit::get(D);
Error(NameLoc, "Variable not defined: '" + Name + "'");
return 0;
return 0;
}
Lex.Lex(); // eat the ')'
- return (UnOpInit::Create(Code, LHS, Type))->Fold(CurRec, CurMultiClass);
+ return (UnOpInit::get(Code, LHS, Type))->Fold(CurRec, CurMultiClass);
}
case tgtok::XConcat:
if (Code == BinOpInit::STRCONCAT) {
while (InitList.size() > 2) {
const Init *RHS = InitList.pop_back_val();
- RHS = (BinOpInit::Create(Code, InitList.back(), RHS, Type))
+ RHS = (BinOpInit::get(Code, InitList.back(), RHS, Type))
->Fold(CurRec, CurMultiClass);
InitList.back() = RHS;
}
}
if (InitList.size() == 2)
- return (BinOpInit::Create(Code, InitList[0], InitList[1], Type))
+ return (BinOpInit::get(Code, InitList[0], InitList[1], Type))
->Fold(CurRec, CurMultiClass);
Error(OpLoc, "expected two operands to operator");
break;
}
}
- return (TernOpInit::Create(Code, LHS, MHS, RHS, Type))->Fold(CurRec,
+ return (TernOpInit::get(Code, LHS, MHS, RHS, Type))->Fold(CurRec,
CurMultiClass);
}
}
const Init *R = 0;
switch (Lex.getCode()) {
default: TokError("Unknown token when parsing a value"); break;
- case tgtok::IntVal: R = IntInit::Create(Lex.getCurIntVal()); Lex.Lex(); break;
+ case tgtok::IntVal: R = IntInit::get(Lex.getCurIntVal()); Lex.Lex(); break;
case tgtok::StrVal: {
std::string Val = Lex.getCurStrVal();
Lex.Lex();
Lex.Lex();
}
- R = StringInit::Create(Val);
+ R = StringInit::get(Val);
break;
}
case tgtok::CodeFragment:
- R = CodeInit::Create(Lex.getCurStrVal());
+ R = CodeInit::get(Lex.getCurStrVal());
Lex.Lex();
break;
case tgtok::question:
- R = UnsetInit::Create();
+ R = UnsetInit::get();
Lex.Lex();
break;
case tgtok::Id: {
Records.addDef(NewRec);
// The result of the expression is a reference to the new record.
- return DefInit::Create(NewRec);
+ return DefInit::get(NewRec);
}
case tgtok::l_brace: { // Value ::= '{' ValueList '}'
SMLoc BraceLoc = Lex.getLoc();
}
NewBits[Vals.size()-i-1] = Bit;
}
- return BitsInit::Create(NewBits.begin(), NewBits.end());
+ return BitsInit::get(NewBits.begin(), NewBits.end());
}
case tgtok::l_square: { // Value ::= '[' ValueList ']'
Lex.Lex(); // eat the '['
DeducedEltTy = EltTy;
}
- return ListInit::Create(Vals, DeducedEltTy);
+ return ListInit::get(Vals, DeducedEltTy);
}
case tgtok::l_paren: { // Value ::= '(' IDValue DagArgList ')'
Lex.Lex(); // eat the '('
}
Lex.Lex(); // eat the ')'
- return DagInit::Create(Operator, OperatorName, DagArgs);
+ return DagInit::get(Operator, OperatorName, DagArgs);
}
case tgtok::XHead:
Result->getAsString() + "'");
return 0;
}
- Result = FieldInit::Create(Result, Lex.getCurStrVal());
+ Result = FieldInit::get(Result, Lex.getCurStrVal());
Lex.Lex(); // eat field name
break;
}