@@ -239,24 +239,15 @@ DependencyScanningWorkerFilesystem::computeAndStoreResult(
239
239
llvm::ErrorOr<EntryRef>
240
240
DependencyScanningWorkerFilesystem::getOrCreateFileSystemEntry (
241
241
StringRef OriginalFilename) {
242
- StringRef FilenameForLookup;
243
242
SmallString<256 > PathBuf;
244
- if (llvm::sys::path::is_absolute_gnu (OriginalFilename)) {
245
- FilenameForLookup = OriginalFilename;
246
- } else if (!WorkingDirForCacheLookup) {
247
- return WorkingDirForCacheLookup.getError ();
248
- } else {
249
- StringRef RelFilename = OriginalFilename;
250
- RelFilename.consume_front (" ./" );
251
- PathBuf = *WorkingDirForCacheLookup;
252
- llvm::sys::path::append (PathBuf, RelFilename);
253
- FilenameForLookup = PathBuf.str ();
254
- }
255
- assert (llvm::sys::path::is_absolute_gnu (FilenameForLookup));
243
+ auto FilenameForLookup = tryGetFilenameForLookup (OriginalFilename, PathBuf);
244
+ if (!FilenameForLookup)
245
+ return FilenameForLookup.getError ();
246
+
256
247
if (const auto *Entry =
257
- findEntryByFilenameWithWriteThrough (FilenameForLookup))
248
+ findEntryByFilenameWithWriteThrough (* FilenameForLookup))
258
249
return EntryRef (OriginalFilename, *Entry).unwrapError ();
259
- auto MaybeEntry = computeAndStoreResult (OriginalFilename, FilenameForLookup);
250
+ auto MaybeEntry = computeAndStoreResult (OriginalFilename, * FilenameForLookup);
260
251
if (!MaybeEntry)
261
252
return MaybeEntry.getError ();
262
253
return EntryRef (OriginalFilename, *MaybeEntry).unwrapError ();
@@ -364,4 +355,24 @@ void DependencyScanningWorkerFilesystem::updateWorkingDirForCacheLookup() {
364
355
llvm::sys::path::is_absolute_gnu (*WorkingDirForCacheLookup));
365
356
}
366
357
358
+ llvm::ErrorOr<StringRef>
359
+ DependencyScanningWorkerFilesystem::tryGetFilenameForLookup (
360
+ StringRef OriginalFilename, llvm::SmallVectorImpl<char > &PathBuf) const {
361
+ StringRef FilenameForLookup;
362
+ if (llvm::sys::path::is_absolute_gnu (OriginalFilename)) {
363
+ FilenameForLookup = OriginalFilename;
364
+ } else if (!WorkingDirForCacheLookup) {
365
+ return WorkingDirForCacheLookup.getError ();
366
+ } else {
367
+ StringRef RelFilename = OriginalFilename;
368
+ RelFilename.consume_front (" ./" );
369
+ PathBuf.assign (WorkingDirForCacheLookup->begin (),
370
+ WorkingDirForCacheLookup->end ());
371
+ llvm::sys::path::append (PathBuf, RelFilename);
372
+ FilenameForLookup = StringRef{PathBuf.begin (), PathBuf.size ()};
373
+ }
374
+ assert (llvm::sys::path::is_absolute_gnu (FilenameForLookup));
375
+ return FilenameForLookup;
376
+ }
377
+
367
378
const char DependencyScanningWorkerFilesystem::ID = 0 ;
0 commit comments