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.