@@ -89,10 +89,9 @@ Expected<FileCache> llvm::localCache(const Twine &CacheNameRef,
8989 AddBuffer (std::move(AddBuffer)), TempFile(std::move(TempFile)),
9090 ModuleName(ModuleName), Task(Task) {}
9191
92- Error commit () override {
93- Error E = CachedFileStream::commit ();
94- if (E)
95- return E;
92+ ~CacheStream () {
93+ // TODO: Manually commit rather than using non-trivial destructor,
94+ // allowing to replace report_fatal_errors with a return Error.
9695
9796 // Make sure the stream is closed before committing it.
9897 OS.reset ();
@@ -102,12 +101,10 @@ Expected<FileCache> llvm::localCache(const Twine &CacheNameRef,
102101 MemoryBuffer::getOpenFile (
103102 sys::fs::convertFDToNativeFile (TempFile.FD ), ObjectPathName,
104103 /* FileSize=*/ -1 , /* RequiresNullTerminator=*/ false );
105- if (!MBOrErr) {
106- std::error_code EC = MBOrErr.getError ();
107- return createStringError (EC, Twine (" Failed to open new cache file " ) +
108- TempFile.TmpName + " : " +
109- EC.message () + " \n " );
110- }
104+ if (!MBOrErr)
105+ report_fatal_error (Twine (" Failed to open new cache file " ) +
106+ TempFile.TmpName + " : " +
107+ MBOrErr.getError ().message () + " \n " );
111108
112109 // On POSIX systems, this will atomically replace the destination if
113110 // it already exists. We try to emulate this on Windows, but this may
@@ -118,14 +115,11 @@ Expected<FileCache> llvm::localCache(const Twine &CacheNameRef,
118115 // AddBuffer a copy of the bytes we wrote in that case. We do this
119116 // instead of just using the existing file, because the pruner might
120117 // delete the file before we get a chance to use it.
121- E = TempFile.keep (ObjectPathName);
118+ Error E = TempFile.keep (ObjectPathName);
122119 E = handleErrors (std::move (E), [&](const ECError &E) -> Error {
123120 std::error_code EC = E.convertToErrorCode ();
124121 if (EC != errc::permission_denied)
125- return createStringError (
126- EC, Twine (" Failed to rename temporary file " ) +
127- TempFile.TmpName + " to " + ObjectPathName + " : " +
128- EC.message () + " \n " );
122+ return errorCodeToError (EC);
129123
130124 auto MBCopy = MemoryBuffer::getMemBufferCopy ((*MBOrErr)->getBuffer (),
131125 ObjectPathName);
@@ -138,10 +132,11 @@ Expected<FileCache> llvm::localCache(const Twine &CacheNameRef,
138132 });
139133
140134 if (E)
141- return E;
135+ report_fatal_error (Twine (" Failed to rename temporary file " ) +
136+ TempFile.TmpName + " to " + ObjectPathName + " : " +
137+ toString (std::move (E)) + " \n " );
142138
143139 AddBuffer (Task, ModuleName, std::move (*MBOrErr));
144- return Error::success ();
145140 }
146141 };
147142
0 commit comments