[Stats] Warn on failure-to-write stats / trace files.
diff --git a/lib/Basic/Statistic.cpp b/lib/Basic/Statistic.cpp
index 00c7a55..765e9ed 100644
--- a/lib/Basic/Statistic.cpp
+++ b/lib/Basic/Statistic.cpp
@@ -361,8 +361,11 @@
std::error_code EC;
raw_fd_ostream ostream(StatsFilename, EC, fs::F_Append | fs::F_Text);
- if (EC)
+ if (EC) {
+ llvm::errs() << "Error opening -stats-output-dir file '"
+ << TraceFilename << "' for writing\n";
return;
+ }
// We change behavior here depending on whether -DLLVM_ENABLE_STATS and/or
// assertions were on in this build; this is somewhat subtle, but turning on
@@ -387,8 +390,11 @@
if (LastTracedFrontendCounters && SourceMgr) {
std::error_code EC;
raw_fd_ostream tstream(TraceFilename, EC, fs::F_Append | fs::F_Text);
- if (EC)
+ if (EC) {
+ llvm::errs() << "Error opening -trace-stats-events file '"
+ << TraceFilename << "' for writing\n";
return;
+ }
tstream << "Time,Live,IsEntry,EventName,CounterName,"
<< "CounterDelta,CounterValue,SourceRange\n";
for (auto const &E : FrontendStatsEvents) {
diff --git a/test/Misc/stats_dir.swift b/test/Misc/stats_dir.swift
index 4e0d87a..537081d 100644
--- a/test/Misc/stats_dir.swift
+++ b/test/Misc/stats_dir.swift
@@ -23,10 +23,14 @@
// RUN: %FileCheck -input-file %t/driver.csv %s
// RUN: %utils/process-stats-dir.py --compare-to-csv-baseline %t/driver.csv %t
+// RUN: %target-swiftc_driver -c -o %t/out.o -stats-output-dir %t/this/is/not/a/directory %s 2>&1 | %FileCheck -check-prefix=CHECK-NODIR %s
+
// CHECK: {{"AST.NumSourceLines" [1-9][0-9]*$}}
// CHECK: {{"IRModule.NumIRFunctions" [1-9][0-9]*$}}
// CHECK: {{"LLVM.NumLLVMBytesOutput" [1-9][0-9]*$}}
+// CHECK-NODIR: {{Error opening -stats-output-dir file}}
+
public func foo() {
print("hello")
}