<div dir="ltr">I had no idea they were broken, that seems like a major regression. Come to think of it, I think someone may have reported this behavior, but it was never root caused, so thanks for that.<div><br></div><div>However, we spent a lot of time coming up with this particular code pattern to:</div><div>1. (mostly) atomically write the whole output file or nothing at all on failure</div><div>2. not leak temporary files when the compiler crashes</div><div><br></div><div>Before our use of SetInformationByFileHandle we leaked temporary object files in build directories like crazy. All you had to do was basically interrupt a build and clang would leave behind files. The linker suffered from similar problems.</div><div><br></div><div>So, I would be very careful about going back to our old code patterns. I wonder if Microsoft would accept this as a bug in FileTracker.dll instead.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 25, 2019 at 7:00 AM Scott Funkenhauser via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi,<div><br></div><div>Starting with LLVM 6, MSBuild incremental builds stopped working. I've tracked this down to a CL that modified how file renaming was done on Windows. It appears that FileTracker does not recognize renaming a file with SetFileInformationByHandle.</div><div><br></div><div><a href="https://github.com/llvm-mirror/llvm/commit/1b6a51a1425cc0180359ecd64733edb965f65d7c#diff-70db51c38d748dc9debf5f309643fcd8" target="_blank">https://github.com/llvm-mirror/llvm/commit/1b6a51a1425cc0180359ecd64733edb965f65d7c#diff-70db51c38d748dc9debf5f309643fcd8</a><br></div><div><br></div><div>You can repro this fairly easily by:</div><div>1) Downloading the prebuilt binaries of LLVM 6 or 7 for Windows.</div><div>2) Creating a new C++ project (I just chose the default console application) in VS 2017.</div><div>3) Mess with the project settings to disable all the features clang doesn't support (Conformance mode, Just my code, etc...)</div><div>4) Build</div><div><br></div><div>Every time you build it will rebuild everything.</div><div><br></div><div>I'm curious if this is a known issue? (I couldn't find any open bugs relating to this)</div><div>Is MSBuild incremental builds something that is officially supported? Or did it just work in the past by chance?</div><div><br></div><div>Thanks,</div><div>Scott</div><div><br></div><div><br></div></div></div></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>