summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/lli/lli.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp
index c90cc87a17..963e93e2bf 100644
--- a/tools/lli/lli.cpp
+++ b/tools/lli/lli.cpp
@@ -268,8 +268,11 @@ public:
if (!getCacheFilename(ModuleID, CacheName))
return;
std::string errStr;
- if (!CacheDir.empty()) // Create user-defined cache dir.
- sys::fs::create_directories(CacheName.substr(0, CacheName.rfind('/')));
+ if (!CacheDir.empty()) { // Create user-defined cache dir.
+ SmallString<128> dir(CacheName);
+ sys::path::remove_filename(dir);
+ sys::fs::create_directories(Twine(dir));
+ }
raw_fd_ostream outfile(CacheName.c_str(), errStr, sys::fs::F_Binary);
outfile.write(Obj->getBufferStart(), Obj->getBufferSize());
outfile.close();