From 6dac933d75528a8fc7df9bbf0621d7dce7d734d6 Mon Sep 17 00:00:00 2001 From: Shubham Sandeep Rastogi Date: Fri, 29 Aug 2025 12:11:41 -0700 Subject: [PATCH] MCCAS fixes on next. This commit has 3 minor, but important fixes 1. Ensure that MCLEBFragmentRef::create uses the passed-in FragmentsContents to create the cas object. 2. Ensure that MCCVInlineLineTableFragmentRef::create uses the passed-in FragmentsContents to create the cas object. 3. Make FT_CVDefRange a mergeable fragment, as all other non-encoded fragments are mergeable. rdar://159458401 rdar://159216364 --- llvm/lib/MCCAS/MCCASObjectV1.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/llvm/lib/MCCAS/MCCASObjectV1.cpp b/llvm/lib/MCCAS/MCCASObjectV1.cpp index ef2a8a28f43f3..193c6879b592b 100644 --- a/llvm/lib/MCCAS/MCCASObjectV1.cpp +++ b/llvm/lib/MCCAS/MCCASObjectV1.cpp @@ -1635,7 +1635,7 @@ MCCVInlineLineTableFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); - llvm::append_range(B->Data, F.getContents()); + B->Data.append(FragmentContents.begin(), FragmentContents.end()); return get(B->build()); } @@ -1704,7 +1704,7 @@ MCLEBFragmentRef::create(MCCASBuilder &MB, const MCFragment &F, Expected B = Builder::startNode(MB.Schema, KindString); if (!B) return B.takeError(); - llvm::append_range(B->Data, F.getContents()); + B->Data.append(FragmentContents.begin(), FragmentContents.end()); return get(B->build()); } @@ -1904,7 +1904,8 @@ Error MCDataFragmentMerger::tryMerge(const MCFragment &F, unsigned Size, F.getKind() == MCFragment::FT_Data || F.getKind() == MCFragment::FT_Dwarf || F.getKind() == MCFragment::FT_DwarfFrame || - F.getKind() == MCFragment::FT_Align; + F.getKind() == MCFragment::FT_Align || + F.getKind() == MCFragment::FT_CVDefRange; // If not the same atom, flush merge candidate and return false. if (!IsSameAtom || !IsMergeableFragment || Oversized) {