mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +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:
parent
e499a2df44
commit
bda579b8ba
@ -1568,6 +1568,23 @@ struct MultiClass {
|
||||
typedef std::vector<Record*> RecordVector;
|
||||
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;
|
||||
|
||||
MultiClass(const std::string &Name, SMLoc Loc, RecordKeeper &Records) :
|
||||
|
Loading…
Reference in New Issue
Block a user