LLVM: include/llvm/Passes/PassBuilder.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef LLVM_PASSES_PASSBUILDER_H

16#define LLVM_PASSES_PASSBUILDER_H

17

31#include

32#include

33

34namespace llvm {

39

40

42public:

43

44

46

47

49

50

51

53

54

55

57

58

60

61

62

64

65

67

68

69

71

72

73

75

76

77

79

80

81

83

84

86

87

88

90

91

93

94

95

96

97

98

99

100

102

103

104

106};

107

108

109

110

111

112

113

117 std::optional PGOOpt;

120

121public:

122

123

124

125

126

127

128

129

134

138 std::optional PGOOpt = std::nullopt,

141

142

143

144

145

150

151

152

153

154

155

156

158

159

160

161

162

163

164

166

167

168

169

170

171

172

174

175

176

177

178

179

181

182

183

184

185

186

187

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

225

226

227

230

231

232

235

236

237

238

239

240

241

242

243

244

245

246

247

248

251

252

253

254

255

256

257

261

262

263

264

265

266

268 bool ThinLTO,

269 bool EmitSummary);

270

271

272

273

274

275

276

277

280

281

282

283

284

285

286

289

290

291

292

293

294

295

296

299

300

301

302

303

304

305

308

309

310

311

315

316

317

318

319

320

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

365

366

367

368

369

370

371

372

379

380

381

382

383

384

385

386

387

388

389

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

409

410

411 LLVM_ABI std::optional

413

414

416

417

418

419

420

421

422

425 PeepholeEPCallbacks.push_back(C);

426 }

427

428

429

430

431

432

433

434

435

436

439 LateLoopOptimizationsEPCallbacks.push_back(C);

440 }

441

442

443

444

445

446

449 LoopOptimizerEndEPCallbacks.push_back(C);

450 }

451

452

453

454

455

456

459 ScalarOptimizerLateEPCallbacks.push_back(C);

460 }

461

462

463

464

465

466

467

470 CGSCCOptimizerLateEPCallbacks.push_back(C);

471 }

472

473

474

475

476

477

478

481 VectorizerStartEPCallbacks.push_back(C);

482 }

483

484

485

486

487

488

489

492 VectorizerEndEPCallbacks.push_back(C);

493 }

494

495

496

497

498

499

502 PipelineStartEPCallbacks.push_back(C);

503 }

504

505

506

507

508

512 PipelineEarlySimplificationEPCallbacks.push_back(C);

513 }

514

515

516

517

518

522 OptimizerEarlyEPCallbacks.push_back(C);

523 }

524

525

526

527

528

532 OptimizerLastEPCallbacks.push_back(C);

533 }

534

535

536

537

538

541 FullLinkTimeOptimizationEarlyEPCallbacks.push_back(C);

542 }

543

544

545

546

547

550 FullLinkTimeOptimizationLastEPCallbacks.push_back(C);

551 }

552

553

554

557 AAParsingCallbacks.push_back(C);

558 }

559

560

561

562

565 CGSCCAnalysisRegistrationCallbacks.push_back(C);

566 }

569 FunctionAnalysisRegistrationCallbacks.push_back(C);

570 }

573 LoopAnalysisRegistrationCallbacks.push_back(C);

574 }

577 ModuleAnalysisRegistrationCallbacks.push_back(C);

578 }

581 MachineFunctionAnalysisRegistrationCallbacks.push_back(C);

582 }

583

584

585

586

587

588

592 CGSCCPipelineParsingCallbacks.push_back(C);

593 }

597 FunctionPipelineParsingCallbacks.push_back(C);

598 }

602 LoopPipelineParsingCallbacks.push_back(C);

603 }

607 ModulePipelineParsingCallbacks.push_back(C);

608 }

612 MachineFunctionPipelineParsingCallbacks.push_back(C);

613 }

614

615

616

617

618

621 RegClassFilterParsingCallbacks.push_back(C);

622 }

623

624

625

626

627

628

631 &C);

