From f038493b75abc6ebb7c8b22b188db214b8585495 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 27 Jun 2024 10:35:45 -0700 Subject: [PATCH] [MC] Chain together fragments only if Subsections.size() > 1 and delete an unneeded setParent call. --- llvm/lib/MC/MCAssembler.cpp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index f8b7e4b60409b2..205a9b2ffe8e84 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -866,22 +866,23 @@ void MCAssembler::layout(MCAsmLayout &Layout) { Sec->setLayoutOrder(i); // Chain together fragments from all subsections. - MCDummyFragment Dummy; - Dummy.setParent(Sec); - MCFragment *Tail = &Dummy; - for (auto &[_, List] : Sec->Subsections) { - if (!List.Head) - continue; - Tail->Next = List.Head; - Tail = List.Tail; - } - Sec->Subsections.clear(); - Sec->Subsections.push_back({0u, {Dummy.getNext(), Tail}}); - Sec->CurFragList = &Sec->Subsections[0].second; + if (Sec->Subsections.size() > 1) { + MCDummyFragment Dummy; + MCFragment *Tail = &Dummy; + for (auto &[_, List] : Sec->Subsections) { + if (!List.Head) + continue; + Tail->Next = List.Head; + Tail = List.Tail; + } + Sec->Subsections.clear(); + Sec->Subsections.push_back({0u, {Dummy.getNext(), Tail}}); + Sec->CurFragList = &Sec->Subsections[0].second; - unsigned FragmentIndex = 0; - for (MCFragment &Frag : *Sec) - Frag.setLayoutOrder(FragmentIndex++); + unsigned FragmentIndex = 0; + for (MCFragment &Frag : *Sec) + Frag.setLayoutOrder(FragmentIndex++); + } } // Layout until everything fits.