diff options
Diffstat (limited to 'lib/Driver/ToolChains/Clang.cpp')
| -rw-r--r-- | lib/Driver/ToolChains/Clang.cpp | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 589f53b119217..78ee7a78176ff 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -718,8 +718,9 @@ static void appendUserToPath(SmallVectorImpl<char> &Result) {    Result.append(UID.begin(), UID.end());  } -static void addPGOAndCoverageFlags(Compilation &C, const Driver &D, -                                   const InputInfo &Output, const ArgList &Args, +static void addPGOAndCoverageFlags(const ToolChain &TC, Compilation &C, +                                   const Driver &D, const InputInfo &Output, +                                   const ArgList &Args,                                     ArgStringList &CmdArgs) {    auto *PGOGenerateArg = Args.getLastArg(options::OPT_fprofile_generate, @@ -759,6 +760,11 @@ static void addPGOAndCoverageFlags(Compilation &C, const Driver &D,                                             ProfileGenerateArg->getValue()));      // The default is to use Clang Instrumentation.      CmdArgs.push_back("-fprofile-instrument=clang"); +    if (TC.getTriple().isWindowsMSVCEnvironment()) { +      // Add dependent lib for clang_rt.profile +      CmdArgs.push_back(Args.MakeArgString("--dependent-lib=" + +                                           TC.getCompilerRT(Args, "profile"))); +    }    }    if (PGOGenerateArg) { @@ -4118,7 +4124,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,    // sampling, overhead of call arc collection is way too high and there's no    // way to collect the output.    if (!Triple.isNVPTX()) -    addPGOAndCoverageFlags(C, D, Output, Args, CmdArgs); +    addPGOAndCoverageFlags(TC, C, D, Output, Args, CmdArgs);    if (auto *ABICompatArg = Args.getLastArg(options::OPT_fclang_abi_compat_EQ))      ABICompatArg->render(Args, CmdArgs); | 
