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