Lines Matching refs:F

79 bool MCAsmLayout::isFragmentValid(const MCFragment *F) const {  in isFragmentValid()
80 const MCSection *Sec = F->getParent(); in isFragmentValid()
85 return F->getLayoutOrder() <= LastValid->getLayoutOrder(); in isFragmentValid()
88 void MCAsmLayout::invalidateFragmentsFrom(MCFragment *F) { in invalidateFragmentsFrom() argument
90 if (!isFragmentValid(F)) in invalidateFragmentsFrom()
95 LastValidFragment[F->getParent()] = F->getPrevNode(); in invalidateFragmentsFrom()
98 void MCAsmLayout::ensureValid(const MCFragment *F) const { in ensureValid()
99 MCSection *Sec = F->getParent(); in ensureValid()
107 while (!isFragmentValid(F)) { in ensureValid()
114 uint64_t MCAsmLayout::getFragmentOffset(const MCFragment *F) const { in getFragmentOffset()
115 ensureValid(F); in getFragmentOffset()
116 assert(F->Offset != ~UINT64_C(0) && "Address not set!"); in getFragmentOffset()
117 return F->Offset; in getFragmentOffset()
209 const MCFragment &F = Sec->getFragmentList().back(); in getSectionAddressSize() local
210 return getFragmentOffset(&F) + getAssembler().computeFragmentSize(*this, F); in getSectionAddressSize()
223 const MCFragment *F, in computeBundlePadding() argument
239 if (F->alignToBundleEnd()) { in computeBundlePadding()
492 const MCFragment &F) const { in computeFragmentSize()
493 switch (F.getKind()) { in computeFragmentSize()
495 return cast<MCDataFragment>(F).getContents().size(); in computeFragmentSize()
497 return cast<MCRelaxableFragment>(F).getContents().size(); in computeFragmentSize()
499 return cast<MCCompactEncodedInstFragment>(F).getContents().size(); in computeFragmentSize()
501 return cast<MCFillFragment>(F).getSize(); in computeFragmentSize()
504 return cast<MCLEBFragment>(F).getContents().size(); in computeFragmentSize()
510 const MCAlignFragment &AF = cast<MCAlignFragment>(F); in computeFragmentSize()
525 const MCOrgFragment &OF = cast<MCOrgFragment>(F); in computeFragmentSize()
540 return cast<MCDwarfLineAddrFragment>(F).getContents().size(); in computeFragmentSize()
542 return cast<MCDwarfCallFrameFragment>(F).getContents().size(); in computeFragmentSize()
548 void MCAsmLayout::layoutFragment(MCFragment *F) { in layoutFragment() argument
549 MCFragment *Prev = F->getPrevNode(); in layoutFragment()
552 assert(!isFragmentValid(F) && "Attempt to recompute a valid fragment!"); in layoutFragment()
562 F->Offset = Prev->Offset + getAssembler().computeFragmentSize(*this, *Prev); in layoutFragment()
564 F->Offset = 0; in layoutFragment()
565 LastValidFragment[F->getParent()] = F; in layoutFragment()
594 if (Assembler.isBundlingEnabled() && F->hasInstructions()) { in layoutFragment()
595 assert(isa<MCEncodedFragment>(F) && in layoutFragment()
597 uint64_t FSize = Assembler.computeFragmentSize(*this, *F); in layoutFragment()
602 uint64_t RequiredBundlePadding = computeBundlePadding(Assembler, F, in layoutFragment()
603 F->Offset, FSize); in layoutFragment()
606 F->setBundlePadding(static_cast<uint8_t>(RequiredBundlePadding)); in layoutFragment()
607 F->Offset += RequiredBundlePadding; in layoutFragment()
621 void MCAssembler::writeFragmentPadding(const MCFragment &F, uint64_t FSize, in writeFragmentPadding() argument
624 unsigned BundlePadding = F.getBundlePadding(); in writeFragmentPadding()
628 assert(F.hasInstructions() && in writeFragmentPadding()
632 if (F.alignToBundleEnd() && TotalLength > getBundleAlignSize()) { in writeFragmentPadding()
655 const MCFragment &F) { in writeFragment() argument
659 uint64_t FragmentSize = Asm.computeFragmentSize(Layout, F); in writeFragment()
661 Asm.writeFragmentPadding(F, FragmentSize, OW); in writeFragment()
670 switch (F.getKind()) { in writeFragment()
673 const MCAlignFragment &AF = cast<MCAlignFragment>(F); in writeFragment()
713 OW->writeBytes(cast<MCDataFragment>(F).getContents()); in writeFragment()
718 OW->writeBytes(cast<MCRelaxableFragment>(F).getContents()); in writeFragment()
723 OW->writeBytes(cast<MCCompactEncodedInstFragment>(F).getContents()); in writeFragment()
728 const MCFillFragment &FF = cast<MCFillFragment>(F); in writeFragment()
745 const MCLEBFragment &LF = cast<MCLEBFragment>(F); in writeFragment()
751 const MCSafeSEHFragment &SF = cast<MCSafeSEHFragment>(F); in writeFragment()
758 const MCOrgFragment &OF = cast<MCOrgFragment>(F); in writeFragment()
767 const MCDwarfLineAddrFragment &OF = cast<MCDwarfLineAddrFragment>(F); in writeFragment()
772 const MCDwarfCallFrameFragment &CF = cast<MCDwarfCallFrameFragment>(F); in writeFragment()
840 MCFragment &F, in handleFixup() argument
847 if (!evaluateFixup(Layout, Fixup, &F, Target, FixedValue)) { in handleFixup()
851 getWriter().recordRelocation(*this, Layout, &F, Fixup, Target, IsPCRel, in handleFixup()
912 MCEncodedFragment *F = dyn_cast<MCEncodedFragment>(it2); in Finish() local
917 if (!F || isa<MCCompactEncodedInstFragment>(F)) in Finish()
921 if (auto *FragWithFixups = dyn_cast<MCDataFragment>(F)) { in Finish()
924 } else if (auto *FragWithFixups = dyn_cast<MCRelaxableFragment>(F)) { in Finish()
932 std::tie(FixedValue, IsPCRel) = handleFixup(Layout, *F, Fixup); in Finish()
955 bool MCAssembler::fragmentNeedsRelaxation(const MCRelaxableFragment *F, in fragmentNeedsRelaxation() argument
960 if (!getBackend().mayNeedRelaxation(F->getInst())) in fragmentNeedsRelaxation()
963 for (MCRelaxableFragment::const_fixup_iterator it = F->fixup_begin(), in fragmentNeedsRelaxation()
964 ie = F->fixup_end(); it != ie; ++it) in fragmentNeedsRelaxation()
965 if (fixupNeedsRelaxation(*it, F, Layout)) in fragmentNeedsRelaxation()
972 MCRelaxableFragment &F) { in relaxInstruction() argument
973 if (!fragmentNeedsRelaxation(&F, Layout)) in relaxInstruction()
984 getBackend().relaxInstruction(F.getInst(), Relaxed); in relaxInstruction()
993 getEmitter().encodeInstruction(Relaxed, VecOS, Fixups, F.getSubtargetInfo()); in relaxInstruction()
997 F.setInst(Relaxed); in relaxInstruction()
998 F.getContents() = Code; in relaxInstruction()
999 F.getFixups() = Fixups; in relaxInstruction()
1208 const MCRelaxableFragment *F = cast<MCRelaxableFragment>(this); in dump() local
1211 F->getInst().dump_pretty(OS); in dump()
1240 const MCSafeSEHFragment *F = cast<MCSafeSEHFragment>(this); in dump() local
1242 OS << " Sym:" << F->getSymbol(); in dump()