@@ -233,24 +233,15 @@ DependencyScanningWorkerFilesystem::computeAndStoreResult(
233
233
llvm::ErrorOr<EntryRef>
234
234
DependencyScanningWorkerFilesystem::getOrCreateFileSystemEntry (
235
235
StringRef OriginalFilename) {
236
- StringRef FilenameForLookup;
237
236
SmallString<256 > PathBuf;
238
- if (llvm::sys::path::is_absolute_gnu (OriginalFilename)) {
239
- FilenameForLookup = OriginalFilename;
240
- } else if (!WorkingDirForCacheLookup) {
241
- return WorkingDirForCacheLookup.getError ();
242
- } else {
243
- StringRef RelFilename = OriginalFilename;
244
- RelFilename.consume_front (" ./" );
245
- PathBuf = *WorkingDirForCacheLookup;
246
- llvm::sys::path::append (PathBuf, RelFilename);
247
- FilenameForLookup = PathBuf.str ();
248
- }
249
- assert (llvm::sys::path::is_absolute_gnu (FilenameForLookup));
237
+ auto FilenameForLookup = tryGetFilenameForLookup (OriginalFilename, PathBuf);
238
+ if (!FilenameForLookup)
239
+ return FilenameForLookup.getError ();
240
+
250
241
if (const auto *Entry =
251
- findEntryByFilenameWithWriteThrough (FilenameForLookup))
242
+ findEntryByFilenameWithWriteThrough (* FilenameForLookup))
252
243
return EntryRef (OriginalFilename, *Entry).unwrapError ();
253
- auto MaybeEntry = computeAndStoreResult (OriginalFilename, FilenameForLookup);
244
+ auto MaybeEntry = computeAndStoreResult (OriginalFilename, * FilenameForLookup);
254
245
if (!MaybeEntry)
255
246
return MaybeEntry.getError ();
256
247
return EntryRef (OriginalFilename, *MaybeEntry).unwrapError ();
@@ -351,4 +342,24 @@ void DependencyScanningWorkerFilesystem::updateWorkingDirForCacheLookup() {
351
342
llvm::sys::path::is_absolute_gnu (*WorkingDirForCacheLookup));
352
343
}
353
344
345
+ llvm::ErrorOr<StringRef>
346
+ DependencyScanningWorkerFilesystem::tryGetFilenameForLookup (
347
+ StringRef OriginalFilename, llvm::SmallVectorImpl<char > &PathBuf) const {
348
+ StringRef FilenameForLookup;
349
+ if (llvm::sys::path::is_absolute_gnu (OriginalFilename)) {
350
+ FilenameForLookup = OriginalFilename;
351
+ } else if (!WorkingDirForCacheLookup) {
352
+ return WorkingDirForCacheLookup.getError ();
353
+ } else {
354
+ StringRef RelFilename = OriginalFilename;
355
+ RelFilename.consume_front (" ./" );
356
+ PathBuf.assign (WorkingDirForCacheLookup->begin (),
357
+ WorkingDirForCacheLookup->end ());
358
+ llvm::sys::path::append (PathBuf, RelFilename);
359
+ FilenameForLookup = StringRef{PathBuf.begin (), PathBuf.size ()};
360
+ }
361
+ assert (llvm::sys::path::is_absolute_gnu (FilenameForLookup));
362
+ return FilenameForLookup;
363
+ }
364
+
354
365
const char DependencyScanningWorkerFilesystem::ID = 0 ;
0 commit comments