@@ -565,20 +565,20 @@ llvm::DIFile *CGDebugInfo::getOrCreateFile(SourceLocation Loc) {
565565 FileID FID;
566566 std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
567567
568- llvm::DIFile *CUFile = TheCU->getFile ();
569568 if (Loc.isInvalid ()) {
570569 // The DIFile used by the CU is distinct from the main source file. Call
571570 // createFile() below for canonicalization if the source file was specified
572571 // with an absolute path.
573- FileName = CUFile->getFilename ();
574- CSInfo = CUFile->getChecksum ();
575- FID = SM.getFileID (Loc);
572+ FileName = TheCU->getFile ()->getFilename ();
573+ CSInfo = TheCU->getFile ()->getChecksum ();
576574 } else {
577575 PresumedLoc PLoc = SM.getPresumedLoc (SM.getFileLoc (Loc));
578576 FileName = PLoc.getFilename ();
579577
580578 if (FileName.empty ()) {
581- FileName = CUFile->getFilename ();
579+ FileName = TheCU->getFile ()->getFilename ();
580+ } else {
581+ FileName = PLoc.getFilename ();
582582 }
583583 FID = PLoc.getFileID ();
584584 }
@@ -599,7 +599,8 @@ llvm::DIFile *CGDebugInfo::getOrCreateFile(SourceLocation Loc) {
599599 if (CSKind)
600600 CSInfo.emplace (*CSKind, Checksum);
601601 }
602- return createFile (FileName, CSInfo, getSource (SM, FID));
602+ return createFile (FileName, CSInfo,
603+ getSource (SM, SM.getFileID (SM.getFileLoc (Loc))));
603604}
604605
605606llvm::DIFile *CGDebugInfo::createFile (
0 commit comments