Fix invocation of Gold plugin with LTO after r355331

The above commit breaks the usage of PGO and LTO when -fprofile-use is
supplied without a path. This patch changes the usage of this argument
to be inline with its use in addPGOAndCoverageFlags().

Differential revision: https://reviews.llvm.org/D59304

llvm-svn: 356111
This commit is contained in:
Nemanja Ivanovic 2019-03-13 23:54:52 +00:00
parent d383a342aa
commit 784cdb439e
2 changed files with 11 additions and 1 deletions

View File

@ -464,8 +464,12 @@ void tools::AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args,
CmdArgs.push_back(
Args.MakeArgString("-plugin-opt=cs-profile-path=default_%m.profraw"));
} else if (ProfileUseArg) {
SmallString<128> Path(
ProfileUseArg->getNumValues() == 0 ? "" : ProfileUseArg->getValue());
if (Path.empty() || llvm::sys::fs::is_directory(Path))
llvm::sys::path::append(Path, "default.profdata");
CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=cs-profile-path=") +
ProfileUseArg->getValue()));
Path));
}
// Need this flag to turn on new pass manager via Gold plugin.

View File

@ -0,0 +1,6 @@
// RUN: touch %t.o
//
// RUN: %clang -target x86_64-unknown-linux -### %t.o -flto=thin \
// RUN: -fprofile-use 2>&1 | FileCheck %s
// CHECK: -plugin-opt=cs-profile-path=default.profdata