mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-13 23:26:25 +00:00
Add Multidef Data Structures
Add a set of data structures and members analogous to those used for multiclass defs. These will represent a new kind of multiclass def: a multidef. The idea behind the multidef is to process a list of items and create a def record for each one inside the enclosing multiclass. This allows the user to dynamically create a set of defs based on the contents of a list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141230 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1568,6 +1568,23 @@ struct MultiClass {
|
|||||||
typedef std::vector<Record*> RecordVector;
|
typedef std::vector<Record*> RecordVector;
|
||||||
RecordVector DefPrototypes;
|
RecordVector DefPrototypes;
|
||||||
|
|
||||||
|
struct MultiDef {
|
||||||
|
Record *Rec; // The base record for all defs generated.
|
||||||
|
// This serves as the multiclass def prototype.
|
||||||
|
TypedInit *List; // A list of values to process.
|
||||||
|
// Each one generates a new def.
|
||||||
|
IntInit *Start; // This specified the list index from which to start
|
||||||
|
// processing.
|
||||||
|
std::string ItemName; // The name of a temporary iterator value to
|
||||||
|
// track the current list item being processed.
|
||||||
|
|
||||||
|
MultiDef(Record *R, TypedInit *L, IntInit *S, const std::string &I)
|
||||||
|
: Rec(R), List(L), Start(S), ItemName(I) {};
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef std::vector<MultiDef> MultiDefVector;
|
||||||
|
MultiDefVector MultiDefPrototypes;
|
||||||
|
|
||||||
void dump() const;
|
void dump() const;
|
||||||
|
|
||||||
MultiClass(const std::string &Name, SMLoc Loc, RecordKeeper &Records) :
|
MultiClass(const std::string &Name, SMLoc Loc, RecordKeeper &Records) :
|
||||||
|
Reference in New Issue
Block a user