632

633

635 bool RunProfileGen, bool IsCS,

636 bool AtomicCounterUpdate,

637 std::string ProfileFile,

638 std::string ProfileRemappingFile);

639

640

641

645

646

650

651

652

653

686

688 if (!Name.consume_front(PassName))

689 return false;

690

691 if (Name.empty())

692 return true;

693 return Name.starts_with("<") && Name.ends_with(">");

694 }

695

696

697

698

699

700

701

702

703

704

705

706

707

708

709

710

711 template

714 -> decltype(Parser(StringRef{})) {

715 using ParametersT = typename decltype(Parser(StringRef{}))::value_type;

716

717 StringRef Params = Name;

718 if (!Params.consume_front(PassName)) {

720 "unable to strip pass name from parametrized pass specification");

721 }

722 if (!Params.empty() &&

723 (!Params.consume_front("<") || !Params.consume_back(">"))) {

724 llvm_unreachable("invalid format for parametrized pass name");

725 }

726

727 Expected Result = Parser(Params);

728 assert((Result || Result.template errorIsA()) &&

729 "Pass parameter parser can only return StringErrors.");

731 }

732

733

734

735

737 StringRef OptionName,

739

740private:

741

743 buildO1FunctionSimplificationPipeline(OptimizationLevel Level,

745

747

750

751 static std::optional<std::vector>

752 parsePipelineText(StringRef Text);

753

760 bool parseAAPassName(AAManager &AA, StringRef Name);

761

772

773

774

775

776 void addPreInlinerPasses(ModulePassManager &MPM, OptimizationLevel Level,

778

779 void addPGOInstrPasses(ModulePassManager &MPM, OptimizationLevel Level,

780 bool RunProfileGen, bool IsCS,

781 bool AtomicCounterUpdate, std::string ProfileFile,

782 std::string ProfileRemappingFile);

783 void addPostPGOLoopRotation(ModulePassManager &MPM, OptimizationLevel Level);

784

785 bool isInstrumentedPGOUse() const;

786

787

789 PeepholeEPCallbacks;

791 LateLoopOptimizationsEPCallbacks;

793 LoopOptimizerEndEPCallbacks;

795 ScalarOptimizerLateEPCallbacks;

797 CGSCCOptimizerLateEPCallbacks;

799 VectorizerStartEPCallbacks;

801 VectorizerEndEPCallbacks;

802

805 2>

806 OptimizerEarlyEPCallbacks;

809 2>

810 OptimizerLastEPCallbacks;

812 FullLinkTimeOptimizationEarlyEPCallbacks;

814 FullLinkTimeOptimizationLastEPCallbacks;

816 PipelineStartEPCallbacks;

819 2>

820 PipelineEarlySimplificationEPCallbacks;

821

823 ModuleAnalysisRegistrationCallbacks;

826 2>

827 ModulePipelineParsingCallbacks;

830 TopLevelPipelineParsingCallbacks;

831

833 CGSCCAnalysisRegistrationCallbacks;

836 2>

837 CGSCCPipelineParsingCallbacks;

838

840 FunctionAnalysisRegistrationCallbacks;

843 2>

844 FunctionPipelineParsingCallbacks;

845

847 LoopAnalysisRegistrationCallbacks;

850 2>

851 LoopPipelineParsingCallbacks;

852

853 SmallVector<std::function<bool(StringRef Name, AAManager &AA)>, 2>

854 AAParsingCallbacks;

855

857 MachineFunctionAnalysisRegistrationCallbacks;

860 2>

861 MachineFunctionPipelineParsingCallbacks;

862

864 RegClassFilterParsingCallbacks;

865};

866

867

868

869

870

871

872

873

874

875

876

877

878

879

880

881template <typename AnalysisT, typename IRUnitT, typename AnalysisManagerT,

882 typename... ExtraArgTs>

886 if (!PipelineName.ends_with(">"))

887 return false;

888

889 if (PipelineName.starts_with("invalidate<")) {

890 PipelineName = PipelineName.substr(11, PipelineName.size() - 12);

891 if (PipelineName != AnalysisName)

892 return false;

894 return true;

895 }

896

897

898 if (PipelineName.starts_with("require<")) {

899 PipelineName = PipelineName.substr(8, PipelineName.size() - 9);

900 if (PipelineName != AnalysisName)

901 return false;

903 ExtraArgTs...>());

904 return true;

905 }

