diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-11-17 00:36:57 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-11-17 00:36:57 +0000 |
commit | f471487ff1e673531543576bc170898c2ab19f41 (patch) | |
tree | 409c13c546ec7eefbb3795b33781b3e1a4bad88f | |
parent | 643ffaa3a2cf619c048305680bda1a337ed4b7bd (diff) |
clang/Darwin: Use the compiler-rt provided profile library.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144869 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Driver/ToolChains.cpp | 13 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 9 | ||||
-rw-r--r-- | runtime/compiler-rt/Makefile | 4 |
3 files changed, 16 insertions, 10 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index b232bc0584..f4209ad08a 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -454,6 +454,19 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, return; } + // If we are building profile support, link that library in. + if (Args.hasArg(options::OPT_fprofile_arcs) || + Args.hasArg(options::OPT_fprofile_generate) || + Args.hasArg(options::OPT_fcreate_profile) || + Args.hasArg(options::OPT_coverage)) { + // Select the appropriate runtime library for the target. + if (isTargetIPhoneOS()) { + AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.profile_ios.a"); + } else { + AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.profile_osx.a"); + } + } + // Otherwise link libSystem, then the dynamic runtime library, and finally any // target specific static runtime library. CmdArgs.push_back("-lSystem"); diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 52438cc34d..906f2ae0db 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -160,13 +160,6 @@ static void addProfileRT(const ToolChain &TC, const ArgList &Args, std::string ProfileRT = std::string(TC.getDriver().Dir) + "/../lib/libprofile_rt.a"; - if (Triple.isOSDarwin()) { - // On Darwin, if the static library doesn't exist try the dylib. - bool Exists; - if (llvm::sys::fs::exists(ProfileRT, Exists) || !Exists) - ProfileRT.replace(ProfileRT.size() - 1, 1, "dylib"); - } - CmdArgs.push_back(Args.MakeArgString(ProfileRT)); } @@ -3589,8 +3582,6 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, // endfile_spec is empty. } - addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple()); - Args.AddAllArgs(CmdArgs, options::OPT_T_Group); Args.AddAllArgs(CmdArgs, options::OPT_F); diff --git a/runtime/compiler-rt/Makefile b/runtime/compiler-rt/Makefile index 8963c393f3..bba8fb3048 100644 --- a/runtime/compiler-rt/Makefile +++ b/runtime/compiler-rt/Makefile @@ -76,7 +76,9 @@ ifeq ($(shell test -d $(COMPILERRT_SRC_ROOT) && echo OK),OK) RuntimeDirs := ifeq ($(OS),Darwin) RuntimeDirs += darwin -RuntimeLibrary.darwin.Configs := eprintf 10.4 osx ios cc_kext +RuntimeLibrary.darwin.Configs := \ + eprintf 10.4 osx ios cc_kext \ + profile_osx profile_ios # On Darwin, fake Clang into using the iOS assembler (since compiler-rt wants to # build ARM bits). |