1 //===- CGPassBuilderOption.h - Options for pass builder ---------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file declares the CCState and CCValAssign classes, used for lowering
10 // and implementing calling conventions.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_TARGET_CGPASSBUILDEROPTION_H
15 #define LLVM_TARGET_CGPASSBUILDEROPTION_H
16 
17 #include "llvm/Target/TargetOptions.h"
18 #include <optional>
19 
20 namespace llvm {
21 
22 enum class RunOutliner { TargetDefault, AlwaysOutline, NeverOutline };
23 enum class RegAllocType { Default, Basic, Fast, Greedy, PBQP };
24 
25 // Not one-on-one but mostly corresponding to commandline options in
26 // TargetPassConfig.cpp.
27 struct CGPassBuilderOption {
28   std::optional<bool> OptimizeRegAlloc;
29   std::optional<bool> EnableIPRA;
30   bool DebugPM = false;
31   bool DisableVerify = false;
32   bool EnableImplicitNullChecks = false;
33   bool EnableBlockPlacementStats = false;
34   bool EnableMachineFunctionSplitter = false;
35   bool MISchedPostRA = false;
36   bool EarlyLiveIntervals = false;
37   bool GCEmptyBlocks = false;
38 
39   bool DisableLSR = false;
40   bool DisableCGP = false;
41   bool PrintLSR = false;
42   bool DisableMergeICmps = false;
43   bool DisablePartialLibcallInlining = false;
44   bool DisableConstantHoisting = false;
45   bool DisableSelectOptimize = true;
46   bool DisableAtExitBasedGlobalDtorLowering = false;
47   bool DisableExpandReductions = false;
48   bool DisableRAFSProfileLoader = false;
49   bool DisableCFIFixup = false;
50   bool PrintAfterISel = false;
51   bool PrintISelInput = false;
52   bool RequiresCodeGenSCCOrder = false;
53 
54   RunOutliner EnableMachineOutliner = RunOutliner::TargetDefault;
55   StringRef RegAlloc = "default";
56   std::optional<GlobalISelAbortMode> EnableGlobalISelAbort;
57   std::string FSProfileFile;
58   std::string FSRemappingFile;
59 
60   std::optional<bool> VerifyMachineCode;
61   std::optional<bool> EnableFastISelOption;
62   std::optional<bool> EnableGlobalISelOption;
63   std::optional<bool> DebugifyAndStripAll;
64   std::optional<bool> DebugifyCheckAndStripAll;
65 };
66 
67 CGPassBuilderOption getCGPassBuilderOption();
68 
69 } // namespace llvm
70 
71 #endif // LLVM_TARGET_CGPASSBUILDEROPTION_H
72