]> granicus.if.org Git - clang/commitdiff
[Driver] Create non-existent directory for -fcrash-diagnostics-dir
authorPetr Hosek <phosek@chromium.org>
Sat, 4 May 2019 00:55:14 +0000 (00:55 +0000)
committerPetr Hosek <phosek@chromium.org>
Sat, 4 May 2019 00:55:14 +0000 (00:55 +0000)
When user specifies non-existent directory to -fcrash-diagnostics-dir,
create it rather than failing with an error as would be the case before.

Differential Revision: https://reviews.llvm.org/D61542

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@359954 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Driver.cpp
test/Driver/crash-diagnostics-dir.c

index 238315e8b93fd9177d6bb232665bcff901da0e8d..06c0e3bdb3777dcd075fdaa01c41e97b34a10532 100644 (file)
@@ -4263,6 +4263,8 @@ const char *Driver::GetNamedOutputPath(Compilation &C, const JobAction &JA,
     Arg *A = C.getArgs().getLastArg(options::OPT_fcrash_diagnostics_dir);
     if (CCGenDiagnostics && A) {
       SmallString<128> CrashDirectory(A->getValue());
+      if (!getVFS().exists(CrashDirectory))
+        llvm::sys::fs::create_directories(CrashDirectory);
       llvm::sys::path::append(CrashDirectory, Split.first);
       const char *Middle = Suffix ? "-%%%%%%." : "-%%%%%%";
       std::error_code EC = llvm::sys::fs::createUniqueFile(
index c8faf497b5a19c00eb5d766c5887db9486f28c80..44c4af67649a78aa0f9a328c7d1764d40c72658a 100644 (file)
@@ -1,5 +1,4 @@
 // RUN: rm -rf %t
-// RUN: mkdir -p %t
 // RUN: not %clang -fcrash-diagnostics-dir=%t -c %s -o - 2>&1 | FileCheck %s
 #pragma clang __debug parser_crash
 // CHECK: Preprocessed source(s) and associated run script(s) are located at: