Skip to content

Commit eb4a12f

Browse files
committed
vf_settokenvalue.cpp: avoid unnecessary objects in setTokenValue()
1 parent d184f77 commit eb4a12f

1 file changed

Lines changed: 22 additions & 24 deletions

File tree

lib/vf_settokenvalue.cpp

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -306,22 +306,23 @@ namespace ValueFlow
306306
value.valueType = Value::ValueType::INT;
307307
setTokenValue(next, std::move(value), settings);
308308
} else if (yields == Library::Container::Yield::EMPTY) {
309-
Value v(value);
310-
v.valueType = Value::ValueType::INT;
311-
v.bound = Value::Bound::Point;
309+
const Value::Bound bound = value.bound;
310+
const long long intvalue = value.intvalue;
311+
value.valueType = Value::ValueType::INT;
312+
value.bound = Value::Bound::Point;
312313
if (value.isImpossible()) {
313-
if (value.intvalue == 0)
314-
v.setKnown();
315-
else if ((value.bound == Value::Bound::Upper && value.intvalue > 0) ||
316-
(value.bound == Value::Bound::Lower && value.intvalue < 0)) {
317-
v.intvalue = 0;
318-
v.setKnown();
314+
if (intvalue == 0)
315+
value.setKnown();
316+
else if ((bound == Value::Bound::Upper && intvalue > 0) ||
317+
(bound == Value::Bound::Lower && intvalue < 0)) {
318+
value.intvalue = 0;
319+
value.setKnown();
319320
} else
320-
v.setPossible();
321+
value.setPossible();
321322
} else {
322-
v.intvalue = !v.intvalue;
323+
value.intvalue = !value.intvalue;
323324
}
324-
setTokenValue(next, std::move(v), settings);
325+
setTokenValue(next, std::move(value), settings);
325326
}
326327
return;
327328
}
@@ -420,11 +421,10 @@ namespace ValueFlow
420421
if (ret)
421422
return;
422423

423-
Value v(std::move(value));
424-
v.conditional = true;
425-
v.changeKnownToPossible();
424+
value.conditional = true;
425+
value.changeKnownToPossible();
426426

427-
setTokenValue(parent, std::move(v), settings);
427+
setTokenValue(parent, std::move(value), settings);
428428
}
429429
}
430430

@@ -712,15 +712,13 @@ namespace ValueFlow
712712
std::vector<const Token*> args = getArguments(value.tokvalue);
713713
if (const Library::Function* f = settings.library.getFunction(parent->previous())) {
714714
if (f->containerYield == Library::Container::Yield::SIZE) {
715-
Value v(std::move(value));
716-
v.valueType = Value::ValueType::INT;
717-
v.intvalue = args.size();
718-
setTokenValue(parent, std::move(v), settings);
715+
value.valueType = Value::ValueType::INT;
716+
value.intvalue = args.size();
717+
setTokenValue(parent, std::move(value), settings);
719718
} else if (f->containerYield == Library::Container::Yield::EMPTY) {
720-
Value v(std::move(value));
721-
v.intvalue = args.empty();
722-
v.valueType = Value::ValueType::INT;
723-
setTokenValue(parent, std::move(v), settings);
719+
value.intvalue = args.empty();
720+
value.valueType = Value::ValueType::INT;
721+
setTokenValue(parent, std::move(value), settings);
724722
}
725723
}
726724
}

0 commit comments

Comments
 (0)