Commit graph

182 commits

Author SHA1 Message Date
Jerry DeLisle
4daf088123 Fortran: Fix UTF-8 output with A edit descriptor.
This adjusts the source len for the case where the user has
	specified a field width with the A descriptor.

	PR libfortran/118571

libgfortran/ChangeLog:

	* io/write.c (write_utf8_char4): Adjust the src_len to the
	format width w_len when greater than zero.

gcc/testsuite/ChangeLog:

	* gfortran.dg/utf8_3.f03: New test.
2025-01-24 09:05:56 -08:00
Jakub Jelinek
6441eb6dc0 Update copyright years. 2025-01-02 11:59:57 +01:00
Jerry DeLisle
7a92ba7668 Fortran: Fix B64.0 formatted write output.
PR fortran/117820

libgfortran/ChangeLog:

	* io/write.c (write_b): Add test for zero needed by write_boz.

gcc/testsuite/ChangeLog:

	* gfortran.dg/pr117820.f90: New test.
2024-12-03 20:57:59 -08:00
Thomas Koenig
113a6da9bf Implement first part of unsigned integers for Fortran.
gcc/fortran/ChangeLog:

	* arith.cc (gfc_reduce_unsigned): New function.
	(gfc_arith_error): Add ARITH_UNSIGNED_TRUNCATED and
	ARITH_UNSIGNED_NEGATIVE.
	(gfc_arith_init_1): Initialize unsigned types.
	(gfc_check_unsigned_range): New function.
	(gfc_range_check): Handle unsigned types.
	(gfc_arith_uminus): Likewise.
	(gfc_arith_plus): Likewise.
	(gfc_arith_minus): Likewise.
	(gfc_arith_times): Likewise.
	(gfc_arith_divide): Likewise.
	(gfc_compare_expr): Likewise.
	(eval_intrinsic): Likewise.
	(gfc_int2int): Also convert unsigned.
	(gfc_uint2uint): New function.
	(gfc_int2uint): New function.
	(gfc_uint2int): New function.
	(gfc_uint2real): New function.
	(gfc_uint2complex): New function.
	(gfc_real2uint): New function.
	(gfc_complex2uint): New function.
	(gfc_log2uint): New function.
	(gfc_uint2log): New function.
	* arith.h (gfc_int2uint, gfc_uint2uint, gfc_uint2int, gfc_uint2real):
	Add prototypes.
	(gfc_uint2complex, gfc_real2uint, gfc_complex2uint, gfc_log2uint):
	Likewise.
	(gfc_uint2log): Likewise.
	* check.cc (gfc_boz2uint): New function
	(type_check2): New function.
	(int_or_real_or_unsigned_check): New function.
	(less_than_bitsizekind): Adjust for unsingeds.
	(less_than_bitsize2): Likewise.
	(gfc_check_allocated): Likewise.
	(gfc_check_mod): Likewise.
	(gfc_check_bge_bgt_ble_blt): Likewise.
	(gfc_check_bitfcn): Likewise.
	(gfc_check_digits): Likewise.
	(gfc_check_dshift): Likewise.
	(gfc_check_huge): Likewise.
	(gfc_check_iu): New function.
	(gfc_check_iand_ieor_ior): Adjust for unsigneds.
	(gfc_check_ibits): Likewise.
	(gfc_check_uint): New function.
	(gfc_check_ishft): Adjust for unsigneds.
	(gfc_check_ishftc): Likewise.
	(gfc_check_min_max): Likewise.
	(gfc_check_merge_bits): Likewise.
	(gfc_check_selected_int_kind): Likewise.
	(gfc_check_shift): Likewise.
	(gfc_check_mvbits): Likewise.
	(gfc_invalid_unsigned_ops): Likewise.
	* decl.cc (gfc_match_decl_type_spec): Likewise.
	* dump-parse-tree.cc (show_expr): Likewise.
	* expr.cc (gfc_get_constant_expr): Likewise.
	(gfc_copy_expr): Likewise.
	(gfc_extract_int): Likewise.
	(numeric_type): Likewise.
	* gfortran.h (enum arith): Extend with ARITH_UNSIGNED_TRUNCATED
	and ARITH_UNSIGNED_NEGATIVE.
	(enum gfc_isym_id): Extend with GFC_ISYM_SU_KIND and GFC_ISYM_UINT.
	(gfc_check_unsigned_range): New prototype-
	(gfc_arith_error): Likewise.
	(gfc_reduce_unsigned): Likewise.
	(gfc_boz2uint): Likewise.
	(gfc_invalid_unsigned_ops): Likewise.
	(gfc_convert_mpz_to_unsigned): Likewise.
	* gfortran.texi: Add some rudimentary documentation.
	* intrinsic.cc (gfc_type_letter): Adjust for unsigneds.
	(add_functions): Add uint and adjust functions to be called.
	(add_conversions): Add unsigned conversions.
	(gfc_convert_type_warn): Adjust for unsigned.
	* intrinsic.h (gfc_check_iu, gfc_check_uint, gfc_check_mod, gfc_simplify_uint,
	gfc_simplify_selected_unsigned_kind, gfc_resolve_uint): New prototypes.
	* invoke.texi: Add -funsigned.
	* iresolve.cc (gfc_resolve_dshift): Handle unsigneds.
	(gfc_resolve_iand): Handle unsigneds.
	(gfc_resolve_ibclr): Handle unsigneds.
	(gfc_resolve_ibits): Handle unsigneds.
	(gfc_resolve_ibset): Handle unsigneds.
	(gfc_resolve_ieor): Handle unsigneds.
	(gfc_resolve_ior): Handle unsigneds.
	(gfc_resolve_uint): Handle unsigneds.
	(gfc_resolve_merge_bits): Handle unsigneds.
	(gfc_resolve_not): Handle unsigneds.
	* lang.opt: Add -funsigned.
	* libgfortran.h: Add BT_UNSIGNED.
	* match.cc (gfc_match_type_spec): Match UNSIGNED.
	* misc.cc (gfc_basic_typename): Add UNSIGNED.
	(gfc_typename): Likewise.
	* primary.cc (convert_unsigned): New function.
	(match_unsigned_constant): New function.
	(gfc_match_literal_constant): Handle unsigned.
	* resolve.cc (resolve_operator): Handle unsigned.
	(resolve_ordinary_assign): Likewise.
	* simplify.cc (convert_mpz_to_unsigned): Renamed to...
	(gfc_convert_mpz_to_unsigned): and adjusted.
	(gfc_simplify_bit_size): Adjusted for unsigned.
	(compare_bitwise): Likewise.
	(gfc_simplify_bge): Likewise.
	(gfc_simplify_bgt): Likewise.
	(gfc_simplify_ble): Likewise.
	(gfc_simplify_blt): Likewise.
	(simplify_cmplx): Likewise.
	(gfc_simplify_digits): Likewise.
	(simplify_dshift): Likewise.
	(gfc_simplify_huge): Likewise.
	(gfc_simplify_iand): Likewise.
	(gfc_simplify_ibclr): Likewise.
	(gfc_simplify_ibits): Likewise.
	(gfc_simplify_ibset): Likewise.
	(gfc_simplify_ieor): Likewise.
	(gfc_simplify_uint): Likewise.
	(gfc_simplify_ior): Likewise.
	(simplify_shift): Likewise.
	(gfc_simplify_ishftc): Likewise.
	(gfc_simplify_merge_bits): Likewise.
	(min_max_choose): Likewise.
	(gfc_simplify_mod): Likewise.
	(gfc_simplify_modulo): Likewise.
	(gfc_simplify_popcnt): Likewise.
	(gfc_simplify_range): Likewise.
	(gfc_simplify_selected_unsigned_kind): Likewise.
	(gfc_convert_constant): Likewise.
	* target-memory.cc (size_unsigned): New function.
	(gfc_element_size): Adjust for unsigned.
	* trans-const.h (gfc_conv_mpz_unsigned_to_tree): Add prototype.
	* trans-const.cc (gfc_conv_mpz_unsigned_to_tree): Handle unsigneds.
	(gfc_conv_constant_to_tree): Likewise.
	* trans-decl.cc (gfc_conv_cfi_to_gfc): Put in "not yet implemented".
	* trans-expr.cc (gfc_conv_gfc_desc_to_cfi_desc): Likewise.
	* trans-stmt.cc (gfc_trans_integer_select): Handle unsigned.
	(gfc_trans_select): Likewise.
	* trans-intrinsic.cc (gfc_conv_intrinsic_mod): Handle unsigned.
	(gfc_conv_intrinsic_shift): Likewise.
	(gfc_conv_intrinsic_function): Add GFC_ISYM_UINT.
	* trans-io.cc (enum iocall): Add IOCALL_X_UNSIGNED and IOCALL_X_UNSIGNED_WRITE.
	(gfc_build_io_library_fndecls): Add transfer_unsigned and transfer_unsigned_write.
	(transfer_expr): Handle unsigneds.
	* trans-types.cc (gfc_unsinged_kinds): New array.
	(gfc_unsigned_types): Likewise.
	(gfc_init_kinds): Handle them.
	(validate_unsigned): New function.
	(gfc_validate_kind): Use it.
	(gfc_build_unsigned_type): New function.
	(gfc_init_types): Use it.
	(gfc_get_unsigned_type): New function.
	(gfc_typenode_for_spec): Handle unsigned.
	* trans-types.h (gfc_get_unsigned_type): New prototype.

libgfortran/ChangeLog:

	* gfortran.map: Add _gfortran_transfer_unsgned and
	_gfortran_transfer-signed.
	* io/io.h (set_unsigned): New prototype.
	(us_max): New prototype.
	(read_decimal_unsigned): New prototype.
	(write_iu): New prototype.
	* io/list_read.c (convert_unsigned): New function.
	(read_integer): Also handle unsigneds.
	(list_formatted_read_scalar): Handle unsigneds.
	(nml_read_obj): Likewise.
	* io/read.c (set_unsigned): New function.
	(us_max): New function.
	(read_utf8): Whitespace fixes.
	(read_default_char1): Whitespace fixes.
	(read_a_char4): Whitespace fixes.
	(next_char): Whiltespace fixes.
	(read_decimal_unsigned): New function.
	(read_f): Whitespace fixes.
	(read_x): Whitespace fixes.
	* io/transfer.c (transfer_unsigned): New function.
	(transfer_unsigned_write): New function.
	(require_one_of_two_types): New function.
	(formatted_transfer_scalar_read): Use it.
	(formatted_transfer_scalar_write): Also use it.
	* io/write.c (write_decimal_unsigned): New function.
	(write_iu): New function.
	(write_unsigned): New function.
	(list_formatted_write_scalar): Adjust for unsigneds.
	* libgfortran.h (GFC_UINTEGER_1_HUGE): Define.
	(GFC_UINTEGER_2_HUGE): Define.
	(GFC_UINTEGER_4_HUGE): Define.
	(GFC_UINTEGER_8_HUGE): Define.
	(GFC_UINTEGER_16_HUGE): Define.
	(HAVE_GFC_UINTEGER_1): Undefine (done by mk-kind-h.sh)
	(HAVE_GFC_UINTEGER_4): Likewise.
	* mk-kinds-h.sh: Add GFC_UINTEGER_*_HUGE.

gcc/testsuite/ChangeLog:

	* gfortran.dg/unsigned_1.f90: New test.
	* gfortran.dg/unsigned_10.f90: New test.
	* gfortran.dg/unsigned_11.f90: New test.
	* gfortran.dg/unsigned_12.f90: New test.
	* gfortran.dg/unsigned_13.f90: New test.
	* gfortran.dg/unsigned_14.f90: New test.
	* gfortran.dg/unsigned_15.f90: New test.
	* gfortran.dg/unsigned_16.f90: New test.
	* gfortran.dg/unsigned_17.f90: New test.
	* gfortran.dg/unsigned_18.f90: New test.
	* gfortran.dg/unsigned_19.f90: New test.
	* gfortran.dg/unsigned_2.f90: New test.
	* gfortran.dg/unsigned_20.f90: New test.
	* gfortran.dg/unsigned_21.f90: New test.
	* gfortran.dg/unsigned_22.f90: New test.
	* gfortran.dg/unsigned_23.f90: New test.
	* gfortran.dg/unsigned_24.f: New test.
	* gfortran.dg/unsigned_3.f90: New test.
	* gfortran.dg/unsigned_4.f90: New test.
	* gfortran.dg/unsigned_5.f90: New test.
	* gfortran.dg/unsigned_6.f90: New test.
	* gfortran.dg/unsigned_7.f90: New test.
	* gfortran.dg/unsigned_8.f90: New test.
	* gfortran.dg/unsigned_9.f90: New test.
2024-09-07 17:12:17 +02:00
Jerry DeLisle
03932d3203 Fortran: Fix issue with using snprintf function.
The previous patch used snprintf to set the message
string. The message string is not a formatted string
and the snprintf will interpret '%' related characters
as format specifiers when there are no associated
output variables. A segfault ensues.

This change replaces snprintf with a fortran string copy
function and null terminates the message string.

	PR libfortran/105456

