diff --git a/lib/programmemory.cpp b/lib/programmemory.cpp index df4b5fcc0c7..9bbd46aea5b 100644 --- a/lib/programmemory.cpp +++ b/lib/programmemory.cpp @@ -61,7 +61,6 @@ std::size_t ExprIdToken::Hash::operator()(ExprIdToken etok) const void ProgramMemory::setValue(const Token* expr, const ValueFlow::Value& value) { copyOnWrite(); - (*mValues)[expr] = value; ValueFlow::Value subvalue = value; const Token* subexpr = solveExprValue( expr, @@ -74,6 +73,8 @@ void ProgramMemory::setValue(const Token* expr, const ValueFlow::Value& value) { return {}; }, subvalue); + if (expr != subexpr) + (*mValues)[expr] = value; if (subexpr) (*mValues)[subexpr] = std::move(subvalue); }