906

907 return false;

908}

909

910

911

912

918

919

928

929

936

937

948

949

955

956

965

966

973

974

981

982

988

989

1000

1001

1003}

1004

1005#endif

aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late Phase

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")

This header provides classes for managing passes over SCCs of the call graph.

This header defines various interfaces for pass management in LLVM.

This header provides classes for managing a pipeline of passes over loops in LLVM IR.

This header enumerates the LLVM-provided high-level optimization levels.

Define option tunables for PGO.

CGSCCAnalysisManager CGAM

FunctionAnalysisManager FAM

ModuleAnalysisManager MAM

Defines the virtual file system interface vfs::FileSystem.

static const char PassName[]

A manager for alias analyses.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

Lightweight error class with error context and mandatory checking.

A smart pointer to a reference-counted object that inherits from RefCountedBase or ThreadSafeRefCount...

This class provides an interface for updating the loop pass manager based on mutations to the loop ne...

An SCC of the call graph.

A lazily constructed view of the call graph of a module.

This class represents a loop nest and can be used to query its properties.

Represents a single loop in the control flow graph.

Module pass, wrapping the inliner pass.

Class to hold module path string table and global value map, and encapsulate methods for operating on...

A Module instance is used to store all the information related to an LLVM module.

No-op CGSCC analysis.

Definition PassBuilder.h:938

Result run(LazyCallGraph::SCC &, CGSCCAnalysisManager &, LazyCallGraph &G)

Definition PassBuilder.h:944

No-op function analysis.

Definition PassBuilder.h:957

Result run(Function &, FunctionAnalysisManager &)

Definition PassBuilder.h:963

No-op loop analysis.

Definition PassBuilder.h:990

Result run(Loop &, LoopAnalysisManager &, LoopStandardAnalysisResults &)

Definition PassBuilder.h:996

No-op module analysis.

Definition PassBuilder.h:920

Result run(Module &, ModuleAnalysisManager &)

Definition PassBuilder.h:926

LLVM_ABI void invokeFullLinkTimeOptimizationLastEPCallbacks(ModulePassManager &MPM, OptimizationLevel Level)

LLVM_ABI ModuleInlinerWrapperPass buildInlinerPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)

Construct the module pipeline that performs inlining as well as the inlining-driven cleanups.

void registerAnalysisRegistrationCallback(const std::function< void(MachineFunctionAnalysisManager &)> &C)

Definition PassBuilder.h:579

LLVM_ABI void printPassNames(raw_ostream &OS)

Print pass names.

static bool checkParametrizedPassName(StringRef Name, StringRef PassName)

Definition PassBuilder.h:687

LLVM_ABI void invokeOptimizerEarlyEPCallbacks(ModulePassManager &MPM, OptimizationLevel Level, ThinOrFullLTOPhase Phase)

LLVM_ABI void invokeVectorizerStartEPCallbacks(FunctionPassManager &FPM, OptimizationLevel Level)

void registerPipelineParsingCallback(const std::function< bool(StringRef Name, ModulePassManager &, ArrayRef< PipelineElement >)> &C)

Definition PassBuilder.h:604

LLVM_ABI AAManager buildDefaultAAPipeline()

Build the default AAManager with the default alias analysis pipeline registered.

LLVM_ABI Error parseAAPipeline(AAManager &AA, StringRef PipelineText)

Parse a textual alias analysis pipeline into the provided AA manager.

LLVM_ABI void invokeCGSCCOptimizerLateEPCallbacks(CGSCCPassManager &CGPM, OptimizationLevel Level)

void registerPipelineEarlySimplificationEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel, ThinOrFullLTOPhase)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:509

LLVM_ABI ModulePassManager buildThinLTOPreLinkDefaultPipeline(OptimizationLevel Level)

Build a pre-link, ThinLTO-targeting default optimization pipeline to a pass manager.

void registerAnalysisRegistrationCallback(const std::function< void(ModuleAnalysisManager &)> &C)

Definition PassBuilder.h:575

LLVM_ABI void addPGOInstrPassesForO0(ModulePassManager &MPM, bool RunProfileGen, bool IsCS, bool AtomicCounterUpdate, std::string ProfileFile, std::string ProfileRemappingFile)

Add PGOInstrumenation passes for O0 only.

void registerPipelineStartEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:500

LLVM_ABI void invokeScalarOptimizerLateEPCallbacks(FunctionPassManager &FPM, OptimizationLevel Level)

void registerPipelineParsingCallback(const std::function< bool(StringRef Name, LoopPassManager &, ArrayRef< PipelineElement >)> &C)

Definition PassBuilder.h:599

LLVM_ABI void registerLoopAnalyses(LoopAnalysisManager &LAM)

Registers all available loop analysis passes.

LLVM_ABI std::optional< RegAllocFilterFunc > parseRegAllocFilter(StringRef RegAllocFilterName)

Parse RegAllocFilterName to get RegAllocFilterFunc.

PassInstrumentationCallbacks * getPassInstrumentationCallbacks() const

Returns PIC.

Definition PassBuilder.h:642