libgfortran/ChangeLog:

	* io/list_read.c (list_formatted_read_scalar): Use fstrcpy
	from libgfortran/runtime/string.c to replace snprintf.
	(nml_read_obj): Likewise.
	* io/transfer.c (unformatted_read): Likewise.
	(unformatted_write): Likewise.
	(formatted_transfer_scalar_read): Likewise.
	(formatted_transfer_scalar_write): Likewise.
	* io/write.c (list_formatted_write_scalar): Likewise.
	(nml_write_obj): Likewise.

gcc/testsuite/ChangeLog:

	* gfortran.dg/pr105456.f90: Revise using '%' characters
	in users error message.
2024-03-06 19:57:05 -08:00
Jerry DeLisle
21edfb0051 Fortran: Add user defined error messages for UDTIO.
The defines IOMSG_LEN and MSGLEN were redundant so these are combined
into IOMSG_LEN as defined in io.h.

The remainder of the patch adds checks for when a user defined
derived type IO procedure sets the IOSTAT or IOMSG variables
independent of the librrary defined I/O messages.

	PR libfortran/105456

libgfortran/ChangeLog:

	* io/io.h (IOMSG_LEN): Moved to here.
	* io/list_read.c (MSGLEN): Removed MSGLEN.
	(convert_integer): Changed MSGLEN to IOMSG_LEN.
	(parse_repeat): Likewise.
	(read_logical): Likewise.
	(read_integer): Likewise.
	(read_character): Likewise.
	(parse_real): Likewise.
	(read_complex): Likewise.
	(read_real): Likewise.
	(check_type): Likewise.
	(list_formatted_read_scalar): Adjust to IOMSG_LEN.
	(nml_read_obj): Add user defined error message.
	* io/transfer.c (unformatted_read): Add user defined error
	message.
	(unformatted_write): Add user defined error message.
	(formatted_transfer_scalar_read): Add user defined error message.
	(formatted_transfer_scalar_write): Add user defined error message.
	* io/write.c (list_formatted_write_scalar): Add user defined error message.
	(nml_write_obj): Add user defined error message.

gcc/testsuite/ChangeLog:

	* gfortran.dg/pr105456-nmlr.f90: New test.
	* gfortran.dg/pr105456-nmlw.f90: New test.
	* gfortran.dg/pr105456-ruf.f90: New test.
	* gfortran.dg/pr105456-wf.f90: New test.
	* gfortran.dg/pr105456-wuf.f90: New test.
2024-03-05 20:54:07 -08:00
Jerry DeLisle
d436e8e70d libgfortran: EN0.0E0 and ES0.0E0 format editing.
F2018 and F2023 standards added zero width exponents. This required
additional special handing in the process of building formatted
floating point strings.

G formatting uses either F or E formatting as documented in
write_float.def comments. This logic changes the format token from FMT_G
to FMT_F or FMT_E. The new formatting requirements interfere with this
process when a FMT_G float string is being built.  To avoid this, a new
component called 'pushed' is added to the fnode structure to save this
condition.  The 'pushed' condition is then used to bypass portions of
the new ES,E,EN, and D formatting, falling through to the existing
default formatting which is retained.

libgfortran/ChangeLog:
	PR libfortran/111022
	* io/format.c (get_fnode): Update initialization of fnode.
	(parse_format_list): Initialization.
	* io/format.h (struct fnode): Added the new 'pushed' component.
	* io/write.c (select_buffer): Whitespace.
	(write_real): Whitespace.
	(write_real_w0): Adjust logic for the d == 0 condition.
	* io/write_float.def (determine_precision): Whitespace.
	(build_float_string): Calculate width of ..E0 exponents and
	adjust logic accordingly.
	(build_infnan_string): Whitespace.
	(CALCULATE_EXP): Whitespace.
	(quadmath_snprintf): Whitespace.
	(determine_en_precision): Whitespace.

gcc/testsuite/ChangeLog:
	PR libfortran/111022
	* gfortran.dg/fmt_error_10.f: Show D+0 exponent.
	* gfortran.dg/pr96436_4.f90: Show E+0 exponent.
	* gfortran.dg/pr96436_5.f90: Show E+0 exponent.
	* gfortran.dg/pr111022.f90: New test.
2024-02-03 09:31:35 -08:00
Jerry DeLisle
add995ec11 libgfortran: Emit a space at beginning of internal unit NML.
PR libgfortran/113223

libgfortran/ChangeLog:

	* io/write.c (namelist_write): If internal_unit precede with space.

gcc/testsuite/ChangeLog:

	* gfortran.dg/dtio_25.f90: Update.
	* gfortran.dg/namelist_57.f90: Update.
	* gfortran.dg/namelist_65.f90: Update.
2024-01-07 10:32:04 -08:00
Jakub Jelinek
a945c346f5 Update copyright years. 2024-01-03 12:19:35 +01:00
Jakub Jelinek
9610ba7b6f libgfortran: Fix -Wincompatible-pointer-types errors
As reported, libgfortran fails to build on targets where int32_t and int
are different types, because it uses int vs. GFC_INTEGER_4 (under hood
int32_t) interchangeably.

The following patch fixes that.

2023-12-05  Florian Weimer  <fweimer@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* io/list_read.c (list_formatted_read_scalar) <case BT_CLASS>:
	Change types of unit and noiostat to GFC_INTEGER_4 from int, change
	type of child_iostat from to GFC_INTEGER_4 * from int *, formatting
	fixes.
	(nml_read_obj): Likewise.
	* io/write.c (list_formatted_write_scalar) <case BT_CLASS>: Likewise.
	(nml_write_obj): Likewise.
	* io/transfer.c (unformatted_read, unformatted_write): Likewise.
2023-12-05 22:56:41 +01:00
Tobias Burnus
4f41d497c9 libgfortran: Use __builtin_unreachable() not -Wno-stringop-overflow to silence warning
The only caller of write_z is formatted_transfer_scalar_write that passes
kind to 'len'; in turn, write_z is the only caller of xtoa_big, passing on
its 'len'.  The kind is passed as is, except for GFC_REAL_17 for which
len = 16 is used.

libgfortran/
	* io/write.c (xtoa_big): Change a 'GCC diagnostic ignored
	"-Wstringop-overflow"' to an assumption (via __builtin_unreachable).t
2023-09-28 13:06:13 +02:00
Jakub Jelinek
83ffe9cde7 Update copyright years. 2023-01-16 11:52:17 +01:00
Jakub Jelinek
07c60b8e33 fortran, libgfortran: -mabi=ieeelongdouble I/O
The following patch adds the compiler and library side of -mabi=ieeelongdouble
I/O support.

2022-01-04  Jakub Jelinek  <jakub@redhat.com>

gcc/fortran/
	* trans-io.c (transfer_namelist_element): Use gfc_type_abi_kind,
	formatting fixes.
	(transfer_expr): Use gfc_type_abi_kind, use *REAL128* APIs even
	for abi_kind == 17.
libgfortran/
	* libgfortran.h (__acoshieee128, __acosieee128, __asinhieee128,
	__asinieee128, __atan2ieee128, __atanhieee128, __atanieee128,
	__coshieee128, __cosieee128, __erfieee128, __expieee128,
	__fabsieee128, __jnieee128, __log10ieee128, __logieee128,
	__powieee128, __sinhieee128, __sinieee128, __sqrtieee128,
	__tanhieee128, __tanieee128, __ynieee128): Formatting fixes.
	(__strtoieee128, __snprintfieee128): Declare.
	* io/io.h (default_width_for_float, default_precision_for_float):
	Handle kind == 17.
	* io/size_from_kind.c (size_from_real_kind, size_from_complex_kind):
	Likewise.
	* io/read.c (set_integer, si_max, convert_real, convert_infnan,
	read_f): Likewise.
	* io/write.c (extract_uint, size_from_kind, set_fnode_default):
	Likewise.
	* io/write_float.def (DTOA2Q, FDTOA2Q): Define for HAVE_GFC_REAL_17.
	(determine_en_precision, get_float_string): Handle kind == 17.
	* io/transfer128.c: Use also for HAVE_GFC_REAL_17, but don't drag in
	libquadmath if POWER_IEEE128.
	* Makefile.am (comma, PREPROCESS): New variables.
	(gfortran.ver): New goal.
	(version_arg, version_dep): Use gfortran.ver instead of
	$(srcdir)/gfortran.map.
	(gfortran.map-sun): Depend on and use gfortran.ver instead of
	$(srcdir)/gfortran.map.
	(BUILT_SOURCES): Add $(version_dep).
	* Makefile.in: Regenerated.
	* gfortran.map (GFORTRAN_8): Don't export
	_gfortran_transfer_complex128, _gfortran_transfer_complex128_write,
	_gfortran_transfer_real128 and _gfortran_transfer_real128_write if
	HAVE_GFC_REAL_17 is defined.
	(GFORTRAN_12): Export those here instead.
2022-01-11 23:49:48 +01:00
Jakub Jelinek
7adcbafe45 Update copyright years. 2022-01-03 10:42:10 +01:00
Francois-Xavier Coudert
4ae906e46c Fortran: simplify library code for integer-to-decimal conversion
libgfortran/ChangeLog:

	PR libfortran/81986
	PR libfortran/99191

	* libgfortran.h: Remove gfc_xtoa(), adjust gfc_itoa() and
	GFC_ITOA_BUF_SIZE.
	* io/write.c (write_decimal): conversion parameter is always
	gfc_itoa(), so remove it. Protect from overflow.
	(xtoa): Move gfc_xtoa and update its name.
	(xtoa_big): Renamed from ztoa_big for consistency.
	(write_z): Adjust to new function names.
	(write_i, write_integer): Remove last arg of write_decimal.
	* runtime/backtrace.c (error_callback): Comment on the use of
	gfc_itoa().
	* runtime/error.c (gfc_xtoa): Move to io/write.c.
	* runtime/string.c (gfc_itoa): Take an unsigned argument,
	remove the handling of negative values.
2021-12-25 15:07:12 +01:00
François-Xavier Coudert
21423a1dfa Fortran: Cast arguments of <ctype.h> functions to unsigned char
Functions from <ctype.h> should only be called on values that can be
represented by unsigned char. On targets where char is a signed type,
some of libgfortran calls have undefined behaviour.

The solution is to cast the argument to unsigned char type. I’ve defined
macros in libgfortran.h to do so, to retain legibility of the library
code.

PR libfortran/95177

libgfortran/ChangeLog

	* libgfortran.h: include ctype.h, provide safe macros.
	* io/format.c: use safe macros.
	* io/list_read.c: use safe macros.
	* io/read.c: use safe macros.
	* io/write.c: use safe macros.
	* runtime/environ.c: use safe macros.
2021-12-18 09:21:16 +01:00
Jakub Jelinek
99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
Thomas Koenig
0cfc34ad12 Disable -Wstringop-overflow warning after checking code path of caller.
The warning that is disabled, only on this single line, has been
inspected and found to be not applicable; it is known that the size
of the buffer is safe.

libgfortran/ChangeLog:

2020-06-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/95313
	* io/write.c (ztoa_big): Disable -Wstringop-overflow for one
	line.
