Avoid one more walk over all sections. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 28 Apr 2015 22:03:22 +0000 (22:03 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 28 Apr 2015 22:03:22 +0000 (22:03 +0000)
Set the group section index as they are created.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236049 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp

index 068c1293548db231a77056f6d095d8e3c7b53010..185b66332be9e7da064081de50fd81e59eca2606 100644 (file)
@@ -957,15 +957,6 @@ void ELFObjectWriter::maybeAddToGroup(MCAssembler &Asm,
 void ELFObjectWriter::computeIndexMap(
     MCAssembler &Asm, std::vector<const MCSectionELF *> &Sections,
     SectionIndexMapTy &SectionIndexMap, const RevGroupMapTy &RevGroupMap) {
-  for (const MCSectionData &SD : Asm) {
-    const MCSectionELF &Section =
-        static_cast<const MCSectionELF &>(SD.getSection());
-    if (Section.getType() != ELF::SHT_GROUP)
-      continue;
-    Sections.push_back(&Section);
-    SectionIndexMap[&Section] = Sections.size();
-  }
-
   std::vector<const MCSectionELF *> RelSections;
   for (const MCSectionData &SD : Asm) {
     const MCSectionELF &Section =
@@ -1465,6 +1456,9 @@ void ELFObjectWriter::createIndexedSections(
     const MCSectionELF *&Group = RevGroupMap[SignatureSymbol];
     if (!Group) {
       Group = Ctx.createELFGroupSection(SignatureSymbol);
+      Sections.push_back(Group);
+      SectionIndexMap[Group] = Sections.size();
+
       MCSectionData &Data = Asm.getOrCreateSectionData(*Group);
       Data.setAlignment(4);
       MCDataFragment *F = new MCDataFragment(&Data);