Index: cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp =================================================================== --- cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -2482,7 +2482,7 @@ assert(Ex->isGLValue() || VD->getType()->isVoidType()); const LocationContext *LocCtxt = Pred->getLocationContext(); const Decl *D = LocCtxt->getDecl(); - const auto *MD = D ? dyn_cast(D) : nullptr; + const auto *MD = dyn_cast_or_null(D); const auto *DeclRefEx = dyn_cast(Ex); Optional> VInfo; Index: cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp =================================================================== --- cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp +++ cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp @@ -430,7 +430,7 @@ for (BlockDataRegion::referenced_vars_iterator I = referenced_vars_begin(), E = referenced_vars_end(); I != E; ++I) - os << "(" << I.getCapturedRegion() << "," << + os << "(" << I.getCapturedRegion() << "<-" << I.getOriginalRegion() << ") "; os << '}'; } @@ -483,7 +483,12 @@ } void VarRegion::dumpToStream(raw_ostream &os) const { - os << *cast(D); + const auto *VD = cast(D); + if (const auto *ID = VD->getIdentifier()) { + os << ID->getName(); + } else { + os << "VarRegion{" << static_cast(this) << '}'; + } } LLVM_DUMP_METHOD void RegionRawOffset::dump() const {