LLVM: lib/Target/AArch64/AArch64MachineFunctionInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64MACHINEFUNCTIONINFO_H
14#define LLVM_LIB_TARGET_AARCH64_AARCH64MACHINEFUNCTIONINFO_H
15
28#include
29#include
30
31namespace llvm {
32
33namespace yaml {
35}
36
39
44
45
46
47
53
54
55
57
58
59
60
61
62
63
64
65
66 unsigned BytesInStackArgArea = 0;
67
68
69
70
71 unsigned ArgumentStackToRestore = 0;
72
73
74
75
76
77 unsigned TailCallReservedStack = 0;
78
79
80
81 bool HasStackFrame = false;
82
83
85
86
87 unsigned CalleeSavedStackSize = 0;
88 unsigned ZPRCalleeSavedStackSize = 0;
89 unsigned PPRCalleeSavedStackSize = 0;
90 bool HasCalleeSavedStackSize = false;
91 bool HasSVECalleeSavedStackSize = false;
92
93
94
95 unsigned NumLocalDynamicTLSAccesses = 0;
96
97
98
99 int VarArgsStackIndex = 0;
100
101
102 unsigned VarArgsStackOffset = 0;
103
104
105
106 int VarArgsGPRIndex = 0;
107
108
109
110 unsigned VarArgsGPRSize = 0;
111
112
113
114 int VarArgsFPRIndex = 0;
115
116
117
118 unsigned VarArgsFPRSize = 0;
119
120
121
122
123 int StackHazardSlotIndex = std::numeric_limits::max();
124 int StackHazardCSRSlotIndex = std::numeric_limits::max();
125
126
127
128 bool IsSplitCSR = false;
129
130
131
132 bool StackRealigned = false;
133
134
135
136 bool CalleeSaveStackHasFreeSpace = false;
137
138
139
140
142
143
144
145
148
149
150
151 bool SplitSVEObjects = false;
152
153
154 bool HasCalculatedStackSizeSVE = false;
155
156
157
158
159
160 std::optional HasRedZone;
161
162
163
165
166
167 std::optional TaggedBasePointerIndex;
168
169
170
171
172 unsigned TaggedBasePointerOffset;
173
174
175
176 std::optionalstd::string OutliningStyle;
177
178
179
180 int CalleeSaveBaseToFrameRecordOffset = 0;
181
182
184
185
186 bool SignWithBKey = false;
187
188
189
190
191 bool HasELFSignedGOT = false;
192
193
194
195
196 MCSymbol *SignInstrLabel = nullptr;
197
198
199
200 bool BranchTargetEnforcement = false;
201
202
203
204
205
206 bool BranchProtectionPAuthLR = false;
207
208
209
210
211 bool HasSwiftAsyncContext = false;
212
213
214 int SwiftAsyncContextFrameIdx = std::numeric_limits::max();
215
216 bool IsMTETagged = false;
217
218
219
220 bool IsSVECC = false;
221
222
223 bool HasStreamingModeChanges = false;
224
225
226 mutable std::optional NeedsDwarfUnwindInfo;
227
228
229 mutable std::optional NeedsAsyncDwarfUnwindInfo;
230
231 int64_t StackProbeSize = 0;
232
233
234
236
237
238
239 unsigned PredicateRegForFillSpill = 0;
240
241
243
244
245
246 Register EarlyAllocSMESaveBuffer = AArch64::NoRegister;
247
248
249 int ZT0SpillSlotIndex = std::numeric_limits::max();
250
251
252
254
255
256
258
259 bool SMESaveBufferUsed = false;
260
261public:
263
267 const override;
268
270 EarlyAllocSMESaveBuffer = Ptr;
271 }
272
274 return EarlyAllocSMESaveBuffer;
275 }
276
280 return ZT0SpillSlotIndex;
281 }
283 return ZT0SpillSlotIndex != std::numeric_limits::max();
284 }
285
286
292
294 PredicateRegForFillSpill = Reg;
295 }
297 return PredicateRegForFillSpill;
298 }
299
302
303 bool isSVECC() const { return IsSVECC; };
305
307
310
313 ArgumentStackToRestore = bytes;
314 }
315
318 TailCallReservedStack = bytes;
319 }
320
323 "expected SVE stack sizes to be aligned to 16-bytes");
324 StackSizeZPR = ZPR;
325 StackSizePPR = PPR;
326 HasCalculatedStackSizeSVE = true;
327 }
328
331 return StackSizeZPR;
332 }
335 return StackSizePPR;
336 }
337
339
343
346
350 return CalleeSaveStackHasFreeSpace;
351 }
353 CalleeSaveStackHasFreeSpace = s;
354 }
357
360
363 return OutliningStyle;
364 }
365
367 CalleeSavedStackSize = Size;
368 HasCalleeSavedStackSize = true;
369 }
370
371
372
373
374
375
377 bool ValidateCalleeSavedStackSize = false;
378
379#ifndef NDEBUG
380
381
382
383 ValidateCalleeSavedStackSize = HasCalleeSavedStackSize;
384#endif
385
386 if (!HasCalleeSavedStackSize || ValidateCalleeSavedStackSize) {
389 return 0;
390
391 int64_t MinOffset = std::numeric_limits<int64_t>::max();
392 int64_t MaxOffset = std::numeric_limits<int64_t>::min();
394 int FrameIdx = Info.getFrameIdx();
396 continue;
399 MinOffset = std::min<int64_t>(Offset, MinOffset);
400 MaxOffset = std::max<int64_t>(Offset + ObjSize, MaxOffset);
401 }
402
403 if (SwiftAsyncContextFrameIdx != std::numeric_limits::max()) {
406 MinOffset = std::min<int64_t>(Offset, MinOffset);
407 MaxOffset = std::max<int64_t>(Offset + ObjSize, MaxOffset);
408 }
409
410 if (StackHazardCSRSlotIndex != std::numeric_limits::max()) {
412 int64_t ObjSize = MFI.getObjectSize(StackHazardCSRSlotIndex);
413 MinOffset = std::min<int64_t>(Offset, MinOffset);
414 MaxOffset = std::max<int64_t>(Offset + ObjSize, MaxOffset);
415 }
416
417 unsigned Size = alignTo(MaxOffset - MinOffset, 16);
419 "Invalid size calculated for callee saves");
421 }
422
424 }
425
427 assert(HasCalleeSavedStackSize &&
428 "CalleeSavedStackSize has not been calculated");
429 return CalleeSavedStackSize;
430 }
431
432
435 "expected SVE callee-save sizes to be aligned to 16-bytes");
436 ZPRCalleeSavedStackSize = ZPR;
437 PPRCalleeSavedStackSize = PPR;
438 HasSVECalleeSavedStackSize = true;
439 }
441 assert(HasSVECalleeSavedStackSize &&
442 "ZPRCalleeSavedStackSize has not been calculated");
443 return ZPRCalleeSavedStackSize;
444 }
446 assert(HasSVECalleeSavedStackSize &&
447 "PPRCalleeSavedStackSize has not been calculated");
448 return PPRCalleeSavedStackSize;
449 }
450
453 "ZPRs and PPRs are split. Use get[ZPR|PPR]CalleeSavedStackSize()");
455 }
456
459 return NumLocalDynamicTLSAccesses;
460 }
461
465
466 std::optional hasRedZone() const { return HasRedZone; }
468
471
474
477
480
483
486
488 return StackHazardSlotIndex != std::numeric_limits::max();
489 }
492 assert(StackHazardSlotIndex == std::numeric_limits::max());
493 StackHazardSlotIndex = Index;
494 }
497 assert(StackHazardCSRSlotIndex == std::numeric_limits::max());
498 StackHazardCSRSlotIndex = Index;
499 }
500
503
509
511
514
516 return JumpTableEntryInfo[Idx].first;
517 }
519 return JumpTableEntryInfo[Idx].second;
520 }
522 if ((unsigned)Idx >= JumpTableEntryInfo.size())
523 JumpTableEntryInfo.resize(Idx+1);
524 JumpTableEntryInfo[Idx] = std::make_pair(Size, PCRelSym);
525 }
526
528
530
531
534
535
537
538 public:
540
542 : Kind(Kind), Args(Args.begin(), Args.end()) {
544 }
545
548 };
549
552
554
555
557 LOHContainerSet.push_back(MILOHDirective(Kind, Args));
558 LOHRelated.insert_range(Args);
559 }
560
561 size_t
563 size_t InitialSize = LOHContainerSet.size();
564 erase_if(LOHContainerSet, [&](const auto &D) {
565 return any_of(D.getArgs(), [&](auto *Arg) { return MIs.contains(Arg); });
566 });
567
568
569
570
571 LOHRelated.remove_if([&](auto *MI) { return MIs.contains(MI); });
572 return InitialSize - LOHContainerSet.size();
573 };
574
576 return ForwardedMustTailRegParms;
577 }
578
580 return TaggedBasePointerIndex;
581 }
583
585 return TaggedBasePointerOffset;
586 }
588 TaggedBasePointerOffset = Offset;
589 }
590
592 return CalleeSaveBaseToFrameRecordOffset;
593 }
595 CalleeSaveBaseToFrameRecordOffset = Offset;
596 }
597
599 bool IsLRSpilled);
600
602
604 return SignCondition;
605 }
606
608
610
612
615
617
619
621
623 HasSwiftAsyncContext = HasContext;
624 }
626
628 SwiftAsyncContextFrameIdx = FI;
629 }
631
634
637 HasStreamingModeChanges = HasChanges;
638 }
639
641
643
644private:
645
648
650};
651
652namespace yaml {
666
676
677}
678
679}
680
681#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
Analysis containing CSE Info
This file defines the SmallPtrSet class.
This file defines the SmallVector class.
MILOHDirective(MCLOHType Kind, LOHArgs Args)
Definition AArch64MachineFunctionInfo.h:541
MCLOHType getKind() const
Definition AArch64MachineFunctionInfo.h:546
ArrayRef< const MachineInstr * > LOHArgs
Definition AArch64MachineFunctionInfo.h:539
LOHArgs getArgs() const
Definition AArch64MachineFunctionInfo.h:547
AArch64FunctionInfo - This class is derived from MachineFunctionInfo and contains private AArch64-spe...
Definition AArch64MachineFunctionInfo.h:56
void addLOHDirective(MCLOHType Kind, MILOHArgs Args)
Add a LOH directive of this Kind and this Args.
Definition AArch64MachineFunctionInfo.h:556
bool isSVECC() const
Definition AArch64MachineFunctionInfo.h:303
bool needsShadowCallStackPrologueEpilogue(MachineFunction &MF) const
bool branchTargetEnforcement() const
Definition AArch64MachineFunctionInfo.h:618
unsigned getPPRCalleeSavedStackSize() const
Definition AArch64MachineFunctionInfo.h:445
void setHasStackFrame(bool s)
Definition AArch64MachineFunctionInfo.h:345
void setSwiftAsyncContextFrameIdx(int FI)
Definition AArch64MachineFunctionInfo.h:627
unsigned getTailCallReservedStack() const
Definition AArch64MachineFunctionInfo.h:316
unsigned getCalleeSavedStackSize(const MachineFrameInfo &MFI) const
Definition AArch64MachineFunctionInfo.h:376
Register getEarlyAllocSMESaveBuffer() const
Definition AArch64MachineFunctionInfo.h:273
void setIsSVECC(bool s)
Definition AArch64MachineFunctionInfo.h:304
unsigned getVarArgsFPRSize() const
Definition AArch64MachineFunctionInfo.h:484
void setCalleeSaveBaseToFrameRecordOffset(int Offset)
Definition AArch64MachineFunctionInfo.h:594
void setVarArgsStackOffset(unsigned Offset)
Definition AArch64MachineFunctionInfo.h:473
bool hasStackProbing() const
Definition AArch64MachineFunctionInfo.h:640
void setVarArgsStackIndex(int Index)
Definition AArch64MachineFunctionInfo.h:470
void setEarlyAllocSMESaveBuffer(Register Ptr)
Definition AArch64MachineFunctionInfo.h:269
int getZT0SpillSlotIndex() const
Definition AArch64MachineFunctionInfo.h:278
unsigned getArgumentStackToRestore() const
Definition AArch64MachineFunctionInfo.h:311
TPIDR2Object & getTPIDR2Obj()
Definition AArch64MachineFunctionInfo.h:291
void setTailCallReservedStack(unsigned bytes)
Definition AArch64MachineFunctionInfo.h:317
SmallVector< MILOHDirective, 32 > MILOHContainer
Definition AArch64MachineFunctionInfo.h:551
void setLocalStackSize(uint64_t Size)
Definition AArch64MachineFunctionInfo.h:358
void setCalleeSaveStackHasFreeSpace(bool s)
Definition AArch64MachineFunctionInfo.h:352
int getCalleeSaveBaseToFrameRecordOffset() const
Definition AArch64MachineFunctionInfo.h:591
bool hasELFSignedGOT() const
Definition AArch64MachineFunctionInfo.h:611
SmallVectorImpl< ForwardedRegister > & getForwardedMustTailRegParms()
Definition AArch64MachineFunctionInfo.h:575
void setIsSplitCSR(bool s)
Definition AArch64MachineFunctionInfo.h:356
int getVarArgsFPRIndex() const
Definition AArch64MachineFunctionInfo.h:481
SignReturnAddress getSignReturnAddressCondition() const
Definition AArch64MachineFunctionInfo.h:603
bool hasStreamingModeChanges() const
Definition AArch64MachineFunctionInfo.h:635
void setPredicateRegForFillSpill(unsigned Reg)
Definition AArch64MachineFunctionInfo.h:293
void setOutliningStyle(const std::string &Style)
Definition AArch64MachineFunctionInfo.h:361
void incNumLocalDynamicTLSAccesses()
Definition AArch64MachineFunctionInfo.h:457
const SetOfInstructions & getLOHRelated() const
Definition AArch64MachineFunctionInfo.h:529
void setBytesInStackArgArea(unsigned bytes)
Definition AArch64MachineFunctionInfo.h:309
int getVarArgsStackIndex() const
Definition AArch64MachineFunctionInfo.h:469
void setVarArgsGPRIndex(int Index)
Definition AArch64MachineFunctionInfo.h:476
int getStackHazardSlotIndex() const
Definition AArch64MachineFunctionInfo.h:490
unsigned getTaggedBasePointerOffset() const
Definition AArch64MachineFunctionInfo.h:584
void setCalleeSavedStackSize(unsigned Size)
Definition AArch64MachineFunctionInfo.h:366
int getVarArgsGPRIndex() const
Definition AArch64MachineFunctionInfo.h:475
int64_t getStackProbeSize() const
Definition AArch64MachineFunctionInfo.h:642
void setSigningInstrLabel(MCSymbol *Label)
Definition AArch64MachineFunctionInfo.h:614
void setHasSwiftAsyncContext(bool HasContext)
Definition AArch64MachineFunctionInfo.h:622
void setSplitSVEObjects(bool s)
Definition AArch64MachineFunctionInfo.h:502
bool branchProtectionPAuthLR() const
Definition AArch64MachineFunctionInfo.h:620
void setPStateSMReg(Register Reg)
Definition AArch64MachineFunctionInfo.h:301
void setHasRedZone(bool s)
Definition AArch64MachineFunctionInfo.h:467
MILOHDirective::LOHArgs MILOHArgs
Definition AArch64MachineFunctionInfo.h:550
bool hasStackFrame() const
Definition AArch64MachineFunctionInfo.h:344
int getStackHazardCSRSlotIndex() const
Definition AArch64MachineFunctionInfo.h:495
void setStackSizeSVE(uint64_t ZPR, uint64_t PPR)
Definition AArch64MachineFunctionInfo.h:321
bool isSplitCSR() const
Definition AArch64MachineFunctionInfo.h:355
void setVarArgsFPRSize(unsigned Size)
Definition AArch64MachineFunctionInfo.h:485
std::optional< int > getTaggedBasePointerIndex() const
Definition AArch64MachineFunctionInfo.h:579
unsigned getVarArgsStackOffset() const
Definition AArch64MachineFunctionInfo.h:472
SMEAttrs getSMEFnAttrs() const
Definition AArch64MachineFunctionInfo.h:510
AArch64FunctionInfo(const Function &F, const AArch64Subtarget *STI)
uint64_t getLocalStackSize() const
Definition AArch64MachineFunctionInfo.h:359
void setStackRealigned(bool s)
Definition AArch64MachineFunctionInfo.h:348
unsigned getJumpTableEntrySize(int Idx) const
Definition AArch64MachineFunctionInfo.h:515
bool needsDwarfUnwindInfo(const MachineFunction &MF) const
size_t clearLinkerOptimizationHints(const SmallPtrSetImpl< MachineInstr * > &MIs)
Definition AArch64MachineFunctionInfo.h:562
unsigned getVarArgsGPRSize() const
Definition AArch64MachineFunctionInfo.h:478
void setZT0SpillSlotIndex(int FI)
Definition AArch64MachineFunctionInfo.h:277
unsigned getSRetReturnReg() const
Definition AArch64MachineFunctionInfo.h:512
MCSymbol * getJumpTableEntryPCRelSymbol(int Idx) const
Definition AArch64MachineFunctionInfo.h:518
bool isStackRealigned() const
Definition AArch64MachineFunctionInfo.h:347
Register getPStateSMReg() const
Definition AArch64MachineFunctionInfo.h:300
uint64_t getStackSizePPR() const
Definition AArch64MachineFunctionInfo.h:333
unsigned getNumLocalDynamicTLSAccesses() const
Definition AArch64MachineFunctionInfo.h:458
bool hasZT0SpillSlotIndex() const
Definition AArch64MachineFunctionInfo.h:282
SmallPtrSet< const MachineInstr *, 16 > SetOfInstructions
Definition AArch64MachineFunctionInfo.h:527
bool hasSwiftAsyncContext() const
Definition AArch64MachineFunctionInfo.h:625
bool hasStackHazardSlotIndex() const
Definition AArch64MachineFunctionInfo.h:487
void setTaggedBasePointerOffset(unsigned Offset)
Definition AArch64MachineFunctionInfo.h:587
void setStackHazardSlotIndex(int Index)
Definition AArch64MachineFunctionInfo.h:491
std::optional< bool > hasRedZone() const
Definition AArch64MachineFunctionInfo.h:466
unsigned getZPRCalleeSavedStackSize() const
Definition AArch64MachineFunctionInfo.h:440
void setSMESaveBufferUsed(bool Used=true)
Definition AArch64MachineFunctionInfo.h:290
void setSRetReturnReg(unsigned Reg)
Definition AArch64MachineFunctionInfo.h:513
static bool shouldSignReturnAddress(SignReturnAddress Condition, bool IsLRSpilled)
void setStackHazardCSRSlotIndex(int Index)
Definition AArch64MachineFunctionInfo.h:496
void setSMESaveBufferAddr(Register Reg)
Definition AArch64MachineFunctionInfo.h:288
int getSwiftAsyncContextFrameIdx() const
Definition AArch64MachineFunctionInfo.h:630
unsigned getPredicateRegForFillSpill() const
Definition AArch64MachineFunctionInfo.h:296
void setSVECalleeSavedStackSize(unsigned ZPR, unsigned PPR)
Definition AArch64MachineFunctionInfo.h:433
bool hasCalculatedStackSizeSVE() const
Definition AArch64MachineFunctionInfo.h:338
std::optional< std::string > getOutliningStyle() const
Definition AArch64MachineFunctionInfo.h:362
bool isMTETagged() const
Definition AArch64MachineFunctionInfo.h:616
unsigned getBytesInStackArgArea() const
Definition AArch64MachineFunctionInfo.h:308
Register getSMESaveBufferAddr() const
Definition AArch64MachineFunctionInfo.h:287
uint64_t getStackSizeZPR() const
Definition AArch64MachineFunctionInfo.h:329
void initializeBaseYamlFields(const yaml::AArch64FunctionInfo &YamlMFI)
const MILOHContainer & getLOHContainer() const
Definition AArch64MachineFunctionInfo.h:553
void setJumpTableEntryInfo(int Idx, unsigned Size, MCSymbol *PCRelSym)
Definition AArch64MachineFunctionInfo.h:521
bool hasSVEStackSize() const
Definition AArch64MachineFunctionInfo.h:340
bool isStackHazardIncludedInCalleeSaveArea() const
Definition AArch64MachineFunctionInfo.h:462
unsigned isSMESaveBufferUsed() const
Definition AArch64MachineFunctionInfo.h:289
unsigned getSVECalleeSavedStackSize() const
Definition AArch64MachineFunctionInfo.h:451
bool hasSplitSVEObjects() const
Definition AArch64MachineFunctionInfo.h:501
bool needsAsyncDwarfUnwindInfo(const MachineFunction &MF) const
void setVarArgsFPRIndex(int Index)
Definition AArch64MachineFunctionInfo.h:482
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
void setVarArgsGPRSize(unsigned Size)
Definition AArch64MachineFunctionInfo.h:479
void setTaggedBasePointerIndex(int Index)
Definition AArch64MachineFunctionInfo.h:582
MCSymbol * getSigningInstrLabel() const
Definition AArch64MachineFunctionInfo.h:613
bool hasSVE_AAPCS(const MachineFunction &MF) const
Definition AArch64MachineFunctionInfo.h:504
void setArgumentStackToRestore(unsigned bytes)
Definition AArch64MachineFunctionInfo.h:312
void setHasStreamingModeChanges(bool HasChanges)
Definition AArch64MachineFunctionInfo.h:636
unsigned getCalleeSavedStackSize() const
Definition AArch64MachineFunctionInfo.h:426
bool hasCalleeSaveStackFreeSpace() const
Definition AArch64MachineFunctionInfo.h:349
bool shouldSignWithBKey() const
Definition AArch64MachineFunctionInfo.h:609
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
CallingConv::ID getCallingConv() const
getCallingConv()/setCallingConv(CC) - These method get and set the calling convention of this functio...
static constexpr unsigned NoRegister
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
bool isCalleeSavedInfoValid() const
Has the callee saved info been calculated yet?
int64_t getObjectSize(int ObjectIdx) const
Return the size of the specified object.
const std::vector< CalleeSavedInfo > & getCalleeSavedInfo() const
Returns a reference to call saved info vector for the current function.
uint8_t getStackID(int ObjectIdx) const
int64_t getObjectOffset(int ObjectIdx) const
Return the assigned stack offset of the specified object from the incoming stack pointer.
Function & getFunction()
Return the LLVM function that this machine code represents.
Representation of each machine instruction.
Wrapper class representing virtual and physical registers.
SMEAttrs is a utility class to parse the SME ACLE attributes on functions.
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
bool contains(ConstPtrType Ptr) const
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
void mapOptional(StringRef Key, T &Val)
@ AArch64_SVE_VectorCall
Used between AArch64 SVE functions.
This is an optimization pass for GlobalISel generic memory operations.
SignReturnAddress
Condition of signing the return address in a function.
Definition AArch64MachineFunctionInfo.h:48
@ None
Definition AArch64MachineFunctionInfo.h:49
bool isAligned(Align Lhs, uint64_t SizeInBytes)
Checks that SizeInBytes is a multiple of the alignment.
static bool isValidMCLOHType(unsigned Kind)
bool any_of(R &&range, UnaryPredicate P)
Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.
MCLOHType
Linker Optimization Hint Type.
uint64_t alignTo(uint64_t Size, Align A)
Returns a multiple of A needed to store Size bytes.
void erase_if(Container &C, UnaryPredicate P)
Provide a container algorithm similar to C++ Library Fundamentals v2's erase_if which is equivalent t...
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.
This struct is a compact representation of a valid (non-zero power of two) alignment.
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
unsigned Uses
Definition AArch64MachineFunctionInfo.h:42
int FrameIndex
Definition AArch64MachineFunctionInfo.h:41
std::optional< bool > HasRedZone
Definition AArch64MachineFunctionInfo.h:654
std::optional< uint64_t > StackSizePPR
Definition AArch64MachineFunctionInfo.h:656
AArch64FunctionInfo()=default
std::optional< bool > HasStreamingModeChanges
Definition AArch64MachineFunctionInfo.h:658
std::optional< bool > HasStackFrame
Definition AArch64MachineFunctionInfo.h:657
std::optional< uint64_t > StackSizeZPR
Definition AArch64MachineFunctionInfo.h:655
~AArch64FunctionInfo() override=default
void mappingImpl(yaml::IO &YamlIO) override
Targets should override this in a way that mirrors the implementation of llvm::MachineFunctionInfo.
static void mapping(IO &YamlIO, AArch64FunctionInfo &MFI)
Definition AArch64MachineFunctionInfo.h:668
This class should be specialized by any type that needs to be converted to/from a YAML mapping.