mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-09-22 23:10:18 +00:00
float_as_int_without_noise() returns early when the floored value fits in a long, checking it with floor_val == static_cast<long>(floor_val). For values outside the range of long the conversion is undefined behavior; clang -O2 folds the round trip into "floor_val is integral", which is always true, so the denoising is skipped: FAIL: tests/test_fastnumbers_examples.py:test_try_real FAIL: tests/test_fastnumbers_examples.py:test_try_forceint assert 3452999999999999737856 == 3453000000000000000000 Add a patch that only does the conversion when the value is in range. A reduced reproducer returns the wrong answer with the recipe's clang++ at -O2 and the right one with the fix (and with -O0 or gcc). AI-Generated: Uses Claude Code Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>