summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-06-25 00:55:28 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-06-25 00:55:28 +0000
commit503b726b43085a826257af6738df99d3b1f7a37c (patch)
tree9a0bd4052ffa0db69df13c11ff352e57ed83d32e /clang/lib/Driver/Driver.cpp
parent7c4d2da8e802a70069ffd75215ebdbfbc8cdaf0d (diff)
downloadbcm5719-llvm-503b726b43085a826257af6738df99d3b1f7a37c.tar.gz
bcm5719-llvm-503b726b43085a826257af6738df99d3b1f7a37c.zip
Use the new PathV2 instead of implementing the logic in clang.
llvm-svn: 184803
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp26
1 files changed, 6 insertions, 20 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 43b66ba9ee1..d524dc38553 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -1615,29 +1615,15 @@ std::string Driver::GetProgramPath(const char *Name,
std::string Driver::GetTemporaryPath(StringRef Prefix, const char *Suffix)
const {
- // FIXME: This is lame; sys::Path should provide this function (in particular,
- // it should know how to find the temporary files dir).
- std::string Error;
- const char *TmpDir = ::getenv("TMPDIR");
- if (!TmpDir)
- TmpDir = ::getenv("TEMP");
- if (!TmpDir)
- TmpDir = ::getenv("TMP");
- if (!TmpDir)
- TmpDir = "/tmp";
- llvm::sys::Path P(TmpDir);
- P.appendComponent(Prefix);
- if (P.makeUnique(false, &Error)) {
- Diag(clang::diag::err_unable_to_make_temp) << Error;
+ SmallString<128> Path;
+ llvm::error_code EC =
+ llvm::sys::fs::unique_file(Prefix + "-%%%%%%." + Suffix, Path);
+ if (EC) {
+ Diag(clang::diag::err_unable_to_make_temp) << EC.message();
return "";
}
- // FIXME: Grumble, makeUnique sometimes leaves the file around!? PR3837.
- P.eraseFromDisk(false, 0);
-
- if (Suffix)
- P.appendSuffix(Suffix);
- return P.str();
+ return Path.str();
}
/// \brief Compute target triple from args.
OpenPOWER on IntegriCloud