summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorLuke Cheeseman <luke.cheeseman@arm.com>2019-09-13 13:15:35 +0000
committerLuke Cheeseman <luke.cheeseman@arm.com>2019-09-13 13:15:35 +0000
commitab9acda026e4beee458a953f02fd8c342c89ad56 (patch)
tree99b131eab5ded7066c105a0d57f6b4dda5c89bb7 /clang/lib
parentd48ea5da94165dbaba14b1281b74994fe970a7e0 (diff)
downloadbcm5719-llvm-ab9acda026e4beee458a953f02fd8c342c89ad56.tar.gz
bcm5719-llvm-ab9acda026e4beee458a953f02fd8c342c89ad56.zip
Fix depfile name construction
- When using -o, the provided filename is using for constructing the depfile name (when -MMD is passed). - The logic looks for the rightmost '.' character and replaces what comes after with 'd'. - This works incorrectly when the filename has no extension and the directories have '.' in them (e.g. out.dir/test) - This replaces the funciton to just llvm::sys::path functionality Differential Revision: https://reviews.llvm.org/D67542 llvm-svn: 371853
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/ToolChains/Clang.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 95295459e0e..d848d213601 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -6066,15 +6066,14 @@ const char *Clang::getBaseInputStem(const ArgList &Args,
const char *Clang::getDependencyFileName(const ArgList &Args,
const InputInfoList &Inputs) {
// FIXME: Think about this more.
- std::string Res;
if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
- std::string Str(OutputOpt->getValue());
- Res = Str.substr(0, Str.rfind('.'));
- } else {
- Res = getBaseInputStem(Args, Inputs);
+ SmallString<128> OutputFilename(OutputOpt->getValue());
+ llvm::sys::path::replace_extension(OutputFilename, llvm::Twine('d'));
+ return Args.MakeArgString(OutputFilename);
}
- return Args.MakeArgString(Res + ".d");
+
+ return Args.MakeArgString(std::string(getBaseInputStem(Args, Inputs)) + ".d");
}
// Begin ClangAs
OpenPOWER on IntegriCloud