Lines Matching refs:Init

287 class Init {
343 explicit Init(InitKind K, uint8_t Opc = 0) : Kind(K), Opc(Opc) {} in Kind()
346 Init(const Init &) = delete;
347 Init &operator=(const Init &) = delete;
348 virtual ~Init() = default;
376 virtual Init *getCastTo(RecTy *Ty) const = 0;
381 virtual Init *convertInitializerTo(RecTy *Ty) const = 0;
387 virtual Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const { in convertInitializerBitRange()
395 virtual Init *convertInitListSlice(ArrayRef<unsigned> Elements) const { in convertInitListSlice()
410 virtual Init *resolveReferences(Resolver &R) const { in resolveReferences()
411 return const_cast<Init *>(this); in resolveReferences()
416 virtual Init *getBit(unsigned Bit) const = 0;
419 inline raw_ostream &operator<<(raw_ostream &OS, const Init &I) {
425 class TypedInit : public Init {
430 : Init(K, Opc), Ty(T) {} in Init() function
436 static bool classof(const Init *I) { in classof()
443 Init *getCastTo(RecTy *Ty) const override;
444 Init *convertInitializerTo(RecTy *Ty) const override;
446 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
447 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
457 class UnsetInit : public Init {
458 UnsetInit() : Init(IK_UnsetInit) {} in UnsetInit()
464 static bool classof(const Init *I) { in classof()
470 Init *getCastTo(RecTy *Ty) const override;
471 Init *convertInitializerTo(RecTy *Ty) const override;
473 Init *getBit(unsigned Bit) const override { in getBit()
492 static bool classof(const Init *I) { in classof()
500 Init *convertInitializerTo(RecTy *Ty) const override;
502 Init *getBit(unsigned Bit) const override { in getBit()
514 public TrailingObjects<BitsInit, Init *> {
527 static bool classof(const Init *I) { in classof()
531 static BitsInit *get(ArrayRef<Init *> Range);
537 Init *convertInitializerTo(RecTy *Ty) const override;
538 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
555 Init *resolveReferences(Resolver &R) const override;
557 Init *getBit(unsigned Bit) const override { in getBit()
559 return getTrailingObjects<Init *>()[Bit]; in getBit()
574 static bool classof(const Init *I) { in classof()
582 Init *convertInitializerTo(RecTy *Ty) const override;
583 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
588 Init *getBit(unsigned Bit) const override { in getBit()
604 static bool classof(const Init *I) { in classof()
612 Init *convertInitializerTo(RecTy *Ty) const override;
619 Init *getBit(unsigned Bit) const override { in getBit()
636 static bool classof(const Init *I) { in classof()
645 Init *convertInitializerTo(RecTy *Ty) const override;
654 Init *getBit(unsigned Bit) const override { in getBit()
662 public TrailingObjects<ListInit, Init *> {
666 using const_iterator = Init *const *;
679 static bool classof(const Init *I) { in classof()
682 static ListInit *get(ArrayRef<Init *> Range, RecTy *EltTy);
686 Init *getElement(unsigned i) const { in getElement()
688 return getTrailingObjects<Init *>()[i]; in getElement()
696 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
698 Init *convertInitializerTo(RecTy *Ty) const override;
705 Init *resolveReferences(Resolver &R) const override;
710 ArrayRef<Init*> getValues() const { in getValues()
711 return makeArrayRef(getTrailingObjects<Init *>(), NumValues); in getValues()
714 const_iterator begin() const { return getTrailingObjects<Init *>(); } in begin()
720 Init *getBit(unsigned Bit) const override { in getBit()
736 static bool classof(const Init *I) { in classof()
742 virtual OpInit *clone(ArrayRef<Init *> Operands) const = 0;
745 virtual Init *getOperand(unsigned i) const = 0;
747 Init *getBit(unsigned Bit) const override;
757 Init *LHS;
759 UnOpInit(UnaryOp opc, Init *lhs, RecTy *Type) in UnOpInit()
766 static bool classof(const Init *I) { in classof()
770 static UnOpInit *get(UnaryOp opc, Init *lhs, RecTy *Type);
775 OpInit *clone(ArrayRef<Init *> Operands) const override { in clone()
783 Init *getOperand(unsigned i) const override { in getOperand()
789 Init *getOperand() const { return LHS; } in getOperand()
793 Init *Fold(Record *CurRec, bool IsFinal = false) const;
795 Init *resolveReferences(Resolver &R) const override;
808 Init *LHS, *RHS;
810 BinOpInit(BinaryOp opc, Init *lhs, Init *rhs, RecTy *Type) : in BinOpInit()
817 static bool classof(const Init *I) { in classof()
821 static BinOpInit *get(BinaryOp opc, Init *lhs, Init *rhs,
823 static Init *getStrConcat(Init *lhs, Init *rhs);
824 static Init *getListConcat(TypedInit *lhs, Init *rhs);
825 static Init *getListSplat(TypedInit *lhs, Init *rhs);
830 OpInit *clone(ArrayRef<Init *> Operands) const override { in clone()
837 Init *getOperand(unsigned i) const override { in getOperand()
846 Init *getLHS() const { return LHS; } in getLHS()
847 Init *getRHS() const { return RHS; } in getRHS()
851 Init *Fold(Record *CurRec) const;
853 Init *resolveReferences(Resolver &R) const override;
864 Init *LHS, *MHS, *RHS;
866 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs, in TernOpInit()
874 static bool classof(const Init *I) { in classof()
878 static TernOpInit *get(TernaryOp opc, Init *lhs,
879 Init *mhs, Init *rhs,
885 OpInit *clone(ArrayRef<Init *> Operands) const override { in clone()
893 Init *getOperand(unsigned i) const override { in getOperand()
903 Init *getLHS() const { return LHS; } in getLHS()
904 Init *getMHS() const { return MHS; } in getMHS()
905 Init *getRHS() const { return RHS; } in getRHS()
909 Init *Fold(Record *CurRec) const;
915 Init *resolveReferences(Resolver &R) const override;
924 public TrailingObjects<CondOpInit, Init *> {
932 size_t numTrailingObjects(OverloadToken<Init *>) const { in numTrailingObjects() argument
940 static bool classof(const Init *I) { in classof()
944 static CondOpInit *get(ArrayRef<Init*> C, ArrayRef<Init*> V,
953 Init *getCond(unsigned Num) const { in getCond()
955 return getTrailingObjects<Init *>()[Num]; in getCond()
958 Init *getVal(unsigned Num) const { in getVal()
960 return getTrailingObjects<Init *>()[Num+NumConds]; in getVal()
963 ArrayRef<Init *> getConds() const { in getConds()
964 return makeArrayRef(getTrailingObjects<Init *>(), NumConds); in getConds()
967 ArrayRef<Init *> getVals() const { in getVals()
968 return makeArrayRef(getTrailingObjects<Init *>()+NumConds, NumConds); in getVals()
971 Init *Fold(Record *CurRec) const;
973 Init *resolveReferences(Resolver &R) const override;
979 using const_case_iterator = SmallVectorImpl<Init*>::const_iterator;
980 using const_val_iterator = SmallVectorImpl<Init*>::const_iterator;
994 Init *getBit(unsigned Bit) const override;
1000 Init *Start;
1001 Init *List;
1002 Init *A;
1003 Init *B;
1004 Init *Expr;
1006 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type) in FoldOpInit()
1014 static bool classof(const Init *I) { return I->getKind() == IK_FoldOpInit; } in classof()
1016 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
1023 Init *Fold(Record *CurRec) const;
1027 Init *resolveReferences(Resolver &R) const override;
1029 Init *getBit(unsigned Bit) const override;
1038 Init *Expr;
1040 IsAOpInit(RecTy *CheckType, Init *Expr) in IsAOpInit()
1048 static bool classof(const Init *I) { return I->getKind() == IK_IsAOpInit; } in classof()
1050 static IsAOpInit *get(RecTy *CheckType, Init *Expr);
1056 Init *Fold() const;
1060 Init *resolveReferences(Resolver &R) const override;
1062 Init *getBit(unsigned Bit) const override;
1069 Init *VarName;
1071 explicit VarInit(Init *VN, RecTy *T) in VarInit()
1078 static bool classof(const Init *I) { in classof()
1083 static VarInit *get(Init *VN, RecTy *T);
1086 Init *getNameInit() const { return VarName; } in getNameInit()
1097 Init *resolveReferences(Resolver &R) const override;
1099 Init *getBit(unsigned Bit) const override;
1122 static bool classof(const Init *I) { in classof()
1128 Init *getBitVar() const { return TI; } in getBitVar()
1132 Init *resolveReferences(Resolver &R) const override;
1134 Init *getBit(unsigned B) const override { in getBit()
1158 static bool classof(const Init *I) { in classof()
1168 Init *resolveReferences(Resolver &R) const override;
1170 Init *getBit(unsigned Bit) const override;
1185 static bool classof(const Init *I) { in classof()
1191 Init *convertInitializerTo(RecTy *Ty) const override;
1202 Init *getBit(unsigned Bit) const override { in getBit()
1210 public TrailingObjects<VarDefInit, Init *> {
1227 static bool classof(const Init *I) { in classof()
1230 static VarDefInit *get(Record *Class, ArrayRef<Init *> Args);
1234 Init *resolveReferences(Resolver &R) const override;
1235 Init *Fold() const;
1239 Init *getArg(unsigned i) const { in getArg()
1241 return getTrailingObjects<Init *>()[i]; in getArg()
1244 using const_iterator = Init *const *;
1246 const_iterator args_begin() const { return getTrailingObjects<Init *>(); } in args_begin()
1252 ArrayRef<Init *> args() const { return makeArrayRef(args_begin(), NumArgs); } in args()
1254 Init *getBit(unsigned Bit) const override { in getBit()
1261 Init *Rec; // Record we are referring to
1264 FieldInit(Init *R, StringInit *FN) in FieldInit()
1280 static bool classof(const Init *I) { in classof()
1284 static FieldInit *get(Init *R, StringInit *FN);
1286 Init *getRecord() const { return Rec; } in getRecord()
1289 Init *getBit(unsigned Bit) const override;
1291 Init *resolveReferences(Resolver &R) const override;
1292 Init *Fold(Record *CurRec) const;
1303 public TrailingObjects<DagInit, Init *, StringInit *> {
1306 Init *Val;
1311 DagInit(Init *V, StringInit *VN, unsigned NumArgs, unsigned NumArgNames) in DagInit()
1315 size_t numTrailingObjects(OverloadToken<Init *>) const { return NumArgs; } in numTrailingObjects() argument
1321 static bool classof(const Init *I) { in classof()
1325 static DagInit *get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1327 static DagInit *get(Init *V, StringInit *VN,
1328 ArrayRef<std::pair<Init*, StringInit*>> Args);
1332 Init *getOperator() const { return Val; } in getOperator()
1343 Init *getArg(unsigned Num) const { in getArg()
1345 return getTrailingObjects<Init *>()[Num]; in getArg()
1354 StringInit *Init = getArgName(Num); in getArgNameStr() local
1355 return Init ? Init->getValue() : StringRef(); in getArgNameStr()
1358 ArrayRef<Init *> getArgs() const { in getArgs()
1359 return makeArrayRef(getTrailingObjects<Init *>(), NumArgs); in getArgs()
1366 Init *resolveReferences(Resolver &R) const override;
1371 using const_arg_iterator = SmallVectorImpl<Init*>::const_iterator;
1386 Init *getBit(unsigned Bit) const override { in getBit()
1398 Init *Name;
1400 Init *Value;
1403 RecordVal(Init *N, RecTy *T, bool P);
1406 Init *getNameInit() const { return Name; } in getNameInit()
1414 Init *getValue() const { return Value; } in getValue()
1416 bool setValue(Init *V);
1430 Init *Name;
1434 SmallVector<Init *, 0> TemplateArgs;
1456 explicit Record(Init *N, ArrayRef<SMLoc> locs, RecordKeeper &records,
1482 Init *getNameInit() const { in getNameInit()
1490 void setName(Init *Name); // Also updates RecordKeeper.
1503 ArrayRef<Init *> getTemplateArgs() const { in getTemplateArgs()
1516 bool isTemplateArg(Init *Name) const { in isTemplateArg()
1517 for (Init *TA : TemplateArgs) in isTemplateArg()
1522 const RecordVal *getValue(const Init *Name) const { in getValue()
1532 RecordVal *getValue(const Init *Name) { in getValue()
1540 void addTemplateArg(Init *Name) { in addTemplateArg()
1550 void removeValue(Init *Name) { in removeValue()
1624 Init *getValueInit(StringRef FieldName) const;
1700 std::map<std::string, Init *, std::less<>> ExtraGlobals;
1717 Init *getGlobal(StringRef Name) const { in getGlobal()
1738 void addExtraGlobal(StringRef Name, Init *I) { in addExtraGlobal()
1745 Init *getNewAnonymousName();
1882 virtual Init *resolve(Init *VarName) = 0;
1900 Init *V;
1904 MappedValue(Init *V, bool Resolved) : V(V), Resolved(Resolved) {} in MappedValue()
1907 DenseMap<Init *, MappedValue> Map;
1912 void set(Init *Key, Init *Value) { Map[Key] = {Value, false}; } in set()
1914 Init *resolve(Init *VarName) override;
1919 DenseMap<Init *, Init *> Cache;
1920 SmallVector<Init *, 4> Stack;
1925 Init *resolve(Init *VarName) override;
1942 Init *resolve(Init *VarName) override { in resolve()
1952 DenseSet<Init *> Shadowed;
1960 void addShadow(Init *Key) { Shadowed.insert(Key); } in addShadow()
1962 Init *resolve(Init *VarName) override { in resolve()
1981 Init *resolve(Init *VarName) override;
1987 Init *VarNameToTrack;
1991 explicit HasReferenceResolver(Init *VarNameToTrack) in HasReferenceResolver()
1996 Init *resolve(Init *VarName) override;