[Frontend] Escape target names in dependencies output.

 - <rdar://problem/23691798> swiftc does not properly quote spaces in output paths in dependency file target names
diff --git a/test/Frontend/dependencies.swift b/test/Frontend/dependencies.swift
index 836e813..a882965 100644
--- a/test/Frontend/dependencies.swift
+++ b/test/Frontend/dependencies.swift
@@ -2,39 +2,39 @@
 
 // RUN: rm -rf %t && mkdir %t
 
-// RUN: %target-swift-frontend -emit-dependencies-path - -parse %S/../Inputs/empty.swift | FileCheck -check-prefix=CHECK-BASIC %s
-// RUN: %target-swift-frontend -emit-reference-dependencies-path - -parse -primary-file %S/../Inputs/empty.swift | FileCheck -check-prefix=CHECK-BASIC-YAML %s
+// RUN: %target-swift-frontend -emit-dependencies-path - -parse %S/../Inputs/empty\ file.swift | FileCheck -check-prefix=CHECK-BASIC %s
+// RUN: %target-swift-frontend -emit-reference-dependencies-path - -parse -primary-file %S/../Inputs/empty\ file.swift | FileCheck -check-prefix=CHECK-BASIC-YAML %s
 
-// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse -primary-file %S/../Inputs/empty.swift
+// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse -primary-file %S/../Inputs/empty\ file.swift
 // RUN: FileCheck -check-prefix=CHECK-BASIC %s < %t.d
 // RUN: FileCheck -check-prefix=CHECK-BASIC-YAML %s < %t.swiftdeps
 
 // CHECK-BASIC-LABEL: - :
-// CHECK-BASIC: Inputs/empty.swift
+// CHECK-BASIC: Inputs/empty\ file.swift
 // CHECK-BASIC: Swift.swiftmodule
 // CHECK-BASIC-NOT: :
 
 // CHECK-BASIC-YAML-LABEL: depends-external:
-// CHECK-BASIC-YAML-NOT: empty.swift
+// CHECK-BASIC-YAML-NOT: empty\ file.swift
 // CHECK-BASIC-YAML: "{{.*}}/Swift.swiftmodule"
 // CHECK-BASIC-YAML-NOT: {{:$}}
 
 
-// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse %S/../Inputs/empty.swift 2>&1 | FileCheck -check-prefix=NO-PRIMARY-FILE %s
+// RUN: %target-swift-frontend -emit-dependencies-path %t.d -emit-reference-dependencies-path %t.swiftdeps -parse %S/../Inputs/empty\ file.swift 2>&1 | FileCheck -check-prefix=NO-PRIMARY-FILE %s
 
 // NO-PRIMARY-FILE: warning: ignoring -emit-reference-dependencies (requires -primary-file)
 
 
-// RUN: %target-swift-frontend -emit-dependencies-path - -emit-module %S/../Inputs/empty.swift -o %t/empty.swiftmodule -emit-module-doc-path %t/empty.swiftdoc -emit-objc-header-path %t/empty.h | FileCheck -check-prefix=CHECK-MULTIPLE-OUTPUTS %s
+// RUN: %target-swift-frontend -emit-dependencies-path - -emit-module %S/../Inputs/empty\ file.swift -o %t/empty\ file.swiftmodule -emit-module-doc-path %t/empty\ file.swiftdoc -emit-objc-header-path %t/empty\ file.h | FileCheck -check-prefix=CHECK-MULTIPLE-OUTPUTS %s
 
-// CHECK-MULTIPLE-OUTPUTS-LABEL: empty.swiftmodule :
-// CHECK-MULTIPLE-OUTPUTS: Inputs/empty.swift
+// CHECK-MULTIPLE-OUTPUTS-LABEL: empty\ file.swiftmodule :
+// CHECK-MULTIPLE-OUTPUTS: Inputs/empty\ file.swift
 // CHECK-MULTIPLE-OUTPUTS: Swift.swiftmodule
-// CHECK-MULTIPLE-OUTPUTS-LABEL: empty.swiftdoc :
-// CHECK-MULTIPLE-OUTPUTS: Inputs/empty.swift
+// CHECK-MULTIPLE-OUTPUTS-LABEL: empty\ file.swiftdoc :
+// CHECK-MULTIPLE-OUTPUTS: Inputs/empty\ file.swift
 // CHECK-MULTIPLE-OUTPUTS: Swift.swiftmodule
-// CHECK-MULTIPLE-OUTPUTS-LABEL: empty.h :
-// CHECK-MULTIPLE-OUTPUTS: Inputs/empty.swift
+// CHECK-MULTIPLE-OUTPUTS-LABEL: empty\ file.h :
+// CHECK-MULTIPLE-OUTPUTS: Inputs/empty\ file.swift
 // CHECK-MULTIPLE-OUTPUTS: Swift.swiftmodule
 // CHECK-MULTIPLE-OUTPUTS-NOT: :
 
diff --git a/test/Inputs/empty file.swift b/test/Inputs/empty file.swift
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/Inputs/empty file.swift
diff --git a/tools/driver/frontend_main.cpp b/tools/driver/frontend_main.cpp
index 6cdc1b6..392b0e4 100644
--- a/tools/driver/frontend_main.cpp
+++ b/tools/driver/frontend_main.cpp
@@ -102,7 +102,7 @@
   // FIXME: Xcode can't currently handle multiple targets in a single
   // dependency line.
   opts.forAllOutputPaths([&](StringRef targetName) {
-    out << targetName << " :";
+    out << escape(targetName) << " :";
     // First include all other files in the module. Make-style dependencies
     // need to be conservative!
     for (StringRef path : opts.InputFilenames)