From 1f0f165d50211e72d41395abd74def920347380e Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Fri, 24 Apr 2015 22:16:53 +0000 Subject: [PATCH] clang-cl: Don't look up absolute paths in %LIB%. Before this patch, passing a non-existent absolute path to clang-cl would cause stat'ing of impossible paths. For example, `clang-cl -c d:\adsfasdf.txt` would cause a stat of C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIBd:\asdfadsf.cc llvm-svn: 235787 --- clang/lib/Driver/Driver.cpp | 3 ++- clang/test/Driver/cl-inputs.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 07a5e42..7e52b1f 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -989,7 +989,8 @@ static bool DiagnoseInputExistence(const Driver &D, const DerivedArgList &Args, if (llvm::sys::fs::exists(Twine(Path))) return true; - if (D.IsCLMode() && llvm::sys::Process::FindInEnvPath("LIB", Value)) + if (D.IsCLMode() && !llvm::sys::path::is_absolute(Twine(Path)) && + llvm::sys::Process::FindInEnvPath("LIB", Value)) return true; D.Diag(clang::diag::err_drv_no_such_file) << Path; diff --git a/clang/test/Driver/cl-inputs.c b/clang/test/Driver/cl-inputs.c index b0265df..6320009 100644 --- a/clang/test/Driver/cl-inputs.c +++ b/clang/test/Driver/cl-inputs.c @@ -59,4 +59,9 @@ // LIBINPUT2: link.exe" // LIBINPUT2-NOT: "cl-test2.lib" +// RUN: %clang_cl -### -- %s /nonexisting.lib 2>&1 | FileCheck -check-prefix=LIBINPUT3 %s +// LIBINPUT3: error: no such file or directory: '/nonexisting.lib' +// LIBINPUT3: link.exe" +// LIBINPUT3-NOT: "/nonexisting.lib" + void f(); -- 2.7.4