@@ -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