@@ -386,7 +386,7 @@ void MCDwarfLineTableHeader::emitV2FileDirTables(MCStreamer *MCOS) const {
386
386
}
387
387
388
388
static void emitOneV5FileEntry (MCStreamer *MCOS, const MCDwarfFile &DwarfFile,
389
- bool EmitMD5, bool HasSource ,
389
+ bool EmitMD5, bool HasAnySource ,
390
390
std::optional<MCDwarfLineStr> &LineStr) {
391
391
assert (!DwarfFile.Name .empty ());
392
392
if (LineStr)
@@ -401,7 +401,7 @@ static void emitOneV5FileEntry(MCStreamer *MCOS, const MCDwarfFile &DwarfFile,
401
401
MCOS->emitBinaryData (
402
402
StringRef (reinterpret_cast <const char *>(Cksum.data ()), Cksum.size ()));
403
403
}
404
- if (HasSource ) {
404
+ if (HasAnySource ) {
405
405
if (LineStr)
406
406
LineStr->emitRef (MCOS, DwarfFile.Source .value_or (StringRef ()));
407
407
else {
@@ -452,7 +452,7 @@ void MCDwarfLineTableHeader::emitV5FileDirTables(
452
452
uint64_t Entries = 2 ;
453
453
if (HasAllMD5)
454
454
Entries += 1 ;
455
- if (HasSource )
455
+ if (HasAnySource )
456
456
Entries += 1 ;
457
457
MCOS->emitInt8 (Entries);
458
458
MCOS->emitULEB128IntValue (dwarf::DW_LNCT_path);
@@ -464,7 +464,7 @@ void MCDwarfLineTableHeader::emitV5FileDirTables(
464
464
MCOS->emitULEB128IntValue (dwarf::DW_LNCT_MD5);
465
465
MCOS->emitULEB128IntValue (dwarf::DW_FORM_data16);
466
466
}
467
- if (HasSource ) {
467
+ if (HasAnySource ) {
468
468
MCOS->emitULEB128IntValue (dwarf::DW_LNCT_LLVM_source);
469
469
MCOS->emitULEB128IntValue (LineStr ? dwarf::DW_FORM_line_strp
470
470
: dwarf::DW_FORM_string);
@@ -479,9 +479,9 @@ void MCDwarfLineTableHeader::emitV5FileDirTables(
479
479
assert ((!RootFile.Name .empty () || MCDwarfFiles.size () >= 1 ) &&
480
480
" No root file and no .file directives" );
481
481
emitOneV5FileEntry (MCOS, RootFile.Name .empty () ? MCDwarfFiles[1 ] : RootFile,
482
- HasAllMD5, HasSource , LineStr);
482
+ HasAllMD5, HasAnySource , LineStr);
483
483
for (unsigned i = 1 ; i < MCDwarfFiles.size (); ++i)
484
- emitOneV5FileEntry (MCOS, MCDwarfFiles[i], HasAllMD5, HasSource , LineStr);
484
+ emitOneV5FileEntry (MCOS, MCDwarfFiles[i], HasAllMD5, HasAnySource , LineStr);
485
485
}
486
486
487
487
std::pair<MCSymbol *, MCSymbol *>
@@ -598,7 +598,7 @@ MCDwarfLineTableHeader::tryGetFile(StringRef &Directory, StringRef &FileName,
598
598
// If any files have embedded source, they all must.
599
599
if (MCDwarfFiles.empty ()) {
600
600
trackMD5Usage (Checksum.has_value ());
601
- HasSource = ( Source != std::nullopt );
601
+ HasAnySource |= Source. has_value ( );
602
602
}
603
603
if (DwarfVersion >= 5 && isRootFile (RootFile, Directory, FileName, Checksum))
604
604
return 0 ;
@@ -625,11 +625,6 @@ MCDwarfLineTableHeader::tryGetFile(StringRef &Directory, StringRef &FileName,
625
625
return make_error<StringError>(" file number already allocated" ,
626
626
inconvertibleErrorCode ());
627
627
628
- // If any files have embedded source, they all must.
629
- if (HasSource != (Source != std::nullopt))
630
- return make_error<StringError>(" inconsistent use of embedded source" ,
631
- inconvertibleErrorCode ());
632
-
633
628
if (Directory.empty ()) {
634
629
// Separate the directory part from the basename of the FileName.
635
630
StringRef tFileName = sys::path::filename (FileName);
@@ -662,8 +657,8 @@ MCDwarfLineTableHeader::tryGetFile(StringRef &Directory, StringRef &FileName,
662
657
File.Checksum = Checksum;
663
658
trackMD5Usage (Checksum.has_value ());
664
659
File.Source = Source;
665
- if (Source)
666
- HasSource = true ;
660
+ if (Source. has_value () )
661
+ HasAnySource = true ;
667
662
668
663
// return the allocated FileNumber.
669
664
return FileNumber;
0 commit comments