From: Nico Weber Date: Fri, 24 Apr 2015 22:16:53 +0000 (+0000) Subject: clang-cl: Don't look up absolute paths in %LIB%. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00b4e2950aa644720d17c55f576d0971ec724fb1;p=clang 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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235787 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 07a5e42cb1..7e52b1fbca 100644 --- a/lib/Driver/Driver.cpp +++ b/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/test/Driver/cl-inputs.c b/test/Driver/cl-inputs.c index b0265df52f..632000990f 100644 --- a/test/Driver/cl-inputs.c +++ b/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();