aganea added a comment.

I did this in driver.cpp:

  // Whether the cc1 tool should be called inside the current process, or forked
  // to a new new process.
  bool UseCC1ProcessFork = CLANG_FORK_CC1;
  
  StringRef ForkCC1Str = ::getenv("CLANG_FORK_CC1");
  if (!ForkCC1Str.empty()) {
    UseCC1ProcessFork = ForkCC1Str.compare("1") == 0 ||
                        ForkCC1Str.compare_lower("on") == 0 ||
                        ForkCC1Str.compare_lower("true") == 0;
  }
  if (!UseCC1ProcessFork) {
    // Here we provide a shortcut for calling the -cc1 cmd-line within the
    // same process, instead of starting a new process. This saves a some
    // execution time of Windows, as process creation can be expensive on
    // that platform.
    TheDriver.CC1Main = &ExecuteCC1Tool;
  }

With a new option in cmake to control the default behavior:

  set(CLANG_FORK_CC1 OFF BOOL
      "Whether clang should use a new process for the CC1 invocation")
  
  if (APPLE)
    set(CLANG_FORK_CC1 1)
  endif()

And the corresponding flag in config.h:

  /* If we want to fork a new process clang.exe for the CC1 invocation */
  #cmakedefine01 CLANG_FORK_CC1

This option needs to be controlled at large (otherwise some TUs might compile 
with forking "on" and others with forking "off", depending on what happens in 
the build scripts), so I thought the env variable would make more sense. Do you 
think a new cmd-line option is worth it, or is the env var enough?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69825/new/

https://reviews.llvm.org/D69825



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to