diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp index eb3beec23808e..c10d85ea89ee6 100644 --- a/clang/lib/CodeGen/CoverageMappingGen.cpp +++ b/clang/lib/CodeGen/CoverageMappingGen.cpp @@ -190,8 +190,7 @@ class SourceMappingRegion { } const auto &getMCDCDecisionParams() const { - return CounterMappingRegion::getParams( - MCDCParams); + return mcdc::getParams(MCDCParams); } const mcdc::Parameters &getMCDCParams() const { return MCDCParams; } diff --git a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h index e3b394287f335..c5c9740f25c2c 100644 --- a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h +++ b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h @@ -258,22 +258,12 @@ struct CounterMappingRegion { /// Parameters used for Modified Condition/Decision Coverage mcdc::Parameters MCDCParams; - template - static auto &getParams(MaybeConstMCDCParameters &MCDCParams) { - using InnerParameters = - typename std::remove_const::type; - MaybeConstInnerParameters *Params = - std::get_if(&MCDCParams); - assert(Params && "InnerParameters unavailable"); - return *Params; - } - const auto &getDecisionParams() const { - return getParams(MCDCParams); + return mcdc::getParams(MCDCParams); } const auto &getBranchParams() const { - return getParams(MCDCParams); + return mcdc::getParams(MCDCParams); } unsigned FileID = 0; diff --git a/llvm/include/llvm/ProfileData/Coverage/MCDCTypes.h b/llvm/include/llvm/ProfileData/Coverage/MCDCTypes.h index 51f528b7e7880..8c78bed4dec52 100644 --- a/llvm/include/llvm/ProfileData/Coverage/MCDCTypes.h +++ b/llvm/include/llvm/ProfileData/Coverage/MCDCTypes.h @@ -14,6 +14,8 @@ #define LLVM_PROFILEDATA_COVERAGE_MCDCTYPES_H #include +#include +#include #include namespace llvm::coverage::mcdc { @@ -49,6 +51,19 @@ struct BranchParameters { using Parameters = std::variant; +/// Check and get underlying params in MCDCParams. +/// \tparam MaybeConstInnerParameters Type to get. May be const. +/// \tparam MaybeConstMCDCParameters Expected inferred. May be const. +/// \param MCDCParams May be const. +template +static auto &getParams(MaybeConstMCDCParameters &MCDCParams) { + using InnerParameters = + typename std::remove_const::type; + MaybeConstInnerParameters *Params = std::get_if(&MCDCParams); + assert(Params && "InnerParameters unavailable"); + return *Params; +} + } // namespace llvm::coverage::mcdc #endif // LLVM_PROFILEDATA_COVERAGE_MCDCTYPES_H