From b4172fa72915bd031383e81c83cd313c8c4b2e74 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Sat, 4 Dec 2010 22:47:22 +0000 Subject: [PATCH] Once the layout is done we don't need to keep updating which fragments are valid. Addresses will not change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120921 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCAssembler.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp index 451ad1f4e84..1e701ecf2b4 100644 --- a/lib/MC/MCAssembler.cpp +++ b/lib/MC/MCAssembler.cpp @@ -122,10 +122,6 @@ void MCAsmLayout::ReplaceFragment(MCFragment *Src, MCFragment *Dst) { // Set the data fragment's layout data. Dst->setParent(Src->getParent()); Dst->setAtom(Src->getAtom()); - Dst->setLayoutOrder(Src->getLayoutOrder()); - - if (LastValidFragment == Src) - LastValidFragment = Dst; Dst->Offset = Src->Offset; Dst->EffectiveSize = Src->EffectiveSize; @@ -136,15 +132,7 @@ void MCAsmLayout::ReplaceFragment(MCFragment *Src, MCFragment *Dst) { void MCAsmLayout::CoalesceFragments(MCFragment *Src, MCFragment *Dst) { assert(Src->getPrevNode() == Dst); - - if (isFragmentUpToDate(Src)) { - if (LastValidFragment == Src) - LastValidFragment = Dst; - Dst->EffectiveSize += Src->EffectiveSize; - } else { - // We don't know the effective size of Src, so we have to invalidate Dst. - Invalidate(Dst); - } + Dst->EffectiveSize += Src->EffectiveSize; // Remove Src, but don't delete it yet. Src->getParent()->getFragmentList().remove(Src); } @@ -907,6 +895,10 @@ void MCAssembler::FinishLayout(MCAsmLayout &Layout) { // cheap (we will mostly end up eliminating fragments and appending on to data // fragments), so the extra complexity downstream isn't worth it. Evaluate // this assumption. + + // The layout is done. Mark every fragment as valid. + Layout.getFragmentOffset(&*Layout.getSectionOrder().back()->rbegin()); + unsigned FragmentIndex = 0; for (unsigned i = 0, e = Layout.getSectionOrder().size(); i != e; ++i) { MCSectionData &SD = *Layout.getSectionOrder()[i]; -- 2.34.1