]> granicus.if.org Git - clang/commitdiff
clang-cl: Avoid confusing diagnostics when clang-cl is called just cl.exe
authorReid Kleckner <reid@kleckner.net>
Wed, 4 Sep 2013 01:37:22 +0000 (01:37 +0000)
committerReid Kleckner <reid@kleckner.net>
Wed, 4 Sep 2013 01:37:22 +0000 (01:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189901 91177308-0d34-0410-b5e6-96231b3b80d8

tools/driver/driver.cpp

index 88863ab0661b3be4e112ca43d86b7dd19e27fa91..15936bf219f2ef03e919ae3f5e52305ffe889bc7 100644 (file)
@@ -346,7 +346,14 @@ int main(int argc_, const char **argv_) {
   // DiagnosticOptions instance.
   TextDiagnosticPrinter *DiagClient
     = new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
-  DiagClient->setPrefix(llvm::sys::path::filename(Path));
+
+  // If the clang binary happens to be named cl.exe for compatibility reasons,
+  // use clang-cl.exe as the prefix to avoid confusion between clang and MSVC.
+  StringRef ExeBasename(llvm::sys::path::filename(Path));
+  if (ExeBasename.trim().equals_lower("cl.exe"))
+    ExeBasename = "clang-cl.exe";
+  DiagClient->setPrefix(ExeBasename);
+
   IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
 
   DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);