https://gcc.gnu.org/g:8b4a84388c7ef9c441491b9c258212b3c2318ee3
commit r15-9004-g8b4a84388c7ef9c441491b9c258212b3c2318ee3 Author: Richard Biener <rguent...@suse.de> Date: Fri Mar 28 08:52:16 2025 +0100 [COBOL] use native_encode_real The following avoids the round-trip through a newly built tree and instead directly uses the now exported native_encode_real. gcc/cobol/ * genapi.cc (initial_from_float128): Use native_encode_real. Diff: --- gcc/cobol/genapi.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc index 032236b15dba..bc9153381588 100644 --- a/gcc/cobol/genapi.cc +++ b/gcc/cobol/genapi.cc @@ -15680,24 +15680,23 @@ initial_from_float128(cbl_field_t *field) case FldFloat: { - tree tem; retval = (char *)xmalloc(field->data.capacity); switch( field->data.capacity ) { case 4: value = real_value_truncate (TYPE_MODE (FLOAT), value); - tem = build_real (FLOAT, value); - native_encode_expr (tem, (unsigned char *)retval, 4, 0); + native_encode_real (SCALAR_FLOAT_TYPE_MODE (FLOAT), &value, + (unsigned char *)retval, 4, 0); break; case 8: value = real_value_truncate (TYPE_MODE (DOUBLE), value); - tem = build_real (DOUBLE, value); - native_encode_expr (tem, (unsigned char *)retval, 8, 0); + native_encode_real (SCALAR_FLOAT_TYPE_MODE (DOUBLE), &value, + (unsigned char *)retval, 8, 0); break; case 16: value = real_value_truncate (TYPE_MODE (FLOAT128), value); - tem = build_real (FLOAT128, value); - native_encode_expr (tem, (unsigned char *)retval, 16, 0); + native_encode_real (SCALAR_FLOAT_TYPE_MODE (FLOAT128), &value, + (unsigned char *)retval, 16, 0); break; } break;