Skip to content

Commit 30298f9

Browse files
committed
MC: Simplify fragment code. NFC
1 parent 244e053 commit 30298f9

File tree

2 files changed

+26
-62
lines changed

2 files changed

+26
-62
lines changed

llvm/include/llvm/MC/MCSection.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ class MCFragment {
5252

5353
public:
5454
enum FragmentType : uint8_t {
55-
FT_Align,
5655
FT_Data,
56+
FT_Relaxable,
57+
FT_Align,
5758
FT_Fill,
59+
FT_LEB,
5860
FT_Nops,
59-
FT_Relaxable,
6061
FT_Org,
6162
FT_Dwarf,
6263
FT_DwarfFrame,
63-
FT_LEB,
6464
FT_BoundaryAlign,
6565
FT_SymbolId,
6666
FT_CVInlineLines,

llvm/lib/MC/MCAssembler.cpp

Lines changed: 23 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,14 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const {
196196
assert(getBackendPtr() && "Requires assembler backend");
197197
switch (F.getKind()) {
198198
case MCFragment::FT_Data:
199-
return cast<MCDataFragment>(F).getContents().size();
200199
case MCFragment::FT_Relaxable:
201-
return cast<MCRelaxableFragment>(F).getContents().size();
200+
case MCFragment::FT_LEB:
201+
case MCFragment::FT_Dwarf:
202+
case MCFragment::FT_DwarfFrame:
203+
case MCFragment::FT_CVInlineLines:
204+
case MCFragment::FT_CVDefRange:
205+
case MCFragment::FT_PseudoProbe:
206+
return cast<MCEncodedFragment>(F).getContents().size();
202207
case MCFragment::FT_Fill: {
203208
auto &FF = cast<MCFillFragment>(F);
204209
int64_t NumValues = 0;
@@ -217,9 +222,6 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const {
217222
case MCFragment::FT_Nops:
218223
return cast<MCNopsFragment>(F).getNumBytes();
219224

220-
case MCFragment::FT_LEB:
221-
return cast<MCLEBFragment>(F).getContents().size();
222-
223225
case MCFragment::FT_BoundaryAlign:
224226
return cast<MCBoundaryAlignFragment>(F).getSize();
225227

@@ -275,17 +277,6 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const {
275277
}
276278
return Size;
277279
}
278-
279-
case MCFragment::FT_Dwarf:
280-
return cast<MCDwarfLineAddrFragment>(F).getContents().size();
281-
case MCFragment::FT_DwarfFrame:
282-
return cast<MCDwarfCallFrameFragment>(F).getContents().size();
283-
case MCFragment::FT_CVInlineLines:
284-
return cast<MCCVInlineLineTableFragment>(F).getContents().size();
285-
case MCFragment::FT_CVDefRange:
286-
return cast<MCCVDefRangeFragment>(F).getContents().size();
287-
case MCFragment::FT_PseudoProbe:
288-
return cast<MCPseudoProbeAddrFragment>(F).getContents().size();
289280
}
290281

291282
llvm_unreachable("invalid fragment kind");
@@ -543,6 +534,22 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
543534
++stats::EmittedFragments;
544535

545536
switch (F.getKind()) {
537+
case MCFragment::FT_Data:
538+
case MCFragment::FT_Relaxable:
539+
case MCFragment::FT_LEB:
540+
case MCFragment::FT_Dwarf:
541+
case MCFragment::FT_DwarfFrame:
542+
case MCFragment::FT_CVInlineLines:
543+
case MCFragment::FT_CVDefRange:
544+
case MCFragment::FT_PseudoProbe: {
545+
if (F.getKind() == MCFragment::FT_Data)
546+
++stats::EmittedDataFragments;
547+
else if (F.getKind() == MCFragment::FT_Relaxable)
548+
++stats::EmittedRelaxableFragments;
549+
const auto &EF = cast<MCEncodedFragment>(F);
550+
OS << StringRef(EF.getContents().data(), EF.getContents().size());
551+
break;
552+
}
546553
case MCFragment::FT_Align: {
547554
++stats::EmittedAlignFragments;
548555
const MCAlignFragment &AF = cast<MCAlignFragment>(F);
@@ -589,18 +596,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
589596
break;
590597
}
591598

592-
case MCFragment::FT_Data:
593-
++stats::EmittedDataFragments;
594-
OS << StringRef(cast<MCDataFragment>(F).getContents().data(),
595-
cast<MCDataFragment>(F).getContents().size());
596-
break;
597-
598-
case MCFragment::FT_Relaxable:
599-
++stats::EmittedRelaxableFragments;
600-
OS << StringRef(cast<MCRelaxableFragment>(F).getContents().data(),
601-
cast<MCRelaxableFragment>(F).getContents().size());
602-
break;
603-
604599
case MCFragment::FT_Fill: {
605600
++stats::EmittedFillFragments;
606601
const MCFillFragment &FF = cast<MCFillFragment>(F);
@@ -676,12 +671,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
676671
break;
677672
}
678673

679-
case MCFragment::FT_LEB: {
680-
const MCLEBFragment &LF = cast<MCLEBFragment>(F);
681-
OS << StringRef(LF.getContents().data(), LF.getContents().size());
682-
break;
683-
}
684-
685674
case MCFragment::FT_BoundaryAlign: {
686675
const MCBoundaryAlignFragment &BF = cast<MCBoundaryAlignFragment>(F);
687676
if (!Asm.getBackend().writeNopData(OS, FragmentSize, BF.getSubtargetInfo()))
@@ -706,31 +695,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
706695
break;
707696
}
708697

709-
case MCFragment::FT_Dwarf: {
710-
const MCDwarfLineAddrFragment &OF = cast<MCDwarfLineAddrFragment>(F);
711-
OS << StringRef(OF.getContents().data(), OF.getContents().size());
712-
break;
713-
}
714-
case MCFragment::FT_DwarfFrame: {
715-
const MCDwarfCallFrameFragment &CF = cast<MCDwarfCallFrameFragment>(F);
716-
OS << StringRef(CF.getContents().data(), CF.getContents().size());
717-
break;
718-
}
719-
case MCFragment::FT_CVInlineLines: {
720-
const auto &OF = cast<MCCVInlineLineTableFragment>(F);
721-
OS << StringRef(OF.getContents().data(), OF.getContents().size());
722-
break;
723-
}
724-
case MCFragment::FT_CVDefRange: {
725-
const auto &DRF = cast<MCCVDefRangeFragment>(F);
726-
OS << StringRef(DRF.getContents().data(), DRF.getContents().size());
727-
break;
728-
}
729-
case MCFragment::FT_PseudoProbe: {
730-
const MCPseudoProbeAddrFragment &PF = cast<MCPseudoProbeAddrFragment>(F);
731-
OS << StringRef(PF.getContents().data(), PF.getContents().size());
732-
break;
733-
}
734698
}
735699

736700
assert(OS.tell() - Start == FragmentSize &&

0 commit comments

Comments
 (0)