void registerLateLoopOptimizationsEPCallback(const std::function< void(LoopPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:437

LLVM_ABI void crossRegisterProxies(LoopAnalysisManager &LAM, FunctionAnalysisManager &FAM, CGSCCAnalysisManager &CGAM, ModuleAnalysisManager &MAM, MachineFunctionAnalysisManager *MFAM=nullptr)

Cross register the analysis managers through their proxies.

void registerLoopOptimizerEndEPCallback(const std::function< void(LoopPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:447

void registerOptimizerLastEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel, ThinOrFullLTOPhase)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:529

void registerParseAACallback(const std::function< bool(StringRef Name, AAManager &AA)> &C)

Register a callback for parsing an AliasAnalysis Name to populate the given AAManager AA.

Definition PassBuilder.h:555

void registerVectorizerStartEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:479

void registerAnalysisRegistrationCallback(const std::function< void(LoopAnalysisManager &)> &C)

Definition PassBuilder.h:571

LLVM_ABI ModulePassManager buildPerModuleDefaultPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase=ThinOrFullLTOPhase::None)

Build a per-module default optimization pipeline.

void registerPeepholeEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:423

LLVM_ABI PassBuilder(TargetMachine *TM=nullptr, PipelineTuningOptions PTO=PipelineTuningOptions(), std::optional< PGOOptions > PGOOpt=std::nullopt, PassInstrumentationCallbacks *PIC=nullptr, IntrusiveRefCntPtr< vfs::FileSystem > FS=vfs::getRealFileSystem())

void registerAnalysisRegistrationCallback(const std::function< void(FunctionAnalysisManager &)> &C)

Definition PassBuilder.h:567

void registerScalarOptimizerLateEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:457

void registerAnalysisRegistrationCallback(const std::function< void(CGSCCAnalysisManager &)> &C)

{{@ Register callbacks for analysis registration with this PassBuilder instance.

Definition PassBuilder.h:563

LLVM_ABI void invokePipelineStartEPCallbacks(ModulePassManager &MPM, OptimizationLevel Level)

LLVM_ABI void invokeVectorizerEndEPCallbacks(FunctionPassManager &FPM, OptimizationLevel Level)

IntrusiveRefCntPtr< vfs::FileSystem > getVirtualFileSystemPtr() const

Returns the virtual file system.

Definition PassBuilder.h:647

LLVM_ABI ModulePassManager buildO0DefaultPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase=ThinOrFullLTOPhase::None)

Build an O0 pipeline with the minimal semantically required passes.

LLVM_ABI FunctionPassManager buildFunctionSimplificationPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)

Construct the core LLVM function canonicalization and simplification pipeline.

void registerCGSCCOptimizerLateEPCallback(const std::function< void(CGSCCPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:468

LLVM_ABI void invokePeepholeEPCallbacks(FunctionPassManager &FPM, OptimizationLevel Level)

LLVM_ABI void invokePipelineEarlySimplificationEPCallbacks(ModulePassManager &MPM, OptimizationLevel Level, ThinOrFullLTOPhase Phase)

LLVM_ABI Error parsePassPipeline(ModulePassManager &MPM, StringRef PipelineText)

Parse a textual pass pipeline description into a ModulePassManager.

LLVM_ABI void invokeLoopOptimizerEndEPCallbacks(LoopPassManager &LPM, OptimizationLevel Level)

void registerRegClassFilterParsingCallback(const std::function< RegAllocFilterFunc(StringRef)> &C)

Register callbacks to parse target specific filter field if regalloc pass needs it.

Definition PassBuilder.h:619

LLVM_ABI ModulePassManager buildLTODefaultPipeline(OptimizationLevel Level, ModuleSummaryIndex *ExportSummary)

Build an LTO default optimization pipeline to a pass manager.

LLVM_ABI ModulePassManager buildModuleInlinerPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)

Construct the module pipeline that performs inlining with module inliner pass.

LLVM_ABI ModulePassManager buildThinLTODefaultPipeline(OptimizationLevel Level, const ModuleSummaryIndex *ImportSummary)

Build a ThinLTO default optimization pipeline to a pass manager.

void registerPipelineParsingCallback(const std::function< bool(StringRef Name, CGSCCPassManager &, ArrayRef< PipelineElement >)> &C)

{{@ Register pipeline parsing callbacks with this pass builder instance.

Definition PassBuilder.h:589

void registerFullLinkTimeOptimizationEarlyEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:539

LLVM_ABI void invokeLateLoopOptimizationsEPCallbacks(LoopPassManager &LPM, OptimizationLevel Level)

void registerPipelineParsingCallback(const std::function< bool(StringRef Name, FunctionPassManager &, ArrayRef< PipelineElement >)> &C)

Definition PassBuilder.h:594

LLVM_ABI void registerModuleAnalyses(ModuleAnalysisManager &MAM)

Registers all available module analysis passes.

void registerFullLinkTimeOptimizationLastEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:548

LLVM_ABI void registerCGSCCAnalyses(CGSCCAnalysisManager &CGAM)

Registers all available CGSCC analysis passes.

LLVM_ABI void invokeFullLinkTimeOptimizationEarlyEPCallbacks(ModulePassManager &MPM, OptimizationLevel Level)

LLVM_ABI ModulePassManager buildFatLTODefaultPipeline(OptimizationLevel Level, bool ThinLTO, bool EmitSummary)

Build a fat object default optimization pipeline.

static auto parsePassParameters(ParametersParseCallableT &&Parser, StringRef Name, StringRef PassName) -> decltype(Parser(StringRef{}))

This performs customized parsing of pass name with parameters.

Definition PassBuilder.h:712

LLVM_ABI ModulePassManager buildModuleSimplificationPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)

Construct the core LLVM module canonicalization and simplification pipeline.

void registerPipelineParsingCallback(const std::function< bool(StringRef Name, MachineFunctionPassManager &, ArrayRef< PipelineElement >)> &C)

Definition PassBuilder.h:609

static LLVM_ABI Expected< bool > parseSinglePassOption(StringRef Params, StringRef OptionName, StringRef PassName)

Handle passes only accept one bool-valued parameter.

void registerOptimizerEarlyEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel, ThinOrFullLTOPhase Phase)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:519

LLVM_ABI void registerMachineFunctionAnalyses(MachineFunctionAnalysisManager &MFAM)

Registers all available machine function analysis passes.

LLVM_ABI ModulePassManager buildModuleOptimizationPipeline(OptimizationLevel Level, ThinOrFullLTOPhase LTOPhase)

Construct the core LLVM module optimization pipeline.

LLVM_ABI void registerParseTopLevelPipelineCallback(const std::function< bool(ModulePassManager &, ArrayRef< PipelineElement >)> &C)

Register a callback for a top-level pipeline entry.

LLVM_ABI void invokeOptimizerLastEPCallbacks(ModulePassManager &MPM, OptimizationLevel Level, ThinOrFullLTOPhase Phase)

void registerVectorizerEndEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)

Register a callback for a default optimizer pipeline extension point.

Definition PassBuilder.h:490

LLVM_ABI ModulePassManager buildLTOPreLinkDefaultPipeline(OptimizationLevel Level)

Build a pre-link, LTO-targeting default optimization pipeline to a pass manager.

LLVM_ABI void registerFunctionAnalyses(FunctionAnalysisManager &FAM)

Registers all available function analysis passes.

This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass ...

Manages a sequence of passes over a particular unit of IR.

LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!std::is_same_v< PassT, PassManager > > addPass(PassT &&Pass)

Tunable parameters for passes in the default pipelines.

Definition PassBuilder.h:41

unsigned LicmMssaNoAccForPromotionCap

Tuning option to disable promotion to scalars in LICM with MemorySSA, if the number of access is too ...

Definition PassBuilder.h:78

bool SLPVectorization

Tuning option to enable/disable slp loop vectorization, set based on opt level.

Definition PassBuilder.h:56

bool DevirtualizeSpeculatively

Definition PassBuilder.h:105

int InlinerThreshold

Tuning option to override the default inliner threshold.

Definition PassBuilder.h:92

bool LoopFusion

Tuning option to enable/disable loop fusion. Its default value is false.

Definition PassBuilder.h:66

bool EagerlyInvalidateAnalyses

Definition PassBuilder.h:101

bool CallGraphProfile

Tuning option to enable/disable call graph profile.

Definition PassBuilder.h:82

bool MergeFunctions

Tuning option to enable/disable function merging.

Definition PassBuilder.h:89

bool ForgetAllSCEVInLoopUnroll

Tuning option to forget all SCEV loops in LoopUnroll.

Definition PassBuilder.h:70

unsigned LicmMssaOptCap

Tuning option to cap the number of calls to retrive clobbering accesses in MemorySSA,...

Definition PassBuilder.h:74

bool LoopInterleaving

Tuning option to set loop interleaving on/off, set based on opt level.

Definition PassBuilder.h:48

LLVM_ABI PipelineTuningOptions()

Constructor sets pipeline tuning defaults based on cl::opts.

bool LoopUnrolling

Tuning option to enable/disable loop unrolling. Its default value is true.

Definition PassBuilder.h:59

bool LoopInterchange

Tuning option to enable/disable loop interchange.

Definition PassBuilder.h:63

bool LoopVectorization

Tuning option to enable/disable loop vectorization, set based on opt level.

Definition PassBuilder.h:52

bool UnifiedLTO

Definition PassBuilder.h:85

A set of analyses that are preserved following a run of a transformation pass.

static PreservedAnalyses all()

Construct a special preserved set that preserves all passes.

StringRef - Represent a constant reference to a string, i.e.

constexpr StringRef substr(size_t Start, size_t N=npos) const

Return a reference to the substring from [Start, Start + N).

bool starts_with(StringRef Prefix) const

Check if this string starts with the given Prefix.

constexpr size_t size() const

size - Get the string size.

bool ends_with(StringRef Suffix) const

Check if this string ends with the given Suffix.

Primary interface to the complete machine description for the target machine.

This class implements an extremely fast bulk output stream that can only output to a stream.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

Abstract Attribute helper functions.

@ C

The default llvm calling convention, compatible with C.

template class LLVM_TEMPLATE_ABI opt< bool >

LLVM_ABI IntrusiveRefCntPtr< FileSystem > getRealFileSystem()

Gets an vfs::FileSystem for the 'real' file system, as seen by the operating system.

This is an optimization pass for GlobalISel generic memory operations.

std::function< bool(const TargetRegisterInfo &TRI, const MachineRegisterInfo &MRI, const Register Reg)> RegAllocFilterFunc

Filter function for register classes during regalloc.

bool parseAnalysisUtilityPasses(StringRef AnalysisName, StringRef PipelineName, PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs... > &PM)

This utility template takes care of adding require<> and invalidate<> passes for an analysis to a giv...

Definition PassBuilder.h:883

AnalysisManager< MachineFunction > MachineFunctionAnalysisManager

PassManager< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & > CGSCCPassManager

The CGSCC pass manager.

AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & > CGSCCAnalysisManager

The CGSCC analysis manager.

AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager

The loop analysis manager.

ThinOrFullLTOPhase

This enumerates the LLVM full LTO or ThinLTO optimization phases.

@ None

No LTO/ThinLTO behavior needed.

PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > LoopPassManager

The Loop pass manager.

LLVM_ABI cl::opt< bool > PrintPipelinePasses

Common option used by multiple tools to print pipeline passes.

PassManager< Module > ModulePassManager

Convenience typedef for a pass manager over modules.

class LLVM_GSL_OWNER SmallVector

Forward declaration of SmallVector so that calculateSmallVectorDefaultInlinedElements can reference s...

PassManager< Function > FunctionPassManager

Convenience typedef for a pass manager over functions.

ArrayRef(const T &OneElt) -> ArrayRef< T >

PassManager< MachineFunction > MachineFunctionPassManager

Convenience typedef for a pass manager over functions.

AnalysisManager< Function > FunctionAnalysisManager

Convenience typedef for the Function analysis manager.

AnalysisManager< Module > ModuleAnalysisManager

Convenience typedef for the Module analysis manager.

A CRTP mix-in that provides informational APIs needed for analysis passes.

A special type used by analysis passes to provide an address that identifies that particular analysis...

Support structure for SCC passes to communicate updates the call graph back to the CGSCC pass manager...

A no-op pass template which simply forces a specific analysis result to be invalidated.

The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...

Definition PassBuilder.h:943

No-op CGSCC pass which does nothing.

Definition PassBuilder.h:930

PreservedAnalyses run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &, LazyCallGraph &, CGSCCUpdateResult &UR)

Definition PassBuilder.h:931

Definition PassBuilder.h:962

No-op function pass which does nothing.

Definition PassBuilder.h:950

PreservedAnalyses run(Function &F, FunctionAnalysisManager &)

Definition PassBuilder.h:951

Definition PassBuilder.h:995

No-op loop nest pass which does nothing.

Definition PassBuilder.h:967

PreservedAnalyses run(LoopNest &L, LoopAnalysisManager &, LoopStandardAnalysisResults &, LPMUpdater &)

Definition PassBuilder.h:968

No-op loop pass which does nothing.

Definition PassBuilder.h:975

PreservedAnalyses run(Loop &L, LoopAnalysisManager &, LoopStandardAnalysisResults &, LPMUpdater &)

Definition PassBuilder.h:976

No-op machine function pass which does nothing.

Definition PassBuilder.h:983

PreservedAnalyses run(MachineFunction &, MachineFunctionAnalysisManager &)

Definition PassBuilder.h:984

Definition PassBuilder.h:925

No-op module pass which does nothing.

Definition PassBuilder.h:913

PreservedAnalyses run(Module &M, ModuleAnalysisManager &)

Definition PassBuilder.h:914

A struct to capture parsed pass pipeline names.

Definition PassBuilder.h:130

std::vector< PipelineElement > InnerPipeline

Definition PassBuilder.h:132

StringRef Name

Definition PassBuilder.h:131

A CRTP mix-in to automatically provide informational APIs needed for passes.

A utility pass template to force an analysis result to be available.