Skip to content
Snippets Groups Projects
  1. Nov 16, 2016
    • Szabolcs Nagy's avatar
      [PR libgfortran/78314] Fix ieee_support_halting · 0af30954
      Szabolcs Nagy authored
      ieee_support_halting only checked the availability of status
      flags, not trapping support.  On some targets the later can
      only be checked at runtime: feenableexcept reports if
      enabling traps failed.
      
      So check trapping support by enabling/disabling it.
      
      Updated the test that enabled trapping to check if it is
      supported.
      
      gcc/testsuite/
      
      	PR libgfortran/78314
      	* gfortran.dg/ieee/ieee_6.f90: Use ieee_support_halting.
      
      libgfortran/
      
      	PR libgfortran/78314
      	* config/fpu-glibc.h (support_fpu_trap): Use feenableexcept.
      
      From-SVN: r242505
      0af30954
  2. Nov 15, 2016
    • Jerry DeLisle's avatar
      [multiple changes] · 5d70ab07
      Jerry DeLisle authored
      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  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR libgfortran/51119
      	* gfortran.dg/matmul_12.f90: New test case.
      
      From-SVN: r242462
      5d70ab07
    • Matthias Klose's avatar
      config-ml.in: Remove references to GCJ. · 84c1b9d3
      Matthias Klose authored
      <toplevel>
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	* config-ml.in: Remove references to GCJ.
      	* configure.ac: Likewise.
      	* configure: Regenerate.
      
      config/
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	multi.m4: Don't set GCJ.
      
      gcc/
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	* doc/install.texi: Remove references to gcj/libjava.
      	* doc/invoke.texi: Likewise.
      
      */ (where necessary)
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	* configure: Regenerate.
      
      From-SVN: r242433
      84c1b9d3
  3. Nov 03, 2016
    • Fritz Reese's avatar
      Default missing exponents to 0 with -fdec. · 6869e9c6
      Fritz Reese authored
      	gcc/fortran/
      	* gfortran.texi: Document.
      	* gfortran.h (gfc_dt): New field default_exp.
      	* primary.c (match_real_constant): Default exponent with -fdec.
      	* io.c (match_io): Set dt.default_exp with -fdec.
      	* ioparm.def (IOPARM_dt_default_exp): New.
      	* trans-io.c (build_dt): Set IOPARM_dt_default_exp with -fdec.
      
      	libgfortran/io/
      	* io.h (IOPARM_DT_DEFAULT_EXP): New flag bit.
      	* list_read.c (parse_real, read_real): Allow omission of exponent with
      	IOPARM_DT_DEFAULT_EXP.
      	* read.c (read_f): Ditto.
      
      	gcc/testsuite/gfortran.dg/
      	* dec_exp_1.f90, dec_exp_2.f90, dec_exp_3.f90: New testcases.
      
      From-SVN: r241828
      6869e9c6
  4. Oct 31, 2016
    • Jerry DeLisle's avatar
      re PR fortran/54679 (Erroneous "Expected P edit descriptor" in conjunction with L descriptor) · 120a4c45
      Jerry DeLisle authored
      2016-10-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/54679
      	* io.c (check_format): Adjust checks for FMT_L to treat a zero
      	width as an extension, giving warnings or error as appropriate.
      	Improve messages.
      	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.
      	PR fortran/54679
      	* gfortran.dg/fmt_l.f90: Update test.
      	* gfortran.dg/fmt_l0.f90: New test.
      
      From-SVN: r241720
      120a4c45
  5. Oct 30, 2016
  6. Oct 26, 2016
    • Fritz Reese's avatar
      New I/O specifiers CARRIAGECONTROL, READONLY, SHARE with -fdec. · 0ef33d44
      Fritz Reese authored
      	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
      0ef33d44
  7. Oct 24, 2016
    • Jerry DeLisle's avatar
      re PR libfortran/77828 (Linking gfortran-7 compiled program with libgfortran... · 13926b24
      Jerry DeLisle authored
      re PR libfortran/77828 (Linking gfortran-7 compiled program with libgfortran of 5.x allowed but crashes when containing write to string)
      
      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.
      
      	* ioparm.def: Reorder dt parameters to match libgfortran.
      	* libgfortran.h: Swap definitions of GFC_INTERNAL_UNIT and
      	GFC_INTERNAL_UNIT4.
      
      From-SVN: r241497
      13926b24
  8. Oct 21, 2016
  9. Oct 18, 2016
    • Jerry DeLisle's avatar
      re PR fortran/48298 ([F03] User-Defined Derived-Type IO (DTIO)) · c680ada5
      Jerry DeLisle authored
      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.
      	* read.c (read_x): Use has_size and size_used.
      	* transfer.c (read_sf_internal,read_sf,read_block_form,
      	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.
      
      	* gfortran.dg/dtio_17.f90: New test.
      
      From-SVN: r241294
      c680ada5
  10. Oct 16, 2016
    • Janne Blomqvist's avatar
      PR 48587 Newunit allocator, cleanup · 9937c1eb
      Janne Blomqvist authored
      Improve error message, and remove a redundant check, as the same check is
      done a bit earlier due to the PR 48587 patch.
      
      2016-10-16  Janne Blomqvist  <jb@gcc.gnu.org>
      
              PR libfortran/48587
              * io/transfer.c (data_transfer_init): Improve error message,
              remove redundant check.
      
      Regtested on x86_64-pc-linux-gnu.
      
      From-SVN: r241211
      9937c1eb
  11. Oct 15, 2016
    • Janne Blomqvist's avatar
      PR 48587 Newunit allocator · c04d4ede
      Janne Blomqvist authored
      Currently GFortran newer reuses unit numbers allocated with NEWUNIT=,
      instead having a simple counter that is decremented each time such a
      unit is opened.  For a long running program which repeatedly opens
      files with NEWUNIT= and closes them, the counter can wrap around and
      cause an abort.  This patch replaces the counter with an allocator
      that keeps track of which units numbers are allocated, and can reuse
      them once they have been deallocated.  Since operating systems tend to
      limit the number of simultaneous open files for a process to a
      relatively modest number, a relatively simple approach with a linear
      scan through an array suffices.  Though as a small optimization there
      is a low water indicator keeping track of the index for which all unit
      numbers below are already allocated.  This linear scan also ensures
      that we always allocate the smallest available unit number.
      
      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.
      
      testsuite ChangeLog:
      
      2016-10-15  Janne Blomqvist  <jb@gcc.gnu.org>
      
              PR libfortran/48587
              * gfortran.dg/negative_unit2.f90: New testcase.
      
      From-SVN: r241199
      c04d4ede
  12. Oct 09, 2016
    • Janne Blomqvist's avatar
      PR 67585 Handle EINTR · b9233944
      Janne Blomqvist authored
      Many POSIX systems have the bad habit of not restarting interrupted
      syscalls. On these systems it's up to the user to check for an error
      with errno == EINTR and restart manually. This patch does this for
      libgfortran, so that GFortran users don't have to do it.
      
      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.
      
      From-SVN: r240902
      b9233944
  13. Oct 05, 2016
  14. Oct 01, 2016
    • Andre Vehreschild's avatar
      re PR libfortran/77663 (libgfortran/caf/single.c: three minor problems and a lost token) · 0f0565b1
      Andre Vehreschild authored
      gcc/testsuite/ChangeLog:
      
      2016-10-01  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/77663
      	* gfortran.dg/coarray_send_by_ref_1.f08: New test.
      
      libgfortran/ChangeLog:
      
      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.
      
      From-SVN: r240695
      0f0565b1
  15. Sep 28, 2016
  16. Sep 23, 2016
    • Jerry DeLisle's avatar
      re PR fortran/48298 ([F03] User-Defined Derived-Type IO (DTIO)) · 4a8d4422
      Jerry DeLisle authored
      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-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/48298
      	* gfortran.h (gfc_dt): Add *udtio.
      	* ioparm.def: Add bit IOPARM_dt_f2003 to align with library use of bit
      	25. Add IOPARM_dt_dtio bit to common flags.
      	* resolve.c (resolve_transfer): Set dt->udtio to expression.
      	* io.c (gfc_match_inquire): Adjust error message for internal
      	unit KIND.
      	* libgfortran.h: Adjust defines for GFC_INTERNAL_UNIT4,
      	GFC_INTERNAL_UNIT, and GFC_INVALID_UNIT.
      	* trans-io.c (build_dt): Set common_unit to reflect the KIND of
      	the internal unit. Set mask bit for presence of dt->udtio.
      
      2016-09-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/48298
      	* gfortran.dg/negative_unit_check.f90: Update test.
      	* gfortran.dg/dtio_14.f90: New test.
      
      From-SVN: r240456
      4a8d4422
  17. Sep 21, 2016
  18. Sep 19, 2016
    • Andre Vehreschild's avatar
      libcaf.h: Add caf_reference_type. · 3c9f5092
      Andre Vehreschild authored
      libgfortran/ChangeLog:
      
      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.
      
      
      gcc/testsuite/ChangeLog:
      
      2016-09-19  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	* gfortran.dg/coarray/alloc_comp_4.f90: New test.
      	* gfortran.dg/coarray_38.f90:
      	* gfortran.dg/coarray_alloc_comp_1.f08: New test.
      	* gfortran.dg/coarray_alloc_comp_2.f08: New test.
      	* gfortran.dg/coarray_allocate_7.f08: New test.
      	* gfortran.dg/coarray_allocate_8.f08: New test.
      	* gfortran.dg/coarray_allocate_9.f08: New test.
      	* gfortran.dg/coarray_lib_alloc_1.f90: Adapted scan-tree-dumps to expect
      	new caf_register.
      	* gfortran.dg/coarray_lib_alloc_2.f90: Same.
      	* gfortran.dg/coarray_lib_alloc_3.f90: Same.
      	* gfortran.dg/coarray_lib_comm_1.f90: Adapted scan-tree-dumps to expect
      	get_by_refs.
      	* gfortran.dg/coarray_lib_token_3.f90: Same as for coarray_lib_alloc2.
      	* gfortran.dg/coarray_lock_7.f90: Same.
      	* gfortran.dg/coarray_poly_5.f90: Same.
      	* gfortran.dg/coarray_poly_6.f90: Same.
      	* gfortran.dg/coarray_poly_7.f90: Same.
      	* gfortran.dg/coarray_poly_8.f90: Same.
      	* gfortran.dg/coindexed_1.f90: Changed errors expected.
      
      gcc/fortran/ChangeLog:
      
      2016-09-19  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	* expr.c (gfc_check_assign): Added flag to control whether datatype
      	conversion is allowed.
      	* gfortran.h: Added caf-token-tree to gfc_component.  Changed
      	prototypes mostly to add whether datatype conversion is allowed.
      	* gfortran.texi: Added documentation for the caf_reference_t and the
      	caf_*_by_ref function.
      	* primary.c (caf_variable_attr): Similar to gfc_variable_attr but
      	focused on the needs of coarrays.
      	(gfc_caf_attr): Same.
      	* resolve.c (resolve_ordinary_assign): Set the conversion allowed
      	flag when not in a coarray.
      	* trans-array.c (gfc_array_init_size): Moved setting of array
      	descriptor's datatype before the alloc, because caf_register needs it.
      	(gfc_array_allocate): Changed notion of whether an array is a coarray.
      	(gfc_array_deallocate): Same.
      	(gfc_alloc_allocatable_for_assignment): Added setting of coarray's
      	array descriptor datatype before the register.  And using deregister/
      	register to mimmick a realloc for coarrays.
      	* trans-decl.c (gfc_build_builtin_function_decls): Corrected signatures
      	of old caf-functions and added signature definitions of the _by_ref
      	ones.
      	(generate_coarray_sym_init): Adapted to new caf_register signature.
      	* trans-expr.c (gfc_conv_scalar_to_descriptor): Make sure a constant
      	is translated to an lvalue expression before use in an array
      	descriptor.
      	(gfc_get_ultimate_alloc_ptr_comps_caf_token): New function.  Get the
      	last allocatable component's coarray token.
      	(gfc_get_tree_for_caf_expr): For top-level object get the coarray
      	token and check for unsupported features.
      	(gfc_get_caf_token_offset): Getting the offset might procude new
      	statements, which now are stored in the pre and post of the current se.
      	(gfc_caf_get_image_index): For this image return a call to
      	caf_this_image.
      	(expr_may_alias_variables): Check that the result is set for testing
      	its properties.
      	(alloc_scalar_allocatable_for_assignment): Added auto allocation of
      	coarray components.
      	(gfc_trans_assignment_1): Rewrite an assign to a coarray object to
      	be a sendget.
      	* trans-intrinsic.c (conv_caf_vector_subscript_elem): Corrected
      	wrong comment.
      	(compute_component_offset): Compute the correct offset a structure
      	member.
      	(conv_expr_ref_to_caf_ref): Convert to a chain of refs into
      	caf_references.
      	(gfc_conv_intrinsic_caf_get): Call caf_get_by_ref instead of caf_get.
      	(conv_caf_send): Call caf_*_by_ref for coarrays that need
      	reallocation.
      	(gfc_conv_intrinsic_function): Adapted to new signuature of the caf
      	drivers.
      	(conv_intrinsic_atomic_op): Add pre and post statements correctly.
      	(conv_intrinsic_atomic_ref): Same.
      	(conv_intrinsic_atomic_cas): Same.
      	(conv_intrinsic_event_query): Same.
      	* trans-stmt.c (gfc_trans_lock_unlock): Same.
      	(gfc_trans_event_post_wait): Same.
      	(gfc_trans_allocate): Support allocation of allocatable coarrays.
      	(gfc_trans_deallocate): And there deallocation.
      	* trans-types.c (gfc_typenode_for_spec): Added flag to control whether
      	a component is part of coarray.  When so, then add space to store a
      	coarray token.
      	(gfc_build_array_type): Same.
      	(gfc_get_array_descriptor_base): Same.
      	(gfc_get_array_type_bounds): Same.
      	(gfc_sym_type): Same.
      	(gfc_get_derived_type): Same.
      	(gfc_get_caf_reference_type): Declare the caf_reference_type.
      	* trans-types.h: Prototype changes only.
      	* trans.c (gfc_allocate_using_lib): Use the updated caf_register
      	signature.
      	(gfc_allocate_allocatable): Same.
      	(gfc_deallocate_with_status): Same.
      	* trans.h: Defined the runtime types for caf_reference_t and the enums.
      
      From-SVN: r240231
      3c9f5092
  19. Sep 09, 2016
    • Steven G. Kargl's avatar
      re PR fortran/77507 (gfortran rejects keyworded calls to procedures from intrinsic modules) · 8a92685e
      Steven G. Kargl authored
      2016-09-09  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/77507
      	* intrinsic.c (add_functions):  Use correct keyword.
      
      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-09  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/77507
      	* gfortran.dg/pr77507.f90: New test.
      
      From-SVN: r240050
      8a92685e
  20. Sep 06, 2016
  21. Aug 31, 2016
    • Jerry DeLisle's avatar
      re PR libfortran/77393 (Revision r237735 changed the behavior of F0.0) · d7756960
      Jerry DeLisle authored
      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.
      
      From-SVN: r239900
      d7756960
    • Paul Thomas's avatar
      [multiple changes] · e73d3ca6
      Paul Thomas authored
      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
      e73d3ca6
  22. Aug 29, 2016
  23. Aug 19, 2016
    • Janne Blomqvist's avatar
      Use a XOR cipher instead of byte shuffling to protect against bad seeds. · 09309e09
      Janne Blomqvist authored
      libgfortran:
      2016-08-19  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * 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.
      
      frontend:
      2016-08-19  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * intrinsics.texi (RANDOM_NUMBER): Remove reference to
              init_random_seed in example.
              (RANDOM_SEED): Remove warning to not set all seed values to 0.
      
      From-SVN: r239613
      09309e09
    • Janne Blomqvist's avatar
      Always initialize PRNG using random data from the OS. · 91151a73
      Janne Blomqvist authored
      libgfortran:
      
      2016-08-16  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * 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.
      
      testsuite:
      
      2016-08-16  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * gfortran.dg/random_4.f90: Initialize seed before using, handle
              the last special seed value.
              * gfortran.dg/random_7.f90: Use size for last array member instead
              of hardcoded value.
      
      From-SVN: r239611
      91151a73
  24. Aug 11, 2016
    • Rainer Orth's avatar
      Include <stdlib.h> in intrinsics/random.c · e8283787
      Rainer Orth authored
      	* intrinsics/random.c: Include <stdlib.h>.
      
      From-SVN: r239375
      e8283787
    • Janne Blomqvist's avatar
      Replace KISS PRNG with xorshift1024* using per-thread state. · b152f5a2
      Janne Blomqvist authored
      frontend:
      
      2016-08-11  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	* check.c (gfc_check_random_seed): Use new seed size in check.
      	* intrinsic.texi (RANDOM_NUMBER): Updated documentation.
      	(RANDOM_SEED): Likewise.
      
      
      testsuite:
      
      2016-08-11  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	* gfortran.dg/random_7.f90: Take into account that the last seed
      	value is the special p value.
      	* gfortran.dg/random_seed_1.f90: Seed size is now constant.
      
      
      libgfortran:
      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.
      
      From-SVN: r239356
      b152f5a2
  25. Jul 22, 2016
    • Andre Vehreschild's avatar
      libcaf.h: Add parameter stat to caf_get() and caf_send()'s function prototypes. · 9fe9a3a7
      Andre Vehreschild authored
      libgfortran/ChangeLog:
      
      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().
      
      
      gcc/testsuite/ChangeLog:
      
      2016-07-22  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	* gfortran.dg/coarray_stat_2.f90: New test.
      
      From-SVN: r238636
      9fe9a3a7
  26. Jun 23, 2016
    • Jerry DeLisle's avatar
      re PR libfortran/48852 (Invalid spaces in list-directed output of complex constants) · 5b0e27a7
      Jerry DeLisle authored
      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
      5b0e27a7
  27. May 24, 2016
  28. Apr 19, 2016
  29. Mar 30, 2016
    • Dominique d'Humieres's avatar
      [multiple changes] · e0876e21
      Dominique d'Humieres authored
      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-30  Dominique d'Humieres  <dominiq@lps.ens.fr>
      	    Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	* gfortran.dg/fmt_pf.f90: New test.
      
      From-SVN: r234600
      e0876e21
  30. Mar 28, 2016
  31. Feb 23, 2016
    • Jerry DeLisle's avatar
      re PR fortran/69456 (Namelist value with trailing sign is ignored without error) · 64a454d9
      Jerry DeLisle authored
      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.
      
      	PR libgfortran/69456
      	* gfortran.dg/namelist_89.f90: New test.
      	* gfortran.dg/pr59700.f90: Update test..
      
      From-SVN: r233641
      64a454d9
  32. Feb 17, 2016
Loading