summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2011-04-15 18:49:23 +0000
committerFariborz Jahanian <fjahanian@apple.com>2011-04-15 18:49:23 +0000
commit193f783a999426c65a1d4fb407d8095f248c155d (patch)
treeb526ab4135f7015795c806629e266fbd959329fd
parentcc647e093788314b870c7a528ae0c5d8f7c04a51 (diff)
downloadbcm5719-llvm-193f783a999426c65a1d4fb407d8095f248c155d.tar.gz
bcm5719-llvm-193f783a999426c65a1d4fb407d8095f248c155d.zip
Fixes a crash when generating dependency file stuff
and output file is not writable. // rdar://9286457. llvm-svn: 129587
-rw-r--r--clang/lib/Frontend/DependencyFile.cpp2
-rw-r--r--clang/test/Frontend/dependency-generation-crash.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Frontend/DependencyFile.cpp b/clang/lib/Frontend/DependencyFile.cpp
index bc5a55df086..5c3a23128a1 100644
--- a/clang/lib/Frontend/DependencyFile.cpp
+++ b/clang/lib/Frontend/DependencyFile.cpp
@@ -171,7 +171,7 @@ void DependencyFileCallback::OutputDependencyFile() {
*OS << '\n';
// Create phony targets if requested.
- if (PhonyTarget) {
+ if (PhonyTarget && !Files.empty()) {
// Skip the first entry, this is always the input file itself.
for (std::vector<std::string>::iterator I = Files.begin() + 1,
E = Files.end(); I != E; ++I) {
diff --git a/clang/test/Frontend/dependency-generation-crash.c b/clang/test/Frontend/dependency-generation-crash.c
new file mode 100644
index 00000000000..181bb71f1b0
--- /dev/null
+++ b/clang/test/Frontend/dependency-generation-crash.c
@@ -0,0 +1,4 @@
+// RUN: touch %t
+// RUN: chmod 0 %t
+// %clang -E -dependency-file bla -MT %t -MP -o %t -x c /dev/null
+// rdar://9286457
OpenPOWER on IntegriCloud