From: Rafael Espindola Date: Sat, 4 Dec 2010 22:47:22 +0000 (+0000) Subject: Once the layout is done we don't need to keep updating which fragments are X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b4172fa72915bd031383e81c83cd313c8c4b2e74;p=oota-llvm.git 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 --- 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];