diff options
author | Xinliang David Li <davidxl@google.com> | 2015-10-27 05:15:35 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@google.com> | 2015-10-27 05:15:35 +0000 |
commit | 170cd100ed6f38ec5826dbd1bd6930ddfd3490a4 (patch) | |
tree | 62a9c01bf3f5b2eff93c8dc6730f1c82023f8712 /clang/lib/Driver/ToolChains.cpp | |
parent | b61e14e5962a2b881db3b7515e8c4f6f762fa0f2 (diff) | |
download | bcm5719-llvm-170cd100ed6f38ec5826dbd1bd6930ddfd3490a4.tar.gz bcm5719-llvm-170cd100ed6f38ec5826dbd1bd6930ddfd3490a4.zip |
Create undef reference to profile hook symbol
Create undef reference to profile hook symbol when
PGO instrumentation is turned on. This allows
LLVM to omit emission of hook variable use method
for every single module instrumented.
llvm-svn: 251385
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index e8a2d833d3c..d0f4dac3e13 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -25,6 +25,7 @@ #include "llvm/Option/ArgList.h" #include "llvm/Option/OptTable.h" #include "llvm/Option/Option.h" +#include "llvm/ProfileData/InstrProf.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" @@ -3811,6 +3812,18 @@ SanitizerMask Linux::getSupportedSanitizers() const { return Res; } +void Linux::addProfileRTLibs(const llvm::opt::ArgList &Args, + llvm::opt::ArgStringList &CmdArgs) const { + if (!needsProfileRT(Args)) return; + + // Add linker option -u__llvm_runtime_variable to cause runtime + // initialization module to be linked in. + if (!Args.hasArg(options::OPT_coverage)) + CmdArgs.push_back(Args.MakeArgString( + Twine("-u", llvm::getInstrProfRuntimeHookVarName()))); + ToolChain::addProfileRTLibs(Args, CmdArgs); +} + /// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly. DragonFly::DragonFly(const Driver &D, const llvm::Triple &Triple, |