1818#include " clang/Analysis/FlowSensitive/DataflowWorklist.h"
1919#include " clang/Basic/SourceManager.h"
2020#include " llvm/ADT/DenseMap.h"
21+ #include " llvm/ADT/DenseSet.h"
2122#include " llvm/ADT/STLExtras.h"
2223#include " llvm/Support/raw_ostream.h"
2324#include < optional>
@@ -35,7 +36,7 @@ class LiveVariablesImpl {
3536 llvm::DenseMap<const CFGBlock *, LiveVariables::LivenessValues> blocksEndToLiveness;
3637 llvm::DenseMap<const CFGBlock *, LiveVariables::LivenessValues> blocksBeginToLiveness;
3738 llvm::DenseMap<const Stmt *, LiveVariables::LivenessValues> stmtsToLiveness;
38- llvm::DenseMap <const DeclRefExpr *, unsigned > inAssignment;
39+ llvm::DenseSet <const DeclRefExpr *> inAssignment;
3940 const bool killAtAssign;
4041
4142 LiveVariables::LivenessValues
@@ -370,7 +371,7 @@ static bool writeShouldKill(const VarDecl *VD) {
370371void TransferFunctions::VisitBinaryOperator (BinaryOperator *B) {
371372 if (LV.killAtAssign && B->getOpcode () == BO_Assign) {
372373 if (const auto *DR = dyn_cast<DeclRefExpr>(B->getLHS ()->IgnoreParens ())) {
373- LV.inAssignment [DR] = 1 ;
374+ LV.inAssignment . insert (DR) ;
374375 }
375376 }
376377 if (B->isAssignmentOp ()) {
@@ -412,7 +413,7 @@ void TransferFunctions::VisitBlockExpr(BlockExpr *BE) {
412413
413414void TransferFunctions::VisitDeclRefExpr (DeclRefExpr *DR) {
414415 const Decl* D = DR->getDecl ();
415- bool InAssignment = LV.inAssignment [DR] ;
416+ bool InAssignment = LV.inAssignment . contains (DR) ;
416417 if (const auto *BD = dyn_cast<BindingDecl>(D)) {
417418 if (!InAssignment) {
418419 if (const auto *HV = BD->getHoldingVar ())
0 commit comments