rnk added a comment.

In D111195#3044594 <https://reviews.llvm.org/D111195#3044594>, @mstorsjo wrote:

> This looks ok to me I guess. Technically in this case, this is pretty much 
> equivalent to `#ifdef _WIN32`, i.e. any form when running on windows, where 
> the process considers itself windows (cygwin doesn't define `_WIN32`), but I 
> guess keeping it based on `getProcessTriple()` is fine too.
>
> I'll leave it open for discussion for a while, but if there's no further 
> opinions I can accept it later.
>
> @rnk Do you happen to have any experience here?

I think the largest producer of JSON compilation databases with untokenized 
command line strings is CMake. If CMake uses Windows quoting rules to build up 
command lines, then clang should make the same assumption.



================
Comment at: clang/lib/Tooling/JSONCompilationDatabase.cpp:138-144
     Syntax = JSONCommandLineSyntax::Gnu;
     llvm::Triple Triple(llvm::sys::getProcessTriple());
-    if (Triple.getOS() == llvm::Triple::OSType::Win32) {
+    if (Triple.isOSWindows()) {
       // Assume Windows command line parsing on Win32 unless the triple
       // explicitly tells us otherwise.
-      if (!Triple.hasEnvironment() ||
-          Triple.getEnvironment() == llvm::Triple::EnvironmentType::MSVC)
+      if (!Triple.isWindowsCygwinEnvironment())
         Syntax = JSONCommandLineSyntax::Windows;
----------------
This seems like it can be simplified to:
  Syntax = (Triple.isOSWindows() && !Triple.isWindowsCygwinEnvironment()) ?
            JSONCommandLineSyntax::Windows : JSONCommandLineSyntax::Gnu;
Alternatively, the ifdef _WIN32 would work.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111195

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

Reply via email to