[lld] r352667 - [LTO] Set CGOptLevel in LTO config.

Sam Clegg via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 30 12:46:18 PST 2019


Author: sbc
Date: Wed Jan 30 12:46:18 2019
New Revision: 352667

URL: http://llvm.org/viewvc/llvm-project?rev=352667&view=rev
Log:
[LTO] Set CGOptLevel in LTO config.

Previously we were never setting this which means it was always being
set to Default (-O2/-Os).

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

Modified:
    lld/trunk/COFF/LTO.cpp
    lld/trunk/Common/Args.cpp
    lld/trunk/ELF/LTO.cpp
    lld/trunk/include/lld/Common/Args.h
    lld/trunk/wasm/LTO.cpp

Modified: lld/trunk/COFF/LTO.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/LTO.cpp?rev=352667&r1=352666&r2=352667&view=diff
==============================================================================
--- lld/trunk/COFF/LTO.cpp (original)
+++ lld/trunk/COFF/LTO.cpp Wed Jan 30 12:46:18 2019
@@ -10,6 +10,7 @@
 #include "Config.h"
 #include "InputFiles.h"
 #include "Symbols.h"
+#include "lld/Common/Args.h"
 #include "lld/Common/ErrorHandler.h"
 #include "lld/Common/Strings.h"
 #include "lld/Common/TargetOptionsCommandFlags.h"
@@ -61,6 +62,7 @@ static std::unique_ptr<lto::LTO> createL
   C.OptLevel = Config->LTOO;
   C.CPU = GetCPUStr();
   C.MAttrs = GetMAttrs();
+  C.CGOptLevel = args::getCGOptLevel(Config->LTOO);
 
   if (Config->SaveTemps)
     checkError(C.addSaveTemps(std::string(Config->OutputFile) + ".",

Modified: lld/trunk/Common/Args.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/Common/Args.cpp?rev=352667&r1=352666&r2=352667&view=diff
==============================================================================
--- lld/trunk/Common/Args.cpp (original)
+++ lld/trunk/Common/Args.cpp Wed Jan 30 12:46:18 2019
@@ -17,6 +17,15 @@
 using namespace llvm;
 using namespace lld;
 
+// TODO(sbc): Remove this once CGOptLevel can be set completely based on bitcode
+// function metadata.
+CodeGenOpt::Level lld::args::getCGOptLevel(int OptLevelLTO) {
+  if (OptLevelLTO == 3)
+    return CodeGenOpt::Aggressive;
+  assert(OptLevelLTO < 3);
+  return CodeGenOpt::Default;
+}
+
 int lld::args::getInteger(opt::InputArgList &Args, unsigned Key, int Default) {
   auto *A = Args.getLastArg(Key);
   if (!A)

Modified: lld/trunk/ELF/LTO.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.cpp?rev=352667&r1=352666&r2=352667&view=diff
==============================================================================
--- lld/trunk/ELF/LTO.cpp (original)
+++ lld/trunk/ELF/LTO.cpp Wed Jan 30 12:46:18 2019
@@ -12,6 +12,7 @@
 #include "LinkerScript.h"
 #include "SymbolTable.h"
 #include "Symbols.h"
+#include "lld/Common/Args.h"
 #include "lld/Common/ErrorHandler.h"
 #include "lld/Common/TargetOptionsCommandFlags.h"
 #include "llvm/ADT/STLExtras.h"
@@ -88,6 +89,7 @@ static lto::Config createConfig() {
   C.OptLevel = Config->LTOO;
   C.CPU = GetCPUStr();
   C.MAttrs = GetMAttrs();
+  C.CGOptLevel = args::getCGOptLevel(Config->LTOO);
 
   // Set up a custom pipeline if we've been asked to.
   C.OptPipeline = Config->LTONewPmPasses;

Modified: lld/trunk/include/lld/Common/Args.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Common/Args.h?rev=352667&r1=352666&r2=352667&view=diff
==============================================================================
--- lld/trunk/include/lld/Common/Args.h (original)
+++ lld/trunk/include/lld/Common/Args.h Wed Jan 30 12:46:18 2019
@@ -10,6 +10,7 @@
 #define LLD_ARGS_H
 
 #include "lld/Common/LLVM.h"
+#include "llvm/Support/CodeGen.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include <vector>
 
@@ -21,7 +22,11 @@ class InputArgList;
 
 namespace lld {
 namespace args {
+
+llvm::CodeGenOpt::Level getCGOptLevel(int OptLevelLTO);
+
 int getInteger(llvm::opt::InputArgList &Args, unsigned Key, int Default);
+
 std::vector<StringRef> getStrings(llvm::opt::InputArgList &Args, int Id);
 
 uint64_t getZOptionValue(llvm::opt::InputArgList &Args, int Id, StringRef Key,

Modified: lld/trunk/wasm/LTO.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/LTO.cpp?rev=352667&r1=352666&r2=352667&view=diff
==============================================================================
--- lld/trunk/wasm/LTO.cpp (original)
+++ lld/trunk/wasm/LTO.cpp Wed Jan 30 12:46:18 2019
@@ -10,6 +10,7 @@
 #include "Config.h"
 #include "InputFiles.h"
 #include "Symbols.h"
+#include "lld/Common/Args.h"
 #include "lld/Common/ErrorHandler.h"
 #include "lld/Common/Strings.h"
 #include "lld/Common/TargetOptionsCommandFlags.h"
@@ -53,6 +54,7 @@ static std::unique_ptr<lto::LTO> createL
   C.DiagHandler = diagnosticHandler;
   C.OptLevel = Config->LTOO;
   C.MAttrs = GetMAttrs();
+  C.CGOptLevel = args::getCGOptLevel(Config->LTOO);
 
   if (Config->Relocatable)
     C.RelocModel = None;




More information about the llvm-commits mailing list