- MCFragment *FirstInvalidFragment = NULL;
-
- for (MCSectionData::iterator it2 = SD.begin(),
- ie2 = SD.end(); it2 != ie2; ++it2) {
- // Check if this is an fragment that needs relaxation.
- bool relaxedFrag = false;
- switch(it2->getKind()) {
- default:
- break;
- case MCFragment::FT_Align:
- relaxedFrag = RelaxAlignment(Writer, Layout,
- *cast<MCAlignFragment>(it2));
- break;
- case MCFragment::FT_Inst:
- relaxedFrag = RelaxInstruction(Writer, Layout,
- *cast<MCInstFragment>(it2));
- break;
- case MCFragment::FT_Org:
- relaxedFrag = RelaxOrg(Writer, Layout, *cast<MCOrgFragment>(it2));
- break;
- case MCFragment::FT_Dwarf:
- relaxedFrag = RelaxDwarfLineAddr(Writer, Layout,
- *cast<MCDwarfLineAddrFragment>(it2));
- break;
- case MCFragment::FT_LEB:
- relaxedFrag = RelaxLEB(Writer, Layout, *cast<MCLEBFragment>(it2));
- break;
- }
- // Update the layout, and remember that we relaxed.
- if (relaxedFrag && !FirstInvalidFragment)
- FirstInvalidFragment = it2;
- WasRelaxed |= relaxedFrag;
- }
- if (FirstInvalidFragment)
- Layout.Invalidate(FirstInvalidFragment);