From e469a3ebc8708fce8a129187862a7f5613bd58d6 Mon Sep 17 00:00:00 2001 From: Lambdaris Date: Thu, 9 May 2024 21:35:33 +0800 Subject: [PATCH] [coverage] keep relative order of mcdc branch and decision mapping regions --- .../lib/ProfileData/Coverage/CoverageMappingWriter.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp b/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp index 5036bde5aca723..c58fc9a46f57d4 100644 --- a/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp +++ b/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp @@ -165,7 +165,15 @@ void CoverageMappingWriter::write(raw_ostream &OS) { const CounterMappingRegion &RHS) { if (LHS.FileID != RHS.FileID) return LHS.FileID < RHS.FileID; - if (LHS.startLoc() != RHS.startLoc()) + + auto ignoreLocationComparison = [](const CounterMappingRegion &LHS, + const CounterMappingRegion &RHS) { + return (LHS.Kind == CounterMappingRegion::MCDCBranchRegion || + LHS.Kind == CounterMappingRegion::MCDCDecisionRegion) && + LHS.Kind == RHS.Kind; + }; + + if (!ignoreLocationComparison(LHS, RHS) && LHS.startLoc() != RHS.startLoc()) return LHS.startLoc() < RHS.startLoc(); // Put `Decision` before `Expansion`.