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;

Reply via email to