[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