Lines Matching refs:Init

271 class Init {
327 explicit Init(InitKind K, uint8_t Opc = 0) : Kind(K), Opc(Opc) {} in Kind()
330 Init(const Init &) = delete;
331 Init &operator=(const Init &) = delete;
332 virtual ~Init() = default;
358 virtual Init *getCastTo(RecTy *Ty) const = 0;
363 virtual Init *convertInitializerTo(RecTy *Ty) const = 0;
369 virtual Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const { in convertInitializerBitRange()
377 virtual Init *convertInitListSlice(ArrayRef<unsigned> Elements) const { in convertInitListSlice()
392 virtual Init *resolveReferences(Resolver &R) const { in resolveReferences()
393 return const_cast<Init *>(this); in resolveReferences()
397 virtual Init *getBit(unsigned Bit) const = 0;
400 inline raw_ostream &operator<<(raw_ostream &OS, const Init &I) {
406 class TypedInit : public Init {
411 : Init(K, Opc), ValueTy(T) {} in Init() function
417 static bool classof(const Init *I) { in classof()
425 Init *getCastTo(RecTy *Ty) const override;
426 Init *convertInitializerTo(RecTy *Ty) const override;
428 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
429 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
438 class UnsetInit : public Init {
439 UnsetInit() : Init(IK_UnsetInit) {} in UnsetInit()
445 static bool classof(const Init *I) { in classof()
452 Init *getCastTo(RecTy *Ty) const override;
453 Init *convertInitializerTo(RecTy *Ty) const override;
455 Init *getBit(unsigned Bit) const override { in getBit()
478 static bool classof(const Init *I) { in classof()
486 Init *convertInitializerTo(RecTy *Ty) const override;
488 Init *getBit(unsigned Bit) const override { in getBit()
500 public TrailingObjects<BitsInit, Init *> {
513 static bool classof(const Init *I) { in classof()
517 static BitsInit *get(ArrayRef<Init *> Range);
523 Init *convertInitializerTo(RecTy *Ty) const override;
524 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
541 Init *resolveReferences(Resolver &R) const override;
543 Init *getBit(unsigned Bit) const override { in getBit()
545 return getTrailingObjects<Init *>()[Bit]; in getBit()
560 static bool classof(const Init *I) { in classof()
568 Init *convertInitializerTo(RecTy *Ty) const override;
569 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
574 Init *getBit(unsigned Bit) const override { in getBit()
598 static bool classof(const Init *I) { in classof()
612 Init *convertInitializerTo(RecTy *Ty) const override;
627 Init *getBit(unsigned Bit) const override { in getBit()
635 public TrailingObjects<ListInit, Init *> {
639 using const_iterator = Init *const *;
652 static bool classof(const Init *I) { in classof()
655 static ListInit *get(ArrayRef<Init *> Range, RecTy *EltTy);
659 Init *getElement(unsigned i) const { in getElement()
661 return getTrailingObjects<Init *>()[i]; in getElement()
669 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
671 Init *convertInitializerTo(RecTy *Ty) const override;
678 Init *resolveReferences(Resolver &R) const override;
683 ArrayRef<Init*> getValues() const { in getValues()
684 return makeArrayRef(getTrailingObjects<Init *>(), NumValues); in getValues()
687 const_iterator begin() const { return getTrailingObjects<Init *>(); } in begin()
693 Init *getBit(unsigned Bit) const override { in getBit()
709 static bool classof(const Init *I) { in classof()
715 virtual OpInit *clone(ArrayRef<Init *> Operands) const = 0;
718 virtual Init *getOperand(unsigned i) const = 0;
720 Init *getBit(unsigned Bit) const override;
730 Init *LHS;
732 UnOpInit(UnaryOp opc, Init *lhs, RecTy *Type) in UnOpInit()
739 static bool classof(const Init *I) { in classof()
743 static UnOpInit *get(UnaryOp opc, Init *lhs, RecTy *Type);
748 OpInit *clone(ArrayRef<Init *> Operands) const override { in clone()
756 Init *getOperand(unsigned i) const override { in getOperand()
762 Init *getOperand() const { return LHS; } in getOperand()
766 Init *Fold(Record *CurRec, bool IsFinal = false) const;
768 Init *resolveReferences(Resolver &R) const override;
781 Init *LHS, *RHS;
783 BinOpInit(BinaryOp opc, Init *lhs, Init *rhs, RecTy *Type) : in BinOpInit()
790 static bool classof(const Init *I) { in classof()
794 static BinOpInit *get(BinaryOp opc, Init *lhs, Init *rhs,
796 static Init *getStrConcat(Init *lhs, Init *rhs);
797 static Init *getListConcat(TypedInit *lhs, Init *rhs);
802 OpInit *clone(ArrayRef<Init *> Operands) const override { in clone()
809 Init *getOperand(unsigned i) const override { in getOperand()
818 Init *getLHS() const { return LHS; } in getLHS()
819 Init *getRHS() const { return RHS; } in getRHS()
823 Init *Fold(Record *CurRec) const;
825 Init *resolveReferences(Resolver &R) const override;
836 Init *LHS, *MHS, *RHS;
838 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs, in TernOpInit()
846 static bool classof(const Init *I) { in classof()
850 static TernOpInit *get(TernaryOp opc, Init *lhs,
851 Init *mhs, Init *rhs,
857 OpInit *clone(ArrayRef<Init *> Operands) const override { in clone()
865 Init *getOperand(unsigned i) const override { in getOperand()
875 Init *getLHS() const { return LHS; } in getLHS()
876 Init *getMHS() const { return MHS; } in getMHS()
877 Init *getRHS() const { return RHS; } in getRHS()
881 Init *Fold(Record *CurRec) const;
887 Init *resolveReferences(Resolver &R) const override;
896 public TrailingObjects<CondOpInit, Init *> {
904 size_t numTrailingObjects(OverloadToken<Init *>) const { in numTrailingObjects() argument
912 static bool classof(const Init *I) { in classof()
916 static CondOpInit *get(ArrayRef<Init*> C, ArrayRef<Init*> V,
925 Init *getCond(unsigned Num) const { in getCond()
927 return getTrailingObjects<Init *>()[Num]; in getCond()
930 Init *getVal(unsigned Num) const { in getVal()
932 return getTrailingObjects<Init *>()[Num+NumConds]; in getVal()
935 ArrayRef<Init *> getConds() const { in getConds()
936 return makeArrayRef(getTrailingObjects<Init *>(), NumConds); in getConds()
939 ArrayRef<Init *> getVals() const { in getVals()
940 return makeArrayRef(getTrailingObjects<Init *>()+NumConds, NumConds); in getVals()
943 Init *Fold(Record *CurRec) const;
945 Init *resolveReferences(Resolver &R) const override;
951 using const_case_iterator = SmallVectorImpl<Init*>::const_iterator;
952 using const_val_iterator = SmallVectorImpl<Init*>::const_iterator;
966 Init *getBit(unsigned Bit) const override;
972 Init *Start;
973 Init *List;
974 Init *A;
975 Init *B;
976 Init *Expr;
978 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type) in FoldOpInit()
986 static bool classof(const Init *I) { return I->getKind() == IK_FoldOpInit; } in classof()
988 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
995 Init *Fold(Record *CurRec) const;
999 Init *resolveReferences(Resolver &R) const override;
1001 Init *getBit(unsigned Bit) const override;
1010 Init *Expr;
1012 IsAOpInit(RecTy *CheckType, Init *Expr) in IsAOpInit()
1020 static bool classof(const Init *I) { return I->getKind() == IK_IsAOpInit; } in classof()
1022 static IsAOpInit *get(RecTy *CheckType, Init *Expr);
1028 Init *Fold() const;
1032 Init *resolveReferences(Resolver &R) const override;
1034 Init *getBit(unsigned Bit) const override;
1041 Init *VarName;
1043 explicit VarInit(Init *VN, RecTy *T) in VarInit()
1050 static bool classof(const Init *I) { in classof()
1055 static VarInit *get(Init *VN, RecTy *T);
1058 Init *getNameInit() const { return VarName; } in getNameInit()
1069 Init *resolveReferences(Resolver &R) const override;
1071 Init *getBit(unsigned Bit) const override;
1094 static bool classof(const Init *I) { in classof()
1100 Init *getBitVar() const { return TI; } in getBitVar()
1104 Init *resolveReferences(Resolver &R) const override;
1106 Init *getBit(unsigned B) const override { in getBit()
1130 static bool classof(const Init *I) { in classof()
1140 Init *resolveReferences(Resolver &R) const override;
1142 Init *getBit(unsigned Bit) const override;
1157 static bool classof(const Init *I) { in classof()
1163 Init *convertInitializerTo(RecTy *Ty) const override;
1174 Init *getBit(unsigned Bit) const override { in getBit()
1182 public TrailingObjects<VarDefInit, Init *> {
1199 static bool classof(const Init *I) { in classof()
1202 static VarDefInit *get(Record *Class, ArrayRef<Init *> Args);
1206 Init *resolveReferences(Resolver &R) const override;
1207 Init *Fold() const;
1211 Init *getArg(unsigned i) const { in getArg()
1213 return getTrailingObjects<Init *>()[i]; in getArg()
1216 using const_iterator = Init *const *;
1218 const_iterator args_begin() const { return getTrailingObjects<Init *>(); } in args_begin()
1224 ArrayRef<Init *> args() const { return makeArrayRef(args_begin(), NumArgs); } in args()
1226 Init *getBit(unsigned Bit) const override { in getBit()
1233 Init *Rec; // Record we are referring to
1236 FieldInit(Init *R, StringInit *FN) in FieldInit()
1252 static bool classof(const Init *I) { in classof()
1256 static FieldInit *get(Init *R, StringInit *FN);
1258 Init *getRecord() const { return Rec; } in getRecord()
1261 Init *getBit(unsigned Bit) const override;
1263 Init *resolveReferences(Resolver &R) const override;
1264 Init *Fold(Record *CurRec) const;
1276 public TrailingObjects<DagInit, Init *, StringInit *> {
1279 Init *Val;
1284 DagInit(Init *V, StringInit *VN, unsigned NumArgs, unsigned NumArgNames) in DagInit()
1288 size_t numTrailingObjects(OverloadToken<Init *>) const { return NumArgs; } in numTrailingObjects() argument
1294 static bool classof(const Init *I) { in classof()
1298 static DagInit *get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1300 static DagInit *get(Init *V, StringInit *VN,
1301 ArrayRef<std::pair<Init*, StringInit*>> Args);
1305 Init *getOperator() const { return Val; } in getOperator()
1316 Init *getArg(unsigned Num) const { in getArg()
1318 return getTrailingObjects<Init *>()[Num]; in getArg()
1327 StringInit *Init = getArgName(Num); in getArgNameStr() local
1328 return Init ? Init->getValue() : StringRef(); in getArgNameStr()
1331 ArrayRef<Init *> getArgs() const { in getArgs()
1332 return makeArrayRef(getTrailingObjects<Init *>(), NumArgs); in getArgs()
1339 Init *resolveReferences(Resolver &R) const override;
1344 using const_arg_iterator = SmallVectorImpl<Init*>::const_iterator;
1359 Init *getBit(unsigned Bit) const override { in getBit()
1381 Init *Name;
1384 Init *Value;
1387 RecordVal(Init *N, RecTy *T, FieldKind K);
1388 RecordVal(Init *N, SMLoc Loc, RecTy *T, FieldKind K);
1394 Init *getNameInit() const { return Name; } in getNameInit()
1421 Init *getValue() const { return Value; } in getValue()
1424 bool setValue(Init *V);
1427 bool setValue(Init *V, SMLoc NewLoc);
1443 Init *Name;
1447 SmallVector<Init *, 0> TemplateArgs;
1450 SmallVector<std::tuple<SMLoc, Init *, Init *>, 0> Assertions;
1472 explicit Record(Init *N, ArrayRef<SMLoc> locs, RecordKeeper &records,
1498 Init *getNameInit() const { in getNameInit()
1506 void setName(Init *Name); // Also updates RecordKeeper.
1519 ArrayRef<Init *> getTemplateArgs() const { in getTemplateArgs()
1525 ArrayRef<std::tuple<SMLoc, Init *, Init *>> getAssertions() const { in getAssertions()
1539 bool isTemplateArg(Init *Name) const { in isTemplateArg()
1540 for (Init *TA : TemplateArgs) in isTemplateArg()
1545 const RecordVal *getValue(const Init *Name) const { in getValue()
1555 RecordVal *getValue(const Init *Name) { in getValue()
1563 void addTemplateArg(Init *Name) { in addTemplateArg()
1573 void removeValue(Init *Name) { in removeValue()
1586 void addAssertion(SMLoc Loc, Init *Condition, Init *Message) { in addAssertion()
1649 Init *getValueInit(StringRef FieldName) const;
1729 using GlobalMap = std::map<std::string, Init *, std::less<>>;
1735 std::map<std::string, Init *, std::less<>> ExtraGlobals;
1771 Init *getGlobal(StringRef Name) const { in getGlobal()
1796 void addExtraGlobal(StringRef Name, Init *I) { in addExtraGlobal()
1803 Init *getNewAnonymousName();
1966 virtual Init *resolve(Init *VarName) = 0;
1984 Init *V;
1988 MappedValue(Init *V, bool Resolved) : V(V), Resolved(Resolved) {} in MappedValue()
1991 DenseMap<Init *, MappedValue> Map;
1996 void set(Init *Key, Init *Value) { Map[Key] = {Value, false}; } in set()
1998 Init *resolve(Init *VarName) override;
2003 DenseMap<Init *, Init *> Cache;
2004 SmallVector<Init *, 4> Stack;
2009 Init *resolve(Init *VarName) override;
2017 DenseSet<Init *> Shadowed;
2025 void addShadow(Init *Key) { Shadowed.insert(Key); } in addShadow()
2027 Init *resolve(Init *VarName) override { in resolve()
2046 Init *resolve(Init *VarName) override;
2052 Init *VarNameToTrack;
2056 explicit HasReferenceResolver(Init *VarNameToTrack) in HasReferenceResolver()
2061 Init *resolve(Init *VarName) override;