[llvm] 7f90a5c - MCAsmBackend: Simplify FT_Data/FT_Relaxable code

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 6 23:40:27 PDT 2025


Author: Fangrui Song
Date: 2025-07-06T23:40:21-07:00
New Revision: 7f90a5c2d8d19680de82aee20c18a5f2b958c943

URL: https://github.com/llvm/llvm-project/commit/7f90a5c2d8d19680de82aee20c18a5f2b958c943
DIFF: https://github.com/llvm/llvm-project/commit/7f90a5c2d8d19680de82aee20c18a5f2b958c943.diff

LOG: MCAsmBackend: Simplify FT_Data/FT_Relaxable code

Added: 
    

Modified: 
    llvm/lib/MC/MCAsmBackend.cpp
    llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/MC/MCAsmBackend.cpp b/llvm/lib/MC/MCAsmBackend.cpp
index e8c684c644f42..39ef521031069 100644
--- a/llvm/lib/MC/MCAsmBackend.cpp
+++ b/llvm/lib/MC/MCAsmBackend.cpp
@@ -138,21 +138,9 @@ bool MCAsmBackend::isDarwinCanonicalPersonality(const MCSymbol *Sym) const {
 
 const MCSubtargetInfo *MCAsmBackend::getSubtargetInfo(const MCFragment &F) {
   const MCSubtargetInfo *STI = nullptr;
-  switch (F.getKind()) {
-  case MCFragment::FT_Data: {
-    auto &DF = cast<MCDataFragment>(F);
-    STI = DF.getSubtargetInfo();
-    assert(!DF.hasInstructions() || STI != nullptr);
-    break;
-  }
-  case MCFragment::FT_Relaxable: {
-    auto &RF = cast<MCRelaxableFragment>(F);
-    STI = RF.getSubtargetInfo();
-    assert(!RF.hasInstructions() || STI != nullptr);
-    break;
-  }
-  default:
-    break;
+  if (auto *DF = dyn_cast<MCEncodedFragment>(&F)) {
+    STI = DF->getSubtargetInfo();
+    assert(!DF->hasInstructions() || STI != nullptr);
   }
   return STI;
 }

diff  --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
index 8f667ad232a12..f669e6010d20d 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
@@ -422,14 +422,10 @@ static size_t getSizeForInstFragment(const MCFragment *F) {
   if (!F || !F->hasInstructions())
     return 0;
   // MCEncodedFragmentWithContents being templated makes this tricky.
-  switch (F->getKind()) {
-  default:
+  if (auto *DF = dyn_cast<MCEncodedFragment>(F))
+    return DF->getContents().size();
+  else
     llvm_unreachable("Unknown fragment with instructions!");
-  case MCFragment::FT_Data:
-    return cast<MCDataFragment>(*F).getContents().size();
-  case MCFragment::FT_Relaxable:
-    return cast<MCRelaxableFragment>(*F).getContents().size();
-  }
 }
 
 /// Return true if we can insert NOP or prefixes automatically before the


        


More information about the llvm-commits mailing list