2020-06-13 10:04:33 +02:00
Jerry DeLisle
2b70275ee1 PR 90374 d0.d, e0.d, es0.d, en0.d, g0.d and ew.d edit descriptors.
PR libfortran/90274
        * io/format.c (parse_format_list): Implement the E0 exponent
        width to provide smallest possible width for exponent fields.
        Refactor code for correct parsing and better readability of the
        code.
        * io/io.h (write_real_w0): Change interface to pass in pointer
        to fnode.
        * io/transfer.c: Update all calls to write_real_w0 to use the
        new interface.
        * io/write.c ((write_real_w0): Use the new interface with fnode
        to access both the decimal precision and exponent widths used in
        build_float_string.
        * io/write_float.def (build_float_string): Use the passed in
        exponent width to calculate the used width in the case of E0.

From-SVN: r279828
2020-01-02 00:57:31 +00:00
Jakub Jelinek
8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Jerry DeLisle
67732fbced re PR libfortran/90374 (Fortran 2018: Support d0.d, e0.d, es0.d, en0.d, g0.d and ew.d e0 edit descriptors for output)
2019-11-06  Jerry DeLisle  <jvdelisle@gcc.ngu.org>

	PR fortran/90374
	* io.c (check_format): Allow zero width for D, E, EN, and ES
	specifiers as default and when -std=F2018 is given. Retain
	existing errors when using the -fdec family of flags.

	* libgfortran/io/format.c (parse_format_list): Relax format checking for
	zero width as default and when -std=f2018.
	io/format.h (format_token): Move definition to io.h.
	io/io.h (format_token): Add definition here to allow access to
	this definition at higher levels. Rename the declaration of
	write_real_g0 to write_real_w0 and add a new format_token
	argument, allowing higher level functions to pass in the
	token for handling of g0 vs the other zero width specifiers.
	io/transfer.c (formatted_transfer_scalar_write): Add checks for
	zero width and call write_real_w0 to handle it.
	io/write.c (write_real_g0): Remove.
	(write_real_w0): Add new, same as previous write_real_g0 except
	check format token to handle the g0 case.

	* gfortran.dg/fmt_error_10.f: Modify for new constraints.
	* gfortran.dg/fmt_error_7.f: Add dg-options "-std=f95".
	* gfortran.dg/fmt_error_9.f: Modify for new constraints.
	* gfortran.dg/fmt_zero_width.f90: New test.

From-SVN: r277905
2019-11-07 03:06:20 +00:00
Jerry DeLisle
a4626a7b3e re PR libfortran/91593 (Implicit enum conversions in libgfortran/io/transfer.c)
2019-10-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/91593
	* io/read.c (read_decimal): Cast constant to size_t to turn off
	a bogus warning.
	* io/write.c (btoa_big): Use memset in lieu of setting the null
	byte in a string buffer to turn off a bogus warning.

From-SVN: r276439
2019-10-02 02:35:14 +00:00
Janne Blomqvist
88a8126a90 fortran/89100: Default widths with -fdec-format-defaults
gcc/fortran ChangeLog:

2019-05-22  Jeff Law  <law@redhat.com>
            Mark Eggleston  <mark.eggleston@codethink.com>

        PR fortran/89100
        * gfortran.texi: Add Default widths for F, G and I format
        descriptors to Extensions section.
        * invoke.texi: Add -fdec-format-defaults
        * io.c (check_format): Use default widths for i, f and g when
        flag_dec_format_defaults is enabled.
        * lang.opt: Add new option.
        * options.c (set_dec_flags): Add SET_BITFLAG for
        flag_dec_format_defaults.


gcc/testsuite ChangeLog:

2019-05-22  Mark Eggleston  <mark.eggleston@codethink.com>

        PR fortran/89100
        * gfortran.dg/fmt_f_default_field_width_1.f90: New test.
        * gfortran.dg/fmt_f_default_field_width_2.f90: New test.
        * gfortran.dg/fmt_f_default_field_width_3.f90: New test.
        * gfortran.dg/fmt_g_default_field_width_1.f90: New test.
        * gfortran.dg/fmt_g_default_field_width_2.f90: New test.
        * gfortran.dg/fmt_g_default_field_width_3.f90: New test.
        * gfortran.dg/fmt_i_default_field_width_1.f90: New test.
        * gfortran.dg/fmt_i_default_field_width_2.f90: New test.
        * gfortran.dg/fmt_i_default_field_width_3.f90: New test.


libgfortran ChangeLog:

2019-05-22  Jeff Law  <law@redhat.com>

        PR fortran/89100
        * io/format.c (parse_format_list): set default width when the
        IOPARM_DT_DEC_EXT flag is set for i, f and g.
        * io/io.h: add default_width_for_integer, default_width_for_float
        and default_precision_for_float.
        * io/write.c (write_boz): extra parameter giving length of data
        corresponding to the type's kind.
        (write_b): pass data length as extra parameter in calls to
        write_boz.
        (write_o): pass data length as extra parameter in calls to
        write_boz.
        (write_z): pass data length as extra parameter in calls to
        write_boz.
        (size_from_kind): also set size is default width is set.
        * io/write_float.def (build_float_string): new paramter inserted
        before result parameter. If default width use values passed
        instead of the values in fnode.
        (FORMAT_FLOAT): macro modified to check for default width and
        calls to build_float_string to pass in default width.
        (get_float_string): set width and precision to defaults when
        needed.

From-SVN: r271511
2019-05-22 14:56:01 +03:00
Dominique d'Humieres
b8f412849b re PR libfortran/89274 (Inconsistent list directed output of INTEGER(16))
2019-02-25  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR libfortran/89274
	* gfortran.dg/list_directed_large.f90: New test. 

2019-02-25  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR libfortran/89274
	* io/write.c (write_integer): Add width for INTEGER(16).

From-SVN: r269187
2019-02-25 11:39:38 +01:00
Jakub Jelinek
a554497024 Update copyright years.
From-SVN: r267494
2019-01-01 13:31:55 +01:00
Jerry DeLisle
1f161c48ed re PR fortran/85840 (Memory leak in write.c)
2018-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/85840
	* io/write.c (write_real, write_real_g0, write_complex): Use
	separate local variables for the float string length.

From-SVN: r260851
2018-05-28 21:55:31 +00:00
Jerry DeLisle
8cb19ee36a re PR target/89506 (ICE: in decompose, at rtl.h:2266 with -Og -g)
2018-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/89506
	* io/write.c (write_integer): Initialise the fnode format to
	FMT_NONE, used for list directed write.
	(BUF_STACK_SZ): Bump default buffer size up to avoid allocs on
	small stuff.

From-SVN: r260795
2018-05-26 18:22:18 +00:00
Jerry DeLisle
3c2ce89364 re PR fortran/85840 (Memory leak in write.c)
2018-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/85840
	* io/write.c (write_float_0): Use separate local variable for
	the float string length.

From-SVN: r260793
2018-05-26 17:30:52 +00:00
Thomas Koenig
e9bfdf18cb libgfortran.h (GFC_ARRAY_DESCRIPTOR): Remove dimension of descriptor to use vaiable members for dim.
2018-02-12  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* libgfortran.h (GFC_ARRAY_DESCRIPTOR): Remove dimension
	of descriptor to use vaiable members for dim.
	Change usage of GFC_ARRAY_DESCRIPTOR accordingly.
	(GFC_FILL_ARRAY_DESCRIPTOR): New macro.
	(gfc_full_array_i4): New type.
	* intrinsics/date_and_time.c (secnds): Use sizeof
	(gfc_array_i4) + sizeof (descriptor_dimension) for memory
	allocation.
	* intrinsics/reshape_generic.c: Use GFC_FULL_ARRAY_DESCRIPTOR.
	* io/format.c: Use sizeof (gfc_array_i4) + sizeof
	(descriptor_dimension) for memoy allocation.
	* io/list_read.c (list_formatted_read_scalar): Use
	gfc_full_array_i4 for variable.
	(nml_read_obj): Likewise.
	* io/write.c (list_formatted_write_scalar): Likewise.
	(nml_write_obj): Likewise.
	* m4/reshape.m4: Use GFC_FULL_ARRAY_DESCRIPTOR.
	* generated/reshape_c10.c: Regenerated.
	* generated/reshape_c16.c: Regenerated.
	* generated/reshape_c4.c: Regenerated.
	* generated/reshape_c8.c: Regenerated.
	* generated/reshape_i16.c: Regenerated.
	* generated/reshape_i4.c: Regenerated.
	* generated/reshape_i8.c: Regenerated.
	* generated/reshape_r10.c: Regenerated.
	* generated/reshape_r16.c: Regenerated.
	* generated/reshape_r4.c: Regenerated.
	* generated/reshape_r8.c: Regenerated.

From-SVN: r257601
2018-02-12 19:53:17 +00:00
Jerry DeLisle
33b2b069c1 re PR libfortran/83811 (fortran 'e' format broken for single digit exponents)
2018-01-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        PR libgfortran/83811
        * write.c (select_buffer): Adjust buffer size up by 1.

        * gfortran.dg/fmt_e.f90: New test.

From-SVN: r256669
2018-01-14 17:36:29 +00:00
Janne Blomqvist
ea99ec5bd6 PR 78534, 83704 Handle large formatted I/O
In order to handle large characters when doing formatted I/O, use
size_t and ptrdiff_t for lengths.  Compared to the previous patch,
based on discussions on IRC use size_t for sizes that don't need to be
negative rather than ptrdiff_t everywhere.

Regtested on x86_64-pc-linux-gnu, approved as part of the PR 78534
approval, committed to trunk.

libgfortran/ChangeLog:

2018-01-07  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/83704
	* io/fbuf.c (fbuf_init): Use size_t instead of int for length.
	(fbuf_debug): Convert debug output to unsigned long.
	(fbuf_reset): Use ptrdiff_t for return value.
	(fbuf_alloc): Use size_t for length argument.
	(fbuf_flush): Handle large buffers.
	(fbuf_flush_list): Likewise.
	(fbuf_seek): Use ptrdiff_t for offset and return value.
	(fbuf_read): Use size_t for length argument.
	(fbuf_getc_refill): Use size_t to match fbuf_read.
	* io/fbuf.h (struct fbuf): Use size_t for lengths.
	(fbuf_init): Use size_t instead of int for length.
	(fbuf_reset): Use ptrdiff_t for return value.
	(fbuf_alloc): Use size_t for length argument.
	(fbuf_seek): Use ptrdiff_t for offset and return value.
	(fbuf_read): Use size_t for length argument.
	* io/io.h (read_block_form): Likewise.
	(read_block_form4): Likewise.
	(write_block): Likewise.
	(read_a): Likewise.
	(read_a_char4): Likewise.
	(read_x): Likewise.
	(write_a): Likewise.
	(write_a_char4): Likewise.
	* io/list_read.c (list_formatted_read_scalar): Use size_t to
	handle large buffers.
	* io/read.c (read_l): Likewise.
	(read_utf8): Likewise.
	(read_utf8_char1): Likewise.
	(read_default_char1): Likewise.
	(read_utf8_char4): Likewise.
	(read_default_char4): Likewise.
	(read_a): Likewise.
	(read_a_char4): Likewise.
	(eat_leading_spaces): Likewise.
	(next_char): Likewise.
	(read_decimal): Likewise.
	(read_radix): Likewise.
	(read_f): Likewise.
	(read_x): Likewise.
	* io/transfer.c (read_sf_internal): Likewise.
	(read_sf): Likewise.
	(read_block_form): Likewise.
	(read_block_form4): Likewise.
	(write_block): Likewise.
	(formatted_transfer_scalar_write): Likewise.
	(next_record_w): Likewise.
	* io/unix.c (mem_alloc_r): Likewise.
	(mem_alloc_r4): Likewise.
	(mem_alloc_w): Likewise.
	(mem_alloc_w4): Likewise.
	(mem_read): Likewise.
	(mem_read4): Likewise.
	(mem_write): Likewise.
	(mem_write4): Likewise.
	(open_internal): Likewise.
	(open_internal4): Likewise.
	* io/unix.h (open_internal): Likewise.
	(open_internal4): Likewise.
	(mem_alloc_w): Likewise.
	(mem_alloc_r): Likewise.
	(mem_alloc_w4): Likewise.
	(mem_alloc_r4): Likewise.
	* io/write.c (write_check_cc): Likewise.
	(write_cc): Likewise.
	(write_a): Likewise.
	(write_a_char4): Likewise.

From-SVN: r256322
2018-01-07 12:17:52 +02:00
Janne Blomqvist
dd8b1ebf35 Remove unused variable
2018-01-06  Janne Blomqvist  <jb@gcc.gnu.org>

        * io/write.c (namelist_write): Remove unused variable "i".

From-SVN: r256314
2018-01-06 21:16:55 +02:00
Dominique d'Humieres
d9bb51cdd3 PR 83704 Use size_t in write_character
For printing long characters, we need to use size_t instead of int in
the argument to write_character.

Regtested on x86_64-pc-linux-gnu, approved in the PR, committed to
trunk.

libgfortran/ChangeLog:

2018-01-06  Dominique d'Humieres  <dominiq@lps.ens.fr>
	    Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/83704
	* io/write.c (write_character): Use size_t instead of int for
	length.

Co-Authored-By: Janne Blomqvist <jb@gcc.gnu.org>

From-SVN: r256313
2018-01-06 21:09:52 +02:00
Janne Blomqvist
f622221ab4 PR 78534 Change character length from int to size_t
In order to handle large character lengths on (L)LP64 targets, switch
the GFortran character length from an int to a size_t.

This is an ABI change, as procedures with character arguments take
hidden arguments with the character length.

I also changed the _size member in vtables from int to size_t, as
there were some cases where character lengths and sizes were
apparently mixed up and caused regressions otherwise. Although I
haven't tested, this might enable very large derived types as well.

Also, as there are some places in the frontend were negative character
lengths are used as special flag values, in the frontend the character
length is handled as a signed variable of the same size as a size_t,
although in the runtime library it really is size_t.

I haven't changed the character length variables for the co-array
intrinsics, as this is something that may need to be synchronized with
OpenCoarrays.

This is v5 of the patch. v4 was applied but caused breakage on big
endian targets. These have been fixed and tested, thanks to access to
the GCC compile farm.

Overview of v4 of the patch: v3 was applied but had to reverted due to
breaking bootstrap. The fix is in resolve.c:resolve_charlen, where
it's necessary to check that an expression is constant before using
mpz_sgn.

Overview of v3 of the patch: All the issues pointed out by FX's review
of v2 have been fixed. In particular, there are now new functions
gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions
mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT
instead of a long value. Similarly, gfc_get_int_expr now takes a
HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by
gfc_extract_hwi. Also, the preliminary work to handle
gfc_charlen_type_node being unsigned has been removed.

Regtested on x86_64-pc-linux-gnu, i686-pc-linux-gnu and
powerpc64-unknown-linux-gnu. Also regtested all three targets by
modifying gfortran-dg.exp to also test with "-g -flto", no new
failures observed.

frontend:

2018-01-05  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* array.c (got_charlen): Use gfc_charlen_int_kind.
	* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
	hardcoded kind.
	(find_intrinsic_vtab): Likewise.
	* decl.c (match_char_length): Use gfc_charlen_int_kind.
	(add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind.
	(gfc_match_implicit): Use gfc_charlen_int_kind.
	* dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t.
	(show_expr): Use HOST_WIDE_INT_PRINT_DEC.
	* expr.c (gfc_get_character_expr): Length parameter of type
	gfc_charlen_t.
	(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
	(gfc_extract_hwi): New function.
	(simplify_const_ref): Make string_len of type gfc_charlen_t.
	(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
	* frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind.
	* gfortran.h (gfc_mpz_get_hwi): New prototype.
	(gfc_mpz_set_hwi): Likewise.
	(gfc_charlen_t): New typedef.
	(gfc_expr): Use gfc_charlen_t for character lengths.
	(gfc_size_kind): New extern variable.
	(gfc_extract_hwi): New prototype.
	(gfc_get_character_expr): Use gfc_charlen_t for character length.
	(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
	* gfortran.texi: Update description of hidden string length argument.
	* iresolve.c (check_charlen_present): Use gfc_charlen_int_kind.
	(gfc_resolve_char_achar): Likewise.
	(gfc_resolve_repeat): Pass string length directly without
	temporary, use gfc_charlen_int_kind.
	(gfc_resolve_transfer): Use gfc_charlen_int_kind.
	* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
	* misc.c (gfc_mpz_get_hwi): New function.
	(gfc_mpz_set_hwi): New function.
	* module.c (atom_int): Change type from int to HOST_WIDE_INT.
	(parse_integer): Don't complain about large integers.
	(write_atom): Use HOST_WIDE_INT for integers.
	(mio_integer): Handle integer type mismatch.
	(mio_hwi): New function.
	(mio_intrinsic_op): Use HOST_WIDE_INT.
	(mio_array_ref): Likewise.
	(mio_expr): Likewise.
	* primary.c (match_substring): Use gfc_charlen_int_kind.
	* resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind.
	(resolve_character_operator): Likewise.
	(resolve_assoc_var): Likewise.
	(resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf.
	(resolve_charlen): Use mpz_sgn to determine sign.
	* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
	instead of long.
	* symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind.
	* target-memory.c (size_character): Length argument of type
	gfc_charlen_t.
	(gfc_encode_character): Likewise.
	(gfc_interpret_character): Use gfc_charlen_t.
	* target-memory.h (gfc_encode_character): Modify prototype.
	* trans-array.c (gfc_trans_array_ctor_element): Use existing type.
	(get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type.
	(trans_array_constructor): Use existing type.
	(get_array_charlen): Likewise.
	* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
	* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
	* trans-decl.c (gfc_trans_deferred_vars): Use existing type.
	(add_argument_checking): Likewise.
	* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
	gfc_charlen_type_node.
	(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
	4, fold_convert to correct type.
	(gfc_conv_class_to_class): Build const of type size_type_node for
	size.
	(gfc_copy_class_to_class): Likewise.
	(gfc_conv_string_length): Use same type in expression.
	(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
	(gfc_conv_string_tmp): Make sure len is of the right type.
	(gfc_conv_concat_op): Use same type in expression.
	(gfc_conv_procedure_call): Likewise.
	(fill_with_spaces): Comment out memset() block due to spurious
	-Wstringop-overflow warnings.
	(gfc_trans_string_copy): Use gfc_charlen_type_node.
	(alloc_scalar_allocatable_for_subcomponent_assignment):
	fold_convert to right type.
	(gfc_trans_subcomponent_assign): Likewise.
	(trans_class_vptr_len_assignment): Build const of correct type.
	(gfc_trans_pointer_assignment): Likewise.
	(alloc_scalar_allocatable_for_assignment): fold_convert to right
	type in expr.
	(trans_class_assignment): Build const of correct type.
	* trans-intrinsic.c (gfc_conv_associated): Likewise.
	(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
	* trans-io.c (gfc_build_io_library_fndecls): Use
	gfc_charlen_type_node for character lengths.
	(set_string): Convert to right type in assignment.
	* trans-stmt.c (gfc_trans_label_assign): Build const of
	gfc_charlen_type_node.
	(trans_associate_var): Likewise.
	(gfc_trans_character_select): Likewise.
	(gfc_trans_allocate): Likewise, don't typecast strlen result.
	(gfc_trans_deallocate): Don't typecast strlen result.
	* trans-types.c (gfc_size_kind): New variable.
	(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
	from size_type_node.
	* trans-types.h: Fix comment.

testsuite:

2018-01-05  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* gfortran.dg/char_cast_1.f90: Update scan pattern.
	* gfortran.dg/dependency_49.f90: Likewise.
	* gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T.
	* gfortran.dg/repeat_7.f90: New test for PR 66310.
	* gfortran.dg/scan_2.f90: Handle potential cast in assignment.
	* gfortran.dg/string_1.f90: Limit to ilp32 targets.
	* gfortran.dg/string_1_lp64.f90: New test.
	* gfortran.dg/string_3.f90: Limit to ilp32 targets.
	* gfortran.dg/string_3_lp64.f90: New test.

libgfortran:

2019-01-05  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	* intrinsics/args.c (getarg_i4): Use gfc_charlen_type.
	(get_command_argument_i4): Likewise.
	(get_command_i4): Likewise.
	* intrinsics/chmod.c (chmod_internal): Likewise.
	* intrinsics/env.c (get_environment_variable_i4): Likewise.
	* intrinsics/extends_type_of.c (struct vtype): Use size_t for size
	member.
	* intrinsics/gerror.c (gerror): Use gfc_charlen_type.
	* intrinsics/getlog.c (getlog): Likewise.
	* intrinsics/hostnm.c (hostnm_0): Likewise.
	* intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to
	work if gfc_charlen_type is unsigned.
	(string_scan): Likewise.
	* io/transfer.c (transfer_character): Modify prototype.
	(transfer_character_write): Likewise.
	(transfer_character_wide): Likewise.
	(transfer_character_wide_write): Likewise.
	(transfer_array): Typecast to avoid signed-unsigned comparison.
	* io/unit.c (is_trim_ok): Use gfc_charlen_type.
	* io/write.c (namelist_write): Likewise.
	* libgfortran.h (gfc_charlen_type): Change typedef to size_t.

From-SVN: r256284
2018-01-05 21:01:12 +02:00
Jakub Jelinek
85ec4feb11 Update copyright years.
From-SVN: r256169
2018-01-03 11:03:58 +01:00
Jerry DeLisle
a97de3ccdc re PR fortran/83560 (list-directed formatting of INTEGER is missing plus on output when output open with SIGN='PLUS')
2017-12-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        PR libgfortran/83560
        * io/write.c (write_integer): Modify to use write_decimal.
        For namelist mode, suppress leading blanks and emit them as
        trailing blanks. Change parameter from len to kind for better
        readability. (nml_write_obj): Fix comment style.

From-SVN: r256034
2017-12-29 19:25:31 +00:00
Jerry DeLisle
c4508d0ad7 re PR fortran/83191 (Writing a namelist with repeated complex numbers)
2017-12-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
            Dominique d'Humieres  <dominiq@lps.ens.fr>

        PR libgfortran/83191
        * io/transfer.c (list_formatted_read_scalar): Do not set
        namelist_mode bit here. (namelist_read): Likewise.
        (data_transfer_init): Clear the mode bit here.
        (finalize_transfer): Do set the mode bit just before any calls
        to namelist_read or namelist_write. It can now be referred to
        in complex_write.
        ^ io/write.c (write_complex): Suppress the leading blanks when
        namelist_mode bit is not set to 1.

        * gfortran.dg/namelist_95.f90: New test.

Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>

From-SVN: r255365
2017-12-03 16:47:12 +00:00
Jerry DeLisle
b7c44c8fd2 re PR libfortran/83168 (FAIL: gfortran.dg/fmt_f0_2.f90 with a sanitized libgfortran)
2017-11-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/83168
	* io/write.c (select_string): Bump size by one to avoid
	overrun.

From-SVN: r255225
2017-11-29 03:07:43 +00:00
Janne Blomqvist
5675291ddb PR 83097 Use __BYTE_ORDER__ predefined macro instead of runtime check
By using the __BYTE_ORDER__ predefined macro we don't need the
determine_endianness function anymore.

Regtested on x86_64-pc-linux-gnu.

libgfortran/ChangeLog:

2017-11-22  Janne Blomqvist  <jb@gcc.gnu.org>

        PR libfortran/83097
	* io/inquire.c (inquire_via_unit): Use __BYTE_ORDER__ predefined
	macro.
	* io/open.c (st_open): Likewise.
	* io/transfer.c (data_transfer_init): Likewise.
	* io/write.c (btoa_big): Likewise.
	(otoa_big): Likewise.
	(ztoa_big): Likewise.
	* libgfortran.h (big_endian): Remove variable.
	(GFOR_POINTER_TO_L1): Use __BYTE_ORDER__ macro.
	* runtime/main.c (determine_endianness): Remove function.
	(init): Remove call to determine_endianness.
	* runtime/minimal.c: Remove setting big_endian variable.

From-SVN: r255072
2017-11-22 21:19:13 +02:00
Jerry DeLisle
bf498b0758 re PR fortran/78387 (OpenMP segfault/stack size exceeded writing to internal file)
2017-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/78387
	* io/list_read.c (nml_read_obj): Remove use of stash.
	* io/transfer.c (st_read_done, st_write_done): Likewise.
	* io/unit.c (stash_internal_unit): Delete function.
	(get_unit): Remove use of stash.
	(init_units): Likewise.
	(close_units): Likewise.
	* io/write.c (nml_write_obj): Likewise:

From-SVN: r251374
2017-08-28 03:42:47 +00:00
Jerry DeLisle
f29876bba0 close.c: Fix white space in pointer declarations and comment formats where applicable.
2017-04-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* close.c: Fix white space in pointer declarations and comment
	formats where applicable.
	* fbuf.c: Likewise.
	* fbuf.h: Likewise.
	* format.c: Likewise.
	* inquire.c: Likewise.
	* intrinsics.c: Likewise.
	* list_read.c: Likewise.
	* lock.c: Likewise.
	* open.c: Likewise.
	* read.c: Likewise.
	* transfer.c: Likewise.
	* unit.c: Likewise.
	* unix.c: Likewise.
	* unix.h: Likewise.
	* write.c: Likewise.

From-SVN: r246842
2017-04-11 14:51:25 +00:00
Janus Weil
cf47453061 re PR fortran/78661 ([OOP] Namelist output missing object designator under DTIO)
2017-03-28  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78661
	* trans-io.c (transfer_namelist_element): Perform a polymorphic call
	to a DTIO procedure if necessary.

2017-03-28  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78661
	* gfortran.dg/dtio_25.f90: Modified test case.
	* gfortran.dg/dtio_27.f90: New test case.

2017-03-28  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/78661
	* io/write.c (nml_write_obj): Build a class container only if necessary.

From-SVN: r246546
2017-03-28 19:01:05 +02:00
Jerry DeLisle
c08de9db47 re PR fortran/78854 ([F03] DTIO namelist output not working on internal unit)
2017-03-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/78854
	* io/list_read.c (nml_get_obj_data): Stash internal unit for
	later use by child procedures.
	* io/write.c (nml_write_obj): Likewise.
	* io/tranfer.c (data_transfer_init): Minor whitespace.
	* io/unit.c (set_internal_uit): Look for the stashed internal
	unit and use it if found.

	* gfortran.dg/dtio_25.f90: New test.

From-SVN: r246070
2017-03-11 14:49:57 +00:00
Janne Blomqvist
c1e9bbcc49 Revert r244448
From-SVN: r244454
2017-01-13 21:53:16 +02:00
Janne Blomqvist
a6ab4e077b PR 78534 Change character length from int to size_t
In order to handle large character lengths on (L)LP64 targets, switch
the GFortran character length from an int to a size_t.

This is an ABI change, as procedures with character arguments take
hidden arguments with the character length.

I also changed the _size member in vtables from int to size_t, as
there were some cases where character lengths and sizes were
apparently mixed up and caused regressions otherwise. Although I
haven't tested, this might enable very large derived types as well.

Also, as there are some places in the frontend were negative character
lengths are used as special flag values, in the frontend the character
length is handled as a signed variable of the same size as a size_t,
although in the runtime library it really is size_t.

I haven't changed the character length variables for the co-array
intrinsics, as this is something that may need to be synchronized with
OpenCoarrays.

This is v4 of the patch. v3 was applied but had to reverted due to
breaking bootstrap. The fix is in resolve.c:resolve_charlen, where
it's necessary to check that an expression is constant before using
mpz_sgn.

Overview of v3 of the patch: All the issues pointed out by FX's review
of v2 have been fixed. In particular, there are now new functions
gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions
mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT
instead of a long value. Similarly, gfc_get_int_expr now takes a
HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by
gfc_extract_hwi. Also, the preliminary work to handle
gfc_charlen_type_node being unsigned has been removed.

Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.

frontend:

2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
	hardcoded kind.
	(find_intrinsic_vtab): Likewise.
	* expr.c (gfc_get_character_expr): Length parameter of type
	gfc_charlen_t.
	(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
	(gfc_extract_hwi): New function.
	(simplify_const_ref): Make string_len of type gfc_charlen_t.
	(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
	* gfortran.h (gfc_mpz_get_hwi): New prototype.
	(gfc_mpz_set_hwi): Likewise.
	(gfc_charlen_t): New typedef.
	(gfc_expr): Use gfc_charlen_t for character lengths.
	(gfc_size_kind): New extern variable.
	(gfc_extract_hwi): New prototype.
	(gfc_get_character_expr): Use gfc_charlen_t for character length.
	(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
	* iresolve.c (gfc_resolve_repeat): Pass string length directly without
	temporary, use gfc_charlen_int_kind.
	* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
	* misc.c (gfc_mpz_get_hwi): New function.
	(gfc_mpz_set_hwi): New function.
	* module.c (atom_int): Change type from int to HOST_WIDE_INT.
	(parse_integer): Don't complain about large integers.
	(write_atom): Use HOST_WIDE_INT for integers.
	(mio_integer): Handle integer type mismatch.
	(mio_hwi): New function.
	(mio_intrinsic_op): Use HOST_WIDE_INT.
	(mio_array_ref): Likewise.
	(mio_expr): Likewise.
	* resolve.c (resolve_select_type): Use HOST_WIDE_INT for charlen,
	use snprintf.
	(resolve_substring_charlen): Use gfc_charlen_int_kind.
	(resolve_charlen): Use mpz_sgn to determine sign.
	* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
	instead of long.
	* target-memory.c (size_character): Length argument of type
	gfc_charlen_t.
	(gfc_encode_character): Likewise.
	(gfc_interpret_character): Use gfc_charlen_t.
	* target-memory.h (gfc_encode_character): Modify prototype.
	* trans-array.c (get_array_ctor_var_strlen): Use
	gfc_conv_mpz_to_tree_type.
	* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
	* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
	* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
	gfc_charlen_type_node.
	(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
	4, fold_convert to correct type.
	(gfc_conv_class_to_class): Build const of type size_type_node for
	size.
	(gfc_copy_class_to_class): Likewise.
	(gfc_conv_string_length): Use same type in expression.
	(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
	(gfc_conv_string_tmp): Make sure len is of the right type.
	(gfc_conv_concat_op): Use same type in expression.
	(gfc_conv_procedure_call): Likewise.
	(alloc_scalar_allocatable_for_subcomponent_assignment):
	fold_convert to right type.
	(gfc_trans_subcomponent_assign): Likewise.
	(trans_class_vptr_len_assignment): Build const of correct type.
	(gfc_trans_pointer_assignment): Likewise.
	(alloc_scalar_allocatable_for_assignment): fold_convert to right
	type in expr.
	(trans_class_assignment): Build const of correct type.
	* trans-intrinsic.c (gfc_conv_associated): Likewise.
	(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
	* trans-io.c (gfc_build_io_library_fndecls): Use
	gfc_charlen_type_node for character lengths.
	* trans-stmt.c (gfc_trans_label_assign): Build const of
	gfc_charlen_type_node.
	(gfc_trans_character_select): Likewise.
	(gfc_trans_allocate): Likewise, don't typecast strlen result.
	(gfc_trans_deallocate): Don't typecast strlen result.
	* trans-types.c (gfc_size_kind): New variable.
	(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
	from size_type_node.

testsuite:

2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T.
	* gfortran.dg/repeat_7.f90: New test for PR 66310.
	* gfortran.dg/scan_2.f90: Handle potential cast in assignment.
	* gfortran.dg/string_1.f90: Limit to ilp32 targets.
	* gfortran.dg/string_1_lp64.f90: New test.
	* gfortran.dg/string_3.f90: Limit to ilp32 targets.
	* gfortran.dg/string_3_lp64.f90: New test.

libgfortran:

2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	* intrinsics/args.c (getarg_i4): Use gfc_charlen_type.
	(get_command_argument_i4): Likewise.
	(get_command_i4): Likewise.
	* intrinsics/chmod.c (chmod_internal): Likewise.
	* intrinsics/env.c (get_environment_variable_i4): Likewise.
	* intrinsics/extends_type_of.c (struct vtype): Use size_t for size
	member.
	* intrinsics/gerror.c (gerror): Use gfc_charlen_type.
	* intrinsics/getlog.c (getlog): Likewise.
	* intrinsics/hostnm.c (hostnm_0): Likewise.
	* intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to
	work if gfc_charlen_type is unsigned.
	(string_scan): Likewise.
	* io/transfer.c (transfer_character): Modify prototype.
	(transfer_character_write): Likewise.
	(transfer_character_wide): Likewise.
	(transfer_character_wide_write): Likewise.
	(transfer_array): Typecast to avoid signed-unsigned comparison.
	* io/unit.c (is_trim_ok): Use gfc_charlen_type.
	* io/write.c (namelist_write): Likewise.
	* libgfortran.h (gfc_charlen_type): Change typedef to size_t.

From-SVN: r244448
2017-01-13 19:05:48 +02:00
Janne Blomqvist
84aff3c2d4 PR 78534 Revert r244011
r244011 caused regressions on 32-bit hosts.

From-SVN: r244027
2017-01-03 20:01:30 +02:00
Janne Blomqvist
994e4aca2c PR 78534 Change character length from int to size_t
In order to handle large character lengths on (L)LP64 targets, switch
the GFortran character length from an int to a size_t.

This is an ABI change, as procedures with character arguments take
hidden arguments with the character length.

I also changed the _size member in vtables from int to size_t, as
there were some cases where character lengths and sizes were
apparently mixed up and caused regressions otherwise. Although I
haven't tested, this might enable very large derived types as well.

Also, as there are some places in the frontend were negative character
lengths are used as special flag values, in the frontend the character
length is handled as a signed variable of the same size as a size_t,
although in the runtime library it really is size_t.

I haven't changed the character length variables for the co-array
intrinsics, as this is something that may need to be synchronized with
OpenCoarrays.

This is v3 of the patch. All the issues pointed out by FX's review of
v2 have been fixed. In particular, there are now new functions
gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions
mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT
instead of a long value. Similarly, gfc_get_int_expr now takes a
HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by
gfc_extract_hwi. Also, the preliminary work to handle
gfc_charlen_type_node being unsigned has been removed.

Regtested on x86_64-pc-linux-gnu.

frontend:

2017-01-03  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
	hardcoded kind.
	(find_intrinsic_vtab): Likewise.
	* expr.c (gfc_get_character_expr): Length parameter of type
	gfc_charlen_t.
	(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
	(gfc_extract_hwi): New function.
	(simplify_const_ref): Make string_len of type gfc_charlen_t.
	(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
	* gfortran.h (gfc_mpz_get_hwi): New prototype.
	(gfc_mpz_set_hwi): Likewise.
	(gfc_charlen_t): New typedef.
	(gfc_expr): Use gfc_charlen_t for character lengths.
	(gfc_size_kind): New extern variable.
	(gfc_extract_hwi): New prototype.
	(gfc_get_character_expr): Use gfc_charlen_t for character length.
	(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
	* iresolve.c (gfc_resolve_repeat): Pass string length directly without
	temporary, use gfc_charlen_int_kind.
	* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
	* misc.c (gfc_mpz_get_hwi): New function.
	(gfc_mpz_set_hwi): New function.
	* module.c (atom_int): Change type from int to HOST_WIDE_INT.
	(parse_integer): Don't complain about large integers.
	(write_atom): Use HOST_WIDE_INT for integers.
	(mio_integer): Handle integer type mismatch.
	(mio_hwi): New function.
	(mio_intrinsic_op): Use HOST_WIDE_INT.
	(mio_array_ref): Likewise.
	(mio_expr): Likewise.
	* resolve.c (resolve_select_type): Use HOST_WIDE_INT for charlen,
	use snprintf.
	(resolve_charlen): Use mpz_sgn to determine sign.
	* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
	instead of long.
	* target-memory.c (size_character): Length argument of type
	gfc_charlen_t.
	(gfc_encode_character): Likewise.
	(gfc_interpret_character): Use gfc_charlen_t.
	* target-memory.h (gfc_encode_character): Modify prototype.
	* trans-array.c (get_array_ctor_var_strlen): Use
	gfc_conv_mpz_to_tree_type.
	* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
	* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
	* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
	gfc_charlen_type_node.
	(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
	4, fold_convert to correct type.
	(gfc_conv_class_to_class): Build const of type size_type_node for
	size.
	(gfc_copy_class_to_class): Likewise.
	(gfc_conv_string_length): Use same type in expression.
	(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
	(gfc_conv_string_tmp): Make sure len is of the right type.
	(gfc_conv_concat_op): Use same type in expression.
	(gfc_conv_procedure_call): Likewise.
	(alloc_scalar_allocatable_for_subcomponent_assignment):
	fold_convert to right type.
	(gfc_trans_subcomponent_assign): Likewise.
	(trans_class_vptr_len_assignment): Build const of correct type.
	(gfc_trans_pointer_assignment): Likewise.
	(alloc_scalar_allocatable_for_assignment): fold_convert to right
	type in expr.
	(trans_class_assignment): Build const of correct type.
	* trans-intrinsic.c (gfc_conv_associated): Likewise.
	(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
	* trans-io.c (gfc_build_io_library_fndecls): Use
	gfc_charlen_type_node for character lengths.
	* trans-stmt.c (gfc_trans_label_assign): Build const of
	gfc_charlen_type_node.
	(gfc_trans_character_select): Likewise.
	(gfc_trans_allocate): Likewise, don't typecast strlen result.
	(gfc_trans_deallocate): Don't typecast strlen result.
	* trans-types.c (gfc_size_kind): New variable.
	(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
	from size_type_node.

testsuite:

2017-01-03  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* gfortran.dg/dependency_49.f90: Change scan-tree-dump-times
          due to gfc_trans_string_copy change to avoid
          -Wstringop-overflow.
	* gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T.
	* gfortran.dg/repeat_7.f90: New test for PR 66310.
	* gfortran.dg/scan_2.f90: Handle potential cast in assignment.
	* gfortran.dg/string_1.f90: Limit to ilp32 targets.
	* gfortran.dg/string_1_lp64.f90: New test.
	* gfortran.dg/string_3.f90: Limit to ilp32 targets.
	* gfortran.dg/string_3_lp64.f90: New test.
	* gfortran.dg/transfer_intrinsic_1.f90: Change
          scan-tree-dump-times due to gfc_trans_string_copy change to
          avoid -Wstringop-overflow.

libgfortran:

2017-01-03  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	* intrinsics/args.c (getarg_i4): Use gfc_charlen_type.
	(get_command_argument_i4): Likewise.
	(get_command_i4): Likewise.
	* intrinsics/chmod.c (chmod_internal): Likewise.
	* intrinsics/env.c (get_environment_variable_i4): Likewise.
	* intrinsics/extends_type_of.c (struct vtype): Use size_t for size
	member.
	* intrinsics/gerror.c (gerror): Use gfc_charlen_type.
	* intrinsics/getlog.c (getlog): Likewise.
	* intrinsics/hostnm.c (hostnm_0): Likewise.
	* intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to
	work if gfc_charlen_type is unsigned.
	(string_scan): Likewise.
	* io/transfer.c (transfer_character): Modify prototype.
	(transfer_character_write): Likewise.
	(transfer_character_wide): Likewise.
	(transfer_character_wide_write): Likewise.
	(transfer_array): Typecast to avoid signed-unsigned comparison.
	* io/unit.c (is_trim_ok): Use gfc_charlen_type.
	* io/write.c (namelist_write): Likewise.
	* libgfortran.h (gfc_charlen_type): Change typedef to size_t.

From-SVN: r244011
2017-01-03 09:04:01 +02:00
Jakub Jelinek
cbe34bb5ed Update copyright years.
From-SVN: r243994
2017-01-01 13:07:43 +01:00
Francois-Xavier Coudert
887d9b8b6d libgfortran.h: Include <stdlib.h> header.
* libgfortran.h: Include <stdlib.h> header.
	* intrinsics/access.c: Do not include <stdlib.h> header.
	* intrinsics/chdir.c: Do not include <stdlib.h> header.
	* intrinsics/chmod.c: Do not include <stdlib.h> header.
	* intrinsics/date_and_time.c: Do not include <stdlib.h> header.
	* intrinsics/env.c: Do not include <stdlib.h> header.
	* intrinsics/execute_command_line.c: Do not include <stdlib.h> header.
	* intrinsics/exit.c: Do not include <stdlib.h> header.
	* intrinsics/getcwd.c: Do not include <stdlib.h> header.
	* intrinsics/getlog.c: Do not include <stdlib.h> header.
	* intrinsics/link.c: Do not include <stdlib.h> header.
	* intrinsics/move_alloc.c: Do not include <stdlib.h> header.
	* intrinsics/perror.c: Do not include <stdlib.h> header.
	* intrinsics/random.c: Do not include <stdlib.h> header.
	* intrinsics/rename.c: Do not include <stdlib.h> header.
	* intrinsics/reshape_generic.c: Do not include <stdlib.h> header.
	* intrinsics/stat.c: Do not include <stdlib.h> header.
	* intrinsics/symlnk.c: Do not include <stdlib.h> header.
	* intrinsics/system.c: Do not include <stdlib.h> header.
	* intrinsics/unlink.c: Do not include <stdlib.h> header.
	* io/fbuf.c: Do not include <stdlib.h> header.
	* io/format.c: Do not include <stdlib.h> header.
	* io/intrinsics.c: Do not include <stdlib.h> header.
	* io/list_read.c: Do not include <stdlib.h> header.
	* io/lock.c: Do not include <stdlib.h> header.
	* io/open.c: Do not include <stdlib.h> header.
	* io/read.c: Do not include <stdlib.h> header.
	* io/transfer.c: Do not include <stdlib.h> header.
	* io/unit.c: Do not include <stdlib.h> header.
	* io/unix.c: Do not include <stdlib.h> header.
	* io/write.c: Do not include <stdlib.h> header.
	* m4/all.m4: Do not include <stdlib.h> header.
	* m4/any.m4: Do not include <stdlib.h> header.
	* m4/bessel.m4: Do not include <stdlib.h> header.
	* m4/count.m4: Do not include <stdlib.h> header.
	* m4/cshift0.m4: Do not include <stdlib.h> header.
	* m4/cshift1.m4: Do not include <stdlib.h> header.
	* m4/eoshift1.m4: Do not include <stdlib.h> header.
	* m4/eoshift3.m4: Do not include <stdlib.h> header.
	* m4/iall.m4: Do not include <stdlib.h> header.
	* m4/iany.m4: Do not include <stdlib.h> header.
	* m4/in_pack.m4: Do not include <stdlib.h> header.
	* m4/in_unpack.m4: Do not include <stdlib.h> header.
	* m4/iparity.m4: Do not include <stdlib.h> header.
	* m4/matmul.m4: Do not include <stdlib.h> header.
	* m4/matmull.m4: Do not include <stdlib.h> header.
	* m4/maxloc0.m4: Do not include <stdlib.h> header.
	* m4/maxloc1.m4: Do not include <stdlib.h> header.
	* m4/maxval.m4: Do not include <stdlib.h> header.
	* m4/minloc0.m4: Do not include <stdlib.h> header.
	* m4/minloc1.m4: Do not include <stdlib.h> header.
	* m4/minval.m4: Do not include <stdlib.h> header.
	* m4/norm2.m4: Do not include <stdlib.h> header.
	* m4/pack.m4: Do not include <stdlib.h> header.
	* m4/parity.m4: Do not include <stdlib.h> header.
	* m4/product.m4: Do not include <stdlib.h> header.
	* m4/reshape.m4: Do not include <stdlib.h> header.
	* m4/shape.m4: Do not include <stdlib.h> header.
	* m4/spread.m4: Do not include <stdlib.h> header.
	* m4/sum.m4: Do not include <stdlib.h> header.
	* m4/unpack.m4: Do not include <stdlib.h> header.
	* runtime/environ.c: Do not include <stdlib.h> header.
	* runtime/error.c: Do not include <stdlib.h> header.
	* runtime/memory.c: Do not include <stdlib.h> header.
	* runtime/minimal.c: Do not include <stdlib.h> header.
	* runtime/string.c: Do not include <stdlib.h> header.
	* generated/all_l1.c: Regenerate.
	* generated/all_l16.c: Regenerate.
	* generated/all_l2.c: Regenerate.
	* generated/all_l4.c: Regenerate.
	* generated/all_l8.c: Regenerate.
	* generated/any_l1.c: Regenerate.
	* generated/any_l16.c: Regenerate.
	* generated/any_l2.c: Regenerate.
	* generated/any_l4.c: Regenerate.
	* generated/any_l8.c: Regenerate.
	* generated/bessel_r10.c: Regenerate.
	* generated/bessel_r16.c: Regenerate.
	* generated/bessel_r4.c: Regenerate.
	* generated/bessel_r8.c: Regenerate.
	* generated/count_16_l.c: Regenerate.
	* generated/count_1_l.c: Regenerate.
	* generated/count_2_l.c: Regenerate.
	* generated/count_4_l.c: Regenerate.
	* generated/count_8_l.c: Regenerate.
	* generated/cshift0_c10.c: Regenerate.
	* generated/cshift0_c16.c: Regenerate.
	* generated/cshift0_c4.c: Regenerate.
	* generated/cshift0_c8.c: Regenerate.
	* generated/cshift0_i1.c: Regenerate.
	* generated/cshift0_i16.c: Regenerate.
	* generated/cshift0_i2.c: Regenerate.
	* generated/cshift0_i4.c: Regenerate.
	* generated/cshift0_i8.c: Regenerate.
	* generated/cshift0_r10.c: Regenerate.
	* generated/cshift0_r16.c: Regenerate.
	* generated/cshift0_r4.c: Regenerate.
	* generated/cshift0_r8.c: Regenerate.
	* generated/cshift1_16.c: Regenerate.
	* generated/cshift1_4.c: Regenerate.
	* generated/cshift1_8.c: Regenerate.
	* generated/eoshift1_16.c: Regenerate.
	* generated/eoshift1_4.c: Regenerate.
	* generated/eoshift1_8.c: Regenerate.
	* generated/eoshift3_16.c: Regenerate.
	* generated/eoshift3_4.c: Regenerate.
	* generated/eoshift3_8.c: Regenerate.
	* generated/iall_i1.c: Regenerate.
	* generated/iall_i16.c: Regenerate.
	* generated/iall_i2.c: Regenerate.
	* generated/iall_i4.c: Regenerate.
	* generated/iall_i8.c: Regenerate.
	* generated/iany_i1.c: Regenerate.
	* generated/iany_i16.c: Regenerate.
	* generated/iany_i2.c: Regenerate.
	* generated/iany_i4.c: Regenerate.
	* generated/iany_i8.c: Regenerate.
	* generated/in_pack_c10.c: Regenerate.
	* generated/in_pack_c16.c: Regenerate.
	* generated/in_pack_c4.c: Regenerate.
	* generated/in_pack_c8.c: Regenerate.
	* generated/in_pack_i1.c: Regenerate.
	* generated/in_pack_i16.c: Regenerate.
	* generated/in_pack_i2.c: Regenerate.
	* generated/in_pack_i4.c: Regenerate.
	* generated/in_pack_i8.c: Regenerate.
	* generated/in_pack_r10.c: Regenerate.
	* generated/in_pack_r16.c: Regenerate.
	* generated/in_pack_r4.c: Regenerate.
	* generated/in_pack_r8.c: Regenerate.
	* generated/in_unpack_c10.c: Regenerate.
	* generated/in_unpack_c16.c: Regenerate.
	* generated/in_unpack_c4.c: Regenerate.
	* generated/in_unpack_c8.c: Regenerate.
	* generated/in_unpack_i1.c: Regenerate.
	* generated/in_unpack_i16.c: Regenerate.
	* generated/in_unpack_i2.c: Regenerate.
	* generated/in_unpack_i4.c: Regenerate.
	* generated/in_unpack_i8.c: Regenerate.
	* generated/in_unpack_r10.c: Regenerate.
	* generated/in_unpack_r16.c: Regenerate.
	* generated/in_unpack_r4.c: Regenerate.
	* generated/in_unpack_r8.c: Regenerate.
	* generated/iparity_i1.c: Regenerate.
	* generated/iparity_i16.c: Regenerate.
	* generated/iparity_i2.c: Regenerate.
	* generated/iparity_i4.c: Regenerate.
	* generated/iparity_i8.c: Regenerate.
	* generated/matmul_c10.c: Regenerate.
	* generated/matmul_c16.c: Regenerate.
	* generated/matmul_c4.c: Regenerate.
	* generated/matmul_c8.c: Regenerate.
	* generated/matmul_i1.c: Regenerate.
	* generated/matmul_i16.c: Regenerate.
	* generated/matmul_i2.c: Regenerate.
	* generated/matmul_i4.c: Regenerate.
	* generated/matmul_i8.c: Regenerate.
	* generated/matmul_l16.c: Regenerate.
	* generated/matmul_l4.c: Regenerate.
	* generated/matmul_l8.c: Regenerate.
	* generated/matmul_r10.c: Regenerate.
	* generated/matmul_r16.c: Regenerate.
	* generated/matmul_r4.c: Regenerate.
	* generated/matmul_r8.c: Regenerate.
	* generated/maxloc0_16_i1.c: Regenerate.
	* generated/maxloc0_16_i16.c: Regenerate.
	* generated/maxloc0_16_i2.c: Regenerate.
	* generated/maxloc0_16_i4.c: Regenerate.
	* generated/maxloc0_16_i8.c: Regenerate.
	* generated/maxloc0_16_r10.c: Regenerate.
	* generated/maxloc0_16_r16.c: Regenerate.
	* generated/maxloc0_16_r4.c: Regenerate.
	* generated/maxloc0_16_r8.c: Regenerate.
	* generated/maxloc0_4_i1.c: Regenerate.
	* generated/maxloc0_4_i16.c: Regenerate.
	* generated/maxloc0_4_i2.c: Regenerate.
	* generated/maxloc0_4_i4.c: Regenerate.
	* generated/maxloc0_4_i8.c: Regenerate.
	* generated/maxloc0_4_r10.c: Regenerate.
	* generated/maxloc0_4_r16.c: Regenerate.
	* generated/maxloc0_4_r4.c: Regenerate.
	* generated/maxloc0_4_r8.c: Regenerate.
	* generated/maxloc0_8_i1.c: Regenerate.
	* generated/maxloc0_8_i16.c: Regenerate.
	* generated/maxloc0_8_i2.c: Regenerate.
	* generated/maxloc0_8_i4.c: Regenerate.
	* generated/maxloc0_8_i8.c: Regenerate.
	* generated/maxloc0_8_r10.c: Regenerate.
	* generated/maxloc0_8_r16.c: Regenerate.
	* generated/maxloc0_8_r4.c: Regenerate.
	* generated/maxloc0_8_r8.c: Regenerate.
	* generated/maxloc1_16_i1.c: Regenerate.
	* generated/maxloc1_16_i16.c: Regenerate.
	* generated/maxloc1_16_i2.c: Regenerate.
	* generated/maxloc1_16_i4.c: Regenerate.
	* generated/maxloc1_16_i8.c: Regenerate.
	* generated/maxloc1_16_r10.c: Regenerate.
	* generated/maxloc1_16_r16.c: Regenerate.
	* generated/maxloc1_16_r4.c: Regenerate.
	* generated/maxloc1_16_r8.c: Regenerate.
	* generated/maxloc1_4_i1.c: Regenerate.
	* generated/maxloc1_4_i16.c: Regenerate.
	* generated/maxloc1_4_i2.c: Regenerate.
	* generated/maxloc1_4_i4.c: Regenerate.
	* generated/maxloc1_4_i8.c: Regenerate.
	* generated/maxloc1_4_r10.c: Regenerate.
	* generated/maxloc1_4_r16.c: Regenerate.
	* generated/maxloc1_4_r4.c: Regenerate.
	* generated/maxloc1_4_r8.c: Regenerate.
	* generated/maxloc1_8_i1.c: Regenerate.
	* generated/maxloc1_8_i16.c: Regenerate.
	* generated/maxloc1_8_i2.c: Regenerate.
	* generated/maxloc1_8_i4.c: Regenerate.
	* generated/maxloc1_8_i8.c: Regenerate.
	* generated/maxloc1_8_r10.c: Regenerate.
	* generated/maxloc1_8_r16.c: Regenerate.
	* generated/maxloc1_8_r4.c: Regenerate.
	* generated/maxloc1_8_r8.c: Regenerate.
	* generated/maxval_i1.c: Regenerate.
	* generated/maxval_i16.c: Regenerate.
	* generated/maxval_i2.c: Regenerate.
	* generated/maxval_i4.c: Regenerate.
	* generated/maxval_i8.c: Regenerate.
	* generated/maxval_r10.c: Regenerate.
	* generated/maxval_r16.c: Regenerate.
	* generated/maxval_r4.c: Regenerate.
	* generated/maxval_r8.c: Regenerate.
	* generated/minloc0_16_i1.c: Regenerate.
	* generated/minloc0_16_i16.c: Regenerate.
	* generated/minloc0_16_i2.c: Regenerate.
	* generated/minloc0_16_i4.c: Regenerate.
	* generated/minloc0_16_i8.c: Regenerate.
	* generated/minloc0_16_r10.c: Regenerate.
	* generated/minloc0_16_r16.c: Regenerate.
	* generated/minloc0_16_r4.c: Regenerate.
	* generated/minloc0_16_r8.c: Regenerate.
	* generated/minloc0_4_i1.c: Regenerate.
	* generated/minloc0_4_i16.c: Regenerate.
	* generated/minloc0_4_i2.c: Regenerate.
	* generated/minloc0_4_i4.c: Regenerate.
	* generated/minloc0_4_i8.c: Regenerate.
	* generated/minloc0_4_r10.c: Regenerate.
	* generated/minloc0_4_r16.c: Regenerate.
	* generated/minloc0_4_r4.c: Regenerate.
	* generated/minloc0_4_r8.c: Regenerate.
	* generated/minloc0_8_i1.c: Regenerate.
	* generated/minloc0_8_i16.c: Regenerate.
	* generated/minloc0_8_i2.c: Regenerate.
	* generated/minloc0_8_i4.c: Regenerate.
	* generated/minloc0_8_i8.c: Regenerate.
	* generated/minloc0_8_r10.c: Regenerate.
	* generated/minloc0_8_r16.c: Regenerate.
	* generated/minloc0_8_r4.c: Regenerate.
	* generated/minloc0_8_r8.c: Regenerate.
	* generated/minloc1_16_i1.c: Regenerate.
	* generated/minloc1_16_i16.c: Regenerate.
	* generated/minloc1_16_i2.c: Regenerate.
	* generated/minloc1_16_i4.c: Regenerate.
	* generated/minloc1_16_i8.c: Regenerate.
	* generated/minloc1_16_r10.c: Regenerate.
	* generated/minloc1_16_r16.c: Regenerate.
	* generated/minloc1_16_r4.c: Regenerate.
	* generated/minloc1_16_r8.c: Regenerate.
	* generated/minloc1_4_i1.c: Regenerate.
	* generated/minloc1_4_i16.c: Regenerate.
	* generated/minloc1_4_i2.c: Regenerate.
	* generated/minloc1_4_i4.c: Regenerate.
	* generated/minloc1_4_i8.c: Regenerate.
	* generated/minloc1_4_r10.c: Regenerate.
	* generated/minloc1_4_r16.c: Regenerate.
	* generated/minloc1_4_r4.c: Regenerate.
	* generated/minloc1_4_r8.c: Regenerate.
	* generated/minloc1_8_i1.c: Regenerate.
	* generated/minloc1_8_i16.c: Regenerate.
	* generated/minloc1_8_i2.c: Regenerate.
	* generated/minloc1_8_i4.c: Regenerate.
	* generated/minloc1_8_i8.c: Regenerate.
	* generated/minloc1_8_r10.c: Regenerate.
	* generated/minloc1_8_r16.c: Regenerate.
	* generated/minloc1_8_r4.c: Regenerate.
	* generated/minloc1_8_r8.c: Regenerate.
	* generated/minval_i1.c: Regenerate.
	* generated/minval_i16.c: Regenerate.
	* generated/minval_i2.c: Regenerate.
	* generated/minval_i4.c: Regenerate.
	* generated/minval_i8.c: Regenerate.
	* generated/minval_r10.c: Regenerate.
	* generated/minval_r16.c: Regenerate.
	* generated/minval_r4.c: Regenerate.
	* generated/minval_r8.c: Regenerate.
	* generated/norm2_r10.c: Regenerate.
	* generated/norm2_r16.c: Regenerate.
	* generated/norm2_r4.c: Regenerate.
	* generated/norm2_r8.c: Regenerate.
	* generated/pack_c10.c: Regenerate.
	* generated/pack_c16.c: Regenerate.
	* generated/pack_c4.c: Regenerate.
	* generated/pack_c8.c: Regenerate.
	* generated/pack_i1.c: Regenerate.
	* generated/pack_i16.c: Regenerate.
	* generated/pack_i2.c: Regenerate.
	* generated/pack_i4.c: Regenerate.
	* generated/pack_i8.c: Regenerate.
	* generated/pack_r10.c: Regenerate.
	* generated/pack_r16.c: Regenerate.
	* generated/pack_r4.c: Regenerate.
	* generated/pack_r8.c: Regenerate.
	* generated/parity_l1.c: Regenerate.
	* generated/parity_l16.c: Regenerate.
	* generated/parity_l2.c: Regenerate.
	* generated/parity_l4.c: Regenerate.
	* generated/parity_l8.c: Regenerate.
	* generated/product_c10.c: Regenerate.
	* generated/product_c16.c: Regenerate.
	* generated/product_c4.c: Regenerate.
	* generated/product_c8.c: Regenerate.
	* generated/product_i1.c: Regenerate.
	* generated/product_i16.c: Regenerate.
	* generated/product_i2.c: Regenerate.
	* generated/product_i4.c: Regenerate.
	* generated/product_i8.c: Regenerate.
	* generated/product_r10.c: Regenerate.
	* generated/product_r16.c: Regenerate.
	* generated/product_r4.c: Regenerate.
	* generated/product_r8.c: Regenerate.
	* generated/reshape_c10.c: Regenerate.
	* generated/reshape_c16.c: Regenerate.
	* generated/reshape_c4.c: Regenerate.
	* generated/reshape_c8.c: Regenerate.
	* generated/reshape_i16.c: Regenerate.
	* generated/reshape_i4.c: Regenerate.
	* generated/reshape_i8.c: Regenerate.
	* generated/reshape_r10.c: Regenerate.
	* generated/reshape_r16.c: Regenerate.
	* generated/reshape_r4.c: Regenerate.
	* generated/reshape_r8.c: Regenerate.
	* generated/shape_i1.c: Regenerate.
	* generated/shape_i16.c: Regenerate.
	* generated/shape_i2.c: Regenerate.
	* generated/shape_i4.c: Regenerate.
	* generated/shape_i8.c: Regenerate.
	* generated/spread_c10.c: Regenerate.
	* generated/spread_c16.c: Regenerate.
	* generated/spread_c4.c: Regenerate.
	* generated/spread_c8.c: Regenerate.
	* generated/spread_i1.c: Regenerate.
	* generated/spread_i16.c: Regenerate.
	* generated/spread_i2.c: Regenerate.
	* generated/spread_i4.c: Regenerate.
	* generated/spread_i8.c: Regenerate.
	* generated/spread_r10.c: Regenerate.
	* generated/spread_r16.c: Regenerate.
	* generated/spread_r4.c: Regenerate.
	* generated/spread_r8.c: Regenerate.
	* generated/sum_c10.c: Regenerate.
	* generated/sum_c16.c: Regenerate.
	* generated/sum_c4.c: Regenerate.
	* generated/sum_c8.c: Regenerate.
	* generated/sum_i1.c: Regenerate.
	* generated/sum_i16.c: Regenerate.
	* generated/sum_i2.c: Regenerate.
	* generated/sum_i4.c: Regenerate.
	* generated/sum_i8.c: Regenerate.
	* generated/sum_r10.c: Regenerate.
	* generated/sum_r16.c: Regenerate.
	* generated/sum_r4.c: Regenerate.
	* generated/sum_r8.c: Regenerate.
	* generated/unpack_c10.c: Regenerate.
	* generated/unpack_c16.c: Regenerate.
	* generated/unpack_c4.c: Regenerate.
	* generated/unpack_c8.c: Regenerate.
	* generated/unpack_i1.c: Regenerate.
	* generated/unpack_i16.c: Regenerate.
	* generated/unpack_i2.c: Regenerate.
	* generated/unpack_i4.c: Regenerate.
	* generated/unpack_i8.c: Regenerate.
	* generated/unpack_r10.c: Regenerate.
	* generated/unpack_r16.c: Regenerate.
	* generated/unpack_r4.c: Regenerate.
	* generated/unpack_r8.c: Regenerate.

From-SVN: r243846
2016-12-21 10:41:57 +00:00
Francois-Xavier Coudert
981c0cd1bc abort.c: Remove unused headers.
* intrinsics/abort.c: Remove unused headers.
	* intrinsics/access.c: Remove unused headers.
	* intrinsics/chdir.c: Remove unused headers.
	* intrinsics/chmod.c: Remove unused headers.
	* intrinsics/cshift0.c: Remove unused headers.
	* intrinsics/ctime.c: Remove unused headers.
	* intrinsics/eoshift0.c: Remove unused headers.
	* intrinsics/eoshift2.c: Remove unused headers.
	* intrinsics/extends_type_of.c: Remove unused headers.
	* intrinsics/link.c: Remove unused headers.
	* intrinsics/pack_generic.c: Remove unused headers.
	* intrinsics/perror.c: Remove unused headers.
	* intrinsics/rename.c: Remove unused headers.
	* intrinsics/reshape_generic.c: Remove unused headers.
	* intrinsics/sleep.c: Remove unused headers.
	* intrinsics/spread_generic.c: Remove unused headers.
	* intrinsics/stat.c: Remove unused headers.
	* intrinsics/string_intrinsics.c: Remove unused headers.
	* intrinsics/symlnk.c: Remove unused headers.
	* intrinsics/system.c: Remove unused headers.
	* intrinsics/umask.c: Remove unused headers.
	* intrinsics/unlink.c: Remove unused headers.
	* intrinsics/unpack_generic.c: Remove unused headers.
	* io/read.c: Remove unused headers.
	* io/transfer.c: Remove unused headers.
	* io/unix.c: Remove unused headers.
	* io/write.c: Remove unused headers.
	* m4/all.m4: Remove unused headers.
	* m4/any.m4: Remove unused headers.
	* m4/bessel.m4: Remove unused headers.
	* m4/count.m4: Remove unused headers.
	* m4/cshift0.m4: Remove unused headers.
	* m4/cshift1.m4: Remove unused headers.
	* m4/eoshift1.m4: Remove unused headers.
	* m4/eoshift3.m4: Remove unused headers.
	* m4/iall.m4: Remove unused headers.
	* m4/iany.m4: Remove unused headers.
	* m4/in_pack.m4: Remove unused headers.
	* m4/in_unpack.m4: Remove unused headers.
	* m4/iparity.m4: Remove unused headers.
	* m4/maxloc0.m4: Remove unused headers.
	* m4/maxloc1.m4: Remove unused headers.
	* m4/maxval.m4: Remove unused headers.
	* m4/minloc0.m4: Remove unused headers.
	* m4/minloc1.m4: Remove unused headers.
	* m4/minval.m4: Remove unused headers.
	* m4/norm2.m4: Remove unused headers.
	* m4/pack.m4: Remove unused headers.
	* m4/parity.m4: Remove unused headers.
	* m4/product.m4: Remove unused headers.
	* m4/reshape.m4: Remove unused headers.
	* m4/shape.m4: Remove unused headers.
	* m4/spread.m4: Remove unused headers.
	* m4/sum.m4: Remove unused headers.
	* m4/unpack.m4: Remove unused headers.
	* runtime/backtrace.c: Remove unused headers.
	* runtime/convert_char.c: Remove unused headers.
	* runtime/in_pack_generic.c: Remove unused headers.
	* runtime/in_unpack_generic.c: Remove unused headers.
	* runtime/main.c: Remove unused headers.
	* runtime/stop.c: Remove unused headers.
	* generated/all_l1.c: Regenerate.
	* generated/all_l16.c: Regenerate.
	* generated/all_l2.c: Regenerate.
	* generated/all_l4.c: Regenerate.
	* generated/all_l8.c: Regenerate.
	* generated/any_l1.c: Regenerate.
	* generated/any_l16.c: Regenerate.
	* generated/any_l2.c: Regenerate.
	* generated/any_l4.c: Regenerate.
	* generated/any_l8.c: Regenerate.
	* generated/bessel_r10.c: Regenerate.
	* generated/bessel_r16.c: Regenerate.
	* generated/bessel_r4.c: Regenerate.
	* generated/bessel_r8.c: Regenerate.
	* generated/count_16_l.c: Regenerate.
	* generated/count_1_l.c: Regenerate.
	* generated/count_2_l.c: Regenerate.
	* generated/count_4_l.c: Regenerate.
	* generated/count_8_l.c: Regenerate.
	* generated/cshift0_c10.c: Regenerate.
	* generated/cshift0_c16.c: Regenerate.
	* generated/cshift0_c4.c: Regenerate.
	* generated/cshift0_c8.c: Regenerate.
	* generated/cshift0_i1.c: Regenerate.
	* generated/cshift0_i16.c: Regenerate.
	* generated/cshift0_i2.c: Regenerate.
	* generated/cshift0_i4.c: Regenerate.
	* generated/cshift0_i8.c: Regenerate.
	* generated/cshift0_r10.c: Regenerate.
	* generated/cshift0_r16.c: Regenerate.
	* generated/cshift0_r4.c: Regenerate.
	* generated/cshift0_r8.c: Regenerate.
	* generated/cshift1_16.c: Regenerate.
	* generated/cshift1_4.c: Regenerate.
	* generated/cshift1_8.c: Regenerate.
	* generated/eoshift1_16.c: Regenerate.
	* generated/eoshift1_4.c: Regenerate.
	* generated/eoshift1_8.c: Regenerate.
	* generated/eoshift3_16.c: Regenerate.
	* generated/eoshift3_4.c: Regenerate.
	* generated/eoshift3_8.c: Regenerate.
	* generated/iall_i1.c: Regenerate.
	* generated/iall_i16.c: Regenerate.
	* generated/iall_i2.c: Regenerate.
	* generated/iall_i4.c: Regenerate.
	* generated/iall_i8.c: Regenerate.
	* generated/iany_i1.c: Regenerate.
	* generated/iany_i16.c: Regenerate.
	* generated/iany_i2.c: Regenerate.
	* generated/iany_i4.c: Regenerate.
	* generated/iany_i8.c: Regenerate.
	* generated/in_pack_c10.c: Regenerate.
	* generated/in_pack_c16.c: Regenerate.
	* generated/in_pack_c4.c: Regenerate.
	* generated/in_pack_c8.c: Regenerate.
	* generated/in_pack_i1.c: Regenerate.
	* generated/in_pack_i16.c: Regenerate.
	* generated/in_pack_i2.c: Regenerate.
	* generated/in_pack_i4.c: Regenerate.
	* generated/in_pack_i8.c: Regenerate.
	* generated/in_pack_r10.c: Regenerate.
	* generated/in_pack_r16.c: Regenerate.
	* generated/in_pack_r4.c: Regenerate.
	* generated/in_pack_r8.c: Regenerate.
	* generated/in_unpack_c10.c: Regenerate.
	* generated/in_unpack_c16.c: Regenerate.
	* generated/in_unpack_c4.c: Regenerate.
	* generated/in_unpack_c8.c: Regenerate.
	* generated/in_unpack_i1.c: Regenerate.
	* generated/in_unpack_i16.c: Regenerate.
	* generated/in_unpack_i2.c: Regenerate.
	* generated/in_unpack_i4.c: Regenerate.
	* generated/in_unpack_i8.c: Regenerate.
	* generated/in_unpack_r10.c: Regenerate.
	* generated/in_unpack_r16.c: Regenerate.
	* generated/in_unpack_r4.c: Regenerate.
	* generated/in_unpack_r8.c: Regenerate.
	* generated/iparity_i1.c: Regenerate.
	* generated/iparity_i16.c: Regenerate.
	* generated/iparity_i2.c: Regenerate.
	* generated/iparity_i4.c: Regenerate.
	* generated/iparity_i8.c: Regenerate.
	* generated/maxloc0_16_i1.c: Regenerate.
	* generated/maxloc0_16_i16.c: Regenerate.
	* generated/maxloc0_16_i2.c: Regenerate.
	* generated/maxloc0_16_i4.c: Regenerate.
	* generated/maxloc0_16_i8.c: Regenerate.
	* generated/maxloc0_16_r10.c: Regenerate.
	* generated/maxloc0_16_r16.c: Regenerate.
	* generated/maxloc0_16_r4.c: Regenerate.
	* generated/maxloc0_16_r8.c: Regenerate.
	* generated/maxloc0_4_i1.c: Regenerate.
	* generated/maxloc0_4_i16.c: Regenerate.
	* generated/maxloc0_4_i2.c: Regenerate.
	* generated/maxloc0_4_i4.c: Regenerate.
	* generated/maxloc0_4_i8.c: Regenerate.
	* generated/maxloc0_4_r10.c: Regenerate.
	* generated/maxloc0_4_r16.c: Regenerate.
	* generated/maxloc0_4_r4.c: Regenerate.
	* generated/maxloc0_4_r8.c: Regenerate.
	* generated/maxloc0_8_i1.c: Regenerate.
	* generated/maxloc0_8_i16.c: Regenerate.
	* generated/maxloc0_8_i2.c: Regenerate.
	* generated/maxloc0_8_i4.c: Regenerate.
	* generated/maxloc0_8_i8.c: Regenerate.
	* generated/maxloc0_8_r10.c: Regenerate.
	* generated/maxloc0_8_r16.c: Regenerate.
	* generated/maxloc0_8_r4.c: Regenerate.
	* generated/maxloc0_8_r8.c: Regenerate.
	* generated/maxloc1_16_i1.c: Regenerate.
	* generated/maxloc1_16_i16.c: Regenerate.
	* generated/maxloc1_16_i2.c: Regenerate.
	* generated/maxloc1_16_i4.c: Regenerate.
	* generated/maxloc1_16_i8.c: Regenerate.
	* generated/maxloc1_16_r10.c: Regenerate.
	* generated/maxloc1_16_r16.c: Regenerate.
	* generated/maxloc1_16_r4.c: Regenerate.
	* generated/maxloc1_16_r8.c: Regenerate.
	* generated/maxloc1_4_i1.c: Regenerate.
	* generated/maxloc1_4_i16.c: Regenerate.
	* generated/maxloc1_4_i2.c: Regenerate.
	* generated/maxloc1_4_i4.c: Regenerate.
	* generated/maxloc1_4_i8.c: Regenerate.
	* generated/maxloc1_4_r10.c: Regenerate.
	* generated/maxloc1_4_r16.c: Regenerate.
	* generated/maxloc1_4_r4.c: Regenerate.
	* generated/maxloc1_4_r8.c: Regenerate.
	* generated/maxloc1_8_i1.c: Regenerate.
	* generated/maxloc1_8_i16.c: Regenerate.
	* generated/maxloc1_8_i2.c: Regenerate.
	* generated/maxloc1_8_i4.c: Regenerate.
	* generated/maxloc1_8_i8.c: Regenerate.
	* generated/maxloc1_8_r10.c: Regenerate.
	* generated/maxloc1_8_r16.c: Regenerate.
	* generated/maxloc1_8_r4.c: Regenerate.
	* generated/maxloc1_8_r8.c: Regenerate.
	* generated/maxval_i1.c: Regenerate.
	* generated/maxval_i16.c: Regenerate.
	* generated/maxval_i2.c: Regenerate.
	* generated/maxval_i4.c: Regenerate.
	* generated/maxval_i8.c: Regenerate.
	* generated/maxval_r10.c: Regenerate.
	* generated/maxval_r16.c: Regenerate.
	* generated/maxval_r4.c: Regenerate.
	* generated/maxval_r8.c: Regenerate.
	* generated/minloc0_16_i1.c: Regenerate.
	* generated/minloc0_16_i16.c: Regenerate.
	* generated/minloc0_16_i2.c: Regenerate.
	* generated/minloc0_16_i4.c: Regenerate.
	* generated/minloc0_16_i8.c: Regenerate.
	* generated/minloc0_16_r10.c: Regenerate.
	* generated/minloc0_16_r16.c: Regenerate.
	* generated/minloc0_16_r4.c: Regenerate.
	* generated/minloc0_16_r8.c: Regenerate.
	* generated/minloc0_4_i1.c: Regenerate.
	* generated/minloc0_4_i16.c: Regenerate.
	* generated/minloc0_4_i2.c: Regenerate.
	* generated/minloc0_4_i4.c: Regenerate.
	* generated/minloc0_4_i8.c: Regenerate.
	* generated/minloc0_4_r10.c: Regenerate.
	* generated/minloc0_4_r16.c: Regenerate.
	* generated/minloc0_4_r4.c: Regenerate.
	* generated/minloc0_4_r8.c: Regenerate.
	* generated/minloc0_8_i1.c: Regenerate.
	* generated/minloc0_8_i16.c: Regenerate.
	* generated/minloc0_8_i2.c: Regenerate.
	* generated/minloc0_8_i4.c: Regenerate.
	* generated/minloc0_8_i8.c: Regenerate.
	* generated/minloc0_8_r10.c: Regenerate.
	* generated/minloc0_8_r16.c: Regenerate.
	* generated/minloc0_8_r4.c: Regenerate.
	* generated/minloc0_8_r8.c: Regenerate.
	* generated/minloc1_16_i1.c: Regenerate.
	* generated/minloc1_16_i16.c: Regenerate.
	* generated/minloc1_16_i2.c: Regenerate.
	* generated/minloc1_16_i4.c: Regenerate.
	* generated/minloc1_16_i8.c: Regenerate.
	* generated/minloc1_16_r10.c: Regenerate.
	* generated/minloc1_16_r16.c: Regenerate.
	* generated/minloc1_16_r4.c: Regenerate.
	* generated/minloc1_16_r8.c: Regenerate.
	* generated/minloc1_4_i1.c: Regenerate.
	* generated/minloc1_4_i16.c: Regenerate.
	* generated/minloc1_4_i2.c: Regenerate.
	* generated/minloc1_4_i4.c: Regenerate.
	* generated/minloc1_4_i8.c: Regenerate.
	* generated/minloc1_4_r10.c: Regenerate.
	* generated/minloc1_4_r16.c: Regenerate.
	* generated/minloc1_4_r4.c: Regenerate.
	* generated/minloc1_4_r8.c: Regenerate.
	* generated/minloc1_8_i1.c: Regenerate.
	* generated/minloc1_8_i16.c: Regenerate.
	* generated/minloc1_8_i2.c: Regenerate.
	* generated/minloc1_8_i4.c: Regenerate.
	* generated/minloc1_8_i8.c: Regenerate.
	* generated/minloc1_8_r10.c: Regenerate.
	* generated/minloc1_8_r16.c: Regenerate.
	* generated/minloc1_8_r4.c: Regenerate.
	* generated/minloc1_8_r8.c: Regenerate.
	* generated/minval_i1.c: Regenerate.
	* generated/minval_i16.c: Regenerate.
	* generated/minval_i2.c: Regenerate.
	* generated/minval_i4.c: Regenerate.
	* generated/minval_i8.c: Regenerate.
	* generated/minval_r10.c: Regenerate.
	* generated/minval_r16.c: Regenerate.
	* generated/minval_r4.c: Regenerate.
	* generated/minval_r8.c: Regenerate.
	* generated/norm2_r10.c: Regenerate.
	* generated/norm2_r16.c: Regenerate.
	* generated/norm2_r4.c: Regenerate.
	* generated/norm2_r8.c: Regenerate.
	* generated/pack_c10.c: Regenerate.
	* generated/pack_c16.c: Regenerate.
	* generated/pack_c4.c: Regenerate.
	* generated/pack_c8.c: Regenerate.
	* generated/pack_i1.c: Regenerate.
	* generated/pack_i16.c: Regenerate.
	* generated/pack_i2.c: Regenerate.
	* generated/pack_i4.c: Regenerate.
	* generated/pack_i8.c: Regenerate.
	* generated/pack_r10.c: Regenerate.
	* generated/pack_r16.c: Regenerate.
	* generated/pack_r4.c: Regenerate.
	* generated/pack_r8.c: Regenerate.
	* generated/parity_l1.c: Regenerate.
	* generated/parity_l16.c: Regenerate.
	* generated/parity_l2.c: Regenerate.
	* generated/parity_l4.c: Regenerate.
	* generated/parity_l8.c: Regenerate.
	* generated/product_c10.c: Regenerate.
	* generated/product_c16.c: Regenerate.
	* generated/product_c4.c: Regenerate.
	* generated/product_c8.c: Regenerate.
	* generated/product_i1.c: Regenerate.
	* generated/product_i16.c: Regenerate.
	* generated/product_i2.c: Regenerate.
	* generated/product_i4.c: Regenerate.
	* generated/product_i8.c: Regenerate.
	* generated/product_r10.c: Regenerate.
	* generated/product_r16.c: Regenerate.
	* generated/product_r4.c: Regenerate.
	* generated/product_r8.c: Regenerate.
	* generated/reshape_c10.c: Regenerate.
	* generated/reshape_c16.c: Regenerate.
	* generated/reshape_c4.c: Regenerate.
	* generated/reshape_c8.c: Regenerate.
	* generated/reshape_i16.c: Regenerate.
	* generated/reshape_i4.c: Regenerate.
	* generated/reshape_i8.c: Regenerate.
	* generated/reshape_r10.c: Regenerate.
	* generated/reshape_r16.c: Regenerate.
	* generated/reshape_r4.c: Regenerate.
	* generated/reshape_r8.c: Regenerate.
	* generated/shape_i1.c: Regenerate.
	* generated/shape_i16.c: Regenerate.
	* generated/shape_i2.c: Regenerate.
	* generated/shape_i4.c: Regenerate.
	* generated/shape_i8.c: Regenerate.
	* generated/spread_c10.c: Regenerate.
	* generated/spread_c16.c: Regenerate.
	* generated/spread_c4.c: Regenerate.
	* generated/spread_c8.c: Regenerate.
	* generated/spread_i1.c: Regenerate.
	* generated/spread_i16.c: Regenerate.
	* generated/spread_i2.c: Regenerate.
	* generated/spread_i4.c: Regenerate.
	* generated/spread_i8.c: Regenerate.
	* generated/spread_r10.c: Regenerate.
	* generated/spread_r16.c: Regenerate.
	* generated/spread_r4.c: Regenerate.
	* generated/spread_r8.c: Regenerate.
	* generated/sum_c10.c: Regenerate.
	* generated/sum_c16.c: Regenerate.
	* generated/sum_c4.c: Regenerate.
	* generated/sum_c8.c: Regenerate.
	* generated/sum_i1.c: Regenerate.
	* generated/sum_i16.c: Regenerate.
	* generated/sum_i2.c: Regenerate.
	* generated/sum_i4.c: Regenerate.
	* generated/sum_i8.c: Regenerate.
	* generated/sum_r10.c: Regenerate.
	* generated/sum_r16.c: Regenerate.
	* generated/sum_r4.c: Regenerate.
	* generated/sum_r8.c: Regenerate.
	* generated/unpack_c10.c: Regenerate.
	* generated/unpack_c16.c: Regenerate.
	* generated/unpack_c4.c: Regenerate.
	* generated/unpack_c8.c: Regenerate.
	* generated/unpack_i1.c: Regenerate.
	* generated/unpack_i16.c: Regenerate.
	* generated/unpack_i2.c: Regenerate.
	* generated/unpack_i4.c: Regenerate.
	* generated/unpack_i8.c: Regenerate.
	* generated/unpack_r10.c: Regenerate.
	* generated/unpack_r16.c: Regenerate.
	* generated/unpack_r4.c: Regenerate.
	* generated/unpack_r8.c: Regenerate.

From-SVN: r243844
2016-12-21 10:26:14 +00:00