Merge pull request #1737 from JohanEngelen/disablecross

Only enable cross-module inlining when explicitly set on the commandline.
This commit is contained in:
David Nadlinger 2016-09-08 22:18:42 +01:00 committed by GitHub
commit d8249bb2e1
7 changed files with 33 additions and 21 deletions

View file

@ -92,11 +92,11 @@ static cl::opt<cl::boolOrDefault, false, opts::FlagParser<cl::boolOrDefault>>
static llvm::cl::opt<llvm::cl::boolOrDefault, false,
opts::FlagParser<llvm::cl::boolOrDefault>>
enableCrossModuleInlining(
"cross-module-inlining",
llvm::cl::desc("Enable cross-module function inlining (default enabled "
"with inlining) (LLVM >= 3.7)"),
llvm::cl::ZeroOrMore, llvm::cl::Hidden);
enableCrossModuleInlining(
"cross-module-inlining",
llvm::cl::desc("Enable cross-module function inlining (default "
"disabled) (LLVM >= 3.7)"),
llvm::cl::ZeroOrMore, llvm::cl::Hidden);
static cl::opt<bool> unitAtATime("unit-at-a-time", cl::desc("Enable basic IPO"),
cl::init(true));
@ -141,8 +141,7 @@ bool willInline() {
bool willCrossModuleInline() {
#if LDC_LLVM_VER >= 307
return enableCrossModuleInlining == llvm::cl::BOU_TRUE ||
(enableCrossModuleInlining == llvm::cl::BOU_UNSET && willInline());
return enableCrossModuleInlining == llvm::cl::BOU_TRUE;
#else
// Cross-module inlining is disabled for <3.7 because we don't emit symbols in
// COMDAT any groups pre-LLVM3.7. With cross-module inlining enabled, without