[Support] [Windows] Don't cancel delete if we failed to set delete
authorShezan Baig <sbaig1@bloomberg.net>
Thu, 27 Jan 2022 11:57:38 +0000 (13:57 +0200)
committerMartin Storsjö <martin@martin.st>
Thu, 27 Jan 2022 11:58:25 +0000 (13:58 +0200)
commit659bf6d08c00993b777a96041ffaa98243464598
treeb3de45e3c86c36bc37ec5830fb254dd8e76f2eb1
parentb2f50042590577b25184ab0f7d3461d167e6bd9e
[Support] [Windows] Don't cancel delete if we failed to set delete

Following up on commit 177176f75c6fa3f624d6d964b9d340ce39511565, if we
failed to setDeleteDisposition(true) during TempFile creation, then
don't try to setDeleteDisposition(false) during TempFile::keep, since it
will likely fail as well.

Instead of letting TempFile::keep just fail, we should let it go ahead
and try renaming the file.

This fixes an issue we are seeing when running clang-cl.exe through the
Incredibuild distributed build system.  We're seeing that renaming
temporary object files would fail here:
https://github.com/llvm/llvm-project/blob/5c1f7b296ac0dddeca02891976e6ab5cfc006719/clang/lib/Frontend/CompilerInstance.cpp#L789

Reviewed By: mstorsjo

Differential Revision: https://reviews.llvm.org/D118212
llvm/lib/Support/Path.cpp