[llvm] a157cde - [NFC][X86] Refine code in X86AsmBackend
Shengchen Kan via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 2 00:42:10 PDT 2020
Author: Shengchen Kan
Date: 2020-04-02T15:41:10+08:00
New Revision: a157cde0ac0a804b49f50df0a6faae7416ac3fb4
URL: https://github.com/llvm/llvm-project/commit/a157cde0ac0a804b49f50df0a6faae7416ac3fb4
DIFF: https://github.com/llvm/llvm-project/commit/a157cde0ac0a804b49f50df0a6faae7416ac3fb4.diff
LOG: [NFC][X86] Refine code in X86AsmBackend
Replace pattern getContents().size with universe function call
Added:
Modified:
llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
index c2eb78bd056d..26d7856d78eb 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
@@ -494,6 +494,23 @@ static bool hasInterruptDelaySlot(const MCInst &Inst) {
return false;
}
+/// \returns the fragment size if it has instructions, otherwise returns 0.
+static size_t getSizeForInstFragment(const MCFragment *F) {
+ if (!F)
+ return 0;
+ // MCEncodedFragmentWithContents being templated makes this tricky.
+ switch (F->getKind()) {
+ default:
+ 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();
+ case MCFragment::FT_CompactEncodedInst:
+ return cast<MCCompactEncodedInstFragment>(*F).getContents().size();
+ }
+}
+
/// Check if the instruction to be emitted is right after any data.
static bool
isRightAfterData(MCFragment *CurrentFragment,
@@ -503,7 +520,7 @@ isRightAfterData(MCFragment *CurrentFragment,
// added into the previous fragment, we need to skip them since they
// have no contents.
for (; isa_and_nonnull<MCDataFragment>(F); F = F->getPrevNode())
- if (cast<MCDataFragment>(F)->getContents().size() != 0)
+ if (getSizeForInstFragment(F) != 0)
break;
// Since data is always emitted into a DataFragment, our check strategy is
@@ -518,28 +535,11 @@ isRightAfterData(MCFragment *CurrentFragment,
// - If the fragment is not a DataFragment, returns false.
if (auto *DF = dyn_cast_or_null<MCDataFragment>(F))
return DF != PrevInstPosition.first ||
- DF->getContents().size() != PrevInstPosition.second;
+ getSizeForInstFragment(DF) != PrevInstPosition.second;
return false;
}
-/// \returns the fragment size if it has instructions, otherwise returns 0.
-static size_t getSizeForInstFragment(const MCFragment *F) {
- if (!F || !F->hasInstructions())
- return 0;
- // MCEncodedFragmentWithContents being templated makes this tricky.
- switch (F->getKind()) {
- default:
- 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();
- case MCFragment::FT_CompactEncodedInst:
- return cast<MCCompactEncodedInstFragment>(*F).getContents().size();
- }
-}
-
/// Check if the instruction operand needs to be aligned.
bool X86AsmBackend::needAlignInst(const MCInst &Inst) const {
const MCInstrDesc &InstDesc = MCII->get(Inst.getOpcode());
@@ -880,7 +880,7 @@ bool X86AsmBackend::padInstructionViaPrefix(MCRelaxableFragment &RF,
if (!isFullyRelaxed(RF))
return false;
- const unsigned OldSize = RF.getContents().size();
+ const unsigned OldSize = getSizeForInstFragment(&RF);
if (OldSize == 15)
return false;
@@ -922,7 +922,7 @@ bool X86AsmBackend::padInstructionViaRelaxation(MCRelaxableFragment &RF,
SmallString<15> Code;
raw_svector_ostream VecOS(Code);
Emitter.encodeInstruction(Relaxed, VecOS, Fixups, *RF.getSubtargetInfo());
- const unsigned OldSize = RF.getContents().size();
+ const unsigned OldSize = getSizeForInstFragment(&RF);
const unsigned NewSize = Code.size();
assert(NewSize >= OldSize && "size decrease during relaxation?");
unsigned Delta = NewSize - OldSize;
More information about the llvm-commits
mailing list