diff options
| -rw-r--r-- | clang/lib/Sema/AnalysisBasedWarnings.cpp | 18 | 
1 files changed, 6 insertions, 12 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp index 549ab4f8447..5f74343fbd9 100644 --- a/clang/lib/Sema/AnalysisBasedWarnings.cpp +++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp @@ -1339,20 +1339,16 @@ class UninitValsDiagReporter : public UninitVariablesHandler {    // the same as insertion order. This is needed to obtain a deterministic    // order of diagnostics when calling flushDiagnostics().    typedef llvm::MapVector<const VarDecl *, MappedType> UsesMap; -  UsesMap *uses; +  UsesMap uses;  public: -  UninitValsDiagReporter(Sema &S) : S(S), uses(nullptr) {} +  UninitValsDiagReporter(Sema &S) : S(S) {}    ~UninitValsDiagReporter() override { flushDiagnostics(); }    MappedType &getUses(const VarDecl *vd) { -    if (!uses) -      uses = new UsesMap(); - -    MappedType &V = (*uses)[vd]; +    MappedType &V = uses[vd];      if (!V.getPointer())        V.setPointer(new UsesVec()); -          return V;    } @@ -1366,10 +1362,7 @@ public:    }    void flushDiagnostics() { -    if (!uses) -      return; - -    for (const auto &P : *uses) { +    for (const auto &P : uses) {        const VarDecl *vd = P.first;        const MappedType &V = P.second; @@ -1410,7 +1403,8 @@ public:        // Release the uses vector.        delete vec;      } -    delete uses; + +    uses.clear();    }  private:  | 

