From: Douglas Gregor Date: Fri, 9 Dec 2011 16:22:07 +0000 (+0000) Subject: Use llvm::sys::fs::equivalent rather than comparing inodes, because X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=99a922b6da21a474f8ed35f2b1a3bfd627900d1a;p=clang Use llvm::sys::fs::equivalent rather than comparing inodes, because comparing inodes doesn't actually work on Windows. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146260 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index c7393e4c78..44ffc29bad 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1427,14 +1427,13 @@ bool HeaderFileInfoTrait::EqualKey(internal_key_type a, internal_key_type b) { if (llvm::sys::path::filename(a) != llvm::sys::path::filename(b)) return false; - - // The file names match, but the path names don't. stat() the files to - // see if they are the same. - struct stat StatBufA, StatBufB; - if (StatSimpleCache(a, &StatBufA) || StatSimpleCache(b, &StatBufB)) + + // Determine whether the actual files are equivalent. + bool Result = false; + if (llvm::sys::fs::equivalent(a, b, Result)) return false; - return StatBufA.st_ino == StatBufB.st_ino; + return Result; } std::pair