Skip to content

Commit e8845ef

Browse files
committed
MC: Add MCAsmLayout::FragmentReplaced() helper function.
llvm-svn: 103709
1 parent 01f21ad commit e8845ef

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

llvm/include/llvm/MC/MCAsmLayout.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ class MCAsmLayout {
4747
/// the delta from the old size.
4848
void UpdateForSlide(MCFragment *F, int SlideAmount);
4949

50+
/// \brief Update the layout because a fragment has been replaced.
51+
void FragmentReplaced(MCFragment *Src, MCFragment *Dst);
52+
5053
/// @name Section Access (in layout order)
5154
/// @{
5255

llvm/lib/MC/MCAssembler.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ void MCAsmLayout::UpdateForSlide(MCFragment *F, int SlideAmount) {
7373
getAssembler().LayoutSection(*this, i);
7474
}
7575

76+
void MCAsmLayout::FragmentReplaced(MCFragment *Src, MCFragment *Dst) {
77+
Dst->Offset = Src->Offset;
78+
Dst->EffectiveSize = Src->EffectiveSize;
79+
}
80+
7681
uint64_t MCAsmLayout::getFragmentAddress(const MCFragment *F) const {
7782
assert(F->getParent() && "Missing section()!");
7883
return getSectionAddress(F->getParent()) + getFragmentOffset(F);
@@ -818,13 +823,10 @@ void MCAssembler::FinishLayout(MCAsmLayout &Layout) {
818823
SD.getFragmentList().insert(it2, DF);
819824

820825
// Update the data fragments layout data.
821-
//
822-
// FIXME: Add MCAsmLayout utility for this.
823826
DF->setParent(IF->getParent());
824827
DF->setAtom(IF->getAtom());
825828
DF->setOrdinal(IF->getOrdinal());
826-
Layout.setFragmentOffset(DF, Layout.getFragmentOffset(IF));
827-
Layout.setFragmentEffectiveSize(DF, Layout.getFragmentEffectiveSize(IF));
829+
Layout.FragmentReplaced(IF, DF);
828830

829831
// Copy in the data and the fixups.
830832
DF->getContents().append(IF->getCode().begin(), IF->getCode().end());

0 commit comments

Comments
 (0)