@@ -648,25 +648,30 @@ void CompilerInstance::createSema(TranslationUnitKind TUKind,
648
648
649
649
void CompilerInstance::clearOutputFiles (bool EraseFiles) {
650
650
for (OutputFile &OF : OutputFiles) {
651
- if (!OF. TempFilename . empty () ) {
652
- if (EraseFiles ) {
651
+ if (EraseFiles ) {
652
+ if (!OF. TempFilename . empty () ) {
653
653
llvm::sys::fs::remove (OF.TempFilename );
654
- } else {
655
- SmallString<128 > NewOutFile (OF.Filename );
656
-
657
- // If '-working-directory' was passed, the output filename should be
658
- // relative to that.
659
- FileMgr->FixupRelativePath (NewOutFile);
660
- if (std::error_code ec =
661
- llvm::sys::fs::rename (OF.TempFilename , NewOutFile)) {
662
- getDiagnostics ().Report (diag::err_unable_to_rename_temp)
663
- << OF.TempFilename << OF.Filename << ec.message ();
664
-
665
- llvm::sys::fs::remove (OF.TempFilename );
666
- }
654
+ continue ;
667
655
}
668
- } else if (!OF.Filename .empty () && EraseFiles)
669
- llvm::sys::fs::remove (OF.Filename );
656
+ if (!OF.Filename .empty ())
657
+ llvm::sys::fs::remove (OF.Filename );
658
+ continue ;
659
+ }
660
+
661
+ if (OF.TempFilename .empty ())
662
+ continue ;
663
+
664
+ // If '-working-directory' was passed, the output filename should be
665
+ // relative to that.
666
+ SmallString<128 > NewOutFile (OF.Filename );
667
+ FileMgr->FixupRelativePath (NewOutFile);
668
+ std::error_code EC = llvm::sys::fs::rename (OF.TempFilename , NewOutFile);
669
+ if (!EC)
670
+ continue ;
671
+ getDiagnostics ().Report (diag::err_unable_to_rename_temp)
672
+ << OF.TempFilename << OF.Filename << EC.message ();
673
+
674
+ llvm::sys::fs::remove (OF.TempFilename );
670
675
}
671
676
OutputFiles.clear ();
672
677
if (DeleteBuiltModules) {
0 commit comments