Lines Matching refs:Init

287 class Init {
343 explicit Init(InitKind K, uint8_t Opc = 0) : Kind(K), Opc(Opc) {}
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 {
395 virtual Init *convertInitListSlice(ArrayRef<unsigned> Elements) const {
410 virtual Init *resolveReferences(Resolver &R) const {
411 return const_cast<Init *>(this);
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) {}
436 static bool classof(const Init *I) {
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) {}
464 static bool classof(const Init *I) {
470 Init *getCastTo(RecTy *Ty) const override;
471 Init *convertInitializerTo(RecTy *Ty) const override;
473 Init *getBit(unsigned Bit) const override {
492 static bool classof(const Init *I) {
500 Init *convertInitializerTo(RecTy *Ty) const override;
502 Init *getBit(unsigned Bit) const override {
514 public TrailingObjects<BitsInit, Init *> {
527 static bool classof(const Init *I) {
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 {
559 return getTrailingObjects<Init *>()[Bit];
574 static bool classof(const Init *I) {
582 Init *convertInitializerTo(RecTy *Ty) const override;
583 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
588 Init *getBit(unsigned Bit) const override {
604 static bool classof(const Init *I) {
612 Init *convertInitializerTo(RecTy *Ty) const override;
619 Init *getBit(unsigned Bit) const override {
636 static bool classof(const Init *I) {
645 Init *convertInitializerTo(RecTy *Ty) const override;
654 Init *getBit(unsigned Bit) const override {
662 public TrailingObjects<ListInit, Init *> {
666 using const_iterator = Init *const *;
679 static bool classof(const Init *I) {
682 static ListInit *get(ArrayRef<Init *> Range, RecTy *EltTy);
686 Init *getElement(unsigned i) const {
688 return getTrailingObjects<Init *>()[i];
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 {
711 return makeArrayRef(getTrailingObjects<Init *>(), NumValues);
714 const_iterator begin() const { return getTrailingObjects<Init *>(); }
720 Init *getBit(unsigned Bit) const override {
736 static bool classof(const Init *I) {
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)
766 static bool classof(const Init *I) {
770 static UnOpInit *get(UnaryOp opc, Init *lhs, RecTy *Type);
775 OpInit *clone(ArrayRef<Init *> Operands) const override {
783 Init *getOperand(unsigned i) const override {
789 Init *getOperand() const { return LHS; }
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) :
817 static bool classof(const Init *I) {
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 {
837 Init *getOperand(unsigned i) const override {
846 Init *getLHS() const { return LHS; }
847 Init *getRHS() const { return RHS; }
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,
874 static bool classof(const Init *I) {
878 static TernOpInit *get(TernaryOp opc, Init *lhs,
879 Init *mhs, Init *rhs,
885 OpInit *clone(ArrayRef<Init *> Operands) const override {
893 Init *getOperand(unsigned i) const override {
903 Init *getLHS() const { return LHS; }
904 Init *getMHS() const { return MHS; }
905 Init *getRHS() const { return RHS; }
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 {
940 static bool classof(const Init *I) {
944 static CondOpInit *get(ArrayRef<Init*> C, ArrayRef<Init*> V,
953 Init *getCond(unsigned Num) const {
955 return getTrailingObjects<Init *>()[Num];
958 Init *getVal(unsigned Num) const {
960 return getTrailingObjects<Init *>()[Num+NumConds];
963 ArrayRef<Init *> getConds() const {
964 return makeArrayRef(getTrailingObjects<Init *>(), NumConds);
967 ArrayRef<Init *> getVals() const {
968 return makeArrayRef(getTrailingObjects<Init *>()+NumConds, NumConds);
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)
1014 static bool classof(const Init *I) { return I->getKind() == IK_FoldOpInit; }
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)
1048 static bool classof(const Init *I) { return I->getKind() == IK_IsAOpInit; }
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)
1078 static bool classof(const Init *I) {
1083 static VarInit *get(Init *VN, RecTy *T);
1086 Init *getNameInit() const { return VarName; }
1097 Init *resolveReferences(Resolver &R) const override;
1099 Init *getBit(unsigned Bit) const override;
1122 static bool classof(const Init *I) {
1128 Init *getBitVar() const { return TI; }
1132 Init *resolveReferences(Resolver &R) const override;
1134 Init *getBit(unsigned B) const override {
1158 static bool classof(const Init *I) {
1168 Init *resolveReferences(Resolver &R) const override;
1170 Init *getBit(unsigned Bit) const override;
1185 static bool classof(const Init *I) {
1191 Init *convertInitializerTo(RecTy *Ty) const override;
1195 //virtual Init *convertInitializerBitRange(ArrayRef<unsigned> Bits);
1202 Init *getBit(unsigned Bit) const override {
1210 public TrailingObjects<VarDefInit, Init *> {
1227 static bool classof(const Init *I) {
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 {
1241 return getTrailingObjects<Init *>()[i];
1244 using const_iterator = Init *const *;
1246 const_iterator args_begin() const { return getTrailingObjects<Init *>(); }
1252 ArrayRef<Init *> args() const { return makeArrayRef(args_begin(), NumArgs); }
1254 Init *getBit(unsigned Bit) const override {
1261 Init *Rec; // Record we are referring to
1264 FieldInit(Init *R, StringInit *FN)
1280 static bool classof(const Init *I) {
1284 static FieldInit *get(Init *R, StringInit *FN);
1286 Init *getRecord() const { return Rec; }
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)
1315 size_t numTrailingObjects(OverloadToken<Init *>) const { return NumArgs; }
1321 static bool classof(const Init *I) {
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; }
1343 Init *getArg(unsigned Num) const {
1345 return getTrailingObjects<Init *>()[Num];
1354 StringInit *Init = getArgName(Num);
1355 return Init ? Init->getValue() : StringRef();
1358 ArrayRef<Init *> getArgs() const {
1359 return makeArrayRef(getTrailingObjects<Init *>(), NumArgs);
1366 Init *resolveReferences(Resolver &R) const override;
1371 using const_arg_iterator = SmallVectorImpl<Init*>::const_iterator;
1386 Init *getBit(unsigned Bit) const override {
1398 Init *Name;
1400 Init *Value;
1403 RecordVal(Init *N, RecTy *T, bool P);
1406 Init *getNameInit() const { return Name; }
1414 Init *getValue() const { return Value; }
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 {
1490 void setName(Init *Name); // Also updates RecordKeeper.
1503 ArrayRef<Init *> getTemplateArgs() const {
1516 bool isTemplateArg(Init *Name) const {
1517 for (Init *TA : TemplateArgs)
1522 const RecordVal *getValue(const Init *Name) const {
1532 RecordVal *getValue(const Init *Name) {
1540 void addTemplateArg(Init *Name) {
1550 void removeValue(Init *Name) {
1624 Init *getValueInit(StringRef FieldName) const;
1700 std::map<std::string, Init *, std::less<>> ExtraGlobals;
1717 Init *getGlobal(StringRef Name) const {
1738 void addExtraGlobal(StringRef Name, Init *I) {
1745 Init *getNewAnonymousName();
1869 /// Init::resolveReferences.
1882 virtual Init *resolve(Init *VarName) = 0;
1900 Init *V;
1904 MappedValue(Init *V, bool Resolved) : V(V), Resolved(Resolved) {}
1907 DenseMap<Init *, MappedValue> Map;
1912 void set(Init *Key, Init *Value) { Map[Key] = {Value, false}; }
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 {
1952 DenseSet<Init *> Shadowed;
1960 void addShadow(Init *Key) { Shadowed.insert(Key); }
1962 Init *resolve(Init *VarName) override {
1981 Init *resolve(Init *VarName) override;
1987 Init *VarNameToTrack;
1991 explicit HasReferenceResolver(Init *VarNameToTrack)
1996 Init *resolve(Init *VarName) override;