================ @@ -676,41 +679,25 @@ struct MCDCCoverageBuilder { return E->getOpcode() == BO_LAnd; } - /// Push an ID onto the corresponding RHS stack. - void pushRHS(const BinaryOperator *E) { - llvm::SmallVector<MCDCConditionID> &rhs = isLAnd(E) ? AndRHS : OrRHS; - rhs.push_back(CondIDs[CodeGenFunction::stripCond(E->getRHS())]); - } - - /// Pop an ID from the corresponding RHS stack. - void popRHS(const BinaryOperator *E) { - llvm::SmallVector<MCDCConditionID> &rhs = isLAnd(E) ? AndRHS : OrRHS; - if (!rhs.empty()) - rhs.pop_back(); - } - - /// If the expected ID is on top, pop it off the corresponding RHS stack. - void popRHSifTop(const BinaryOperator *E) { - if (!OrRHS.empty() && CondIDs[E] == OrRHS.back()) - OrRHS.pop_back(); - else if (!AndRHS.empty() && CondIDs[E] == AndRHS.back()) - AndRHS.pop_back(); - } - public: MCDCCoverageBuilder(CodeGenModule &CGM, llvm::DenseMap<const Stmt *, MCDCConditionID> &CondIDMap, llvm::DenseMap<const Stmt *, unsigned> &MCDCBitmapMap) - : CGM(CGM), CondIDs(CondIDMap), MCDCBitmapMap(MCDCBitmapMap) {} + : CGM(CGM), DecisionStack(1), CondIDs(CondIDMap), ---------------- evodius96 wrote:
Rather than define a `DecisionStackSentinel` equal to 1, I'd prefer to define a `constexpr` sentinel value that is explicitly initialized to [0,0] (even though this is the default value). Then it use that to explicitly initialize the stack. ``` static constexpr DecisionIDPair DecisionIDPairSentinel{0,0}; ... DecisionStack(1, DecisionIDPairSentinel); ``` I think this makes it clear what is being done and keeps DecisionIDPair relatively straightforward. https://github.com/llvm/llvm-project/pull/78202 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits