Thank you for all that.  And, yes, I did a global replace on /t instead of
\t, and I feel suitably stupid about that.

I'll fix all that up. When we're ready to go with it.

> -----Original Message-----
> From: Jakub Jelinek <ja...@redhat.com>
> Sent: Monday, March 24, 2025 07:07
> To: Robert Dubner <rdub...@symas.com>; James K. Lowden
> <jklow...@cobolworx.com>; Richard Biener <rguent...@suse.de>; gcc-
> patc...@gcc.gnu.org
> Subject: Re: [PATCH] change cbl_field_data_t::etc_t::value from
_Float128
> to tree
> 
> On Mon, Mar 24, 2025 at 09:44:40AM +0100, Jakub Jelinek wrote:
> > On Sun, Mar 23, 2025 at 08:28:47PM -0500, Robert Dubner wrote:
> > > Jim is back from a short COBOL-related business trip.  I am going to
> take
> > > this working collection of patched patched patches and put it up
where
> he
> > > can get at it.
> > >
> > > That location is the float_to_tree branch of
> > >
> > > https://gitlab.cobolworx.com/COBOLworx/gcc-cobol.git
> > >
> > > And we'll review it. We want to make sure that these changes don't
do
> any
> > > damage that might be hidden because there are no tests for some
things
> > > that nonetheless might be visible to us when we look at it.
> > >
> > > So, with the understanding that this is still pending internal Jim &
> Bob
> > > review, I am putting the probable patch here:
> >
> > So, first of all, you'll need a ChangeLog entry for this.
> > Here is a proposal for that.
> >
> 
> Forgot, there is
>       PR cobol/119241
> missing in the ChangeLog entry at the start.
> 
> >     * gcobolspec.cc (lang_specific_driver): Formatting fix.
> >     * genapi.cc: Include fold-const.h and realmpfr.h.
> >     (initialize_variable_internal): Use real_to_decimal instead of
> >     strfromf128.
> >     (get_binary_value_from_float): Use wide_int_to_tree instead of
> >     build_int_cst_type.
> >     (psa_FldLiteralN): Use fold_convert instead of strfromf128,
> >     real_from_string and build_real.
> >     (parser_display_internal): Rewritten to work on REAL_VALUE_TYPE
> >     rather than _Float128.
> >     (mh_source_is_literalN): Use FIXED_WIDE_INT(128) rather than
> >     __int128, wide_int_to_tree rather than build_int_cst_type,
> >     fold_convert rather than build_string_literal.
> >     (real_powi10): New function.
> >     (binary_initial_from_float128): Change type of last argument from
> >     _Float128 to REAL_VALUE_TYPE, process it using real.cc and mpfr
> >     APIs.
> >     (digits_from_float128): Likewise.
> >     (initial_from_float128): Make static.  Remove value argument, add
> >     local REAL_VALUE_TYPE value variable instead, process it using
> >     real.cc and native_encode_expr APIs.
> >     (parser_symbol_add): Adjust initial_from_float128 caller.
> >     * genapi.h (initial_from_float128): Remove declaration.
> >     * genutil.cc (get_power_of_ten): Change return type from __int128
> >     to FIXED_WIDE_INT(128), ditto for retval type, change type of pos
> >     from __int128 to unsigned long long.
> >     (scale_by_power_of_ten_N): Use wide_int_to_tree instead of
> >     build_int_cst_type.  Use FIXED_WIDE_INT(128) instead of __int128
> >     as power_of_ten variable type.
> >     (copy_little_endian_into_place): Likewise.
> >     * genutil.h (get_power_of_ten): Change return type from __int128
> >     to FIXED_WIDE_INT(128).
> >     (FIXED_WIDE_INT):
> >     * parse.y (%union): Change type of float128 from _Float128 to
> >     REAL_VALUE_TYPE.
> >     (string_of): Change argument type from _Float128 to
> >     const REAL_VALUE_TYPE &, use real_to_decimal rather than
> >     strfromf128.  Add another overload with tree argument type.
> >     (field: cdf): Use real_zerop rather than comparison against 0.0.
> >     (occurs_clause, const_value): Use real_to_integer.
> >     (value78): Use build_real and real_to_integer.
> >     (data_descr1): Use real_to_integer.
> >     (count): Use real_to_integer, real_from_integer and real_identical
> >     instead of direct comparison.
> >     (value_clause): Use real_from_string3 instead of num_str2i.  Use
> >     real_identical instead of direct comparison.  Use build_real.
> >     (allocate): Use real_isneg and real_iszero instead of <= 0
> comparison.
> >     (move_tgt): Use real_to_integer, real_value_truncate,
> >     real_from_integer and real_identical instead of comparison of
casts.
> >     (cce_expr): Use real_arithmetic and real_convert or
> real_value_negate
> >     instead of direct arithmetics on _Float128.
> >     (cce_factor): Use real_from_string3 instead of numstr2i.
> >     (literal_refmod_valid): Use real_to_integer.
> >     * symbols.cc (symbol_table_t::registers_t::registers_t):
Formatting
> >     fix.
> >     (ERROR_FIELD): Likewise.
> >     (extend_66_capacity): Likewise.
> >     (cbl_occurs_t::subscript_ok): Use real_to_integer,
real_from_integer
> >     and real_identical.
> >     * symbols.h (cbl_field_data_t::etc_t::value): Change type from
> >     _Float128 to tree.
> >     (cbl_field_data_t::etc_t::etc_t): Adjust defaulted argument value.
> >     (cbl_field_data_t::cbl_field_data_t): Formatting fix.  Use etc()
> >     rather than etc(0).
> >     (cbl_field_data_t::value_of): Change return type from _Float128 to
> >     tree.
> >     (cbl_field_data_t::operator=): Change return and argument type
from
> >     _Float128 to tree.
> >     (cbl_field_data_t::valify): Use real_from_string,
> real_value_truncate
> >     and build_real.
> >     (cbl_field_t::same_as): Use build_zero_cst instead of
> _Float128(0.0).
> >
> > Co-authored-by: Richard Biener <rgue...@suse.de>
> > Co-authored-by: Jakub Jelinek <ja...@redhat.com>
> 
>       Jakub

Reply via email to