LLVM 22.0.0git
|
MCDC Record grouping all information together. More...
#include "llvm/ProfileData/Coverage/CoverageMapping.h"
Classes | |
class | TestVector |
Emulate SmallVector<CondState> with a pair of BitVector. More... | |
Public Types | |
enum | CondState { MCDC_DontCare = -1 , MCDC_False = 0 , MCDC_True = 1 } |
CondState represents the evaluation of a condition in an executed test vector, which can be True or False. More... | |
using | TestVectors = llvm::SmallVector< std::pair< TestVector, CondState > > |
using | BoolVector = std::array< BitVector, 2 > |
using | TVRowPair = std::pair< unsigned, unsigned > |
using | TVPairMap = llvm::DenseMap< unsigned, TVRowPair > |
using | CondIDMap = llvm::DenseMap< unsigned, unsigned > |
using | LineColPairMap = llvm::DenseMap< unsigned, LineColPair > |
Public Member Functions | |
MCDCRecord (const CounterMappingRegion &Region, TestVectors &&TV, BoolVector &&Folded, CondIDMap &&PosToID, LineColPairMap &&CondLoc) | |
LLVM_ABI void | findIndependencePairs () |
const CounterMappingRegion & | getDecisionRegion () const |
unsigned | getNumConditions () const |
unsigned | getNumTestVectors () const |
bool | isCondFolded (unsigned Condition) const |
CondState | getTVCondition (unsigned TestVectorIndex, unsigned Condition) |
Return the evaluation of a condition (indicated by Condition) in an executed test vector (indicated by TestVectorIndex), which will be True, False, or DontCare if the condition is unevaluatable. | |
std::pair< unsigned, unsigned > | getDecisions () const |
Return the number of True and False decisions for all executed test vectors. | |
CondState | getTVResult (unsigned TestVectorIndex) |
Return the Result evaluation for an executed test vector. | |
bool | isConditionIndependencePairCovered (unsigned Condition) const |
Determine whether a given condition (indicated by Condition) is covered by an Independence Pair. | |
TVRowPair | getConditionIndependencePair (unsigned Condition) |
Return the Independence Pair that covers the given condition. | |
float | getPercentCovered () const |
std::string | getConditionHeaderString (unsigned Condition) |
std::string | getTestVectorHeaderString () const |
std::string | getTestVectorString (unsigned TestVectorIndex) |
std::string | getConditionCoverageString (unsigned Condition) |
MCDC Record grouping all information together.
Definition at line 391 of file CoverageMapping.h.
using llvm::coverage::MCDCRecord::BoolVector = std::array<BitVector, 2> |
Definition at line 453 of file CoverageMapping.h.
Definition at line 456 of file CoverageMapping.h.
Definition at line 457 of file CoverageMapping.h.
using llvm::coverage::MCDCRecord::TestVectors = llvm::SmallVector<std::pair<TestVector, CondState> > |
Definition at line 452 of file CoverageMapping.h.
Definition at line 455 of file CoverageMapping.h.
using llvm::coverage::MCDCRecord::TVRowPair = std::pair<unsigned, unsigned> |
Definition at line 454 of file CoverageMapping.h.
CondState represents the evaluation of a condition in an executed test vector, which can be True or False.
A DontCare is used to mask an unevaluatable condition resulting from short-circuit behavior of logical operators in languages like C/C++. When comparing the evaluation of a condition across executed test vectors, comparisons against a DontCare are effectively ignored.
Enumerator | |
---|---|
MCDC_DontCare | |
MCDC_False | |
MCDC_True |
Definition at line 398 of file CoverageMapping.h.
|
inline |
Definition at line 468 of file CoverageMapping.h.
References findIndependencePairs().
void MCDCRecord::findIndependencePairs | ( | ) |
Definition at line 253 of file CoverageMapping.cpp.
References A, assert(), B, llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::find_if(), I, MCDC_False, MCDC_True, and llvm::SmallVectorBase< Size_T >::size().
Referenced by MCDCRecord().
|
inline |
Definition at line 614 of file CoverageMapping.h.
References assert(), getConditionIndependencePair(), getNumConditions(), isCondFolded(), isConditionIndependencePairCovered(), and OS.
|
inline |
Definition at line 552 of file CoverageMapping.h.
References OS.
Return the Independence Pair that covers the given condition.
Because condition IDs are not associated based on their position in the expression, accessing conditions in the TestVectors requires a translation from a ordinal position to actual condition ID. This is done via PosToID[].
Definition at line 530 of file CoverageMapping.h.
References assert(), and isConditionIndependencePairCovered().
Referenced by getConditionCoverageString().
|
inline |
Definition at line 479 of file CoverageMapping.h.
Return the number of True and False decisions for all executed test vectors.
Definition at line 500 of file CoverageMapping.h.
References llvm::count(), llvm::make_second_range(), MCDC_True, and llvm::SmallVectorBase< Size_T >::size().
|
inline |
Definition at line 480 of file CoverageMapping.h.
Referenced by getConditionCoverageString(), getPercentCovered(), getTestVectorHeaderString(), and getTestVectorString().
|
inline |
Definition at line 483 of file CoverageMapping.h.
References llvm::SmallVectorBase< Size_T >::size().
Referenced by getTestVectorHeaderString(), and getTestVectorString().
|
inline |
Definition at line 536 of file CoverageMapping.h.
References llvm::CallingConv::C, getNumConditions(), isCondFolded(), isConditionIndependencePairCovered(), and llvm::Total.
|
inline |
Definition at line 560 of file CoverageMapping.h.
References getNumConditions(), getNumTestVectors(), I, and OS.
|
inline |
Definition at line 576 of file CoverageMapping.h.
References assert(), getNumConditions(), getNumTestVectors(), getTVCondition(), getTVResult(), isCondFolded(), MCDC_DontCare, MCDC_False, MCDC_True, and OS.
|
inline |
Return the evaluation of a condition (indicated by Condition) in an executed test vector (indicated by TestVectorIndex), which will be True, False, or DontCare if the condition is unevaluatable.
Because condition IDs are not associated based on their position in the expression, accessing conditions in the TestVectors requires a translation from a ordinal position to actual condition ID. This is done via PosToID[].
Definition at line 494 of file CoverageMapping.h.
Referenced by getTestVectorString().
Return the Result evaluation for an executed test vector.
See MCDCRecordProcessor::RecordTestVector().
Definition at line 509 of file CoverageMapping.h.
Referenced by getTestVectorString().
Definition at line 484 of file CoverageMapping.h.
Referenced by getConditionCoverageString(), getPercentCovered(), and getTestVectorString().
|
inline |
Determine whether a given condition (indicated by Condition) is covered by an Independence Pair.
Because condition IDs are not associated based on their position in the expression, accessing conditions in the TestVectors requires a translation from a ordinal position to actual condition ID. This is done via PosToID[].
Definition at line 518 of file CoverageMapping.h.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find().
Referenced by getConditionCoverageString(), getConditionIndependencePair(), and getPercentCovered().