2025-04-02 Sandra Loosemore <sloosemore@baylibre.com> PR middle-end/118965 * openmp.cc (gfc_parser_omp_clause_init_modifiers): Fix some inconsistent code indentation. Remove code for recognizing clauses without modifiers. Diagnose prefer_type without a following paren. Adjust error message for an unrecognized modifier. Diagnose missing target/targetsync modifier. (gfc_match_omp_init): Fix more inconsistent code indentation. 2025-03-28 Harald Anlauf <anlauf@gmx.de> * check.cc (gfc_invalid_boz): Correct spelling of compiler flag in hint to -fallow-invalid-boz. 2025-03-26 Harald Anlauf <anlauf@gmx.de> PR fortran/118796 * resolve.cc: Do not apply default initialization to a derived-type function result if the resolved function is use-associated. 2025-03-25 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/119419 * dump-parse-tree.cc (write_funptr_fcn): New function. (write_type): Invoke it for C_FUNPTR. (write_interop_decl): Do not dump vtabs. 2025-03-25 Sandra Loosemore <sloosemore@baylibre.com> Tobias Burnus <tburnus@baylibre.com> * trans-openmp.cc (gfc_trans_omp_declare_variant): Remove accidental redeclaration of pref. 2025-03-22 Jakub Jelinek <jakub@redhat.com> * resolve.cc (resolve_procedure_expression): Remove extraneous space from the middle of diagnostics. 2025-03-21 Paul-Antoine Arras <parras@baylibre.com> Tobias Burnus <tburnus@baylibre.com> * trans-openmp.cc (gfc_trans_omp_clauses): Make OMP_CLAUSE_DESTROY and OMP_CLAUSE_INIT addressable. * types.def (BT_FN_VOID_INT_INT_PTR_PTR_PTR_INT_PTR_INT_PTR_UINT_PTR): New. 2025-03-21 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/119406 * resolve.cc (resolve_locality_spec): Add space in error message. 2025-03-21 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/119403 * interface.cc (compare_parameter): Fix typo. 2025-03-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/85836 * check.cc (get_ul_from_cst_cl): New function used in check_operation. (check_operation): New function used in check_reduce and check_co_reduce. (gfc_check_co_reduce): Use it. (gfc_check_reduce): New function. (gfc_check_rename): Add prototype for intrinsic with 6 arguments. * gfortran.h : Add isym id for reduce and prototype for f6. * intrinsic.cc (do_check): Add another argument expression and use it in the call to the six argument specific check. (add_sym_6): New function. (add_functions): Add the discription of the reduce intrinsic and add it to the intrinsic list. * intrinsic.h : Add prototypes for gfc_check_reduce and gfc_resolve_reduce. * iresolve.cc (generate_reduce_op_wrapper): Generate a wrapper subroutine for the 'operation' function to enable the library implementation to be type agnostic and use pointer arithmetic throughout. (gfc_resolve_reduce): New function. * trans-expr.cc (gfc_conv_procedure_call): Add flag for scalar reduce. Generate a return variable 'sr' for scalar reduce, pass its address to the library function and return it as the scalar result. * trans-intrinsic.cc (gfc_conv_intrinsic_function): Array valued reduce is called in same way as reshape. Fall through for call to the scalar version. 2025-03-21 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/119380 * trans-array.cc (structure_alloc_comps): Prevent freeing of procedure pointer components. 2025-03-21 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/119349 * trans-expr.cc (gfc_conv_procedure_call): Prevent deallocation of array temporary for polymorphic temporary argument. 2025-03-19 Harald Anlauf <anlauf@gmx.de> PR fortran/116706 * trans-array.cc (gfc_is_reallocatable_lhs): Fix check on allocatable components of derived type or class objects. 2025-03-19 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/119272 * resolve.cc (resolve_compcall): Postpone error report when symbol is not resolved yet for component call resolve. 2025-03-18 Harald Anlauf <anlauf@gmx.de> PR fortran/119338 * resolve.cc (resolve_allocate_expr): Check F2003:C626: Type-spec in ALLOCATE of an assumed-length character dummy argument shall be an asterisk. 2025-03-16 Harald Anlauf <anlauf@gmx.de> PR fortran/60560 * expr.cc (gfc_traverse_expr): Do not descend into length type parameter for negative values of auxiliary parameter f. * resolve.cc (gfc_find_var_in_expr): New helper function to check dependence of an expression on given variable. (resolve_allocate_expr): Use it to determine if array bounds in an ALLOCATE statement depend explicitly on a variable. 2025-03-15 Tobias Burnus <tburnus@baylibre.com> PR fortran/115271 * module.cc (mio_omp_declare_simd_clauses): New, moved from ... (mio_omp_declare_simd): ... here. Update call, write empty '( )' if there is no declare simd but a declare variant. (mio_omp_declare_variant): New. (mio_symbol): Call it. * openmp.cc (gfc_match_omp_context_selector): Add comment about module.cc to TODO note. * trans-stmt.h (gfc_trans_omp_declare_variant): Take additional parent_ns argument. * trans-decl.cc (create_function_arglist, gfc_create_function_decl): Update call. * trans-openmp.cc (gfc_trans_omp_declare_variant): Take new argument, add some special case handling for attr.use_assoc. 2025-03-13 Harald Anlauf <anlauf@gmx.de> PR fortran/119118 * dependency.cc (contains_forall_index_p): Let loop over elements of a constructor update its control variable. Handle REF_INQUIRY in switch statement. (gfc_contains_implied_index_p): Likewise. 2025-03-12 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/98903 * array.cc (gfc_copy_array_ref): Copy team, team_type and stat. (match_team_or_stat): Match a single team(_number)= or stat=. (gfc_match_array_ref): Add switching to image_selector_parsing and error handling when indices come after named arguments. * coarray.cc (move_coarray_ref): Move also team_type. * expr.cc (gfc_free_ref_list): Free team and stat expression. (gfc_find_team_co): Find team or team_number in array-ref. * gfortran.h (enum gfc_array_ref_team_type): New enum to distinguish unset, team or team_number expression. (gfc_find_team_co): Default searching to team= expressions. * resolve.cc (resolve_array_ref): Check for type correctness of team(_number) and stats in coindices. * trans-array.cc (gfc_conv_array_ref): Ensure stat is cleared when fcoarray=single is used. * trans-intrinsic.cc (conv_stat_and_team): Including team_number in conversion. (gfc_conv_intrinsic_caf_get): Propagate team_number to ABI routine. (conv_caf_send_to_remote): Same. (conv_caf_sendget): Same. 2025-03-11 Harald Anlauf <anlauf@gmx.de> PR fortran/119199 * decl.cc (gfc_match_save): Reject SAVE statement of a COMMON block when in a BLOCK construct. * trans-common.cc (translate_common): Avoid NULL pointer dereference. 2025-03-11 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/119078 * frontend-passes.cc (check_against_globals): Do not check for abstract interfaces or dummy arguments. * resolve.cc (gfc_verify_binding_labels): Adjust comment. Do not put abstract interfaces or dummy argument into global namespace. 2025-03-10 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107143 * dependency.cc (check_data_pointer_types): Do not just compare for derived type, but for same derived type. 2025-03-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/119157 * gfortran.h (gfc_pop_undo_symbol): Remove prototype. * interface.cc (gfc_get_formal_from_actual_arglist): Use gfc_commit_symbol() instead of gfc_pop_undo_symbol(). * symbol.cc (gfc_pop_undo_symbol): Remove. 2025-03-08 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/119157 * gfortran.h (gfc_symbol): Make ext_dummy_arglist_mismatch a one-bit bitfield (gfc_pop_undo_symbol): Declare prototype. * symbol.cc (gfc_pop_undo_symbol): New function. * interface.cc (gfc_get_formal_from_actual_arglist): Call it for artificially introduced formal variables. 2025-03-08 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/119054 * resolve.cc (resolve_elemental_actual): When checking other actual arguments to elemental procedures, don't check attributes of literals and function calls. 2025-03-06 Harald Anlauf <anlauf@gmx.de> PR fortran/119118 * dependency.cc (gfc_contains_implied_index_p): Helper function to determine if an expression has a dependence on an implied-do index. * dependency.h (gfc_contains_implied_index_p): Add prototype. * trans-expr.cc (gfc_conv_substring): Adjust logic to not generate substring bounds checks before implied-do indices have been substituted. 2025-03-05 Mark Wielaard <mark@klomp.org> * lang.opt.urls: Regenerated. 2025-03-05 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/104684 * trans-array.cc (gfc_conv_expr_descriptor): Look at the lang-specific akind and do a view convert when only the akind attribute differs between pointer and allocatable array. 2025-03-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/119049 PR fortran/119074 * dump-parse-tree.cc (seen_conflict): New static varaible. (gfc_dump_external_c_prototypes): Initialize it. If it was set, write out a warning that -std=c23 will not work. (write_proc): Move the work of actually writing out the formal arglist to... (write_formal_arglist): New function. Handle external dummy parameters and their argument lists. If there were mismatched arguments, output an empty argument list in pre-C23 style. * gfortran.h (struct gfc_symbol): Add ext_dummy_arglist_mismatch flag and formal_at. * invoke.texi: Document -Wexternal-argument-mismatch. * lang.opt: Put it in. * resolve.cc (resolve_function): If warning about external argument mismatches, build a formal from actual arglist the first time around, and later compare and warn. (resolve_call): Likewise 2025-03-04 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/103391 * trans-expr.cc (gfc_trans_assignment_1): Do not use poly assign for pointer arrays on lhs (as it is done for allocatables already). 2025-03-04 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/77872 * trans-expr.cc (gfc_get_tree_for_caf_expr): Pick up token from decl when it is present there for class types. 2025-03-04 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/77872 * trans-expr.cc (gfc_conv_procedure_call): Use attr instead of doing type check and branching for BT_CLASS. 2025-03-03 Harald Anlauf <anlauf@gmx.de> PR fortran/101577 * symbol.cc (verify_bind_c_derived_type): Generate error message for derived type with no components in standard conformance mode, indicating that this is a GNU extension. 2025-03-03 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/118747 * trans-array.cc (gfc_trans_array_ctor_element): Remove copy to temporary variable. * trans-expr.cc (gfc_conv_procedure_call): Use references to array members instead of copies when freeing after use. Formatting fix. 2025-03-02 Sandra Loosemore <sloosemore@baylibre.com> * intrinsic.texi: Fix inconsistent capitalization of argument names and other minor copy-editing. 2025-03-02 Sandra Loosemore <sloosemore@baylibre.com> PR fortran/47928 * intrinsic.texi: Move the "Standard" subheading farther down. 2025-03-02 Sandra Loosemore <sloosemore@baylibre.com> PR fortran/47928 * gfortran.texi: Move all the "Syntax" subheadings ahead of "Description", and rename to "Synopsis". * intrinsic.texi: Likewise. 2025-03-02 Sandra Loosemore <sloosemore@baylibre.com> PR fortran/47928 * intrinsic.texi: Put a blank line between "@item @emph{}" subheadings, but not more than one. 2025-03-02 Sandra Loosemore <sloosemore@baylibre.com> PR fortran/47928 * gfortran.texi: Consistently use "@emph{Notes}:" instead of other spellings. * intrinsic.texi: Likewise. Also fix an inconsistent capitalization and remove a redundant "Standard" entry. 2025-03-01 Harald Anlauf <anlauf@gmx.de> * match.cc (gfc_match_nullify): Free matched expression when cleaning up. * primary.cc (match_variable): Initialize result to NULL. 2025-02-28 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/118730 * resolve.cc: Mark unused derived type variable with finalizers referenced to execute finalizer when leaving scope. 2025-02-27 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/118789 * trans-stmt.cc (trans_associate_var): Compare pointed to types when expr to associate is already a pointer. 2025-02-26 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/108233 * trans-expr.cc (gfc_trans_assignment_1): Remove SAVE_EXPR on lhs. 2025-02-25 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * coarray.cc (fixup_comp_refs): For class types set correct component (class) type. (split_expr_at_caf_ref): Provide location. * trans-intrinsic.cc (conv_caf_send_to_remote): Look at generated formal argument and not declared one to detect descriptor arrays. (conv_caf_sendget): Same. 2025-02-25 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * trans-intrinsic.cc (conv_caf_sendget): Use the size of data transferred between the two images and not the descritor's size. 2025-02-21 Harald Anlauf <anlauf@gmx.de> PR fortran/48958 * trans-array.cc (gfc_trans_deferred_array): Initialize the data component of non-saved pointers when -fcheck=pointer is set. 2025-02-21 Tobias Burnus <tburnus@baylibre.com> * trans-array.cc (gfc_full_array_size): Obtain the rank from the array descriptor for assumed rank. (gfc_tree_array_size): Likewise; permit expr = NULL to operate only the tree. (gfc_conv_descriptor_stride_get): Update for added assumed-rank array types. * trans-openmp.cc (gfc_omp_finish_clause): Likewise. * trans-types.cc (gfc_build_array_type, gfc_get_derived_type, gfc_get_array_descr_info): Likewise. * trans.h (enum gfc_array_kind): Add GFC_ARRAY_ASSUMED_RANK_{ALLOCATABLE,POINTER{,_CONT}}. 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * gfortran.texi: Remove deprecated functions from documentation. * trans-decl.cc (gfc_build_builtin_function_decls): Remove decprecated function decls. * trans-intrinsic.cc (gfc_conv_intrinsic_exponent): Remove deprecated/no longer needed routines. * trans.h: Remove unused decls. 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * coarray.cc (rewrite_caf_send): Rewrite to transfer_between_remotes when both sides of the assignment have a coarray. (coindexed_code_callback): Prevent duplicate rewrite. * gfortran.texi: Add documentation for transfer_between_remotes. * intrinsic.cc (add_subroutines): Add intrinsic symbol for caf_sendget to allow easy rewrite to transfer_between_remotes. * trans-decl.cc (gfc_build_builtin_function_decls): Add prototype for transfer_between_remotes. * trans-intrinsic.cc (conv_caf_vector_subscript_elem): Mark as deprecated. (conv_caf_vector_subscript): Same. (compute_component_offset): Same. (conv_expr_ref_to_caf_ref): Same. (conv_stat_and_team): Extract stat and team from expr. (gfc_conv_intrinsic_caf_get): Use conv_stat_and_team. (conv_caf_send_to_remote): Same. (has_ref_after_cafref): Mark as deprecated. (conv_caf_sendget): Translate to transfer_between_remotes. * trans.h: Add prototype for transfer_between_remotes. 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * coarray.cc (move_coarray_ref): Move the coarray reference out of the given one. Especially when there is a regular array ref. (fixup_comp_refs): Move components refs to a derived type where the codim has been removed, aka a new type. (split_expr_at_caf_ref): Correctly split the reference chain. (remove_caf_ref): Simplify. (create_get_callback): Fix some deficiencies. (create_allocated_callback): Adapt to new signature of split. (create_send_callback): New function. (rewrite_caf_send): Rewrite a call to caf_send to caf_send_to_remote. (coindexed_code_callback): Treat caf_send and caf_sendget correctly. * gfortran.h (enum gfc_isym_id): Add SENDGET-isym. * gfortran.texi: Add documentation for send_to_remote. * resolve.cc (gfc_resolve_code): No longer generate send_by_ref when allocatable coarray (component) is on the lhs. * trans-decl.cc (gfc_build_builtin_function_decls): Add caf_send_to_remote decl. * trans-intrinsic.cc (conv_caf_func_index): Ensure the static variables created are not in a block-scope. (conv_caf_send_to_remote): Translate caf_send_to_remote calls. (conv_caf_send): Renamed to conv_caf_sendget. (conv_caf_sendget): Renamed from conv_caf_send. (gfc_conv_intrinsic_subroutine): Branch correctly for conv_caf_send and sendget. * trans.h: Correct decl. 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * coarray.cc (create_allocated_callback): Add creating remote side procedure for checking allocation status of coarray. (rewrite_caf_allocated): Rewrite ALLOCATED on coarray to use caf routine. (coindexed_expr_callback): Exempt caf_is_present_on_remote from being rewritten again. * gfortran.h (enum gfc_isym_id): Add caf_is_present_on_remote id. * gfortran.texi: Add documentation for caf_is_present_on_remote. * intrinsic.cc (add_functions): Add caf_is_present_on_remote symbol. * trans-decl.cc (gfc_build_builtin_function_decls): Define interface of caf_is_present_on_remote. * trans-intrinsic.cc (gfc_conv_intrinsic_caf_is_present_remote): Translate caf_is_present_on_remote. (trans_caf_is_present): Remove. (caf_this_image_ref): Remove. (gfc_conv_allocated): Take out coarray treatment, because that is rewritten to caf_is_present_on_remote now. (gfc_conv_intrinsic_function): Handle caf_is_present_on_remote calls. * trans.h: Add symbol for caf_is_present_on_remote and remove old one. 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * coarray.cc (get_arrayspec_from_expr): Treat array result of function calls correctly. (remove_coarray_from_derived_type): Prevent memory loss. (add_caf_get_from_remote): Correct locus. (find_comp): New function to find or create a new component in a derived type. (check_add_new_comp_handle_array): Handle allocatable arrays or non-pure/non-elemental functions in indexes of coarrays. (check_add_new_component): Use above function. (create_get_parameter_type): Rename to create_caf_add_data_parameter_type. (create_caf_add_data_parameter_type): Renaming of variable and make the additional data a coarray. (remove_caf_ref): Factor out to reuse in other caf-functions. (create_get_callback): Use function factored out, set locus correctly and ensure a kind is set for parameters. (add_caf_get_intrinsic): Rename to add_caf_get_from_remote and rename some variables. (coindexed_expr_callback): Skip over function created by the rewriter. (coindexed_code_callback): Filter some intrinsics not to process. (gfc_coarray_rewrite): Rewrite also contained functions. * trans-intrinsic.cc (gfc_conv_intrinsic_caf_get): Reflect changed order on caf_get_from_remote (). 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * gfortran.texi: Rename caf_get_by_ct to caf_get_from_remote. * trans-decl.cc (gfc_build_builtin_function_decls): Rename intrinsic. * trans-intrinsic.cc (conv_caf_func_index): Factor out functionality to be reused by other caf-functions. (conv_caf_add_call_data): Same. (gfc_conv_intrinsic_caf_get): Use functions factored out. * trans.h: Rename intrinsic symbol. 2025-02-20 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/107635 * Make-lang.in: Add coarray.cc. * coarray.cc: New file. * gfortran.h (gfc_coarray_rewrite): New procedure. * parse.cc (rewrite_expr_tree): Add entrypoint for rewriting expression trees. * resolve.cc (gfc_resolve_ref): Remove caf_lhs handling. (get_arrayspec_from_expr): Moved to rewrite.cc. (remove_coarray_from_derived_type): Same. (convert_coarray_class_to_derived_type): Same. (split_expr_at_caf_ref): Same. (check_add_new_component): Same. (create_get_parameter_type): Same. (create_get_callback): Same. (add_caf_get_intrinsic): Same. (resolve_variable): Remove caf_lhs handling. 2025-02-17 Tobias Burnus <tburnus@baylibre.com> PR fortran/115271 * gfortran.h (gfc_omp_namelist): Change need_device_ptr to adj_args union and add more flags. * openmp.cc (gfc_match_omp_declare_variant, gfc_resolve_omp_declare): For adjust_args, handle need_device_addr and numeric values/ranges besides dummy argument names. (resolve_omp_dispatch): Remove bogus a adjust_args check. * trans-decl.cc (gfc_handle_omp_declare_variant): New. (gfc_generate_module_vars, gfc_generate_function_code): Call it. * trans-openmp.cc (gfc_trans_omp_declare_variant): Handle numeric values/ranges besides dummy argument names. 2025-02-17 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/118862 * trans-expr.cc (gfc_conv_cst_int_power): Use functions for unsigned wide integer. (gfc_conv_cst_uint_power): Avoid generating the mask if it would overflow an unsigned HOST_WIDE_INT. Format fixes. 2025-02-16 Thomas Koenig <tkoenig@gcc.gnu.org> * dump-parse-tree.cc (show_attr): Remove double output of attr->save. 2025-02-15 Harald Anlauf <anlauf@gmx.de> PR fortran/118080 * gfortran.texi: Adjust documentation. * trans-decl.cc (create_function_arglist): Adjust to pass hidden presence flag also for derived type dummies with VALUE,OPTIONAL attribute. * trans-expr.cc (gfc_conv_expr_present): Expect hidden presence flag also for derived type dummies with VALUE,OPTIONAL attribute. (conv_cond_temp): Adjust to allow derived types. (conv_dummy_value): Extend to handle derived type dummies with VALUE,OPTIONAL attribute. (gfc_conv_procedure_call): Adjust for actual arguments passed to derived type dummies with VALUE,OPTIONAL attribute. * trans-types.cc (gfc_get_function_type): Adjust fndecl for hidden presence flag. 2025-02-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/117430 * resolve.cc (resolve_transfer): Change gfc_notify_std to gfc_error. 2025-02-15 Andrew Pinski <pinskia@gcc.gnu.org> PR fortran/118159 * invoke.texi: Remove mention of defunct web site for Coco. 2025-02-15 Thomas Koenig <tkoenig@gcc.gnu.org> * frontend-passes.cc (check_externals_procedure): Copy typespec from old to new symbol. 2025-02-13 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/118845 * interface.cc (compare_parameter): If the formal attribute has been generated from an actual argument list, also output an pointer to there in case of an error. (gfc_get_formal_from_actual_arglist): Set function and subroutine attributes and (if it is a function) the typespec from the actual argument. 2025-02-11 Sandra Loosemore <sloosemore@baylibre.com> * trans-openmp.cc (gfc_trans_omp_declare_variant): Update call to omp_check_context_selector. (gfc_trans_omp_metadirective): Likewise. 2025-02-10 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/24878 * interface.cc (compare_parameter): Better wording on error message. 2025-02-10 Harald Anlauf <anlauf@gmx.de> PR fortran/56423 * resolve.cc (resolve_structure_cons): Check rank of pointer target; reject pointer target with vector subscripts. 2025-02-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/24878 * interface.cc (compare_parameter): Check global subroutines passed as actual arguments for subroutine / function and function type. 2025-02-08 Sandra Loosemore <sloosemore@baylibre.com> PR middle-end/107067 * parse.cc (parse_omp_do): Diagnose missing "OMP END METADIRECTIVE" after loop. (parse_omp_structured_block): Likewise for strictly structured block. (parse_omp_metadirective_body): Use better test for variants ending at different places. Issue a user diagnostic at the end if any were inconsistent, instead of calling gcc_assert. 2025-02-07 Harald Anlauf <anlauf@gmx.de> PR fortran/59252 * trans-expr.cc (gfc_trans_subcomponent_assign): Initialize allocatable non-deferred character with NULL properly. 2025-02-07 Tomáš Trnka <trnka@scm.com> PR fortran/116829 * trans-decl.cc (init_intent_out_dt): Always call gfc_init_default_dt() for BT_DERIVED to apply s->value if the symbol isn't allocatable. Also simplify the logic a bit. 2025-02-06 Paul Thomas <pault@gcc.gnu.org> PR fortran/118750 * resolve.cc (resolve_assoc_var): If the target expression has a rank, do not use gfc_expression_rank, since it will return 0 if the function is elemental. Resolution will have produced the correct rank. 2025-02-05 Tobias Burnus <tburnus@baylibre.com> PR fortran/118740 * openmp.cc (gfc_match_omp_context_selector, match_omp_metadirective): Change sorry to sorry_at and use gfc_current_locus as location. * trans-openmp.cc (gfc_trans_omp_clauses): Likewise, but use n->where. 2025-02-05 Tobias Burnus <tburnus@baylibre.com> PR fortran/118745 * trans-openmp.cc (gfc_trans_omp_declare_variant): Use append_args_list in the condition for the append_arg location. 2025-02-05 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/47485 * cpp.cc: fix -MT/-MQ adding additional target instead of replacing the default. 2025-02-04 Thomas Koenig <tkoenig@gcc.gnu.org> * arith.cc (arith_power): Handle modular arithmetic for BT_UNSIGNED. (eval_intrinsic): Error for unsigned exponentiation with -pedantic. * expr.cc (gfc_type_convert_binary): Use type of first argument for unsigned exponentiation. * gfortran.texi: Mention arithmetic exponentiation. * resolve.cc (resolve_operator): Allow unsigned exponentiation. * trans-decl.cc (gfc_build_intrinsic_function_decls): Build declarations for unsigned exponentiation. * trans-expr.cc (gfc_conv_cst_uint_power): New function. (gfc_conv_power_op): Call it. Handle unsigned exponentiation. * trans.h (gfor_fndecl_unsigned_pow_list): Add declaration. 2025-02-03 Harald Anlauf <anlauf@gmx.de> PR fortran/93289 * decl.cc (gfc_set_constant_character_len): Downgrade different string lengths in character array constructor to legacy extension. 2025-01-31 Harald Anlauf <anlauf@gmx.de> PR fortran/108454 * resolve.cc (resolve_common_blocks): Initialize variable. (resolve_symbol): If a symbol is already registered with a COMMON block, do not search for an interface with the same name. 2025-01-31 Paul-Antoine Arras <parras@baylibre.com> PR fortran/118714 * parse.cc (parse_omp_dispatch): Add missing pop_state. 2025-01-30 Sandra Loosemore <sloosemore@baylibre.com> Kwok Cheung Yeung <kcy@codesourcery.com> Sandra Loosemore <sandra@codesourcery.com> Tobias Burnus <tobias@codesourcery.com> Paul-Antoine Arras <pa@codesourcery.com> PR middle-end/112779 PR middle-end/113904 * decl.cc (gfc_match_end): Handle COMP_OMP_BEGIN_METADIRECTIVE and COMP_OMP_METADIRECTIVE. * dump-parse-tree.cc (show_omp_node): Handle EXEC_OMP_METADIRECTIVE. (show_code_node): Likewise. * gfortran.h (enum gfc_statement): Add ST_OMP_METADIRECTIVE, ST_OMP_BEGIN_METADIRECTIVE, and ST_OMP_END_METADIRECTIVE. (struct gfc_omp_clauses): Rename target_first_st_is_teams to target_first_st_is_teams_or_meta. (struct gfc_omp_variant): New. (gfc_get_omp_variant): New. (struct gfc_st_label): Add omp_region field. (enum gfc_exec_op): Add EXEC_OMP_METADIRECTIVE. (struct gfc_code): Add omp_variants fields. (gfc_free_omp_variants): Declare. (match_omp_directive): Declare. (is_omp_declarative_stmt): Declare. * io.cc (format_asterisk): Adjust initializer. * match.h (gfc_match_omp_begin_metadirective): Declare. (gfc_match_omp_metadirective): Declare. * openmp.cc (gfc_omp_directives): Uncomment metadirective. (gfc_match_omp_eos): Adjust to match context selectors. (gfc_free_omp_variants): New. (gfc_match_omp_clauses): Remove context_selector parameter and adjust to use gfc_match_omp_eos instead. (match_omp): Adjust call to gfc_match_omp_clauses. (gfc_match_omp_context_selector): Add metadirective_p parameter and adjust error-checking. Adjust matching of simd clauses. (gfc_match_omp_context_selector_specification): Adjust parameters so it can be used for metadirective as well as declare variant. (match_omp_metadirective): New. (gfc_match_omp_begin_metadirective): New. (gfc_match_omp_metadirective): New. (resolve_omp_metadirective): New. (resolve_omp_target): Handle metadirectives. (gfc_resolve_omp_directive): Handle EXEC_OMP_METADIRECTIVE. * parse.cc (gfc_matching_omp_context_selector): New. (gfc_in_omp_metadirective_body): New. (gfc_omp_region_count): New. (decode_omp_directive): Handle ST_OMP_BEGIN_METADIRECTIVE and ST_OMP_METADIRECTIVE. (match_omp_directive): New. (case_omp_structured_block): Define. (case_omp_do): Define. (gfc_ascii_statement): Handle ST_OMP_BEGIN_METADIRECTIVE, ST_OMP_END_METADIRECTIVE, and ST_OMP_METADIRECTIVE. (accept_statement): Handle ST_OMP_METADIRECTIVE and ST_OMP_BEGIN_METADIRECTIVE. (gfc_omp_end_stmt): New, split from... (parse_omp_do): ...here, and... (parse_omp_structured_block): ...here. Handle metadirectives, plus "allocate", "atomic", and "dispatch" which were missing. (parse_omp_oacc_atomic): Handle "end metadirective". (parse_openmp_allocate_block): Likewise. (parse_omp_dispatch): Likewise. (parse_omp_metadirective_body): New. (parse_executable): Handle metadirective. Use new case macros defined above. (gfc_parse_file): Initialize metadirective state. (is_omp_declarative_stmt): New. * parse.h (enum gfc_compile_state): Add COMP_OMP_METADIRECTIVE and COMP_OMP_BEGIN_METADIRECTIVE. (gfc_omp_end_stmt): Declare. (gfc_matching_omp_context_selector): Declare. (gfc_in_omp_metadirective_body): Declare. (gfc_omp_metadirective_region_count): Declare. * resolve.cc (gfc_resolve_code): Handle EXEC_OMP_METADIRECTIVE. * st.cc (gfc_free_statement): Likewise. * symbol.cc (compare_st_labels): Handle labels within a metadirective body. (gfc_get_st_label): Likewise. * trans-decl.cc (gfc_get_label_decl): Encode the metadirective region in the label_name. * trans-openmp.cc (gfc_trans_omp_directive): Handle EXEC_OMP_METADIRECTIVE. (gfc_trans_omp_set_selector): New, split/adapted from code.... (gfc_trans_omp_declare_variant): ...here. (gfc_trans_omp_metadirective): New. * trans-stmt.h (gfc_trans_omp_metadirective): Declare. * trans.cc (trans_code): Handle EXEC_OMP_METADIRECTIVE. 2025-01-30 Tobias Burnus <tburnus@baylibre.com> * gfortran.h (gfc_omp_declare_variant): Add append_args_list. * openmp.cc (gfc_parser_omp_clause_init_modifiers): New; splitt of from ... (gfc_match_omp_init): ... here; call it. (gfc_match_omp_declare_variant): Update to handle append_args clause; some syntax handling fixes. * trans-openmp.cc (gfc_trans_omp_declare_variant): Handle append_args clause; add some diagnostic. 2025-01-29 Harald Anlauf <anlauf@gmx.de> PR fortran/118683 * trans-expr.cc (gfc_conv_procedure_call): The bounds update for passing to assumed-rank dummies shall also handle component references besides inquiry references. 2025-01-27 Harald Anlauf <anlauf@gmx.de> PR fortran/110993 * frontend-passes.cc (check_externals_procedure): Do not compare interfaces of a non-bind(C) procedure against a bind(C) global one. (check_against_globals): Use local name from rename-on-use in the search for interfaces. 2025-01-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/118640 * resolve.cc (generate_component_assignments): Make sure that the rhs temporary does not pick up the optional attribute from the lhs. 2025-01-26 Tobias Burnus <tburnus@baylibre.com> * openmp.cc (gfc_omp_directives): Uncomment unroll and tile lines as the directives are by now implemented. 2025-01-26 Sandra Loosemore <sloosemore@baylibre.com> * openmp.cc (resolve_omp_atomic): Fix typo in error message. 2025-01-25 Harald Anlauf <anlauf@gmx.de> PR fortran/58857 * class.cc (gfc_find_derived_vtab): Declare some frontend generated variables and procedures (_vtab, _copy, _deallocate) as artificial. (find_intrinsic_vtab): Likewise. * trans-decl.cc (check_block_data_decls): New helper function. (gfc_generate_block_data): Use it to emit warnings for variables declared in a BLOCK DATA program unit but not in a COMMON block. 2025-01-23 Harald Anlauf <anlauf@gmx.de> PR fortran/118613 * trans-intrinsic.cc (gfc_conv_intrinsic_minmaxval): Adjust algorithm for inlined version of MINLOC and MAXLOC so that arguments are only evaluted once, and create temporaries where necessary. Document change of algorithm. 2025-01-23 Paul Thomas <pault@gcc.gnu.org> PR fortran/96087 * trans-decl.cc (gfc_get_symbol_decl): If a dummy is missing a backend decl, it is likely that it has come from a module proc interface. Look for the formal symbol by name in the containing proc and use its backend decl. * trans-expr.cc (gfc_apply_interface_mapping_to_expr): For the same reason, match the name, rather than the symbol address to perform the mapping. 2025-01-20 Harald Anlauf <anlauf@gmx.de> PR fortran/107122 * openmp.cc (resolve_omp_clauses): Add 'with' to error message text. 2025-01-20 Harald Anlauf <anlauf@gmx.de> PR fortran/81978 * trans-array.cc (gfc_conv_array_parameter): Do not copy back data if actual array parameter has the PARAMETER attribute. * trans-expr.cc (gfc_conv_subref_array_arg): Likewise. 2025-01-16 Tobias Burnus <tburnus@baylibre.com> PR fortran/118321 * trans-openmp.cc (gfc_trans_omp_declare_variant): Honor hidden arguments for append_arg's need_device_ptr. 2025-01-16 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/118359 * dump-parse-tree.cc (show_external_symbol): New function. (write_type): Add prototype, put in restrictions on what not to dump. (has_cfi_cdesc): New function. (need_iso_fortran_binding): New function. (gfc_dump_c_prototypes): Adjust to take only a file output. Add "#include <ISO_Fortran_binding.h" if CFI_cdesc_t is found. Traverse global namespaces to dump types and the globalsymol list to dump external symbols. (gfc_dump_external_c_prototypes): Traverse global namespaces. (get_c_type_name): Handle CFI_cdesc_t. (write_proc): Also pass array spec to get_c_type_name. * gfortran.h (gfc_dump_c_prototypes): Adjust prototype. * parse.cc (gfc_parse_file): Adjust call to gfc_dump_c_prototypes. 2025-01-16 Sandra Loosemore <sloosemore@baylibre.com> * openmp.cc (gfc_omp_absent_contains_clause): Use an Oxford comma in the message. 2025-01-16 Tobias Burnus <tburnus@baylibre.com> PR fortran/118441 * trans-intrinsic.cc (gfc_get_symbol_for_expr): Use gfc_new_charlen for character-returning functions. 2025-01-15 Harald Anlauf <anlauf@gmx.de> PR fortran/71884 * resolve.cc (resolve_allocate_expr): Reject intrinsic NULL as source-expr. 2025-01-14 Sandra Loosemore <sloosemore@baylibre.com> Kwok Cheung Yeung <kcy@codesourcery.com> Sandra Loosemore <sandra@codesourcery.com> Marcel Vollweiler <marcel@codesourcery.com> PR middle-end/114596 PR middle-end/112779 PR middle-end/113904 * trans-openmp.cc (gfc_trans_omp_declare_variant): Update for changes to omp-general.h interfaces. 2025-01-14 Anuj Mohite <anujmohite001@gmail.com> * dump-parse-tree.cc (show_code_node): Updated to use c->ext.concur.forall_iterator instead of c->ext.forall_iterator. * frontend-passes.cc (index_interchange): Updated to use c->ext.concur.forall_iterator instead of c->ext.forall_iterator. (gfc_code_walker): Likewise. * gfortran.h (enum locality_type): Added new enum for locality types in DO CONCURRENT constructs. * match.cc (match_simple_forall): Updated to use new_st.ext.concur.forall_iterator instead of new_st.ext.forall_iterator. (gfc_match_forall): Likewise. (gfc_match_do): Implemented support for matching DO CONCURRENT locality specifiers (LOCAL, LOCAL_INIT, SHARED, DEFAULT(NONE), and REDUCE). * parse.cc (parse_do_block): Updated to use new_st.ext.concur.forall_iterator instead of new_st.ext.forall_iterator. * resolve.cc (struct check_default_none_data): Added struct check_default_none_data. (do_concur_locality_specs_f2023): New function to check compliance with F2023's C1133 constraint for DO CONCURRENT. (check_default_none_expr): New function to check DEFAULT(NONE) compliance. (resolve_locality_spec): New function to resolve locality specs. (gfc_count_forall_iterators): Updated to use code->ext.concur.forall_iterator. (gfc_resolve_forall): Updated to use code->ext.concur.forall_iterator. * st.cc (gfc_free_statement): Updated to free locality specifications and use p->ext.concur.forall_iterator. * trans-stmt.cc (gfc_trans_forall_1): Updated to use code->ext.concur.forall_iterator. 2025-01-13 Thomas Koenig <tkoenig@gcc.gnu.org> * dump-parse-tree.cc (show_attr): Fix typos for in_equivalence. 2025-01-13 Paul-Antoine Arras <parras@baylibre.com> * openmp.cc (gfc_match_omp_declare_variant): Match comma after directive name and between clauses. Emit more useful diagnostics. 2025-01-12 Thomas Koenig <tkoenig@gcc.gnu.org> * dump-parse-tree.cc (show_attr): Dump all symbol attributes. 2025-01-12 Harald Anlauf <anlauf@gmx.de> PR fortran/115788 * check.cc (gfc_check_out_of_range): Check arguments to intrinsic. * expr.cc (free_expr0): Fix a memleak with unsigned literals. * gfortran.h (enum gfc_isym_id): Define GFC_ISYM_OUT_OF_RANGE. * gfortran.texi: Add OUT_OF_RANGE to list of intrinsics supporting UNSIGNED. * intrinsic.cc (add_functions): Add Fortran prototype. Break some nearby lines with excessive length. * intrinsic.h (gfc_check_out_of_range): Add prototypes. * intrinsic.texi: Fortran documentation of OUT_OF_RANGE. * simplify.cc (gfc_simplify_out_of_range): Compile-time simplification of OUT_OF_RANGE. * trans-intrinsic.cc (gfc_conv_intrinsic_out_of_range): Generate inline expansion of runtime code for OUT_OF_RANGE. (gfc_conv_intrinsic_function): Use it. 2025-01-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/118432 * frontend-passes.cc (doloop_code): Select correct member of co->ext.union for inquire. 2025-01-11 Tobias Burnus <tburnus@baylibre.com> * gfortran.h: Add OMP_LIST_INTEROP to the unnamed OMP_LIST_ enum. * openmp.cc (gfc_match_omp_variable_list): Add reverse_order boolean argument, defaulting to false. (enum omp_mask2, OMP_DISPATCH_CLAUSES): Add OMP_CLAUSE_INTEROP. (gfc_match_omp_clauses, resolve_omp_clauses): Handle dispatch's 'interop' clause. * trans-decl.cc (gfc_get_extern_function_decl): Use sym->declared_at instead input_location as DECL_SOURCE_LOCATION. * trans-openmp.cc (gfc_trans_omp_clauses): Handle OMP_LIST_INTEROP. 2025-01-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/108434 * class.cc (generate_finalization_wrapper): To avoid memory leaks from callocs, return immediately if the derived type error flag is set. * decl.cc (build_struct): If the declaration of a derived type or class component does not have a deferred arrayspec, correct, set the error flag of the derived type and emit an immediate error. 2025-01-10 Jakub Jelinek <jakub@redhat.com> PR fortran/118337 * module.cc (use_iso_fortran_env_module): Add a comment explaining the optimization performed. Add gcc_checking_assert that i was incremented for all the elements. Formatting fix. 2025-01-09 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/118337 * resolve.cc (resolve_fl_derived0): Exempt vtypes from cycle detection. 2025-01-09 Jakub Jelinek <jakub@redhat.com> PR fortran/118337 * module.cc (COMPAT_MOD_VERSIONS): Define. (use_iso_fortran_env_module): Don't assume all NAMED_INTCSTs come first followed by NAMED_UINTCSTs. (gfc_use_module): Accept also COMPAT_MOD_VERSIONS for compatibility. * iso-c-binding.def: Reorder entries so that the GCC 14 ones come before the ones new in GCC 15. * iso-fortran-env.def: Likewise. 2025-01-09 Tobias Burnus <tburnus@baylibre.com> * types.def (BT_FN_PTRMODE_PTR_INT_PTR): Add. 2025-01-08 Jakub Jelinek <jakub@redhat.com> PR fortran/118337 * module.cc (MOD_VERSION): Bump to "16". 2025-01-07 Thomas Koenig <tkoenig@gcc.gnu.org> * intrinsic.texi (ISO_FORTRAN_ENV): Also mention INT8 in the text. Document UINT8, UINT16, UINT32 and UINT64. (ISO_C_BINDING): New table for unsigned KIND numbers. 2025-01-07 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/114612 * trans-array.cc (structure_alloc_comps): Ensure deep copy is also done for types having cycles. 2025-01-07 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/116669 * class.cc (gfc_find_derived_vtab): Use attr to determine cyclic type dependendies. * expr.cc (gfc_has_default_initializer): Prevent endless recursion by storing already visited derived types. * resolve.cc (resolve_cyclic_derived_type): Determine if a type is used in its hierarchy in a cyclic way. (resolve_fl_derived0): Call resolve_cyclic_derived_type. (resolve_fl_derived): Ensure vtab is generated when cyclic derived types have allocatable components. * trans-array.cc (structure_alloc_comps): Prevent endless loop for derived type cycles. * trans-expr.cc (gfc_get_ultimate_alloc_ptr_comps_caf_token): Off topic, just prevent memory leaks. 2025-01-03 Thomas Koenig <tkoenig@gcc.gnu.org> * gfortran.texi: New subsection "Generating C prototypes from Fortran". 2025-01-03 Harald Anlauf <anlauf@gmx.de> PR fortran/106692 * trans-expr.cc (gfc_conv_expr_op): Inhibit excessive optimization of Cray pointers by treating them as volatile in comparisons. 2025-01-03 Sandra Loosemore <sloosemore@baylibre.com> * intrinsic.texi (ATAN): Add missing verb. 2025-01-02 Tobias Burnus <tburnus@baylibre.com> * openmp.cc (OMP_DISPATCH_CLAUSES): Add OMP_CLAUSE_HAS_DEVICE_ADDR. 2025-01-02 Paul-Antoine Arras <parras@baylibre.com> * dump-parse-tree.cc (show_omp_clauses): Handle novariants and nocontext clauses. (show_omp_node): Handle EXEC_OMP_DISPATCH. (show_code_node): Likewise. * frontend-passes.cc (gfc_code_walker): Handle novariants and nocontext. * gfortran.h (enum gfc_statement): Add ST_OMP_DISPATCH. (symbol_attribute): Add omp_declare_variant_need_device_ptr. (gfc_omp_clauses): Add novariants and nocontext. (gfc_omp_declare_variant): Add need_device_ptr_arg_list. (enum gfc_exec_op): Add EXEC_OMP_DISPATCH. * match.h (gfc_match_omp_dispatch): Declare. * openmp.cc (gfc_free_omp_clauses): Free novariants and nocontext clauses. (gfc_free_omp_declare_variant_list): Free need_device_ptr_arg_list namelist. (enum omp_mask2): Add OMP_CLAUSE_NOVARIANTS and OMP_CLAUSE_NOCONTEXT. (gfc_match_omp_clauses): Handle OMP_CLAUSE_NOVARIANTS and OMP_CLAUSE_NOCONTEXT. (OMP_DISPATCH_CLAUSES): Define. (gfc_match_omp_dispatch): New function. (gfc_match_omp_declare_variant): Parse adjust_args. (resolve_omp_clauses): Handle adjust_args, novariants and nocontext. Adjust handling of OMP_LIST_IS_DEVICE_PTR. (icode_code_error_callback): Handle EXEC_OMP_DISPATCH. (omp_code_to_statement): Likewise. (resolve_omp_dispatch): New function. (gfc_resolve_omp_directive): Handle EXEC_OMP_DISPATCH. * parse.cc (decode_omp_directive): Match dispatch. (next_statement): Handle ST_OMP_DISPATCH. (gfc_ascii_statement): Likewise. (parse_omp_dispatch): New function. (parse_executable): Handle ST_OMP_DISPATCH. * resolve.cc (gfc_resolve_blocks): Handle EXEC_OMP_DISPATCH. * st.cc (gfc_free_statement): Likewise. * trans-decl.cc (create_function_arglist): Declare. (gfc_get_extern_function_decl): Call it. * trans-openmp.cc (gfc_trans_omp_clauses): Handle novariants and nocontext. (replace_omp_dispatch_call): New function. (gfc_trans_omp_dispatch): New function. (gfc_trans_omp_directive): Handle EXEC_OMP_DISPATCH. (gfc_trans_omp_declare_variant): Handle adjust_args. * trans.cc (trans_code): Handle EXEC_OMP_DISPATCH:. 2025-01-02 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. 2025-01-01 Sandra Loosemore <sloosemore@baylibre.com> * gfortran.texi (Function ABI Documentation): Make menu ordering consistent with subsection ordering. 2025-01-01 Sandra Loosemore <sloosemore@baylibre.com> * gfortran.texi: Clean up that/which usage throughout the file. * intrinsic.texi: Likewise. * invoke.texi: Likewise. 2025-01-01 Sandra Loosemore <sloosemore@baylibre.com> * intrinsic.texi: Grammar and markup fixes throughout the file. Copyright (C) 2025 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.