[llvm] 30298f9 - MC: Simplify fragment code. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 5 12:12:31 PDT 2025
Author: Fangrui Song
Date: 2025-07-05T12:12:27-07:00
New Revision: 30298f91367f0c320e136cbe158f1d9dbf0c3a57
URL: https://github.com/llvm/llvm-project/commit/30298f91367f0c320e136cbe158f1d9dbf0c3a57
DIFF: https://github.com/llvm/llvm-project/commit/30298f91367f0c320e136cbe158f1d9dbf0c3a57.diff
LOG: MC: Simplify fragment code. NFC
Added:
Modified:
llvm/include/llvm/MC/MCSection.h
llvm/lib/MC/MCAssembler.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/MC/MCSection.h b/llvm/include/llvm/MC/MCSection.h
index 3d430c0fc58e3..3abe5e0fe3c6f 100644
--- a/llvm/include/llvm/MC/MCSection.h
+++ b/llvm/include/llvm/MC/MCSection.h
@@ -52,15 +52,15 @@ class MCFragment {
public:
enum FragmentType : uint8_t {
- FT_Align,
FT_Data,
+ FT_Relaxable,
+ FT_Align,
FT_Fill,
+ FT_LEB,
FT_Nops,
- FT_Relaxable,
FT_Org,
FT_Dwarf,
FT_DwarfFrame,
- FT_LEB,
FT_BoundaryAlign,
FT_SymbolId,
FT_CVInlineLines,
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 8522f043d85d0..1dda4d8c1975e 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -196,9 +196,14 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const {
assert(getBackendPtr() && "Requires assembler backend");
switch (F.getKind()) {
case MCFragment::FT_Data:
- return cast<MCDataFragment>(F).getContents().size();
case MCFragment::FT_Relaxable:
- return cast<MCRelaxableFragment>(F).getContents().size();
+ case MCFragment::FT_LEB:
+ case MCFragment::FT_Dwarf:
+ case MCFragment::FT_DwarfFrame:
+ case MCFragment::FT_CVInlineLines:
+ case MCFragment::FT_CVDefRange:
+ case MCFragment::FT_PseudoProbe:
+ return cast<MCEncodedFragment>(F).getContents().size();
case MCFragment::FT_Fill: {
auto &FF = cast<MCFillFragment>(F);
int64_t NumValues = 0;
@@ -217,9 +222,6 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const {
case MCFragment::FT_Nops:
return cast<MCNopsFragment>(F).getNumBytes();
- case MCFragment::FT_LEB:
- return cast<MCLEBFragment>(F).getContents().size();
-
case MCFragment::FT_BoundaryAlign:
return cast<MCBoundaryAlignFragment>(F).getSize();
@@ -275,17 +277,6 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const {
}
return Size;
}
-
- case MCFragment::FT_Dwarf:
- return cast<MCDwarfLineAddrFragment>(F).getContents().size();
- case MCFragment::FT_DwarfFrame:
- return cast<MCDwarfCallFrameFragment>(F).getContents().size();
- case MCFragment::FT_CVInlineLines:
- return cast<MCCVInlineLineTableFragment>(F).getContents().size();
- case MCFragment::FT_CVDefRange:
- return cast<MCCVDefRangeFragment>(F).getContents().size();
- case MCFragment::FT_PseudoProbe:
- return cast<MCPseudoProbeAddrFragment>(F).getContents().size();
}
llvm_unreachable("invalid fragment kind");
@@ -543,6 +534,22 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
++stats::EmittedFragments;
switch (F.getKind()) {
+ case MCFragment::FT_Data:
+ case MCFragment::FT_Relaxable:
+ case MCFragment::FT_LEB:
+ case MCFragment::FT_Dwarf:
+ case MCFragment::FT_DwarfFrame:
+ case MCFragment::FT_CVInlineLines:
+ case MCFragment::FT_CVDefRange:
+ case MCFragment::FT_PseudoProbe: {
+ if (F.getKind() == MCFragment::FT_Data)
+ ++stats::EmittedDataFragments;
+ else if (F.getKind() == MCFragment::FT_Relaxable)
+ ++stats::EmittedRelaxableFragments;
+ const auto &EF = cast<MCEncodedFragment>(F);
+ OS << StringRef(EF.getContents().data(), EF.getContents().size());
+ break;
+ }
case MCFragment::FT_Align: {
++stats::EmittedAlignFragments;
const MCAlignFragment &AF = cast<MCAlignFragment>(F);
@@ -589,18 +596,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
break;
}
- case MCFragment::FT_Data:
- ++stats::EmittedDataFragments;
- OS << StringRef(cast<MCDataFragment>(F).getContents().data(),
- cast<MCDataFragment>(F).getContents().size());
- break;
-
- case MCFragment::FT_Relaxable:
- ++stats::EmittedRelaxableFragments;
- OS << StringRef(cast<MCRelaxableFragment>(F).getContents().data(),
- cast<MCRelaxableFragment>(F).getContents().size());
- break;
-
case MCFragment::FT_Fill: {
++stats::EmittedFillFragments;
const MCFillFragment &FF = cast<MCFillFragment>(F);
@@ -676,12 +671,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
break;
}
- case MCFragment::FT_LEB: {
- const MCLEBFragment &LF = cast<MCLEBFragment>(F);
- OS << StringRef(LF.getContents().data(), LF.getContents().size());
- break;
- }
-
case MCFragment::FT_BoundaryAlign: {
const MCBoundaryAlignFragment &BF = cast<MCBoundaryAlignFragment>(F);
if (!Asm.getBackend().writeNopData(OS, FragmentSize, BF.getSubtargetInfo()))
@@ -706,31 +695,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm,
break;
}
- case MCFragment::FT_Dwarf: {
- const MCDwarfLineAddrFragment &OF = cast<MCDwarfLineAddrFragment>(F);
- OS << StringRef(OF.getContents().data(), OF.getContents().size());
- break;
- }
- case MCFragment::FT_DwarfFrame: {
- const MCDwarfCallFrameFragment &CF = cast<MCDwarfCallFrameFragment>(F);
- OS << StringRef(CF.getContents().data(), CF.getContents().size());
- break;
- }
- case MCFragment::FT_CVInlineLines: {
- const auto &OF = cast<MCCVInlineLineTableFragment>(F);
- OS << StringRef(OF.getContents().data(), OF.getContents().size());
- break;
- }
- case MCFragment::FT_CVDefRange: {
- const auto &DRF = cast<MCCVDefRangeFragment>(F);
- OS << StringRef(DRF.getContents().data(), DRF.getContents().size());
- break;
- }
- case MCFragment::FT_PseudoProbe: {
- const MCPseudoProbeAddrFragment &PF = cast<MCPseudoProbeAddrFragment>(F);
- OS << StringRef(PF.getContents().data(), PF.getContents().size());
- break;
- }
}
assert(OS.tell() - Start == FragmentSize &&
More information about the llvm-commits
mailing list