[PATCH] Teach Clang how to use response files when calling other tools

Rafael Ávila de Espíndola rafael.espindola at gmail.com
Wed Aug 27 10:01:01 PDT 2014


================
Comment at: include/clang/Driver/Job.h:87
@@ +86,3 @@
+  /// file, when it is used.
+  void PrintArgsWithRespFile(llvm::raw_ostream &OS,
+                             const char *Terminator, bool Quote,
----------------
printArgsWithRespFile

================
Comment at: include/clang/Driver/Job.h:100
@@ +99,3 @@
+  /// limits (the maximum command line length).
+  bool NeedsResponseFile() const { return needsResponseFile; }
+
----------------
The function should be lowercase, the variable Uppercase.

================
Comment at: lib/Driver/Job.cpp:32
@@ +31,3 @@
+      Executable(_Executable), Arguments(_Arguments),
+      needsResponseFile(
+          !llvm::sys::argumentsFitWithinSystemLimits(_Arguments) &&
----------------
I wonder if we should say that the job needs a response file based only on llvm::sys::argumentsFitWithinSystemLimits and then emit an error if Creator.getResponseFilesSupport() says it is not supported.

================
Comment at: lib/Driver/Job.cpp:279
@@ +278,3 @@
+  if (needsResponseFile && ResponseFile.data() != nullptr) {
+    PrintArgsWithRespFile(OS, Terminator, Quote, CrashReport);
+    return;
----------------
The code in PrintArgsWithRespFile looks fairly duplicated with what just follows.  Couldn't this just patch Arguments and use the existing code path?

http://reviews.llvm.org/D4897






More information about the cfe-commits mailing list