Skip to content

Commit 31f1c84

Browse files
[Driver] Make the findVCToolChainViaEnvironment case-insensitive (#3543)
PATH usage on Windows is case-insensitive. There could be situations when toolchain path can't be obtained from PATH because of case-sensitivity of the findVCToolChainViaEnvironment. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D100361 Co-authored-by: Artur Gainullin <[email protected]>
1 parent c0c2389 commit 31f1c84

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

clang/lib/Driver/ToolChains/MSVC.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,15 @@ findVCToolChainViaEnvironment(llvm::vfs::FileSystem &VFS, std::string &Path,
190190
if (IsBin) {
191191
llvm::StringRef ParentPath = llvm::sys::path::parent_path(TestPath);
192192
llvm::StringRef ParentFilename = llvm::sys::path::filename(ParentPath);
193-
if (ParentFilename == "VC") {
193+
if (ParentFilename.equals_lower("VC")) {
194194
Path = std::string(ParentPath);
195195
VSLayout = MSVCToolChain::ToolsetLayout::OlderVS;
196196
return true;
197197
}
198-
if (ParentFilename == "x86ret" || ParentFilename == "x86chk"
199-
|| ParentFilename == "amd64ret" || ParentFilename == "amd64chk") {
198+
if (ParentFilename.equals_lower("x86ret") ||
199+
ParentFilename.equals_lower("x86chk") ||
200+
ParentFilename.equals_lower("amd64ret") ||
201+
ParentFilename.equals_lower("amd64chk")) {
200202
Path = std::string(ParentPath);
201203
VSLayout = MSVCToolChain::ToolsetLayout::DevDivInternal;
202204
return true;
@@ -215,7 +217,7 @@ findVCToolChainViaEnvironment(llvm::vfs::FileSystem &VFS, std::string &Path,
215217
for (llvm::StringRef Prefix : ExpectedPrefixes) {
216218
if (It == End)
217219
goto NotAToolChain;
218-
if (!It->startswith(Prefix))
220+
if (!It->startswith_lower(Prefix))
219221
goto NotAToolChain;
220222
++It;
221223
}

0 commit comments

Comments
 (0)