@@ -486,17 +486,14 @@ namespace ValueFlow
486486 continue ;
487487 result.valueType = Value::ValueType::FLOAT;
488488 }
489- const double floatValue1 = value1.isFloatValue () ? value1.floatValue : static_cast <double >(value1.intvalue );
490- const double floatValue2 = value2.isFloatValue () ? value2.floatValue : static_cast <double >(value2.intvalue );
491- const bool isFloat = value1.isFloatValue () || value2.isFloatValue ();
489+ if ((value1.isFloatValue () || value2.isFloatValue ()) && Token::Match (parent, " &|^|%|<<|>>|==|!=|%or%" ))
490+ continue ;
492491 const auto intValue1 = [&]() -> MathLib::bigint {
493492 return value1.isFloatValue () ? static_cast <MathLib::bigint>(value1.floatValue ) : value1.intvalue ;
494493 };
495494 const auto intValue2 = [&]() -> MathLib::bigint {
496495 return value2.isFloatValue () ? static_cast <MathLib::bigint>(value2.floatValue ) : value2.intvalue ;
497496 };
498- if ((value1.isFloatValue () || value2.isFloatValue ()) && Token::Match (parent, " &|^|%|<<|>>|==|!=|%or%" ))
499- continue ;
500497 if (Token::Match (parent, " ==|!=" )) {
501498 if ((value1.isIntValue () && value2.isTokValue ()) || (value1.isTokValue () && value2.isIntValue ())) {
502499 if (parent->str () == " ==" )
@@ -542,6 +539,7 @@ namespace ValueFlow
542539 }
543540 setTokenValue (parent, std::move (result), settings);
544541 } else if (Token::Match (parent, " %op%" )) {
542+ const bool isFloat = value1.isFloatValue () || value2.isFloatValue ();
545543 if (Token::Match (parent, " %comp%" )) {
546544 if (!isFloat && !value1.isIntValue () && !value2.isIntValue ())
547545 continue ;
@@ -551,6 +549,8 @@ namespace ValueFlow
551549 }
552550 bool error = false ;
553551 if (isFloat) {
552+ const double floatValue1 = value1.isFloatValue () ? value1.floatValue : static_cast <double >(value1.intvalue );
553+ const double floatValue2 = value2.isFloatValue () ? value2.floatValue : static_cast <double >(value2.intvalue );
554554 auto val = calculate (parent->str (), floatValue1, floatValue2, &error);
555555 if (result.isFloatValue ()) {
556556 result.floatValue = val;
0 commit comments