Skip to content

Commit 0a1aa6c

Browse files
authored
[NFC][CodeGen] Change CodeGenOpt::Level/CodeGenFileType into enum classes (#66295)
This will make it easy for callers to see issues with and fix up calls to createTargetMachine after a future change to the params of TargetMachine. This matches other nearby enums. For downstream users, this should be a fairly straightforward replacement, e.g. s/CodeGenOpt::Aggressive/CodeGenOptLevel::Aggressive or s/CGFT_/CodeGenFileType::
1 parent ae84b16 commit 0a1aa6c

File tree

237 files changed

+764
-752
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

237 files changed

+764
-752
lines changed

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -314,12 +314,12 @@ getCodeModel(const CodeGenOptions &CodeGenOpts) {
314314

315315
static CodeGenFileType getCodeGenFileType(BackendAction Action) {
316316
if (Action == Backend_EmitObj)
317-
return CGFT_ObjectFile;
317+
return CodeGenFileType::ObjectFile;
318318
else if (Action == Backend_EmitMCNull)
319-
return CGFT_Null;
319+
return CodeGenFileType::Null;
320320
else {
321321
assert(Action == Backend_EmitAssembly && "Invalid action!");
322-
return CGFT_AssemblyFile;
322+
return CodeGenFileType::AssemblyFile;
323323
}
324324
}
325325

@@ -561,10 +561,10 @@ void EmitAssemblyHelper::CreateTargetMachine(bool MustCreateTM) {
561561
std::string FeaturesStr =
562562
llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ",");
563563
llvm::Reloc::Model RM = CodeGenOpts.RelocationModel;
564-
std::optional<CodeGenOpt::Level> OptLevelOrNone =
564+
std::optional<CodeGenOptLevel> OptLevelOrNone =
565565
CodeGenOpt::getLevel(CodeGenOpts.OptimizationLevel);
566566
assert(OptLevelOrNone && "Invalid optimization level!");
567-
CodeGenOpt::Level OptLevel = *OptLevelOrNone;
567+
CodeGenOptLevel OptLevel = *OptLevelOrNone;
568568

569569
llvm::TargetOptions Options;
570570
if (!initTargetOptions(Diags, Options, CodeGenOpts, TargetOpts, LangOpts,
@@ -1216,7 +1216,7 @@ static void runThinLTOBackend(
12161216
Conf.CodeModel = getCodeModel(CGOpts);
12171217
Conf.MAttrs = TOpts.Features;
12181218
Conf.RelocModel = CGOpts.RelocationModel;
1219-
std::optional<CodeGenOpt::Level> OptLevelOrNone =
1219+
std::optional<CodeGenOptLevel> OptLevelOrNone =
12201220
CodeGenOpt::getLevel(CGOpts.OptimizationLevel);
12211221
assert(OptLevelOrNone && "Invalid optimization level!");
12221222
Conf.CGOptLevel = *OptLevelOrNone;

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -661,27 +661,27 @@ static bool FixupInvocation(CompilerInvocation &Invocation,
661661

662662
static unsigned getOptimizationLevel(ArgList &Args, InputKind IK,
663663
DiagnosticsEngine &Diags) {
664-
unsigned DefaultOpt = llvm::CodeGenOpt::None;
664+
unsigned DefaultOpt = 0;
665665
if ((IK.getLanguage() == Language::OpenCL ||
666666
IK.getLanguage() == Language::OpenCLCXX) &&
667667
!Args.hasArg(OPT_cl_opt_disable))
668-
DefaultOpt = llvm::CodeGenOpt::Default;
668+
DefaultOpt = 2;
669669

670670
if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
671671
if (A->getOption().matches(options::OPT_O0))
672-
return llvm::CodeGenOpt::None;
672+
return 0;
673673

674674
if (A->getOption().matches(options::OPT_Ofast))
675-
return llvm::CodeGenOpt::Aggressive;
675+
return 3;
676676

677677
assert(A->getOption().matches(options::OPT_O));
678678

679679
StringRef S(A->getValue());
680680
if (S == "s" || S == "z")
681-
return llvm::CodeGenOpt::Default;
681+
return 2;
682682

683683
if (S == "g")
684-
return llvm::CodeGenOpt::Less;
684+
return 1;
685685

686686
return getLastArgIntValue(Args, OPT_O, DefaultOpt, Diags);
687687
}

clang/lib/Interpreter/DeviceOffload.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ llvm::Expected<llvm::StringRef> IncrementalCUDADeviceParser::GeneratePTX() {
8888

8989
llvm::legacy::PassManager PM;
9090
if (TargetMachine->addPassesToEmitFile(PM, dest, nullptr,
91-
llvm::CGFT_AssemblyFile)) {
91+
llvm::CodeGenFileType::AssemblyFile)) {
9292
return llvm::make_error<llvm::StringError>(
9393
"NVPTX backend cannot produce PTX code.",
9494
llvm::inconvertibleErrorCode());

clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ using namespace llvm;
4848
typedef void (*LLVMFunc)(int*, int*, int*, int);
4949

5050
// Helper function to parse command line args and find the optimization level
51-
static CodeGenOpt::Level
52-
getOptLevel(const std::vector<const char *> &ExtraArgs) {
51+
static CodeGenOptLevel getOptLevel(const std::vector<const char *> &ExtraArgs) {
5352
// Find the optimization level from the command line args
54-
CodeGenOpt::Level OLvl = CodeGenOpt::Default;
53+
CodeGenOptLevel OLvl = CodeGenOptLevel::Default;
5554
for (auto &A : ExtraArgs) {
5655
if (A[0] == '-' && A[1] == 'O') {
5756
if (auto Level = CodeGenOpt::parseLevel(A[2])) {
@@ -73,19 +72,19 @@ static void ErrorAndExit(std::string message) {
7372
// Helper function to add optimization passes to the TargetMachine at the
7473
// specified optimization level, OptLevel
7574
static void RunOptimizationPasses(raw_ostream &OS, Module &M,
76-
CodeGenOpt::Level OptLevel) {
75+
CodeGenOptLevel OptLevel) {
7776
llvm::OptimizationLevel OL;
7877
switch (OptLevel) {
79-
case CodeGenOpt::None:
78+
case CodeGenOptLevel::None:
8079
OL = OptimizationLevel::O0;
8180
break;
82-
case CodeGenOpt::Less:
81+
case CodeGenOptLevel::Less:
8382
OL = OptimizationLevel::O1;
8483
break;
85-
case CodeGenOpt::Default:
84+
case CodeGenOptLevel::Default:
8685
OL = OptimizationLevel::O2;
8786
break;
88-
case CodeGenOpt::Aggressive:
87+
case CodeGenOptLevel::Aggressive:
8988
OL = OptimizationLevel::O3;
9089
break;
9190
}
@@ -110,7 +109,7 @@ static void RunOptimizationPasses(raw_ostream &OS, Module &M,
110109
}
111110

112111
// Mimics the opt tool to run an optimization pass over the provided IR
113-
static std::string OptLLVM(const std::string &IR, CodeGenOpt::Level OLvl) {
112+
static std::string OptLLVM(const std::string &IR, CodeGenOptLevel OLvl) {
114113
// Create a module that will run the optimization passes
115114
SMDiagnostic Err;
116115
LLVMContext Context;
@@ -154,7 +153,7 @@ static void RunFuncOnInputs(LLVMFunc f, int Arr[kNumArrays][kArraySize]) {
154153
}
155154

156155
// Takes a string of IR and compiles it using LLVM's JIT Engine
157-
static void CreateAndRunJITFunc(const std::string &IR, CodeGenOpt::Level OLvl) {
156+
static void CreateAndRunJITFunc(const std::string &IR, CodeGenOptLevel OLvl) {
158157
SMDiagnostic Err;
159158
LLVMContext Context;
160159
std::unique_ptr<Module> M = parseIR(MemoryBufferRef(IR, "IR"), Err, Context);
@@ -205,7 +204,7 @@ static void CreateAndRunJITFunc(const std::string &IR, CodeGenOpt::Level OLvl) {
205204
#endif
206205

207206
// Figure out if we are running the optimized func or the unoptimized func
208-
RunFuncOnInputs(f, (OLvl == CodeGenOpt::None) ? UnoptArrays : OptArrays);
207+
RunFuncOnInputs(f, (OLvl == CodeGenOptLevel::None) ? UnoptArrays : OptArrays);
209208

210209
EE->runStaticConstructorsDestructors(true);
211210
}
@@ -219,13 +218,13 @@ void clang_fuzzer::HandleLLVM(const std::string &IR,
219218
memcpy(UnoptArrays, InputArrays, kTotalSize);
220219

221220
// Parse ExtraArgs to set the optimization level
222-
CodeGenOpt::Level OLvl = getOptLevel(ExtraArgs);
221+
CodeGenOptLevel OLvl = getOptLevel(ExtraArgs);
223222

224223
// First we optimize the IR by running a loop vectorizer pass
225224
std::string OptIR = OptLLVM(IR, OLvl);
226225

227226
CreateAndRunJITFunc(OptIR, OLvl);
228-
CreateAndRunJITFunc(IR, CodeGenOpt::None);
227+
CreateAndRunJITFunc(IR, CodeGenOptLevel::None);
229228

230229
if (memcmp(OptArrays, UnoptArrays, kTotalSize))
231230
ErrorAndExit("!!!BUG!!!");

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ std::unique_ptr<lto::LTO> createLTO(
528528

529529
StringRef OptLevel = Args.getLastArgValue(OPT_opt_level, "O2");
530530
Conf.MAttrs = Features;
531-
std::optional<CodeGenOpt::Level> CGOptLevelOrNone =
531+
std::optional<CodeGenOptLevel> CGOptLevelOrNone =
532532
CodeGenOpt::parseLevel(OptLevel[1]);
533533
assert(CGOptLevelOrNone && "Invalid optimization level");
534534
Conf.CGOptLevel = *CGOptLevelOrNone;
@@ -569,8 +569,9 @@ std::unique_ptr<lto::LTO> createLTO(
569569
};
570570
}
571571
Conf.PostOptModuleHook = Hook;
572-
Conf.CGFileType =
573-
(Triple.isNVPTX() || SaveTemps) ? CGFT_AssemblyFile : CGFT_ObjectFile;
572+
Conf.CGFileType = (Triple.isNVPTX() || SaveTemps)
573+
? CodeGenFileType::AssemblyFile
574+
: CodeGenFileType::ObjectFile;
574575

575576
// TODO: Handle remark files
576577
Conf.HasWholeProgramVisibility = Args.hasArg(OPT_whole_program);
@@ -840,7 +841,8 @@ Expected<StringRef> compileModule(Module &M) {
840841
legacy::PassManager CodeGenPasses;
841842
TargetLibraryInfoImpl TLII(Triple(M.getTargetTriple()));
842843
CodeGenPasses.add(new TargetLibraryInfoWrapperPass(TLII));
843-
if (TM->addPassesToEmitFile(CodeGenPasses, *OS, nullptr, CGFT_ObjectFile))
844+
if (TM->addPassesToEmitFile(CodeGenPasses, *OS, nullptr,
845+
CodeGenFileType::ObjectFile))
844846
return createStringError(inconvertibleErrorCode(),
845847
"Failed to execute host backend");
846848
CodeGenPasses.run(M);

flang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,12 @@ static bool parseShowColorsArgs(const llvm::opt::ArgList &args,
9898
/// Extracts the optimisation level from \a args.
9999
static unsigned getOptimizationLevel(llvm::opt::ArgList &args,
100100
clang::DiagnosticsEngine &diags) {
101-
unsigned defaultOpt = llvm::CodeGenOpt::None;
101+
unsigned defaultOpt = 0;
102102

103103
if (llvm::opt::Arg *a =
104104
args.getLastArg(clang::driver::options::OPT_O_Group)) {
105105
if (a->getOption().matches(clang::driver::options::OPT_O0))
106-
return llvm::CodeGenOpt::None;
106+
return 0;
107107

108108
assert(a->getOption().matches(clang::driver::options::OPT_O));
109109

flang/lib/Frontend/FrontendActions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -777,10 +777,10 @@ bool CodeGenAction::setUpTargetMachine() {
777777

778778
// Create `TargetMachine`
779779
const auto &CGOpts = ci.getInvocation().getCodeGenOpts();
780-
std::optional<llvm::CodeGenOpt::Level> OptLevelOrNone =
780+
std::optional<llvm::CodeGenOptLevel> OptLevelOrNone =
781781
llvm::CodeGenOpt::getLevel(CGOpts.OptimizationLevel);
782782
assert(OptLevelOrNone && "Invalid optimization level!");
783-
llvm::CodeGenOpt::Level OptLevel = *OptLevelOrNone;
783+
llvm::CodeGenOptLevel OptLevel = *OptLevelOrNone;
784784
std::string featuresStr = getTargetFeatures(ci);
785785
tm.reset(theTarget->createTargetMachine(
786786
theTriple, /*CPU=*/targetOpts.cpu,
@@ -848,8 +848,8 @@ static void generateMachineCodeOrAssemblyImpl(clang::DiagnosticsEngine &diags,
848848
codeGenPasses.add(new llvm::TargetLibraryInfoWrapperPass(*tlii));
849849

850850
llvm::CodeGenFileType cgft = (act == BackendActionTy::Backend_EmitAssembly)
851-
? llvm::CodeGenFileType::CGFT_AssemblyFile
852-
: llvm::CodeGenFileType::CGFT_ObjectFile;
851+
? llvm::CodeGenFileType::AssemblyFile
852+
: llvm::CodeGenFileType::ObjectFile;
853853
if (tm.addPassesToEmitFile(codeGenPasses, os, nullptr, cgft)) {
854854
unsigned diagID =
855855
diags.getCustomDiagID(clang::DiagnosticsEngine::Error,

lld/COFF/LTO.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ lto::Config BitcodeCompiler::createConfig() {
8888
c.OptLevel = ctx.config.ltoo;
8989
c.CPU = getCPUStr();
9090
c.MAttrs = getMAttrs();
91-
std::optional<CodeGenOpt::Level> optLevelOrNone = CodeGenOpt::getLevel(
91+
std::optional<CodeGenOptLevel> optLevelOrNone = CodeGenOpt::getLevel(
9292
ctx.config.ltoCgo.value_or(args::getCGOptLevel(ctx.config.ltoo)));
9393
assert(optLevelOrNone && "Invalid optimization level!");
9494
c.CGOptLevel = *optLevelOrNone;

lld/ELF/Config.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ struct Config {
341341
uint64_t zStackSize;
342342
unsigned ltoPartitions;
343343
unsigned ltoo;
344-
llvm::CodeGenOpt::Level ltoCgo;
344+
llvm::CodeGenOptLevel ltoCgo;
345345
unsigned optimize;
346346
StringRef thinLTOJobs;
347347
unsigned timeTraceGranularity;

lld/ELF/LTO.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ static lto::Config createConfig() {
174174
}
175175

176176
if (config->ltoEmitAsm) {
177-
c.CGFileType = CGFT_AssemblyFile;
177+
c.CGFileType = CodeGenFileType::AssemblyFile;
178178
c.Options.MCOptions.AsmVerbose = true;
179179
}
180180

0 commit comments

Comments
 (0)