Skip to content

Commit 32749c6

Browse files
author
Your Name
committed
Format
1 parent 6751782 commit 32749c6

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

lib/programmemory.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,12 @@ static bool isBasicForLoop(const Token* tok)
345345
}
346346

347347
// findChanged: optional cached findExpressionChanged (see ProgramMemoryState::FindChangedFn).
348-
static void programMemoryParseCondition(ProgramMemory& pm, const Token* tok, const Token* endTok, const Settings& settings, bool then, const ProgramMemoryState::FindChangedFn& findChanged = {})
348+
static void programMemoryParseCondition(ProgramMemory& pm,
349+
const Token* tok,
350+
const Token* endTok,
351+
const Settings& settings,
352+
bool then,
353+
const ProgramMemoryState::FindChangedFn& findChanged = {})
349354
{
350355
auto eval = [&](const Token* t) -> std::vector<MathLib::bigint> {
351356
if (!t)
@@ -410,7 +415,11 @@ static void programMemoryParseCondition(ProgramMemory& pm, const Token* tok, con
410415
}
411416
}
412417

413-
static void fillProgramMemoryFromConditions(ProgramMemory& pm, const Scope* scope, const Token* endTok, const Settings& settings, const ProgramMemoryState::FindChangedFn& findChanged)
418+
static void fillProgramMemoryFromConditions(ProgramMemory& pm,
419+
const Scope* scope,
420+
const Token* endTok,
421+
const Settings& settings,
422+
const ProgramMemoryState::FindChangedFn& findChanged)
414423
{
415424
if (!scope)
416425
return;
@@ -430,7 +439,10 @@ static void fillProgramMemoryFromConditions(ProgramMemory& pm, const Scope* scop
430439
}
431440
}
432441

433-
static void fillProgramMemoryFromConditions(ProgramMemory& pm, const Token* tok, const Settings& settings, const ProgramMemoryState::FindChangedFn& findChanged = {})
442+
static void fillProgramMemoryFromConditions(ProgramMemory& pm,
443+
const Token* tok,
444+
const Settings& settings,
445+
const ProgramMemoryState::FindChangedFn& findChanged = {})
434446
{
435447
fillProgramMemoryFromConditions(pm, tok->scope(), tok, settings, findChanged);
436448
}
@@ -579,12 +591,14 @@ ProgramMemoryState::FindChangedFn ProgramMemoryState::getCachedFindExpressionCha
579591
const Settings* const sp = &settings;
580592
ProgramMemory snapshot = skipDeadCode ? state : ProgramMemory{};
581593
const std::shared_ptr<EvalCache> evalCache = std::make_shared<EvalCache>();
582-
return [cache, sp, snapshot, skipDeadCode, evalCache](const Token* expr, const Token* start, const Token* end) -> const Token* {
594+
return [cache, sp, snapshot, skipDeadCode, evalCache](const Token* expr,
595+
const Token* start,
596+
const Token* end) -> const Token* {
583597
const auto key = std::make_tuple(expr, start, end);
584598
const auto it = cache->find(key);
585599
const Token* modified = (it != cache->end())
586-
? it->second
587-
: cache->emplace(key, findExpressionChanged(expr, start, end, *sp)).first->second;
600+
? it->second
601+
: cache->emplace(key, findExpressionChanged(expr, start, end, *sp)).first->second;
588602
if (!skipDeadCode || !modified)
589603
return modified;
590604
auto eval = [&](const Token* cond) -> std::vector<MathLib::bigint> {

lib/programmemory.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,17 @@ struct CPPCHECKLIB ProgramMemory {
163163

164164
struct ProgramMemoryState {
165165
struct ChangedKeyHash {
166-
std::size_t operator()(const std::tuple<const Token*, const Token*, const Token*>& t) const {
166+
std::size_t operator()(const std::tuple<const Token*, const Token*, const Token*>& t) const
167+
{
167168
const std::hash<const Token*> h;
168169
std::size_t seed = h(std::get<0>(t));
169170
seed ^= h(std::get<1>(t)) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
170171
seed ^= h(std::get<2>(t)) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
171172
return seed;
172173
}
173174
};
174-
using ChangedCache = std::unordered_map<std::tuple<const Token*, const Token*, const Token*>, const Token*, ChangedKeyHash>;
175+
using ChangedCache =
176+
std::unordered_map<std::tuple<const Token*, const Token*, const Token*>, const Token*, ChangedKeyHash>;
175177
// The token modifying expr between start and end, or nullptr.
176178
using FindChangedFn = std::function<const Token*(const Token* expr, const Token* start, const Token* end)>;
177179

0 commit comments

Comments
 (0)