Handle empty outputs in WriteInputDepsStampOrPhonyAndGetDep

This is to fix
https://ci.chromium.org/ui/p/chromium/builders/try/ios-simulator/2437645/overview

Bug: 40440396
Change-Id: Idaafb33451adb3221ec1d18f76c3c8ebe086e3e1
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/19700
Reviewed-by: David Turner <digit@google.com>
Commit-Queue: Takuto Ikuta <tikuta@google.com>
diff --git a/src/gn/ninja_target_writer.cc b/src/gn/ninja_target_writer.cc
index 01a1407..1bbe31e 100644
--- a/src/gn/ninja_target_writer.cc
+++ b/src/gn/ninja_target_writer.cc
@@ -545,12 +545,16 @@
   if (num_output_uses == 1u)
     return outs;
 
+  // If outs is empty, we don't need stamp or phony target for this.
+  if (outs.empty()) {
+    return outs;
+  }
+
   OutputFile input_stamp_or_phony;
   std::string tool;
   if (settings_->build_settings()->no_stamp_files()) {
     // Make a phony target. We don't need to worry about an empty phony target,
     // as we would return early if there were no inputs.
-    CHECK(!outs.empty());
     input_stamp_or_phony =
         GetBuildDirForTargetAsOutputFile(target_, BuildDirType::PHONY);
     input_stamp_or_phony.value().append(target_->label().name());