| 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. |