18 #ifndef LLVM_LIB_CODEGEN_MIRYAMLMAPPING_H
19 #define LLVM_LIB_CODEGEN_MIRYAMLMAPPING_H
49 if (
const auto *
Node =
50 reinterpret_cast<yaml::Input *>(Ctx)->getCurrentNode())
96 static const bool flow =
true;
102 unsigned Alignment = 0;
103 bool IsLandingPad =
false;
104 bool AddressTaken =
false;
140 unsigned Alignment = 0;
145 IO.
enumCase(Type,
"default", MachineStackObject::DefaultType);
146 IO.
enumCase(Type,
"spill-slot", MachineStackObject::SpillSlot);
147 IO.
enumCase(Type,
"variable-sized", MachineStackObject::VariableSized);
156 MachineStackObject::DefaultType);
158 if (Object.
Type != MachineStackObject::VariableSized)
163 static const bool flow =
true;
174 unsigned Alignment = 0;
175 bool IsImmutable =
false;
176 bool IsAliased =
false;
183 IO.
enumCase(Type,
"default", FixedMachineStackObject::DefaultType);
184 IO.
enumCase(Type,
"spill-slot", FixedMachineStackObject::SpillSlot);
193 FixedMachineStackObject::DefaultType);
197 if (Object.
Type != FixedMachineStackObject::SpillSlot) {
203 static const bool flow =
true;
225 bool IsFrameAddressTaken =
false;
226 bool IsReturnAddressTaken =
false;
227 bool HasStackMap =
false;
228 bool HasPatchPoint =
false;
229 uint64_t StackSize = 0;
230 int OffsetAdjustment = 0;
231 unsigned MaxAlignment = 0;
232 bool AdjustsStack =
false;
233 bool HasCalls =
false;
235 unsigned MaxCallFrameSize = 0;
238 bool HasOpaqueSPAdjustment =
false;
239 bool HasVAStart =
false;
240 bool HasMustTailInVarArgFunc =
false;
264 unsigned Alignment = 0;
265 bool ExposesReturnsTwice =
false;
266 bool HasInlineAsm =
false;
269 bool TracksRegLiveness =
false;
270 bool TracksSubRegLiveness =
false;
Represents a range in source code.
std::vector< FlowStringValue > Successors
std::enable_if< has_SequenceTraits< T >::value, void >::type mapOptional(const char *Key, T &Val)
static void mapping(IO &YamlIO, MachineBasicBlock &MBB)
static StringRef input(StringRef Scalar, void *Ctx, StringValue &S)
std::string str() const
str - Get the contents as an std::string.
FlowStringValue(std::string Value)
bool needsQuotes(StringRef S)
#define LLVM_YAML_IS_SEQUENCE_VECTOR(_type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence...
static void enumeration(yaml::IO &IO, MachineStackObject::ObjectType &Type)
static void enumeration(yaml::IO &IO, FixedMachineStackObject::ObjectType &Type)
static bool mustQuote(StringRef Scalar)
static void mapping(yaml::IO &YamlIO, FixedMachineStackObject &Object)
Serializable representation of the fixed stack object from the MachineFrameInfo class.
Reg
All possible values of the reg field in the ModR/M byte.
static void mapping(IO &YamlIO, MachineFunction &MF)
std::vector< VirtualRegisterDefinition > VirtualRegisters
This class should be specialized by any type that needs to be converted to/from a YAML mapping...
bool TracksSubRegLiveness
bool HasMustTailInVarArgFunc
static bool mustQuote(StringRef Scalar)
std::vector< FlowStringValue > LiveIns
void enumCase(T &Val, const char *Str, const T ConstVal)
Serializable representation of stack object from the MachineFrameInfo class.
The instances of the Type class are immutable: once they are created, they are never changed...
unsigned MaxCallFrameSize
std::vector< MachineStackObject > StackObjects
Serializable representation of MachineFrameInfo.
StringValue(std::string Value)
static void mapping(yaml::IO &YamlIO, MachineStackObject &Object)
This class should be specialized by any integral type that converts to/from a YAML scalar where there...
MachineFrameInfo FrameInfo
This class should be specialized by type that requires custom conversion to/from a yaml scalar...
bool operator==(const StringValue &Other) const
static void mapping(IO &YamlIO, MachineFrameInfo &MFI)
std::vector< MachineBasicBlock > BasicBlocks
bool HasOpaqueSPAdjustment
static void mapping(IO &YamlIO, VirtualRegisterDefinition &Reg)
A wrapper around std::string which contains a source range that's being set during parsing...
std::vector< StringValue > Instructions
SMRange getSourceRange() const
static StringRef input(StringRef Scalar, void *Ctx, FlowStringValue &S)
bool IsReturnAddressTaken
#define LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(_type)
Utility for declaring that a std::vector of a particular type should be considered a YAML flow sequen...
std::vector< FixedMachineStackObject > FixedStackObjects
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream...
StringRef - Represent a constant reference to a string, i.e.
void mapRequired(const char *Key, T &Val)
static void output(const FlowStringValue &S, void *, llvm::raw_ostream &OS)
static void output(const StringValue &S, void *, llvm::raw_ostream &OS)
Abstract base class for all Nodes.