On 08.05.21 03:47, Richard Henderson wrote:
> Do not call parts_silence_nan when default_nan_mode is in
> effect. This will avoid an assert in a later patch.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> fpu/softfloat.c | 19 +++++++------------
> 1 file changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/fpu/softfloat.c b/fpu/softfloat.c
> index b694e38522..6589f00b23 100644
> --- a/fpu/softfloat.c
> +++ b/fpu/softfloat.c
> @@ -892,21 +892,16 @@ static float64 float64_round_pack_canonical(FloatParts p, float_status *s)
>
> static FloatParts return_nan(FloatParts a, float_status *s)
> {
> - switch (a.cls) {
> - case float_class_snan:
> + g_assert(is_nan(a.cls));
> + if (is_snan(a.cls)) {
> float_raise(float_flag_invalid, s);
> - a = parts_silence_nan(a, s);
> - /* fall through */
> - case float_class_qnan:
> - if (s->default_nan_mode) {
> - return parts_default_nan(s);
> + if (!s->default_nan_mode) {
> + return parts_silence_nan(a, s);
> }
> - break;
> -
> - default:
> - g_assert_not_reached();
> + } else if (!s->default_nan_mode) {
> + return a;
> }
> - return a;
> + return parts_default_nan(s);
> }
>
> static FloatParts pick_nan(FloatParts a, FloatParts b, float_status *s)
>
Reviewed-by: David Hildenbrand <david@redhat.com>
--
Thanks,
David / dhildenb