Skip to content

Commit 4523a96

Browse files
committed
avoid progress-related hot spot in ValueFlowPassRunner::run() [skip ci]
1 parent a785416 commit 4523a96

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

lib/valueflow.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7219,8 +7219,12 @@ struct ValueFlowPassRunner {
72197219
const std::size_t passnum = state.settings.vfOptions.maxIterations - n + 1;
72207220
const std::string passnum_s = std::to_string(passnum);
72217221
if (std::any_of(passes.begin(), passes.end(), [&](const ValuePtr<ValueFlowPass>& pass) {
7222-
ProgressReporter progressReporter(state.errorLogger, state.settings.reportProgress, state.tokenlist.getSourceFilePath(), std::string("ValueFlow::") + pass->name() + (' ' + passnum_s));
7223-
return run(pass, passnum);
7222+
const std::string passnum = std::to_string(state.settings.vfOptions.maxIterations - n + 1);
7223+
// the string concatination is a hot spot in TestIO::testScanfArgument and TestIO::testPrintfArgumentVariables
7224+
const bool doProgress = state.settings.reportProgress >= 0;
7225+
std::string stage = doProgress ? std::string("ValueFlow::") + pass->name() + (' ' + passnum) : "";
7226+
ProgressReporter progressReporter(state.errorLogger, state.settings.reportProgress >= 0, state.tokenlist.getSourceFilePath(), std::move(stage));
7227+
return run(pass);
72247228
}))
72257229
return true;
72267230
--n;

0 commit comments

Comments
 (0)