Skip to content

Commit 321f5d1

Browse files
committed
vf_settokenvalue.cpp: avoid unnecessary objects in setTokenValue()
1 parent 750aa37 commit 321f5d1

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
}
@@ -421,11 +422,10 @@ namespace ValueFlow
421422
if (ret)
422423
return;
423424

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

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

@@ -717,15 +717,13 @@ namespace ValueFlow
717717
std::vector<const Token*> args = getArguments(value.tokvalue);
718718
if (const Library::Function* f = settings.library.getFunction(parent->previous())) {
719719
if (f->containerYield == Library::Container::Yield::SIZE) {
720-
Value v(std::move(value));
721-
v.valueType = Value::ValueType::INT;
722-
v.intvalue = args.size();
723-
setTokenValue(parent, std::move(v), settings);
720+
value.valueType = Value::ValueType::INT;
721+
value.intvalue = args.size();
722+
setTokenValue(parent, std::move(value), settings);
724723
} else if (f->containerYield == Library::Container::Yield::EMPTY) {
725-
Value v(std::move(value));
726-
v.intvalue = args.empty();
727-
v.valueType = Value::ValueType::INT;
728-
setTokenValue(parent, std::move(v), settings);
724+
value.intvalue = args.empty();
725+
value.valueType = Value::ValueType::INT;
726+
setTokenValue(parent, std::move(value), settings);
729727
}
730728
}
731729
}

0 commit comments

Comments
 (0)