diff options
author | Jakub Jelinek <jakub@redhat.com> | 2025-01-02 11:06:31 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2025-01-02 11:06:31 +0100 |
commit | 2c08aca65a9ce66ca8cee665838a92684d4ddff3 (patch) | |
tree | 1735b7444359d4c34a80d0b4435bf878f6683169 /gcc/fortran | |
parent | 55f31c715f75c61b79b37e47e9d0429d062b29db (diff) | |
download | gcc-2c08aca65a9ce66ca8cee665838a92684d4ddff3.zip gcc-2c08aca65a9ce66ca8cee665838a92684d4ddff3.tar.gz gcc-2c08aca65a9ce66ca8cee665838a92684d4ddff3.tar.bz2 |
Rotate ChangeLog files.
Rotate ChangeLog files for ChangeLogs with yearly cadence.
Also remove empty lines before Form Feed line.
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 3036 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2002 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2003 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2004 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2005 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2006 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2007 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2008 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2009 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2010 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2011 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2022 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2023 | 1 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog-2024 | 3038 |
14 files changed, 3039 insertions, 3047 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7683864..6b300a5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -13,3042 +13,8 @@ * intrinsic.texi: Grammar and markup fixes throughout the file. - -2024-12-30 Steven G. Kargl <kargls@comcast.net> - - PR fortran/117643 - * check.cc (gfc_check_f_c_string): Check arguments of f_c_string(). - * gfortran.h (enum gfc_isym_id): New symbol GFC_ISYM_F_C_STRING. - * intrinsic.cc (add_functions): Add the ISO C Binding routine f_c_string(). - Wrap nearby long line to less than 80 characters. - * intrinsic.h (gfc_check_f_c_string): Prototype for gfc_check_f_c_string(). - * iso-c-binding.def (NAMED_FUNCTION): Declare for ISO C Binding - routine f_c_string(). - * primary.cc (gfc_match_rvalue): Fix comment that has been untrue since 2011. - Add ISOCBINDING_F_C_STRING to conditional. - * trans-intrinsic.cc (conv_trim): Specialized version of trim() for - f_c_string(). - (gfc_conv_intrinsic_function): Use GFC_ISYM_F_C_STRING to trigger in-lining. - -2024-12-23 Harald Anlauf <anlauf@gmx.de> - - PR fortran/118179 - * trans-expr.cc (conv_null_actual): Suppress copying back of - pointer address for unspecified intent. - -2024-12-23 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/116254 - PR fortran/118059 - * trans-array.cc (gfc_trans_create_temp_array): Make sure that - transformational intrinsics of class objects that change rank, - most particularly spread, go through the correct code path. Re- - factor so that changes to the dtype are done on the temporary - before the class data of the result points to it. - * trans-expr.cc (arrayfunc_assign_needs_temporary): Character - array function expressions assigned to an unlimited polymorphic - variable require a temporary. - -2024-12-22 Harald Anlauf <anlauf@gmx.de> - - * check.cc (gfc_check_random_seed): Clear gmp variables returned by - gfc_array_size. - * expr.cc (gfc_check_pointer_assign): Likewise. - -2024-12-22 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/107635 - * gfortran.h (gfc_add_caf_accessor): New function. - * gfortran.texi: Document new API routines. - * resolve.cc (get_arrayspec_from_expr): Synthesize the arrayspec - resulting from an expression, i.e. not only the rank, but also - the bounds. - (remove_coarray_from_derived_type): Remove coarray ref from a - derived type to access it in access routine. - (convert_coarray_class_to_derived_type): Same but for classes. - The result is a derived type. - (split_expr_at_caf_ref): Split an expression at the coarray - reference to move the reference after the coarray ref into the - access routine. - (check_add_new_component): Helper to add variables as - components to derived type transfered to the access routine. - (create_get_parameter_type): Create the derived type to transfer - addressing data to the access routine. - (create_get_callback): Create the access routine. - (add_caf_get_intrinsic): Use access routine instead of old - caf_get. - * trans-decl.cc (gfc_build_builtin_function_decls): Register new - API routines. - (gfc_create_module_variable): Use renamed flag. - (gfc_emit_parameter_debug_info): - (struct caf_accessor): Linked list of hash-access routine pairs. - (gfc_add_caf_accessor): Add a hash-access routine pair to above - linked list. - (create_caf_accessor_register): Add all registered hash-access - routine pairs to the current caf_init. - (generate_coarray_init): Use routine above. - (gfc_generate_module_vars): Use renamed flag. - (generate_local_decl): Same. - (gfc_generate_function_code): Same. - (gfc_process_block_locals): Same. - * trans-intrinsic.cc (conv_shape_to_cst): Build the product of a - shape. - (gfc_conv_intrinsic_caf_get): Create call to access routine. - (conv_caf_send): Adapt to caf_get using less arguments. - (gfc_conv_intrinsic_function): Same. - * trans.cc (gfc_trans_force_lval): Helper to ensure that an - expression can be used as an lvalue-ref. - * trans.h (gfc_trans_force_lval): See above. - -2024-12-22 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/107635 - * gfortran.h (gfc_comp_caf_token): Convenient macro for - accessing caf_token's tree. - * resolve.cc (gfc_resolve_ref): Backup caf_lhs when resolving - expr in array_ref. - (remove_caf_get_intrinsic): Removed. - (resolve_variable): Set flag caf_lhs when resolving lhs of - assignment to prevent insertion of caf_get. - (resolve_lock_unlock_event): Same, but the lhs is the parameter. - (resolve_ordinary_assign): Move conversion to caf_send to - resolve_codes. - (resolve_codes): Adress caf_get and caf_send here. - (resolve_fl_derived0): Set component's caf_token when token is - necessary. - * trans-array.cc (gfc_conv_array_parameter): Get a coarray for - expression that have a corank. - (structure_alloc_comps): Use macro to get caf_token's tree. - (gfc_alloc_allocatable_for_assignment): Same. - * trans-expr.cc (gfc_get_ultimate_alloc_ptr_comps_caf_token): - Same. - (gfc_trans_structure_assign): Same. - * trans-intrinsic.cc (conv_expr_ref_to_caf_ref): Same. - (has_ref_after_cafref): New function to figure that after a - reference of a coarray another reference is present. - (conv_caf_send): Get rhs from correct place, when caf_get is - not removed. - * trans-types.cc (gfc_get_derived_type): Get caf_token from - component and no longer guessing. - -2024-12-21 Harald Anlauf <anlauf@gmx.de> - - PR fortran/104819 - * interface.cc (compare_parameter): For the rank check, NULL() - inherits the rank of a provided MOLD argument. - (gfc_compare_actual_formal): Adjust check of NULL() actual argument - against formal to accept F2008 enhancements (allocatable dummy). - NULL() with MOLD argument retains a pointer/allocatable attribute. - * trans-expr.cc (conv_null_actual): Implement passing NULL() to - derived-type dummy with pointer/allocatable attribute, and ensure - that the actual rank is passed to an assumed-rank dummy. - (gfc_conv_procedure_call): Use it. - -2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> - - * gfortran.texi: Get rid of some unnecessary hyphens throughout - the file. - * invoke.texi: Likewise. - -2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> - - * gfortran.texi: Use the present tense throughout; fix some - markup issues and awkward wording. - * invoke.texi: Likewise. - -2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> - - * gfortran.texi: Fix markup, typos, and indexing throughout the - file. - * invoke.texi: Likewise. - -2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> - - PR fortran/51820 - PR fortran/89632 - PR fortran/109216 - * invoke.texi (Code Gen Options): Further cleanups of the discussion - of what -funderscoring and -fsecond-underscore do. - -2024-12-20 Harald Anlauf <anlauf@gmx.de> - - PR fortran/118120 - PR fortran/113928 - * trans-array.cc (symbols_could_alias): If one symbol refers to a - complex type and the other to a real type of the same kind, do not - a priori exclude the possibility of aliasing. - -2024-12-17 Sandra Loosemore <sloosemore@baylibre.com> - - PR c/26154 - * gfortran.texi (Standards): Remove redundant info about - OpenMP/OpenACC standard support. - (OpenMP): Copy-editing and update version info. - (OpenACC): Likewise. - * lang.opt.urls: Regenerated. - -2024-12-17 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/117347 - * primary.cc (gfc_match_varspec): Add array constructors for - guessing their type like with unresolved function calls. - -2024-12-16 David Malcolm <dmalcolm@redhat.com> - - PR sarif-replay/117943 - * error.cc (gfc_diagnostic_text_starter): Use source-printing - options from text_output. - -2024-12-15 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/117897 - * trans-expr.cc (gfc_trans_assignment_1): RHS pointer function - results must not be finalized. - -2024-12-12 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/117797 - * trans-array.cc (class_array_element_size): New function. - (gfc_get_array_span): Refactor, using class_array_element_size - to return the span for descriptors that are the _data component - of a class expression and then class dummy references. Revert - the conditions to those before r15-5083 tidying up using 'sym'. - -2024-12-11 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/117901 - * trans-stmt.cc (trans_associate_var): A variable character - length array associate name must generate a DECL expression for - the data pointer type. - -2024-12-09 Harald Anlauf <anlauf@gmx.de> - - * expr.cc (find_array_section): Do not initialize GMP variables - twice. - -2024-12-09 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/116261 - * trans-array.cc (gfc_array_init_size): New arg 'explicit_ts', - to suppress the use of the expr3 element size in the descriptor - dtype. - (gfc_array_allocate): New arg 'explicit_ts', used in call to - gfc_array_init_size. - * trans-array.h : Modify prototype for gfc_array_allocate for new - bool argument. - * trans-stmt.cc (gfc_trans_allocate): Set new argument if the - typespec is explicit. - -2024-12-03 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/102689 - * trans-array.cc (get_array_ref_dim_for_loop_dim): Use the arg1 - class container carried in ss->info as the seed for a lhs in - class valued transformational intrinsic calls that are not the - rhs of an assignment. Otherwise, the lhs variable expression is - taken from the loop chain. For this latter case, the _vptr and - _len fields are set. - (gfc_trans_create_temp_array): Use either the lhs expression - seeds to build a class variable that will take the returned - descriptor as its _data field. In the case that the arg1 expr. - is used, 'atmp' must be marked as unused, a typespec built with - the correct rank and the _vptr and _len fields set. The element - size is provided for the temporary allocation and to set the - descriptor span. - (gfc_array_init_size): When an intrinsic type scalar expr3 is - used in allocation of a class array, use its element size in - the descriptor dtype. - * trans-expr.cc (gfc_conv_class_to_class): Class valued - transformational intrinsics return the pointer to the array - descriptor as the _data field of a class temporary. Extract - directly and return the address of the class temporary. - (gfc_conv_procedure_call): store the expression for the first - argument of a class valued transformational intrinsic function - in the ss info class_container field. Later, use its type as - the element type in the call to gfc_trans_create_temp_array. - (fcncall_realloc_result): Add a dtype argument and use it in - the descriptor, when available. - (gfc_trans_arrayfunc_assign): For class lhs, build a dtype with - the lhs rank and the rhs element size and use it in the call to - fcncall_realloc_result. - -2024-12-03 Tobias Burnus <tburnus@baylibre.com> - - * trans-decl.cc (gfc_finish_var_decl): Remove setting the alignment. - -2024-11-29 Andrew Pinski <quic_apinski@quicinc.com> - - PR fortran/117843 - * trans-io.cc (gfc_trans_transfer): Add default case. - -2024-11-28 Steven G. Kargl <kargls@comcast.net> - - PR fortran/117765 - * resolve.cc (pure_subroutine): Check for an impure subroutine - call in a BLOCK construct nested within a DO CONCURRENT block. - -2024-11-28 Harald Anlauf <anlauf@gmx.de> - - PR fortran/117791 - * trans-io.cc (gfc_trans_transfer): When an array index depends on - a function evaluation or an expression, do not use optimized array - I/O of an array section and fall back to normal scalarization. - -2024-11-28 David Malcolm <dmalcolm@redhat.com> - - PR c/104896 - * resolve.cc (resolve_operator): Replace "%<%s%>" with "%qs" in - message wording. - -2024-11-27 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/84674 - PR fortran/117768 - * class.cc (add_proc_comp): If the component points to a tbp - that is abstract, do not return since the new version is more - likely to be usable. - * resolve.cc (resolve_fl_derived): Remove the condition that - rejected a completely empty derived type extension. - -2024-11-26 Harald Anlauf <anlauf@gmx.de> - - * expr.cc (find_inquiry_ref): Fix memleak introduced by scanning - the reference chain to find and simplify inquiry references. - * symbol.cc (gfc_copy_formal_args_intr): Free formal namespace - when not needed to avoid a front-end memleak. - -2024-11-26 Harald Anlauf <anlauf@gmx.de> - - PR fortran/117774 - * trans-expr.cc (gfc_conv_procedure_call): When passing an array - to an assumed-rank dummy, terminate search for array reference of - actual argument before an inquiry reference (e.g. INQUIRY_RE, - INQUIRY_IM) so that bounds update works properly. - -2024-11-26 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/117763 - * trans-array.cc (gfc_get_array_span): Guard against derefences - of 'expr'. Clean up some typos. Use 'gfc_get_vptr_from_expr' - for clarity and apply a functional reversion of last section - that deals with class dummies. - -2024-11-25 Steve Kargl <kargls@comcast.net> - - PR fortran/117765 - * resolve.cc (check_pure_function): Check the stack to - see if the function is in a nested BLOCK and, if that - block is inside a DO_CONCURRENT, issue an error. - -2024-11-24 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/85869 - * trans-expr.cc (trans_class_vptr_len_assignment): To access - the '_len' field, re must be unlimited polymorphic. - -2024-11-24 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/117730 - PR fortran/84674 - * class.cc (add_proc_comp): Only reject a non_overridable if it - has no overridden procedure and the component is already - present in the vtype. - * resolve.cc (resolve_fl_derived): Do not build a vtable for a - derived type extension that is completely empty. - -2024-11-22 Andrew Pinski <quic_apinski@quicinc.com> - - PR bootstrap/117737 - * arith.cc (INCLUDE_MEMORY): Remove. - * array.cc (INCLUDE_MEMORY): Remove. - * bbt.cc (INCLUDE_MEMORY): Remove. - * check.cc (INCLUDE_MEMORY): Remove. - * class.cc (INCLUDE_MEMORY): Remove. - * constructor.cc (INCLUDE_MEMORY): Remove. - * convert.cc (INCLUDE_MEMORY): Remove. - * cpp.cc (INCLUDE_MEMORY): Remove. - * data.cc (INCLUDE_MEMORY): Remove. - * decl.cc (INCLUDE_MEMORY): Remove. - * dependency.cc (INCLUDE_MEMORY): Remove. - * dump-parse-tree.cc (INCLUDE_MEMORY): Remove. - * error.cc (INCLUDE_MEMORY): Remove. - * expr.cc (INCLUDE_MEMORY): Remove. - * f95-lang.cc (INCLUDE_MEMORY): Remove. - * frontend-passes.cc (INCLUDE_MEMORY): Remove. - * interface.cc (INCLUDE_MEMORY): Remove. - * intrinsic.cc (INCLUDE_MEMORY): Remove. - * io.cc (INCLUDE_MEMORY): Remove. - * iresolve.cc (INCLUDE_MEMORY): Remove. - * match.cc (INCLUDE_MEMORY): Remove. - * matchexp.cc (INCLUDE_MEMORY): Remove. - * misc.cc (INCLUDE_MEMORY): Remove. - * module.cc (INCLUDE_MEMORY): Remove. - * openmp.cc (INCLUDE_MEMORY): Remove. - * options.cc (INCLUDE_MEMORY): Remove. - * parse.cc (INCLUDE_MEMORY): Remove. - * primary.cc (INCLUDE_MEMORY): Remove. - * resolve.cc (INCLUDE_MEMORY): Remove. - * scanner.cc (INCLUDE_MEMORY): Remove. - * simplify.cc (INCLUDE_MEMORY): Remove. - * st.cc (INCLUDE_MEMORY): Remove. - * symbol.cc (INCLUDE_MEMORY): Remove. - * target-memory.cc (INCLUDE_MEMORY): Remove. - * trans-array.cc (INCLUDE_MEMORY): Remove. - * trans-common.cc (INCLUDE_MEMORY): Remove. - * trans-const.cc (INCLUDE_MEMORY): Remove. - * trans-decl.cc (INCLUDE_MEMORY): Remove. - * trans-expr.cc (INCLUDE_MEMORY): Remove. - * trans-intrinsic.cc (INCLUDE_MEMORY): Remove. - * trans-io.cc (INCLUDE_MEMORY): Remove. - * trans-openmp.cc (INCLUDE_MEMORY): Remove. - * trans-stmt.cc (INCLUDE_MEMORY): Remove. - * trans-types.cc (INCLUDE_MEMORY): Remove. - * trans.cc (INCLUDE_MEMORY): Remove. - -2024-11-22 Tobias Burnus <tburnus@baylibre.com> - - * gfortran.h (gfc_omp_namelist): Cleanup interop internal - representation. - * dump-parse-tree.cc (show_omp_namelist): Update for changed - internal representation. - * match.cc (gfc_free_omp_namelist): Likewise. - * openmp.cc (gfc_match_omp_prefer_type, gfc_match_omp_init): - Likewise; also handle some corner cases better and update for - newer 6.0 changes related to 'fr'. - (resolve_omp_clauses): Add type-check for interop variables. - * trans-openmp.cc (gfc_trans_omp_clauses): Handle init, use - and destroy clauses. - (gfc_trans_openmp_interop): New. - (gfc_trans_omp_directive): Call it. - -2024-11-20 Harald Anlauf <anlauf@gmx.de> - - PR fortran/83135 - * expr.cc (sym_is_from_ancestor): New helper function. - (gfc_check_vardef_context): Refine checking of PROTECTED attribute - of symbols that are indirectly use-associated in a submodule. - -2024-11-20 Paul-Antoine Arras <parras@baylibre.com> - - * types.def (BT_FN_PTR_CONST_PTR_INT): Declare. - -2024-11-20 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc - (walk_inline_intrinsic_minmaxloc): Add a scalar element for BACK as - first item of the chain if BACK is present and there will be nested - loops. - (gfc_conv_intrinsic_minmaxloc): Evaluate BACK using an inherited - scalarization chain if there is a nested loop. - -2024-11-20 Mikael Morin <mikael@gcc.gnu.org> - - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Only get the size - along DIM instead of the full size if DIM is present. - -2024-11-19 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return TRUE - for MINLOC/MAXLOC with constant DIM and either REAL ARRAY or - non-scalar MASK. - (walk_inline_intrinsic_minmaxloc): Walk MASK and if it's an array - add the chain obtained before that of ARRAY. - (gfc_conv_intrinsic_minmaxloc): Use the nested loop if there is one. - To evaluate MASK (respectively ARRAY in the second loop), inherit - the scalarizer chain if in a nested loop, otherwise keep using the - chain obtained by walking MASK (respectively ARRAY). If there is a - nested loop, avoid advancing the parent scalarization chain a second - time in the second loop. - -2024-11-19 Mikael Morin <mikael@gcc.gnu.org> - - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Use - conditionals based on the MASK expression rather than on its - scalarization chains. - -2024-11-19 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return TRUE - if MASK is scalar. - (walk_inline_intrinsic_minmaxloc): Append to the scalarization chain - a scalar element for MASK if it's present. - (gfc_conv_intrinsic_minmaxloc): Use a local gfc_se struct to serve - as base for all the expressions evaluated in the nested loop. To - evaluate MASK when there is a nested loop, enable usage of the - scalarizer and set the original passed in SE argument as current - scalarization chain element to use. And use the nested loop from - the scalarizer instead of the local loop in that case. - -2024-11-19 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return true - if DIM is constant, ARRAY is integral and MASK is absent. - (walk_inline_intrinsic_minmaxloc): If DIM is present, walk ARRAY and - move the dimension corresponding to DIM to a nested chain, keeping - the rest of the dimensions as the returned scalarization chain. - (gfc_conv_intrinsic_minmaxloc): When inside the scalarization loops, - proceed with inline code generation If DIM is present. If DIM is - present, skip result array creation and final initialization from - individual result local variables. If DIM is present and ARRAY has - rank greater than 1, use the nested loop initialized by the - scalarizer instead of the local one, use 1 as scalarization - dimension, and evaluate ARRAY using the inherited scalarization - chain instead of creating a local one by walking the expression. - -2024-11-18 Harald Anlauf <anlauf@gmx.de> - - PR fortran/53357 - * dependency.cc (gfc_dep_compare_expr): Return correct result if - relationship of expressions could not be determined. - * interface.cc (gfc_check_result_characteristics): Implement error - messages if character function declations and references do not - agree, else emit warning in cases where a mismatch is suspected. - * trans-stmt.cc (gfc_trans_allocate): Implement a string length - check for -fcheck=bounds. - -2024-11-16 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/109066 - * resolve.cc (generate_component_assignments): If the temporary - for 'var' is a pointer and 'expr' is neither a constant or - a variable, change its attribute from pointer to allocatable. - This avoids assignment to a temporary point that has neither - been allocated or associated. - -2024-11-16 Thomas Koenig <tkoenig@gcc.gnu.org> - - * gfortran.texi: Document that SELECT CASE works for UNSIGNED. - -2024-11-16 Thomas Koenig <tkoenig@gcc.gnu.org> - - * module.cc (mio_expr): Handle BT_UNSIGNED. - -2024-11-15 Jan Hubicka <hubicka@ucw.cz> - - * trans-expr.cc (gfc_trans_subcomponent_assign): Fix type of malloc - parameter. - -2024-11-14 Harald Anlauf <anlauf@gmx.de> - - PR fortran/104819 - * trans-expr.cc (conv_null_actual): Helper function to handle - passing of NULL() to non-optional dummy arguments of non-bind(c) - procedures. - (gfc_conv_procedure_call): Use it for character dummies. - -2024-11-13 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/105054 - * resolve.cc (get_temp_from_expr): If the pointer function has - a deferred character length, generate a new deferred charlen - for the temporary. - -2024-11-11 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/109345 - * trans-array.cc (gfc_get_array_span): Unlimited polymorphic - expressions are now treated separately since the span need not - be the same as the element size. - -2024-11-11 Tomas Trnka <trnka@scm.com> - Paul Thomas <pault@gcc.gnu.org> - - PR fortran/116388 - * class.cc (finalize_component): Leading underscore in the name - of 'byte_stride' to suppress invalid finalization. - -2024-11-11 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (gfc_check_complex): Reject UNSIGNED. - * gfortran.texi: Update example program. Note that - CMPLX, INT and REAL also take unsigned arguments. - * intrinsic.texi (CMPLX): Document UNSIGNED. - (INT): Likewise. - (REAL): Likewise. - -2024-11-06 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/117434 - * interface.cc (gfc_compare_actual_formal): Skip 'Expected a - procedure pointer error' if the formal argument typespec has an - interface and the type of the actual arg is BT_PROCEDURE. - -2024-11-05 David Malcolm <dmalcolm@redhat.com> - - PR fortran/117442 - * error.cc (error_buffer): Convert to a pointer so it can be - heap-allocated. - (gfc_error_now): Update for error_buffer being heap-allocated. - (gfc_clear_error): Likewise. - (gfc_error_flag_test): Likewise. - (gfc_error_check): Likewise. - (gfc_push_error): Likewise. - (gfc_pop_error): Likewise. - (gfc_diagnostics_init): Allocate error_buffer on the heap, rather - than statically. - (gfc_diagnostics_finish): Delete error_buffer. - -2024-11-02 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (gfc_check_mask): Handle BT_INSIGNED. - * gfortran.h (enum gfc_isym_id): Add GFC_ISYM_UMASKL and - GFC_ISYM_UMASKR. - * gfortran.texi: List UMASKL and UMASKR, remove unsigned future - unsigned arguments for MASKL and MASKR. - * intrinsic.cc (add_functions): Add UMASKL and UMASKR. - * intrinsic.h (gfc_simplify_umaskl): New function. - (gfc_simplify_umaskr): New function. - (gfc_resolve_umasklr): New function. - * intrinsic.texi: Document UMASKL and UMASKR. - * iresolve.cc (gfc_resolve_umasklr): New function. - * simplify.cc (gfc_simplify_umaskr): New function. - (gfc_simplify_umaskl): New function. - -2024-11-01 Thomas Koenig <tkoenig@gcc.gnu.org> - - * resolve.cc (resolve_operator): Also handle BT_UNSIGNED. - -2024-11-01 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/115700 - * resolve.cc (resolve_assoc_var): Extract a substring reference - with missing as well as non-constant start or end. - -2024-10-31 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/115700 - * resolve.cc (resolve_variable): The typespec of an expression, - which is not a substring, can be shared with a deferred length - associate name. - (resolve_assoc_var): Extract a substring reference with non- - constant start or end. Use it to flag up the need for array - associate name to be a pointer. - (resolve_block_construct): Change comment from past to future - tense. - -2024-10-30 Harald Anlauf <anlauf@gmx.de> - - * trans-expr.cc (gfc_trans_class_init_assign): Free intermediate - gfc_expr's. - * trans.cc (get_final_proc_ref): Likewise. - (get_elem_size): Likewise. - (gfc_add_finalizer_call): Likewise. - -2024-10-29 David Malcolm <dmalcolm@redhat.com> - - PR other/116613 - * error.cc (gfc_diagnostic_build_kind_prefix): Update for - global_dc's m_printer becoming reference printer. - (gfc_diagnostics_init): Replace usage of diagnostic_format_decoder - with global_dc->set_format_decoder. - -2024-10-27 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/115070 - PR fortran/115348 - * trans-expr.cc (gfc_trans_class_init_assign): If all the - components of the default initializer are null for a scalar, - build an empty statement to prevent prior declarations from - disappearing. - -2024-10-26 Iain Sandoe <iain@sandoe.co.uk> - - * intrinsic.texi: Add menu item for UINT. - -2024-10-26 Thomas Koenig <tkoenig@gcc.gnu.org> - - * gfortran.texi: Correct reference to make clear that UNSIGNED - will not be part of F202Y. - Other clarifications. - Extend table of intrinsics, add links. - * intrinsic.texi: Add descriptions for UNSIGNED arguments. - * invoke.texi: Add anchor for -funsigned. - -2024-10-25 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/79685 - * decl.cc (match_data_constant): Find the symtree instead of - the symbol so the use renamed symbols are found. Pass this and - the derived type to gfc_match_structure_constructor. - * match.h: Update prototype of gfc_match_structure_contructor. - * primary.cc (gfc_match_structure_constructor): Remove call to - gfc_get_ha_sym_tree and use caller supplied symtree instead. - -2024-10-25 Jakub Jelinek <jakub@redhat.com> - - * trans-openmp.cc: Remove trailing whitespace. - * trans-common.cc: Likewise. - * match.h: Likewise. - * scanner.cc: Likewise. - * gfortranspec.cc: Likewise. - * io.cc: Likewise. - * iso-c-binding.def: Likewise. - * iso-fortran-env.def: Likewise. - * types.def: Likewise. - * openmp.cc: Likewise. - * f95-lang.cc: Likewise. - -2024-10-24 David Malcolm <dmalcolm@redhat.com> - Gaius Mulley <gaiusmod2@gmail.com> - - PR other/116613 - * arith.cc: Add #define INCLUDE_MEMORY. - * array.cc: Likewise. - * bbt.cc: Likewise. - * check.cc: Likewise. - * class.cc: Likewise. - * constructor.cc: Likewise. - * convert.cc: Likewise. - * cpp.cc: Likewise. - * data.cc: Likewise. - * decl.cc: Likewise. - * dependency.cc: Likewise. - * dump-parse-tree.cc: Likewise. - * error.cc: Likewise. - * expr.cc: Likewise. - * f95-lang.cc: Likewise. - * frontend-passes.cc: Likewise. - * interface.cc: Likewise. - * intrinsic.cc: Likewise. - * io.cc: Likewise. - * iresolve.cc: Likewise. - * match.cc: Likewise. - * matchexp.cc: Likewise. - * misc.cc: Likewise. - * module.cc: Likewise. - * openmp.cc: Likewise. - * options.cc: Likewise. - * parse.cc: Likewise. - * primary.cc: Likewise. - * resolve.cc: Likewise. - * scanner.cc: Likewise. - * simplify.cc: Likewise. - * st.cc: Likewise. - * symbol.cc: Likewise. - * target-memory.cc: Likewise. - * trans-array.cc: Likewise. - * trans-common.cc: Likewise. - * trans-const.cc: Likewise. - * trans-decl.cc: Likewise. - * trans-expr.cc: Likewise. - * trans-intrinsic.cc: Likewise. - * trans-io.cc: Likewise. - * trans-openmp.cc: Likewise. - * trans-stmt.cc: Likewise. - * trans-types.cc: Likewise. - * trans.cc: Likewise. - -2024-10-23 David Malcolm <dmalcolm@redhat.com> - - PR fortran/105916 - * error.cc (pp_error_buffer, pp_warning_buffer): Convert from - output_buffer * to diagnostic_buffer *. - (warningcount_buffered, werrorcount_buffered): Eliminate. - (gfc_error_buffer::gfc_error_buffer): Move constructor definition - here, and initialize "buffer" using *global_dc. - (gfc_output_buffer_empty_p): Delete in favor of - diagnostic_buffer::empty_p. - (gfc_clear_pp_buffer): Replace with... - (gfc_clear_diagnostic_buffer): ...this, moving implementation - details to diagnostic_context::clear_diagnostic_buffer. - (gfc_warning): Replace buffering implementation with calls - to global_dc->get_diagnostic_buffer and - global_dc->set_diagnostic_buffer. - (gfc_clear_warning): Update for renaming of gfc_clear_pp_buffer - and elimination of warningcount_buffered and werrorcount_buffered. - (gfc_warning_check): Replace buffering implementation with calls - to pp_warning_buffer->empty_p and - global_dc->flush_diagnostic_buffer. - (gfc_error_opt): Replace buffering implementation with calls to - global_dc->get_diagnostic_buffer and set_diagnostic_buffer. - (gfc_clear_error): Update for renaming of gfc_clear_pp_buffer. - (gfc_error_flag_test): Replace call to gfc_output_buffer_empty_p - with call to diagnostic_buffer::empty_p. - (gfc_error_check): Replace buffering implementation with calls - to pp_error_buffer->empty_p and global_dc->flush_diagnostic_buffer. - (gfc_move_error_buffer_from_to): Replace buffering implementation - with usage of diagnostic_buffer. - (gfc_free_error): Update for renaming of gfc_clear_pp_buffer. - (gfc_diagnostics_init): Use "new" directly when creating - pp_warning_buffer. Remove setting of m_flush_p on the two - buffers, as this is handled by diagnostic_buffer and by - diagnostic_text_format_buffer's constructor. - * gfortran.h: Replace #include "pretty-print.h" for output_buffer - with #include "diagnostic-buffer.h" for diagnostic_buffer. - (struct gfc_error_buffer): Change type of field "buffer" from - output_buffer to diagnostic_buffer. Move definition of constructor - into error.cc so that it can use global_dc. - -2024-10-23 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/116733 - * array.cc : White space corrections. - * expr.cc (gfc_check_pointer_assign): Permit assumed rank - target with -std=f202y. Add constraints that the data pointer - object must have rank remapping specified and the that the data - target be contiguous. - * gfortran.h : Add a gfc_array_ref field 'ar' to the structure - 'gfc_association_list'. - * interface.cc (gfc_compare_actual_formal): If -Wsurprising - is set, emit a warning if an assumed size array is passed to an - assumed rank dummy. - * intrinsic.cc (do_ts29113_check): Permit an assumed rank arg. - for reshape if -std=f202y and the argument is contiguous. - * invoke.texi : Introduce -std=f202y. Whitespace errors. - * lang.opt : Accept -std=f202y. - * libgfortran.h : Define GFC_STD_F202Y. - * match.cc (gfc_match_associate): If -std=f202y an assumed rank - selector is allowed if it is contiguous and the associate name - has rank remapping specified. - * options.cc (gfc_init_options): -std=f202y is equivalent to - -std=f2023 with experimental f202y features. White space issues - * parse.cc (parse_associate): If the selector is assumed rank, - use the 'ar' field of the association list to build an array - specification. - * primary.cc (gfc_match_varspec): Do not resolve the assumed - rank selector of a class associate name at this stage to avoid - the rank change. - * resolve.cc (find_array_spec): If an array_ref dimension is -1 - reset it with the rank in the object's array_spec. - (gfc_expression_rank): Do not check dimen types for an assumed - rank variable expression. - (resolve_variable): Do not emit the assumed rank context error - if the context is pointer assignment and the variable is a - target. - (resolve_assoc_var): Resolve the bounds and check for missing - bounds in the rank remap of an associate name with an assumed - rank selector. Do not correct the rank of an associate name - with an assumed rank selector. - (resolve_symbol): Allow the reference to an assumed rank object - if -std-f202y is enabled and the current operation is - EXEC_BLOCK. - * st.cc (gfc_free_association_list): Free bounds expressions - of the 'ar' field, if present. - * trans-array.cc (gfc_conv_ss_startstride): If -std=f202y and - bounds checking activated, do not apply the assertion. - * trans-expr.cc (gfc_trans_pointer_assignment): An assumed rank - target has its offset set to zero. - * trans-stmt.cc (trans_associate_var): If the selector is - assumed rank, call gfc_trans_pointer_assignment using the 'ar' - field in the association list as the array reference for expr1. - The data target, expr2, is a copy of the selector expression. - -2024-10-23 Tobias Burnus <tburnus@baylibre.com> - - * error.cc (terminal_width, gfc_get_terminal_width): Remove. - (gfc_error_init_1): Do not call one to set the other. - -2024-10-19 Tobias Burnus <tburnus@baylibre.com> - - * check.cc (is_c_interoperable): Use _(...) around to mark strings - as translatable. - * data.cc (gfc_assign_data_value): Move string literal to gfc_error - to make it translatable. - * resolve.cc (resolve_fl_variable, resolve_equivalence): Use G_(...) - around string literals. - * scanner.cc (skip_fixed_omp_sentinel): Replace '...' by %<...%>. - * trans-openmp.cc (gfc_split_omp_clauses, - gfc_trans_omp_declare_variant): Likewise. - -2024-10-19 Tobias Burnus <tburnus@baylibre.com> - - * data.cc (gfc_assign_data_value): Use linemap_location_before_p - and GFC_LOCUS_IS_SET. - * decl.cc (gfc_verify_c_interop_param): Make better translatable. - (build_sym, variable_decl, gfc_match_formal_arglist, - gfc_match_subroutine): Add range-based locations, use it in - diagnostic and gobble whitespace for better locations. - * error.cc (gfc_get_location_with_offset): Handle new format. - (gfc_get_location_range): New. - * expr.cc (gfc_check_assign): Use GFC_LOCUS_IS_SET. - * frontend-passes.cc (check_locus_code, check_locus_expr): - Likewise. - (runtime_error_ne): Use GFC_LOCUS_IS_SET. - * gfortran.h (locus): Change lb to union with lb and location. - (GFC_LOCUS_IS_SET): Define. - (gfc_get_location_range): New prototype. - (gfc_new_symbol, gfc_get_symbol, gfc_get_sym_tree, - gfc_get_ha_symbol, gfc_get_ha_sym_tree): Take optional locus - argument. - * io.cc (io_constraint): Use GFC_LOCUS_IS_SET. - * match.cc (gfc_match_sym_tree): Use range locus. - * openmp.cc (gfc_match_omp_variable_list, - gfc_match_omp_doacross_sink): Likewise. - * parse.cc (next_free): Update for locus struct change. - * primary.cc (gfc_match_varspec): Likewise. - (match_variable): Use range locus. - * resolve.cc (find_array_spec): Use GFC_LOCUS_IS_SET. - * scanner.cc (gfc_at_eof, gfc_at_bol, gfc_start_source_files, - gfc_advance_line, gfc_define_undef_line, skip_fixed_comments, - gfc_gobble_whitespace, include_stmt, gfc_new_file): Update - for locus struct change. - * symbol.cc (gfc_new_symbol, gfc_get_sym_tree, gfc_get_symbol, - gfc_get_ha_sym_tree, gfc_get_ha_symbol): Take optional locus. - * trans-array.cc (gfc_trans_array_constructor_value): Use %L not %C. - (gfc_trans_g77_array, gfc_trans_dummy_array_bias, - gfc_trans_class_array, gfc_trans_deferred_array): Replace - gfc_{save,set,restore}_backend_locus by directly using - input_location. - * trans-common.cc (build_equiv_decl, get_init_field): Likewise. - * trans-decl.cc (gfc_get_extern_function_decl, build_function_decl, - build_entry_thunks, gfc_null_and_pass_deferred_len, - gfc_trans_deferred_vars, gfc_trans_use_stmts, finish_oacc_declare, - gfc_generate_block_data): Likewise. - * trans-expr.cc (gfc_copy_class_to_class, gfc_conv_expr): Changes - to avoid gfc_current_locus. - * trans-io.cc (set_error_locus): Likewise. - * trans-openmp.cc (gfc_trans_omp_workshare): Use input_locus directly. - * trans-stmt.cc (gfc_trans_if_1): Likewise and use GFC_LOCUS_IS_SET. - * trans-types.cc (gfc_get_union_type, gfc_get_derived_type): Likewise. - * trans.cc (gfc_locus_from_location): New. - (trans_runtime_error_vararg, gfc_trans_runtime_check): Use location_t - for file + line data. - (gfc_current_backend_file, gfc_save_backend_locus, - gfc_set_backend_locus, gfc_restore_backend_locus): Remove. - (trans_code): Use input_location directly, don't set gfc_current_locus. - * trans.h (gfc_save_backend_locus, gfc_set_backend_locus, - gfc_restore_backend_locus): Remove prototypes. - (gfc_locus_from_location): Add prototype. - -2024-10-19 Thomas Koenig <tkoenig@gcc.gnu.org> - - PR fortran/117225 - * primary.cc (match_sym_complex_part): An UNSIGNED in - a complex part is an error. - -2024-10-18 Alejandro Colomar <alx@kernel.org> - - * trans-array.cc (structure_alloc_comps) - * trans-openmp.cc - (gfc_walk_alloc_comps) - (gfc_omp_clause_linear_ctor): - Rename array_type_nelts => array_type_nelts_minus_one - -2024-10-18 Thomas Koenig <tkoenig@gcc.gnu.org> - - * error.cc (notify_std_msg): Handle GFC_STD_UNSIGNED. - -2024-10-17 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/80235 - * trans-decl.cc (gfc_build_qualified_array): Make sure the array - is associated to the correct module and being marked as extern. - -2024-10-15 Thomas Schwinge <tschwinge@baylibre.com> - Harald Anlauf <anlauf@gmx.de> - - PR fortran/82250 - PR fortran/82251 - PR fortran/117136 - * trans-expr.cc (gfc_conv_procedure_call): Initialize - 'is_builtin'. - (conv_function_val): Clean up. - -2024-10-14 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/77871 - * trans-expr.cc (gfc_conv_derived_to_class): Assign token when - converting a coarray to class. - (gfc_get_tree_for_caf_expr): For classes get the caf decl from - the saved descriptor. - (gfc_get_caf_token_offset):Assert that coarray=lib is set and - cover more cases where the tree having the coarray token can be. - * trans-intrinsic.cc (gfc_conv_intrinsic_caf_get): Use unified - test for pointers. - -2024-10-13 Tobias Burnus <tburnus@baylibre.com> - - * gfortran.h (gfc_option_t): Add disable_acc_on_device. - * options.cc (gfc_handle_option): Handle -fno-builtin-acc_on_device. - * trans-decl.cc (gfc_get_extern_function_decl): Move - __builtin_omp_is_initial_device handling to ... - * trans-expr.cc (get_builtin_fn): ... this new function. - (conv_function_val): Call it. - (update_builtin_function): New. - (gfc_conv_procedure_call): Call it. - * types.def (BT_BOOL): Fix type by using bool_type_node. - -2024-10-12 Thomas Koenig <tkoenig@gcc.gnu.org> - - * dump-parse-tree.cc (get_c_type_name): Also handle BT_UNSIGNED. - * gfortran.h (NAMED_UINTCST): Define before inclusion - of iso-c-binding.def and iso-fortran-env.def. - (gfc_get_uint_kind_from_width_isofortranenv): Prototype. - * gfortran.texi: Mention new constants in iso_c_binding and - iso_fortran_env. - * iso-c-binding.def: Handle NAMED_UINTCST. Add c_unsigned, - c_unsigned_short,c_unsigned_char, c_unsigned_long, - c_unsigned_long_long, c_uintmax_t, c_uint8_t, c_uint16_t, - c_uint32_t, c_uint64_t, c_uint128_t, c_uint_least8_t, - c_uint_least16_t, c_uint_least32_t, c_uint_least64_t, - c_uint_least128_t, c_uint_fast8_t, c_uint_fast16_t, - c_uint_fast32_t, c_uint_fast64_t and c_uint_fast128_t. - * iso-fortran-env.def: Handle NAMED_UINTCST. Add uint8, uint16, - uint32 and uint64. - * module.cc (parse_integer): Whitespace fix. - (write_module): Whitespace fix. - (NAMED_UINTCST): Define before inclusion of iso-fortran-evn.def - and iso-fortran-env.def. - * symbol.cc: Likewise. - * trans-types.cc (get_unsigned_kind_from_node): New function. - (get_uint_kind_from_name): New function. - (gfc_get_uint_kind_from_width_isofortranenv): New function. - (get_uint_kind_from_width): New function. - (gfc_init_kinds): Initialize gfc_c_uint_kind. - -2024-10-12 Tobias Burnus <tburnus@baylibre.com> - - * openmp.cc (resolve_omp_clauses): Diagnose polymorphic mapping. - * trans-openmp.cc (gfc_omp_finish_clause): Warn when - polymorphic variable is implicitly mapped. - -2024-10-12 Tobias Burnus <tburnus@baylibre.com> - - * array.cc (gfc_match_array_constructor): Only update the - character length if the expression is of character type. - * error.cc (gfc_get_location_with_offset): New; split off - from ... - (gfc_format_decoder): ... here; call it. - * gfortran.h (gfc_get_location_with_offset): New prototype. - (gfc_get_location): New inline function. - * trans.cc (gfc_get_location): Remove function definition. - * trans.h (gfc_get_location): Remove declaration. - -2024-10-11 Thomas Koenig <tkoenig@gcc.gnu.org> - - * intrinsic.cc (add_functions): Convert uint and - selected_unsigned_kind to GFC_STD_UNSIGNED. - (gfc_check_intrinsic_standard): Handle GFC_STD_UNSIGNED. - * libgfortran.h (GFC_STD_UNSIGNED): Add. - * options.cc (gfc_post_options): Set GFC_STD_UNSIGNED - if -funsigned is set. - -2024-10-11 Tobias Burnus <tburnus@baylibre.com> - - * error.cc (error_char, error_string, error_uinteger, error_integer, - error_hwuint, error_hwint, gfc_widechar_display_length, - gfc_wide_display_length, error_printf, show_locus, show_loci): - Remove unused static functions. - (IBUF_LEN, MAX_ARGS): Remove now unused #define. - -2024-10-08 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/51815 - * array.cc (gfc_match_array_ref): Only parse coarray part of - ref. - * match.h (gfc_match_array_ref): Add flag. - * primary.cc (gfc_match_varspec): Request only coarray ref - parsing when no regular array is present. Report error on - unexpected additional ref. - -2024-10-07 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (gfc_check_minloc_maxloc): Handle BT_UNSIGNED. - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Likewise. - * gfortran.texi: Document MAXLOC and MINLOC for UNSIGNED. - -2024-10-07 Tobias Burnus <tburnus@baylibre.com> - - * openmp.cc (is_predefined_allocator): Use gomp-constants.h consts. - * trans-common.cc (translate_common): Reject OpenMP allocate directives. - * trans-decl.cc (gfc_finish_var_decl): Handle allocate directive - for static variables. - (gfc_trans_deferred_vars): Update for the latter. - -2024-10-01 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (int_or_real_or_char_or_unsigned_check_f2003): New function. - (gfc_check_minval_maxval): Use it. - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxval): Handle - initial values for UNSIGNED. - * gfortran.texi: Document MINVAL and MAXVAL for unsigned. - -2024-09-30 David Malcolm <dmalcolm@redhat.com> - - PR other/116613 - * error.cc (gfc_diagnostic_build_locus_prefix): Convert first - param from diagnostic_context * to - const diagnostic_location_print_policy &. Add colorize param. - Likewise for the "two expanded_locations" overload. - (gfc_diagnostic_text_starter): Update for above changes. - (gfc_diagnostic_start_span): Update for change to callback type. - -2024-09-30 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/81265 - * trans-expr.cc (gfc_conv_procedure_call): Ensure coarrays use a - descriptor when passed. - -2024-09-28 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (intrinsic_type_check): Handle unsigned. - (gfc_check_findloc): Likewise. - * gfortran.texi: Include FINDLOC in unsigned documentation. - * iresolve.cc (gfc_resolve_findloc): Use INTEGER version - for UNSIGNED. - -2024-09-28 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (gfc_check_eoshift): Handle BT_UNSIGNED. - * simplify.cc (gfc_simplify_eoshift): Likewise. - * gfortran.texi: Document CSHIFT and EOSHIFT for UNSIGNED. - -2024-09-26 Mikael Morin <mikael@gcc.gnu.org> - - * invoke.texi (-M): Remove index reference to removed documentation. - -2024-09-25 Mikael Morin <mikael@gcc.gnu.org> - - PR other/116801 - * invoke.texi: Remove @code wrapping in arguments to @opindex. - (std=): Remove spurious 'option' in index. - (idirafter, imultilib, iprefix, isysroot, iquote, isystem, - fintrinsic-modules-path): Remove variable from index. - * lang.opt.urls: Regenerate. - -2024-09-25 Tobias Burnus <tburnus@baylibre.com> - - * parse.cc (decode_omp_directive): Set target-used bit of - omp_requires_mask when encountering the declare_target or interop - directive. - -2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (gfc_check_random_number): Adjust for unsigned. - * iresolve.cc (gfc_resolve_random_number): Handle unsigned. - * trans-expr.cc (gfc_conv_expr_op): Handle BT_UNSIGNED for divide. - * trans-types.cc (gfc_get_dtype_rank_type): Handle BT_UNSIGNED. - * gfortran.texi: Add RANDOM_NUMBER for UNSIGNED. - -2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> - - * check.cc (gfc_check_transf_bit_intrins): Handle unsigned. - * gfortran.texi: Docment IANY, IALL and IPARITY for unsigned. - * iresolve.cc (gfc_resolve_iall): Set flag to use integer - if type is BT_UNSIGNED. - (gfc_resolve_iany): Likewise. - (gfc_resolve_iparity): Likewise. - * simplify.cc (do_bit_and): Adjust asserts for BT_UNSIGNED. - (do_bit_ior): Likewise. - (do_bit_xor): Likewise - -2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> - - * gfortran.texi: Document SUM and PRODUCT. - * iresolve.cc (resolve_transformational): New argument, - use_integer, to translate calls to unsigned to calls to - integer. - (gfc_resolve_product): Use it - (gfc_resolve_sum): Use it. - * simplify.cc (init_result_expr): Handle BT_UNSIGNED. - -2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> - - * arith.cc (gfc_arith_uminus): Fix warning. - (gfc_arith_minus): Correctly truncate unsigneds. - * check.cc (gfc_check_dot_product): Handle unsigned arguments. - (gfc_check_matmul): Likewise. - * expr.cc (gfc_get_unsigned_expr): New function. - * gfortran.h (gfc_get_unsigned_expr): Add prototype. - * iresolve.cc (gfc_resolve_matmul): If using UNSIGNED, use the - signed integer version. - * gfortran.texi: Document MATMUL and DOT_PRODUCT for unsigned. - * simplify.cc (compute_dot_product): Handle unsigneds. - -2024-09-24 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/101100 - * trans-expr.cc (trans_caf_token_assign): Take caf-token from - decl for non ultimate coarray components. - -2024-09-24 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/84870 - * trans-array.cc (duplicate_allocatable_coarray): For scalar - allocatable components the memory allocated is now assigned to - the component's pointer. - -2024-09-24 Tobias Burnus <tburnus@baylibre.com> - - * gfortran.h (enum gfc_omp_requires_kind): Add OMP_REQ_SELF_MAPS. - (gfc_namespace): Enlarge omp_requires bitfield. - * module.cc (enum ab_attribute, attr_bits): Add AB_OMP_REQ_SELF_MAPS. - (mio_symbol_attribute): Handle it. - * openmp.cc (gfc_check_omp_requires, gfc_match_omp_requires): Handle - self_maps clause. - * parse.cc (gfc_parse_file): Handle self_maps clause. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * invoke.texi(finline-intrinsics): Document new flag. - * lang.opt (finline-intrinsics, finline-intrinsics=, - fno-inline-intrinsics): New flags. - * options.cc (gfc_post_options): If the option variable controlling - the inlining of MAXLOC (respectively MINLOC) has not been set, set - it or clear it depending on the optimization option variables. - * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return false - if inlining for the intrinsic is disabled according to the option - variable. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Generate a set - of index variables. Set them using the loop indexes before leaving - the first set of loops. Generate a new loop entry predicate. - Initialize it. Set it before leaving the first set of loops. Clear - it in the body of the second set of loops. For the second set of - loops, update each loop lower bound to use the corresponding index - variable if the predicate variable is set. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Initialize - and update all the variables. Put the label and goto in the - outermost scalarizer loop. Don't start the second loop where the - first stopped. - (gfc_inline_intrinsic_function_p): Also return TRUE for array MASK - or for any REAL type. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Generate - variable initialization for each dimension in the else branch of - the toplevel condition. - (gfc_inline_intrinsic_function_p): Return TRUE for scalar MASK. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-array.cc (gfc_conv_ss_startstride): Set the MINLOC/MAXLOC - result upper bound using the rank of the ARRAY argument. Ajdust - the error message for intrinsic result arrays. Only check array - bounds for array references. Move bound check decision code... - (bounds_check_needed): ... here as a new predicate. Allow bound - check for MINLOC/MAXLOC intrinsic results. - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Change the - result array upper bound to the rank of ARRAY. Update the NONEMPTY - variable to depend on the non-empty extent of every dimension. Use - one variable per dimension instead of a single variable for the - position and the offset. Update their declaration, initialization, - and update to affect the variable of each dimension. Use the first - variable only in areas only accessed with rank 1 ARRAY argument. - Set every element of the result using its corresponding variable. - (gfc_inline_intrinsic_function_p): Return true for integral ARRAY - and absent DIM and MASK. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - * trans-array.cc (gfc_conv_ss_startstride): Move array bound check - generation code... - (add_check_section_in_array_bounds): ... here as a new function. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - * frontend-passes.cc (optimize_minmaxloc): Remove. - (optimize_expr): Remove dispatch to optimize_minmaxloc. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * trans-array.cc (gfc_conv_ss_startstride): Set the scalarization - rank based on the MINLOC/MAXLOC rank if needed. Call the inline - code generation and setup the scalarizer array descriptor info - in the MINLOC and MAXLOC cases. - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Return the - result array element if the scalarizer is setup and we are inside - the loops. Restrict library function call dispatch to the case - where inline expansion is not supported. Declare an array result - if the expression isn't scalar. Initialize the array result single - element and return the result variable if the expression isn't - scalar. - (walk_inline_intrinsic_minmaxloc): New function. - (walk_inline_intrinsic_function): Add MINLOC and MAXLOC cases, - dispatching to walk_inline_intrinsic_minmaxloc. - (gfc_add_intrinsic_ss_code): Add MINLOC and MAXLOC cases. - (gfc_inline_intrinsic_function_p): Return true if ARRAY has rank 1, - regardless of DIM. - -2024-09-21 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/90608 - * frontend-passes.cc (optimize_minmaxloc): Skip if we can generate - inline code for the unmodified expression. - * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Add - MINLOC and MAXLOC cases. - -2024-09-20 David Malcolm <dmalcolm@redhat.com> - - PR other/116613 - * error.cc: Include "diagnostic-format-text.h". - (gfc_diagnostic_starter): Rename to... - (gfc_diagnostic_text_starter): ...this. Convert first - param from diagnostic_context * to diagnostic_text_output_format & - and update accordingly. - (gfc_diagnostic_finalizer, gfc_diagnostic_text_finalizer): - Likewise. - (gfc_diagnostics_init): Update for renamings. - (gfc_diagnostics_finish): Likewise. - -2024-09-19 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/106606 - * trans-types.cc (gfc_get_derived_type): Only build non-pointer - derived types as component's types when they are not yet built. - -2024-09-19 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/85002 - * trans-array.cc (duplicate_allocatable_coarray): Allow adding - of deep copy code in the when-allocated case. Add bounds - computation before condition, because coarrays need the bounds - also when not allocated. - (structure_alloc_comps): Duplication in the coarray case is done - already, omit it. Add the deep-code when duplication a coarray. - * trans-expr.cc (gfc_trans_structure_assign): Fix comment. - -2024-09-15 Mikael Morin <mikael@gcc.gnu.org> - - * trans-expr.cc (gfc_advance_se_ss_chain): Don't use an element - from the parent scalarization chain when the current chain reaches - its end. - -2024-09-13 Tobias Burnus <tburnus@baylibre.com> - - PR fortran/116661 - * gfortran.h (gfc_omp_namelist): Rename 'init' members for clarity. - * match.cc (gfc_free_omp_namelist): Handle renaming. - * dump-parse-tree.cc (show_omp_namelist): Update for new format - and features. - * openmp.cc (gfc_match_omp_prefer_type): Parse list to 'fr' and 'attr'; - store 'fr' values as integer. - (gfc_match_omp_init): Rename variable names. - -2024-09-12 Steven G. Kargl <kargl@gcc.gnu.org> - - * module.cc (bt_types): Add BT_UNSIGNED. - -2024-09-11 Tobias Burnus <tburnus@baylibre.com> - - PR fortran/116661 - * openmp.cc (gfc_match_omp_prefer_type): NULL init a gfc_expr - variable and use right locus in gfc_error. - -2024-09-09 David Malcolm <dmalcolm@redhat.com> - - * cpp.cc (cb_cpp_diagnostic_cpp_option): Convert return type from - "int" to "diagnostic_option_id". - (cb_cpp_diagnostic): Update for renaming of - diagnostic_override_option_index to diagnostic_set_option_id. - * error.cc (gfc_warning): Update for renaming of diagnostic_info - field. - (gfc_warning_now_at): Likewise. - (gfc_warning_now): Likewise. - (gfc_warning_internal): Likewise. - -2024-09-09 David Malcolm <dmalcolm@redhat.com> - - PR other/116613 - * error.cc (gfc_clear_pp_buffer): Rename diagnostic_context's - "printer" field to "m_printer". - (gfc_warning): Likewise. - (gfc_diagnostic_build_kind_prefix): Likewise. - (gfc_diagnostic_build_locus_prefix): Likewise. - (gfc_diagnostic_starter): Likewise. - (gfc_diagnostic_starter): Likewise. - (gfc_diagnostic_start_span): Likewise. - (gfc_diagnostic_finalizer): Likewise. - (gfc_warning_check): Likewise. - (gfc_error_opt): Likewise. - (gfc_error_check): Likewise. - -2024-09-07 Thomas Koenig <tkoenig@gcc.gnu.org> - - * 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. - -2024-09-06 Tobias Burnus <tburnus@baylibre.com> - - * dump-parse-tree.cc (show_omp_namelist): Handle OMP_LIST_INIT. - (show_omp_clauses): Handle OMP_LIST_{INIT,USE,DESTORY}; move 'nowait' - from end-directive to the directive dump. - (show_omp_node, show_code_node): Handle EXEC_OMP_INTEROP. - * gfortran.h (enum gfc_statement): Add ST_OMP_INTEROP. - (OMP_LIST_INIT, OMP_LIST_USE, OMP_LIST_DESTROY): Add. - (enum gfc_exec_op): Add EXEC_OMP_INTEROP. - (struct gfc_omp_namelist): Add interop items to union. - (gfc_free_omp_namelist): Add boolean arg. - * match.cc (gfc_free_omp_namelist): Update to free - interop union members. - * match.h (gfc_match_omp_interop): New. - * openmp.cc (gfc_omp_directives): Uncomment 'interop' entry. - (gfc_free_omp_clauses, gfc_match_omp_allocate, - gfc_match_omp_flush, gfc_match_omp_clause_reduction): Update - call. - (enum omp_mask2): Add OMP_CLAUSE_{INIT,USE,DESTROY}. - (OMP_INTEROP_CLAUSES): Use it. - (gfc_match_omp_clauses): Match those clauses. - (gfc_match_omp_prefer_type, gfc_match_omp_init, - gfc_match_omp_interop): New. - (resolve_omp_clauses): Handle interop clauses. - (omp_code_to_statement): Add ST_OMP_INTEROP. - (gfc_resolve_omp_directive): Add EXEC_OMP_INTEROP. - * parse.cc (decode_omp_directive): Parse 'interop' directive. - (next_statement, gfc_ascii_statement): Handle ST_OMP_INTEROP. - * st.cc (gfc_free_statement): Likewise - * resolve.cc (gfc_resolve_code): Handle EXEC_OMP_INTEROP. - * trans.cc (trans_code): Likewise. - * trans-openmp.cc (gfc_trans_omp_directive): Print 'sorry' - for EXEC_OMP_INTEROP. - -2024-09-05 Harald Anlauf <anlauf@gmx.de> - - PR fortran/100273 - * trans-decl.cc (gfc_create_module_variable): Handle module - variable also when it is needed for the result specification - of a contained function. - -2024-09-03 David Malcolm <dmalcolm@redhat.com> - - * error.cc (gfc_move_error_buffer_from_to): Prefix all - output_buffer fields with "m_". - (gfc_diagnostics_init): Likewise. - -2024-08-31 Harald Anlauf <anlauf@gmx.de> - - * match.cc (gfc_match_namelist): Downgrade feature from GNU to - legacy extension. - -2024-08-30 Harald Anlauf <anlauf@gmx.de> - - PR fortran/98454 - * resolve.cc (resolve_symbol): Add default-initialization of - non-allocatable, non-pointer derived-type function results. - -2024-08-29 David Malcolm <dmalcolm@redhat.com> - - * error.cc (gfc_format_decoder): Convert final param from - const char **buffer_ptr to pp_token_list &formatted_token_list, - and update call to default_tree_printer accordingly. - -2024-08-29 Harald Anlauf <anlauf@gmx.de> - - PR fortran/116530 - * trans-io.cc (transfer_namelist_element): Prevent NULL pointer - dereference. - -2024-08-23 Paul Thomas <pault@gcc.gnu.org> - - Revert: - 2024-08-06 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/102689 - * trans-array.cc (get_array_ref_dim_for_loop_dim): Use the arg1 - class container carried in ss->info as the seed for a lhs in - class valued transformational intrinsic calls that are not the - rhs of an assignment. Otherwise, the lhs variable expression is - taken from the loop chain. For this latter case, the _vptr and - _len fields are set. - (gfc_trans_create_temp_array): Use either the lhs expression - seeds to build a class variable that will take the returned - descriptor as its _data field. In the case that the arg1 expr. - is used, a class typespec must be built with the correct rank - and the _vptr and _len fields set. The element size is provided - for the temporary allocation and to set the descriptor span. - (gfc_array_init_size): When an intrinsic type scalar expr3 is - used in allocation of a class array, use its element size in - the descriptor dtype. - * trans-expr.cc (gfc_conv_class_to_class): Class valued - transformational intrinsics return the pointer to the array - descriptor as the _data field of a class temporary. Extract - directly and return the address of the class temporary. - (gfc_conv_procedure_call): store the expression for the first - argument of a class valued transformational intrinsic function - in the ss info class_container field. Later, use its type as - the element type in the call to gfc_trans_create_temp_array. - (fcncall_realloc_result): Add a dtype argument and use it in - the descriptor, when available. - (gfc_trans_arrayfunc_assign): For class lhs, build a dtype with - the lhs rank and the rhs element size and use it in the call to - fcncall_realloc_result. - -2024-08-23 Gerald Pfeifer <gerald@pfeifer.com> - - * invoke.texi (Code Gen Options): Add a missing word. - -2024-08-23 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/86468 - * trans-stmt.cc (trans_associate_var): Remove superfluous - view_convert. - -2024-08-21 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/86468 - * trans-intrinsic.cc (conv_intrinsic_move_alloc): Correct - comment. - * trans-types.cc (gfc_sym_type): Pass coarray rank, not false. - (gfc_get_derived_type): Only propagate codimension for coarrays - and pointers to array components in derived typed coarrays. - -2024-08-21 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/77518 - * trans-intrinsic.cc (gfc_conv_intrinsic_sizeof): Use - class_container of se when set. - -2024-08-20 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/84246 - * resolve.cc (caf_possible_reallocate): Detect arrays that may - be reallocated by caf_send. - (resolve_ordinary_assign): More reliably detect assignments - where a rewrite to caf_send is needed. - * trans-expr.cc (gfc_trans_assignment_1): Remove rewrite to - caf_send, because this is done by resolve now. - * trans-intrinsic.cc (conv_caf_send): Prevent unneeded temporary - arrays. - -2024-08-19 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/46371 - PR fortran/56496 - * expr.cc (gfc_is_coindexed): Detect is coindexed also when - rewritten to caf_get. - * trans-stmt.cc (trans_associate_var): Always accept a - descriptor for coarrays. - -2024-08-19 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/84244 - * trans-types.cc (gfc_get_derived_type): When a caf_sub_token is - generated for a component, link it to the component it is - generated for (the previous one). - -2024-08-16 Harald Anlauf <anlauf@gmx.de> - - PR fortran/114146 - * intrinsic.texi: Fix documentation of arguments of RANDOM_INIT, - which is conforming to the F2018 standard. - -2024-08-15 Jakub Jelinek <jakub@redhat.com> - - PR bootstrap/116387 - * resolve.cc (resolve_operator): Use %L rather than %%L in format - string. - -2024-08-15 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/110033 - * class.cc (gfc_is_class_scalar_expr): Coarray refs that ref - only self, aka this image, are regarded as scalar, too. - * resolve.cc (resolve_assoc_var): Ignore this image coarray refs - and do not build a new class type. - * trans-expr.cc (gfc_get_caf_token_offset): Get the caf token - from the descriptor for associated variables. - (gfc_conv_variable): Same. - (gfc_trans_pointer_assignment): Assign token to temporary - associate variable, too. - (gfc_trans_scalar_assign): Add flag that assign is for associate - and use it to assign the token. - (is_assoc_assign): Detect that expressions are for associate - assign. - (gfc_trans_assignment_1): Treat associate assigns like pointer - assignments where possible. - * trans-stmt.cc (trans_associate_var): Set same_class only for - class-targets. - * trans.h (gfc_trans_scalar_assign): Add flag to - trans_scalar_assign for marking associate assignments. - -2024-08-15 Andre Vehreschild <vehre@gcc.gnu.org> - - * arith.cc (reduce_unary): Use expr.corank. - (reduce_binary_ac): Same. - (reduce_binary_ca): Same. - (reduce_binary_aa): Same. - * array.cc (gfc_match_array_ref): Same. - * check.cc (dim_corank_check): Same. - (gfc_check_move_alloc): Same. - (gfc_check_image_index): Same. - * class.cc (gfc_add_class_array_ref): Same. - (finalize_component): Same. - * data.cc (gfc_assign_data_value): Same. - * decl.cc (match_clist_expr): Same. - (add_init_expr_to_sym): Same. - * expr.cc (simplify_intrinsic_op): Same. - (simplify_parameter_variable): Same. - (gfc_check_assign_symbol): Same. - (gfc_get_variable_expr): Same. - (gfc_add_full_array_ref): Same. - (gfc_lval_expr_from_sym): Same. - (gfc_get_corank): Removed. - * frontend-passes.cc (callback_reduction): Use expr.corank. - (create_var): Same. - (combine_array_constructor): Same. - (optimize_minmaxloc): Same. - * gfortran.h (gfc_get_corank): Add corank to gfc_expr. - * intrinsic.cc (gfc_get_intrinsic_function_symbol): Use - expr.corank. - (gfc_convert_type_warn): Same. - (gfc_convert_chartype): Same. - * iresolve.cc (resolve_bound): Same. - (gfc_resolve_cshift): Same. - (gfc_resolve_eoshift): Same. - (gfc_resolve_logical): Same. - (gfc_resolve_matmul): Same. - * match.cc (copy_ts_from_selector_to_associate): Same. - * matchexp.cc (gfc_get_parentheses): Same. - * parse.cc (parse_associate): Same. - * primary.cc (gfc_match_rvalue): Same. - * resolve.cc (resolve_structure_cons): Same. - (resolve_actual_arglist): Same. - (resolve_elemental_actual): Same. - (resolve_generic_f0): Same. - (resolve_unknown_f): Same. - (resolve_operator): Same. - (gfc_expression_rank): Same and set dimen_type for coarray to - default. - (gfc_op_rank_conformable): Use expr.corank. - (add_caf_get_intrinsic): Same. - (resolve_variable): Same. - (gfc_fixup_inferred_type_refs): Same. - (check_host_association): Same. - (resolve_compcall): Same. - (resolve_expr_ppc): Same. - (resolve_assoc_var): Same. - (fixup_array_ref): Same. - (resolve_select_type): Same. - (add_comp_ref): Same. - (get_temp_from_expr): Same. - (resolve_fl_var_and_proc): Same. - (resolve_symbol): Same. - * symbol.cc (gfc_is_associate_pointer): Same. - * trans-array.cc (walk_coarray): Same. - (gfc_conv_expr_descriptor): Same. - (gfc_walk_array_ref): Same. - * trans-array.h (gfc_walk_array_ref): Same. - * trans-expr.cc (gfc_get_ultimate_alloc_ptr_comps_caf_token): - Same. - * trans-intrinsic.cc (trans_this_image): Same. - (trans_image_index): Same. - (conv_intrinsic_cobound): Same. - (gfc_walk_intrinsic_function): Same. - (conv_intrinsic_move_alloc): Same. - * trans-stmt.cc (gfc_trans_lock_unlock): Same. - (trans_associate_var): Same and adapt to slightly different - behaviour of expr.corank and gfc_get_corank. - (gfc_trans_allocate): Same. - * trans.cc (gfc_add_finalizer_call): Same. - -2024-08-14 Harald Anlauf <anlauf@gmx.de> - - * simplify.cc (gfc_simplify_sizeof): Clear used gmp variable. - * target-memory.cc (gfc_target_expr_size): Likewise. - -2024-08-14 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/102973 - * match.cc (gfc_match_associate): Reset proc_ptr parsing flag on - error. - -2024-08-14 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/116292 - * trans-intrinsic.cc (conv_intrinsic_move_alloc): Get the vtab - only for derived types and classes and adjust _len for class - types. - -2024-08-13 Harald Anlauf <anlauf@gmx.de> - Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/114308 - * array.cc (resolve_array_list): Reject array constructor value if - its declared type is abstract (F2018:C7114). - -2024-08-12 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/85510 - * resolve.cc (resolve_variable): Mark the variable as host - associated only, when it is not in an associate block. - * trans-decl.cc (generate_coarray_init): Remove incorrect unused - flag on parameter. - -2024-08-11 Harald Anlauf <anlauf@gmx.de> - - PR fortran/116221 - * intrinsic.cc (gfc_get_intrinsic_sub_symbol): Initialize variable. - * symbol.cc (gfc_get_ha_symbol): Likewise. - -2024-08-07 Julian Brown <julian@codesourcery.com> - Tobias Burnus <tobias@baylibre.com> - - * gfortran.h (gfc_option_t): Add disable_omp_is_initial_device. - * lang.opt (fbuiltin-): Add. - * options.cc (gfc_handle_option): Handle - -fno-builtin-omp_is_initial_device. - * f95-lang.cc (gfc_init_builtin_functions): Handle - DEF_GOMP_BUILTIN_COMPILER. - * trans-decl.cc (gfc_get_extern_function_decl): Add code to use - DEF_GOMP_BUILTIN_COMPILER for 'omp_is_initial_device'. - -2024-08-06 Jerry DeLisle <jvdelisle@gcc.gnu.org> - - PR fortran/109105 - * resolve.cc (CHECK_INTERFACES): New helper macro. - (resolve_operator): Replace use of snprintf with - gfc_error. - -2024-08-06 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/102689 - * trans-array.cc (get_array_ref_dim_for_loop_dim): Use the arg1 - class container carried in ss->info as the seed for a lhs in - class valued transformational intrinsic calls that are not the - rhs of an assignment. Otherwise, the lhs variable expression is - taken from the loop chain. For this latter case, the _vptr and - _len fields are set. - (gfc_trans_create_temp_array): Use either the lhs expression - seeds to build a class variable that will take the returned - descriptor as its _data field. In the case that the arg1 expr. - is used, a class typespec must be built with the correct rank - and the _vptr and _len fields set. The element size is provided - for the temporary allocation and to set the descriptor span. - (gfc_array_init_size): When an intrinsic type scalar expr3 is - used in allocation of a class array, use its element size in - the descriptor dtype. - * trans-expr.cc (gfc_conv_class_to_class): Class valued - transformational intrinsics return the pointer to the array - descriptor as the _data field of a class temporary. Extract - directly and return the address of the class temporary. - (gfc_conv_procedure_call): store the expression for the first - argument of a class valued transformational intrinsic function - in the ss info class_container field. Later, use its type as - the element type in the call to gfc_trans_create_temp_array. - (fcncall_realloc_result): Add a dtype argument and use it in - the descriptor, when available. - (gfc_trans_arrayfunc_assign): For class lhs, build a dtype with - the lhs rank and the rhs element size and use it in the call to - fcncall_realloc_result. - -2024-08-03 Steve Kargl <kargls@comcast.net> - - PR fortran/104626 - * symbol.cc (gfc_add_save): Add checks for SAVE attribute - conflicts and duplicate SAVE attribute. - -2024-08-02 Mikael Morin <mikael@gcc.gnu.org> - - * trans-intrinsic.cc (maybe_absent_optional_variable): New function. - (gfc_conv_intrinsic_minmaxloc): Remove BACK from scalarization and - evaluate it before. Add a check that BACK is not null if the - expression is an optional dummy. Save the resulting expression to a - variable. Use the variable in the generated inline code. - -2024-08-01 Jakub Jelinek <jakub@redhat.com> - - * trans-types.cc (gfc_get_array_descr_info): Don't test if - !integer_zerop (dtype_off), use fold_build_pointer_plus - unconditionally. - -2024-07-29 Tobias Burnus <tburnus@baylibre.com> - - PR fortran/115559 - * trans-common.cc (build_common_decl): Add 'omp declare target' and - 'omp declare target link' variables to offload_vars. - * trans-decl.cc (add_attributes_to_decl): Likewise; update args and - call decl_attributes. - (get_proc_pointer_decl, gfc_get_extern_function_decl, - build_function_decl): Update calls. - (gfc_get_symbol_decl): Likewise; move after 'DECL_STATIC (t)=1' - to avoid errors with symtab_node::get_create. - -2024-07-22 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/88624 - * trans-expr.cc (gfc_conv_procedure_call): Treat - pointers/references (e.g. from parameters) correctly by derefing - them. - -2024-07-21 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/59104 - * gfortran.h : Add decl_order to gfc_symbol. - * symbol.cc : Add static next_decl_order.. - (gfc_set_sym_referenced): Set symbol decl_order. - * trans-decl.cc : Include dependency.h. - (decl_order): Replace symbol declared_at.lb->location with - decl_order. - -2024-07-19 Harald Anlauf <anlauf@gmx.de> - - PR fortran/103115 - * trans-array.cc (gfc_trans_array_constructor_value): If the first - element of an array constructor is deferred-length character and - therefore does not have an element size known at compile time, do - not try to collect subsequent constant elements into a constructor - for optimization. - -2024-07-18 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/78466 - PR fortran/80774 - * array.cc (gfc_compare_array_spec): Take cotype into account. - * class.cc (gfc_build_class_symbol): Coarrays are also arrays. - * gfortran.h (IS_CLASS_COARRAY_OR_ARRAY): New macro to detect - regular and coarray class arrays. - * interface.cc (compare_components): Take codimension into - account. - * resolve.cc (resolve_symbol): Improve error message. - * simplify.cc (simplify_bound_dim): Remove duplicate. - * trans-array.cc (gfc_trans_array_cobounds): Coarrays are also - arrays. - (gfc_trans_array_bounds): Same. - (gfc_trans_dummy_array_bias): Same. - (get_coarray_as): Get the as having a non-zero codim. - (is_explicit_coarray): Detect explicit coarrays. - (gfc_conv_expr_descriptor): Create a new descriptor for explicit - coarrays. - * trans-decl.cc (gfc_build_qualified_array): Coarrays are also - arrays. - (gfc_build_dummy_array_decl): Same. - (gfc_get_symbol_decl): Same. - (gfc_trans_deferred_vars): Same. - * trans-expr.cc (class_scalar_coarray_to_class): Get the - descriptor from the correct location. - (gfc_conv_variable): Pick up the descriptor when needed. - * trans-types.cc (gfc_is_nodesc_array): Coarrays are also - arrays. - (gfc_get_nodesc_array_type): Indentation fix only. - (cobounds_match_decl): Match a tree's bounds to the expr's - bounds and return true, when they match. - (gfc_get_derived_type): Create a new type tree/descriptor, when - the cobounds of the existing declaration and expr to not - match. This happends for class arrays in parameter list, when - there are different cobound declarations. - -2024-07-18 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/108889 - * gfortran.h: Add bit field 'allocated_in_scope' to gfc_symbol. - * trans-array.cc (gfc_array_allocate): Set 'allocated_in_scope' - after allocation if not a component reference. - (gfc_alloc_allocatable_for_assignment): If 'allocated_in_scope' - not set, not a component ref and not allocated, set the array - bounds and offset to give zero length in all dimensions. Then - set allocated_in_scope. - -2024-07-18 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/82904 - * trans-types.cc (gfc_sym_type): Use type `char*` for saved - deferred length char arrays. - * trans.cc (get_array_span): Get `.span` also for `char*` typed - arrays, i.e. for those that have INTEGER_TYPE instead of - ARRAY_TYPE. - -2024-07-17 Kewen Lin <linkw@linux.ibm.com> - - PR target/112993 - * trans-types.cc (get_real_kind_from_node): Consider the case where - more than one modes have the same precision. - -2024-07-16 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/84868 - * simplify.cc (gfc_simplify_len_trim): If the argument is an - element of a parameter array, simplify all the elements and - build a new parameter array to hold the result, after checking - that it doesn't already exist. - * trans-expr.cc (gfc_get_interface_mapping_array) if a string - length is available, use it for the typespec. - (gfc_add_interface_mapping): Supply the se string length. - -2024-07-16 Prathamesh Kulkarni <prathameshk@nvidia.com> - - * trans-expr.cc (gfc_trans_zero_assign): Handle allocatable arrays. - -2024-07-13 Mikael Morin <mikael@gcc.gnu.org> - - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Add the - preliminary code generated for MASK to the preliminary code of - MINLOC/MAXLOC. - -2024-07-12 Mikael Morin <morin-mikael@orange.fr> - - * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Create a new - scalar scalarization chain element if BACK is present. Add it to - the loop. Set the scalarization chain before evaluating the - argument. - -2024-07-11 Andre Vehreschild <vehre@gcc.gnu.org> - - * trans-array.cc (gfc_conv_array_parameter): Init variable to - NULL_TREE to fix bootstrap. - -2024-07-11 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/96992 - * trans-array.cc (gfc_trans_array_bounds): Set a starting - stride, when descriptor expects a variable for the stride. - (gfc_trans_dummy_array_bias): Allow storage association for - dummy class arrays, when they are not elemental. - (gfc_conv_array_parameter): Add more general class support - and packing for classes, too. - * trans-array.h (gfc_conv_array_parameter): Add lbound shift - for class arrays. - * trans-decl.cc (gfc_build_builtin_function_decls): Add decls - for internal_un-/pack_class. - * trans-expr.cc (gfc_reset_vptr): Allow supplying a type-tree - to generate the vtab from. - (gfc_class_set_vptr): Allow supplying a class-tree to take the - vptr from. - (class_array_data_assign): Rename to gfc_class_array_data_assign - and make usable from other compile units. - (gfc_class_array_data_assign): Renamed from class_array_data_ - assign. - (gfc_conv_derived_to_class): Remove assert to - allow converting derived to class type arrays with assumed - rank. Reduce code base and use gfc_conv_array_parameter also - for classes. - (gfc_conv_class_to_class): Use gfc_class_data_assign. - (gfc_conv_procedure_call): Adapt to new signature of - gfc_conv_derived_to_class. - * trans-io.cc (transfer_expr): Same. - * trans-stmt.cc (trans_associate_var): Same. - * trans.h (gfc_conv_derived_to_class): Signature changed. - (gfc_class_array_data_assign): Made public. - (gfor_fndecl_in_pack_class): Added declaration. - (gfor_fndecl_in_unpack_class): Same. - -2024-07-08 Mikael Morin <mikael@gcc.gnu.org> - - * trans-array.cc (gfc_trans_preloop_setup): Use a separate variable - for iteration. Use directly the value of variable I if it is known. - Move the definition of the variable to the branch where the - remaining uses are. - -2024-07-03 Harald Anlauf <anlauf@gmx.de> - - PR fortran/115700 - * trans-stmt.cc (trans_associate_var): When the associate target - is an array-valued character variable, the length is known at entry - of the associate block. Move setting of string length of the - selector to the initialization part of the block. - -2024-07-01 Andrew Stubbs <ams@baylibre.com> - Thomas Schwinge <thomas@codesourcery.com> - - * openmp.cc (is_predefined_allocator): Update valid ranges to - incorporate ompx_gnu_pinned_mem_alloc. - -2024-06-29 Harald Anlauf <anlauf@gmx.de> - - PR fortran/114019 - * trans-stmt.cc (gfc_trans_allocate): Fix handling of case of - scalar character expression being used for SOURCE. - -2024-06-28 Andre Vehreschild <vehre@gcc.gnu.org> - - * trans-expr.cc (gfc_class_set_vptr): Add setting of _vptr - member. - * trans-intrinsic.cc (conv_intrinsic_move_alloc): First use - of gfc_class_set_vptr and refactor very similar code. - * trans.h (gfc_class_set_vptr): Declare the new function. - -2024-06-28 Andre Vehreschild <vehre@gcc.gnu.org> - - * trans-array.cc (structure_alloc_comps): Use reset_vptr. - * trans-decl.cc (gfc_trans_deferred_vars): Same. - (gfc_generate_function_code): Same. - * trans-expr.cc (gfc_reset_vptr): Allow supplying the class - type. - (gfc_conv_procedure_call): Use reset_vptr. - * trans-intrinsic.cc (gfc_conv_intrinsic_transfer): Same. - -2024-06-24 Harald Anlauf <anlauf@gmx.de> - - PR fortran/55978 - * trans-array.cc (gfc_conv_array_parameter): Do not dereference - data component of a missing allocatable dummy array argument for - passing as actual to optional dummy. Harden logic of presence - check for optional pointer dummy by using TRUTH_ANDIF_EXPR instead - of TRUTH_AND_EXPR. - -2024-06-20 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/59104 - * dependency.cc (dependency_fcn, gfc_function_dependency): New - functions to detect dependency in array bounds and character - lengths on old style function results. - * dependency.h : Add prototype for gfc_function_dependency. - * error.cc (error_print): Remove trailing space. - * gfortran.h : Remove dummy_order and add fn_result_spec. - * symbol.cc : Remove declaration of next_dummy_order.. - (gfc_set_sym_referenced): remove setting of symbol dummy order. - * trans-array.cc (gfc_trans_auto_array_allocation): Detect - non-dummy symbols with function dependencies and put the - allocation at the end of the initialization code. - * trans-decl.cc : Include dependency.h. - (decl_order): New function that determines uses the location - field of the symbol 'declared_at' to determine the order of two - declarations. - (gfc_defer_symbol_init): Call gfc_function_dependency to put - dependent symbols in the right part of the tlink chain. Use - the location field of the symbol declared_at to determine the - order of declarations. - (gfc_trans_auto_character_variable): Put character length - initialization of dependent symbols at the end of the chain. - * trans.cc (gfc_add_init_cleanup): Add boolean argument with - default false that determines whther an expression is placed at - the back or the front of the initialization chain. - * trans.h : Update the prototype for gfc_add_init_cleanup. - -2024-06-19 Harald Anlauf <anlauf@gmx.de> - - PR fortran/115390 - * trans-decl.cc (gfc_conv_cfi_to_gfc): Move derivation of type sizes - for character via gfc_trans_vla_type_sizes to after character length - has been set. - -2024-06-19 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/90076 - * trans-decl.cc (gfc_generate_function_code): Set vptr for - results to declared class type. - * trans-expr.cc (gfc_reset_vptr): Allow to provide the typespec - instead of the expression. - * trans.h (gfc_reset_vptr): Same. - -2024-06-17 Andre Vehreschild <vehre@gcc.gnu.org> - - * trans.cc (gfc_deallocate_with_status): Check that object to deref - is an array, before applying array deref. - -2024-06-12 David Malcolm <dmalcolm@redhat.com> - - * error.cc (gfc_clear_pp_buffer): Likewise. - (gfc_warning): Likewise. - (gfc_warning_check): Likewise. - (gfc_error_opt): Likewise. - (gfc_error_check): Likewise. - -2024-06-07 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/90068 - * trans-array.cc (gfc_trans_array_ctor_element): Eval non- - variable expressions once only. - (gfc_trans_array_constructor_value): Add statements of - final block. - (trans_array_constructor): Detect when final block is required. - -2024-06-07 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/90072 - * expr.cc (gfc_is_alloc_class_scalar_function): Detect - allocatable class return types also for user-defined - functions. - * trans-expr.cc (gfc_conv_procedure_call): Same. - (trans_class_vptr_len_assignment): Compute vptr len - assignment correctly for user-defined functions. - -2024-06-05 Jakub Jelinek <jakub@redhat.com> - Frederik Harwath <frederik@codesourcery.com> - Sandra Loosemore <sandra@codesourcery.com> - - * gfortran.h (enum gfc_statement): Add ST_OMP_UNROLL, - ST_OMP_END_UNROLL, ST_OMP_TILE and ST_OMP_END_TILE. - (struct gfc_omp_clauses): Add sizes_list, partial, full and erroneous - members. - (enum gfc_exec_op): Add EXEC_OMP_UNROLL and EXEC_OMP_TILE. - (gfc_expr_list_len): Declare. - * match.h (gfc_match_omp_tile, gfc_match_omp_unroll): Declare. - * openmp.cc (gfc_get_location): Declare. - (gfc_free_omp_clauses): Free sizes_list. - (match_oacc_expr_list): Rename to ... - (match_omp_oacc_expr_list): ... this. Add is_omp argument and - change diagnostic wording if it is true. - (enum omp_mask2): Add OMP_CLAUSE_{FULL,PARTIAL,SIZES}. - (gfc_match_omp_clauses): Parse full, partial and sizes clauses. - (gfc_match_oacc_wait): Use match_omp_oacc_expr_list instead of - match_oacc_expr_list. - (OMP_UNROLL_CLAUSES, OMP_TILE_CLAUSES): Define. - (gfc_match_omp_tile, gfc_match_omp_unroll): New functions. - (resolve_omp_clauses): Diagnose full vs. partial clause conflict. - Resolve sizes clause arguments. - (find_nested_loop_in_chain): Use switch instead of series of ifs. - Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. - (gfc_resolve_omp_do_blocks): Set omp_current_do_collapse to - list length of sizes_list if present. - (gfc_resolve_do_iterator): Return for EXEC_OMP_TILE or - EXEC_OMP_UNROLL. - (restructure_intervening_code): Remove spurious ()s around & operands. - (is_outer_iteration_variable): Handle EXEC_OMP_TILE and - EXEC_OMP_UNROLL. - (check_nested_loop_in_chain): Likewise. - (expr_is_invariant): Likewise. - (resolve_omp_do): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. Diagnose - tile without sizes clause. Use sizes_list length for count if - non-NULL. Set code->ext.omp_clauses->erroneous on loops where we've - reported diagnostics. Sorry for mixing non-rectangular loops with - generated loops. - (omp_code_to_statement): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. - (gfc_resolve_omp_directive): Likewise. - * parse.cc (decode_omp_directive): Parse end tile, end unroll, tile - and unroll. Move nothing entry alphabetically. - (case_exec_markers): Add ST_OMP_TILE and ST_OMP_UNROLL. - (gfc_ascii_statement): Handle ST_OMP_END_TILE, ST_OMP_END_UNROLL, - ST_OMP_TILE and ST_OMP_UNROLL. - (parse_omp_do): Add nested argument. Handle ST_OMP_TILE and - ST_OMP_UNROLL. - (parse_omp_structured_block): Adjust parse_omp_do caller. - (parse_executable): Likewise. Handle ST_OMP_TILE and ST_OMP_UNROLL. - * resolve.cc (gfc_resolve_blocks): Handle EXEC_OMP_TILE and - EXEC_OMP_UNROLL. - (gfc_resolve_code): Likewise. - * st.cc (gfc_free_statement): Likewise. - * trans.cc (trans_code): Likewise. - * trans-openmp.cc (gfc_trans_omp_clauses): Handle full, partial and - sizes clauses. Use tree_cons + nreverse instead of - temporary vector and build_tree_list_vec for tile_list handling. - (gfc_expr_list_len): New function. - (gfc_trans_omp_do): Rename tile to oacc_tile. Handle sizes clause. - Don't assert code->op is EXEC_DO. Handle EXEC_OMP_TILE and - EXEC_OMP_UNROLL. - (gfc_trans_omp_directive): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. - * dump-parse-tree.cc (show_omp_clauses): Dump full, partial and - sizes clauses. - (show_omp_node): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. - (show_code_node): Likewise. - -2024-06-05 Kewen Lin <linkw@linux.ibm.com> - - * trans-intrinsic.cc (build_round_expr): Use TYPE_PRECISION of - long_double_type_node to replace LONG_DOUBLE_TYPE_SIZE. - * trans-types.cc (gfc_build_real_type): Use TYPE_PRECISION of - {float,double,long_double}_type_node to replace - {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE. - -2024-06-04 Harald Anlauf <anlauf@gmx.de> - - PR fortran/83865 - * trans-stmt.cc (gfc_trans_allocate): Restrict special case for - source-expression with zero-length character to rank 0, so that - the array shape is not discarded. - -2024-05-29 Andre Vehreschild <vehre@gcc.gnu.org> - - PR fortran/90069 - * trans-expr.cc (gfc_conv_procedure_call): Evaluate - expressions with side-effects only ones and ensure - old is freeed. - -2024-05-24 Harald Anlauf <anlauf@gmx.de> - Steven G. Kargl <kargl@gcc.gnu.org> - - PR fortran/93635 - * symbol.cc (conflict_std): Helper function for reporting attribute - conflicts depending on the Fortran standard version. - (conf_std): Helper macro for checking standard-dependent conflicts. - (gfc_check_conflict): Use it. - -2024-05-24 Harald Anlauf <anlauf@gmx.de> - - PR fortran/86100 - * trans-array.cc (gfc_conv_ss_startstride): Use abridged_ref_name - to generate a more user-friendly name for bounds-check messages. - * trans-expr.cc (gfc_copy_class_to_class): Fix bounds check for - rank>1 by looping over the dimensions. - -2024-05-23 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/103312 - * dependency.cc (gfc_dep_compare_expr): Handle component call - expressions. Return -2 as default and return 0 if compared with - a function expression that is from an interface body and has - the same name. - * expr.cc (gfc_reduce_init_expr): If the expression is a comp - call do not attempt to reduce, defer to resolution and return - false. - * trans-types.cc (gfc_get_dtype_rank_type, - gfc_get_nodesc_array_type): Fix whitespace. - -2024-05-20 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/99798 - * symbol.cc (gfc_release_symbol): Move the condition guarding - the handling cyclic references... - (cyclic_reference_break_needed): ... here as a new predicate. - Remove superfluous parts. Add a condition preventing any premature - release with submodule symbols. - -2024-05-20 Tobias Burnus <tburnus@baylibre.com> - - PR fortran/115150 - * trans-intrinsic.cc (gfc_conv_intrinsic_bound): Fix SHAPE - for zero-size arrays - -2024-05-20 Tobias Burnus <tburnus@baylibre.com> - - * invoke.texi (fcoarray): Link to OpenCoarrays.org; - mention libcaf_single. - -2024-05-17 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/114874 - * gfortran.h: Add 'assoc_name_inferred' to gfc_namespace. - * match.cc (gfc_match_select_type): Set 'assoc_name_inferred' - in select type namespace if the selector has inferred type. - * primary.cc (gfc_match_varspec): If a select type temporary - is apparently scalar and a left parenthesis has been detected, - check the current namespace has 'assoc_name_inferred' set. If - so, set inferred_type. - * resolve.cc (resolve_variable): If the namespace of a select - type temporary is marked with 'assoc_name_inferred' call - gfc_fixup_inferred_type_refs to ensure references are OK. - (gfc_fixup_inferred_type_refs): Catch invalid array refs.. - -2024-05-15 Jakub Jelinek <jakub@redhat.com> - - PR c/115103 - * openmp.cc (resolve_omp_clauses): Diagnose grainsize - used together with num_tasks or nogroup used together with - reduction. - -2024-05-13 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/113363 - * trans-array.cc (gfc_array_init_size): Use the expr3 dtype so - that the correct element size is used. - * trans-expr.cc (gfc_conv_procedure_call): Remove restriction - that ss and ss->loop be present for the finalization of class - array function results. - (trans_class_assignment): Use free and malloc, rather than - realloc, for character expressions assigned to unlimited poly - entities. - * trans-stmt.cc (gfc_trans_allocate): Build a correct rhs for - the assignment of an unlimited polymorphic 'source'. - -2024-05-12 Harald Anlauf <anlauf@gmx.de> - - * primary.cc (gfc_match_varspec): Replace 'ref' argument to - is_inquiry_ref() by NULL when the result is not needed to avoid - a memleak. - -2024-05-12 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/84006 - PR fortran/100027 - PR fortran/98534 - * iresolve.cc (gfc_resolve_transfer): Emit a TODO error for - unlimited polymorphic mold. - * trans-expr.cc (gfc_resize_class_size_with_len): Use the fold - even if a block is not available in which to fix the result. - (trans_class_assignment): Enable correct assignment of - character expressions to unlimited polymorphic variables using - lhs _len field and rse string_length. - * trans-intrinsic.cc (gfc_conv_intrinsic_storage_size): Extract - the class expression so that the unlimited polymorphic class - expression can be used in gfc_resize_class_size_with_len to - obtain the storage size for character payloads. Guard the use - of GFC_DECL_SAVED_DESCRIPTOR by testing for DECL_LANG_SPECIFIC - to prevent the ICE. Also, invert the order to use the class - expression extracted from the argument. - (gfc_conv_intrinsic_transfer): In same way as 'storage_size', - use the _len field to obtaining the correct length for arg 1. - Add a branch for the element size in bytes of class expressions - with provision to make use of the unlimited polymorphic _len - field. Again, the class references are explicitly identified. - 'mold_expr' was already declared. Use it instead of 'arg'. Do - not fix 'dest_word_len' for deferred character sources because - reallocation on assign makes use of it before it is assigned. - -2024-05-11 Harald Anlauf <anlauf@gmx.de> - - PR fortran/115039 - * expr.cc (gfc_traverse_expr): An inquiry ref does not constitute - a dependency and cannot collide with a symbol. - -2024-05-05 Harald Anlauf <anlauf@gmx.de> - - PR fortran/114827 - * trans-array.cc (gfc_alloc_allocatable_for_assignment): Take into - account _len of unlimited polymorphic entities when calculating - the effective element size for allocation size and array span. - Set _len of lhs to _len of rhs. - * trans-expr.cc (trans_class_assignment): Take into account _len - of unlimited polymorphic entities for allocation size. - -2024-04-29 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - * expr.cc (check_transformational): Add SELECTED_LOGICAL_KIND - to allowed functions for Fortran 2023. - * gfortran.h (GFC_ISYM_SL_KIND): New. - * gfortran.texi: Mention SELECTED_LOGICAL_KIND. - * intrinsic.cc (add_functions): Add SELECTED_LOGICAL_KIND. - (gfc_intrinsic_func_interface): Allow it in initialization - expressions. - * intrinsic.h (gfc_simplify_selected_logical_kind): New proto. - * intrinsic.texi: Add SELECTED_LOGICAL_KIND. - * simplify.cc (gfc_simplify_selected_logical_kind): New - function. - * trans-decl.cc (gfc_build_intrinsic_function_decls): Initialize - gfor_fndecl_sl_kind. - * trans-intrinsic.cc (gfc_conv_intrinsic_sl_kind): New function. - (gfc_conv_intrinsic_function): Call it for GFC_ISYM_SL_KIND. - * trans.h (gfor_fndecl_sl_kind): New symbol. - -2024-04-29 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> - - * iso-fortran-env.def: Add logical{8,16,32,64} and - real16 named constants. - -2024-04-29 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/114959 - * trans-expr.cc (gfc_trans_class_init_assign): Return NULL_TREE - if the default initializer has all NULL fields. Guard this - by a requirement that the code not be EXEC_INIT_ASSIGN and that - the object be an INTENT_OUT dummy. - * trans-stmt.cc (gfc_trans_allocate): Change the initializer - code for allocate with mold to EXEC_ALLOCATE to allow an - initializer with all NULL fields. - -2024-04-25 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/93678 - * trans-expr.cc (gfc_conv_procedure_call): Use the interface, - where possible, to obtain the type of character procedure - pointers of class entities. - -2024-04-25 Paul Thomas <pault@gcc.gnu.org> - Jakub Jelinek <jakub@gcc.gnu.org> - - PR fortran/89462 - * decl.cc (build_sym): Add an extra argument 'elem'. If 'elem' - is greater than 1, gfc_new_charlen is called to generate a new - charlen, registered in the symbol namespace. - (variable_decl, enumerator_decl): Set the new argument in the - calls to build_sym. - -2024-04-21 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/103471 - * resolve.cc (resolve_actual_arglist): Catch variables silently - set as untyped, resetting the flag so that gfc_resolve_expr can - generate the no implicit type error. - (gfc_resolve_index_1): Block index expressions of unknown type - from being converted to default integer, avoiding the fatal - error in trans-decl.cc. - * symbol.cc (gfc_set_default_type): Remove '(symbol)' from the - 'no IMPLICIT type' error message. - * trans-decl.cc (gfc_get_symbol_decl): Change fatal error locus - to that of the symbol declaration. - (gfc_trans_deferred_vars): Remove two trailing tabs. - -2024-04-18 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/114739 - * primary.cc (gfc_match_varspec): Check for default type before - checking for derived types with the right component name. - -2024-04-16 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113793 - * resolve.cc (resolve_allocate_expr): Reject ALLOCATE with SOURCE= - or MOLD= specifier for unequal length. - * trans-stmt.cc (gfc_trans_allocate): If an allocatable character - variable has fixed length, use it and do not use the source length. - With bounds-checking enabled, add a runtime check for same length. - -2024-04-10 Harald Anlauf <anlauf@gmx.de> - - PR fortran/106500 - * check.cc (is_c_interoperable): Fix checks for C_SIZEOF. - (gfc_check_c_f_pointer): Reject function returning a pointer as FPTR, - and improve an error message. - -2024-04-09 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/114535 - * resolve.cc (resolve_symbol): Remove last chunk that checked - for finalization of unreferenced symbols. - -2024-04-09 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/113956 - * trans-expr.cc (gfc_trans_pointer_assignment): Remove assert - causing the ICE since it was unnecesary. - -2024-04-02 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/106999 - * interface.cc (gfc_compare_interfaces): Add error for a - subroutine proc pointer passed to a variable formal. - (compare_parameter): If a procedure pointer is being passed to - a non-procedure formal arg, and there is an an interface, use - gfc_compare_interfaces to check and provide a more useful error - message. - -2024-04-02 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/112407 - * resolve.cc (resolve_procedure_expression): Change the test for - for recursion in the case of hidden procedures from modules. - (resolve_typebound_static): Add warning for possible recursive - calls to typebound procedures. - * trans-expr.cc (gfc_trans_class_init_assign): Do not apply - default initializer to class dummy where component initializers - are all null. - -2024-03-29 Harald Anlauf <anlauf@gmx.de> - - PR fortran/50410 - * trans-expr.cc (gfc_conv_structure): Check for NULL pointer. - -2024-03-29 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/36337 - PR fortran/110987 - PR fortran/113885 - * trans-expr.cc (gfc_trans_assignment_1): Place finalization - block before rhs post block for elemental rhs. - * trans.cc (gfc_finalize_tree_expr): Check directly if a type - has no components, rather than the zero components attribute. - Treat elemental zero component expressions in the same way as - scalars. - -2024-03-28 Harald Anlauf <anlauf@gmx.de> - - PR fortran/114474 - * primary.cc (gfc_variable_attr): Catch variables used in structure - constructors within DATA statements that are still tagged with a - temporary type BT_PROCEDURE from match_actual_arg and which have the - target attribute, and fix their typespec. - -2024-03-28 Mikael Morin <mikael@gcc.gnu.org> - Harald Anlauf <anlauf@gmx.de> - - PR fortran/111781 - PR fortran/114475 - * expr.cc (check_restricted): In submodules, allow variables host- - associated from the parent module. - -2024-03-22 Harald Anlauf <anlauf@gmx.de> - - PR fortran/55978 - * interface.cc (gfc_compare_actual_formal): Skip size check for - NULL() actual without MOLD argument. - -2024-03-22 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/107426 - * gfortran.h (gfc_save_module_list, gfc_restore_old_module_list): - New declarations. - * module.cc (old_module_list_tail): New global variable. - (gfc_save_module_list, gfc_restore_old_module_list): New functions. - (gfc_use_modules): Set module_list and old_module_list_tail. - * parse.cc (next_statement): Save module_list before doing any work. - (reject_statement): Restore module_list to its saved value. - -2024-03-22 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/111781 - * symbol.cc (gfc_get_procedure_ns, gfc_get_spec_ns): New functions. - * gfortran.h (gfc_get_procedure_ns, gfc_get_spec ns): Declare them. - (gfc_is_formal_arg): Remove. - * expr.cc (check_restricted): Remove special case allowing local - variable in dummy argument bound expressions. Use gfc_get_spec_ns - to get the right namespace. - * resolve.cc (gfc_is_formal_arg, formal_arg_flag): Remove. - (gfc_resolve_formal_arglist): Set gfc_current_ns. Quit loop and - restore gfc_current_ns instead of early returning. - (resolve_symbol): Factor common array spec resolution code to... - (resolve_symbol_array_spec): ... this new function. Additionnally - set and restore gfc_current_ns. - -2024-03-21 Harald Anlauf <anlauf@gmx.de> - - PR fortran/30802 - * trans-array.cc (abridged_ref_name): New helper function. - (trans_array_bound_check): Use it. - (array_bound_check_elemental): Likewise. - (gfc_conv_array_ref): Likewise. - -2024-03-20 Jakub Jelinek <jakub@redhat.com> - - * trans-array.cc (structure_alloc_comps): Use integer_zero_node - instead of build_zero_cst (integer_type_node) or - build_int_cst (integer_type_node, 0) and integer_one_node instead of - build_int_cst (integer_type_node, 1). - * trans-expr.cc (conv_scalar_char_value): Likewise. - * trans-stmt.cc (gfc_trans_form_team, gfc_trans_change_team, - gfc_trans_sync_team, gfc_trans_sync): Likewise. - * trans-decl.cc (create_main_function): Likewise. - * trans-intrinsic.cc (trans_this_image, conv_intrinsic_move_alloc): - Likewise. - * trans.cc (gfc_allocate_using_caf_lib, gfc_deallocate_with_status): - Likewise. - -2024-03-18 Harald Anlauf <anlauf@gmx.de> - - PR fortran/103715 - * frontend-passes.cc (check_externals_expr): Prevent invalid read - in case of mismatch of external subroutine with function. - -2024-03-17 Harald Anlauf <anlauf@gmx.de> - - PR fortran/101135 - * trans-array.cc (gfc_get_dataptr_offset): Check for optional - arguments being present before dereferencing data pointer. - -2024-03-15 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/87477 - PR fortran/89645 - PR fortran/99065 - PR fortran/114141 - PR fortran/114280 - * class.cc (gfc_change_class): New function needed for - associate names, when rank changes or a derived type is - produced by resolution - * dump-parse-tree.cc (show_code_node): Make output for SELECT - TYPE more comprehensible. - * expr.cc (find_inquiry_ref): Do not simplify expressions of - an inferred type. - * gfortran.h : Add 'gfc_association_list' to structure - 'gfc_association_list'. Add prototypes for - 'gfc_find_derived_types', 'gfc_fixup_inferred_type_refs' and - 'gfc_change_class'. Add macro IS_INFERRED_TYPE. - * match.cc (copy_ts_from_selector_to_associate): Add bolean arg - 'select_type' with default false. If this is a select type name - and the selector is a inferred type, build the class type and - apply it to the associate name. - (build_associate_name): Pass true to 'select_type' in call to - previous. - * parse.cc (parse_associate): If the selector is inferred type - the associate name is too. Make sure that function selector - class and rank, if known, are passed to the associate name. If - a function result exists, pass its typespec to the associate - name. - * primary.cc (resolvable_fcns): New function to check that all - the function references are resolvable. - (gfc_match_varspec): If a scalar derived type select type - temporary has an array reference, match the array reference, - treating this in the same way as an equivalence member. Do not - set 'inquiry' if applied to an unknown type the inquiry name - is ambiguous with the component of an accessible derived type. - Check that resolution of the target expression is OK by testing - if the symbol is declared or is an operator expression, then - using 'resolvable_fcns' recursively. If all is well, resolve - the expression. If this is an inferred type with a component - reference, call 'gfc_find_derived_types' to find a suitable - derived type. If there is an inquiry ref and the symbol either - is of unknown type or is inferred to be a derived type, set the - primary and symbol TKR appropriately. - * resolve.cc (resolve_variable): Call new function below. - (gfc_fixup_inferred_type_refs): New function to ensure that the - expression references for a inferred type are consistent with - the now fixed up selector. - (resolve_assoc_var): Ensure that derived type or class function - selectors transmit the correct arrayspec to the associate name. - (resolve_select_type): If the selector is an associate name of - inferred type and has no component references, the associate - name should have its typespec. Simplify the conversion of a - class array to class scalar by calling 'gfc_change_class'. - Make sure that a class, inferred type selector with an array - ref transfers the typespec from the symbol to the expression. - * symbol.cc (gfc_set_default_type): If an associate name with - unknown type has a selector expression, try resolving the expr. - (find_derived_types, gfc_find_derived_types): New functions - that search for a derived type with a given name. - * trans-expr.cc (gfc_conv_variable): Some inferred type exprs - escape resolution so call 'gfc_fixup_inferred_type_refs'. - * trans-stmt.cc (trans_associate_var): Tidy up expression for - 'class_target'. Finalize and free class function results. - Correctly handle selectors that are class functions and class - array references, passed as derived types. - -2024-03-14 Thomas Schwinge <thomas@codesourcery.com> - - * dump-parse-tree.cc (show_omp_clauses): Handle 'self_expr'. - * openmp.cc (gfc_free_omp_clauses): Likewise. - * trans-openmp.cc (gfc_split_omp_clauses): Don't handle 'self_expr'. - -2024-03-14 Chung-Lin Tang <cltang@baylibre.com> - - * dump-parse-tree.cc (show_omp_namelist): Print "readonly," for - OMP_LIST_MAP and OMP_LIST_CACHE if n->u.map.readonly is set. - Adjust 'n->u.map_op' to 'n->u.map.op'. - * gfortran.h (typedef struct gfc_omp_namelist): Adjust map_op as - 'ENUM_BITFIELD (gfc_omp_map_op) op:8', add 'bool readonly' field, - change to named struct field 'map'. - * openmp.cc (gfc_match_omp_map_clause): Adjust 'n->u.map_op' to - 'n->u.map.op'. - (gfc_match_omp_clause_reduction): Likewise. - (gfc_match_omp_clauses): Add readonly modifier parsing for OpenACC - copyin clause, set 'n->u.map.op' and 'n->u.map.readonly' for parsed - clause. Adjust 'n->u.map_op' to 'n->u.map.op'. - (gfc_match_oacc_declare): Adjust 'n->u.map_op' to 'n->u.map.op'. - (gfc_match_oacc_cache): Add readonly modifier parsing for OpenACC - cache directive. - (resolve_omp_clauses): Adjust 'n->u.map_op' to 'n->u.map.op'. - * trans-decl.cc (add_clause): Adjust 'n->u.map_op' to 'n->u.map.op'. - (finish_oacc_declare): Likewise. - * trans-openmp.cc (gfc_trans_omp_clauses): Set OMP_CLAUSE_MAP_READONLY, - OMP_CLAUSE__CACHE__READONLY to 1 when readonly is set. Adjust - 'n->u.map_op' to 'n->u.map.op'. - (gfc_add_clause_implicitly): Adjust 'n->u.map_op' to 'n->u.map.op'. - -2024-03-13 Harald Anlauf <anlauf@gmx.de> - - PR fortran/114001 - * expr.cc (gfc_is_simply_contiguous): Adjust logic so that CLASS - symbols are also handled. - -2024-03-13 Tobias Burnus <tburnus@baylibre.com> - - PR fortran/114283 - * trans-openmp.cc (gfc_omp_predetermined_mapping): Map dummy - procedures as firstprivate. - -2024-03-12 Harald Anlauf <anlauf@gmx.de> - - PR fortran/110826 - * array.cc (gfc_array_dimen_size): When walking the ref chain of an - array and the ultimate component is a procedure pointer, do not try - to figure out its dimension even if it is a array-valued function. - -2024-03-06 Harald Anlauf <anlauf@gmx.de> - - PR fortran/103707 - PR fortran/106987 - * arith.cc (is_hard_arith_error): New helper function to determine - whether an arithmetic error is "hard" or not. - (check_result): Use it. - (gfc_arith_divide): Set "Division by zero" only for regular - numerators of real and complex divisions. - (reduce_unary): Use is_hard_arith_error to determine whether a hard - or (recoverable) soft error was encountered. Terminate immediately - on hard error, otherwise remember code of first soft error. - (reduce_binary_ac): Likewise. - (reduce_binary_ca): Likewise. - (reduce_binary_aa): Likewise. - -2024-03-01 Harald Anlauf <anlauf@gmx.de> - - PR fortran/104819 - * check.cc (gfc_check_null): Handle nested NULL()s. - (is_c_interoperable): Check for MOLD argument of NULL() as part of - the interoperability check. - * interface.cc (gfc_compare_actual_formal): Extend checks for NULL() - actual arguments for presence of MOLD argument when required by - Interp J3/22-146. - -2024-02-29 Alexander Westbrooks <alexanderw@gcc.gnu.org> - - PR fortran/82943 - PR fortran/86148 - PR fortran/86268 - * decl.cc (gfc_get_pdt_instance): Set the PDT instance field - 'f2k_derived', if not set already, to point to the given - PDT template 'f2k_derived' namespace in order to give the - PDT instance referential access to the typebound procedures - of the template. - * gfortran.h (gfc_pdt_is_instance_of): Add prototype. - * resolve.cc (resolve_typebound_procedure): If the derived type - does not have the attribute 'pdt_template' set, compare the - dummy argument to the 'resolve_bindings_derived' type like usual. - If the derived type is a 'pdt_template', then check if the - dummy argument is an instance of the PDT template. If the derived - type is a PDT template, and the dummy argument is an instance of - that template, but the dummy argument 'param_list' is not - SPEC_ASSUMED, check if there are any LEN parameters in the - dummy argument. If there are no LEN parameters, then this implies - that there are only KIND parameters in the dummy argument. - If there are LEN parameters, this would be an error, for all - LEN parameters for the dummy argument MUST be assumed for - typebound procedures of PDTs. - (resolve_pdt): Add a check for ALLOCATABLE and POINTER attributes for - SPEC_DEFERRED parameters of PDT class symbols. ALLOCATABLE and - POINTER attributes for a PDT class symbol are stored in the - 'class_pointer' and 'allocatable' attributes of the '_data' - component respectively. - * symbol.cc (gfc_pdt_is_instance_of): New function. - -2024-02-26 Harald Anlauf <anlauf@gmx.de> - - PR fortran/114012 - * trans-expr.cc (gfc_conv_procedure_call): Evaluate non-trivial - arguments just once before assigning to an unlimited polymorphic - dummy variable. - -2024-02-23 Steve Kargl <kargl@gcc.gnu.org> - Harald Anlauf <anlauf@gmx.de> - - PR fortran/114024 - * trans-stmt.cc (gfc_trans_allocate): When a source expression has - substring references, part-refs, or %re/%im inquiries, wrap the - entity in parentheses to force evaluation of the expression. - -2024-02-23 Tobias Burnus <tburnus@baylibre.com> - - * openmp.cc (gfc_match_omp_depobj): Use OPT_Wopenmp - as warning category in gfc_warning. - -2024-02-20 Peter Hill <peter.hill@york.ac.uk> - - PR fortran/105658 - * trans-expr.cc (gfc_conv_intrinsic_to_class): When passing an - array component reference of intrinsic type to a procedure - with an unlimited polymorphic dummy argument, a temporary - should be created. - -2024-02-17 Jakub Jelinek <jakub@redhat.com> - - PR fortran/113503 - * trans-expr.cc (alloc_scalar_allocatable_subcomponent): Don't - overwrite expr2->ts.u.cl->backend_decl, instead set size to - expr2->ts.u.cl->backend_decl first and use size instead of - expr2->ts.u.cl->backend_decl. - (gfc_trans_subcomponent_assign): Emit se.pre into block - before calling alloc_scalar_allocatable_subcomponent instead of - after it. - -2024-02-17 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113911 - * trans-array.cc (gfc_trans_deferred_array): Do not clobber - deferred length for a character variable passed as dummy argument. - -2024-02-15 Kwok Cheung Yeung <kcyeung@baylibre.com> - - * dump-parse-tree.cc (show_attr): Handle omp_declare_target_indirect - attribute. - * f95-lang.cc (gfc_gnu_attributes): Add entry for 'omp declare - target indirect'. - * gfortran.h (symbol_attribute): Add omp_declare_target_indirect - field. - (struct gfc_omp_clauses): Add indirect field. - * openmp.cc (omp_mask2): Add OMP_CLAUSE_INDIRECT. - (gfc_match_omp_clauses): Match indirect clause. - (OMP_DECLARE_TARGET_CLAUSES): Add OMP_CLAUSE_INDIRECT. - (gfc_match_omp_declare_target): Check omp_device_type and apply - omp_declare_target_indirect attribute to symbol if indirect clause - active. Show warning if there are only device_type and/or indirect - clauses on the directive. - * trans-decl.cc (add_attributes_to_decl): Add 'omp declare target - indirect' attribute if symbol has indirect attribute set. - -2024-02-14 Steve Kargl <kargl@gcc.gnu.org> - - PR fortran/105847 - * trans-io.cc (transfer_namelist_element): When building the - namelist object name, if the use rename attribute is set, use - the local name specified in the use statement. - -2024-02-14 Jakub Jelinek <jakub@redhat.com> - - * error.cc (error_print): For u printing of ptrdiff_t, - print ptrdiff_t argument converted to unsigned long long and - masked with 2ULL * PTRDIFF_MAX + 1. - -2024-02-13 Tobias Burnus <tburnus@baylibre.com> - - PR middle-end/113904 - * trans-openmp.cc (gfc_trans_omp_declare_variant): Handle splitting of - OMP_TRAIT_PROPERTY_EXPR into OMP_TRAIT_PROPERTY_{DEV_NUM,BOOL}_EXPR. - * openmp.cc (gfc_match_omp_context_selector): Likewise; rejects - non-const device_num/condition; improve diagnostic. - -2024-02-13 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113866 - * trans-expr.cc (gfc_conv_procedure_call): When passing an optional - dummy argument to an optional dummy argument of a bind(c) procedure - and the dummy argument is passed via a CFI descriptor, no special - presence check and passing of a default NULL pointer is needed. - -2024-02-13 Steve Kargl <kargl@gcc.gnu.org> - - PR fortran/113883 - * trans-array.cc (gfc_trans_deferred_array): Set length to zero, - avoiding extraneous diagnostics. - -2024-02-10 Jakub Jelinek <jakub@redhat.com> - - * error.cc (error_print): Handle z and t modifiers on d, i and u. - * check.cc (gfc_check_transfer): Use %zd instead of %ld and casts to - long. - * primary.cc (gfc_convert_to_structure_constructor): Use %td instead - of %ld and casts to long. - -2024-02-10 Jakub Jelinek <jakub@redhat.com> - - * trans-common.cc (build_common_decl): Use %wu instead of %lu and - casts to unsigned long. - * resolve.cc (resolve_ordinary_assign): Use %wd instead of %ld and - casts to long. - * array.cc (gfc_resolve_character_array_constructor): Likewise. - * data.cc (create_character_initializer): Likewise. - -2024-02-09 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113799 - * arith.cc (reduce_unary): Remember any overflow encountered during - reduction of unary arithmetic operations on array constructors and - continue, and return error status, but terminate on serious errors. - -2024-01-28 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113377 - * trans-expr.cc (conv_dummy_value): Treat NULL actual argument to - optional dummy with the VALUE attribute as not present. - (gfc_conv_procedure_call): Likewise. - -2024-01-27 Harald Anlauf <anlauf@gmx.de> - - PR fortran/104908 - * trans-array.cc (gfc_conv_array_ref): Restrict use of transformed - descriptor (sym->backend_decl) to the unlimited polymorphic case. - -2024-01-24 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113377 - * trans-expr.cc (conv_dummy_value): New. - (gfc_conv_procedure_call): Factor code for handling dummy arguments - with the VALUE attribute in the scalar case into conv_dummy_value(). - Reuse and adjust for calling elemental procedures. - -2024-01-21 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113377 - * trans-expr.cc (gfc_conv_procedure_call): Fix handling of optional - scalar arguments of intrinsic type with the VALUE attribute. - -2024-01-20 Mikael Morin <mikael@gcc.gnu.org> - - PR fortran/48776 - PR fortran/111291 - * parse.cc: Restore current interface to its previous value on error. - -2024-01-19 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113471 - * trans-array.cc (array_bound_check_elemental): Array bounds check - shall apply here to elemental dimensions of an array section only. - -2024-01-13 Harald Anlauf <anlauf@gmx.de> - - PR fortran/67277 - * trans-intrinsic.cc (gfc_conv_intrinsic_ishftc): Handle optional - dummy argument for SIZE passed to ISHFTC. Set default value to - BIT_SIZE(I) when missing. - -2024-01-13 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113305 - * gfortran.h (gfc_loop_annot): New. - (gfc_iterator, gfc_forall_iterator): Use for annotation control. - * array.cc (gfc_copy_iterator): Adjust. - * gfortran.texi: Document annotations IVDEP, UNROLL n, VECTOR, - NOVECTOR as applied to DO CONCURRENT. - * parse.cc (parse_do_block): Parse annotations IVDEP, UNROLL n, - VECTOR, NOVECTOR as applied to DO CONCURRENT. Apply UNROLL only to - first loop control variable. - * trans-stmt.cc (iter_info): Use gfc_loop_annot. - (gfc_trans_simple_do): Adjust. - (gfc_trans_forall_loop): Annotate loops with IVDEP, UNROLL n, - VECTOR, NOVECTOR as needed for DO CONCURRENT. - (gfc_trans_forall_1): Handle loop annotations. - -2024-01-08 Harald Anlauf <anlauf@gmx.de> - - PR fortran/113245 - * trans-intrinsic.cc (gfc_conv_intrinsic_size): Use - gfc_conv_expr_present() for proper check of optional DIM argument. - -2024-01-06 Harald Anlauf <anlauf@gmx.de> - José Rui Faustino de Sousa <jrfsousa@gmail.com> - - PR fortran/96724 - * iresolve.cc (gfc_resolve_repeat): Force conversion to - gfc_charlen_int_kind before call to gfc_multiply. - -2024-01-04 David Malcolm <dmalcolm@redhat.com> - - * lang.opt.urls: New file, autogenerated by - regenerate-opt-urls.py. - -2024-01-03 Harald Anlauf <anlauf@gmx.de> - - * trans-types.cc (gfc_get_nodesc_array_type): Clear used gmp - variables. - -2024-01-03 Jakub Jelinek <jakub@redhat.com> - - * gfortranspec.cc (lang_specific_driver): Update copyright notice - dates. - * gfc-internals.texi: Bump @copying's copyright year. - * gfortran.texi: Ditto. - * intrinsic.texi: Ditto. - * invoke.texi: Ditto. - -Copyright (C) 2024 Free Software Foundation, Inc. +Copyright (C) 2025 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/fortran/ChangeLog-2002 b/gcc/fortran/ChangeLog-2002 index fdee6e6..301182c 100644 --- a/gcc/fortran/ChangeLog-2002 +++ b/gcc/fortran/ChangeLog-2002 @@ -331,7 +331,6 @@ (g95_conv_intrinsic_anyall): New function. * iresolve.c (g95_resolve_any, g95_resolve_all): Include rank in mangled name - Copyright (C) 2002 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2003 b/gcc/fortran/ChangeLog-2003 index 051ebb8..16da457 100644 --- a/gcc/fortran/ChangeLog-2003 +++ b/gcc/fortran/ChangeLog-2003 @@ -2337,7 +2337,6 @@ (Many): Set se.want_pointer before calling g95_conv_array_parameter. * trans-intrinsic.c: Sync with scalarizer changes. * trans-io.c: Ditto. - Copyright (C) 2003 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2004 b/gcc/fortran/ChangeLog-2004 index d5d6654..4d6bf19 100644 --- a/gcc/fortran/ChangeLog-2004 +++ b/gcc/fortran/ChangeLog-2004 @@ -2844,7 +2844,6 @@ PR fortran/13251 * trans-expr.c (gfc_conv_variable): Take the type kind of a substring reference from the expression. - Copyright (C) 2004 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2005 b/gcc/fortran/ChangeLog-2005 index d9fa6a5..0bbd03b 100644 --- a/gcc/fortran/ChangeLog-2005 +++ b/gcc/fortran/ChangeLog-2005 @@ -3721,7 +3721,6 @@ * trans-stmt.c: Ditto * trans.c: Ditto * trans-intrinsic.c: Remove stdio.h and string.h - Copyright (C) 2005 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2006 b/gcc/fortran/ChangeLog-2006 index 4e83f38..cae6958 100644 --- a/gcc/fortran/ChangeLog-2006 +++ b/gcc/fortran/ChangeLog-2006 @@ -4536,7 +4536,6 @@ * ChangeLog-2003: here. * ChangeLog-2004: here. * ChangeLog-2005: here. - Copyright (C) 2006 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2007 b/gcc/fortran/ChangeLog-2007 index 421dc88..dce1cd5 100644 --- a/gcc/fortran/ChangeLog-2007 +++ b/gcc/fortran/ChangeLog-2007 @@ -5767,7 +5767,6 @@ * ChangeLog: Copy to ... * ChangeLog-2006: here. - Copyright (C) 2007 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2008 b/gcc/fortran/ChangeLog-2008 index 6fe1eea..b5fd177 100644 --- a/gcc/fortran/ChangeLog-2008 +++ b/gcc/fortran/ChangeLog-2008 @@ -4133,7 +4133,6 @@ PR fortran/34557 * primary.c (match_varspec): Gobble whitespace before checking for '('. - Copyright (C) 2008 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2009 b/gcc/fortran/ChangeLog-2009 index c5b7e62..e4ee49b 100644 --- a/gcc/fortran/ChangeLog-2009 +++ b/gcc/fortran/ChangeLog-2009 @@ -3701,7 +3701,6 @@ association, use symtree rather than symbol. For everything except generic subroutines, substitute the symtree in the call rather than the symbol. - Copyright (C) 2009 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2010 b/gcc/fortran/ChangeLog-2010 index dc25cbd..ba24df6 100644 --- a/gcc/fortran/ChangeLog-2010 +++ b/gcc/fortran/ChangeLog-2010 @@ -5547,7 +5547,6 @@ -fcheck=recursion when -frecursive is used. * intrinsic.texi (iso_c_binding): Improve wording. - Copyright (C) 2010 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2011 b/gcc/fortran/ChangeLog-2011 index c7ac160..990de2d 100644 --- a/gcc/fortran/ChangeLog-2011 +++ b/gcc/fortran/ChangeLog-2011 @@ -4081,7 +4081,6 @@ PR fortran/46408 * class.c (gfc_find_derived_vtab): Use EXEC_INIT_ASSIGN for __copy_ routine. - Copyright (C) 2011 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2022 b/gcc/fortran/ChangeLog-2022 index 253af76..19822a0 100644 --- a/gcc/fortran/ChangeLog-2022 +++ b/gcc/fortran/ChangeLog-2022 @@ -4475,7 +4475,6 @@ * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. - Copyright (C) 2022 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2023 b/gcc/fortran/ChangeLog-2023 index 3b5c9a6..e18f873 100644 --- a/gcc/fortran/ChangeLog-2023 +++ b/gcc/fortran/ChangeLog-2023 @@ -2186,7 +2186,6 @@ * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. - Copyright (C) 2023 Free Software Foundation, Inc. diff --git a/gcc/fortran/ChangeLog-2024 b/gcc/fortran/ChangeLog-2024 new file mode 100644 index 0000000..0749b22 --- /dev/null +++ b/gcc/fortran/ChangeLog-2024 @@ -0,0 +1,3038 @@ +2024-12-30 Steven G. Kargl <kargls@comcast.net> + + PR fortran/117643 + * check.cc (gfc_check_f_c_string): Check arguments of f_c_string(). + * gfortran.h (enum gfc_isym_id): New symbol GFC_ISYM_F_C_STRING. + * intrinsic.cc (add_functions): Add the ISO C Binding routine f_c_string(). + Wrap nearby long line to less than 80 characters. + * intrinsic.h (gfc_check_f_c_string): Prototype for gfc_check_f_c_string(). + * iso-c-binding.def (NAMED_FUNCTION): Declare for ISO C Binding + routine f_c_string(). + * primary.cc (gfc_match_rvalue): Fix comment that has been untrue since 2011. + Add ISOCBINDING_F_C_STRING to conditional. + * trans-intrinsic.cc (conv_trim): Specialized version of trim() for + f_c_string(). + (gfc_conv_intrinsic_function): Use GFC_ISYM_F_C_STRING to trigger in-lining. + +2024-12-23 Harald Anlauf <anlauf@gmx.de> + + PR fortran/118179 + * trans-expr.cc (conv_null_actual): Suppress copying back of + pointer address for unspecified intent. + +2024-12-23 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/116254 + PR fortran/118059 + * trans-array.cc (gfc_trans_create_temp_array): Make sure that + transformational intrinsics of class objects that change rank, + most particularly spread, go through the correct code path. Re- + factor so that changes to the dtype are done on the temporary + before the class data of the result points to it. + * trans-expr.cc (arrayfunc_assign_needs_temporary): Character + array function expressions assigned to an unlimited polymorphic + variable require a temporary. + +2024-12-22 Harald Anlauf <anlauf@gmx.de> + + * check.cc (gfc_check_random_seed): Clear gmp variables returned by + gfc_array_size. + * expr.cc (gfc_check_pointer_assign): Likewise. + +2024-12-22 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/107635 + * gfortran.h (gfc_add_caf_accessor): New function. + * gfortran.texi: Document new API routines. + * resolve.cc (get_arrayspec_from_expr): Synthesize the arrayspec + resulting from an expression, i.e. not only the rank, but also + the bounds. + (remove_coarray_from_derived_type): Remove coarray ref from a + derived type to access it in access routine. + (convert_coarray_class_to_derived_type): Same but for classes. + The result is a derived type. + (split_expr_at_caf_ref): Split an expression at the coarray + reference to move the reference after the coarray ref into the + access routine. + (check_add_new_component): Helper to add variables as + components to derived type transfered to the access routine. + (create_get_parameter_type): Create the derived type to transfer + addressing data to the access routine. + (create_get_callback): Create the access routine. + (add_caf_get_intrinsic): Use access routine instead of old + caf_get. + * trans-decl.cc (gfc_build_builtin_function_decls): Register new + API routines. + (gfc_create_module_variable): Use renamed flag. + (gfc_emit_parameter_debug_info): + (struct caf_accessor): Linked list of hash-access routine pairs. + (gfc_add_caf_accessor): Add a hash-access routine pair to above + linked list. + (create_caf_accessor_register): Add all registered hash-access + routine pairs to the current caf_init. + (generate_coarray_init): Use routine above. + (gfc_generate_module_vars): Use renamed flag. + (generate_local_decl): Same. + (gfc_generate_function_code): Same. + (gfc_process_block_locals): Same. + * trans-intrinsic.cc (conv_shape_to_cst): Build the product of a + shape. + (gfc_conv_intrinsic_caf_get): Create call to access routine. + (conv_caf_send): Adapt to caf_get using less arguments. + (gfc_conv_intrinsic_function): Same. + * trans.cc (gfc_trans_force_lval): Helper to ensure that an + expression can be used as an lvalue-ref. + * trans.h (gfc_trans_force_lval): See above. + +2024-12-22 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/107635 + * gfortran.h (gfc_comp_caf_token): Convenient macro for + accessing caf_token's tree. + * resolve.cc (gfc_resolve_ref): Backup caf_lhs when resolving + expr in array_ref. + (remove_caf_get_intrinsic): Removed. + (resolve_variable): Set flag caf_lhs when resolving lhs of + assignment to prevent insertion of caf_get. + (resolve_lock_unlock_event): Same, but the lhs is the parameter. + (resolve_ordinary_assign): Move conversion to caf_send to + resolve_codes. + (resolve_codes): Adress caf_get and caf_send here. + (resolve_fl_derived0): Set component's caf_token when token is + necessary. + * trans-array.cc (gfc_conv_array_parameter): Get a coarray for + expression that have a corank. + (structure_alloc_comps): Use macro to get caf_token's tree. + (gfc_alloc_allocatable_for_assignment): Same. + * trans-expr.cc (gfc_get_ultimate_alloc_ptr_comps_caf_token): + Same. + (gfc_trans_structure_assign): Same. + * trans-intrinsic.cc (conv_expr_ref_to_caf_ref): Same. + (has_ref_after_cafref): New function to figure that after a + reference of a coarray another reference is present. + (conv_caf_send): Get rhs from correct place, when caf_get is + not removed. + * trans-types.cc (gfc_get_derived_type): Get caf_token from + component and no longer guessing. + +2024-12-21 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104819 + * interface.cc (compare_parameter): For the rank check, NULL() + inherits the rank of a provided MOLD argument. + (gfc_compare_actual_formal): Adjust check of NULL() actual argument + against formal to accept F2008 enhancements (allocatable dummy). + NULL() with MOLD argument retains a pointer/allocatable attribute. + * trans-expr.cc (conv_null_actual): Implement passing NULL() to + derived-type dummy with pointer/allocatable attribute, and ensure + that the actual rank is passed to an assumed-rank dummy. + (gfc_conv_procedure_call): Use it. + +2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> + + * gfortran.texi: Get rid of some unnecessary hyphens throughout + the file. + * invoke.texi: Likewise. + +2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> + + * gfortran.texi: Use the present tense throughout; fix some + markup issues and awkward wording. + * invoke.texi: Likewise. + +2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> + + * gfortran.texi: Fix markup, typos, and indexing throughout the + file. + * invoke.texi: Likewise. + +2024-12-20 Sandra Loosemore <sloosemore@baylibre.com> + + PR fortran/51820 + PR fortran/89632 + PR fortran/109216 + * invoke.texi (Code Gen Options): Further cleanups of the discussion + of what -funderscoring and -fsecond-underscore do. + +2024-12-20 Harald Anlauf <anlauf@gmx.de> + + PR fortran/118120 + PR fortran/113928 + * trans-array.cc (symbols_could_alias): If one symbol refers to a + complex type and the other to a real type of the same kind, do not + a priori exclude the possibility of aliasing. + +2024-12-17 Sandra Loosemore <sloosemore@baylibre.com> + + PR c/26154 + * gfortran.texi (Standards): Remove redundant info about + OpenMP/OpenACC standard support. + (OpenMP): Copy-editing and update version info. + (OpenACC): Likewise. + * lang.opt.urls: Regenerated. + +2024-12-17 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/117347 + * primary.cc (gfc_match_varspec): Add array constructors for + guessing their type like with unresolved function calls. + +2024-12-16 David Malcolm <dmalcolm@redhat.com> + + PR sarif-replay/117943 + * error.cc (gfc_diagnostic_text_starter): Use source-printing + options from text_output. + +2024-12-15 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/117897 + * trans-expr.cc (gfc_trans_assignment_1): RHS pointer function + results must not be finalized. + +2024-12-12 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/117797 + * trans-array.cc (class_array_element_size): New function. + (gfc_get_array_span): Refactor, using class_array_element_size + to return the span for descriptors that are the _data component + of a class expression and then class dummy references. Revert + the conditions to those before r15-5083 tidying up using 'sym'. + +2024-12-11 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/117901 + * trans-stmt.cc (trans_associate_var): A variable character + length array associate name must generate a DECL expression for + the data pointer type. + +2024-12-09 Harald Anlauf <anlauf@gmx.de> + + * expr.cc (find_array_section): Do not initialize GMP variables + twice. + +2024-12-09 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/116261 + * trans-array.cc (gfc_array_init_size): New arg 'explicit_ts', + to suppress the use of the expr3 element size in the descriptor + dtype. + (gfc_array_allocate): New arg 'explicit_ts', used in call to + gfc_array_init_size. + * trans-array.h : Modify prototype for gfc_array_allocate for new + bool argument. + * trans-stmt.cc (gfc_trans_allocate): Set new argument if the + typespec is explicit. + +2024-12-03 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/102689 + * trans-array.cc (get_array_ref_dim_for_loop_dim): Use the arg1 + class container carried in ss->info as the seed for a lhs in + class valued transformational intrinsic calls that are not the + rhs of an assignment. Otherwise, the lhs variable expression is + taken from the loop chain. For this latter case, the _vptr and + _len fields are set. + (gfc_trans_create_temp_array): Use either the lhs expression + seeds to build a class variable that will take the returned + descriptor as its _data field. In the case that the arg1 expr. + is used, 'atmp' must be marked as unused, a typespec built with + the correct rank and the _vptr and _len fields set. The element + size is provided for the temporary allocation and to set the + descriptor span. + (gfc_array_init_size): When an intrinsic type scalar expr3 is + used in allocation of a class array, use its element size in + the descriptor dtype. + * trans-expr.cc (gfc_conv_class_to_class): Class valued + transformational intrinsics return the pointer to the array + descriptor as the _data field of a class temporary. Extract + directly and return the address of the class temporary. + (gfc_conv_procedure_call): store the expression for the first + argument of a class valued transformational intrinsic function + in the ss info class_container field. Later, use its type as + the element type in the call to gfc_trans_create_temp_array. + (fcncall_realloc_result): Add a dtype argument and use it in + the descriptor, when available. + (gfc_trans_arrayfunc_assign): For class lhs, build a dtype with + the lhs rank and the rhs element size and use it in the call to + fcncall_realloc_result. + +2024-12-03 Tobias Burnus <tburnus@baylibre.com> + + * trans-decl.cc (gfc_finish_var_decl): Remove setting the alignment. + +2024-11-29 Andrew Pinski <quic_apinski@quicinc.com> + + PR fortran/117843 + * trans-io.cc (gfc_trans_transfer): Add default case. + +2024-11-28 Steven G. Kargl <kargls@comcast.net> + + PR fortran/117765 + * resolve.cc (pure_subroutine): Check for an impure subroutine + call in a BLOCK construct nested within a DO CONCURRENT block. + +2024-11-28 Harald Anlauf <anlauf@gmx.de> + + PR fortran/117791 + * trans-io.cc (gfc_trans_transfer): When an array index depends on + a function evaluation or an expression, do not use optimized array + I/O of an array section and fall back to normal scalarization. + +2024-11-28 David Malcolm <dmalcolm@redhat.com> + + PR c/104896 + * resolve.cc (resolve_operator): Replace "%<%s%>" with "%qs" in + message wording. + +2024-11-27 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/84674 + PR fortran/117768 + * class.cc (add_proc_comp): If the component points to a tbp + that is abstract, do not return since the new version is more + likely to be usable. + * resolve.cc (resolve_fl_derived): Remove the condition that + rejected a completely empty derived type extension. + +2024-11-26 Harald Anlauf <anlauf@gmx.de> + + * expr.cc (find_inquiry_ref): Fix memleak introduced by scanning + the reference chain to find and simplify inquiry references. + * symbol.cc (gfc_copy_formal_args_intr): Free formal namespace + when not needed to avoid a front-end memleak. + +2024-11-26 Harald Anlauf <anlauf@gmx.de> + + PR fortran/117774 + * trans-expr.cc (gfc_conv_procedure_call): When passing an array + to an assumed-rank dummy, terminate search for array reference of + actual argument before an inquiry reference (e.g. INQUIRY_RE, + INQUIRY_IM) so that bounds update works properly. + +2024-11-26 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/117763 + * trans-array.cc (gfc_get_array_span): Guard against derefences + of 'expr'. Clean up some typos. Use 'gfc_get_vptr_from_expr' + for clarity and apply a functional reversion of last section + that deals with class dummies. + +2024-11-25 Steve Kargl <kargls@comcast.net> + + PR fortran/117765 + * resolve.cc (check_pure_function): Check the stack to + see if the function is in a nested BLOCK and, if that + block is inside a DO_CONCURRENT, issue an error. + +2024-11-24 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/85869 + * trans-expr.cc (trans_class_vptr_len_assignment): To access + the '_len' field, re must be unlimited polymorphic. + +2024-11-24 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/117730 + PR fortran/84674 + * class.cc (add_proc_comp): Only reject a non_overridable if it + has no overridden procedure and the component is already + present in the vtype. + * resolve.cc (resolve_fl_derived): Do not build a vtable for a + derived type extension that is completely empty. + +2024-11-22 Andrew Pinski <quic_apinski@quicinc.com> + + PR bootstrap/117737 + * arith.cc (INCLUDE_MEMORY): Remove. + * array.cc (INCLUDE_MEMORY): Remove. + * bbt.cc (INCLUDE_MEMORY): Remove. + * check.cc (INCLUDE_MEMORY): Remove. + * class.cc (INCLUDE_MEMORY): Remove. + * constructor.cc (INCLUDE_MEMORY): Remove. + * convert.cc (INCLUDE_MEMORY): Remove. + * cpp.cc (INCLUDE_MEMORY): Remove. + * data.cc (INCLUDE_MEMORY): Remove. + * decl.cc (INCLUDE_MEMORY): Remove. + * dependency.cc (INCLUDE_MEMORY): Remove. + * dump-parse-tree.cc (INCLUDE_MEMORY): Remove. + * error.cc (INCLUDE_MEMORY): Remove. + * expr.cc (INCLUDE_MEMORY): Remove. + * f95-lang.cc (INCLUDE_MEMORY): Remove. + * frontend-passes.cc (INCLUDE_MEMORY): Remove. + * interface.cc (INCLUDE_MEMORY): Remove. + * intrinsic.cc (INCLUDE_MEMORY): Remove. + * io.cc (INCLUDE_MEMORY): Remove. + * iresolve.cc (INCLUDE_MEMORY): Remove. + * match.cc (INCLUDE_MEMORY): Remove. + * matchexp.cc (INCLUDE_MEMORY): Remove. + * misc.cc (INCLUDE_MEMORY): Remove. + * module.cc (INCLUDE_MEMORY): Remove. + * openmp.cc (INCLUDE_MEMORY): Remove. + * options.cc (INCLUDE_MEMORY): Remove. + * parse.cc (INCLUDE_MEMORY): Remove. + * primary.cc (INCLUDE_MEMORY): Remove. + * resolve.cc (INCLUDE_MEMORY): Remove. + * scanner.cc (INCLUDE_MEMORY): Remove. + * simplify.cc (INCLUDE_MEMORY): Remove. + * st.cc (INCLUDE_MEMORY): Remove. + * symbol.cc (INCLUDE_MEMORY): Remove. + * target-memory.cc (INCLUDE_MEMORY): Remove. + * trans-array.cc (INCLUDE_MEMORY): Remove. + * trans-common.cc (INCLUDE_MEMORY): Remove. + * trans-const.cc (INCLUDE_MEMORY): Remove. + * trans-decl.cc (INCLUDE_MEMORY): Remove. + * trans-expr.cc (INCLUDE_MEMORY): Remove. + * trans-intrinsic.cc (INCLUDE_MEMORY): Remove. + * trans-io.cc (INCLUDE_MEMORY): Remove. + * trans-openmp.cc (INCLUDE_MEMORY): Remove. + * trans-stmt.cc (INCLUDE_MEMORY): Remove. + * trans-types.cc (INCLUDE_MEMORY): Remove. + * trans.cc (INCLUDE_MEMORY): Remove. + +2024-11-22 Tobias Burnus <tburnus@baylibre.com> + + * gfortran.h (gfc_omp_namelist): Cleanup interop internal + representation. + * dump-parse-tree.cc (show_omp_namelist): Update for changed + internal representation. + * match.cc (gfc_free_omp_namelist): Likewise. + * openmp.cc (gfc_match_omp_prefer_type, gfc_match_omp_init): + Likewise; also handle some corner cases better and update for + newer 6.0 changes related to 'fr'. + (resolve_omp_clauses): Add type-check for interop variables. + * trans-openmp.cc (gfc_trans_omp_clauses): Handle init, use + and destroy clauses. + (gfc_trans_openmp_interop): New. + (gfc_trans_omp_directive): Call it. + +2024-11-20 Harald Anlauf <anlauf@gmx.de> + + PR fortran/83135 + * expr.cc (sym_is_from_ancestor): New helper function. + (gfc_check_vardef_context): Refine checking of PROTECTED attribute + of symbols that are indirectly use-associated in a submodule. + +2024-11-20 Paul-Antoine Arras <parras@baylibre.com> + + * types.def (BT_FN_PTR_CONST_PTR_INT): Declare. + +2024-11-20 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc + (walk_inline_intrinsic_minmaxloc): Add a scalar element for BACK as + first item of the chain if BACK is present and there will be nested + loops. + (gfc_conv_intrinsic_minmaxloc): Evaluate BACK using an inherited + scalarization chain if there is a nested loop. + +2024-11-20 Mikael Morin <mikael@gcc.gnu.org> + + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Only get the size + along DIM instead of the full size if DIM is present. + +2024-11-19 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return TRUE + for MINLOC/MAXLOC with constant DIM and either REAL ARRAY or + non-scalar MASK. + (walk_inline_intrinsic_minmaxloc): Walk MASK and if it's an array + add the chain obtained before that of ARRAY. + (gfc_conv_intrinsic_minmaxloc): Use the nested loop if there is one. + To evaluate MASK (respectively ARRAY in the second loop), inherit + the scalarizer chain if in a nested loop, otherwise keep using the + chain obtained by walking MASK (respectively ARRAY). If there is a + nested loop, avoid advancing the parent scalarization chain a second + time in the second loop. + +2024-11-19 Mikael Morin <mikael@gcc.gnu.org> + + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Use + conditionals based on the MASK expression rather than on its + scalarization chains. + +2024-11-19 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return TRUE + if MASK is scalar. + (walk_inline_intrinsic_minmaxloc): Append to the scalarization chain + a scalar element for MASK if it's present. + (gfc_conv_intrinsic_minmaxloc): Use a local gfc_se struct to serve + as base for all the expressions evaluated in the nested loop. To + evaluate MASK when there is a nested loop, enable usage of the + scalarizer and set the original passed in SE argument as current + scalarization chain element to use. And use the nested loop from + the scalarizer instead of the local loop in that case. + +2024-11-19 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return true + if DIM is constant, ARRAY is integral and MASK is absent. + (walk_inline_intrinsic_minmaxloc): If DIM is present, walk ARRAY and + move the dimension corresponding to DIM to a nested chain, keeping + the rest of the dimensions as the returned scalarization chain. + (gfc_conv_intrinsic_minmaxloc): When inside the scalarization loops, + proceed with inline code generation If DIM is present. If DIM is + present, skip result array creation and final initialization from + individual result local variables. If DIM is present and ARRAY has + rank greater than 1, use the nested loop initialized by the + scalarizer instead of the local one, use 1 as scalarization + dimension, and evaluate ARRAY using the inherited scalarization + chain instead of creating a local one by walking the expression. + +2024-11-18 Harald Anlauf <anlauf@gmx.de> + + PR fortran/53357 + * dependency.cc (gfc_dep_compare_expr): Return correct result if + relationship of expressions could not be determined. + * interface.cc (gfc_check_result_characteristics): Implement error + messages if character function declations and references do not + agree, else emit warning in cases where a mismatch is suspected. + * trans-stmt.cc (gfc_trans_allocate): Implement a string length + check for -fcheck=bounds. + +2024-11-16 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/109066 + * resolve.cc (generate_component_assignments): If the temporary + for 'var' is a pointer and 'expr' is neither a constant or + a variable, change its attribute from pointer to allocatable. + This avoids assignment to a temporary point that has neither + been allocated or associated. + +2024-11-16 Thomas Koenig <tkoenig@gcc.gnu.org> + + * gfortran.texi: Document that SELECT CASE works for UNSIGNED. + +2024-11-16 Thomas Koenig <tkoenig@gcc.gnu.org> + + * module.cc (mio_expr): Handle BT_UNSIGNED. + +2024-11-15 Jan Hubicka <hubicka@ucw.cz> + + * trans-expr.cc (gfc_trans_subcomponent_assign): Fix type of malloc + parameter. + +2024-11-14 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104819 + * trans-expr.cc (conv_null_actual): Helper function to handle + passing of NULL() to non-optional dummy arguments of non-bind(c) + procedures. + (gfc_conv_procedure_call): Use it for character dummies. + +2024-11-13 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/105054 + * resolve.cc (get_temp_from_expr): If the pointer function has + a deferred character length, generate a new deferred charlen + for the temporary. + +2024-11-11 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/109345 + * trans-array.cc (gfc_get_array_span): Unlimited polymorphic + expressions are now treated separately since the span need not + be the same as the element size. + +2024-11-11 Tomas Trnka <trnka@scm.com> + Paul Thomas <pault@gcc.gnu.org> + + PR fortran/116388 + * class.cc (finalize_component): Leading underscore in the name + of 'byte_stride' to suppress invalid finalization. + +2024-11-11 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (gfc_check_complex): Reject UNSIGNED. + * gfortran.texi: Update example program. Note that + CMPLX, INT and REAL also take unsigned arguments. + * intrinsic.texi (CMPLX): Document UNSIGNED. + (INT): Likewise. + (REAL): Likewise. + +2024-11-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/117434 + * interface.cc (gfc_compare_actual_formal): Skip 'Expected a + procedure pointer error' if the formal argument typespec has an + interface and the type of the actual arg is BT_PROCEDURE. + +2024-11-05 David Malcolm <dmalcolm@redhat.com> + + PR fortran/117442 + * error.cc (error_buffer): Convert to a pointer so it can be + heap-allocated. + (gfc_error_now): Update for error_buffer being heap-allocated. + (gfc_clear_error): Likewise. + (gfc_error_flag_test): Likewise. + (gfc_error_check): Likewise. + (gfc_push_error): Likewise. + (gfc_pop_error): Likewise. + (gfc_diagnostics_init): Allocate error_buffer on the heap, rather + than statically. + (gfc_diagnostics_finish): Delete error_buffer. + +2024-11-02 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (gfc_check_mask): Handle BT_INSIGNED. + * gfortran.h (enum gfc_isym_id): Add GFC_ISYM_UMASKL and + GFC_ISYM_UMASKR. + * gfortran.texi: List UMASKL and UMASKR, remove unsigned future + unsigned arguments for MASKL and MASKR. + * intrinsic.cc (add_functions): Add UMASKL and UMASKR. + * intrinsic.h (gfc_simplify_umaskl): New function. + (gfc_simplify_umaskr): New function. + (gfc_resolve_umasklr): New function. + * intrinsic.texi: Document UMASKL and UMASKR. + * iresolve.cc (gfc_resolve_umasklr): New function. + * simplify.cc (gfc_simplify_umaskr): New function. + (gfc_simplify_umaskl): New function. + +2024-11-01 Thomas Koenig <tkoenig@gcc.gnu.org> + + * resolve.cc (resolve_operator): Also handle BT_UNSIGNED. + +2024-11-01 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/115700 + * resolve.cc (resolve_assoc_var): Extract a substring reference + with missing as well as non-constant start or end. + +2024-10-31 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/115700 + * resolve.cc (resolve_variable): The typespec of an expression, + which is not a substring, can be shared with a deferred length + associate name. + (resolve_assoc_var): Extract a substring reference with non- + constant start or end. Use it to flag up the need for array + associate name to be a pointer. + (resolve_block_construct): Change comment from past to future + tense. + +2024-10-30 Harald Anlauf <anlauf@gmx.de> + + * trans-expr.cc (gfc_trans_class_init_assign): Free intermediate + gfc_expr's. + * trans.cc (get_final_proc_ref): Likewise. + (get_elem_size): Likewise. + (gfc_add_finalizer_call): Likewise. + +2024-10-29 David Malcolm <dmalcolm@redhat.com> + + PR other/116613 + * error.cc (gfc_diagnostic_build_kind_prefix): Update for + global_dc's m_printer becoming reference printer. + (gfc_diagnostics_init): Replace usage of diagnostic_format_decoder + with global_dc->set_format_decoder. + +2024-10-27 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/115070 + PR fortran/115348 + * trans-expr.cc (gfc_trans_class_init_assign): If all the + components of the default initializer are null for a scalar, + build an empty statement to prevent prior declarations from + disappearing. + +2024-10-26 Iain Sandoe <iain@sandoe.co.uk> + + * intrinsic.texi: Add menu item for UINT. + +2024-10-26 Thomas Koenig <tkoenig@gcc.gnu.org> + + * gfortran.texi: Correct reference to make clear that UNSIGNED + will not be part of F202Y. + Other clarifications. + Extend table of intrinsics, add links. + * intrinsic.texi: Add descriptions for UNSIGNED arguments. + * invoke.texi: Add anchor for -funsigned. + +2024-10-25 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/79685 + * decl.cc (match_data_constant): Find the symtree instead of + the symbol so the use renamed symbols are found. Pass this and + the derived type to gfc_match_structure_constructor. + * match.h: Update prototype of gfc_match_structure_contructor. + * primary.cc (gfc_match_structure_constructor): Remove call to + gfc_get_ha_sym_tree and use caller supplied symtree instead. + +2024-10-25 Jakub Jelinek <jakub@redhat.com> + + * trans-openmp.cc: Remove trailing whitespace. + * trans-common.cc: Likewise. + * match.h: Likewise. + * scanner.cc: Likewise. + * gfortranspec.cc: Likewise. + * io.cc: Likewise. + * iso-c-binding.def: Likewise. + * iso-fortran-env.def: Likewise. + * types.def: Likewise. + * openmp.cc: Likewise. + * f95-lang.cc: Likewise. + +2024-10-24 David Malcolm <dmalcolm@redhat.com> + Gaius Mulley <gaiusmod2@gmail.com> + + PR other/116613 + * arith.cc: Add #define INCLUDE_MEMORY. + * array.cc: Likewise. + * bbt.cc: Likewise. + * check.cc: Likewise. + * class.cc: Likewise. + * constructor.cc: Likewise. + * convert.cc: Likewise. + * cpp.cc: Likewise. + * data.cc: Likewise. + * decl.cc: Likewise. + * dependency.cc: Likewise. + * dump-parse-tree.cc: Likewise. + * error.cc: Likewise. + * expr.cc: Likewise. + * f95-lang.cc: Likewise. + * frontend-passes.cc: Likewise. + * interface.cc: Likewise. + * intrinsic.cc: Likewise. + * io.cc: Likewise. + * iresolve.cc: Likewise. + * match.cc: Likewise. + * matchexp.cc: Likewise. + * misc.cc: Likewise. + * module.cc: Likewise. + * openmp.cc: Likewise. + * options.cc: Likewise. + * parse.cc: Likewise. + * primary.cc: Likewise. + * resolve.cc: Likewise. + * scanner.cc: Likewise. + * simplify.cc: Likewise. + * st.cc: Likewise. + * symbol.cc: Likewise. + * target-memory.cc: Likewise. + * trans-array.cc: Likewise. + * trans-common.cc: Likewise. + * trans-const.cc: Likewise. + * trans-decl.cc: Likewise. + * trans-expr.cc: Likewise. + * trans-intrinsic.cc: Likewise. + * trans-io.cc: Likewise. + * trans-openmp.cc: Likewise. + * trans-stmt.cc: Likewise. + * trans-types.cc: Likewise. + * trans.cc: Likewise. + +2024-10-23 David Malcolm <dmalcolm@redhat.com> + + PR fortran/105916 + * error.cc (pp_error_buffer, pp_warning_buffer): Convert from + output_buffer * to diagnostic_buffer *. + (warningcount_buffered, werrorcount_buffered): Eliminate. + (gfc_error_buffer::gfc_error_buffer): Move constructor definition + here, and initialize "buffer" using *global_dc. + (gfc_output_buffer_empty_p): Delete in favor of + diagnostic_buffer::empty_p. + (gfc_clear_pp_buffer): Replace with... + (gfc_clear_diagnostic_buffer): ...this, moving implementation + details to diagnostic_context::clear_diagnostic_buffer. + (gfc_warning): Replace buffering implementation with calls + to global_dc->get_diagnostic_buffer and + global_dc->set_diagnostic_buffer. + (gfc_clear_warning): Update for renaming of gfc_clear_pp_buffer + and elimination of warningcount_buffered and werrorcount_buffered. + (gfc_warning_check): Replace buffering implementation with calls + to pp_warning_buffer->empty_p and + global_dc->flush_diagnostic_buffer. + (gfc_error_opt): Replace buffering implementation with calls to + global_dc->get_diagnostic_buffer and set_diagnostic_buffer. + (gfc_clear_error): Update for renaming of gfc_clear_pp_buffer. + (gfc_error_flag_test): Replace call to gfc_output_buffer_empty_p + with call to diagnostic_buffer::empty_p. + (gfc_error_check): Replace buffering implementation with calls + to pp_error_buffer->empty_p and global_dc->flush_diagnostic_buffer. + (gfc_move_error_buffer_from_to): Replace buffering implementation + with usage of diagnostic_buffer. + (gfc_free_error): Update for renaming of gfc_clear_pp_buffer. + (gfc_diagnostics_init): Use "new" directly when creating + pp_warning_buffer. Remove setting of m_flush_p on the two + buffers, as this is handled by diagnostic_buffer and by + diagnostic_text_format_buffer's constructor. + * gfortran.h: Replace #include "pretty-print.h" for output_buffer + with #include "diagnostic-buffer.h" for diagnostic_buffer. + (struct gfc_error_buffer): Change type of field "buffer" from + output_buffer to diagnostic_buffer. Move definition of constructor + into error.cc so that it can use global_dc. + +2024-10-23 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/116733 + * array.cc : White space corrections. + * expr.cc (gfc_check_pointer_assign): Permit assumed rank + target with -std=f202y. Add constraints that the data pointer + object must have rank remapping specified and the that the data + target be contiguous. + * gfortran.h : Add a gfc_array_ref field 'ar' to the structure + 'gfc_association_list'. + * interface.cc (gfc_compare_actual_formal): If -Wsurprising + is set, emit a warning if an assumed size array is passed to an + assumed rank dummy. + * intrinsic.cc (do_ts29113_check): Permit an assumed rank arg. + for reshape if -std=f202y and the argument is contiguous. + * invoke.texi : Introduce -std=f202y. Whitespace errors. + * lang.opt : Accept -std=f202y. + * libgfortran.h : Define GFC_STD_F202Y. + * match.cc (gfc_match_associate): If -std=f202y an assumed rank + selector is allowed if it is contiguous and the associate name + has rank remapping specified. + * options.cc (gfc_init_options): -std=f202y is equivalent to + -std=f2023 with experimental f202y features. White space issues + * parse.cc (parse_associate): If the selector is assumed rank, + use the 'ar' field of the association list to build an array + specification. + * primary.cc (gfc_match_varspec): Do not resolve the assumed + rank selector of a class associate name at this stage to avoid + the rank change. + * resolve.cc (find_array_spec): If an array_ref dimension is -1 + reset it with the rank in the object's array_spec. + (gfc_expression_rank): Do not check dimen types for an assumed + rank variable expression. + (resolve_variable): Do not emit the assumed rank context error + if the context is pointer assignment and the variable is a + target. + (resolve_assoc_var): Resolve the bounds and check for missing + bounds in the rank remap of an associate name with an assumed + rank selector. Do not correct the rank of an associate name + with an assumed rank selector. + (resolve_symbol): Allow the reference to an assumed rank object + if -std-f202y is enabled and the current operation is + EXEC_BLOCK. + * st.cc (gfc_free_association_list): Free bounds expressions + of the 'ar' field, if present. + * trans-array.cc (gfc_conv_ss_startstride): If -std=f202y and + bounds checking activated, do not apply the assertion. + * trans-expr.cc (gfc_trans_pointer_assignment): An assumed rank + target has its offset set to zero. + * trans-stmt.cc (trans_associate_var): If the selector is + assumed rank, call gfc_trans_pointer_assignment using the 'ar' + field in the association list as the array reference for expr1. + The data target, expr2, is a copy of the selector expression. + +2024-10-23 Tobias Burnus <tburnus@baylibre.com> + + * error.cc (terminal_width, gfc_get_terminal_width): Remove. + (gfc_error_init_1): Do not call one to set the other. + +2024-10-19 Tobias Burnus <tburnus@baylibre.com> + + * check.cc (is_c_interoperable): Use _(...) around to mark strings + as translatable. + * data.cc (gfc_assign_data_value): Move string literal to gfc_error + to make it translatable. + * resolve.cc (resolve_fl_variable, resolve_equivalence): Use G_(...) + around string literals. + * scanner.cc (skip_fixed_omp_sentinel): Replace '...' by %<...%>. + * trans-openmp.cc (gfc_split_omp_clauses, + gfc_trans_omp_declare_variant): Likewise. + +2024-10-19 Tobias Burnus <tburnus@baylibre.com> + + * data.cc (gfc_assign_data_value): Use linemap_location_before_p + and GFC_LOCUS_IS_SET. + * decl.cc (gfc_verify_c_interop_param): Make better translatable. + (build_sym, variable_decl, gfc_match_formal_arglist, + gfc_match_subroutine): Add range-based locations, use it in + diagnostic and gobble whitespace for better locations. + * error.cc (gfc_get_location_with_offset): Handle new format. + (gfc_get_location_range): New. + * expr.cc (gfc_check_assign): Use GFC_LOCUS_IS_SET. + * frontend-passes.cc (check_locus_code, check_locus_expr): + Likewise. + (runtime_error_ne): Use GFC_LOCUS_IS_SET. + * gfortran.h (locus): Change lb to union with lb and location. + (GFC_LOCUS_IS_SET): Define. + (gfc_get_location_range): New prototype. + (gfc_new_symbol, gfc_get_symbol, gfc_get_sym_tree, + gfc_get_ha_symbol, gfc_get_ha_sym_tree): Take optional locus + argument. + * io.cc (io_constraint): Use GFC_LOCUS_IS_SET. + * match.cc (gfc_match_sym_tree): Use range locus. + * openmp.cc (gfc_match_omp_variable_list, + gfc_match_omp_doacross_sink): Likewise. + * parse.cc (next_free): Update for locus struct change. + * primary.cc (gfc_match_varspec): Likewise. + (match_variable): Use range locus. + * resolve.cc (find_array_spec): Use GFC_LOCUS_IS_SET. + * scanner.cc (gfc_at_eof, gfc_at_bol, gfc_start_source_files, + gfc_advance_line, gfc_define_undef_line, skip_fixed_comments, + gfc_gobble_whitespace, include_stmt, gfc_new_file): Update + for locus struct change. + * symbol.cc (gfc_new_symbol, gfc_get_sym_tree, gfc_get_symbol, + gfc_get_ha_sym_tree, gfc_get_ha_symbol): Take optional locus. + * trans-array.cc (gfc_trans_array_constructor_value): Use %L not %C. + (gfc_trans_g77_array, gfc_trans_dummy_array_bias, + gfc_trans_class_array, gfc_trans_deferred_array): Replace + gfc_{save,set,restore}_backend_locus by directly using + input_location. + * trans-common.cc (build_equiv_decl, get_init_field): Likewise. + * trans-decl.cc (gfc_get_extern_function_decl, build_function_decl, + build_entry_thunks, gfc_null_and_pass_deferred_len, + gfc_trans_deferred_vars, gfc_trans_use_stmts, finish_oacc_declare, + gfc_generate_block_data): Likewise. + * trans-expr.cc (gfc_copy_class_to_class, gfc_conv_expr): Changes + to avoid gfc_current_locus. + * trans-io.cc (set_error_locus): Likewise. + * trans-openmp.cc (gfc_trans_omp_workshare): Use input_locus directly. + * trans-stmt.cc (gfc_trans_if_1): Likewise and use GFC_LOCUS_IS_SET. + * trans-types.cc (gfc_get_union_type, gfc_get_derived_type): Likewise. + * trans.cc (gfc_locus_from_location): New. + (trans_runtime_error_vararg, gfc_trans_runtime_check): Use location_t + for file + line data. + (gfc_current_backend_file, gfc_save_backend_locus, + gfc_set_backend_locus, gfc_restore_backend_locus): Remove. + (trans_code): Use input_location directly, don't set gfc_current_locus. + * trans.h (gfc_save_backend_locus, gfc_set_backend_locus, + gfc_restore_backend_locus): Remove prototypes. + (gfc_locus_from_location): Add prototype. + +2024-10-19 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/117225 + * primary.cc (match_sym_complex_part): An UNSIGNED in + a complex part is an error. + +2024-10-18 Alejandro Colomar <alx@kernel.org> + + * trans-array.cc (structure_alloc_comps) + * trans-openmp.cc + (gfc_walk_alloc_comps) + (gfc_omp_clause_linear_ctor): + Rename array_type_nelts => array_type_nelts_minus_one + +2024-10-18 Thomas Koenig <tkoenig@gcc.gnu.org> + + * error.cc (notify_std_msg): Handle GFC_STD_UNSIGNED. + +2024-10-17 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/80235 + * trans-decl.cc (gfc_build_qualified_array): Make sure the array + is associated to the correct module and being marked as extern. + +2024-10-15 Thomas Schwinge <tschwinge@baylibre.com> + Harald Anlauf <anlauf@gmx.de> + + PR fortran/82250 + PR fortran/82251 + PR fortran/117136 + * trans-expr.cc (gfc_conv_procedure_call): Initialize + 'is_builtin'. + (conv_function_val): Clean up. + +2024-10-14 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/77871 + * trans-expr.cc (gfc_conv_derived_to_class): Assign token when + converting a coarray to class. + (gfc_get_tree_for_caf_expr): For classes get the caf decl from + the saved descriptor. + (gfc_get_caf_token_offset):Assert that coarray=lib is set and + cover more cases where the tree having the coarray token can be. + * trans-intrinsic.cc (gfc_conv_intrinsic_caf_get): Use unified + test for pointers. + +2024-10-13 Tobias Burnus <tburnus@baylibre.com> + + * gfortran.h (gfc_option_t): Add disable_acc_on_device. + * options.cc (gfc_handle_option): Handle -fno-builtin-acc_on_device. + * trans-decl.cc (gfc_get_extern_function_decl): Move + __builtin_omp_is_initial_device handling to ... + * trans-expr.cc (get_builtin_fn): ... this new function. + (conv_function_val): Call it. + (update_builtin_function): New. + (gfc_conv_procedure_call): Call it. + * types.def (BT_BOOL): Fix type by using bool_type_node. + +2024-10-12 Thomas Koenig <tkoenig@gcc.gnu.org> + + * dump-parse-tree.cc (get_c_type_name): Also handle BT_UNSIGNED. + * gfortran.h (NAMED_UINTCST): Define before inclusion + of iso-c-binding.def and iso-fortran-env.def. + (gfc_get_uint_kind_from_width_isofortranenv): Prototype. + * gfortran.texi: Mention new constants in iso_c_binding and + iso_fortran_env. + * iso-c-binding.def: Handle NAMED_UINTCST. Add c_unsigned, + c_unsigned_short,c_unsigned_char, c_unsigned_long, + c_unsigned_long_long, c_uintmax_t, c_uint8_t, c_uint16_t, + c_uint32_t, c_uint64_t, c_uint128_t, c_uint_least8_t, + c_uint_least16_t, c_uint_least32_t, c_uint_least64_t, + c_uint_least128_t, c_uint_fast8_t, c_uint_fast16_t, + c_uint_fast32_t, c_uint_fast64_t and c_uint_fast128_t. + * iso-fortran-env.def: Handle NAMED_UINTCST. Add uint8, uint16, + uint32 and uint64. + * module.cc (parse_integer): Whitespace fix. + (write_module): Whitespace fix. + (NAMED_UINTCST): Define before inclusion of iso-fortran-evn.def + and iso-fortran-env.def. + * symbol.cc: Likewise. + * trans-types.cc (get_unsigned_kind_from_node): New function. + (get_uint_kind_from_name): New function. + (gfc_get_uint_kind_from_width_isofortranenv): New function. + (get_uint_kind_from_width): New function. + (gfc_init_kinds): Initialize gfc_c_uint_kind. + +2024-10-12 Tobias Burnus <tburnus@baylibre.com> + + * openmp.cc (resolve_omp_clauses): Diagnose polymorphic mapping. + * trans-openmp.cc (gfc_omp_finish_clause): Warn when + polymorphic variable is implicitly mapped. + +2024-10-12 Tobias Burnus <tburnus@baylibre.com> + + * array.cc (gfc_match_array_constructor): Only update the + character length if the expression is of character type. + * error.cc (gfc_get_location_with_offset): New; split off + from ... + (gfc_format_decoder): ... here; call it. + * gfortran.h (gfc_get_location_with_offset): New prototype. + (gfc_get_location): New inline function. + * trans.cc (gfc_get_location): Remove function definition. + * trans.h (gfc_get_location): Remove declaration. + +2024-10-11 Thomas Koenig <tkoenig@gcc.gnu.org> + + * intrinsic.cc (add_functions): Convert uint and + selected_unsigned_kind to GFC_STD_UNSIGNED. + (gfc_check_intrinsic_standard): Handle GFC_STD_UNSIGNED. + * libgfortran.h (GFC_STD_UNSIGNED): Add. + * options.cc (gfc_post_options): Set GFC_STD_UNSIGNED + if -funsigned is set. + +2024-10-11 Tobias Burnus <tburnus@baylibre.com> + + * error.cc (error_char, error_string, error_uinteger, error_integer, + error_hwuint, error_hwint, gfc_widechar_display_length, + gfc_wide_display_length, error_printf, show_locus, show_loci): + Remove unused static functions. + (IBUF_LEN, MAX_ARGS): Remove now unused #define. + +2024-10-08 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/51815 + * array.cc (gfc_match_array_ref): Only parse coarray part of + ref. + * match.h (gfc_match_array_ref): Add flag. + * primary.cc (gfc_match_varspec): Request only coarray ref + parsing when no regular array is present. Report error on + unexpected additional ref. + +2024-10-07 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (gfc_check_minloc_maxloc): Handle BT_UNSIGNED. + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Likewise. + * gfortran.texi: Document MAXLOC and MINLOC for UNSIGNED. + +2024-10-07 Tobias Burnus <tburnus@baylibre.com> + + * openmp.cc (is_predefined_allocator): Use gomp-constants.h consts. + * trans-common.cc (translate_common): Reject OpenMP allocate directives. + * trans-decl.cc (gfc_finish_var_decl): Handle allocate directive + for static variables. + (gfc_trans_deferred_vars): Update for the latter. + +2024-10-01 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (int_or_real_or_char_or_unsigned_check_f2003): New function. + (gfc_check_minval_maxval): Use it. + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxval): Handle + initial values for UNSIGNED. + * gfortran.texi: Document MINVAL and MAXVAL for unsigned. + +2024-09-30 David Malcolm <dmalcolm@redhat.com> + + PR other/116613 + * error.cc (gfc_diagnostic_build_locus_prefix): Convert first + param from diagnostic_context * to + const diagnostic_location_print_policy &. Add colorize param. + Likewise for the "two expanded_locations" overload. + (gfc_diagnostic_text_starter): Update for above changes. + (gfc_diagnostic_start_span): Update for change to callback type. + +2024-09-30 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/81265 + * trans-expr.cc (gfc_conv_procedure_call): Ensure coarrays use a + descriptor when passed. + +2024-09-28 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (intrinsic_type_check): Handle unsigned. + (gfc_check_findloc): Likewise. + * gfortran.texi: Include FINDLOC in unsigned documentation. + * iresolve.cc (gfc_resolve_findloc): Use INTEGER version + for UNSIGNED. + +2024-09-28 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (gfc_check_eoshift): Handle BT_UNSIGNED. + * simplify.cc (gfc_simplify_eoshift): Likewise. + * gfortran.texi: Document CSHIFT and EOSHIFT for UNSIGNED. + +2024-09-26 Mikael Morin <mikael@gcc.gnu.org> + + * invoke.texi (-M): Remove index reference to removed documentation. + +2024-09-25 Mikael Morin <mikael@gcc.gnu.org> + + PR other/116801 + * invoke.texi: Remove @code wrapping in arguments to @opindex. + (std=): Remove spurious 'option' in index. + (idirafter, imultilib, iprefix, isysroot, iquote, isystem, + fintrinsic-modules-path): Remove variable from index. + * lang.opt.urls: Regenerate. + +2024-09-25 Tobias Burnus <tburnus@baylibre.com> + + * parse.cc (decode_omp_directive): Set target-used bit of + omp_requires_mask when encountering the declare_target or interop + directive. + +2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (gfc_check_random_number): Adjust for unsigned. + * iresolve.cc (gfc_resolve_random_number): Handle unsigned. + * trans-expr.cc (gfc_conv_expr_op): Handle BT_UNSIGNED for divide. + * trans-types.cc (gfc_get_dtype_rank_type): Handle BT_UNSIGNED. + * gfortran.texi: Add RANDOM_NUMBER for UNSIGNED. + +2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> + + * check.cc (gfc_check_transf_bit_intrins): Handle unsigned. + * gfortran.texi: Docment IANY, IALL and IPARITY for unsigned. + * iresolve.cc (gfc_resolve_iall): Set flag to use integer + if type is BT_UNSIGNED. + (gfc_resolve_iany): Likewise. + (gfc_resolve_iparity): Likewise. + * simplify.cc (do_bit_and): Adjust asserts for BT_UNSIGNED. + (do_bit_ior): Likewise. + (do_bit_xor): Likewise + +2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> + + * gfortran.texi: Document SUM and PRODUCT. + * iresolve.cc (resolve_transformational): New argument, + use_integer, to translate calls to unsigned to calls to + integer. + (gfc_resolve_product): Use it + (gfc_resolve_sum): Use it. + * simplify.cc (init_result_expr): Handle BT_UNSIGNED. + +2024-09-24 Thomas Koenig <tkoenig@gcc.gnu.org> + + * arith.cc (gfc_arith_uminus): Fix warning. + (gfc_arith_minus): Correctly truncate unsigneds. + * check.cc (gfc_check_dot_product): Handle unsigned arguments. + (gfc_check_matmul): Likewise. + * expr.cc (gfc_get_unsigned_expr): New function. + * gfortran.h (gfc_get_unsigned_expr): Add prototype. + * iresolve.cc (gfc_resolve_matmul): If using UNSIGNED, use the + signed integer version. + * gfortran.texi: Document MATMUL and DOT_PRODUCT for unsigned. + * simplify.cc (compute_dot_product): Handle unsigneds. + +2024-09-24 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/101100 + * trans-expr.cc (trans_caf_token_assign): Take caf-token from + decl for non ultimate coarray components. + +2024-09-24 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/84870 + * trans-array.cc (duplicate_allocatable_coarray): For scalar + allocatable components the memory allocated is now assigned to + the component's pointer. + +2024-09-24 Tobias Burnus <tburnus@baylibre.com> + + * gfortran.h (enum gfc_omp_requires_kind): Add OMP_REQ_SELF_MAPS. + (gfc_namespace): Enlarge omp_requires bitfield. + * module.cc (enum ab_attribute, attr_bits): Add AB_OMP_REQ_SELF_MAPS. + (mio_symbol_attribute): Handle it. + * openmp.cc (gfc_check_omp_requires, gfc_match_omp_requires): Handle + self_maps clause. + * parse.cc (gfc_parse_file): Handle self_maps clause. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * invoke.texi(finline-intrinsics): Document new flag. + * lang.opt (finline-intrinsics, finline-intrinsics=, + fno-inline-intrinsics): New flags. + * options.cc (gfc_post_options): If the option variable controlling + the inlining of MAXLOC (respectively MINLOC) has not been set, set + it or clear it depending on the optimization option variables. + * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Return false + if inlining for the intrinsic is disabled according to the option + variable. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Generate a set + of index variables. Set them using the loop indexes before leaving + the first set of loops. Generate a new loop entry predicate. + Initialize it. Set it before leaving the first set of loops. Clear + it in the body of the second set of loops. For the second set of + loops, update each loop lower bound to use the corresponding index + variable if the predicate variable is set. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Initialize + and update all the variables. Put the label and goto in the + outermost scalarizer loop. Don't start the second loop where the + first stopped. + (gfc_inline_intrinsic_function_p): Also return TRUE for array MASK + or for any REAL type. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Generate + variable initialization for each dimension in the else branch of + the toplevel condition. + (gfc_inline_intrinsic_function_p): Return TRUE for scalar MASK. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-array.cc (gfc_conv_ss_startstride): Set the MINLOC/MAXLOC + result upper bound using the rank of the ARRAY argument. Ajdust + the error message for intrinsic result arrays. Only check array + bounds for array references. Move bound check decision code... + (bounds_check_needed): ... here as a new predicate. Allow bound + check for MINLOC/MAXLOC intrinsic results. + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Change the + result array upper bound to the rank of ARRAY. Update the NONEMPTY + variable to depend on the non-empty extent of every dimension. Use + one variable per dimension instead of a single variable for the + position and the offset. Update their declaration, initialization, + and update to affect the variable of each dimension. Use the first + variable only in areas only accessed with rank 1 ARRAY argument. + Set every element of the result using its corresponding variable. + (gfc_inline_intrinsic_function_p): Return true for integral ARRAY + and absent DIM and MASK. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + * trans-array.cc (gfc_conv_ss_startstride): Move array bound check + generation code... + (add_check_section_in_array_bounds): ... here as a new function. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + * frontend-passes.cc (optimize_minmaxloc): Remove. + (optimize_expr): Remove dispatch to optimize_minmaxloc. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * trans-array.cc (gfc_conv_ss_startstride): Set the scalarization + rank based on the MINLOC/MAXLOC rank if needed. Call the inline + code generation and setup the scalarizer array descriptor info + in the MINLOC and MAXLOC cases. + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Return the + result array element if the scalarizer is setup and we are inside + the loops. Restrict library function call dispatch to the case + where inline expansion is not supported. Declare an array result + if the expression isn't scalar. Initialize the array result single + element and return the result variable if the expression isn't + scalar. + (walk_inline_intrinsic_minmaxloc): New function. + (walk_inline_intrinsic_function): Add MINLOC and MAXLOC cases, + dispatching to walk_inline_intrinsic_minmaxloc. + (gfc_add_intrinsic_ss_code): Add MINLOC and MAXLOC cases. + (gfc_inline_intrinsic_function_p): Return true if ARRAY has rank 1, + regardless of DIM. + +2024-09-21 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/90608 + * frontend-passes.cc (optimize_minmaxloc): Skip if we can generate + inline code for the unmodified expression. + * trans-intrinsic.cc (gfc_inline_intrinsic_function_p): Add + MINLOC and MAXLOC cases. + +2024-09-20 David Malcolm <dmalcolm@redhat.com> + + PR other/116613 + * error.cc: Include "diagnostic-format-text.h". + (gfc_diagnostic_starter): Rename to... + (gfc_diagnostic_text_starter): ...this. Convert first + param from diagnostic_context * to diagnostic_text_output_format & + and update accordingly. + (gfc_diagnostic_finalizer, gfc_diagnostic_text_finalizer): + Likewise. + (gfc_diagnostics_init): Update for renamings. + (gfc_diagnostics_finish): Likewise. + +2024-09-19 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/106606 + * trans-types.cc (gfc_get_derived_type): Only build non-pointer + derived types as component's types when they are not yet built. + +2024-09-19 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/85002 + * trans-array.cc (duplicate_allocatable_coarray): Allow adding + of deep copy code in the when-allocated case. Add bounds + computation before condition, because coarrays need the bounds + also when not allocated. + (structure_alloc_comps): Duplication in the coarray case is done + already, omit it. Add the deep-code when duplication a coarray. + * trans-expr.cc (gfc_trans_structure_assign): Fix comment. + +2024-09-15 Mikael Morin <mikael@gcc.gnu.org> + + * trans-expr.cc (gfc_advance_se_ss_chain): Don't use an element + from the parent scalarization chain when the current chain reaches + its end. + +2024-09-13 Tobias Burnus <tburnus@baylibre.com> + + PR fortran/116661 + * gfortran.h (gfc_omp_namelist): Rename 'init' members for clarity. + * match.cc (gfc_free_omp_namelist): Handle renaming. + * dump-parse-tree.cc (show_omp_namelist): Update for new format + and features. + * openmp.cc (gfc_match_omp_prefer_type): Parse list to 'fr' and 'attr'; + store 'fr' values as integer. + (gfc_match_omp_init): Rename variable names. + +2024-09-12 Steven G. Kargl <kargl@gcc.gnu.org> + + * module.cc (bt_types): Add BT_UNSIGNED. + +2024-09-11 Tobias Burnus <tburnus@baylibre.com> + + PR fortran/116661 + * openmp.cc (gfc_match_omp_prefer_type): NULL init a gfc_expr + variable and use right locus in gfc_error. + +2024-09-09 David Malcolm <dmalcolm@redhat.com> + + * cpp.cc (cb_cpp_diagnostic_cpp_option): Convert return type from + "int" to "diagnostic_option_id". + (cb_cpp_diagnostic): Update for renaming of + diagnostic_override_option_index to diagnostic_set_option_id. + * error.cc (gfc_warning): Update for renaming of diagnostic_info + field. + (gfc_warning_now_at): Likewise. + (gfc_warning_now): Likewise. + (gfc_warning_internal): Likewise. + +2024-09-09 David Malcolm <dmalcolm@redhat.com> + + PR other/116613 + * error.cc (gfc_clear_pp_buffer): Rename diagnostic_context's + "printer" field to "m_printer". + (gfc_warning): Likewise. + (gfc_diagnostic_build_kind_prefix): Likewise. + (gfc_diagnostic_build_locus_prefix): Likewise. + (gfc_diagnostic_starter): Likewise. + (gfc_diagnostic_starter): Likewise. + (gfc_diagnostic_start_span): Likewise. + (gfc_diagnostic_finalizer): Likewise. + (gfc_warning_check): Likewise. + (gfc_error_opt): Likewise. + (gfc_error_check): Likewise. + +2024-09-07 Thomas Koenig <tkoenig@gcc.gnu.org> + + * 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. + +2024-09-06 Tobias Burnus <tburnus@baylibre.com> + + * dump-parse-tree.cc (show_omp_namelist): Handle OMP_LIST_INIT. + (show_omp_clauses): Handle OMP_LIST_{INIT,USE,DESTORY}; move 'nowait' + from end-directive to the directive dump. + (show_omp_node, show_code_node): Handle EXEC_OMP_INTEROP. + * gfortran.h (enum gfc_statement): Add ST_OMP_INTEROP. + (OMP_LIST_INIT, OMP_LIST_USE, OMP_LIST_DESTROY): Add. + (enum gfc_exec_op): Add EXEC_OMP_INTEROP. + (struct gfc_omp_namelist): Add interop items to union. + (gfc_free_omp_namelist): Add boolean arg. + * match.cc (gfc_free_omp_namelist): Update to free + interop union members. + * match.h (gfc_match_omp_interop): New. + * openmp.cc (gfc_omp_directives): Uncomment 'interop' entry. + (gfc_free_omp_clauses, gfc_match_omp_allocate, + gfc_match_omp_flush, gfc_match_omp_clause_reduction): Update + call. + (enum omp_mask2): Add OMP_CLAUSE_{INIT,USE,DESTROY}. + (OMP_INTEROP_CLAUSES): Use it. + (gfc_match_omp_clauses): Match those clauses. + (gfc_match_omp_prefer_type, gfc_match_omp_init, + gfc_match_omp_interop): New. + (resolve_omp_clauses): Handle interop clauses. + (omp_code_to_statement): Add ST_OMP_INTEROP. + (gfc_resolve_omp_directive): Add EXEC_OMP_INTEROP. + * parse.cc (decode_omp_directive): Parse 'interop' directive. + (next_statement, gfc_ascii_statement): Handle ST_OMP_INTEROP. + * st.cc (gfc_free_statement): Likewise + * resolve.cc (gfc_resolve_code): Handle EXEC_OMP_INTEROP. + * trans.cc (trans_code): Likewise. + * trans-openmp.cc (gfc_trans_omp_directive): Print 'sorry' + for EXEC_OMP_INTEROP. + +2024-09-05 Harald Anlauf <anlauf@gmx.de> + + PR fortran/100273 + * trans-decl.cc (gfc_create_module_variable): Handle module + variable also when it is needed for the result specification + of a contained function. + +2024-09-03 David Malcolm <dmalcolm@redhat.com> + + * error.cc (gfc_move_error_buffer_from_to): Prefix all + output_buffer fields with "m_". + (gfc_diagnostics_init): Likewise. + +2024-08-31 Harald Anlauf <anlauf@gmx.de> + + * match.cc (gfc_match_namelist): Downgrade feature from GNU to + legacy extension. + +2024-08-30 Harald Anlauf <anlauf@gmx.de> + + PR fortran/98454 + * resolve.cc (resolve_symbol): Add default-initialization of + non-allocatable, non-pointer derived-type function results. + +2024-08-29 David Malcolm <dmalcolm@redhat.com> + + * error.cc (gfc_format_decoder): Convert final param from + const char **buffer_ptr to pp_token_list &formatted_token_list, + and update call to default_tree_printer accordingly. + +2024-08-29 Harald Anlauf <anlauf@gmx.de> + + PR fortran/116530 + * trans-io.cc (transfer_namelist_element): Prevent NULL pointer + dereference. + +2024-08-23 Paul Thomas <pault@gcc.gnu.org> + + Revert: + 2024-08-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/102689 + * trans-array.cc (get_array_ref_dim_for_loop_dim): Use the arg1 + class container carried in ss->info as the seed for a lhs in + class valued transformational intrinsic calls that are not the + rhs of an assignment. Otherwise, the lhs variable expression is + taken from the loop chain. For this latter case, the _vptr and + _len fields are set. + (gfc_trans_create_temp_array): Use either the lhs expression + seeds to build a class variable that will take the returned + descriptor as its _data field. In the case that the arg1 expr. + is used, a class typespec must be built with the correct rank + and the _vptr and _len fields set. The element size is provided + for the temporary allocation and to set the descriptor span. + (gfc_array_init_size): When an intrinsic type scalar expr3 is + used in allocation of a class array, use its element size in + the descriptor dtype. + * trans-expr.cc (gfc_conv_class_to_class): Class valued + transformational intrinsics return the pointer to the array + descriptor as the _data field of a class temporary. Extract + directly and return the address of the class temporary. + (gfc_conv_procedure_call): store the expression for the first + argument of a class valued transformational intrinsic function + in the ss info class_container field. Later, use its type as + the element type in the call to gfc_trans_create_temp_array. + (fcncall_realloc_result): Add a dtype argument and use it in + the descriptor, when available. + (gfc_trans_arrayfunc_assign): For class lhs, build a dtype with + the lhs rank and the rhs element size and use it in the call to + fcncall_realloc_result. + +2024-08-23 Gerald Pfeifer <gerald@pfeifer.com> + + * invoke.texi (Code Gen Options): Add a missing word. + +2024-08-23 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/86468 + * trans-stmt.cc (trans_associate_var): Remove superfluous + view_convert. + +2024-08-21 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/86468 + * trans-intrinsic.cc (conv_intrinsic_move_alloc): Correct + comment. + * trans-types.cc (gfc_sym_type): Pass coarray rank, not false. + (gfc_get_derived_type): Only propagate codimension for coarrays + and pointers to array components in derived typed coarrays. + +2024-08-21 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/77518 + * trans-intrinsic.cc (gfc_conv_intrinsic_sizeof): Use + class_container of se when set. + +2024-08-20 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/84246 + * resolve.cc (caf_possible_reallocate): Detect arrays that may + be reallocated by caf_send. + (resolve_ordinary_assign): More reliably detect assignments + where a rewrite to caf_send is needed. + * trans-expr.cc (gfc_trans_assignment_1): Remove rewrite to + caf_send, because this is done by resolve now. + * trans-intrinsic.cc (conv_caf_send): Prevent unneeded temporary + arrays. + +2024-08-19 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/46371 + PR fortran/56496 + * expr.cc (gfc_is_coindexed): Detect is coindexed also when + rewritten to caf_get. + * trans-stmt.cc (trans_associate_var): Always accept a + descriptor for coarrays. + +2024-08-19 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/84244 + * trans-types.cc (gfc_get_derived_type): When a caf_sub_token is + generated for a component, link it to the component it is + generated for (the previous one). + +2024-08-16 Harald Anlauf <anlauf@gmx.de> + + PR fortran/114146 + * intrinsic.texi: Fix documentation of arguments of RANDOM_INIT, + which is conforming to the F2018 standard. + +2024-08-15 Jakub Jelinek <jakub@redhat.com> + + PR bootstrap/116387 + * resolve.cc (resolve_operator): Use %L rather than %%L in format + string. + +2024-08-15 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/110033 + * class.cc (gfc_is_class_scalar_expr): Coarray refs that ref + only self, aka this image, are regarded as scalar, too. + * resolve.cc (resolve_assoc_var): Ignore this image coarray refs + and do not build a new class type. + * trans-expr.cc (gfc_get_caf_token_offset): Get the caf token + from the descriptor for associated variables. + (gfc_conv_variable): Same. + (gfc_trans_pointer_assignment): Assign token to temporary + associate variable, too. + (gfc_trans_scalar_assign): Add flag that assign is for associate + and use it to assign the token. + (is_assoc_assign): Detect that expressions are for associate + assign. + (gfc_trans_assignment_1): Treat associate assigns like pointer + assignments where possible. + * trans-stmt.cc (trans_associate_var): Set same_class only for + class-targets. + * trans.h (gfc_trans_scalar_assign): Add flag to + trans_scalar_assign for marking associate assignments. + +2024-08-15 Andre Vehreschild <vehre@gcc.gnu.org> + + * arith.cc (reduce_unary): Use expr.corank. + (reduce_binary_ac): Same. + (reduce_binary_ca): Same. + (reduce_binary_aa): Same. + * array.cc (gfc_match_array_ref): Same. + * check.cc (dim_corank_check): Same. + (gfc_check_move_alloc): Same. + (gfc_check_image_index): Same. + * class.cc (gfc_add_class_array_ref): Same. + (finalize_component): Same. + * data.cc (gfc_assign_data_value): Same. + * decl.cc (match_clist_expr): Same. + (add_init_expr_to_sym): Same. + * expr.cc (simplify_intrinsic_op): Same. + (simplify_parameter_variable): Same. + (gfc_check_assign_symbol): Same. + (gfc_get_variable_expr): Same. + (gfc_add_full_array_ref): Same. + (gfc_lval_expr_from_sym): Same. + (gfc_get_corank): Removed. + * frontend-passes.cc (callback_reduction): Use expr.corank. + (create_var): Same. + (combine_array_constructor): Same. + (optimize_minmaxloc): Same. + * gfortran.h (gfc_get_corank): Add corank to gfc_expr. + * intrinsic.cc (gfc_get_intrinsic_function_symbol): Use + expr.corank. + (gfc_convert_type_warn): Same. + (gfc_convert_chartype): Same. + * iresolve.cc (resolve_bound): Same. + (gfc_resolve_cshift): Same. + (gfc_resolve_eoshift): Same. + (gfc_resolve_logical): Same. + (gfc_resolve_matmul): Same. + * match.cc (copy_ts_from_selector_to_associate): Same. + * matchexp.cc (gfc_get_parentheses): Same. + * parse.cc (parse_associate): Same. + * primary.cc (gfc_match_rvalue): Same. + * resolve.cc (resolve_structure_cons): Same. + (resolve_actual_arglist): Same. + (resolve_elemental_actual): Same. + (resolve_generic_f0): Same. + (resolve_unknown_f): Same. + (resolve_operator): Same. + (gfc_expression_rank): Same and set dimen_type for coarray to + default. + (gfc_op_rank_conformable): Use expr.corank. + (add_caf_get_intrinsic): Same. + (resolve_variable): Same. + (gfc_fixup_inferred_type_refs): Same. + (check_host_association): Same. + (resolve_compcall): Same. + (resolve_expr_ppc): Same. + (resolve_assoc_var): Same. + (fixup_array_ref): Same. + (resolve_select_type): Same. + (add_comp_ref): Same. + (get_temp_from_expr): Same. + (resolve_fl_var_and_proc): Same. + (resolve_symbol): Same. + * symbol.cc (gfc_is_associate_pointer): Same. + * trans-array.cc (walk_coarray): Same. + (gfc_conv_expr_descriptor): Same. + (gfc_walk_array_ref): Same. + * trans-array.h (gfc_walk_array_ref): Same. + * trans-expr.cc (gfc_get_ultimate_alloc_ptr_comps_caf_token): + Same. + * trans-intrinsic.cc (trans_this_image): Same. + (trans_image_index): Same. + (conv_intrinsic_cobound): Same. + (gfc_walk_intrinsic_function): Same. + (conv_intrinsic_move_alloc): Same. + * trans-stmt.cc (gfc_trans_lock_unlock): Same. + (trans_associate_var): Same and adapt to slightly different + behaviour of expr.corank and gfc_get_corank. + (gfc_trans_allocate): Same. + * trans.cc (gfc_add_finalizer_call): Same. + +2024-08-14 Harald Anlauf <anlauf@gmx.de> + + * simplify.cc (gfc_simplify_sizeof): Clear used gmp variable. + * target-memory.cc (gfc_target_expr_size): Likewise. + +2024-08-14 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/102973 + * match.cc (gfc_match_associate): Reset proc_ptr parsing flag on + error. + +2024-08-14 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/116292 + * trans-intrinsic.cc (conv_intrinsic_move_alloc): Get the vtab + only for derived types and classes and adjust _len for class + types. + +2024-08-13 Harald Anlauf <anlauf@gmx.de> + Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/114308 + * array.cc (resolve_array_list): Reject array constructor value if + its declared type is abstract (F2018:C7114). + +2024-08-12 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/85510 + * resolve.cc (resolve_variable): Mark the variable as host + associated only, when it is not in an associate block. + * trans-decl.cc (generate_coarray_init): Remove incorrect unused + flag on parameter. + +2024-08-11 Harald Anlauf <anlauf@gmx.de> + + PR fortran/116221 + * intrinsic.cc (gfc_get_intrinsic_sub_symbol): Initialize variable. + * symbol.cc (gfc_get_ha_symbol): Likewise. + +2024-08-07 Julian Brown <julian@codesourcery.com> + Tobias Burnus <tobias@baylibre.com> + + * gfortran.h (gfc_option_t): Add disable_omp_is_initial_device. + * lang.opt (fbuiltin-): Add. + * options.cc (gfc_handle_option): Handle + -fno-builtin-omp_is_initial_device. + * f95-lang.cc (gfc_init_builtin_functions): Handle + DEF_GOMP_BUILTIN_COMPILER. + * trans-decl.cc (gfc_get_extern_function_decl): Add code to use + DEF_GOMP_BUILTIN_COMPILER for 'omp_is_initial_device'. + +2024-08-06 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/109105 + * resolve.cc (CHECK_INTERFACES): New helper macro. + (resolve_operator): Replace use of snprintf with + gfc_error. + +2024-08-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/102689 + * trans-array.cc (get_array_ref_dim_for_loop_dim): Use the arg1 + class container carried in ss->info as the seed for a lhs in + class valued transformational intrinsic calls that are not the + rhs of an assignment. Otherwise, the lhs variable expression is + taken from the loop chain. For this latter case, the _vptr and + _len fields are set. + (gfc_trans_create_temp_array): Use either the lhs expression + seeds to build a class variable that will take the returned + descriptor as its _data field. In the case that the arg1 expr. + is used, a class typespec must be built with the correct rank + and the _vptr and _len fields set. The element size is provided + for the temporary allocation and to set the descriptor span. + (gfc_array_init_size): When an intrinsic type scalar expr3 is + used in allocation of a class array, use its element size in + the descriptor dtype. + * trans-expr.cc (gfc_conv_class_to_class): Class valued + transformational intrinsics return the pointer to the array + descriptor as the _data field of a class temporary. Extract + directly and return the address of the class temporary. + (gfc_conv_procedure_call): store the expression for the first + argument of a class valued transformational intrinsic function + in the ss info class_container field. Later, use its type as + the element type in the call to gfc_trans_create_temp_array. + (fcncall_realloc_result): Add a dtype argument and use it in + the descriptor, when available. + (gfc_trans_arrayfunc_assign): For class lhs, build a dtype with + the lhs rank and the rhs element size and use it in the call to + fcncall_realloc_result. + +2024-08-03 Steve Kargl <kargls@comcast.net> + + PR fortran/104626 + * symbol.cc (gfc_add_save): Add checks for SAVE attribute + conflicts and duplicate SAVE attribute. + +2024-08-02 Mikael Morin <mikael@gcc.gnu.org> + + * trans-intrinsic.cc (maybe_absent_optional_variable): New function. + (gfc_conv_intrinsic_minmaxloc): Remove BACK from scalarization and + evaluate it before. Add a check that BACK is not null if the + expression is an optional dummy. Save the resulting expression to a + variable. Use the variable in the generated inline code. + +2024-08-01 Jakub Jelinek <jakub@redhat.com> + + * trans-types.cc (gfc_get_array_descr_info): Don't test if + !integer_zerop (dtype_off), use fold_build_pointer_plus + unconditionally. + +2024-07-29 Tobias Burnus <tburnus@baylibre.com> + + PR fortran/115559 + * trans-common.cc (build_common_decl): Add 'omp declare target' and + 'omp declare target link' variables to offload_vars. + * trans-decl.cc (add_attributes_to_decl): Likewise; update args and + call decl_attributes. + (get_proc_pointer_decl, gfc_get_extern_function_decl, + build_function_decl): Update calls. + (gfc_get_symbol_decl): Likewise; move after 'DECL_STATIC (t)=1' + to avoid errors with symtab_node::get_create. + +2024-07-22 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/88624 + * trans-expr.cc (gfc_conv_procedure_call): Treat + pointers/references (e.g. from parameters) correctly by derefing + them. + +2024-07-21 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/59104 + * gfortran.h : Add decl_order to gfc_symbol. + * symbol.cc : Add static next_decl_order.. + (gfc_set_sym_referenced): Set symbol decl_order. + * trans-decl.cc : Include dependency.h. + (decl_order): Replace symbol declared_at.lb->location with + decl_order. + +2024-07-19 Harald Anlauf <anlauf@gmx.de> + + PR fortran/103115 + * trans-array.cc (gfc_trans_array_constructor_value): If the first + element of an array constructor is deferred-length character and + therefore does not have an element size known at compile time, do + not try to collect subsequent constant elements into a constructor + for optimization. + +2024-07-18 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/78466 + PR fortran/80774 + * array.cc (gfc_compare_array_spec): Take cotype into account. + * class.cc (gfc_build_class_symbol): Coarrays are also arrays. + * gfortran.h (IS_CLASS_COARRAY_OR_ARRAY): New macro to detect + regular and coarray class arrays. + * interface.cc (compare_components): Take codimension into + account. + * resolve.cc (resolve_symbol): Improve error message. + * simplify.cc (simplify_bound_dim): Remove duplicate. + * trans-array.cc (gfc_trans_array_cobounds): Coarrays are also + arrays. + (gfc_trans_array_bounds): Same. + (gfc_trans_dummy_array_bias): Same. + (get_coarray_as): Get the as having a non-zero codim. + (is_explicit_coarray): Detect explicit coarrays. + (gfc_conv_expr_descriptor): Create a new descriptor for explicit + coarrays. + * trans-decl.cc (gfc_build_qualified_array): Coarrays are also + arrays. + (gfc_build_dummy_array_decl): Same. + (gfc_get_symbol_decl): Same. + (gfc_trans_deferred_vars): Same. + * trans-expr.cc (class_scalar_coarray_to_class): Get the + descriptor from the correct location. + (gfc_conv_variable): Pick up the descriptor when needed. + * trans-types.cc (gfc_is_nodesc_array): Coarrays are also + arrays. + (gfc_get_nodesc_array_type): Indentation fix only. + (cobounds_match_decl): Match a tree's bounds to the expr's + bounds and return true, when they match. + (gfc_get_derived_type): Create a new type tree/descriptor, when + the cobounds of the existing declaration and expr to not + match. This happends for class arrays in parameter list, when + there are different cobound declarations. + +2024-07-18 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/108889 + * gfortran.h: Add bit field 'allocated_in_scope' to gfc_symbol. + * trans-array.cc (gfc_array_allocate): Set 'allocated_in_scope' + after allocation if not a component reference. + (gfc_alloc_allocatable_for_assignment): If 'allocated_in_scope' + not set, not a component ref and not allocated, set the array + bounds and offset to give zero length in all dimensions. Then + set allocated_in_scope. + +2024-07-18 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/82904 + * trans-types.cc (gfc_sym_type): Use type `char*` for saved + deferred length char arrays. + * trans.cc (get_array_span): Get `.span` also for `char*` typed + arrays, i.e. for those that have INTEGER_TYPE instead of + ARRAY_TYPE. + +2024-07-17 Kewen Lin <linkw@linux.ibm.com> + + PR target/112993 + * trans-types.cc (get_real_kind_from_node): Consider the case where + more than one modes have the same precision. + +2024-07-16 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/84868 + * simplify.cc (gfc_simplify_len_trim): If the argument is an + element of a parameter array, simplify all the elements and + build a new parameter array to hold the result, after checking + that it doesn't already exist. + * trans-expr.cc (gfc_get_interface_mapping_array) if a string + length is available, use it for the typespec. + (gfc_add_interface_mapping): Supply the se string length. + +2024-07-16 Prathamesh Kulkarni <prathameshk@nvidia.com> + + * trans-expr.cc (gfc_trans_zero_assign): Handle allocatable arrays. + +2024-07-13 Mikael Morin <mikael@gcc.gnu.org> + + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Add the + preliminary code generated for MASK to the preliminary code of + MINLOC/MAXLOC. + +2024-07-12 Mikael Morin <morin-mikael@orange.fr> + + * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxloc): Create a new + scalar scalarization chain element if BACK is present. Add it to + the loop. Set the scalarization chain before evaluating the + argument. + +2024-07-11 Andre Vehreschild <vehre@gcc.gnu.org> + + * trans-array.cc (gfc_conv_array_parameter): Init variable to + NULL_TREE to fix bootstrap. + +2024-07-11 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/96992 + * trans-array.cc (gfc_trans_array_bounds): Set a starting + stride, when descriptor expects a variable for the stride. + (gfc_trans_dummy_array_bias): Allow storage association for + dummy class arrays, when they are not elemental. + (gfc_conv_array_parameter): Add more general class support + and packing for classes, too. + * trans-array.h (gfc_conv_array_parameter): Add lbound shift + for class arrays. + * trans-decl.cc (gfc_build_builtin_function_decls): Add decls + for internal_un-/pack_class. + * trans-expr.cc (gfc_reset_vptr): Allow supplying a type-tree + to generate the vtab from. + (gfc_class_set_vptr): Allow supplying a class-tree to take the + vptr from. + (class_array_data_assign): Rename to gfc_class_array_data_assign + and make usable from other compile units. + (gfc_class_array_data_assign): Renamed from class_array_data_ + assign. + (gfc_conv_derived_to_class): Remove assert to + allow converting derived to class type arrays with assumed + rank. Reduce code base and use gfc_conv_array_parameter also + for classes. + (gfc_conv_class_to_class): Use gfc_class_data_assign. + (gfc_conv_procedure_call): Adapt to new signature of + gfc_conv_derived_to_class. + * trans-io.cc (transfer_expr): Same. + * trans-stmt.cc (trans_associate_var): Same. + * trans.h (gfc_conv_derived_to_class): Signature changed. + (gfc_class_array_data_assign): Made public. + (gfor_fndecl_in_pack_class): Added declaration. + (gfor_fndecl_in_unpack_class): Same. + +2024-07-08 Mikael Morin <mikael@gcc.gnu.org> + + * trans-array.cc (gfc_trans_preloop_setup): Use a separate variable + for iteration. Use directly the value of variable I if it is known. + Move the definition of the variable to the branch where the + remaining uses are. + +2024-07-03 Harald Anlauf <anlauf@gmx.de> + + PR fortran/115700 + * trans-stmt.cc (trans_associate_var): When the associate target + is an array-valued character variable, the length is known at entry + of the associate block. Move setting of string length of the + selector to the initialization part of the block. + +2024-07-01 Andrew Stubbs <ams@baylibre.com> + Thomas Schwinge <thomas@codesourcery.com> + + * openmp.cc (is_predefined_allocator): Update valid ranges to + incorporate ompx_gnu_pinned_mem_alloc. + +2024-06-29 Harald Anlauf <anlauf@gmx.de> + + PR fortran/114019 + * trans-stmt.cc (gfc_trans_allocate): Fix handling of case of + scalar character expression being used for SOURCE. + +2024-06-28 Andre Vehreschild <vehre@gcc.gnu.org> + + * trans-expr.cc (gfc_class_set_vptr): Add setting of _vptr + member. + * trans-intrinsic.cc (conv_intrinsic_move_alloc): First use + of gfc_class_set_vptr and refactor very similar code. + * trans.h (gfc_class_set_vptr): Declare the new function. + +2024-06-28 Andre Vehreschild <vehre@gcc.gnu.org> + + * trans-array.cc (structure_alloc_comps): Use reset_vptr. + * trans-decl.cc (gfc_trans_deferred_vars): Same. + (gfc_generate_function_code): Same. + * trans-expr.cc (gfc_reset_vptr): Allow supplying the class + type. + (gfc_conv_procedure_call): Use reset_vptr. + * trans-intrinsic.cc (gfc_conv_intrinsic_transfer): Same. + +2024-06-24 Harald Anlauf <anlauf@gmx.de> + + PR fortran/55978 + * trans-array.cc (gfc_conv_array_parameter): Do not dereference + data component of a missing allocatable dummy array argument for + passing as actual to optional dummy. Harden logic of presence + check for optional pointer dummy by using TRUTH_ANDIF_EXPR instead + of TRUTH_AND_EXPR. + +2024-06-20 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/59104 + * dependency.cc (dependency_fcn, gfc_function_dependency): New + functions to detect dependency in array bounds and character + lengths on old style function results. + * dependency.h : Add prototype for gfc_function_dependency. + * error.cc (error_print): Remove trailing space. + * gfortran.h : Remove dummy_order and add fn_result_spec. + * symbol.cc : Remove declaration of next_dummy_order.. + (gfc_set_sym_referenced): remove setting of symbol dummy order. + * trans-array.cc (gfc_trans_auto_array_allocation): Detect + non-dummy symbols with function dependencies and put the + allocation at the end of the initialization code. + * trans-decl.cc : Include dependency.h. + (decl_order): New function that determines uses the location + field of the symbol 'declared_at' to determine the order of two + declarations. + (gfc_defer_symbol_init): Call gfc_function_dependency to put + dependent symbols in the right part of the tlink chain. Use + the location field of the symbol declared_at to determine the + order of declarations. + (gfc_trans_auto_character_variable): Put character length + initialization of dependent symbols at the end of the chain. + * trans.cc (gfc_add_init_cleanup): Add boolean argument with + default false that determines whther an expression is placed at + the back or the front of the initialization chain. + * trans.h : Update the prototype for gfc_add_init_cleanup. + +2024-06-19 Harald Anlauf <anlauf@gmx.de> + + PR fortran/115390 + * trans-decl.cc (gfc_conv_cfi_to_gfc): Move derivation of type sizes + for character via gfc_trans_vla_type_sizes to after character length + has been set. + +2024-06-19 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/90076 + * trans-decl.cc (gfc_generate_function_code): Set vptr for + results to declared class type. + * trans-expr.cc (gfc_reset_vptr): Allow to provide the typespec + instead of the expression. + * trans.h (gfc_reset_vptr): Same. + +2024-06-17 Andre Vehreschild <vehre@gcc.gnu.org> + + * trans.cc (gfc_deallocate_with_status): Check that object to deref + is an array, before applying array deref. + +2024-06-12 David Malcolm <dmalcolm@redhat.com> + + * error.cc (gfc_clear_pp_buffer): Likewise. + (gfc_warning): Likewise. + (gfc_warning_check): Likewise. + (gfc_error_opt): Likewise. + (gfc_error_check): Likewise. + +2024-06-07 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/90068 + * trans-array.cc (gfc_trans_array_ctor_element): Eval non- + variable expressions once only. + (gfc_trans_array_constructor_value): Add statements of + final block. + (trans_array_constructor): Detect when final block is required. + +2024-06-07 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/90072 + * expr.cc (gfc_is_alloc_class_scalar_function): Detect + allocatable class return types also for user-defined + functions. + * trans-expr.cc (gfc_conv_procedure_call): Same. + (trans_class_vptr_len_assignment): Compute vptr len + assignment correctly for user-defined functions. + +2024-06-05 Jakub Jelinek <jakub@redhat.com> + Frederik Harwath <frederik@codesourcery.com> + Sandra Loosemore <sandra@codesourcery.com> + + * gfortran.h (enum gfc_statement): Add ST_OMP_UNROLL, + ST_OMP_END_UNROLL, ST_OMP_TILE and ST_OMP_END_TILE. + (struct gfc_omp_clauses): Add sizes_list, partial, full and erroneous + members. + (enum gfc_exec_op): Add EXEC_OMP_UNROLL and EXEC_OMP_TILE. + (gfc_expr_list_len): Declare. + * match.h (gfc_match_omp_tile, gfc_match_omp_unroll): Declare. + * openmp.cc (gfc_get_location): Declare. + (gfc_free_omp_clauses): Free sizes_list. + (match_oacc_expr_list): Rename to ... + (match_omp_oacc_expr_list): ... this. Add is_omp argument and + change diagnostic wording if it is true. + (enum omp_mask2): Add OMP_CLAUSE_{FULL,PARTIAL,SIZES}. + (gfc_match_omp_clauses): Parse full, partial and sizes clauses. + (gfc_match_oacc_wait): Use match_omp_oacc_expr_list instead of + match_oacc_expr_list. + (OMP_UNROLL_CLAUSES, OMP_TILE_CLAUSES): Define. + (gfc_match_omp_tile, gfc_match_omp_unroll): New functions. + (resolve_omp_clauses): Diagnose full vs. partial clause conflict. + Resolve sizes clause arguments. + (find_nested_loop_in_chain): Use switch instead of series of ifs. + Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. + (gfc_resolve_omp_do_blocks): Set omp_current_do_collapse to + list length of sizes_list if present. + (gfc_resolve_do_iterator): Return for EXEC_OMP_TILE or + EXEC_OMP_UNROLL. + (restructure_intervening_code): Remove spurious ()s around & operands. + (is_outer_iteration_variable): Handle EXEC_OMP_TILE and + EXEC_OMP_UNROLL. + (check_nested_loop_in_chain): Likewise. + (expr_is_invariant): Likewise. + (resolve_omp_do): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. Diagnose + tile without sizes clause. Use sizes_list length for count if + non-NULL. Set code->ext.omp_clauses->erroneous on loops where we've + reported diagnostics. Sorry for mixing non-rectangular loops with + generated loops. + (omp_code_to_statement): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. + (gfc_resolve_omp_directive): Likewise. + * parse.cc (decode_omp_directive): Parse end tile, end unroll, tile + and unroll. Move nothing entry alphabetically. + (case_exec_markers): Add ST_OMP_TILE and ST_OMP_UNROLL. + (gfc_ascii_statement): Handle ST_OMP_END_TILE, ST_OMP_END_UNROLL, + ST_OMP_TILE and ST_OMP_UNROLL. + (parse_omp_do): Add nested argument. Handle ST_OMP_TILE and + ST_OMP_UNROLL. + (parse_omp_structured_block): Adjust parse_omp_do caller. + (parse_executable): Likewise. Handle ST_OMP_TILE and ST_OMP_UNROLL. + * resolve.cc (gfc_resolve_blocks): Handle EXEC_OMP_TILE and + EXEC_OMP_UNROLL. + (gfc_resolve_code): Likewise. + * st.cc (gfc_free_statement): Likewise. + * trans.cc (trans_code): Likewise. + * trans-openmp.cc (gfc_trans_omp_clauses): Handle full, partial and + sizes clauses. Use tree_cons + nreverse instead of + temporary vector and build_tree_list_vec for tile_list handling. + (gfc_expr_list_len): New function. + (gfc_trans_omp_do): Rename tile to oacc_tile. Handle sizes clause. + Don't assert code->op is EXEC_DO. Handle EXEC_OMP_TILE and + EXEC_OMP_UNROLL. + (gfc_trans_omp_directive): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. + * dump-parse-tree.cc (show_omp_clauses): Dump full, partial and + sizes clauses. + (show_omp_node): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. + (show_code_node): Likewise. + +2024-06-05 Kewen Lin <linkw@linux.ibm.com> + + * trans-intrinsic.cc (build_round_expr): Use TYPE_PRECISION of + long_double_type_node to replace LONG_DOUBLE_TYPE_SIZE. + * trans-types.cc (gfc_build_real_type): Use TYPE_PRECISION of + {float,double,long_double}_type_node to replace + {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE. + +2024-06-04 Harald Anlauf <anlauf@gmx.de> + + PR fortran/83865 + * trans-stmt.cc (gfc_trans_allocate): Restrict special case for + source-expression with zero-length character to rank 0, so that + the array shape is not discarded. + +2024-05-29 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/90069 + * trans-expr.cc (gfc_conv_procedure_call): Evaluate + expressions with side-effects only ones and ensure + old is freeed. + +2024-05-24 Harald Anlauf <anlauf@gmx.de> + Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/93635 + * symbol.cc (conflict_std): Helper function for reporting attribute + conflicts depending on the Fortran standard version. + (conf_std): Helper macro for checking standard-dependent conflicts. + (gfc_check_conflict): Use it. + +2024-05-24 Harald Anlauf <anlauf@gmx.de> + + PR fortran/86100 + * trans-array.cc (gfc_conv_ss_startstride): Use abridged_ref_name + to generate a more user-friendly name for bounds-check messages. + * trans-expr.cc (gfc_copy_class_to_class): Fix bounds check for + rank>1 by looping over the dimensions. + +2024-05-23 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/103312 + * dependency.cc (gfc_dep_compare_expr): Handle component call + expressions. Return -2 as default and return 0 if compared with + a function expression that is from an interface body and has + the same name. + * expr.cc (gfc_reduce_init_expr): If the expression is a comp + call do not attempt to reduce, defer to resolution and return + false. + * trans-types.cc (gfc_get_dtype_rank_type, + gfc_get_nodesc_array_type): Fix whitespace. + +2024-05-20 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/99798 + * symbol.cc (gfc_release_symbol): Move the condition guarding + the handling cyclic references... + (cyclic_reference_break_needed): ... here as a new predicate. + Remove superfluous parts. Add a condition preventing any premature + release with submodule symbols. + +2024-05-20 Tobias Burnus <tburnus@baylibre.com> + + PR fortran/115150 + * trans-intrinsic.cc (gfc_conv_intrinsic_bound): Fix SHAPE + for zero-size arrays + +2024-05-20 Tobias Burnus <tburnus@baylibre.com> + + * invoke.texi (fcoarray): Link to OpenCoarrays.org; + mention libcaf_single. + +2024-05-17 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/114874 + * gfortran.h: Add 'assoc_name_inferred' to gfc_namespace. + * match.cc (gfc_match_select_type): Set 'assoc_name_inferred' + in select type namespace if the selector has inferred type. + * primary.cc (gfc_match_varspec): If a select type temporary + is apparently scalar and a left parenthesis has been detected, + check the current namespace has 'assoc_name_inferred' set. If + so, set inferred_type. + * resolve.cc (resolve_variable): If the namespace of a select + type temporary is marked with 'assoc_name_inferred' call + gfc_fixup_inferred_type_refs to ensure references are OK. + (gfc_fixup_inferred_type_refs): Catch invalid array refs.. + +2024-05-15 Jakub Jelinek <jakub@redhat.com> + + PR c/115103 + * openmp.cc (resolve_omp_clauses): Diagnose grainsize + used together with num_tasks or nogroup used together with + reduction. + +2024-05-13 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/113363 + * trans-array.cc (gfc_array_init_size): Use the expr3 dtype so + that the correct element size is used. + * trans-expr.cc (gfc_conv_procedure_call): Remove restriction + that ss and ss->loop be present for the finalization of class + array function results. + (trans_class_assignment): Use free and malloc, rather than + realloc, for character expressions assigned to unlimited poly + entities. + * trans-stmt.cc (gfc_trans_allocate): Build a correct rhs for + the assignment of an unlimited polymorphic 'source'. + +2024-05-12 Harald Anlauf <anlauf@gmx.de> + + * primary.cc (gfc_match_varspec): Replace 'ref' argument to + is_inquiry_ref() by NULL when the result is not needed to avoid + a memleak. + +2024-05-12 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/84006 + PR fortran/100027 + PR fortran/98534 + * iresolve.cc (gfc_resolve_transfer): Emit a TODO error for + unlimited polymorphic mold. + * trans-expr.cc (gfc_resize_class_size_with_len): Use the fold + even if a block is not available in which to fix the result. + (trans_class_assignment): Enable correct assignment of + character expressions to unlimited polymorphic variables using + lhs _len field and rse string_length. + * trans-intrinsic.cc (gfc_conv_intrinsic_storage_size): Extract + the class expression so that the unlimited polymorphic class + expression can be used in gfc_resize_class_size_with_len to + obtain the storage size for character payloads. Guard the use + of GFC_DECL_SAVED_DESCRIPTOR by testing for DECL_LANG_SPECIFIC + to prevent the ICE. Also, invert the order to use the class + expression extracted from the argument. + (gfc_conv_intrinsic_transfer): In same way as 'storage_size', + use the _len field to obtaining the correct length for arg 1. + Add a branch for the element size in bytes of class expressions + with provision to make use of the unlimited polymorphic _len + field. Again, the class references are explicitly identified. + 'mold_expr' was already declared. Use it instead of 'arg'. Do + not fix 'dest_word_len' for deferred character sources because + reallocation on assign makes use of it before it is assigned. + +2024-05-11 Harald Anlauf <anlauf@gmx.de> + + PR fortran/115039 + * expr.cc (gfc_traverse_expr): An inquiry ref does not constitute + a dependency and cannot collide with a symbol. + +2024-05-05 Harald Anlauf <anlauf@gmx.de> + + PR fortran/114827 + * trans-array.cc (gfc_alloc_allocatable_for_assignment): Take into + account _len of unlimited polymorphic entities when calculating + the effective element size for allocation size and array span. + Set _len of lhs to _len of rhs. + * trans-expr.cc (trans_class_assignment): Take into account _len + of unlimited polymorphic entities for allocation size. + +2024-04-29 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + * expr.cc (check_transformational): Add SELECTED_LOGICAL_KIND + to allowed functions for Fortran 2023. + * gfortran.h (GFC_ISYM_SL_KIND): New. + * gfortran.texi: Mention SELECTED_LOGICAL_KIND. + * intrinsic.cc (add_functions): Add SELECTED_LOGICAL_KIND. + (gfc_intrinsic_func_interface): Allow it in initialization + expressions. + * intrinsic.h (gfc_simplify_selected_logical_kind): New proto. + * intrinsic.texi: Add SELECTED_LOGICAL_KIND. + * simplify.cc (gfc_simplify_selected_logical_kind): New + function. + * trans-decl.cc (gfc_build_intrinsic_function_decls): Initialize + gfor_fndecl_sl_kind. + * trans-intrinsic.cc (gfc_conv_intrinsic_sl_kind): New function. + (gfc_conv_intrinsic_function): Call it for GFC_ISYM_SL_KIND. + * trans.h (gfor_fndecl_sl_kind): New symbol. + +2024-04-29 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + * iso-fortran-env.def: Add logical{8,16,32,64} and + real16 named constants. + +2024-04-29 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/114959 + * trans-expr.cc (gfc_trans_class_init_assign): Return NULL_TREE + if the default initializer has all NULL fields. Guard this + by a requirement that the code not be EXEC_INIT_ASSIGN and that + the object be an INTENT_OUT dummy. + * trans-stmt.cc (gfc_trans_allocate): Change the initializer + code for allocate with mold to EXEC_ALLOCATE to allow an + initializer with all NULL fields. + +2024-04-25 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/93678 + * trans-expr.cc (gfc_conv_procedure_call): Use the interface, + where possible, to obtain the type of character procedure + pointers of class entities. + +2024-04-25 Paul Thomas <pault@gcc.gnu.org> + Jakub Jelinek <jakub@gcc.gnu.org> + + PR fortran/89462 + * decl.cc (build_sym): Add an extra argument 'elem'. If 'elem' + is greater than 1, gfc_new_charlen is called to generate a new + charlen, registered in the symbol namespace. + (variable_decl, enumerator_decl): Set the new argument in the + calls to build_sym. + +2024-04-21 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/103471 + * resolve.cc (resolve_actual_arglist): Catch variables silently + set as untyped, resetting the flag so that gfc_resolve_expr can + generate the no implicit type error. + (gfc_resolve_index_1): Block index expressions of unknown type + from being converted to default integer, avoiding the fatal + error in trans-decl.cc. + * symbol.cc (gfc_set_default_type): Remove '(symbol)' from the + 'no IMPLICIT type' error message. + * trans-decl.cc (gfc_get_symbol_decl): Change fatal error locus + to that of the symbol declaration. + (gfc_trans_deferred_vars): Remove two trailing tabs. + +2024-04-18 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/114739 + * primary.cc (gfc_match_varspec): Check for default type before + checking for derived types with the right component name. + +2024-04-16 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113793 + * resolve.cc (resolve_allocate_expr): Reject ALLOCATE with SOURCE= + or MOLD= specifier for unequal length. + * trans-stmt.cc (gfc_trans_allocate): If an allocatable character + variable has fixed length, use it and do not use the source length. + With bounds-checking enabled, add a runtime check for same length. + +2024-04-10 Harald Anlauf <anlauf@gmx.de> + + PR fortran/106500 + * check.cc (is_c_interoperable): Fix checks for C_SIZEOF. + (gfc_check_c_f_pointer): Reject function returning a pointer as FPTR, + and improve an error message. + +2024-04-09 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/114535 + * resolve.cc (resolve_symbol): Remove last chunk that checked + for finalization of unreferenced symbols. + +2024-04-09 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/113956 + * trans-expr.cc (gfc_trans_pointer_assignment): Remove assert + causing the ICE since it was unnecesary. + +2024-04-02 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/106999 + * interface.cc (gfc_compare_interfaces): Add error for a + subroutine proc pointer passed to a variable formal. + (compare_parameter): If a procedure pointer is being passed to + a non-procedure formal arg, and there is an an interface, use + gfc_compare_interfaces to check and provide a more useful error + message. + +2024-04-02 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/112407 + * resolve.cc (resolve_procedure_expression): Change the test for + for recursion in the case of hidden procedures from modules. + (resolve_typebound_static): Add warning for possible recursive + calls to typebound procedures. + * trans-expr.cc (gfc_trans_class_init_assign): Do not apply + default initializer to class dummy where component initializers + are all null. + +2024-03-29 Harald Anlauf <anlauf@gmx.de> + + PR fortran/50410 + * trans-expr.cc (gfc_conv_structure): Check for NULL pointer. + +2024-03-29 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/36337 + PR fortran/110987 + PR fortran/113885 + * trans-expr.cc (gfc_trans_assignment_1): Place finalization + block before rhs post block for elemental rhs. + * trans.cc (gfc_finalize_tree_expr): Check directly if a type + has no components, rather than the zero components attribute. + Treat elemental zero component expressions in the same way as + scalars. + +2024-03-28 Harald Anlauf <anlauf@gmx.de> + + PR fortran/114474 + * primary.cc (gfc_variable_attr): Catch variables used in structure + constructors within DATA statements that are still tagged with a + temporary type BT_PROCEDURE from match_actual_arg and which have the + target attribute, and fix their typespec. + +2024-03-28 Mikael Morin <mikael@gcc.gnu.org> + Harald Anlauf <anlauf@gmx.de> + + PR fortran/111781 + PR fortran/114475 + * expr.cc (check_restricted): In submodules, allow variables host- + associated from the parent module. + +2024-03-22 Harald Anlauf <anlauf@gmx.de> + + PR fortran/55978 + * interface.cc (gfc_compare_actual_formal): Skip size check for + NULL() actual without MOLD argument. + +2024-03-22 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/107426 + * gfortran.h (gfc_save_module_list, gfc_restore_old_module_list): + New declarations. + * module.cc (old_module_list_tail): New global variable. + (gfc_save_module_list, gfc_restore_old_module_list): New functions. + (gfc_use_modules): Set module_list and old_module_list_tail. + * parse.cc (next_statement): Save module_list before doing any work. + (reject_statement): Restore module_list to its saved value. + +2024-03-22 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/111781 + * symbol.cc (gfc_get_procedure_ns, gfc_get_spec_ns): New functions. + * gfortran.h (gfc_get_procedure_ns, gfc_get_spec ns): Declare them. + (gfc_is_formal_arg): Remove. + * expr.cc (check_restricted): Remove special case allowing local + variable in dummy argument bound expressions. Use gfc_get_spec_ns + to get the right namespace. + * resolve.cc (gfc_is_formal_arg, formal_arg_flag): Remove. + (gfc_resolve_formal_arglist): Set gfc_current_ns. Quit loop and + restore gfc_current_ns instead of early returning. + (resolve_symbol): Factor common array spec resolution code to... + (resolve_symbol_array_spec): ... this new function. Additionnally + set and restore gfc_current_ns. + +2024-03-21 Harald Anlauf <anlauf@gmx.de> + + PR fortran/30802 + * trans-array.cc (abridged_ref_name): New helper function. + (trans_array_bound_check): Use it. + (array_bound_check_elemental): Likewise. + (gfc_conv_array_ref): Likewise. + +2024-03-20 Jakub Jelinek <jakub@redhat.com> + + * trans-array.cc (structure_alloc_comps): Use integer_zero_node + instead of build_zero_cst (integer_type_node) or + build_int_cst (integer_type_node, 0) and integer_one_node instead of + build_int_cst (integer_type_node, 1). + * trans-expr.cc (conv_scalar_char_value): Likewise. + * trans-stmt.cc (gfc_trans_form_team, gfc_trans_change_team, + gfc_trans_sync_team, gfc_trans_sync): Likewise. + * trans-decl.cc (create_main_function): Likewise. + * trans-intrinsic.cc (trans_this_image, conv_intrinsic_move_alloc): + Likewise. + * trans.cc (gfc_allocate_using_caf_lib, gfc_deallocate_with_status): + Likewise. + +2024-03-18 Harald Anlauf <anlauf@gmx.de> + + PR fortran/103715 + * frontend-passes.cc (check_externals_expr): Prevent invalid read + in case of mismatch of external subroutine with function. + +2024-03-17 Harald Anlauf <anlauf@gmx.de> + + PR fortran/101135 + * trans-array.cc (gfc_get_dataptr_offset): Check for optional + arguments being present before dereferencing data pointer. + +2024-03-15 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/87477 + PR fortran/89645 + PR fortran/99065 + PR fortran/114141 + PR fortran/114280 + * class.cc (gfc_change_class): New function needed for + associate names, when rank changes or a derived type is + produced by resolution + * dump-parse-tree.cc (show_code_node): Make output for SELECT + TYPE more comprehensible. + * expr.cc (find_inquiry_ref): Do not simplify expressions of + an inferred type. + * gfortran.h : Add 'gfc_association_list' to structure + 'gfc_association_list'. Add prototypes for + 'gfc_find_derived_types', 'gfc_fixup_inferred_type_refs' and + 'gfc_change_class'. Add macro IS_INFERRED_TYPE. + * match.cc (copy_ts_from_selector_to_associate): Add bolean arg + 'select_type' with default false. If this is a select type name + and the selector is a inferred type, build the class type and + apply it to the associate name. + (build_associate_name): Pass true to 'select_type' in call to + previous. + * parse.cc (parse_associate): If the selector is inferred type + the associate name is too. Make sure that function selector + class and rank, if known, are passed to the associate name. If + a function result exists, pass its typespec to the associate + name. + * primary.cc (resolvable_fcns): New function to check that all + the function references are resolvable. + (gfc_match_varspec): If a scalar derived type select type + temporary has an array reference, match the array reference, + treating this in the same way as an equivalence member. Do not + set 'inquiry' if applied to an unknown type the inquiry name + is ambiguous with the component of an accessible derived type. + Check that resolution of the target expression is OK by testing + if the symbol is declared or is an operator expression, then + using 'resolvable_fcns' recursively. If all is well, resolve + the expression. If this is an inferred type with a component + reference, call 'gfc_find_derived_types' to find a suitable + derived type. If there is an inquiry ref and the symbol either + is of unknown type or is inferred to be a derived type, set the + primary and symbol TKR appropriately. + * resolve.cc (resolve_variable): Call new function below. + (gfc_fixup_inferred_type_refs): New function to ensure that the + expression references for a inferred type are consistent with + the now fixed up selector. + (resolve_assoc_var): Ensure that derived type or class function + selectors transmit the correct arrayspec to the associate name. + (resolve_select_type): If the selector is an associate name of + inferred type and has no component references, the associate + name should have its typespec. Simplify the conversion of a + class array to class scalar by calling 'gfc_change_class'. + Make sure that a class, inferred type selector with an array + ref transfers the typespec from the symbol to the expression. + * symbol.cc (gfc_set_default_type): If an associate name with + unknown type has a selector expression, try resolving the expr. + (find_derived_types, gfc_find_derived_types): New functions + that search for a derived type with a given name. + * trans-expr.cc (gfc_conv_variable): Some inferred type exprs + escape resolution so call 'gfc_fixup_inferred_type_refs'. + * trans-stmt.cc (trans_associate_var): Tidy up expression for + 'class_target'. Finalize and free class function results. + Correctly handle selectors that are class functions and class + array references, passed as derived types. + +2024-03-14 Thomas Schwinge <thomas@codesourcery.com> + + * dump-parse-tree.cc (show_omp_clauses): Handle 'self_expr'. + * openmp.cc (gfc_free_omp_clauses): Likewise. + * trans-openmp.cc (gfc_split_omp_clauses): Don't handle 'self_expr'. + +2024-03-14 Chung-Lin Tang <cltang@baylibre.com> + + * dump-parse-tree.cc (show_omp_namelist): Print "readonly," for + OMP_LIST_MAP and OMP_LIST_CACHE if n->u.map.readonly is set. + Adjust 'n->u.map_op' to 'n->u.map.op'. + * gfortran.h (typedef struct gfc_omp_namelist): Adjust map_op as + 'ENUM_BITFIELD (gfc_omp_map_op) op:8', add 'bool readonly' field, + change to named struct field 'map'. + * openmp.cc (gfc_match_omp_map_clause): Adjust 'n->u.map_op' to + 'n->u.map.op'. + (gfc_match_omp_clause_reduction): Likewise. + (gfc_match_omp_clauses): Add readonly modifier parsing for OpenACC + copyin clause, set 'n->u.map.op' and 'n->u.map.readonly' for parsed + clause. Adjust 'n->u.map_op' to 'n->u.map.op'. + (gfc_match_oacc_declare): Adjust 'n->u.map_op' to 'n->u.map.op'. + (gfc_match_oacc_cache): Add readonly modifier parsing for OpenACC + cache directive. + (resolve_omp_clauses): Adjust 'n->u.map_op' to 'n->u.map.op'. + * trans-decl.cc (add_clause): Adjust 'n->u.map_op' to 'n->u.map.op'. + (finish_oacc_declare): Likewise. + * trans-openmp.cc (gfc_trans_omp_clauses): Set OMP_CLAUSE_MAP_READONLY, + OMP_CLAUSE__CACHE__READONLY to 1 when readonly is set. Adjust + 'n->u.map_op' to 'n->u.map.op'. + (gfc_add_clause_implicitly): Adjust 'n->u.map_op' to 'n->u.map.op'. + +2024-03-13 Harald Anlauf <anlauf@gmx.de> + + PR fortran/114001 + * expr.cc (gfc_is_simply_contiguous): Adjust logic so that CLASS + symbols are also handled. + +2024-03-13 Tobias Burnus <tburnus@baylibre.com> + + PR fortran/114283 + * trans-openmp.cc (gfc_omp_predetermined_mapping): Map dummy + procedures as firstprivate. + +2024-03-12 Harald Anlauf <anlauf@gmx.de> + + PR fortran/110826 + * array.cc (gfc_array_dimen_size): When walking the ref chain of an + array and the ultimate component is a procedure pointer, do not try + to figure out its dimension even if it is a array-valued function. + +2024-03-06 Harald Anlauf <anlauf@gmx.de> + + PR fortran/103707 + PR fortran/106987 + * arith.cc (is_hard_arith_error): New helper function to determine + whether an arithmetic error is "hard" or not. + (check_result): Use it. + (gfc_arith_divide): Set "Division by zero" only for regular + numerators of real and complex divisions. + (reduce_unary): Use is_hard_arith_error to determine whether a hard + or (recoverable) soft error was encountered. Terminate immediately + on hard error, otherwise remember code of first soft error. + (reduce_binary_ac): Likewise. + (reduce_binary_ca): Likewise. + (reduce_binary_aa): Likewise. + +2024-03-01 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104819 + * check.cc (gfc_check_null): Handle nested NULL()s. + (is_c_interoperable): Check for MOLD argument of NULL() as part of + the interoperability check. + * interface.cc (gfc_compare_actual_formal): Extend checks for NULL() + actual arguments for presence of MOLD argument when required by + Interp J3/22-146. + +2024-02-29 Alexander Westbrooks <alexanderw@gcc.gnu.org> + + PR fortran/82943 + PR fortran/86148 + PR fortran/86268 + * decl.cc (gfc_get_pdt_instance): Set the PDT instance field + 'f2k_derived', if not set already, to point to the given + PDT template 'f2k_derived' namespace in order to give the + PDT instance referential access to the typebound procedures + of the template. + * gfortran.h (gfc_pdt_is_instance_of): Add prototype. + * resolve.cc (resolve_typebound_procedure): If the derived type + does not have the attribute 'pdt_template' set, compare the + dummy argument to the 'resolve_bindings_derived' type like usual. + If the derived type is a 'pdt_template', then check if the + dummy argument is an instance of the PDT template. If the derived + type is a PDT template, and the dummy argument is an instance of + that template, but the dummy argument 'param_list' is not + SPEC_ASSUMED, check if there are any LEN parameters in the + dummy argument. If there are no LEN parameters, then this implies + that there are only KIND parameters in the dummy argument. + If there are LEN parameters, this would be an error, for all + LEN parameters for the dummy argument MUST be assumed for + typebound procedures of PDTs. + (resolve_pdt): Add a check for ALLOCATABLE and POINTER attributes for + SPEC_DEFERRED parameters of PDT class symbols. ALLOCATABLE and + POINTER attributes for a PDT class symbol are stored in the + 'class_pointer' and 'allocatable' attributes of the '_data' + component respectively. + * symbol.cc (gfc_pdt_is_instance_of): New function. + +2024-02-26 Harald Anlauf <anlauf@gmx.de> + + PR fortran/114012 + * trans-expr.cc (gfc_conv_procedure_call): Evaluate non-trivial + arguments just once before assigning to an unlimited polymorphic + dummy variable. + +2024-02-23 Steve Kargl <kargl@gcc.gnu.org> + Harald Anlauf <anlauf@gmx.de> + + PR fortran/114024 + * trans-stmt.cc (gfc_trans_allocate): When a source expression has + substring references, part-refs, or %re/%im inquiries, wrap the + entity in parentheses to force evaluation of the expression. + +2024-02-23 Tobias Burnus <tburnus@baylibre.com> + + * openmp.cc (gfc_match_omp_depobj): Use OPT_Wopenmp + as warning category in gfc_warning. + +2024-02-20 Peter Hill <peter.hill@york.ac.uk> + + PR fortran/105658 + * trans-expr.cc (gfc_conv_intrinsic_to_class): When passing an + array component reference of intrinsic type to a procedure + with an unlimited polymorphic dummy argument, a temporary + should be created. + +2024-02-17 Jakub Jelinek <jakub@redhat.com> + + PR fortran/113503 + * trans-expr.cc (alloc_scalar_allocatable_subcomponent): Don't + overwrite expr2->ts.u.cl->backend_decl, instead set size to + expr2->ts.u.cl->backend_decl first and use size instead of + expr2->ts.u.cl->backend_decl. + (gfc_trans_subcomponent_assign): Emit se.pre into block + before calling alloc_scalar_allocatable_subcomponent instead of + after it. + +2024-02-17 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113911 + * trans-array.cc (gfc_trans_deferred_array): Do not clobber + deferred length for a character variable passed as dummy argument. + +2024-02-15 Kwok Cheung Yeung <kcyeung@baylibre.com> + + * dump-parse-tree.cc (show_attr): Handle omp_declare_target_indirect + attribute. + * f95-lang.cc (gfc_gnu_attributes): Add entry for 'omp declare + target indirect'. + * gfortran.h (symbol_attribute): Add omp_declare_target_indirect + field. + (struct gfc_omp_clauses): Add indirect field. + * openmp.cc (omp_mask2): Add OMP_CLAUSE_INDIRECT. + (gfc_match_omp_clauses): Match indirect clause. + (OMP_DECLARE_TARGET_CLAUSES): Add OMP_CLAUSE_INDIRECT. + (gfc_match_omp_declare_target): Check omp_device_type and apply + omp_declare_target_indirect attribute to symbol if indirect clause + active. Show warning if there are only device_type and/or indirect + clauses on the directive. + * trans-decl.cc (add_attributes_to_decl): Add 'omp declare target + indirect' attribute if symbol has indirect attribute set. + +2024-02-14 Steve Kargl <kargl@gcc.gnu.org> + + PR fortran/105847 + * trans-io.cc (transfer_namelist_element): When building the + namelist object name, if the use rename attribute is set, use + the local name specified in the use statement. + +2024-02-14 Jakub Jelinek <jakub@redhat.com> + + * error.cc (error_print): For u printing of ptrdiff_t, + print ptrdiff_t argument converted to unsigned long long and + masked with 2ULL * PTRDIFF_MAX + 1. + +2024-02-13 Tobias Burnus <tburnus@baylibre.com> + + PR middle-end/113904 + * trans-openmp.cc (gfc_trans_omp_declare_variant): Handle splitting of + OMP_TRAIT_PROPERTY_EXPR into OMP_TRAIT_PROPERTY_{DEV_NUM,BOOL}_EXPR. + * openmp.cc (gfc_match_omp_context_selector): Likewise; rejects + non-const device_num/condition; improve diagnostic. + +2024-02-13 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113866 + * trans-expr.cc (gfc_conv_procedure_call): When passing an optional + dummy argument to an optional dummy argument of a bind(c) procedure + and the dummy argument is passed via a CFI descriptor, no special + presence check and passing of a default NULL pointer is needed. + +2024-02-13 Steve Kargl <kargl@gcc.gnu.org> + + PR fortran/113883 + * trans-array.cc (gfc_trans_deferred_array): Set length to zero, + avoiding extraneous diagnostics. + +2024-02-10 Jakub Jelinek <jakub@redhat.com> + + * error.cc (error_print): Handle z and t modifiers on d, i and u. + * check.cc (gfc_check_transfer): Use %zd instead of %ld and casts to + long. + * primary.cc (gfc_convert_to_structure_constructor): Use %td instead + of %ld and casts to long. + +2024-02-10 Jakub Jelinek <jakub@redhat.com> + + * trans-common.cc (build_common_decl): Use %wu instead of %lu and + casts to unsigned long. + * resolve.cc (resolve_ordinary_assign): Use %wd instead of %ld and + casts to long. + * array.cc (gfc_resolve_character_array_constructor): Likewise. + * data.cc (create_character_initializer): Likewise. + +2024-02-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113799 + * arith.cc (reduce_unary): Remember any overflow encountered during + reduction of unary arithmetic operations on array constructors and + continue, and return error status, but terminate on serious errors. + +2024-01-28 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113377 + * trans-expr.cc (conv_dummy_value): Treat NULL actual argument to + optional dummy with the VALUE attribute as not present. + (gfc_conv_procedure_call): Likewise. + +2024-01-27 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104908 + * trans-array.cc (gfc_conv_array_ref): Restrict use of transformed + descriptor (sym->backend_decl) to the unlimited polymorphic case. + +2024-01-24 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113377 + * trans-expr.cc (conv_dummy_value): New. + (gfc_conv_procedure_call): Factor code for handling dummy arguments + with the VALUE attribute in the scalar case into conv_dummy_value(). + Reuse and adjust for calling elemental procedures. + +2024-01-21 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113377 + * trans-expr.cc (gfc_conv_procedure_call): Fix handling of optional + scalar arguments of intrinsic type with the VALUE attribute. + +2024-01-20 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/48776 + PR fortran/111291 + * parse.cc: Restore current interface to its previous value on error. + +2024-01-19 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113471 + * trans-array.cc (array_bound_check_elemental): Array bounds check + shall apply here to elemental dimensions of an array section only. + +2024-01-13 Harald Anlauf <anlauf@gmx.de> + + PR fortran/67277 + * trans-intrinsic.cc (gfc_conv_intrinsic_ishftc): Handle optional + dummy argument for SIZE passed to ISHFTC. Set default value to + BIT_SIZE(I) when missing. + +2024-01-13 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113305 + * gfortran.h (gfc_loop_annot): New. + (gfc_iterator, gfc_forall_iterator): Use for annotation control. + * array.cc (gfc_copy_iterator): Adjust. + * gfortran.texi: Document annotations IVDEP, UNROLL n, VECTOR, + NOVECTOR as applied to DO CONCURRENT. + * parse.cc (parse_do_block): Parse annotations IVDEP, UNROLL n, + VECTOR, NOVECTOR as applied to DO CONCURRENT. Apply UNROLL only to + first loop control variable. + * trans-stmt.cc (iter_info): Use gfc_loop_annot. + (gfc_trans_simple_do): Adjust. + (gfc_trans_forall_loop): Annotate loops with IVDEP, UNROLL n, + VECTOR, NOVECTOR as needed for DO CONCURRENT. + (gfc_trans_forall_1): Handle loop annotations. + +2024-01-08 Harald Anlauf <anlauf@gmx.de> + + PR fortran/113245 + * trans-intrinsic.cc (gfc_conv_intrinsic_size): Use + gfc_conv_expr_present() for proper check of optional DIM argument. + +2024-01-06 Harald Anlauf <anlauf@gmx.de> + José Rui Faustino de Sousa <jrfsousa@gmail.com> + + PR fortran/96724 + * iresolve.cc (gfc_resolve_repeat): Force conversion to + gfc_charlen_int_kind before call to gfc_multiply. + +2024-01-04 David Malcolm <dmalcolm@redhat.com> + + * lang.opt.urls: New file, autogenerated by + regenerate-opt-urls.py. + +2024-01-03 Harald Anlauf <anlauf@gmx.de> + + * trans-types.cc (gfc_get_nodesc_array_type): Clear used gmp + variables. + +2024-01-03 Jakub Jelinek <jakub@redhat.com> + + * gfortranspec.cc (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + +Copyright (C) 2024 Free Software Foundation, Inc. + +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. |