[llvm] 0d487cf - [LTOCodeGenerator] Use lto::Config for options (NFC).

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 31 11:10:12 PST 2021


Author: Florian Hahn
Date: 2021-01-31T19:08:07Z
New Revision: 0d487cf87aa1b609b7db061def3e5ad068576ecf

URL: https://github.com/llvm/llvm-project/commit/0d487cf87aa1b609b7db061def3e5ad068576ecf
DIFF: https://github.com/llvm/llvm-project/commit/0d487cf87aa1b609b7db061def3e5ad068576ecf.diff

LOG: [LTOCodeGenerator] Use lto::Config for options (NFC).

This patch removes some options that have been duplicated in
LTOCodeGenerator and instead use lto::Config directly to manage the
options.

This is a cleanup after 6a59f0560648.

Reviewed By: tejohnson

Differential Revision: https://reviews.llvm.org/D95738

Added: 
    

Modified: 
    llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
    llvm/lib/LTO/LTOCodeGenerator.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
index 8a7c49e7fd22..bafce6c96491 100644
--- a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
+++ b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
@@ -75,10 +75,6 @@ struct LTOCodeGenerator {
   LTOCodeGenerator(LLVMContext &Context);
   ~LTOCodeGenerator();
 
-  /// Return a lto::Config object which contains the options set in
-  /// LTOCodeGenerator.
-  lto::Config toConfig() const;
-
   /// Merge given module.  Return true on success.
   ///
   /// Resets \a HasVerifiedInput.
@@ -92,14 +88,16 @@ struct LTOCodeGenerator {
   void setAsmUndefinedRefs(struct LTOModule *);
   void setTargetOptions(const TargetOptions &Options);
   void setDebugInfo(lto_debug_model);
-  void setCodePICModel(Optional<Reloc::Model> Model) { RelocModel = Model; }
+  void setCodePICModel(Optional<Reloc::Model> Model) {
+    Config.RelocModel = Model;
+  }
 
   /// Set the file type to be emitted (assembly or object code).
   /// The default is CGFT_ObjectFile.
-  void setFileType(CodeGenFileType FT) { FileType = FT; }
+  void setFileType(CodeGenFileType FT) { Config.CGFileType = FT; }
 
-  void setCpu(StringRef MCpu) { this->MCpu = std::string(MCpu); }
-  void setAttrs(std::vector<std::string> MAttrs) { this->MAttrs = MAttrs; }
+  void setCpu(StringRef MCpu) { Config.CPU = std::string(MCpu); }
+  void setAttrs(std::vector<std::string> MAttrs) { Config.MAttrs = MAttrs; }
   void setOptLevel(unsigned OptLevel);
 
   void setShouldInternalize(bool Value) { ShouldInternalize = Value; }
@@ -182,11 +180,11 @@ struct LTOCodeGenerator {
 
   /// Enable the Freestanding mode: indicate that the optimizer should not
   /// assume builtins are present on the target.
-  void setFreestanding(bool Enabled) { Freestanding = Enabled; }
+  void setFreestanding(bool Enabled) { Config.Freestanding = Enabled; }
 
-  void setDisableVerify(bool Value) { DisableVerify = Value; }
+  void setDisableVerify(bool Value) { Config.DisableVerify = Value; }
 
-  void setUseNewPM(bool Value) { UseNewPM = Value; }
+  void setUseNewPM(bool Value) { Config.UseNewPM = Value; }
 
   void setDiagnosticHandler(lto_diagnostic_handler_t, void *);
 
@@ -224,31 +222,23 @@ struct LTOCodeGenerator {
   bool EmitDwarfDebugInfo = false;
   bool ScopeRestrictionsDone = false;
   bool HasVerifiedInput = false;
-  Optional<Reloc::Model> RelocModel;
   StringSet<> MustPreserveSymbols;
   StringSet<> AsmUndefinedRefs;
   StringMap<GlobalValue::LinkageTypes> ExternalSymbols;
   std::vector<std::string> CodegenOptions;
   std::string FeatureStr;
-  std::string MCpu;
-  std::vector<std::string> MAttrs;
   std::string NativeObjectPath;
-  TargetOptions Options;
-  CodeGenOpt::Level CGOptLevel = CodeGenOpt::Default;
   const Target *MArch = nullptr;
   std::string TripleStr;
-  unsigned OptLevel = 2;
   lto_diagnostic_handler_t DiagHandler = nullptr;
   void *DiagContext = nullptr;
   bool ShouldInternalize = EnableLTOInternalization;
   bool ShouldEmbedUselists = false;
   bool ShouldRestoreGlobalsLinkage = false;
-  CodeGenFileType FileType = CGFT_ObjectFile;
   std::unique_ptr<ToolOutputFile> DiagnosticOutputFile;
-  bool Freestanding = false;
   std::unique_ptr<ToolOutputFile> StatsFile = nullptr;
-  bool DisableVerify = false;
-  bool UseNewPM = LLVM_ENABLE_NEW_PASS_MANAGER;
+
+  lto::Config Config;
 };
 }
 #endif

diff  --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 86c0906caa36..55f2bf39d957 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -124,32 +124,16 @@ LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context)
       TheLinker(new Linker(*MergedModule)) {
   Context.setDiscardValueNames(LTODiscardValueNames);
   Context.enableDebugTypeODRUniquing();
-}
-
-LTOCodeGenerator::~LTOCodeGenerator() {}
 
-lto::Config LTOCodeGenerator::toConfig() const {
-  lto::Config Conf;
-  Conf.CGFileType = FileType;
-  Conf.CPU = MCpu;
-  Conf.MAttrs = MAttrs;
-  Conf.RelocModel = RelocModel;
-  Conf.Options = Options;
-  Conf.CodeModel = None;
-  Conf.StatsFile = LTOStatsFile;
-  Conf.OptLevel = OptLevel;
-  Conf.Freestanding = Freestanding;
-  Conf.PTO.LoopVectorization = OptLevel > 1;
-  Conf.PTO.SLPVectorization = OptLevel > 1;
-  Conf.DisableVerify = DisableVerify;
-  Conf.PreCodeGenPassesHook = [](legacy::PassManager &PM) {
+  Config.CodeModel = None;
+  Config.StatsFile = LTOStatsFile;
+  Config.PreCodeGenPassesHook = [](legacy::PassManager &PM) {
     PM.add(createObjCARCContractPass());
   };
-  Conf.UseNewPM = UseNewPM;
-
-  return Conf;
 }
 
+LTOCodeGenerator::~LTOCodeGenerator() {}
+
 void LTOCodeGenerator::setAsmUndefinedRefs(LTOModule *Mod) {
   const std::vector<StringRef> &undefs = Mod->getAsmUndefinedRefs();
   for (int i = 0, e = undefs.size(); i != e; ++i)
@@ -184,7 +168,7 @@ void LTOCodeGenerator::setModule(std::unique_ptr<LTOModule> Mod) {
 }
 
 void LTOCodeGenerator::setTargetOptions(const TargetOptions &Options) {
-  this->Options = Options;
+  Config.Options = Options;
 }
 
 void LTOCodeGenerator::setDebugInfo(lto_debug_model Debug) {
@@ -201,19 +185,21 @@ void LTOCodeGenerator::setDebugInfo(lto_debug_model Debug) {
 }
 
 void LTOCodeGenerator::setOptLevel(unsigned Level) {
-  OptLevel = Level;
-  switch (OptLevel) {
+  Config.OptLevel = Level;
+  Config.PTO.LoopVectorization = Config.OptLevel > 1;
+  Config.PTO.SLPVectorization = Config.OptLevel > 1;
+  switch (Config.OptLevel) {
   case 0:
-    CGOptLevel = CodeGenOpt::None;
+    Config.CGOptLevel = CodeGenOpt::None;
     return;
   case 1:
-    CGOptLevel = CodeGenOpt::Less;
+    Config.CGOptLevel = CodeGenOpt::Less;
     return;
   case 2:
-    CGOptLevel = CodeGenOpt::Default;
+    Config.CGOptLevel = CodeGenOpt::Default;
     return;
   case 3:
-    CGOptLevel = CodeGenOpt::Aggressive;
+    Config.CGOptLevel = CodeGenOpt::Aggressive;
     return;
   }
   llvm_unreachable("Unknown optimization level!");
@@ -261,7 +247,7 @@ bool LTOCodeGenerator::compileOptimizedToFile(const char **Name) {
 
   auto AddStream =
       [&](size_t Task) -> std::unique_ptr<lto::NativeObjectStream> {
-    StringRef Extension(FileType == CGFT_AssemblyFile ? "s" : "o");
+    StringRef Extension(Config.CGFileType == CGFT_AssemblyFile ? "s" : "o");
 
     int FD;
     std::error_code EC =
@@ -348,20 +334,20 @@ bool LTOCodeGenerator::determineTarget() {
 
   // Construct LTOModule, hand over ownership of module and target. Use MAttr as
   // the default set of features.
-  SubtargetFeatures Features(join(MAttrs, ""));
+  SubtargetFeatures Features(join(Config.MAttrs, ""));
   Features.getDefaultSubtargetFeatures(Triple);
   FeatureStr = Features.getString();
   // Set a default CPU for Darwin triples.
-  if (MCpu.empty() && Triple.isOSDarwin()) {
+  if (Config.CPU.empty() && Triple.isOSDarwin()) {
     if (Triple.getArch() == llvm::Triple::x86_64)
-      MCpu = "core2";
+      Config.CPU = "core2";
     else if (Triple.getArch() == llvm::Triple::x86)
-      MCpu = "yonah";
+      Config.CPU = "yonah";
     else if (Triple.isArm64e())
-      MCpu = "apple-a12";
+      Config.CPU = "apple-a12";
     else if (Triple.getArch() == llvm::Triple::aarch64 ||
              Triple.getArch() == llvm::Triple::aarch64_32)
-      MCpu = "cyclone";
+      Config.CPU = "cyclone";
   }
 
   TargetMach = createTargetMachine();
@@ -373,7 +359,8 @@ bool LTOCodeGenerator::determineTarget() {
 std::unique_ptr<TargetMachine> LTOCodeGenerator::createTargetMachine() {
   assert(MArch && "MArch is not set!");
   return std::unique_ptr<TargetMachine>(MArch->createTargetMachine(
-      TripleStr, MCpu, FeatureStr, Options, RelocModel, None, CGOptLevel));
+      TripleStr, Config.CPU, FeatureStr, Config.Options, Config.RelocModel,
+      None, Config.CGOptLevel));
 }
 
 // If a linkonce global is present in the MustPreserveSymbols, we need to make
@@ -558,11 +545,10 @@ bool LTOCodeGenerator::optimize() {
   // Add an appropriate DataLayout instance for this module...
   MergedModule->setDataLayout(TargetMach->createDataLayout());
 
-  lto::Config Conf = toConfig();
 
   ModuleSummaryIndex CombinedIndex(false);
   TargetMach = createTargetMachine();
-  if (!opt(Conf, TargetMach.get(), 0, *MergedModule, /*IsThinLTO=*/false,
+  if (!opt(Config, TargetMach.get(), 0, *MergedModule, /*IsThinLTO=*/false,
            /*ExportSummary=*/&CombinedIndex, /*ImportSummary=*/nullptr,
            /*CmdArgs*/ std::vector<uint8_t>())) {
     emitError("LTO middle-end optimizations failed");
@@ -585,11 +571,10 @@ bool LTOCodeGenerator::compileOptimized(lto::AddStreamFn AddStream,
   // for splitting
   restoreLinkageForExternals();
 
-  lto::Config Conf = toConfig();
   ModuleSummaryIndex CombinedIndex(false);
 
-  Error Err =
-      backend(Conf, AddStream, ParallelismLevel, *MergedModule, CombinedIndex);
+  Error Err = backend(Config, AddStream, ParallelismLevel, *MergedModule,
+                      CombinedIndex);
   assert(!Err && "unexpected code-generation failure");
   (void)Err;
 


        


More information about the llvm-commits mailing list