From dc74af1ab8fb0897c7ac2571070130f90462005f Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 4 Sep 2013 01:37:22 +0000 Subject: [PATCH] clang-cl: Avoid confusing diagnostics when clang-cl is called just cl.exe llvm-svn: 189901 --- clang/tools/driver/driver.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp index 88863ab0661b..15936bf219f2 100644 --- a/clang/tools/driver/driver.cpp +++ b/clang/tools/driver/driver.cpp @@ -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 DiagID(new DiagnosticIDs()); DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);