2016-11-30 16:59:07 +01:00
|
|
|
|
2016-11-30 Andre Vehreschild <vehre@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* caf/single.c (_gfortran_caf_get_by_ref): Prevent compile time
|
|
|
|
|
warning.
|
|
|
|
|
(_gfortran_caf_send_by_ref): Same.
|
|
|
|
|
(_gfortran_caf_is_present): Prevent fallthrough warnings.
|
|
|
|
|
|
2016-11-30 14:27:49 +01:00
|
|
|
|
2016-11-30 Andre Vehreschild <vehre@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* caf/libcaf.h: Add new action types for (de-)registration of
|
|
|
|
|
allocatable components in derived type coarrays. Add _caf_is_present
|
|
|
|
|
prototype.
|
|
|
|
|
* caf/single.c (_gfortran_caf_register): Add support for registration
|
|
|
|
|
only and allocation of already registered allocatable components in
|
|
|
|
|
derived type coarrays.
|
|
|
|
|
(_gfortran_caf_deregister): Add mode to deallocate but not deregister
|
|
|
|
|
an allocatable component in a derived type coarray.
|
|
|
|
|
(_gfortran_caf_is_present): New function. Query whether an
|
|
|
|
|
allocatable component in a derived type coarray on a remote image is
|
|
|
|
|
allocated.
|
|
|
|
|
|
2016-11-16 22:54:25 +01:00
|
|
|
|
2016-11-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/51119
|
|
|
|
|
* Makefile.am: Remove -fno-protect-parens -fstack-arrays.
|
|
|
|
|
* Makefile.in: Regenerate.
|
|
|
|
|
|
2016-11-16 18:27:04 +01:00
|
|
|
|
2016-11-16 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/78314
|
|
|
|
|
* config/fpu-glibc.h (support_fpu_trap): Use feenableexcept.
|
|
|
|
|
|
2016-11-16 00:03:00 +01:00
|
|
|
|
2016-11-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
Thomas Koenig <tkoenig@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/51119
|
|
|
|
|
* Makefile.am: Add new optimization flags matmul.
|
|
|
|
|
* Makefile.in: Regenerate.
|
|
|
|
|
* m4/matmul.m4: For the case of all strides = 1, implement a
|
|
|
|
|
fast blocked matrix multiply. Fix some whitespace.
|
|
|
|
|
* 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_r10.c: Regenerate.
|
|
|
|
|
* generated/matmul_r16.c: Regenerate.
|
|
|
|
|
* generated/matmul_r4.c: Regenerate.
|
|
|
|
|
* generated/matmul_r8.c: Regenerate.
|
|
|
|
|
|
2016-11-15 17:34:02 +01:00
|
|
|
|
2016-11-15 Matthias Klose <doko@ubuntu.com>
|
|
|
|
|
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2016-11-03 19:09:44 +01:00
|
|
|
|
2016-11-03 Fritz Reese <fritzoreese@gmail.com>
|
|
|
|
|
|
|
|
|
|
* io/io.h (IOPARM_DT_DEFAULT_EXP): New flag bit.
|
|
|
|
|
* io/list_read.c (parse_real, read_real): Allow omission of exponent
|
|
|
|
|
with IOPARM_DT_DEFAULT_EXP.
|
|
|
|
|
* io/read.c (read_f): Ditto.
|
|
|
|
|
|
2016-10-31 20:59:04 +01:00
|
|
|
|
2016-10-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/54679
|
|
|
|
|
* io/format.c (parse_format_list): Adjust checks for FMT_L to
|
|
|
|
|
treat a zero width as an extension, giving warnings or error
|
|
|
|
|
as appropriate. Improve messages.
|
|
|
|
|
|
2016-10-30 23:14:01 +01:00
|
|
|
|
2016-10-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/78123
|
|
|
|
|
* io/transfer.c (formatted_transfer_scalar_read): Clear seen_eor
|
|
|
|
|
only if we have tabbed to left of current position.
|
|
|
|
|
|
New I/O specifiers CARRIAGECONTROL, READONLY, SHARE with -fdec.
gcc/fortran/
* gfortran.texi: Document.
* frontend-passes.c (gfc_code_walker): Add SHARE and CARRIAGECONTROL.
* io.c (gfc_free_open, gfc_resolve_open, gfc_match_open): Ditto.
* gfortran.h (gfc_open): Add SHARE, CARRIAGECONTROL, and READONLY.
* io.c (io_tag, match_open_element): Ditto.
* ioparm.def: Ditto.
* trans-io.c (gfc_trans_open): Ditto.
* io.c (match_dec_etag, match_dec_ftag): New functions.
libgfortran/io/
* libgfortran.h (IOPARM_OPEN_HAS_READONLY, IOPARM_OPEN_HAS_SHARE,
IOPARM_OPEN_HAS_CC): New for READONLY, SHARE, and CARRIAGECONTROL.
* close.c (st_close): Support READONLY.
* io.h (st_parameter_open, unit_flags): Support SHARE, CARRIAGECONTROL,
and READONLY.
* open.c (st_open): Ditto.
* transfer.c (data_transfer_init): Ditto.
* io.h (st_parameter_dt): New member 'cc' for CARRIAGECONTROL.
* write.c (write_check_cc, write_cc): New functions for CARRIAGECONTROL.
* transfer.c (next_record_cc): Ditto.
* file_pos.c (st_endfile): Support SHARE and CARRIAGECONTROL.
* io.h (st_parameter_inquire): Ditto.
* open.c (edit_modes, new_unit): Ditto.
* inquire.c (inquire_via_unit, inquire_via_filename): Ditto.
* io.h (unit_share, unit_cc, cc_fortran, IOPARM_INQUIRE_HAS_SHARE,
IOPARM_INQUIRE_HAS_CC): New for SHARE and CARRIAGECONTROL.
* open.c (share_opt, cc_opt): Ditto.
* read.c (read_x): Support CARRIAGECONTROL.
* transfer.c (read_sf, next_record_r, next_record_w): Ditto.
* write.c (list_formatted_write_scalar, write_a): Ditto.
* unix.h (close_share): New prototype.
* unix.c (open_share, close_share): New functions to handle SHARE.
* unix.c (open_external): Handle READONLY. Call open_share.
* close.c (st_close): Call close_share.
gcc/testsuite/
* dec_io_1.f90: New test.
* dec_io_2.f90: New test.
* dec_io_3.f90: New test.
* dec_io_4.f90: New test.
* dec_io_5.f90: New test.
* dec_io_6.f90: New test.
From-SVN: r241550
2016-10-26 14:11:44 +02:00
|
|
|
|
2016-10-26 Fritz Reese <fritzoreese@gmail.com>
|
|
|
|
|
|
|
|
|
|
* libgfortran.h (IOPARM_OPEN_HAS_READONLY, IOPARM_OPEN_HAS_SHARE,
|
|
|
|
|
IOPARM_OPEN_HAS_CC): New for READONLY, SHARE, and CARRIAGECONTROL.
|
|
|
|
|
* io/close.c (st_close): Support READONLY.
|
|
|
|
|
* io/io.h (st_parameter_open, unit_flags): Support SHARE,
|
|
|
|
|
CARRIAGECONTROL, and READONLY.
|
|
|
|
|
* io/open.c (st_open): Ditto.
|
|
|
|
|
* io/transfer.c (data_transfer_init): Ditto.
|
|
|
|
|
* io/io.h (st_parameter_dt): New member 'cc' for CARRIAGECONTROL.
|
|
|
|
|
* io/write.c (write_check_cc, write_cc): New functions for
|
|
|
|
|
CARRIAGECONTROL.
|
|
|
|
|
* io/transfer.c (next_record_cc): Ditto.
|
|
|
|
|
* io/file_pos.c (st_endfile): Support SHARE and CARRIAGECONTROL.
|
|
|
|
|
* io/io.h (st_parameter_inquire): Ditto.
|
|
|
|
|
* io/open.c (edit_modes, new_unit): Ditto.
|
|
|
|
|
* io/inquire.c (inquire_via_unit, inquire_via_filename): Ditto.
|
|
|
|
|
* io/io.h (unit_share, unit_cc, cc_fortran, IOPARM_INQUIRE_HAS_SHARE,
|
|
|
|
|
IOPARM_INQUIRE_HAS_CC): New for SHARE and CARRIAGECONTROL.
|
|
|
|
|
* io/open.c (share_opt, cc_opt): Ditto.
|
|
|
|
|
* io/read.c (read_x): Support CARRIAGECONTROL.
|
|
|
|
|
* io/transfer.c (read_sf, next_record_r, next_record_w): Ditto.
|
|
|
|
|
* io/write.c (list_formatted_write_scalar, write_a): Ditto.
|
|
|
|
|
* io/unix.h (close_share): New prototype.
|
|
|
|
|
* io/unix.c (open_share, close_share): New functions to handle SHARE.
|
|
|
|
|
* io/unix.c (open_external): Handle READONLY. Call open_share.
|
|
|
|
|
* io/close.c (st_close): Call close_share.
|
|
|
|
|
|
2016-10-24 23:42:29 +02:00
|
|
|
|
2016-10-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/77828
|
|
|
|
|
* io/io.h (st_parameter_dt): Reorder for readability and sanity.
|
|
|
|
|
* io/transfer.c (data_transfer_init): Remove TODO and enable the
|
|
|
|
|
runtime error message, rec= specifier not allowed in STREAM
|
|
|
|
|
access.
|
|
|
|
|
* libtool-version: Bump major version of libgfortran to 4.
|
|
|
|
|
|
2016-10-21 20:02:32 +02:00
|
|
|
|
2016-10-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/78055
|
|
|
|
|
* io/io.h (st_parameter_dt): Restore GFC_IO_INT to maintain
|
|
|
|
|
alignment.
|
|
|
|
|
|
2016-10-21 03:41:03 +02:00
|
|
|
|
2016-10-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* io/transfer.c (finalize_transfer): Free format data in child
|
|
|
|
|
procedures. (st_read_done, st_write_done): Don't free format
|
|
|
|
|
hash table.
|
|
|
|
|
|
2016-10-18 06:14:25 +02:00
|
|
|
|
2016-10-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/48298
|
|
|
|
|
* io/io.h: Move size_used from dtp to unit structure. Add bool
|
|
|
|
|
has_size to unit structure.
|
2016-10-21 03:41:03 +02:00
|
|
|
|
* io/read.c (read_x): Use has_size and size_used.
|
|
|
|
|
* io/transfer.c (read_sf_internal,read_sf,read_block_form,
|
2016-10-18 06:14:25 +02:00
|
|
|
|
read_block_form4): Likewise.
|
|
|
|
|
(data_transfer_init): If parent, initialize the size variables.
|
|
|
|
|
(finalize_transfer): Set the size variable using size_used in
|
|
|
|
|
gfc_unit. (write_block): Delete bogus/dead code.
|
|
|
|
|
|
2016-10-16 08:28:15 +02:00
|
|
|
|
2016-10-16 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/48587
|
|
|
|
|
* io/transfer.c (data_transfer_init): Improve error message,
|
|
|
|
|
remove redundant check.
|
|
|
|
|
|
2016-10-15 15:14:15 +02:00
|
|
|
|
2016-10-15 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/48587
|
|
|
|
|
* io/io.h (get_unique_unit_number): Remove prototype.
|
|
|
|
|
(newunit_alloc): New prototype.
|
|
|
|
|
* io/open.c (st_open): Call newunit_alloc.
|
|
|
|
|
* io/unit.c (newunits,newunit_size,newunit_lwi): New static
|
|
|
|
|
variables.
|
|
|
|
|
(GFC_FIRST_NEWUNIT): Rename to NEWUNIT_START.
|
|
|
|
|
(next_available_newunit): Remove variable.
|
|
|
|
|
(get_unit): Call newunit_alloc, don't try to create negative
|
|
|
|
|
external unit.
|
|
|
|
|
(close_unit_1): Call newunit_free.
|
|
|
|
|
(close_units): Free newunits array.
|
|
|
|
|
(get_unique_number): Remove function.
|
|
|
|
|
(newunit_alloc): New function.
|
|
|
|
|
(newunit_free): New function.
|
|
|
|
|
* io/transfer.c (data_transfer_init): Check for invalid unit
|
|
|
|
|
number.
|
|
|
|
|
|
2016-10-09 20:05:56 +02:00
|
|
|
|
2016-10-09 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/67585
|
|
|
|
|
* io/io.h: TEMP_FAILURE_RETRY: Define macro if not found.
|
|
|
|
|
* io/unix.c (raw_read): Handle EINTR.
|
|
|
|
|
(raw_write): Check for return value -1.
|
|
|
|
|
(raw_seek): Handle EINTR.
|
|
|
|
|
(raw_tell): Likewise.
|
|
|
|
|
(raw_size): Likewise.
|
|
|
|
|
(raw_truncate): Likewise.
|
|
|
|
|
(raw_close): Likewise.
|
|
|
|
|
(buf_flush): Call raw_seek instead of lseek.
|
|
|
|
|
(buf_read): Likewise.
|
|
|
|
|
(buf_write): Likewise.
|
|
|
|
|
(fd_to_stream): Handle EINTR.
|
|
|
|
|
(tempfile_open): Likewise.
|
|
|
|
|
(regular_file2): Likewise.
|
|
|
|
|
(compare_file_filename): Likewise.
|
|
|
|
|
(find_file): Likewise.
|
|
|
|
|
(inquire_sequential): Likewise.
|
|
|
|
|
(inquire_direct): Likewise.
|
|
|
|
|
(inquire_formatted): Likewise.
|
|
|
|
|
|
2016-10-05 18:32:24 +02:00
|
|
|
|
2016-10-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/77868
|
|
|
|
|
* io/inquire.c (inquire_via_unit): NULL guard the check for
|
|
|
|
|
internal unit passed into child IO procedure.
|
|
|
|
|
|
2016-10-05 06:39:33 +02:00
|
|
|
|
2016-10-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
2016-10-05 18:32:24 +02:00
|
|
|
|
* io/inquire.c (inquire_via_unit): Add check for internal unit
|
2016-10-05 06:39:33 +02:00
|
|
|
|
passed into child IO procedure.
|
|
|
|
|
|
2016-10-01 16:00:57 +02:00
|
|
|
|
2016-10-01 Andre Vehreschild <vehre@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/77663
|
|
|
|
|
* caf/single.c (caf_internal_error): Fix not terminating va-list.
|
|
|
|
|
(_gfortran_caf_register): Free memory also when other allocs failed.
|
|
|
|
|
(_gfortran_caf_get_by_ref): Fixed style.
|
|
|
|
|
(send_by_ref): Token is now stored at the correct position preventing
|
|
|
|
|
inaccessible tokens, memory loss and possibly crashes.
|
|
|
|
|
|
2016-09-28 21:38:03 +02:00
|
|
|
|
2016-09-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/77707
|
|
|
|
|
io/transfer.c (next_record): Flush before calculating next_record.
|
|
|
|
|
Correctly calculate.
|
|
|
|
|
|
2016-09-23 22:36:21 +02:00
|
|
|
|
2016-09-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/48298
|
|
|
|
|
* io/inquire.c (inquire_via_unit): Adjust error check for the
|
|
|
|
|
two possible internal unit KINDs.
|
|
|
|
|
* io/io.h: Adjust defines for is_internal_unit and
|
|
|
|
|
is_char4_unit. (gfc_unit): Add internal unit data to structure.
|
|
|
|
|
(get_internal_unit): Change declaration to set_internal_unit.
|
|
|
|
|
(free_internal_unit): Change name to stash_internal_unit_number.
|
|
|
|
|
(get_unique_unit_number): Adjust parameter argument.
|
|
|
|
|
Define IOPARM_DT_HAS_UDTIO. (gfc_saved_unit): New structure.
|
|
|
|
|
* io/list_read.c (next_char_internal): Use is_char4_unit.
|
|
|
|
|
* io/open.c (st_open): Adjust call to get_unique_unit_number.
|
|
|
|
|
* io/transfer.c (write_block): Use is_char4_unit.
|
|
|
|
|
(data_transfer_init): Update check for unit numbers.
|
|
|
|
|
(st_read_done): Free the various allocated memories used for the
|
|
|
|
|
internal units and stash the negative unit number and pointer to unit
|
|
|
|
|
structure to allow reuse. (st_write_done): Likewise stash the freed
|
|
|
|
|
unit.
|
|
|
|
|
* io/unit.c: Create a fixed size buffer of 16 gfc_saved_unit's to use
|
|
|
|
|
as a stack to save newunit unit numbers and unit structure for reuse.
|
|
|
|
|
(get_external_unit): Change name to get_gfc_unit to better
|
|
|
|
|
reflect what it does. (find_unit): Change call to get_gfc_unit.
|
|
|
|
|
(find_or_create_unit): Likewise. (get_internal_unit): Change
|
|
|
|
|
name to set_internal_unit. Move internal unit from the dtp
|
|
|
|
|
structure to the gfc_unit structure so that it can be passed to
|
|
|
|
|
child I/O statements through the UNIT.
|
|
|
|
|
(free_internal_unit): Change name to stash_internal_unit_number.
|
|
|
|
|
Push the common.unit number onto the newunit stack, saving it
|
|
|
|
|
for possible reuse later. (get_unit): Set the internal unit
|
|
|
|
|
KIND. Use get_unique_unit_number to get a negative unit number
|
|
|
|
|
for the internal unit. Use get_gfc_unit to get the unit structure
|
|
|
|
|
and use set_internal_unit to initialize it.
|
|
|
|
|
(init_units): Initialize the newunit stack.
|
|
|
|
|
(get_unique_unit_number): Check the stack for an available unit
|
|
|
|
|
number and use it. If none there get the next most negative
|
|
|
|
|
number. (close_units): Free any unit structures pointed to from the save
|
|
|
|
|
stack.
|
|
|
|
|
|
2016-09-21 12:07:06 +02:00
|
|
|
|
2016-09-21 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* intrinsics/random.c (getosrandom): Use rand_s() on
|
|
|
|
|
MinGW-w64. Fix bounds overflow in fallback code.
|
|
|
|
|
|
2016-09-19 15:45:40 +02:00
|
|
|
|
2016-09-19 Andre Vehreschild <vehre@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* caf/libcaf.h: Add caf_reference_type.
|
|
|
|
|
* caf/mpi.c: Adapted signature of caf_register().
|
|
|
|
|
* caf/single.c (struct caf_single_token): Added to keep the pointer
|
|
|
|
|
to the memory registered and array descriptor.
|
|
|
|
|
(caf_internal_error): Added convenience interface.
|
|
|
|
|
(_gfortran_caf_register): Adapted to work with caf_single_token and
|
|
|
|
|
return memory in the array descriptor.
|
|
|
|
|
(_gfortran_caf_deregister): Same.
|
|
|
|
|
(assign_char1_from_char4): Fixed style.
|
|
|
|
|
(convert_type): Fixed incorrect conversion.
|
|
|
|
|
(_gfortran_caf_get): Adapted to work with caf_single_token.
|
|
|
|
|
(_gfortran_caf_send): Same.
|
|
|
|
|
(_gfortran_caf_sendget): Same.
|
|
|
|
|
(copy_data): Added to stop repeating it in all _by_ref functions.
|
|
|
|
|
(get_for_ref): Recursive getting of coarray data using a chain of
|
|
|
|
|
references.
|
|
|
|
|
(_gfortran_caf_get_by_ref): Driver for computing the memory needed for
|
|
|
|
|
the get and checking properties of the operation.
|
|
|
|
|
(send_by_ref): Same as get_for_ref but for sending data.
|
|
|
|
|
(_gfortran_caf_send_by_ref): Same like caf_get_by_ref but for sending.
|
|
|
|
|
(_gfortran_caf_sendget_by_ref): Uses get_by_ref and send_by_ref to
|
|
|
|
|
implement sendget for reference chains.
|
|
|
|
|
(_gfortran_caf_atomic_define): Adapted to work with caf_single_token.
|
|
|
|
|
(_gfortran_caf_atomic_ref): Likewise.
|
|
|
|
|
(_gfortran_caf_atomic_cas): Likewise.
|
|
|
|
|
(_gfortran_caf_atomic_op): Likewise.
|
|
|
|
|
(_gfortran_caf_event_post): Likewise.
|
|
|
|
|
(_gfortran_caf_event_wait): Likewise.
|
|
|
|
|
(_gfortran_caf_event_query): Likewise.
|
|
|
|
|
(_gfortran_caf_lock): Likewise.
|
|
|
|
|
(_gfortran_caf_unlock): Likewise.
|
|
|
|
|
|
2016-09-09 19:57:11 +02:00
|
|
|
|
2016-09-09 Steven G. Kargl <kargl@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR fortran/77507
|
|
|
|
|
* ieee/ieee_arithmetic.F90 (IEEE_VALUE_4,IEEE_VALUE_8,IEEE_VALULE_10,
|
|
|
|
|
IEEE_VALUE_16): Use correct keyword.
|
|
|
|
|
|
2016-09-07 01:22:36 +02:00
|
|
|
|
2016-09-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
2016-09-07 01:22:26 +02:00
|
|
|
|
|
|
|
|
|
PR libgfortran/77393
|
|
|
|
|
* io/write_float.def (build_float_string): Recognize when the
|
|
|
|
|
result will not fit in the user provided, star fill, and exit
|
|
|
|
|
early.
|
|
|
|
|
|
2016-08-31 19:45:26 +02:00
|
|
|
|
2016-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/77393
|
|
|
|
|
* io/write.c (kind_from_size): New function to calculate required buffer
|
|
|
|
|
size based on kind type. (select_buffer, select_string): Use new
|
|
|
|
|
function. (write_float_0, write_real, write_real_g0, write_complex):
|
|
|
|
|
Adjust calls to pass parameters needed by new function.
|
|
|
|
|
|
[multiple changes]
2016-08-31 Paul Thomas <pault@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/48298
* decl.c (access_attr_decl): Include case INTERFACE_DTIO as
appropriate.
* gfortran.h : Add INTRINSIC_FORMATTED and
INTRINSIC_UNFORMATTED to gfc_intrinsic_op. Add INTERFACE_DTIO
to interface type. Add new enum 'dtio_codes'. Add bitfield
'has_dtio_procs' to symbol_attr. Add prototypes
'gfc_check_dtio_interfaces' and 'gfc_find_specific_dtio_proc'.
* interface.c (dtio_op): New function.
(gfc_match_generic_spec): Match generic DTIO interfaces.
(gfc_match_interface): Treat DTIO interfaces in the same way as
(gfc_current_interface_head): Add INTERFACE_DTIO appropriately.
(check_dtio_arg_TKR_intent): New function.
(check_dtio_interface1): New function.
(gfc_check_dtio_interfaces): New function.
(gfc_find_specific_dtio_proc): New function.
* io.c : Add FMT_DT to format_token.
(format_lex): Handle DTIO formatting.
* match.c (gfc_op2string): Add DTIO operators.
* resolve.c (derived_inaccessible): Ignore pointer components
to enclosing derived type.
(resolve_transfer): Resolve transfers that involve DTIO.
procedures. Find the specific subroutine for the transfer and
use its existence to over-ride some of the constraints on
derived types. If the transfer is recursive, require that the
subroutine be so qualified.
(dtio_procs_present): New function.
(resolve_fl_namelist): Remove inhibition of polymorphic objects
in namelists if DTIO read and write subroutines exist. Likewise
for derived types.
(resolve_types): Invoke 'gfc_verify_dtio_procedures'.
* symbol.c : Set 'dtio_procs' using 'minit'.
* trans-decl.c (gfc_finish_var_decl): If a derived-type/class
object is associated with DTIO procedures, make it TREE_STATIC.
* trans-expr.c (gfc_get_vptr_from_expr): If the expression
drills down to a PARM_DECL, extract the vptr correctly.
(gfc_conv_derived_to_class): Check 'info' in the test for
'useflags'. If the se expression exists and is a pointer, use
it as the class _data.
* trans-io.c : Add IOCALL_X_DERIVED to iocall and the function
prototype. Likewise for IOCALL_SET_NML_DTIO_VAL.
(set_parameter_tree): Renamed from 'set_parameter_const', now
returns void and has new tree argument. Calls modified to match
new interface.
(transfer_namelist_element): Transfer DTIO procedure pointer
and vpointer using the new function IOCALL_SET_NML_DTIO_VAL.
(get_dtio_proc): New function.
(transfer_expr): Add new argument for the vptr field of class
objects. Add the code to call the specific DTIO proc, convert
derived types to class and call IOCALL_X_DERIVED.
(trans_transfer): Add BT_CLASS to structures for treatment by
the scalarizer. Obtain the vptr for the dynamic type, both for
scalar and array transfer.
2016-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR libgfortran/48298
* gfortran.map : Flag _st_set_nml_dtio_var and
_gfortran_transfer_derived.
* io/format.c (format_lex): Detect DTIO formatting.
(parse_format_list): Parse the DTIO format.
(next_format): Include FMT_DT.
* io/format.h : Likewise. Add structure 'udf' to structure
'fnode' to carry the IOTYPE string and the 'vlist'.
* io/io.h : Add prototypes for the two types of DTIO subroutine
and a typedef for gfc_class. Also, add to 'namelist_type'
fields for the pointer to the DTIO procedure and the vtable.
Add fields to struct st_parameter_dt for pointers to the two
types of DTIO subroutine. Add to gfc_unit DTIO specific fields.
(internal_proto): Add prototype for 'read_user_defined' and
'write_user_defined'.
* io/list_read.c (check_buffers): Use the 'current_unit' field.
(unget_char): Likewise.
(eat_spaces): Likewise.
(list_formatted_read_scalar): For case BT_CLASS, call the DTIO
procedure.
(nml_get_obj_data): Likewise when DTIO procedure is present,.
* io/transfer.c : Export prototypes for 'transfer_derived' and
'transfer_derived_write'.
(unformatted_read): For case BT_CLASS, call the DTIO procedure.
(unformatted_write): Likewise.
(formatted_transfer_scalar_read): Likewise.
(formatted_transfer_scalar_write: Likewise.
(transfer_derived): New function.
(data_transfer_init): Set last_char if no child_dtio.
(finalize_transfer): Return if child_dtio set.
(st_write_done): Add condition for child_dtio not set.
Add extra arguments for st_set_nml_var prototype.
(set_nml_var): New function that contains the contents of the
old version of st_set_nml_var. Also sets the 'dtio_sub' and
'vtable' fields of the 'nml' structure.
(st_set_nml_var): Now just calls set_nml_var with 'dtio_sub'
and 'vtable' NULL.
(st_set_nml_dtio_var): New function that calls set_nml_var.
* io/unit.c (get_external_unit): If the found unit child_dtio
is non zero, don't do any mutex locking/unlocking. Just
return the unit.
* io/unix.c (tempfile_open): Revert to C style comment.
* io/write.c (list_formatted_write_scalar): Do the DTIO call.
(nml_write_obj): Add BT_CLASS and do the DTIO call.
2016-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/48298
* gfortran.dg/dtio_1.f90: New test.
* gfortran.dg/dtio_2.f90: New test.
* gfortran.dg/dtio_3.f90: New test.
* gfortran.dg/dtio_4.f90: New test.
* gfortran.dg/dtio_5.f90: New test.
* gfortran.dg/dtio_6.f90: New test.
* gfortran.dg/dtio_7.f90: New test.
* gfortran.dg/dtio_8.f90: New test.
* gfortran.dg/dtio_9.f90: New test.
* gfortran.dg/dtio_10.f90: New test.
From-SVN: r239880
2016-08-31 07:36:22 +02:00
|
|
|
|
2016-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
Paul Thomas <pault@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/48298
|
|
|
|
|
* gfortran.map : Flag _st_set_nml_dtio_var and
|
|
|
|
|
_gfortran_transfer_derived.
|
|
|
|
|
* io/format.c (format_lex): Detect DTIO formatting.
|
|
|
|
|
(parse_format_list): Parse the DTIO format.
|
|
|
|
|
(next_format): Include FMT_DT.
|
|
|
|
|
* io/format.h : Likewise. Add structure 'udf' to structure
|
|
|
|
|
'fnode' to carry the IOTYPE string and the 'vlist'.
|
|
|
|
|
* io/io.h : Add prototypes for the two types of DTIO subroutine
|
|
|
|
|
and a typedef for gfc_class. Also, add to 'namelist_type'
|
|
|
|
|
fields for the pointer to the DTIO procedure and the vtable.
|
|
|
|
|
Add fields to struct st_parameter_dt for pointers to the two
|
|
|
|
|
types of DTIO subroutine. Add to gfc_unit DTIO specific fields.
|
|
|
|
|
(internal_proto): Add prototype for 'read_user_defined' and
|
|
|
|
|
'write_user_defined'.
|
|
|
|
|
* io/list_read.c (check_buffers): Use the 'current_unit' field.
|
|
|
|
|
(unget_char): Likewise.
|
|
|
|
|
(eat_spaces): Likewise.
|
|
|
|
|
(list_formatted_read_scalar): For case BT_CLASS, call the DTIO
|
|
|
|
|
procedure.
|
|
|
|
|
(nml_get_obj_data): Likewise when DTIO procedure is present,.
|
|
|
|
|
* io/transfer.c : Export prototypes for 'transfer_derived' and
|
|
|
|
|
'transfer_derived_write'.
|
|
|
|
|
(unformatted_read): For case BT_CLASS, call the DTIO procedure.
|
|
|
|
|
(unformatted_write): Likewise.
|
|
|
|
|
(formatted_transfer_scalar_read): Likewise.
|
|
|
|
|
(formatted_transfer_scalar_write: Likewise.
|
|
|
|
|
(transfer_derived): New function.
|
|
|
|
|
(data_transfer_init): Set last_char if no child_dtio.
|
|
|
|
|
(finalize_transfer): Return if child_dtio set.
|
|
|
|
|
(st_write_done): Add condition for child_dtio not set.
|
|
|
|
|
Add extra arguments for st_set_nml_var prototype.
|
|
|
|
|
(set_nml_var): New function that contains the contents of the
|
|
|
|
|
old version of st_set_nml_var. Also sets the 'dtio_sub' and
|
|
|
|
|
'vtable' fields of the 'nml' structure.
|
|
|
|
|
(st_set_nml_var): Now just calls set_nml_var with 'dtio_sub'
|
|
|
|
|
and 'vtable' NULL.
|
|
|
|
|
(st_set_nml_dtio_var): New function that calls set_nml_var.
|
|
|
|
|
* io/unit.c (get_external_unit): If the found unit child_dtio
|
|
|
|
|
is non zero, don't do any mutex locking/unlocking. Just
|
|
|
|
|
return the unit.
|
|
|
|
|
* io/unix.c (tempfile_open): Revert to C style comment.
|
|
|
|
|
* io/write.c (list_formatted_write_scalar): Do the DTIO call.
|
|
|
|
|
(nml_write_obj): Add BT_CLASS and do the DTIO call.
|
|
|
|
|
|
2016-08-29 21:09:57 +02:00
|
|
|
|
2016-08-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
|
|
|
|
|
|
* configure.ac (nvptx-*): Hardwire newlib.
|
|
|
|
|
* configure: Rebuilt.
|
|
|
|
|
|
2016-08-19 16:19:51 +02:00
|
|
|
|
2016-08-19 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
2016-08-29 21:09:57 +02:00
|
|
|
|
* intrinsics/random.c (xor_keys): New array with "secret" keys.
|
|
|
|
|
(scramble_seed): XOR given seed with xor_keys array rather than
|
|
|
|
|
shuffling bytes.
|
|
|
|
|
(unscramble_seed): Remove function.
|
|
|
|
|
(random_seed_i4): Use new scramble_seed.
|
|
|
|
|
(random_seed_i8): Likewise.
|
2016-08-19 16:19:51 +02:00
|
|
|
|
|
|
|
|
|
2016-08-19 Janne Blomqvist <jb@gcc.gnu.org>
|
2016-08-19 16:12:32 +02:00
|
|
|
|
|
2016-08-29 21:09:57 +02:00
|
|
|
|
* intrinsics/random.c (master_init): New variable.
|
|
|
|
|
(init_rand_state): Move below getosrandom (), maybe initialize
|
|
|
|
|
master_state.
|
|
|
|
|
(random_seed_i4): If called with no arguments, set master_init to
|
|
|
|
|
false, and reinitialize. If called with PUT=, set master_init to
|
|
|
|
|
true.
|
|
|
|
|
(random_seed_i8): Likewise.
|
2016-08-19 16:12:32 +02:00
|
|
|
|
|
2016-08-11 17:26:07 +02:00
|
|
|
|
2016-08-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
* intrinsics/random.c: Include <stdlib.h>.
|
|
|
|
|
|
2016-08-11 10:58:55 +02:00
|
|
|
|
2016-08-11 Janne Blomqvist <jb@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* intrinsics/random.c: Replace KISS with xorshift1024* using
|
|
|
|
|
per-thread state.
|
|
|
|
|
* runtime/main.c (init): Don't call random_seed_i4.
|
|
|
|
|
|
2016-07-22 11:58:50 +02:00
|
|
|
|
2016-07-22 Andre Vehreschild <vehre@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
* caf/libcaf.h: Add parameter stat to caf_get() and
|
|
|
|
|
caf_send()'s function prototypes.
|
|
|
|
|
* caf/single.c (_gfortran_caf_get): Implement reporting
|
|
|
|
|
error using stat instead of abort().
|
|
|
|
|
(_gfortran_caf_send): Same.
|
|
|
|
|
(_gfortran_caf_sendget): Use NULL for stat when calling
|
|
|
|
|
caf_send().
|
|
|
|
|
|
re PR libfortran/48852 (Invalid spaces in list-directed output of complex constants)
2016-06-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48852
* io/write.c: Cleaned up whitespace.
(write_d, write_e, write_f, write_es, write_en): Use new helper function
write_float_0. (write_float_0): New helper function.
(get_precision, select_buffer, select_string, write_float_string): New
helper functions used in remaining float writing functions. Helper function
write_float_string now contains code for writing to kind=4 character
internal units.
(write_real): Modified to establish working buffers at this level and to
use new helper functions.
(write_real_g0): Likewise modified.
(write_complex): Likewise modified. Gets both float strings before
output so that final lengths can be determined which allows right
justifying the complex number with no intervening spaces.
* io/write_float.def (build_float_string): Renamed from previosly
output_float, modified to use buffers passed in from higher functions,
builds a null terminated string of the floating point value. Character
kind=4 code eliminated.
(write_infnan): Likewise modified to use incoming buffers and eliminate
kind=4 related code.
(OUTPUT_FLOAT_FMT_G): Deleted, functionality moved into FORMAT_FLOAT.
(FORMAT_FLOAT): Renamed macro from WRITE_FLOAT. Use build_float_string.
(get_float_string): Renamed from write_float, uses FORMAT_FLOAT macro.
Buffer allocation removed, now at higher level.
PR libgfortran/48852
* gfortran.dg/char4_iunit_1.f03: Update test.
* gfortran.dg/f2003_io_5.f03: Update test.
* gfortran.dg/real_const_3.f90: Update test.
From-SVN: r237735
2016-06-23 17:58:05 +02:00
|
|
|
|
2016-06-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/48852
|
|
|
|
|
* io/write.c: Cleaned up whitespace.
|
2016-08-29 21:09:57 +02:00
|
|
|
|
(write_d, write_e, write_f, write_es, write_en): Use new helper
|
|
|
|
|
function write_float_0.
|
|
|
|
|
(write_float_0): New helper function.
|
re PR libfortran/48852 (Invalid spaces in list-directed output of complex constants)
2016-06-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48852
* io/write.c: Cleaned up whitespace.
(write_d, write_e, write_f, write_es, write_en): Use new helper function
write_float_0. (write_float_0): New helper function.
(get_precision, select_buffer, select_string, write_float_string): New
helper functions used in remaining float writing functions. Helper function
write_float_string now contains code for writing to kind=4 character
internal units.
(write_real): Modified to establish working buffers at this level and to
use new helper functions.
(write_real_g0): Likewise modified.
(write_complex): Likewise modified. Gets both float strings before
output so that final lengths can be determined which allows right
justifying the complex number with no intervening spaces.
* io/write_float.def (build_float_string): Renamed from previosly
output_float, modified to use buffers passed in from higher functions,
builds a null terminated string of the floating point value. Character
kind=4 code eliminated.
(write_infnan): Likewise modified to use incoming buffers and eliminate
kind=4 related code.
(OUTPUT_FLOAT_FMT_G): Deleted, functionality moved into FORMAT_FLOAT.
(FORMAT_FLOAT): Renamed macro from WRITE_FLOAT. Use build_float_string.
(get_float_string): Renamed from write_float, uses FORMAT_FLOAT macro.
Buffer allocation removed, now at higher level.
PR libgfortran/48852
* gfortran.dg/char4_iunit_1.f03: Update test.
* gfortran.dg/f2003_io_5.f03: Update test.
* gfortran.dg/real_const_3.f90: Update test.
From-SVN: r237735
2016-06-23 17:58:05 +02:00
|
|
|
|
(get_precision, select_buffer, select_string, write_float_string): New
|
2016-08-29 21:09:57 +02:00
|
|
|
|
helper functions used in remaining float writing functions.
|
|
|
|
|
Helper function write_float_string now contains code for writing
|
|
|
|
|
to kind=4 character internal units.
|
|
|
|
|
(write_real): Modified to establish working buffers at this level
|
|
|
|
|
and to use new helper functions.
|
re PR libfortran/48852 (Invalid spaces in list-directed output of complex constants)
2016-06-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48852
* io/write.c: Cleaned up whitespace.
(write_d, write_e, write_f, write_es, write_en): Use new helper function
write_float_0. (write_float_0): New helper function.
(get_precision, select_buffer, select_string, write_float_string): New
helper functions used in remaining float writing functions. Helper function
write_float_string now contains code for writing to kind=4 character
internal units.
(write_real): Modified to establish working buffers at this level and to
use new helper functions.
(write_real_g0): Likewise modified.
(write_complex): Likewise modified. Gets both float strings before
output so that final lengths can be determined which allows right
justifying the complex number with no intervening spaces.
* io/write_float.def (build_float_string): Renamed from previosly
output_float, modified to use buffers passed in from higher functions,
builds a null terminated string of the floating point value. Character
kind=4 code eliminated.
(write_infnan): Likewise modified to use incoming buffers and eliminate
kind=4 related code.
(OUTPUT_FLOAT_FMT_G): Deleted, functionality moved into FORMAT_FLOAT.
(FORMAT_FLOAT): Renamed macro from WRITE_FLOAT. Use build_float_string.
(get_float_string): Renamed from write_float, uses FORMAT_FLOAT macro.
Buffer allocation removed, now at higher level.
PR libgfortran/48852
* gfortran.dg/char4_iunit_1.f03: Update test.
* gfortran.dg/f2003_io_5.f03: Update test.
* gfortran.dg/real_const_3.f90: Update test.
From-SVN: r237735
2016-06-23 17:58:05 +02:00
|
|
|
|
(write_real_g0): Likewise modified.
|
|
|
|
|
(write_complex): Likewise modified. Gets both float strings before
|
|
|
|
|
output so that final lengths can be determined which allows right
|
|
|
|
|
justifying the complex number with no intervening spaces.
|
|
|
|
|
* io/write_float.def (build_float_string): Renamed from previosly
|
|
|
|
|
output_float, modified to use buffers passed in from higher functions,
|
|
|
|
|
builds a null terminated string of the floating point value. Character
|
|
|
|
|
kind=4 code eliminated.
|
|
|
|
|
(write_infnan): Likewise modified to use incoming buffers and eliminate
|
|
|
|
|
kind=4 related code.
|
|
|
|
|
(OUTPUT_FLOAT_FMT_G): Deleted, functionality moved into FORMAT_FLOAT.
|
|
|
|
|
(FORMAT_FLOAT): Renamed macro from WRITE_FLOAT. Use build_float_string.
|
|
|
|
|
(get_float_string): Renamed from write_float, uses FORMAT_FLOAT macro.
|
|
|
|
|
Buffer allocation removed, now at higher level.
|
|
|
|
|
|
2016-05-24 08:11:21 +02:00
|
|
|
|
2016-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
2016-05-24 08:16:00 +02:00
|
|
|
|
PR libgfortran/71123
|
2016-05-24 08:11:21 +02:00
|
|
|
|
* io/list_read (eat_spaces): Eat '\r' as part of spaces.
|
|
|
|
|
|
2016-04-19 21:24:28 +02:00
|
|
|
|
2016-04-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/70684
|
|
|
|
|
* io/list_read (check_buffers): Add '\r' to check for end of line.
|
|
|
|
|
|
2016-03-30 22:47:45 +02:00
|
|
|
|
2016-03-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
Dominique d'Humieres <dominiq@lps.ens.fr>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/70235
|
|
|
|
|
* io/write_float.def: Fix PF format for negative values of the scale
|
|
|
|
|
factor.
|
|
|
|
|
|
2016-03-28 11:05:01 +02:00
|
|
|
|
2016-03-28 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* caf/libcaf.h: caf_stop_numeric and caf_stop_str prototype.
|
|
|
|
|
* caf/single.c: _gfortran_caf_stop_numeric and
|
|
|
|
|
_gfortran_caf_stop_str implementation.
|
|
|
|
|
|
2016-02-23 19:38:31 +01:00
|
|
|
|
2016-02-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/69456
|
|
|
|
|
* io/list_read.c (read_real): If digit is missing from exponent issue
|
|
|
|
|
an error. (parse_real): Likewise and adjusted error message to clarify
|
|
|
|
|
it is part of a complex number.
|
|
|
|
|
(nml_read_obj): Bump item count and add comment that this is used to
|
|
|
|
|
identify which item in a namelist read has a problem.
|
|
|
|
|
|
2016-02-17 17:48:57 +01:00
|
|
|
|
2016-02-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/69651
|
|
|
|
|
* io/list_read.c (push_char4): Fix the pointer usage for xrealloc.
|
|
|
|
|
|
2016-02-15 23:31:13 +01:00
|
|
|
|
2016-02-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/69651
|
|
|
|
|
* io/list_read.c: Entire file trailing spaces removed.
|
|
|
|
|
(CASE_SEPARATORS): Remove '!'.
|
|
|
|
|
(is_separator): Add namelist mode as condition with '!'.
|
|
|
|
|
(push_char): Remove un-needed memset. (push_char4): Likewise and remove
|
|
|
|
|
'new' pointer. (eat_separator): Remove un-needed use of notify_std.
|
|
|
|
|
(read_logical): If '!' bang encountered when not in namelist mode got
|
|
|
|
|
bad_logical to give an error. (read_integer): Likewise reject '!'.
|
|
|
|
|
(read_character): Remove condition testing c = '!' which is now inside
|
|
|
|
|
the is_separator macro. (parse_real): Reject '!' unless in namelist mode.
|
|
|
|
|
(read_complex): Reject '!' unless in namelist mode. (read_real): Likewise
|
[multiple changes]
2016-08-31 Paul Thomas <pault@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/48298
* decl.c (access_attr_decl): Include case INTERFACE_DTIO as
appropriate.
* gfortran.h : Add INTRINSIC_FORMATTED and
INTRINSIC_UNFORMATTED to gfc_intrinsic_op. Add INTERFACE_DTIO
to interface type. Add new enum 'dtio_codes'. Add bitfield
'has_dtio_procs' to symbol_attr. Add prototypes
'gfc_check_dtio_interfaces' and 'gfc_find_specific_dtio_proc'.
* interface.c (dtio_op): New function.
(gfc_match_generic_spec): Match generic DTIO interfaces.
(gfc_match_interface): Treat DTIO interfaces in the same way as
(gfc_current_interface_head): Add INTERFACE_DTIO appropriately.
(check_dtio_arg_TKR_intent): New function.
(check_dtio_interface1): New function.
(gfc_check_dtio_interfaces): New function.
(gfc_find_specific_dtio_proc): New function.
* io.c : Add FMT_DT to format_token.
(format_lex): Handle DTIO formatting.
* match.c (gfc_op2string): Add DTIO operators.
* resolve.c (derived_inaccessible): Ignore pointer components
to enclosing derived type.
(resolve_transfer): Resolve transfers that involve DTIO.
procedures. Find the specific subroutine for the transfer and
use its existence to over-ride some of the constraints on
derived types. If the transfer is recursive, require that the
subroutine be so qualified.
(dtio_procs_present): New function.
(resolve_fl_namelist): Remove inhibition of polymorphic objects
in namelists if DTIO read and write subroutines exist. Likewise
for derived types.
(resolve_types): Invoke 'gfc_verify_dtio_procedures'.
* symbol.c : Set 'dtio_procs' using 'minit'.
* trans-decl.c (gfc_finish_var_decl): If a derived-type/class
object is associated with DTIO procedures, make it TREE_STATIC.
* trans-expr.c (gfc_get_vptr_from_expr): If the expression
drills down to a PARM_DECL, extract the vptr correctly.
(gfc_conv_derived_to_class): Check 'info' in the test for
'useflags'. If the se expression exists and is a pointer, use
it as the class _data.
* trans-io.c : Add IOCALL_X_DERIVED to iocall and the function
prototype. Likewise for IOCALL_SET_NML_DTIO_VAL.
(set_parameter_tree): Renamed from 'set_parameter_const', now
returns void and has new tree argument. Calls modified to match
new interface.
(transfer_namelist_element): Transfer DTIO procedure pointer
and vpointer using the new function IOCALL_SET_NML_DTIO_VAL.
(get_dtio_proc): New function.
(transfer_expr): Add new argument for the vptr field of class
objects. Add the code to call the specific DTIO proc, convert
derived types to class and call IOCALL_X_DERIVED.
(trans_transfer): Add BT_CLASS to structures for treatment by
the scalarizer. Obtain the vptr for the dynamic type, both for
scalar and array transfer.
2016-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR libgfortran/48298
* gfortran.map : Flag _st_set_nml_dtio_var and
_gfortran_transfer_derived.
* io/format.c (format_lex): Detect DTIO formatting.
(parse_format_list): Parse the DTIO format.
(next_format): Include FMT_DT.
* io/format.h : Likewise. Add structure 'udf' to structure
'fnode' to carry the IOTYPE string and the 'vlist'.
* io/io.h : Add prototypes for the two types of DTIO subroutine
and a typedef for gfc_class. Also, add to 'namelist_type'
fields for the pointer to the DTIO procedure and the vtable.
Add fields to struct st_parameter_dt for pointers to the two
types of DTIO subroutine. Add to gfc_unit DTIO specific fields.
(internal_proto): Add prototype for 'read_user_defined' and
'write_user_defined'.
* io/list_read.c (check_buffers): Use the 'current_unit' field.
(unget_char): Likewise.
(eat_spaces): Likewise.
(list_formatted_read_scalar): For case BT_CLASS, call the DTIO
procedure.
(nml_get_obj_data): Likewise when DTIO procedure is present,.
* io/transfer.c : Export prototypes for 'transfer_derived' and
'transfer_derived_write'.
(unformatted_read): For case BT_CLASS, call the DTIO procedure.
(unformatted_write): Likewise.
(formatted_transfer_scalar_read): Likewise.
(formatted_transfer_scalar_write: Likewise.
(transfer_derived): New function.
(data_transfer_init): Set last_char if no child_dtio.
(finalize_transfer): Return if child_dtio set.
(st_write_done): Add condition for child_dtio not set.
Add extra arguments for st_set_nml_var prototype.
(set_nml_var): New function that contains the contents of the
old version of st_set_nml_var. Also sets the 'dtio_sub' and
'vtable' fields of the 'nml' structure.
(st_set_nml_var): Now just calls set_nml_var with 'dtio_sub'
and 'vtable' NULL.
(st_set_nml_dtio_var): New function that calls set_nml_var.
* io/unit.c (get_external_unit): If the found unit child_dtio
is non zero, don't do any mutex locking/unlocking. Just
return the unit.
* io/unix.c (tempfile_open): Revert to C style comment.
* io/write.c (list_formatted_write_scalar): Do the DTIO call.
(nml_write_obj): Add BT_CLASS and do the DTIO call.
2016-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/48298
* gfortran.dg/dtio_1.f90: New test.
* gfortran.dg/dtio_2.f90: New test.
* gfortran.dg/dtio_3.f90: New test.
* gfortran.dg/dtio_4.f90: New test.
* gfortran.dg/dtio_5.f90: New test.
* gfortran.dg/dtio_6.f90: New test.
* gfortran.dg/dtio_7.f90: New test.
* gfortran.dg/dtio_8.f90: New test.
* gfortran.dg/dtio_9.f90: New test.
* gfortran.dg/dtio_10.f90: New test.
From-SVN: r239880
2016-08-31 07:36:22 +02:00
|
|
|
|
reject '!'.
|
2016-02-15 23:31:13 +01:00
|
|
|
|
|
2016-02-12 20:52:13 +01:00
|
|
|
|
2016-02-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libgfortran/69668
|
|
|
|
|
* io/list_read.c (read_character): Remove code related to DELIM_NONE.
|
|
|
|
|
|
2016-01-24 00:32:13 +01:00
|
|
|
|
2016-01-23 John David Anglin <danglin@gcc.gnu.org>
|
|
|
|
|
|
|
|
|
|
PR libfortran/68744
|
|
|
|
|
* runtime/backtrace.c: Include gthr.h.
|
|
|
|
|
(show_backtrace): Use __gthread_active_p() to determine whether threads
|
|
|
|
|
are active. Return if lbstate is NULL.
|
|
|
|
|
|
2016-01-15 21:20:58 +01:00
|
|
|
|
2016-01-15 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
|
|
|
|
|
|
* intrinsics/execute_command_line.c (set_cmdstat): Use "%s", msg
|
|
|
|
|
instead of msg to avoid -Wformat-security warning.
|
|
|
|
|
|
2016-01-04 15:30:50 +01:00
|
|
|
|
2016-01-04 Jakub Jelinek <jakub@redhat.com>
|
2015-01-05 13:33:28 +01:00
|
|
|
|
|
|
|
|
|
Update copyright years.
|
2016-01-04 15:30:50 +01:00
|
|
|
|
|
|
|
|
|
Copyright (C) 2016 Free Software Foundation, Inc.
|
2010-01-04 09:59:59 +01:00
|
|
|
|
|
|
|
|
|
Copying and distribution of this file, with or without modification,
|
|
|
|
|
are permitted in any medium without royalty provided the copyright
|
|
|
|
|
notice and this notice are preserved.
|