blob: 92aab59567a11a99b8357ae024cfb2714af394a5 [file]
2026-11-10 Arsen Arsenović <aarsenovic@baylibre.com>
* trans-openmp.cc (gfc_omp_finish_clause): Update to use new
qualifier_set APIs.
* trans-types.cc (gfc_nonrestricted_type): Ditto.
2026-11-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* coarray.cc (split_expr_at_caf_ref): Give the base dummy
argument flavor FL_VARIABLE, not FL_PARAMETER.
(create_get_callback): Likewise for the dummy arguments made by
ADD_ARG.
(create_allocated_callback): Likewise.
(create_send_callback): Likewise.
* trans-decl.cc (gfc_build_qualified_array): Do not create a
static token for a decl that already has GFC_DECL_TOKEN.
2026-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/124975
* trans-expr.cc (gfc_trans_pointer_assignment): Correct logic
in conditions for remap start and end resolution.
2026-11-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/128509
* trans-array.cc (gfc_conv_expr_descriptor): Copy the temporary for
a parenthesized array constructor deeply, as for the constructor.
* trans-expr.cc (expr_may_alias_variables): Look through the
parentheses around an array constructor.
2026-11-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* simplify.cc (gfc_simplify_len): Return NULL for paramterized
string components of nested PDTs.
2026-11-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* expr.cc (gfc_pdt_requires_hidden_arg): New function to
determine if a dummy PDT needs an accompanying hidden argument.
* gfortran.h : Add prototype for gfc_pdt_requires_hidden_arg.
Add new fields 'hidden_pdt_dummy_decl' field to gfc_symbol and
'param_list' to gfc_code.
* match.cc (gfc_match_allocate): Copy the type_param_spec_list
from the typespec parsing and transfer it to the new field in
gfc_code.
* resolve.cc (gfc_resolve_finalizers): If finalizers clash void
an ICE by incrementing the refs for the offending finalizer.
* trans-decl.cc (create_function_arglist): A hidden scalar PDT
dummy is created for PDTs that return true for the new function
gfc_pdt_requires_hidden_arg.
(gfc_trans_deferred_vars): Clean up handling of PDT and class
PDT dummies, especially where optional.
* trans-expr.cc (gfc_conv_procedure_call): Pass a hidden PDT
scalar, if gfc_pdt_requires_hidden_arg is true, to pass the
callee's parameter values. Handle passing optional dummies if
the parameter list is not explicit. Pass NULL_TREE if the arg
is not explicit or optional.
* trans-stmt.cc (fixup_assumed_PDT_parameters): New function
than uses the hidden PDT dummy to supply values for assumed
dummy parameters.
(check_PDT_parameters): New function to verify that actual and
ALLOCATE LEN parameters are consistent. If 'stat' is present it
is set if they are inconsistent and 'errmsg' filled as well. If
'stat' is not present but 'rtcheck' is set to any value, a
runtime error is emitted. Otherwise, the compilation is allowed
to proceed.
(gfc_trans_allocate): Put all the error messages at the top.
'label_finish' is now referenced unconditionally and so its
TREE_USED field should not be set to zero. If the allocate expr
is a dummy and gfc_pdt_requires_hidden_arg return true, skip
the first branch and proceed to the second.
Use the allocate tyespec derived type and parameter list when
there is a hidden PDT dummy and use it to fix up assumed PDT
parameters in the allocate typespec.
Call the new function check_PDT_parameters to ensure that the
PDT LEN parameters are consistent between the allocate values
and those of the the expression to be allocated. Insert a label
to jump to if the fixup of assumed parameters does not work.
Handle the new error stat and errmsg by deallocating the object
and emitting the values as required.
When done, if required, free the typespec parameter list.
* trans-types.cc (gfc_get_function_type): Generate the type for
hidden PDT dummies.
2026-11-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/128357
* trans-array.cc (gfc_conv_expr_descriptor): Finalize the temporary
for a CLASS operator expression through the vtable.
* trans-expr.cc (parenthesized_variable): New function.
(gfc_conv_procedure_call): Use it. Do not copy or free the
allocatable components of the temporary for a parenthesized TYPE
variable.
2026-11-05 Harald Anlauf <anlauf@gmx.de>
PR fortran/128343
* scanner.cc (load_line): Check for optional UTF-8 BOM at beginning
of line. Adjust temporary line buffer length and line truncation.
(load_file): Use it when reading the very first line of a source
file.
2026-11-05 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (OMP_TEAMS_CLAUSES): Add OMP_CLAUSE_DYN_GROUPPRIVATE.
* trans-openmp.cc (gfc_trans_omp_clauses): Use expression and not
directive line for the location.
(gfc_split_omp_clauses): Handle dyn_groupprivate.
(gfc_trans_omp_target): Handle target-consistent clauses.
2026-11-03 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/128349
* trans-expr.cc (gfc_conv_variable): Set class container
expression from the one saved by the scalarizer.
(trans_scalar_class_assign): Use previously set class container
expression if it's available.
2026-11-03 Mikael Morin <mikael@gcc.gnu.org>
* trans-expr.cc (trans_scalar_class_assign): Delay creation of tree
nodes after early return.
2026-11-01 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/127827
* symbol.cc (gfc_dummy_requires_direct_arg): Allow CLASS type.
* trans-array.cc (get_main_decl): New function.
(gfc_get_array_span): If the array decl is not passed as input
directly, get it first before querying the span on it.
2026-10-30 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/114024
PR fortran/128033
* trans-stmt.cc (gfc_trans_allocate): Remove automatic wrapping of
array subreferences in a parentheses expression.
* trans-array.cc (gfc_array_allocate): Find the single non-element
array reference in the source expression instead of getting the last
reference in the chain. Use a gfc_array_ref pointer instead of a
gfc_ref pointer and simplify the references using it.
2026-10-30 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/127613
* expr.cc (gfc_is_simply_contiguous): Track the current type
during the data reference walk and only keep component references
that are not the _data component of a class container. Query the
array type on the _data component of the class container for
polymorphic variables.
2026-10-30 Harald Anlauf <anlauf@gmx.de>
PR fortran/128042
* target-memory.cc (encode_derived): Handle the case where an array
component of a derived type is initialized by a scalar.
2026-10-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126968
* primary.cc (skip_ref_groups): New function.
(inferred_type_chain_ok): New function.
(gfc_match_varspec): Use it to choose among the candidate types of
an inferred-type associate name.
* resolve.cc (fixup_inferred_component_array_ref): Turn a substring
into an array section when the component is a rank-1 array.
* symbol.cc (find_derived_types): Walk the symtree in order.
2026-10-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/128144
* resolve.cc (find_array_spec): Handle CLASS array components
followed directly by an array reference.
(fixup_inferred_compcall_refs): New function.
(resolve_typebound_function, resolve_typebound_subroutine)
(resolve_ppc_call, resolve_expr_ppc): Use it.
* trans-expr.cc (gfc_conv_variable): Do not call
gfc_fixup_inferred_type_refs.
2026-10-27 Tobias Burnus <tburnus@baylibre.com>
* intrinsic.texi (OpenMP intrinsic modules): Update list of
kind value and parameters.
2026-10-27 Kael Andrew Alonzo Franco <kaelfandrew@gmail.com>
PR bootstrap/112422
* gfortran.h (gfc_char_t): Remove HAVE_LONG_LONG and
HOST_BITS_PER_LONGLONG >= 32 since it is at least
64 according to C++14 standard.
2026-10-27 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* decl.cc (get_proc_name): Transfer the interface result parms
to the stashed procedure decl 'sym->tlink'...
(gfc_match_submod_proc): ... so that they can be copied to the
final procedure symbol.
* resolve.cc (resolve_pdt): Finally, transfer the parms to the
explicit result, if present.
* trans-decl.cc (gfc_trans_deferred_vars): If a PDT procedure
result has no default initializer or it is in a submodule then
allocate the parameterized components using its param_list if
present.
* trans-stmt.cc (gfc_trans_allocate): If a PDT MOLD expr3 is a
variable, use the symbol's param_list. Assert that there is a
param_list.
2026-10-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126968
* resolve.cc (fixup_inferred_component_array_ref): New function.
(gfc_fixup_inferred_type_refs): Look each component reference up
again by name in the corrected derived type and update both
u.c.sym and u.c.component. Walk the whole reference chain instead
of stopping at the first component. Look up '_data', '_vptr' and
'_len' in the class container of the preceding CLASS component.
Check component access. Use fixup_inferred_component_array_ref on
the reference after each rebound component.
2026-10-25 Harald Anlauf <anlauf@gmx.de>
PR fortran/127892
* simplify.cc (gfc_simplify_transfer): Fix a GMP memleak.
Reorganize the generation of the result expression so that its
known rank is directly used.
* target-memory.cc (gfc_target_interpret_expr): Use mpfr_clear /
mpz_clear before reinitializing scalar numerical value components.
2026-10-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126798
* resolve.cc (resolve_assoc_var): Move the procedure pointer check
out of the EXPR_VARIABLE branch and diagnose a function reference
whose result is a procedure pointer.
2026-10-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* resolve.cc (resolve_variable): Do not call gfc_fix_class_refs
for an inferred-type reference.
2026-10-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/128124
* gfortran.texi: Note that LEADZ, POPCNT, POPPAR and TRAILZ take
unsigned arguments.
* intrinsic.cc (add_functions): LEADZ and TRAILZ also take unsigned
arguments.
* intrinsic.texi: Document unsigned arguments for LEADZ, POPCNT, POPPAR
and TRAILZ.
2026-10-24 Harald Anlauf <anlauf@gmx.de>
PR fortran/128067
* module.cc (load_needed): Prevent scanning of empty name for
prefix "__".
2026-10-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127731
* expr.cc (gfc_check_pointer_assign): Set subref_array_pointer
on the pointer object when the target is a pointer array
function result.
* resolve.cc (resolve_assoc_var): Likewise on the associate name
when the selector is a pointer array function result.
* trans-expr.cc (pointer_array_result_p): New function.
(pointer_result_var): New function.
(gfc_conv_procedure_call): Pass a pointer array function result
to a non-pointer dummy through gfc_conv_subref_array_arg. Mark
the temporary for a pointer array result GFC_DECL_PTR_ARRAY_P.
2026-10-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125763
* frontend-passes.cc (create_var): Clear ts.deferred when the
temporary gets an explicit length from LEN().
* resolve.cc (gfc_resolve_expr): Resolve the substring length
also when the first reference is the substring.
2026-10-23 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/128103
* trans-array.cc (gfc_conv_expr_descriptor): Unwrap any class
container from the type to use as array descriptor element type.
2026-10-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/128093
* trans-stmt.cc (gfc_trans_allocate): Move gfc_replace_expr to
after deallocation of PDT components.
2026-10-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* trans-array.cc (structure_alloc_comps): CHECK_PDT_INTENT_OUT_
DUMMY added to enum and flag 'intent_out' set. If any of -
'intent_out' is false, the component has a codimension, is a
pointer, is a parmeterized kind, a KIND or LEN parameter, does
not have an initializer then continue through the components.
Otherwise, convert the initializer and set the component for
constants, array constructors or structure constructors.
(gfc_check_pdt_dummy): Incorporate a new argument 'intent_out';
use it to switch to the above path in structure_alloc_comps.
* trans-array.h : Add the new argument to the prototype of
gfc_check_pdt_dummy.
* trans-decl.cc (gfc_get_symbol_decl): gfc_defer_symbol_init is
now called for intent_out dummies.
(gfc_trans_deferred_vars): Call gfc_check_pdt_dummy with the
new argument set. For optional arguments, gfc_conv_expr_present
is used to apply a condition to the gfc_check_pdt_dummy result.
2026-10-20 Harald Anlauf <anlauf@gmx.de>
PR fortran/127892
* expr.cc (gfc_copy_expr): Ensure that the result representation
length is the same as that of the source.
* gfortran.h (gfc_char_to_widechar): Adjust prototype.
* scanner.cc (gfc_char_to_widechar): Add optional argument for
the result representation length, instead of deriving it from the
string argument.
2026-10-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* expr.cc (gfc_check_pointer_assign): As well as rvalue being
expr_NULL, it must not have a symtree, aring from an interface,
to return true.
2026-10-20 Tobias Burnus <tburnus@baylibre.com>
PR fortran/128032
PR fortran/127995
* module.cc (mio_omp_declare_simd_clauses): {} initialize a var.
* openmp.cc (resolve_omp_clauses): Fix safelen >= simdlen
const-scalar-int-ness check.
2026-10-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* trans-io.cc (nml_get_addr_expr): Remove nops from the data
pointer.
(transfer_namelist_element): Pass descriptors of PDT arrays.
2026-10-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* match.cc (match_derived_type_spec): Null type_param_spec_list.
(gfc_match_allocate): Detect deferrable components; ie ordinary
allocatable arrays with deferred SHAPE and no type parameters,
so that 'saw_deferrable' and 'deferred_locus' can be set
appropriately.
2026-10-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* decl.cc (gfc_get_pdt_instance): Eliminate double !.
* expr.cc (gfc_check_pointer_assign): If rvalue is expr_NULL,
return true.
2026-10-20 Paul Thomas <pault@gcc.gnu.org>
assisted by Claude Haiku <claude@anthropic.com>
PR fortran/82173
* gfortran.h: Add param_list field to gfc_code allocate structure.
Add extern declaration for gfc_get_temp_from_expr wrapper.
* match.cc (gfc_match_class_is): Clear global type_param_spec_list
before matching derived type spec to prevent residual state corruption
in assumed parameter CLASS IS matching. Compute hash_value for CLASS
IS cases to prevent collisions.
* resolve.cc (resolve_allocate_expr): Add PDT instantiation from
allocate-typespec parameters. Skip vtab lookup for PDT templates
which don't have vtabs. Add macros for CLASS IS case comparison
to prevent double-definition errors.
* trans-stmt.cc: Add convert_structure_to_type_list and
build_param_list_from_expr functions for PDT parameter handling.
Update allocate_get_initializer to handle PDT types. Improve
gfc_trans_allocate to properly handle PDT initialization with
temporary deallocation. Add include for constructor.h.
2026-10-19 Harald Anlauf <anlauf@gmx.de>
PR fortran/127881
* trans-expr.cc (conv_scalar_char_value): Fix passing of the case of
non-constant strings: always pass first first character by value.
2026-10-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* trans-array.cc (structure_alloc_comps): While recursing into
PDT components, it has to be checked that all the components of
the param_list are explicit before allocating the paramterized
components. If this not the case, use the components own param_
list to replace the assumed expressions.
2026-10-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* trans-intrinsic.cc (conv_co_collective): Pass errmsg by
reference.
2026-10-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127941
* trans-stmt.cc (gfc_trans_deallocate): Do not deallocate the
allocatable components of the last component's type when the
expression is a non-allocatable array component generated by
finalize_component.
2026-10-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* class.cc (finalize_component): Apply ASSOCIATED to the base
pointer of EXPR rather than to EXPR.
2026-10-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125747
* gfortran.h (gfc_forall_iterator): Add shadow_outer_sym.
* match.cc (apply_typespec_to_iterator): Number the shadow
variable name and set shadow_outer_sym.
* resolve.cc (check_default_none_expr): Use shadow_outer_sym.
(replace_in_code_recursive): Do not recurse into a nested
FORALL/DO CONCURRENT that shadows old_sym.
(gfc_resolve_forall): Use shadow_outer_sym.
2026-10-14 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (gfc_match_omp_clauses): Handle 'cgroup' modifier to
'dyn_groupprivate'.
2026-10-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/110421
* trans-expr.cc (alloc_scalar_allocatable_subcomponent): Use
gfc_typenode_for_spec for BT_DERIVED values too.
2026-10-13 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (OMP_TARGET_CLAUSES, OMP_TEAMS_CLAUSES): Remove
OMP_CLAUSE_SEVERITY.
* trans-openmp.cc (gfc_split_omp_clauses): Remove SEVERITY from
clause splitting for target and teams.
2026-10-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* decl.cc (gfc_get_pdt_instance): An new, imported PDT instance
must have its refs incremented. Provide a non-PDT parent type
with a default initializer. Set 'instance' referenced.
2026-10-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* trans-decl.cc (gfc_trans_deferred_vars): gfc_allocate_pdt
_comp cannot be called unless the symbol has a param_list.
2026-10-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* trans-decl.cc (gfc_trans_deferred_vars): Small formatting
adjustment followed by a guarding of the pdt component dealloc
for allocatable scalar and codimensioned variables.
* trans-stmt.cc (gfc_trans_deallocate): Likewise for all PDTs.
2026-10-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* expr.cc (find_inquiry_ref): Instead of calling gfc_pdt_find_
component_copy_initializer directly, build a KIND expression
and call gfc_simplify_len.
* gfortran.h : Add prototype for gfc_simplify_len.
* simplify.cc (gfc_simplify_len): Simplify the logic for access
to the original code by detecting a pdt_string and a variable
string length. Reduce the verbosity of the code by storing the
variable name. If the pdt_string does not have a length that is
a variable, insert the parameter expressions to a copy of the
string length. Return if this then simplifies to a constant
expression.
2026-10-12 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (resolve_omp_clauses): Permit non-constant expressions
for 'priority' clause again.
2026-10-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82173
* trans-array.cc (structure_alloc_comps): The contribution of
the lbound must be multiplied by the accumulated size to obtain
the offset.
* trans-decl.cc (gfc_trans_deferred_vars): Add a minor format
correction.
2026-10-12 Tobias Burnus <tburnus@baylibre.com>
PR middle-end/127723
* gfortran.h (gfc_omp_clauses): Add simdlen_type and
simdlen_divisor for simdlen.
* module.cc (mio_omp_declare_simd_clauses): Handle scaled;
consume "simdlen" token on reading.
(mio_omp_declare_simd): Remove the latter.
* openmp.cc (gfc_free_omp_clauses): Free simdlen_divisor.
(gfc_match_omp_clauses): Parse 'scaled' modifier to 'simdlen'.
(resolve_scalar_int_expr): Return boolean.
(resolve_positive_int_expr, resolve_nonnegative_int_expr):
Additional boolean WARN argument, if false, require constant
argument and fail with an error.
(resolve_oacc_loop_blocks): Update positive/nonnegative
const argument checking.
(resolve_omp_clauses): Likewise; handle simdlen_type/divisor.
* trans-openmp.cc (gfc_trans_omp_clauses, gfc_split_omp_clauses):
Handle simdlen clause's simdlen_type and simdlen_divisor.
2026-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* trans-stmt.cc (gfc_trans_sync_stat): Use gfc_build_addr_expr
to take the address of the STAT= variable.
2026-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125762
* resolve.cc (resolve_data): Call gfc_resolve_expr on each value
expression.
2026-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125760
* trans-stmt.cc (trans_associate_var): Use
gfc_get_class_from_gfc_expr when target_expr is not a
COMPONENT_REF.
2026-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125724
* trans-expr.cc (conv_null_actual): Handle intrinsic allocatable
and pointer dummies.
(gfc_conv_procedure_call): Use conv_null_actual for a NULL()
actual with a non-class, non-character allocatable dummy.
2026-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125721
* trans-expr.cc (gfc_trans_subcomponent_assign): Handle a CLASS
pointer component with a non-class target.
2026-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125720
* trans-expr.cc (gfc_trans_subcomponent_assign): Use
gfc_trans_string_copy for an explicit-length allocatable
character component.
2026-10-05 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/127701
* expr.cc (gfc_is_simply_contiguous): Only forward to the associate
target if there is no subreference after the associate name. Also
forward to the associate target for a non-full array reference.
Continue checking the array reference even if the associate target
is simply contiguous.
2026-10-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127724
* st.cc (deallocate_allocated_coarrays): Insert the guarded
deallocation before EXEC_END_TEAM, starting from the head of
the code list.
2026-10-04 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/127682
* interface.cc (compare_parameter): Update the conditions enforcing
the restrictions on volatile and asynchronous array arguments so
that they also work with polymorphic dummy arrays.
2026-10-03 Harald Anlauf <anlauf@gmx.de>
PR fortran/127683
* primary.cc (gfc_match_varspec): Fix two minor frontend memleaks.
* symbol.cc (gfc_find_derived_types): Return 0 when sym->assoc is
NULL.
2026-10-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/127637
* primary.cc (gfc_variable_attr): Track the current type through
the data reference walk. Don't overwrite the attribute set and the
optional variable if the current type is a class container and the
component its _data field. If the expression symbol is a function
without separate result name, and the current namespace is the
symbol's procedure body, adjust the attributes to those of the
function result.
* expr.cc (gfc_check_pointer_assign): Move the generic error check
after the specific function result error check.
* check.cc (gfc_check_c_funloc): Drop the function attribute from
the condition guarding the function result check.
2026-10-02 Mikael Morin <mikael@gcc.gnu.org>
* resolve.cc (get_data_ref_type): New static function, using the
type initialization code from gfc_variable_attr.
(resolve_variable): Call the new function.
* gfortran.h (gfc_variable_attr): Remove type argument.
* primary.cc (gfc_variable_attr): Ditto. Remove type initialization
code.
(gfc_expr_attr): Update caller.
* check.cc (allocatable_check, gfc_check_null): Likewise.
* expr.cc (gfc_is_simply_contiguous): Likewise.
* trans-expr.cc (gfc_conv_procedure_call): Likewise.
2026-09-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127671
PR fortran/127671
* trans-decl.cc (gfc_build_dummy_array_decl): Create the span
variable with create_index_var, in the function that owns the
dummy.
2026-09-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127187
* resolve.cc (resolve_assoc_var): A selector with a LEN or KIND
inquiry reference is not a variable.
2026-09-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127187
PR fortran/127187
* primary.cc (gfc_match_varspec): Clear the deferred flag, and
for KIND the charlen, of the INTEGER result of a LEN or KIND
inquiry.
* resolve.cc (resolve_variable): Do not reset the typespec of a
deferred-length character associate-name expression that has an
inquiry reference.
2026-09-26 Tobias Burnus <tburnus@baylibre.com>
* gfortran.h (enum gfc_omp_requires_kind): Add OMP_REQ_NONE.
* openmp.cc (gfc_match_boolean_clause): New.
(gfc_match_dupl_branch_clause): New.
(gfc_match_dupl_check): Remove dupl_msg arg.
(gfc_match_dupl_atomic,
gfc_match_dupl_memorder,
gfc_match_omp_clauses,
gfc_match_omp_flush,
gfc_match_omp_requires): Accept optional constant logical
expression for inarguable clauses.
2026-09-26 Tobias Burnus <tburnus@baylibre.com>
* f95-lang.cc (gfc_gnu_attributes): Add "omp groupprivate".
* trans-common.cc (build_common_decl): Enable 'omp groupprivate'.
* trans-decl.cc (add_attributes_to_decl): Likewise.
2026-09-22 Chung-Lin Tang <cltang@baylibre.com>
* openmp.cc (gfc_match_omp_declare_target): Adjust error handling
to handle local clause.
* trans-common.cc (build_common_decl): Adjust handling of device_type
clause, remove sorry and FIXME of LOCAL clause, handle local clause.
* trans-decl.cc (add_attributes_to_decl): Adjust handling of device_type
clause, remove sorry of LOCAL clause, adjust creating of
"omp declare target [link]" attribute between OpenACC/OpenMP.
2026-09-21 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/127448
* trans-array.cc (is_pointer_array): Remove redundant condition.
(is_span_addressed_array): For polymorphic arrays, return false if
the array is known to be contiguous.
* trans-types.cc (gfc_get_derived_type): Also set the
GFC_DECL_PTR_ARRAY_P flag for _data fields of class containers
corresponding to polymorphic array pointers.
2026-09-21 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.cc (gfc_get_dataptr_offset): Move guess of decl
for span from function argument...
(build_array_ref): ... to function body. Only set the decl if it
was empty on input and wasn't set by a previous guess.
2026-09-21 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.cc (span_addressed_array): Change return type to bool
and rename to ...
(is_span_addressed_array): ... this.
(gfc_get_dataptr_offset): Separate the predicate from the choice
between NULL_TREE and the input array.
(gfc_get_array_span, gfc_conv_scalarized_array_ref,
gfc_conv_array_ref): Update callers.
2026-09-21 Mikael Morin <mikael@gcc.gnu.org>
* trans.cc (gfc_build_spanned_array_ref): Remove condition guarding
pointer dereference generation.
* trans-array.cc (gfc_get_dataptr_offset): Remove now redundant
pointer dereference generation.
2026-09-21 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (gfc_match_omp_clauses): Rename argument 'first'
to first_no_comma for clarity.
(match_omp, gfc_match_omp_allocate, gfc_match_omp_assume,
gfc_match_omp_assumes, gfc_match_omp_critical,
gfc_match_omp_depobj, gfc_match_omp_flush,
gfc_match_omp_declare_simd, gfc_match_omp_declare_mapper,
gfc_match_omp_declare_reduction, gfc_match_omp_declare_target,
gfc_match_omp_thread_group_private, gfc_match_omp_requires,
gfc_match_omp_scan, gfc_match_omp_atomic,
gfc_match_omp_cancel_kind, gfc_match_omp_end_nowait,
gfc_match_omp_end_single): Permit comma between directive name
and clause name.
2026-09-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/127146
* primary.cc (gfc_match_rvalue): At two points: if the entry in
the parameter list has a name, use that in preference to the
component name.
2026-09-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/125690
* decl.cc (gfc_get_pdt_instance): PDT strings with explicit
array specifications are also PDT arrays. If the component is
allocatable, the typespec must be marked deferred.
* resolve.cc (resolve_structure_cons): Skip the string length
check for PDT types.
(resolve_allocate_expr): Initialize cmp to 0. Do not emit error
if cmp = -3 since different variable could have the same value.
* trans-array.cc (gfc_conv_scalarized_array_ref): Force pointer
arithmetic by setting 'decl' for PDT strings.
(gfc_conv_array_ref): Likewise.
(structure_alloc_comps ): Move the declaraion of 'strlen' up.
Evaluate the bounds and offset for pdt_strings as well as pdt
arrays. If non-null, use strlen to obtain the size for malloc.
Set the span to strlen.
If the component type is a descriptor, rather than just a PDT
array, use its data forboth the non-null condition and setting
to null.
* trans-io.cc (gfc_trans_transfer): PDT string arrays must be
scalarized.
2026-09-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/104776
* decl.cc (gfc_get_pdt_instance): Simplify the initializers of
KIND components in PDT templates since they must be integer
constants. Catch any remaining component initializers for
parameter substitution, if necessary, and simplification.
2026-09-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (gfc_conv_scalar_to_descriptor): Move scalar
descriptor initialization code ...
* trans-descriptor.cc (gfc_set_descriptor_from_scalar): ... here as
a new function.
* trans-descriptor.h (gfc_set_descriptor_from_scalar): New
declaration.
2026-09-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (gfc_conv_derived_to_class): Move scalar descriptor
initialization code ...
* trans-descriptor.cc (gfc_set_descriptor_from_scalar): ... here as
a new function.
* trans-descriptor.h (gfc_set_descriptor_from_scalar): New
declaration.
2026-09-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.h (gfc_copy_coarray_desc_part): New declaration.
* trans-descriptor.cc (gfc_copy_coarray_desc_part): New function,
moved from...
* trans-expr.cc (copy_coarray_desc_part): ... here.
(gfc_class_array_data_assign, gfc_conv_derived_to_class): Update
function name in callers.
2026-09-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (gfc_conv_class_to_class): Move descriptor
initialization...
* trans-descriptor.cc (gfc_set_descriptor_from_scalar_class):
... here as a new function.
* trans-descriptor.h (gfc_set_descriptor_from_scalar_class): New
declaration.
2026-09-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-types.h (gfc_get_scalar_to_descriptor_type): New
declaration.
* trans-types.cc (gfc_get_scalar_to_descriptor_type): New
function, moved from ...
* trans-expr.cc (get_scalar_to_descriptor_type): ... here.
(gfc_conv_scalar_to_descriptor, gfc_conv_derived_to_class,
gfc_conv_class_to_class): Update function name in callers.
2026-09-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (get_scalar_to_descriptor_type): Remove argument
`scalar'; add argument `scalar_type'. Replace `TREE_TYPE (scalar)'
with `scalar_type'.
(gfc_conv_scalar_to_descriptor, gfc_conv_derived_to_class,
gfc_conv_class_to_class): Only pass the type as argument in callers.
2026-09-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/103474
* simplify.cc (simplify_cobound): Take the array spec from the
base symbol, using its class data for a CLASS coarray, so that a
subobject of a coarray finds the codimensions. Return NULL for a
symbol already flagged as erroneous and in place of the two
gcc_unreachable calls reached on invalid code.
* resolve.cc (gfc_expression_rank): Track the reference carrying
the codimensions and take the corank from it rather than from the
last array reference. Clear it at an allocatable or pointer
component selector, which ends the coarray.
* trans-intrinsic.cc (strip_subobject_of_coarray): New function.
Return a copy of the expression cut back to the reference carrying
the codimensions.
(conv_intrinsic_cobound, trans_this_image, trans_image_index): Use
it, so that the descriptor queried for the cobounds is that of the
coarray and not that of a component of it.
2026-09-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126781
* check.cc (check_team_or_team_number): New function.
(gfc_check_image_index, gfc_check_num_images): Take the actual
argument list and use it.
* intrinsic.cc (add_sym_2red, add_sym_4red): New functions.
(add_functions): Give NUM_IMAGES and IMAGE_INDEX separate TEAM
and TEAM_NUMBER arguments.
(check_specific): Pass the actual argument list to
gfc_check_num_images and gfc_check_image_index.
* intrinsic.h (gfc_check_num_images, gfc_check_image_index,
gfc_simplify_image_index, gfc_simplify_num_images,
gfc_resolve_image_index): Update prototypes.
* intrinsic.texi (IMAGE_INDEX, NUM_IMAGES): Document TEAM and
TEAM_NUMBER as separate arguments. Fix the NUM_IMAGES example.
* iresolve.cc (gfc_resolve_image_index): Add TEAM_NUMBER argument.
* simplify.cc (gfc_simplify_num_images, gfc_simplify_image_index):
Likewise.
* trans-intrinsic.cc (trans_image_index, trans_num_images): Take
the team number from the TEAM_NUMBER argument.
2026-09-08 Kael Andrew Alonzo Franco <kaelfandrew@gmail.com>
PR middle-end/126622
* trans-intrinsic.cc (conv_intrinsic_atomic_op): Use
build_int_cst (integer_type_node, cst).
(conv_intrinsic_atomic_cas): Ditto.
2026-09-08 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (gfc_omp_directives): Add underscore variants.
(gfc_match_omp_clauses): Handle underscore directive names
variants of 'target_...' in the 'if' clause.
2026-09-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126964
* trans-array.cc: Include stor-layout.h.
(gfc_span_folds_into_stride): Compare the element length against
the least alignment of its type rather than the alignment.
2026-09-07 Tobias Burnus <tburnus@baylibre.com>
* parse.cc (decode_omp_directive): Parse underscore
variant of multi-word directive names as well.
2026-09-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126964
* gfortran.h (gfc_dummy_requires_direct_arg): New prototype.
* symbol.cc (gfc_is_span_addressed_dummy): Rename to...
(gfc_dummy_requires_direct_arg): ... this and move the addressing
out of the description.
* trans.h (struct lang_decl): Add span_normalized.
(GFC_DECL_SPAN_NORMALIZED): New macro.
(gfc_conv_subref_array_arg): Add span_only argument.
* trans-array.h (gfc_span_folds_into_stride): New prototype.
(gfc_conv_span_is_elem_len): Likewise.
* trans-array.cc (gfc_span_folds_into_stride): New function.
(gfc_is_span_addressed_dummy): New function, false for a dummy
whose element spacing is folded into its strides.
(gfc_conv_span_is_elem_len): New function.
(gfc_trans_dummy_array_bias): Fold the element spacing of a span
normalized dummy into its strides and its offset on entry.
* trans-decl.cc (gfc_build_dummy_array_decl): Mark such a dummy
span normalized rather than giving it a span variable.
(gfc_get_symbol_decl): Do not set GFC_DECL_PTR_ARRAY_P for it.
* trans-expr.cc (is_whole_span_addressed_dummy): New function.
(dummy_accepts_strided_arg): New function.
(copy_in_out_allowed): Use gfc_dummy_requires_direct_arg, the
actual argument of a span normalized dummy being uncopied too.
(gfc_conv_subref_array_arg): Take span_only and, with it, test the
span of the descriptor instead of contiguity.
(gfc_conv_procedure_call): Ask for the span test when a span
addressed dummy is passed on to a dummy that has a descriptor.
2026-09-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126950
* trans.h (struct lang_decl): Add span.
(GFC_DECL_SPAN, GFC_DECL_GET_SPAN): New macros.
* trans-decl.cc (gfc_build_dummy_array_decl): Create the variable
holding the span of a span addressed dummy.
* trans-array.cc (gfc_trans_dummy_array_bias): Load it from the
descriptor on entry.
(gfc_get_array_span): Use it.
* trans.cc (get_array_span): Likewise.
2026-09-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126777
* trans-intrinsic.cc (trans_image_index): Translate the team
argument with gfc_conv_expr_val.
(trans_num_images): Force the team_number lvalue into the
argument block, not the enclosing one.
2026-09-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126777
* intrinsic.texi (IMAGE_INDEX): Document as a transformational
function, not an inquiry function.
* trans-intrinsic.cc (conv_intrinsic_team_number): Always return
-1 for -fcoarray=single, regardless of any TEAM argument.
2026-09-04 Kael Andrew Alonzo Franco <kaelfandrew@gmail.com>
PR middle-end/125507
* gfortran.h (symbol_attribute): Remove ENUM_BITFIELD.
(gfc_omp_namelist): Ditto.
(gfc_omp_clauses): Ditto.
(gfc_common_head): Ditto.
(gfc_namespace): Ditto.
(gfc_intrinsic_arg): Ditto.
2026-09-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/104750
* module.cc (mio_full_f2k_derived) : Instead of transferring
the sym_root from the formal namespace, call mio_f2k_derived so
that all required symbols and references are fully loaded.
(read_cleanup): Restore named symtree entries for referenced
PDT type specification parameters during module cleanup, while
preserving existing handling for ordinary hidden symbols and
ignoring formal parameters without namespaces.
(fixup_pdt_parameter_namespaces): A new function that transfers
the namespace of locally declared PDT type specification parms
to the derived-type namespace after skipping inherited parameters,
preserving the existing namespace ownership and ref counting.
(read_module): Call the new fcn after read_cleanup, so that the
required symbol and formal-parameter information has been fully
reconstructed first.
2026-08-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/127128
* resolve.cc (replace_forall_var): New function.
(replace_in_expr_recursive): Traverse with gfc_traverse_expr
instead of walking the expression by hand.
(replace_in_code_recursive): Substitute in the whole branch chain
of IF and WHERE constructs, in the allocate-objects of ALLOCATE
and DEALLOCATE, and in SELECT TYPE and SELECT RANK case lists.
2026-08-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125722
* trans-expr.cc (gfc_char_elem_addr): New function.
(gfc_trans_alloc_char_subarray_assign): New function.
(gfc_trans_alloc_subarray_assign): Use it for an explicit-length
allocatable character array component.
2026-08-28 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (conv_null_actual): Remove dummy symbol intent
attribute modification. Move the three times repeated descriptor
initialization...
* trans-descriptor.cc (gfc_create_null_actual_descriptor): ...
here as a new function and inline the call to
gfc_conv_scalar_to_descriptor. Remove the inapplicable or
redundant parts from the inlined code. Create lower and upper
bounds arrays and clear them before passing to the type creation
function.
* trans-descriptor.h (gfc_create_null_actual_descriptor): New
declaration.
2026-08-28 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (fcncall_realloc_result): Move descriptor
creation and initialization...
* trans-descriptor.cc
(gfc_create_unallocated_library_result_descriptor): ... here as a
new function.
* trans-descriptor.h
(gfc_create_unallocated_library_result_descriptor): New declaration.
2026-08-28 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-array.cc (gfc_trans_deferred_array): Move default descriptor
initialization...
* trans-descriptor.cc (gfc_init_descriptor_variable): ... here
as a new function.
* trans-descriptor.h (gfc_init_descriptor_variable): New
declaration.
2026-08-28 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (gfc_conv_derived_to_class): Move absent array
descriptor initialization ...
* trans-descriptor.cc (gfc_init_absent_descriptor): ... here as a
new function.
* trans-descriptor.h (gfc_init_absent_descriptor): New declaration.
2026-08-28 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-decl.cc (gfc_trans_deferred_vars): Move result array
descriptor default initialization ...
* trans-descriptor.cc (gfc_init_descriptor_result): ... here as
a new function.
* trans-descriptor.h (gfc_init_descriptor_result): New declaration.
2026-08-28 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-expr.cc (gfc_trans_pointer_assignment): Move pointer
nullification generation ...
* trans-descriptor.cc (gfc_nullify_descriptor): ... here as a new
function.
* trans-descriptor.h (gfc_nullify_descriptor): New declaration.
2026-08-27 Jakub Jelinek <jakub@redhat.com>
* lang.opt (Wargument-mismatch): Use 2 spaces instead of 1 between
sentences in the description.
(fdump-core): Likewise.
2026-08-27 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans.h (GFC_DTYPE_ELEM_LEN, GFC_DTYPE_VERSION, GFC_DTYPE_RANK,
GFC_DTYPE_TYPE, GFC_DTYPE_ATTRIBUTE): Move preprocessor constants...
* trans-descriptor.cc (GFC_DTYPE_ELEM_LEN, GFC_DTYPE_VERSION,
GFC_DTYPE_RANK, GFC_DTYPE_TYPE, GFC_DTYPE_ATTRIBUTE): ... here.
Undefine the constants after the last function using them.
2026-08-27 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_get_descriptor_offsets_for_info): Remove
the dtype offset argument and add a rank offset argument. Set the
value of that offset. Use a variable to factor repeated accesses to
TYPE_FIELDS (type).
* trans-types.cc (gfc_get_array_descr_info): Update caller. Create
the rank expression using the just obtained rank offset.
2026-08-27 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-types.cc (gfc_get_dtype_rank_type): Move constructor
generation ...
* trans-descriptor.cc (gfc_build_dtype_constructor): ... here as a
new function.
* trans-descriptor.h (gfc_build_dtype_constructor): New declaration.
2026-08-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/82065
* trans-decl.cc (gfc_get_symbol_decl): Emit the static
initializer for intrinsic array parameters regardless of the
enclosing namespace.
2026-08-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/49802
* trans-expr.cc (conv_dummy_value): Suppress the CHARACTER copy
and pass a null pointer and a zero length when the actual argument
is an absent optional one.
(gfc_conv_procedure_call): Give gfc_conv_subref_array_arg the
symbol of the actual argument, so that an absent optional one
suppresses the copy.
2026-08-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/49802
* trans-expr.cc (has_value_array_dummy): New function.
(conv_seq_assoc_value_arg): New function. Copy the element
sequence declared by a VALUE array dummy when the actual argument
is a sequence associated scalar.
(gfc_conv_procedure_call): Request an interface mapping when a
dummy is an explicit-shape VALUE array, and call
conv_seq_assoc_value_arg for a scalar actual argument passed to a
VALUE array dummy.
2026-08-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/49802
* resolve.cc (resolve_symbol): Allow VALUE on assumed-shape and
explicit-shape array dummies under Fortran 2008 (C557); reject it
on assumed-size arrays, on array dummies of a BIND(C) procedure,
and, as not yet implemented, on polymorphic array dummies.
* symbol.cc (gfc_check_conflict): Remove the conflict between
VALUE and DIMENSION; only VALUE and CODIMENSION remain mutually
exclusive.
* trans-expr.cc (gfc_conv_procedure_call): For a VALUE array
dummy, pass a private deep copy of the actual argument via
gfc_conv_subref_array_arg with INTENT_IN.
* trans-types.cc (gfc_sym_type): Use byref=1 for VALUE array
dummies, so the ABI still passes by reference.
2026-08-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/49802
* resolve.cc (resolve_symbol): Allow character(len=*) VALUE and a
specified but non-constant length under Fortran 2008; consolidate
the C-interop length checks into a single "must have length one"
check ordered ahead of the Fortran 2008 allowance.
* trans-expr.cc (conv_dummy_value): For assumed-length or
non-constant-length CHARACTER VALUE dummies, make a caller-side
copy and pass its address; scale the copy size by the size of the
character kind.
* trans-types.cc (gfc_sym_type): Use byref=1 for assumed-length or
non-constant-length VALUE character dummies, so the ABI still
passes by reference.
2026-08-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/49802
* trans.h (gfc_conv_subref_array_arg): Add DEEP_COPY argument.
* trans-expr.cc (gfc_conv_subref_array_arg): Take DEEP_COPY and
pass it on to gfc_trans_scalar_assign; deallocate the allocatable
components of the temporary after the call. Dereference the
descriptor when setting the pointer for an optional argument that
is not also checked for contiguity, and pass the string length
back to the caller's gfc_se.
2026-08-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/126909
* parse.cc (accept_statement): After a contains section, a new
namespace is started and, without correction, the new statement
the label, if there is one, would be stored there.Go back to
the containing namespace and store it there. Likewise add the
labelled return statement to the previous entry on the state
stack.
2026-08-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126816
* symbol.cc (restore_old_symbol): Restore the whole typespec
instead of just type and kind.
2026-08-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/121683
* trans-expr.cc (gfc_trans_subcomponent_assign): For derived
type expressions assigned to a class or derived type component
copy allocatable components if necessary. Likewise, for a class
expression assigned to a scalar class component, allocate the
component and use the vptr copy.
2026-08-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/121384
* resolve.cc (resolve_assoc_var): Delete symbol 'parentheses'
and do not use the expression contained in parentheses as a
target. Use the latter expression as an alternative to variable
expressions for some error checking.
2026-08-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/53800
* gfortran.h (gfc_is_span_addressed_dummy): New prototype.
* symbol.cc (gfc_is_span_addressed_dummy): New function.
* expr.cc (is_subref_array): Return true for a span addressed dummy.
* trans.h (gfc_get_span_descriptor): New prototype.
* trans.cc (gfc_get_span_descriptor): New function returning the
descriptor that carries a pointer array decl's span.
(get_array_span): Use it, including for character types.
* trans-array.cc (is_pointer_array): Note in the comment that the
tree must be a descriptor.
(span_addressed_array): New function returning the decl that
provides the span of an array.
(gfc_get_array_span): Use it.
(gfc_conv_scalarized_array_ref, gfc_conv_array_ref): Likewise, so
that a descriptorless dummy is addressed by its span.
(gfc_get_dataptr_offset): Likewise and dereference a spanned
character element.
(gfc_conv_expr_descriptor): Describe a subobject of the array
elements by a new descriptor when no temporary is made.
* trans-decl.cc (gfc_build_dummy_array_decl): Use
gfc_is_span_addressed_dummy to mark the dummy as a pointer array.
(gfc_get_symbol_decl): Likewise.
* trans-expr.cc (is_subobject_ref): New function.
(copy_in_out_allowed): Take the actual argument. Use
gfc_is_span_addressed_dummy and keep the copy for an actual
argument with a vector subscript.
(gfc_conv_gfc_desc_to_cfi_desc): Remove the now duplicate offsetting
of the data pointer for a subobject reference.
(gfc_class_array_data_assign): Also copy the span field.
(gfc_conv_procedure_call): Use copy_in_out_allowed to skip
copy-in/copy-out for a class array reference, a class array function
result and a subref array. Pass a spanned descriptor instead and
make the copy of a span addressed dummy conditional on it not being
contiguous.
* trans-intrinsic.cc (gfc_conv_is_contiguous_expr): Check the span
of a span addressed dummy against the element length.
2026-08-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/95542
* trans-decl.cc (gfc_get_symbol_decl): When checking that a
deferred-length string's length variable shares the symbol's
scope, special-case sym->backend_decl being a FUNCTION_DECL
(an implicit function-result variable): compare against
sym->backend_decl directly instead of its own DECL_CONTEXT.
2026-08-17 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/126895
* trans-intrinsic.cc (gfc_conv_is_contiguous_expr): If the argument
to IS_CONTIGUOUS is an assumed-rank variable, add a conditional
making the value true if the runtime rank is zero.
2026-08-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126872
* trans-decl.cc (gfc_finish_var_decl): Drop the unreachable
hidden-visibility case in the BIND(C) block. Do not give hidden
visibility to a PRIVATE module variable with a binding label.
(build_function_decl): Do not give hidden visibility to a PRIVATE
module procedure with a binding label.
2026-08-16 Christopher Albert <albert@tugraz.at>
PR fortran/110626
* gfortran.h : Add finalize_only bitfield to gfc_expr.
* resolve.cc (generate_component_assignments): If the lhs has
no pointer or allocatable components, set use_finalize_only to
false. Otherwise it equals finalizable_lhs. Use the value to
set the expr1 finalize_only field and add the assignment to the
chain. If use_finalize_only is false, free the statements and
transfer the value to the final result.
* trans-expr.cc (gfc_trans_assignment_1): If expr1 is finalize_
only emit an empty statement.
2026-08-15 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/126892
* trans-intrinsic.cc (gfc_conv_is_contiguous_expr): Dereference the
pointer variable before using it as descriptor.
2026-08-14 Harald Anlauf <anlauf@gmx.de>
* frontend-passes.cc (inner_loop_may_be_skipped): Clear GMP variables.
2026-08-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/104048
* trans-array.cc (structure_alloc_comps): Extend the wrapper
mechanism for same type allocatable arrays to scalars, creating
descriptors for them and passing to the deep copy library fcn..
2026-08-10 Christopher Albert <albert@tugraz.at>
PR fortran/102333
* decl.cc (match_procedure_decl): Diagnose the PROCEDURE and
ALLOCATABLE conflict before creating a hidden result.
2026-08-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/98573
* trans-array.cc (gfc_array_init_size): If the expr3_desc is an
array descriptor, use it for 'type'.
* trans-stmt.cc (gfc_trans_allocate): Use trans_assignment to
assign the source for class sources.
2026-08-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/47425
* decl.cc (discard_pending_charlen): Use new helper
function.
(discard_pending_charlens): Likewise.
(build_struct): Likewise.
* gfortran.h (struct gfc_charlen): Add a namespace
pointer to track char len for undo.
(struct gfc_undo_change_set): Add cls
pointer to track charlens created during parsing.
(struct gfc_undo_change_set): Add vec<gfc_charlen *> cls.
(gfc_remove_saved_charlen): Declare new helper function.
* parse.cc (accept_statement): Adjust comment.
* symbol.cc (gfc_merge_new_implicit): Use new helper function
(free_undo_change_set_data): Release cls.
(gfc_drop_last_undo_checkpoint): Splice cls into parent
changeset.
(gfc_restore_last_undo_checkpoint): Remove and free charlens
tracked in cls.
(gfc_commit_symbols): Truncate cls.
(gfc_remove_saved_charlen): New function to remove
previously saved char len.
(gfc_free_namespace): Remove charlens from undo before freeing
to prevent double-free.
(gfc_enforce_clean_symbol_state): Clear cls instead of asserting
empty; non-tentative callers leave charlens in cls.
* trans-array.cc (trans_array_constructor): Add guard.
2026-08-08 Christopher Albert <albert@tugraz.at>
PR fortran/125383
* resolve.cc (was_declared): Require a known procedure kind for
subroutine declarations.
2026-08-06 Josef Melcr <josef.melcr@suse.com>
* f95-lang.cc (ATTR_CALLBACK_GOMP_LIST): Rename to
ATTR_CALLBACK_ONLY_GOMP_LIST.
(ATTR_CALLBACK_ONLY_GOMP_LIST): Fortran counterpart for the
attribute list in builtin-attrs.def.
2026-08-01 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/126558
* gfortran.h (gfc_resolve): Add optional argument for
an association list.
* resolve.cc (mark_assoc_used): New function.
(gfc_resolve): Use it.
2026-08-01 Thomas Koenig <tkoenig@gcc.gnu.org>
* frontend-passes.cc (enum matrix_case): Add case A2TB1.
(matmul_lhs_realloc): Add condition for reallocation and
size checks.
(inline_matmul_assign): Handle A2TB1.
2026-08-01 Jakub Jelinek <jakub@redhat.com>
* expr.cc (gfc_check_init_expr): Remove useless "? true : false".
(gfc_expr_check_typed): Replace "? false : true" with negation of the
condition.
* parse.cc (gfc_find_state): Likewise.
* resolve.cc (impure_stmt_fcn): Likewise.
* arith.cc (gfc_check_character_range): Remove useless
"? true : false".
* array.cc (is_constant_element): Likewise.
* decl.cc (gfc_verify_c_interop): Likewise.
* interface.cc (gfc_check_dummy_characteristics): Likewise.
* io.cc (check_open_constraints): Likewise.
(check_close_constraints): Likewise.
(check_io_constraints): Likewise.
2026-07-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/126205
* gfortran.h: Add prototype for deallocate_allocated_coarrays.
hash_map team_allocated_coarrays, vector team_context_stack and
prototype for get_current_team_context.
* match.cc (gfc_match_allocate): Capture allocate expressions
of allocatable coarrays and stash in team_allocated_coarrays.
* parse.cc (parse_change_team): Push team context. When end is
seen, create the code to deallocate allocated coarrays in this
context, using deallocate_allocated_coarrays.
* st.cc (get_guarded_dealloc): Generate code to produce
IF (ALLOCATED (expr)) DEALLOCATE (expr).
(deallocate_allocated_coarrays): Modify the final array ref of
the allocate expressions and call get_guarded_dealloc.
2026-07-30 Sebastian Galindo <sebastian.galindo143@gmail.com>
Thomas Schwinge <tschwinge@baylibre.com>
* dump-parse-tree.cc (show_omp_clauses): Dump OpenACC DEVICE_TYPE
and DEVICE_NUM clauses.
(show_omp_node): Handle INIT, SHUTDOWN, and SET directives.
(show_code_node): Likewise.
* frontend-passes.cc (gfc_code_walker): Walk device_num_expr for
INIT, SHUTDOWN, and SET directives.
* gfortran.h (enum gfc_statement): Add ST_OACC_INIT,
ST_OACC_SHUTDOWN, and ST_OACC_SET.
(gfc_omp_clauses): Add device_num_expr and oacc_device_type
fields.
(enum gfc_exec_op): Add EXEC_OACC_INIT, EXEC_OACC_SHUTDOWN, and
EXEC_OACC_SET.
* match.h (gfc_match_oacc_init): Declare.
(gfc_match_oacc_shutdown): Likewise.
(gfc_match_oacc_set): Likewise.
* openmp.cc (gfc_free_omp_clauses): Free device_num_expr.
(match_oacc_device_type_kind): New helper to parse OpenACC
device_type arguments.
(match_oacc_device_type): New helper to match the OpenACC
DEVICE_TYPE clause.
(enum omp_mask2): Add OMP_CLAUSE_DEVICE_NUM.
(gfc_match_omp_clauses): Match OpenACC DEVICE_TYPE and
DEVICE_NUM clauses.
(OACC_INIT_CLAUSES): New clause mask.
(OACC_SHUTDOWN_CLAUSES): Likewise.
(OACC_SET_CLAUSES): Likewise.
(gfc_match_oacc_init): New matcher.
(gfc_match_oacc_shutdown): Likewise.
(gfc_match_oacc_set): Likewise.
(resolve_omp_clauses): Resolve DEVICE_NUM; require at least one
of DEVICE_TYPE and DEVICE_NUM on SET.
(oacc_code_to_statement): Map new exec ops to statement codes.
(gfc_resolve_oacc_directive): Resolve INIT, SET, and SHUTDOWN
directives.
* parse.cc (decode_oacc_directive): Recognize init, set, and
shutdown directives.
(next_statement): Treat INIT, SET, and SHUTDOWN as executable
statements.
(gfc_ascii_statement): Add ASCII names for new directives.
(is_oacc): Recognize new exec ops.
* resolve.cc (gfc_resolve_blocks): Resolve INIT, SET, and
SHUTDOWN directives.
* st.cc (gfc_free_statement): Free clauses for new directives.
* trans-openmp.cc (gfc_trans_omp_clauses): Assert that
DEVICE_NUM and DEVICE_TYPE do not appear on construct clauses.
(gfc_trans_oacc_executable_directive): Lower INIT, SHUTDOWN, and
SET to GOACC builtins.
(gfc_trans_oacc_directive): Dispatch new directives.
* trans.cc (trans_code): Dispatch new directives.
* types.def (BT_FN_VOID_INT_INT): New definition.
2026-07-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125866
* expr.cc (is_CFI_desc): Add check for proc_name.
2026-07-27 Tobias Burnus <tburnus@baylibre.com>
* dump-parse-tree.cc (show_omp_clauses): Fix 'message' clause name.
* openmp.cc (gfc_match_omp_clauses): Improve num_team's error
diagnostic.
(OMP_PARALLEL_CLAUSES, OMP_TARGET_CLAUSES, OMP_TEAMS_CLAUSES): Add
OMP_CLAUSE_MESSAGE and OMP_CLAUSE_SEVERITY.
* trans-openmp.cc (gfc_split_omp_clauses): Handle message/severity.
(gfc_trans_omp_clauses): Likewise; replace 'sorry' by updated tree
generation for num_teams, num_threads, thread_num clauses.
2026-07-27 Jakub Jelinek <jakub@redhat.com>
PR fortran/126303
* frontend-passes.cc (inner_loop_may_be_skipped): If inner loop iterator
is not integral, return true.
2026-07-26 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/126386
* frontend-passes.cc (matmul_lhs_realloc): Fix size calculation of
A2B1 case.
2026-07-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/78718
* resolve.cc (was_declared): Recognize the RESULT attribute so a
function's result variable is not mistaken for a host-associated
symbol of the same name.
2026-07-22 Jerry DeLisle <jvdelisle2@gmail.com>
PR fortran/53296
* trans-expr.cc (gfc_conv_procedure_call): Skip the redundant
function call added to the pre chain when no_function_call is
set and the character result length was already determined
without running the callee.
* trans-array.cc (gfc_conv_array_parameter): Convert an array
constructor's explicit character type-spec length directly
instead of using the first elements length.
2026-07-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/126333
* resolve.cc (resolve_allocate_deallocate): Resolve charlen of ts
and set as used if present.
(resolve_select): Mark code->expr1 as used.
(find_unused_vs_set): Do not complain about host-associated
variables which are not marked private.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
* trans-expr.cc (gfc_conv_class_to_class): Use the data setter
instead of generating a MODIFY_EXPR of the result of the data
getter.
* trans-intrinsic.cc (conv_intrinsic_move_alloc): Likewise.
2026-07-20 Sandra Loosemore <sloosemore@baylibre.com>
* trans-openmp.cc (handle_iterator): Add comments. Rename
iter_block parameter to outer_block, since that's what's actually
being passed; the start/end/step expressions are outside the scope
of the iterator variables.
(start_iterator_group, finish_iterator_group): New functions,
broken out from...
(gfc_trans_omp_clauses): ...here.
2026-07-20 Paul-Antoine Arras <parras@baylibre.com>
* types.def (BT_FN_VOID_ULONGLONG_ULONGLONG): New.
(BT_FN_VOID_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG):
Remove.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (conv_descriptor_data): New function.
(gfc_conv_descriptor_data_get, gfc_conv_descriptor_data_set): Use
it.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_span): Rename ...
(conv_descriptor_span): ... to this.
(gfc_conv_descriptor_span_get, gfc_conv_descriptor_span_set): Update
callers.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_stride): Rename ...
(conv_descriptor_stride): ... to this.
(gfc_conv_descriptor_stride_get, gfc_conv_descriptor_stride_set):
Update caller.
(gfc_conv_descriptor_lbound): Rename ...
(conv_descriptor_lbound): ... to this.
(gfc_conv_descriptor_lbound_get, gfc_conv_descriptor_lbound_set):
Update caller.
(gfc_conv_descriptor_ubound): Rename ...
(conv_descriptor_ubound): ... to this.
(gfc_conv_descriptor_ubound_get, gfc_conv_descriptor_ubound_set):
Update caller.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_token_set): New function.
* trans-descriptor.h (gfc_conv_descriptor_token_set): New
declaration.
* trans-array.cc (gfc_conv_expr_descriptor,
gfc_conv_array_parameter, gfc_trans_deferred_array): Use
gfc_conv_descriptor_token_set to set the value of the token.
* trans-expr.cc (gfc_conv_derived_to_class,
gfc_trans_subcomponent_assign, gfc_trans_scalar_assign): Likewise.
* trans-intrinsic.cc (conv_intrinsic_move_alloc): Likewise.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_dimension): Make static
and rename ...
(conv_descriptor_dimension): ... to this.
(gfc_conv_descriptor_subfield): Update caller.
* trans-descriptor.h (gfc_conv_descriptor_dimension): Remove
declaration.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_attribute): Remove
function.
* trans-descriptor.h (gfc_conv_descriptor_attribute): Remove
declaration.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_dtype): Make static and
rename ...
(conv_descriptor_dtype): ... to this.
(conv_descriptor_rank conv_descriptor_version,
conv_descriptor_elem_len, gfc_conv_descriptor_attribute,
conv_descriptor_type): Update callers.
(gfc_conv_descriptor_dtype_get, gfc_conv_descriptor_dtype_set):
New functions.
* trans-descriptor.h (gfc_conv_descriptor_dtype): Remove
declaration.
(gfc_conv_descriptor_dtype_get, gfc_conv_descriptor_dtype_set):
New declarations.
* trans-array.cc (gfc_trans_create_temp_array, gfc_array_init_size,
gfc_conv_expr_descriptor, gfc_resize_assumed_rank_dim_field,
gfc_conv_array_parameter, structure_alloc_comps,
gfc_alloc_allocatable_for_assignment, gfc_trans_class_array,
gfc_trans_deferred_array): Use gfc_conv_descriptor_dtype_get to get
the value of the dtype field and gfc_conv_descriptor_dtype_set to
update it.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Likewise.
* trans-expr.cc (gfc_conv_scalar_to_descriptor,
gfc_class_array_data_assign, gfc_conv_derived_to_class,
gfc_conv_class_to_class, set_dtype_for_unallocated,
gfc_trans_pointer_assignment, fcncall_realloc_result): Likewise.
* trans-intrinsic.cc (conv_isocbinding_subroutine): Likewise.
* trans-stmt.cc (trans_associate_var): Likewise.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (get_type_field): New function.
(gfc_get_descriptor_field): Use it.
(gfc_conv_descriptor_type): Make static and rename ...
(conv_descriptor_type): ... to this.
(gfc_conv_descriptor_type_get, gfc_conv_descriptor_type_set): New
functions.
* trans-descriptor.h (gfc_conv_descriptor_type): Remove declaration.
(gfc_conv_descriptor_type_get, gfc_conv_descriptor_type_set): New
declarations.
* trans-expr.cc (gfc_conv_gfc_desc_to_cfi_desc): Use
gfc_conv_descriptor_type_get to get the value of the type field.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Use
gfc_conv_descriptor_type_set to set the value of the type field.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_rank): Make static and
rename ...
(conv_descriptor_rank): ... to this.
(gfc_conv_descriptor_rank_get, gfc_conv_descriptor_rank_set): New
functions.
* trans-descriptor.h (gfc_conv_descriptor_rank): Remove declaration.
(gfc_conv_descriptor_rank_get, gfc_conv_descriptor_rank_set): New
declarations.
* trans-array.cc (gfc_trans_create_temp_array,
gfc_conv_ss_startstride, gfc_tree_array_size,
gfc_resize_assumed_rank_dim_field, gfc_conv_array_parameter,
gfc_full_array_size, duplicate_allocatable_coarray): Use
gfc_conv_descriptor_rank_get to get the value of the rank field,
and gfc_conv_descriptor_rank_set to set it.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Likewise.
* trans-expr.cc (gfc_conv_derived_to_class, gfc_conv_variable,
gfc_conv_gfc_desc_to_cfi_desc, conv_null_actual,
gfc_trans_structure_assign): Likewise.
* trans-intrinsic.cc (gfc_conv_intrinsic_rank,
gfc_conv_intrinsic_bound, gfc_conv_intrinsic_sizeof,
gfc_conv_associated): Likewise.
* trans-openmp.cc (gfc_omp_get_array_size): Likewise.
* trans-stmt.cc (gfc_trans_select_rank_cases): Likewise.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_version): Make static and
rename ...
(conv_descriptor_version): ... to this.
(gfc_conv_descriptor_version_get, gfc_conv_descriptor_version_set):
New functions.
* trans-descriptor.h (gfc_conv_descriptor_version): Remove
declaration.
(gfc_conv_descriptor_version_get, gfc_conv_descriptor_version_set):
New declarations.
* trans.cc (gfc_deallocate_with_status): Use
gfc_conv_descriptor_version_get to get the value of the version
field, and gfc_conv_descriptor_version_set to set it.
* trans-array.cc (gfc_array_allocate, structure_alloc_comps,
gfc_alloc_allocatable_for_assignment): Likewise.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_elem_len): Make static
and rename ...
(conv_descriptor_elem_len): ... to this.
(gfc_conv_descriptor_elem_len_get,
gfc_conv_descriptor_elem_len_set): New functions.
* trans-descriptor.h (gfc_conv_descriptor_elem_len): Remove
declaration.
(gfc_conv_descriptor_elem_len_get,
gfc_conv_descriptor_elem_len_set): New declarations.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Use
gfc_conv_descriptor_elem_len_get to get the value of the elem_len
field and gfc_conv_descriptor_elem_len_set to set it.
* trans-array.cc (gfc_array_init_size,
gfc_alloc_allocatable_for_assignment): Likewise.
* trans-expr.cc (gfc_conv_scalar_to_descriptor,
gfc_conv_gfc_desc_to_cfi_desc, gfc_trans_pointer_assignment):
Likewise.
* trans-intrinsic.cc (gfc_conv_is_contiguous_expr,
gfc_conv_intrinsic_sizeof): Likewise.
* trans-openmp.cc (gfc_omp_array_size, gfc_omp_deep_mapping_item):
Likewise.
2026-07-20 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.cc (gfc_conv_descriptor_offset): Make static and
rename ...
(conv_descriptor_offset): ... to this.
(gfc_conv_descriptor_offset_get,
gfc_conv_descriptor_offset_set): Update callers.
* trans-descriptor.h (gfc_conv_descriptor_offset): Remove
declaration.
* trans-array.cc (gfc_alloc_allocatable_for_assignment): Use the
setter function to generate a modification of the array descriptor
offset.
2026-07-20 Tobias Burnus <tburnus@baylibre.com>
* dump-parse-tree.cc (show_omp_clauses): Handle spatial dimension
in num_teams and it and strict/relaxed in thread_limits and
num_threads.
* trans-openmp.cc (gfc_trans_omp_clauses, gfc_split_omp_clauses,
gfc_trans_omp_target): Likewise.
* openmp.cc (gfc_free_omp_clauses, gfc_match_omp_clauses,
resolve_omp_clauses): Likewise.
(match_omp_oacc_expr_list): Return current locus for a parse
fail instead of resetting the locus.
* gfortran.h (gfc_omp_clauses): Changed gfc_expr num_threads,
num_teams_lower, num_teams_upper, and thread_limit to
gfc_expr_list num_threads_list, num_teams_list, and thread_limit_list.
Add thread_limit_strict, num_threads_strict, num_teams_dims,
thread_limit_dims, and num_threads_dims.
* frontend-passes.cc (gfc_code_walker): Update for this change.
2026-07-19 Thomas Koenig <tkoenig@gcc.gnu.org>
* dump-parse-tree.cc (show_code_node): Show typespec for
ALLOCATE if present.
* frontend-passes.cc (gfc_expr_walker): Walk the character
typespec length for array expressions.
(gfc_code_walker): Walk the typespec for ALLOCATE if present.
2026-07-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/126058
* dump-parse-tree.cc (show_attr): Show details of
attr->allocated.
2026-07-16 Paul-Antoine Arras <parras@baylibre.com>
* types.def (BT_FN_VOID_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG): New.
2026-07-16 Tobias Burnus <tburnus@baylibre.com>
PR fortran/126279
* trans-openmp.cc (gfc_trans_omp_clauses): Convert memspace constant
to an integer not to an external variable.
2026-07-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/126058
* gfortran.h (enum var_allocated): New enum.
(symbol_attribute): Change member allocated to new enum.
(gfc_used_in_allocate_expr): Add argument how.
* interface.cc (gfc_compare_actual_formal): Mark variables
as allocated only when the formal arg is allocatable.
* intrinsic.cc (mark_args_as_used): Intrinsics do not allocate
their arguments.
* resolve.cc (find_unused_vs_set): Move warnings enabled with
-Wextra behind those enabled with -Wall. If a variable is
maybe allocated as an argument, mark it as such.
* symbol.cc (mark_vars_as_used): Always set location.
(gfc_used_in_allocate_expr): Add argument how. Use it.
(gfc_lvalue_allocated_at): Set sym->attr.allocated to ALLOCATED_ASSIGNMENT.
2026-07-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126234
* module.cc (read_module): Walk the symtree instead of
using gfc_find_symbol.
2026-07-12 Steve Kargl <kargl@gcc.gnu.org>
PR fortran/101951
PR fortran/101967
* match.cc (gfc_match_allocate): It is an error if the type-spec
derived type or the source expr has a coarray ultimate component.
Substitute 'typespec' with 'type-spec' in error messages for
consistency with standards.
2026-07-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126210
* module.cc (read_module): Only skip re-importing a symbol
already visible via host association from the same module
when that symbol is a derived type.
2026-07-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126170
* class.cc (gfc_find_derived_vtab): Fix up a stale
non-use-associated duplicate vtab symbol.
(gfc_is_finalizable): Same fix-up, for the finalizer wrapper
symbol.
* module.cc (read_module): Skip re-importing a symbol already
visible via host association from the same module.
2026-07-09 Paul-Antoine Arras <parras@baylibre.com>
Thomas Schwinge <tschwinge@baylibre.com>
* types.def (BT_FN_COMPLEX_INT): Remove.
(BT_FN_COMPLEX_INT_ULONGLONG): New.
2026-07-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* trans-array.cc (gfc_array_init_size): Set the rank for the
dtype.
2026-07-08 Harald Anlauf <anlauf@gmx.de>
PR fortran/126127
* interface.cc (find_symtree0): Check for NULL pointer.
(gfc_find_sym_in_symtree): Also search user-defined operator list
when the symbol refers to a function.
2026-07-08 Mikael Morin <mikael@gcc.gnu.org>
* trans-types.h (gfc_array_dim_rank_type): New type node
declaration.
* trans-types.cc (gfc_array_dim_rank_type): Likewise.
(gfc_init_types) : Initialize the new type node.
(get_dtype_type_node): Use the new type for the rank field.
* trans-descriptor.cc (gfc_conv_descriptor_rank): Likewise.
* trans-const.h (gfc_index_zero_node, gfc_index_one_node): Make
each macro a separate node declaration.
* trans-const.cc (gfc_index_zero_node, gfc_index_one_node):
Declare new nodes.
(gfc_init_constants): Initialize them. Use the new type for the
constants of the gfc_rank_cst array.
* trans-array.cc (gfc_tree_array_size): Use the new type for the
RANK, IDX and DIM variables. Avoid negative intermediary value
in comparison using the new type.
(gfc_conv_array_parameter): Use the new type when assigning a
value to the descriptor's rank. Use the new type for the IDX
variable.
* trans-decl.cc (gfc_conv_cfi_to_gfc): Use the new type for the
rank, and the dimension index variable (including loop initial
value and step).
* trans-expr.cc (gfc_conv_gfc_desc_to_cfi_desc): Likewise.
(gfc_conv_variable): Use the new type for the rank variable.
(gfc_trans_structure_assign): Use the new type when assigning a
value to the descriptor's rank.
* trans-openmp.cc (gfc_omp_get_array_size): Use the new type
for the dimension index variable and the loop initialization,
bound and step.
* trans-intrinsic.cc (gfc_conv_intrinsic_bound): Use the new
type for the DIM argument and the rank.
(conv_intrinsic_cobound): Likewise.
(trans_this_image): Likewise. Use the new type for the loop
variable, initialization, bound and step.
(gfc_conv_intrinsic_sizeof): Likewise.
* trans-stmt.cc (gfc_trans_select_rank_cases): Use signed char
as type for the select value.
2026-07-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/103367
* expr.cc (simplify_const_ref): Hoist the call to
remove_subobject_ref up a level.
* primary.cc (gfc_match_rvalue): Don't copy the value expr
if the type is an EXPR_VARIABLE.
not
* trans-array.cc (gfc_conv_array_initializer): Only copy the expr
value if it does not have a ref.
2026-07-06 Harald Anlauf <anlauf@gmx.de>
PR fortran/121366
* intrinsic.texi: Remove documentation of GNU intrinsic extensions
(CCOSD,ZCOSD,CDCOSD) that were never implemented.
* iresolve.cc (gfc_resolve_trig): Fix resolution of degree
trigonometric functions and generate references to the proper
library functions.
(gfc_resolve_trig2): Likewise.
* trans-decl.cc (gfc_get_extern_function_decl): Ensure that isym
is set when resolving intrinsic procedures.
2026-07-05 Sandra Loosemore <sloosemore@baylibre.com>
* trans.cc (trans_code): Do not try to set location on non-expr
tree expressions, e.g. error_mark_node.
2026-07-04 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/126058
PR fortran/126090
* gfortran.h (gfc_dt): Add member nml_where.
* io.cc (match_dt_element): Set nml_where.
(gfc_resolve_dt): Mark variable in namelist to be read with
correct locus and VALUE_READ. Mark expression in write namelist as
used.
(match_io): Set nml_where for data transfer.
* resolve.cc: Mark code->expr1 as used for PAUSE, STOP and ERROR
STOP.
2026-07-03 Sandra Loosemore <sloosemore@baylibre.com>
Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (resolve_omp_clauses_aff_dep_map_cache): Fix
indentation.
2026-07-03 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/97592
PR fortran/125998
* trans-array.cc (gfc_conv_array_parameter): Always create a new
descriptor. Copy lbound and ubound from the original descriptor
using matching dimension indexes. Recalculate stride and
offset.
2026-07-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/126018
* match.cc (gfc_match_stopcode): Adjust the f2008 error check.If the
STOP code expr type is unknown, do not error. It will be checked in
gfc_resolve_code.
* resolve.cc (gfc_resolve_code): Add checks for EXEC_STOP and
EXEC_ERROR_STOP.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-array.cc (gfc_grow_array): Move function ...
* trans-descriptor.cc (gfc_grow_array): ... to this file.
* trans-descriptor.h (gfc_grow_array): Add declaration.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-descriptor.h (gfc_copy_descriptor): Add declaration.
* trans-stmt.cc (trans_associate_var): Update caller.
(copy_descriptor): Rename function and move it ...
* trans-descriptor.cc (gfc_copy_descriptor): ... here.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-array.cc (gfc_conv_shift_descriptor_lbound): Move
function ...
* trans-descriptor.cc (gfc_conv_shift_descriptor_lbound): ... to
this file.
* trans-array.h (gfc_conv_shift_descriptor_lbound): Move
declaration ...
* trans-descriptor.h (gfc_conv_shift_descriptor_lbound): ... to this
file.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-array.cc: (gfc_conv_descriptor_size_1,
gfc_conv_descriptor_size, gfc_conv_descriptor_cosize): Move
functions ...
* trans-descriptor.cc (gfc_conv_descriptor_size_1,
gfc_conv_descriptor_size, gfc_conv_descriptor_cosize): ... to this
file.
* trans-array.h (gfc_conv_descriptor_size,
gfc_conv_descriptor_cosize): Move ...
* trans-descriptor.h (gfc_conv_descriptor_size,
gfc_conv_descriptor_cosize): ... here.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-array.cc (DATA_FIELD, OFFSET_FIELD, DTYPE_FIELD, SPAN_FIELD,
DIMENSION_FIELD, CAF_TOKEN_FIELD, STRIDE_SUBFIELD, LBOUND_SUBFIELD,
UBOUND_SUBFIELD): Remove preprocessor constants.
(gfc_build_null_descriptor): Move function to ...
* trans-descriptor.cc (gfc_build_null_descriptor): ... this file.
* trans-array.h (gfc_build_null_descriptor): Move declaration to ...
* trans-descriptor.h (gfc_build_null_descriptor): ... this file.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* trans-array.cc (gfc_get_descriptor_offsets_for_info): Move
function ...
* trans-descriptor.cc (gfc_get_descriptor_offsets_for_info): ...
to this file.
* trans-array.h (gfc_get_descriptor_offsets_for_info): Move
declaration ...
* trans-descriptor.h (gfc_get_descriptor_offsets_for_info): ...
to this file.
* trans-types.cc: Include trans-descriptor.h.
2026-07-02 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/122521
* Make-lang.in (F95_OBJS): Add fortran/trans-descriptor.o to the
list of objects.
* trans-array.cc: Include new header.
(gfc_get_descriptor_field, gfc_conv_descriptor_data_get,
gfc_conv_descriptor_data_set, gfc_conv_descriptor_offset,
gfc_conv_descriptor_offset_get, gfc_conv_descriptor_offset_set,
gfc_conv_descriptor_dtype, gfc_conv_descriptor_span,
gfc_conv_descriptor_span_get, gfc_conv_descriptor_span_set,
gfc_conv_descriptor_rank, gfc_conv_descriptor_version,
gfc_conv_descriptor_elem_len, gfc_conv_descriptor_attribute,
gfc_conv_descriptor_type, gfc_get_descriptor_dimension,
gfc_conv_descriptor_dimension, gfc_conv_descriptor_token,
gfc_conv_descriptor_subfield, gfc_conv_descriptor_stride,
gfc_conv_descriptor_stride_get, gfc_conv_descriptor_stride_set,
gfc_conv_descriptor_lbound, gfc_conv_descriptor_lbound_get,
gfc_conv_descriptor_lbound_set, gfc_conv_descriptor_ubound,
gfc_conv_descriptor_ubound_get, gfc_conv_descriptor_ubound_set):
Move functions ...
* trans-descriptor.cc: ... to this new file.
* trans-array.h (gfc_get_descriptor_offsets_for_info): Fix
long line in declaration.
(gfc_conv_descriptor_data_get, gfc_conv_descriptor_offset_get,
gfc_conv_descriptor_span_get, gfc_conv_descriptor_dtype,
gfc_conv_descriptor_rank, gfc_conv_descriptor_elem_len,
gfc_conv_descriptor_version, gfc_conv_descriptor_attribute,
gfc_conv_descriptor_type, gfc_get_descriptor_dimension,
gfc_conv_descriptor_stride_get, gfc_conv_descriptor_lbound_get,
gfc_conv_descriptor_ubound_get, gfc_conv_descriptor_token,
gfc_conv_descriptor_data_set, gfc_conv_descriptor_offset_set,
gfc_conv_descriptor_span_set, gfc_conv_descriptor_stride_set,
gfc_conv_descriptor_lbound_set, gfc_conv_descriptor_ubound_set):
Move declarations ...
* trans-descriptor.h: ... to this new file.
* trans-decl.cc: Include new header.
* trans-expr.cc: Likewise.
* trans-intrinsic.cc: Likewise.
* trans-io.cc: Likewise.
* trans-openmp.cc: Likewise.
* trans-stmt.cc: Likewise.
* trans.cc: Likewise.
2026-07-01 Paul Thomas <pault@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/121972
* expr.cc (has_parameterized_comps): Return false if the DT
is neither a pdt_type nor has PDT components. Correct the
logic for a PDT component.
* trans-expr.cc (alloc_scalar_allocatable_for_assignment): Use
calloc for types with paramterized components as well as those
with allocatable components.
* trans-stmt.cc (gfc_trans_allocate): Merge the allocation of
parameterized components of PDTs and class PDTs into one block
If an allocate type_spec is present that has allocatable comps
where the class declared type does not, nullify the allocatable
components.
2026-07-01 Jakub Jelinek <jakub@redhat.com>
* check.cc (get_ul_from_cst_cl): Remove spurious semicolon.
2026-06-30 Paul Thomas <pault@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/121972
* decl.cc (gfc_get_pdt_instance): A PDT that has a derived type
component, which has allocatable components, must be marked as
having allocatable components.
* resolve.cc (gfc_resolve_ref): Initialize last_pdt from the base
symbol's declared type when the expression type is not a PDT.
2026-06-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/121972
* resolve.cc (gfc_resolve_finalizers): Fix linked-list tail-pointer
bug that dropped all but the first two finalizers from a derived
type's finalizer list when three or more matched.
2026-06-30 Chung-Lin Tang <cltang@baylibre.com>
* trans-array.cc (gfc_conv_array_initializer): Always set PURPOSE
when building constructor for get_initialized_tmp_var, adjust test
to use integer_zerop instead of != NULL_TREE.
* trans-openmp.cc (gfc_trans_omp_clauses): Handle uses_allocators.
2026-06-29 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84622
* resolve.cc (resolve_symbol): In detecting coarray components,
use the derived type of the class data component, not the data
component itself. New boolean 'declared_has_coarray_comp' to
detect this.
2026-06-27 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/30438
PR fortran/125801
* io.cc (gfc_resolve_dt): Set internal unit as used on read.o
* resolve.cc (resolve_transfer): Move setting value as used
before possible early return.
(gfc_resolve): Only call warn_unused_vs_set if there are no
pending errors.
2026-06-26 Harald Anlauf <anlauf@gmx.de>
PR fortran/125902
* dump-parse-tree.cc (needs_CFI_cdesc): New helper function to
determine when struct CFI_cdesc_t is used.
(has_cfi_cdesc): Use it here...
(get_c_type_name): ... and here.
2026-06-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/121972
* trans-array.cc (has_class_alloc_comp): Change to atte.class_pointer.
2026-06-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125761
* trans-array.cc (build_array_ref): When the descriptor's
canonical type is a class type, pass the class container as
'decl' to gfc_build_array_ref for genuine array element
references (rank > 0), so the element size can be corrected
for an unlimited-polymorphic character payload.
* trans-types.cc (gfc_typenode_for_spec): Move setting the
GFC_CLASS_TYPE_P bit to..
(gfc_get_derived_type): .. and use attr.is_class.
(gfc_get_derived_type): Move setting the GFC_CLASS_TYPE_P bit
as the last step before returning the derived->backend_decl
if the derived->attr.is_class is true.
2026-06-24 Paul-Antoine Arras <parras@baylibre.com>
* trans-openmp.cc (gfc_trans_omp_barrier): Pass GOMP_BARRIER_EXPLICIT
to GOMP_barrier_ext.
2026-06-24 Paul-Antoine Arras <parras@baylibre.com>
* types.def (BT_COMPLEX_INT): New type.
(BT_FN_COMPLEX_INT): New function type.
2026-06-23 Kwok Cheung Yeung <kcyeung@baylibre.com>
Sandra Loosemore <sloosemore@baylibre.com>
* trans-openmp.cc (gfc_trans_omp_array_section): Use macros for
accessing iterator elements.
(handle_iterator): Likewise, plus the iterator constructor.
(gfc_trans_omp_clauses): Likewise.
2026-06-23 Sandra Loosemore <sloosemore@baylibre.com>
* trans-openmp.cc (gfc_trans_omp_array_section): Add comments and
use a more descriptive variable name.
2026-06-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/121972
* trans-array.cc (has_class_alloc_comp): New helper; returns true if
derived type DER has any CLASS component.
(gfc_trans_array_ctor_element): Also free allocatable components when
the element expression is EXPR_STRUCTURE, skipping types that contain
CLASS components to avoid freeing stack-allocated _data pointers.
(gfc_constructor_is_owned_alloc_comp): Likewise treat EXPR_STRUCTURE
elements as owned only when the derived type has no CLASS components.
* trans-expr.cc (gfc_trans_alloc_subarray_assign): Free allocatable
components of the component's temporary descriptor before nulling its
data pointer, for non-variable source expressions.
2026-06-23 Harald Anlauf <anlauf@gmx.de>
PR fortran/125902
* dump-parse-tree.cc (get_c_type_name): Use CFI_cdesc_t also for
deferred shape and deferred length dummies, as well as for
assumed-length scalar character dummies.
2026-06-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/121972
* decl.cc (build_struct): Convert the PDT template before the
call to gfc_build_class_symbol.
2026-06-22 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (resolve_omp_clauses_aff_dep_map_cache): Split off
from ...
(resolve_omp_clauses): ... here. Call it.
2026-06-22 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (resolve_omp_clauses): Avoid ICE when called
by gfc_resolve_omp_udm.
2026-06-22 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (check_omp_clauses_dupl_syms): New; moved code from ...
(resolve_omp_clauses): ... here. Call new function.
2026-06-22 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (resolve_omp_allocate_clauses): New function for
resolving 'allocate' clauses, splitt-off from ...
(resolve_omp_clauses): ... here. Call the new function.
2026-06-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/125914
* trans-expr.cc (gfc_conv_power_op): Rewrite (-1.0)**n into
(real) (1 - ((n & 1) << 1)).
2026-06-19 Léo Hardt <leom.hardt@inf.ufrgs.br>
* trans-intrinsic.cc: Removed orphaned comment from 69f293c
2026-06-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125535
* trans-array.cc (gfc_constructor_is_owned_alloc_comp): New function.
(gfc_trans_array_constructor_value): Add OWNED_SWEEP parameter and,
when set, suppress the per-element finalization. Pass it through the
recursive call.
(trans_array_constructor): Compute OWNED_SWEEP and, when set,
deallocate the allocatable components of the whole temporary in one
sweep.
2026-06-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/30438
* gfortran.h (gfc_value_set_at): Remove default argument.
(gfc_expr_set_at): Add prototype.
* interface.cc (gfc_compare_actual_formal): Use gfc_expr_set_at.
* intrinsic.cc (mark_args_as_used): Likewise.
* io.cc (resolve_tag): Likewise.
(gfc_resolve_dt): Likewise.
(gfc_resolve_inquire): Likewise.
* resolve.cc (resolve_transfer): Likewise.
(mark_lhs_assignments_set): Likewise.
* symbol.cc (gfc_lvalue_allocated_at): Add comment, fix formatting.
(gfc_expr_set_at): New fuction.
2026-06-18 Martin Jambor <mjambor@suse.cz>
PR fortran/125860
* interface.cc (gfc_procedure_use): Check a->expr is not NULL before
calling gfc_value_set_and_used.
2026-06-17 Tobias Burnus <tburnus@baylibre.com>
* gfortran.h (struct gfc_omp_udm): Add comment.
(struct gfc_omp_namelist_udm): Likewise; rename members
mapper_id to requested_mapper_id and usm to resolved_usm.
* module.cc (load_omp_udms, write_omp_udm): Update accordingly.
* openmp.cc (gfc_match_omp_clauses, resolve_omp_clauses): Likewise.
* trans-openmp.cc (gfc_trans_omp_clauses): Likewise.
2026-06-17 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (match_udr_expr, gfc_match_omp_declare_reduction,
gfc_resolve_omp_udr): Improve diagnostic.
2026-06-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125782
* trans-stmt.cc (trans_associate_var): Only free the associate
name's backend decl for a deferred-length character function
result when the result is a POINTER, not when it is
ALLOCATABLE, since the latter is already freed by the
procedure call's cleanup.
2026-06-14 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/30438
* resolve.cc (find_unused_vs_set): Exclude variables from
cwarnings if use_assoc, volatile_ or asynchronous are set.
2026-06-12 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (gfc_omp_udm_find, gfc_omp_udr_find): Fix
to handle derived-type renaming via module use.
2026-06-12 Tobias Burnus <tburnus@baylibre.com>
* parse.cc (match_word): Add no_substring and
reject_stmt_on_error arguments, defaulting to false and true,
respectively.
(match_word_omp_simd): Do not reject_statement on error and
enable no-substring matching.
(matcha, matcho, matchdo): Call match_word with no_substring
set to true and reject_stmt_on_error set to false.
(decode_omp_directive): Distinguish unknown directive name from
errors found during matching.
(decode_oacc_directive): Likewise; use matcha not match.
(matcha, matcho, matchdo, matchs, matchds): #undef after use.
2026-06-12 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tburnus@baylibre.com>
* gfortran.h (gfc_omp_namelist): Change udm member into
a pointer type.
(gfc_omp_namelist_udm): Add mapper_id member and move
down in the file below the related ..._udr struct.
(gfc_get_omp_namelist_udm): New convenience macro.
* match.cc (gfc_free_omp_namelist): Free udm.
* module.cc (MOD_VERSION_NUMERIC): Add.
(load_omp_udrs): Add diagnostic_group.
(omp_map_clause_ops, load_omp_udms, check_omp_declare_mappers,
write_omp_udm, write_omp_udms): New.
(read_module, write_module): Support 'declare mapper'.
* openmp.cc (gfc_find_omp_udm, gfc_match_omp_clauses,
resolve_omp_clauses): Handle mapper_id and do later
resolution.
* resolve.cc (resolve_types): Remove 'declare mapper' sorry.
* trans-openmp.cc (gfc_trans_omp_clauses): Add sorry for
map clauses with mapper.
2026-06-11 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/30438
PR fortran/28004
* dump-parse-tree.cc (gfc_debug_code_node): New function.
(show_attr): Add select_rank_temporary. Fix typo. Add referenced,
value_set, allocated and value_used.
* gfortran.h (enum value_set): New enum.
(enum value_used): New enum.
(gfc_symbol): Add value_set, value_used, allocated and
warning_emitted attributes. Rename formal_at to other_loc.
Add extra_loc.
(gfc_value_set_at): Add prototype.
(gfc_lvalue_allocated_at): Likewise.
(gfc_mark_lhs_as_used): Likewise.
(gfc_value_used_expr): Likewise.
(gfc_value_set_and_used): Likewise.
(gfc_used_in_allocate_expr): Likewise.
* interface.cc (gfc_compare_actual_formal): Mark actual arguments
according to INTENT and VALUE on formal arguments.
(gfc_procedure_use): Add VALUE_ARG/VALUE_MAYBE_USED for
implicit arguments.
* intrinsic.cc (mark_args_as_used): New function.
(init_arglist): Adjust comment.
(gfc_intrinsic_sub_interface): Use mark_args_as_used.
* invoke.texi: Document -Wundefined-vars, -Wunused-intent-out and
-Wunused-read.
* io.cc (resolve_tag_format): Mark expressions as used.
(resolve_tag): Mark as used or set, depending on tag.
(gfc_resolve_dt): Mark internal unit as set.
(gfc_resolve_inquire): Mark value as set for INQUIRE_RESOLVE_TAG macro.
* lang.opt: Add -Wundefined-vars, -Wunused-intent-out and -Wunused-read.
* lang.opt.urls: Regenerated.
* resolve.cc (resolve_function): Replace formal_at by other_loc.
(resolve_call): Likewise.
(gfc_resolve_iterator): Mark iterator variable as set and used and
other expressions as used.
(resolve_forall_iterators): Likewise.
(resolve_allocate_expr): On success, call gfc_used_in_allocate_expr
and mark value as set if source is present.
(resolve_transfer): Mark set/read according to context.
(gfc_resolve_blocks): Mark expr1 and expr2 as used.
(mark_lhs_assignments_set): Prototype / new function.
(gfc_resolve_code): Mark expr2, expr3 and expr4 as used.
(var_value_is_used): New function.
(var_value_is_set): New function.
(find_unused_vs_set): New function.
(warn_unused_vs_set): New function.
(gfc_resolve): Call warn_unused_vs_set.
* symbol.cc (gfc_value_set_at): New function.
(mark_vars_as_used): New function.
(gfc_value_used_expr): New function.
(gfc_value_set_and_used): New function.
(gfc_used_in_allocate_expr): new function.
(gfc_lvalue_allocated_at): New function.
* trans-decl.cc (gfc_finish_var_decl): If we already emitted a warning,
suppress further middle-end warning o that variable.
2026-06-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Backported from master:
2026-06-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125650
* match.cc (match_association_list): Handle ASSOCIATE selectors
that are overloaded intrinsic operator expressions by extending
them with gfc_extend_expr at parse time, so the associate name is
typed before the construct body is parsed.
2026-06-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Backported from master:
2026-06-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125530
* match.cc (gfc_match_call): Route ASSOCIATE names followed by '%'
to match_typebound_call without first resolving the selector, to
avoid prematurely marking a contained-function selector as EXTERNAL.
* symbol.cc (find_derived_types): Also search type-bound procedure
names via gfc_find_typebound_proc when inferring the type of an
inferred-type ASSOCIATE name; exclude vtable types.
2026-06-10 Chung-Lin Tang <cltang@baylibre.com>
PR fortran/122910
* f95-lang.cc (LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE): Define as
gfc_omp_array_data_privatize.
* trans-openmp.cc (gfc_omp_array_data_privatize): New function.
* trans.h (gfc_omp_array_data_privatize): New declaration.
2026-06-09 Tobias Burnus <tburnus@baylibre.com>
* module.cc (load_omp_udrs): Improve reduction diagnostic output.
2026-06-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/125669
* decl.cc (gfc_get_pdt_instance): If the bound expressions for
and array component, of the length expression for a character
component, gave simplified to a constant, do not set attributes
pdt_array and pdt_string respectively.
2026-06-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125535
* trans-expr.cc (gfc_conv_procedure_call): Move post block append
to after the deep copy of allocatable components for transformational
intrinsics, so that argument temporaries are not freed before the
result components are copied.
2026-06-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125534
* trans-stmt.cc (gfc_trans_allocate): Use GFC_TYPE_ARRAY_RANK from
the GFC descriptor type when se.expr is a descriptor, rather than
expr->rank, for the rank passed to gfc_allocate_pdt_comp. Apply
the same fix to the CLASS path.
(gfc_trans_deallocate): Likewise for gfc_deallocate_pdt_comp.
2026-06-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/125527
* class.cc (gfc_find_derived_vtab): Stash module namespace and
use it as the last place to search for the vtab before building
a new one.
2026-06-07 Paul Thomas <pault@gcc.gnu.org>
Claude Sonnet 4.6 <noreply@anthropic.com>
PR fortran/121379
* decl.cc (get_proc_name): Use module_procedure attr. instead
of external to guard the missing-MODULE-prefix diagnostic. Use
gfc_error_now and do not return, so that an error cascade does
not occur.
2026-06-07 Kwok Cheung Yeung <kcyeung@baylibre.com>
Andrew Stubbs <ams@baylibre.com>
Sandra Loosemore <sloosemore@baylibre.com>
* dump-parse-tree.cc (show_omp_namelist): Add iterator support for
OMP_LIST_TO and OMP_LIST_FROM.
* match.cc (gfc_free_omp_namelist): Free namespace for OMP_LIST_TO
and OMP_LIST_FROM.
* openmp.cc (gfc_match_motion_var_list): Parse 'iterator' modifier.
(resolve_omp_clauses): Resolve iterators for OMP_LIST_TO and
OMP_LIST_FROM.
* trans-openmp.cc (gfc_trans_omp_clauses): Handle iterators in
OMP_LIST_TO and OMP_LIST_FROM clauses. Add expressions to
iter_block rather than block.
2026-06-07 Kwok Cheung Yeung <kcyeung@baylibre.com>
Andrew Stubbs <ams@baylibre.com>
Sandra Loosemore <sloosemore@baylibre.com>
* dump-parse-tree.cc (show_omp_namelist): Add iterator support for
OMP_LIST_MAP.
* match.cc (gfc_free_omp_namelist): Free namespace in namelist for
OMP_LIST_MAP.
* openmp.cc (gfc_match_omp_clauses): Parse 'iterator' modifier for
'map' clause.
(resolve_omp_clauses): Resolve iterators for OMP_LIST_MAP.
* trans-openmp.cc: Include tree-ssa-loop-niter.h.
(gfc_trans_omp_array_section): Add iterator argument. Replace
instances of iterator variables with the initial value when
computing biases.
(gfc_trans_omp_clauses): Handle iterators in OMP_LIST_MAP clauses.
Add expressions to iter_block rather than block. Do not apply
iterators to firstprivate maps. Pass iterator to
gfc_trans_omp_array_section.
2026-06-07 Kwok Cheung Yeung <kcyeung@baylibre.com>
Sandra Loosemore <sloosemore@baylibre.com>
* gfortran.h (struct gfc_omp_namelist): Move udm field into a new
union u3.
* match.cc (gfc_free_omp_namelist): Change reference to u2.udm to
u3.udm.
* openmp.cc (gfc_match_omp_clauses): Likewise.
2026-06-06 Harald Anlauf <anlauf@gmx.de>
PR fortran/125606
* trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument
of LOC() is not scalar or known to be simply contiguous, simply
take the address of the argument array's first element.
2026-06-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* resolve.cc (replace_in_code_recursive): Add EXEC_BLOCK case to
replace shadow iterator references in ASSOCIATE selector expressions
and the ASSOCIATE body namespace.
2026-06-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125531
* primary.cc (gfc_match_varspec): Before erroring on a zero-argument
COMPCALL, check for a same-named data component and fall back to the
data-component path. For inferred-type ASSOCIATE names, retry
gfc_find_component with noaccess=true when the normal search fails.
2026-06-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/60576
* trans-array.cc (gfc_resize_assumed_rank_dim_field): New
function extracted from gfc_conv_array_parameter.
(gfc_conv_array_parameter): Use the new function.
2026-06-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Backported from master:
2026-06-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125529
* resolve.cc (check_default_none_expr): Use d->code instead of
sym->ns->code to locate the DO CONCURRENT forall_iterator list,
avoiding a wrong-union-member read when the symbol's namespace is
an ASSOCIATE body. Skip leading underscore when comparing iterator
names for shadow iterators.
2026-06-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125528
* class.cc (find_typebound_proc_uop): Set root = NULL instead of
returning NULL when derived type lacks f2k_derived, so parent-type
type-bound procedures and operators are still found via inheritance.
* match.cc (resolve_assoc_operand): New helper.
(infer_typebound_uop_type): New helper.
(extend_assoc_op): New helper.
(match_association_list): Handle ASSOCIATE selectors that are
type-bound user-defined operator expressions, including nested cases.
* resolve.cc (resolve_typebound_procedures): Move resolve_symbol
call for the parent type before the early return so inherited
type-bound bindings are resolved even when the child type has none
of its own.
2026-06-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/60576
PR fortran/60576
* trans-array.cc (gfc_conv_array_parameter): For an assumed-rank
actual argument passed to a CLASS assumed-rank formal, use a
runtime-sized memcpy for the dim[] entries instead of a full
GFC_MAX_DIMENSIONS static copy. For a fixed-rank actual to a
CLASS assumed-rank formal, pass lhs_type=false to
gfc_class_array_data_assign so the dim[] copy is sized by the
RHS descriptor type (dim_t[rank]). Fixed-rank class formals
retain lhs_type=true.
* trans-expr.cc (gfc_conv_derived_to_class): For an assumed-rank
actual, use a runtime-sized memcpy for the derived_array descriptor
dim[] copy instead of a full GFC_MAX_DIMENSIONS static copy.
2026-06-04 Paul Thomas <pault@gcc.gnu.org>
Claude Sonnet 4.6 <noreply@anthropic.com>
PR fortran/121204
* symbol.cc (gfc_copy_attr): Copy the always_explicit attribute.
2026-06-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/93424
* decl.cc (variable_decl): Do not commit the symbol if it is
the implicit result of a module procedure being declared in a
function, used in a submodule.
2026-06-03 Henri Menke <henri@henrimenke.de>
* gfortran.h (enum ext_attr_id_t): Add EXT_ATTR_INLINE and
EXT_ATTR_ALWAYS_INLINE at the end. Document that new attributes
must be appended to preserve module compatibility.
* decl.cc (ext_attr_list): Add "inline" and "always_inline".
(gfc_match_gcc_attributes): Warn about and drop INLINE or
ALWAYS_INLINE when combined with NOINLINE on the same symbol.
* trans-decl.cc (build_function_decl): Handle EXT_ATTR_INLINE and
EXT_ATTR_ALWAYS_INLINE by setting DECL_DECLARED_INLINE_P, and
DECL_DISREGARD_INLINE_LIMITS for ALWAYS_INLINE.
* gfortran.texi (ATTRIBUTES directive): Document INLINE and
ALWAYS_INLINE.
2026-06-03 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/105594
* module.cc (gfc_use_module): Suppress bogus warning for a missing
ONLY clause on a submodule.
2026-06-02 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Backported from master:
2026-06-02 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125324
* gfortranspec.cc (lang_specific_driver): Also append -lpthread
when need_caf_shmem is set.
2026-06-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/88632
PR fortran/104630
* module.cc (write_symtree): Do not filter out private symbols
when writing a submodule interface file (.smod). Submodules are
descendants of their ancestor module and access private symbols
in the module's contains section via host association per
Fortran 2018 section 14.2.2.
2026-06-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125527
* class.cc (gfc_find_derived_vtab): Stop the top-level namespace
walk at module/submodule boundaries to avoid escaping a submodule
into its ancestor module namespace.
* openmp.cc (gfc_omp_requires_add_clause): Likewise; treat the
submodule as its own program unit for OMP REQUIRES.
(gfc_match_omp_requires): Likewise; allow OMP REQUIRES in a submodule
spec part even when gfc_current_ns->parent is now non-NULL.
(gfc_match_omp_atomic): Likewise.
* parse.cc (parse_module): After processing USE statements and
host-association traversal, link the submodule namespace to its
ancestor module namespace so internal subprograms are visible via
host association (Fortran 2018, 14.6.1.3).
(clean_up_modules): Reset gfc_current_ns->parent before gfc_done_2
to prevent double-free of the ancestor module namespace.
2026-06-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125481
* interface.cc (gfc_compare_actual_formal): Add missing check that
rejects a procedure-pointer actual argument corresponding to a
data-object dummy argument (F23:15.5.2.5, para 2). Restrict to
EXPR_VARIABLE to avoid false positives on calls through procedure
pointer components.
2026-05-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/105582
* trans-decl.cc (get_proc_pointer_decl): Add FL_LABEL check to
route BLOCK-construct procedure pointers to gfc_add_decl_to_function
rather than gfc_add_decl_to_parent_function.
2026-05-30 Dhruv Chawla <dhruvc@nvidia.com>
* gfortran.texi: Reflow long line.
2026-05-30 Dhruv Chawla <dhruvc@nvidia.com>
* check.cc (oct2bin): Fix typos.
(gfc_check_move_alloc): Likewise.
* class.cc (gfc_intrinsic_hash_value): Likewise.
* decl.cc (copy_prefix): Likewise.
* dependency.cc (gfc_dep_compare_expr): Likewise.
* expr.cc (gfc_check_assign_symbol): Likewise.
* frontend-passes.cc (combine_array_constructor): Likewise.
(doloop_code): Likewise.
(doloop_warn): Likewise.
(matmul_lhs_realloc): Likewise.
* gfortran.h: Likewise.
* gfortran.texi: Likewise.
* interface.cc (compare_parameter): Likewise.
* intrinsic.cc (add_functions): Likewise.
(add_subroutines): Likewise.
* invoke.texi: Likewise.
* lang.opt: Likewise.
* module.cc (mio_full_f2k_derived): Likewise.
* openmp.cc (gfc_match_omp_variable_list): Likewise.
* resolve.cc (resolve_global_procedure): Likewise.
(gfc_fixup_inferred_type_refs): Likewise.
(gfc_verify_binding_labels): Likewise.
(resolve_fl_parameter): Likewise.
* trans-array.cc (gfc_set_loop_bounds_from_array_spec): Likewise.
(gfc_trans_array_constructor_value): Likewise.
(maybe_substitute_expr): Likewise.
(duplicate_allocatable_coarray): Likewise.
* trans-decl.cc (gfc_trans_deferred_vars): Likewise.
* trans-expr.cc (gfc_vptr_size_get): Likewise.
(gfc_trans_subcomponent_assign): Likewise.
(gfc_conv_expr): Likewise.
(fcncall_realloc_result): Likewise.
(alloc_scalar_allocatable_for_assignment): Likewise.
(gfc_trans_assignment_1): Likewise.
* trans-openmp.cc (gfc_omp_deep_mapping_cnt): Likewise.
* trans-stmt.cc (trans_associate_var): Likewise.
(gfc_trans_allocate): Likewise.
* trans.cc (gfc_finalize_tree_expr): Likewise.
2026-05-29 Harald Anlauf <anlauf@gmx.de>
PR fortran/125393
* interface.cc (get_expr_storage_size): Additionally return
character length.
(gfc_compare_actual_formal): When the formal is a scalar character
variable, use character lengths, not array storage size for check.
2026-05-29 Tobias Burnus <tburnus@baylibre.com>
PR c/122892
* openmp.cc (gfc_resolve_omp_allocate): Reject
omp_{cgroup,pteam,thread}_mem_alloc also for local static
variables.
2026-05-28 Sandra Loosemore <sloosemore@baylibre.com>
* intrinsic.texi (F_C_STRING): New section.
* trans-intrinsic.cc (conv_trim): Delete.
(conv_isocbinding_function): Rewrite the F_C_STRING case.
2026-05-28 Sandra Loosemore <sloosemore@baylibre.com>
Tobias Burnus <tburnus@baylibre.com>
* check.cc (gfc_check_c_f_strpointer): New.
* f95-lang.cc (gfc_init_builtin_functions): Add BUILT_IN_STRNLEN.
* gfortran.h (enum gfc_isym_id): Add GFC_ISYM_C_F_STRPOINTER.
* gfortran.texi (Interoperable Subroutines and Functions): Mention
f_c_string and c_f_strpointer.
* intrinsic.cc (add_subroutines): Add c_f_strpointer. Fix nearby
whitespace errors.
(sort_actual): Handle first argument to c_f_strpointer specially.
* intrinsic.h (gfc_check_c_f_strpointer): Declare.
* intrinsic.texi (C_F_STRPOINTER): New section. Add entry to menu
and cross-references from similar functions.
* iso-c-binding.def: Add c_f_strpointer.
* trans-intrinsic.cc (conv_isocbinding_subroutine_strpointer): New.
(gfc_conv_intrinsic_subroutine): Call it.
2026-05-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/125430
* trans-decl.cc (build_function_decl): Set TREE_PUBLIC for all
module-contained procedures so submodules compiled as separate
translation units can reach them via host association. Also set
DECL_VISIBILITY to VISIBILITY_HIDDEN for PRIVATE procedures,
matching the existing treatment of module variables.
2026-05-26 Paul-Antoine Arras <parras@baylibre.com>
* dump-parse-tree.cc (debug): Add debug functions for gfc_omp_namelist
and gfc_omp_clauses.
2026-05-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Harald Anlauf <anlauf@gcc.gnu.org>
PR fortran/93727
* io.cc (enum format_token): Add FMT_EX, FMT_LPS, FMT_LPZ, FMT_LZ
enums to identify specific tokens.
(format_lex): Add parsing and checking of the EXw.d and EXw.dEe edit
specifiers.
2026-05-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/125263
* trans-expr.cc (gfc_trans_assignment_1): Pass scalar class to
derived type assignment expressions to gfc_trans_scalar_assign.
2026-05-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/125391
* trans.cc (gfc_assignment_finalizer_call): For finalization of
allocatable and pointer lhs before assignment, gfc_conv_expr
should be used with se.descriptor_only. This avoids implicit of
set_factored_descriptor_value by gfc_conv_expr_descriptor.
2026-05-22 Tobias Burnus <tburnus@baylibre.com>
* dump-parse-tree.cc: Fix comment typo.
* gfortran.texi: Fix typo.
* intrinsic.texi: Likewise.
* invoke.texi: Likewise.
2026-05-22 Tobias Burnus <tburnus@baylibre.com>
PR fortran/125416
* invoke.texi (fcoarray): Document 'shared'.
2026-05-21 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/125379
* gfortran.h (gfc_find_symbol_by_name): Add prototype.
* resolve.cc (gfc_verify_binding_labels): Call gfc_find_symbol_by_name
if direct lookup fails.
* symbol.cc (compare_target_sym_name): New function.
(gfc_find_symbol_by_name): New function.
2026-05-20 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/106546
* frontend-passes.cc (create_var): Set attr->automatic on
new symbol.
(create_do_loop): Likewise on iteration variable.
2026-05-19 Julian Brown <julian@codesourcery.com>
Tobias Burnus <tburnus@baylibre.com>
* dump-parse-tree.cc (show_attr): Show omp_udm_artificial_var flag.
(show_omp_namelist): Support OMP_MAP_UNSET.
* gfortran.h (enum gfc_statement): Add ST_OMP_DECLARE_MAPPER.
(symbol_attribute): Add omp_udm_artificial_var attribute.
(enum gfc_omp_map_op): Add OMP_MAP_UNSET.
(gfc_omp_namelist_udm): New struct.
(gfc_omp_namelist): Add udm pointer to u2 union.
(gfc_symtree): Add omp_udm pointer.
(gfc_namespace): Add omp_udm_root symtree and omp_udm_ns flag.
(gfc_free_omp_udm, gfc_omp_udm_find, gfc_find_omp_udm,
gfc_resolve_omp_udms): Add prototypes.
* match.h (gfc_match_omp_declare_mapper): Add prototype.
* match.cc (gfc_free_omp_namelist): Update for declare mapper's udm.
* openmp.cc (gfc_omp_directives): Uncomment 'declare mapper'.
(gfc_free_omp_udm, gfc_find_omp_udm, gfc_omp_udm_find,
gfc_match_omp_declare_mapper, gfc_resolve_omp_udm,
gfc_resolve_omp_udms): New.
(gfc_match_omp_clauses): Take argument for the default map-type
modifier; add support for the 'mapper' modifier.
(resolve_omp_clauses): Update for declare-mapper map clauses.
* parse.cc (decode_omp_directive): Add declare mapper support.
(case_omp_decl): Add ST_OMP_DECLARE_MAPPER case.
(gfc_ascii_statement): Add ST_OMP_DECLARE_MAPPER case.
* resolve.cc (resolve_types): Call gfc_resolve_omp_udms.
* symbol.cc (free_omp_udm_tree): New function.
(gfc_free_namespace): Call it.
2026-05-19 Paul-Antoine Arras <parras@baylibre.com>
Chung-Lin Tang <cltang@baylibre.com>
Sandra Loosemore <sloosemore@baylibre.com>
* gfortran.h (enum gfc_omp_map_op): Dedicate the two LSB to TO and FROM.
* openmp.cc (resolve_omp_clauses): Adjust to allow duplicate
mapped variables for OpenMP.
* trans-openmp.cc (gfc_trans_omp_clauses): Remove duplicates before
clause expansion.
2026-05-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/115260
* trans-expr.cc (gfc_conv_subref_array_arg): Pass false to
dealloc argument of gfc_trans_scalar_assign if we are
converting a g77-style argument.
2026-05-16 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/122245
* dump-parse-tree.cc (write_formal_arglist): Take the formal
arglist from the symbol's interface if it is present.
2026-05-14 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/125092
* decl.cc (add_global_entry): Use string from the heap instead
of a pointer to stack-allocated memory.
* frontend-passes.cc (check_against_globals): If there is an error
already, return early.
* gfortran.h (gfc_symbol_rank): New prototype.
* interface.cc (symbol_rank): Rename to
(gfc_symbol_rank): this.
(gfc_check_dummy_characteristics): Use new function name.
(gfc_check_result_characteristics): Likewise.
(gfc_compare_interfaces): Likewise.
(compare_parameter): Likewise.
(get_sym_storage_size): Likewise.
(gfc_procedure_use): Likewise.
* resolve.cc (decays_to_pointer): New function.
(c_types_conform): New function.
(compare_c_binding_arglists): New function.
(gfc_verify_binding_labels): Check return types and rank
plus argument lists if there is a pre-exisiting global
symbol.
2026-05-14 Tobias Burnus <tburnus@baylibre.com>
* trans-openmp.cc (gfc_omp_deep_mapping_p, gfc_omp_deep_mapping_cnt,
gfc_omp_deep_mapping): Improve interface comment.
2026-05-13 Tobias Burnus <tburnus@baylibre.com>
* intrinsic.texi (OpenMP Modules): Add named parameters for
omp_control_tool and omp_control_tool_result.
2026-05-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* lang.opt (fcoarray=): Add shared enum value; update help text.
* gfortranspec.cc (CAF_SHMEM_LIBRARY): New macro.
(lang_specific_driver): Detect -fcoarray=shared in first pass and
set need_caf_shmem flag. In second pass, transform -fcoarray=shared
to -fcoarray=lib for cc1. Append -lcaf_shmem when need_caf_shmem
is set and linking is active.
2026-05-10 Andre Vehreschild <vehre@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/125051
* trans-decl.cc (gfc_get_symbol_decl): gfc_defer_symbol_init
must not be called for PDT types, classes or types with PDT
(gfc_generate_function_code): If gfc_current_ns is not the same
as the function namespace, stash it,change it to the function
namespace and restore after translation of the code.
* trans-intrinsic.cc (gfc_conv_intrinsic_caf_get): If the array
is in a module, use the symbol namespace.
* trans-openmp.cc (gfc_trans_omp_array_reduction_or_udr): If the
current namespace is not that of the procedure, change to the
procedure namspace and revert on leaving this function.
2026-05-08 Harald Anlauf <anlauf@gmx.de>
PR fortran/111952
PR fortran/125059
* trans-decl.cc (gfc_finish_var_decl): Remove bogus code forcing
a DT variable with DTIO as static.
* trans-io.cc (gfc_build_io_library_fndecls): Fix fnspec attribute.
2026-05-07 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/125192
PR fortran/125198
* trans-array.cc (gfc_conv_expr_descriptor): Add bounds checking
code to the outermost loop's preliminary block.
2026-05-07 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.cc (trans_array_bound_check): Replace references
to SE->PRE with references to the new argument BLOCK. Remove
argument SE.
(array_bound_check_elemental): Likewise. Update caller.
(conv_array_index_offset): Update caller.
(gfc_conv_expr_descriptor): Update caller.
2026-05-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/125172
* resolve.cc (gfc_fixup_inferred_type_refs): Update kind for
INQUIRY_RE and INQUIRY_IM references on inferred complex
associate-name.
(resolve_variable): For an inferred-type associate-name with
no subobject ref, refresh e->ts from sym->ts.
(resolve_assoc_var): For an inferred-type complex/character
associate-name, refresh sym->ts from the resolved target when
only the kind differs.
2026-05-02 Tobias Burnus <tburnus@baylibre.com>
Julian Brown <julian@codesourcery.com>
* gfortran.h (enum gfc_omp_list_type): Add this name
to the existing OMP_LIST... enum; add OMP_LIST_NONE.
(gfc_free_omp_namelist): Take that enum as arg instead of bool args.
* match.cc (gfc_free_omp_namelist): Update.
* openmp.cc (gfc_free_omp_clauses, gfc_free_omp_declare_variant_list,
gfc_match_omp_clause_reduction, gfc_match_omp_clauses,
gfc_match_omp_allocate, gfc_match_omp_flush,
gfc_match_omp_declare_target, resolve_omp_clauses,
gfc_resolve_omp_parallel_blocks, resolve_omp_do,
gfc_resolve_oacc_blocks, gfc_resolve_oacc_declare): Update
gfc_free_omp_namelist call and used enum type instead of
int.
* st.cc (gfc_free_statement): Likewise.
2026-04-29 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/125021
* coarray.cc (check_add_new_comp_handle_array): Prefix internal
symbols by two underscores.
(create_get_callback): Same.
(create_allocated_callback): Same.
(create_send_callback): Same.
2026-04-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/117077
* trans-expr.cc (gfc_trans_scalar_assign): If the lhs and rhs
TYPE_MAIN_VARIANTs are not the same, convert the rhs to the lhs
type via a VIEW_CONVERT_EXPR.
2026-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
* invoke.texi (fc-prototypes): Correct spelling for opindex.
(fc-prototypes-external): Likewise.
* lang.opt.urls: Regenerate.
2026-04-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/120140
* resolve.cc (resolve_elemental_dependencies): New function,
preceded by prototype for add_temp_assign_before_call.
(resolve_call): If an elemental subroutine call has at least
two actual erguments, call resolve_elemental_dependencies to
generate temporary expressions for the arguments if required.
(get_temp_from_expr): Add optional boolean argument, which if
set, makes the resulting temporary unconditionally allocatable.
(add_temp_assign_before_call): New function.
2026-04-14 Harald Anlauf <anlauf@gmx.de>
PR fortran/124807
* decl.cc (add_init_expr_to_sym): Suggested by Coverity:
Check sym->as != NULL before dereferencing it.
2026-04-13 Christopher Albert <albert@tugraz.at>
PR fortran/101760
PR fortran/102314
* trans-openmp.cc (gfc_omp_finish_clause): Compute OMP_CLAUSE_SIZE
from the array domain bounds and element size for VLA types instead
of using TYPE_SIZE_UNIT directly, to avoid corrupting the type.
2026-04-11 Christopher Albert <albert@tugraz.at>
PR fortran/93814
* trans-decl.cc (build_entry_thunks): Create local result buffer
and length temporaries for bind(c) CHARACTER entry thunks when the
master returns by reference but the thunk returns by value.
2026-04-11 Harald Anlauf <anlauf@gmx.de>
Mikael Morin <mikael@gcc.gnu.org>
PR fortran/120140
* dependency.cc (gfc_check_argument_var_dependency): For elemental
subroutines skip the dependency check for array references.
Correct description of function return value.
* interface.cc (gfc_compare_actual_formal): Allow array sections
with vector subscripts as actual arguments to elemental procedures
in accordance with the Fortran standard.
2026-04-10 Christopher Albert <albert@tugraz.at>
PR fortran/94978
* frontend-passes.cc (evaluate_loop_bound): New helper.
(inner_loop_may_be_skipped): New helper.
(do_subscript): Skip outer-loop bound warnings when nested inner loops
may be zero-trip for the substituted bound.
2026-04-09 Christopher Albert <albert@tugraz.at>
PR fortran/103367
* trans-array.cc (gfc_conv_array_initializer): Emit an error for
invalid residual initializer expressions before returning a safe
empty constructor.
2026-04-08 Christopher Albert <albert@tugraz.at>
PR fortran/96986
* resolve.cc (resolve_global_procedure): Move entry symbol
lookup outside the resolved != -1 block.
2026-04-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/93715
* trans-decl.cc (gfc_trans_deferred_vars): Skip auto array
allocation for scalar coarrays.
2026-04-07 Christopher Albert <albert@tugraz.at>
PR fortran/102430
* openmp.cc (resolve_omp_clauses): Reject array/allocatable LINEAR on
worksharing-loop constructs.
2026-04-07 Christopher Albert <albert@tugraz.at>
PR fortran/103367
* trans-array.cc (gfc_conv_array_initializer): Return empty
constructor for unexpected expression types after parameter
substitution.
2026-04-07 Sandra Loosemore <sloosemore@baylibre.com>
PR other/124784
* lang.opt.urls: Regenerated.
2026-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/85352
* resolve.cc (specification_expr_symbol): New variable.
(entry_dummy_seen_p): Return whether a dummy appears in an already
seen ENTRY.
(gfc_resolve_formal_arglist): Remember the dummy whose specification
expressions are being resolved.
(resolve_variable): Accept unresolved sibling ENTRY dummy arguments
while resolving the current dummy's specification expressions.
(resolve_fl_variable): Preserve specification_expr_symbol.
(resolve_symbol_array_spec): Likewise.
2026-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/107425
* trans-decl.cc (gfc_finish_var_decl): Check for
omp_affinity_iterators namespace before FL_LABEL BLOCK check.
Only route actual iterator variables through add_decl_as_local;
add other variables to the enclosing function.
2026-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/124780
* resolve.cc (resolve_ordinary_assign): Do not add the class
data component to an operator expression.
* trans-expr.cc (gfc_trans_scalar_assign): If class to class
assignment uses ordinary scalar assignment and neither lhs or
rhs are class types, do a deep copy for allocatable components.
2026-04-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/124598
* trans-expr.cc (gfc_conv_structure): Do not add parameterized
components to a structure constructor.
2026-04-06 Christopher Albert <albert@tugraz.at>
PR fortran/79524
PR fortran/79524
* decl.cc (discard_pending_charlens): New helper.
(add_init_expr_to_sym): Drop statement-local charlens when
rejecting variable-length parameter arrays.
(variable_decl, do_parm, enumerator_decl): Save the current
namespace charlen list before parsing declarations with
initializers.
(match_procedure_decl): Adjust call to add_init_expr_to_sym.
2026-04-05 Christopher Albert <albert@tugraz.at>
PR fortran/109788
* iresolve.cc (copy_intrinsic_sym): New helper.
(gfc_resolve_spread): Copy the intrinsic descriptor before
specializing the character formal argument type.
2026-04-04 Harald Anlauf <anlauf@gmx.de>
PR fortran/66973
* interface.cc (gfc_compare_actual_formal): Check that C_LOC and
C_FUNLOC from ISO_C_BINDING as actual argument are passed to a
dummy argument of matching type C_PTR/C_FUNPTR.
2026-04-03 Harald Anlauf <anlauf@gmx.de>
PR fortran/124652
* trans-expr.cc (gfc_conv_procedure_call): Do not clobber a
procedure pointer intent(out) argument.
* trans-intrinsic.cc (conv_isocbinding_function): When passing to
C_FUNLOC a procedure pointer that is a dummy, dereference it.
2026-04-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/100155
* trans-expr.cc (gfc_add_interface_mapping): 'new_sym' dummy
attribute set to zero.
(gfc_conv_procedure_call): Deallocate allocatable components of
a class argument, enclosed in parentheses,wrap up the parmse
and proceed to the next argument.
2026-04-02 Christopher Albert <albert@tugraz.at>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/124751
* trans-array.cc (gfc_conv_array_parameter): Build a packed
descriptor for assumed-rank actual arguments instead of reusing
stale metadata from the original descriptor.
2026-04-01 Gonzalosilvalde <gonzalo.silvalde@gmail.com>
PR fortran/79330
* decl.cc (gfc_match_subroutine): Set has_import_set when
matching a module procedure inside an interface block.
(gfc_match_function_decl): Likewise.
2026-04-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/124739
* io.cc (match_inquire_element): Change tag_id from a
variable tag to an expression tag.
2026-04-01 Christopher Albert <albert@tugraz.at>
PR fortran/100194
* trans-expr.cc (gfc_conv_procedure_call): Skip
gfc_conv_subref_array_arg for assumed-rank actual arguments
(e->rank == -1) when the dummy is contiguous.
2026-03-31 Mikael Morin <mikael@gcc.gnu.org>
Christopher Albert <albert@tugraz.at>
PR fortran/121185
PR fortran/124661
* trans-array.cc (maybe_save_ref): New wrapper function around
save ref.
(set_factored_descriptor_value): Use the new wrapper function.
Add argument PRELIMINARY_CODE.
(gfc_conv_ss_descriptor): Update caller.
2026-03-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/124666
* io.cc: Change uint value back to int.
2026-03-30 Christopher Albert <albert@tugraz.at>
* scanner.cc (skip_free_oacc_sentinel): Clear openmp_flag only for
fresh OpenACC directive lines.
(skip_free_omp_sentinel): Clear openacc_flag only for fresh OpenMP
directive lines.
2026-03-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/124666
* io.cc (format_lex): Use enclosing parens to subtract
before adding.
2026-03-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/95879
* parse.cc (fixup_st_func_formals): New function to update
statement function formal argument lists referencing a symbol
about to be freed.
(gfc_fixup_sibling_symbols): Call fixup_st_func_formals before
gfc_release_symbol.
2026-03-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84245
* match.cc (gfc_match_select_type): Free the temporary namespace
only on MATCH_NO. Return immediately on MATCH_ERROR.
2026-03-27 Paul Thomas <pault@gcc.gnu.org>
PR fortran/102619
* trans-expr.cc (gfc_get_interface_mapping_array): Add argument
'assumed_rank_formal', which if true returns the descriptor in
'ifm'.
(gfc_add_interface_mapping): Detect an assumed rank formal arg
of a non-intrinsic function to set 'assumed_rank_formal' and
pass the descriptor to gfc_get_interface_mapping_array.
2026-03-27 Harald Anlauf <anlauf@gmx.de>
PR fortran/124656
* check.cc (min_max_args): Fix array index used for registering
labeled arguments of the MIN/MAX intrinsics for subsequent
duplicate label checks.
2026-03-27 Harald Anlauf <anlauf@gmx.de>
PR fortran/124631
* simplify.cc (gfc_simplify_eoshift): Initialize sstride[0] to
prevent pointer arithmetic with undefined offset. Fix several
frontend memleaks.
2026-03-27 Paul Thomas <pault@gcc.gnu.org>
PR fortran/114021
* symbol.cc (gfc_get_unique_symtree): If the namespace argument
is NULL, allocate a new symtree and provide it with the unique
name.
* trans-expr.cc (trans_scalar_assign): In the deep copy of a
derived type with allocatable components, fix the rhs value if
it is not a constant or a variable.
* trans-stmt.cc (gfc_trans_allocate): Do not deallocate
allocatable components of a source that is not a variable and
is a pointer. If the DECL_NAME or its IDENTIFIER_POINTER are
null,use gfc_get_unique_symtree with NULL namespace to obtain a
symtree for the assignment.
2026-03-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/115315
* decl.cc (insert_parameter_exprs): Make strcmp condition more
concise.
(gfc_get_pdt_instance): Use gf_replace_expr where possible and
use return value of gfc_simplify_expr. Correct error in which
params->expr was being simplified instead of c2->initializer.
* expr.cc (gfc_simplify_expr): If the substring 'start' value
is less than zero, it is clearly out of range and so return
false.
2026-03-25 Harald Anlauf <anlauf@gmx.de>
PR fortran/124567
* interface.cc (gfc_check_dummy_characteristics): Split shape check
into a separate check for rank and a check for shape, taking into
account a corner case where the ambiguity between deferred shape
and assumed shape has not been fully resolved at the time of
checking.
2026-03-25 Paul Thomas <pault@gcc.gnu.org>
PR fortran/119273
* trans-array.cc (expr_contains_impure_fcn): New function.
(gfc_expr_contains_impure_fcn): New function calling above fcn.
(array_bound_check_elemental): Add indexse pre-block to se pre.
Warn if the index expression contains a function not declared
to be pure.
2026-03-22 Harald Anlauf <anlauf@gmx.de>
PR fortran/124259
* target-memory.cc (gfc_merge_initializers): Change struct
gfc_typespec argument into a const reference.
* target-memory.h (gfc_merge_initializers): Adjust prototype.
* trans.cc (gfc_finalize_tree_expr): Change struct symbol_attribute
argument into a const reference.
* trans.h (gfc_finalize_tree_expr): Adjust prototype.
2026-03-20 Christopher Albert <albert@tugraz.at>
PR fortran/120723
* trans-openmp.cc (gfc_trans_omp_clauses): Handle bare scalar
OpenACC attach/detach clauses without pointer-mapping nodes.
2026-03-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/124161
* resolve.cc (resolve_symbol): Do not apply the default
initializer if the symbol is used in a submodule.
2026-03-17 Christopher Albert <albert@tugraz.at>
PR fortran/120286
* trans-openmp.cc (gfc_is_class_pointer_type): New helper.
(gfc_omp_clause_copy_ctor): Unwrap saved descriptors before
deciding whether privatization should preserve only pointer
association. Handle scalar class pointers on that path too.
(gfc_omp_clause_dtor): Likewise.
2026-03-16 Paul Thomas <pault@gcc.gnu.org>
Steve Kargl <kargls@comcast.net>
PR fortran/93832
* array.cc (resolve_array_bound): Emit error and return false
if bound expression is derived type or class.
* primary.cc (gfc_convert_to_structure_constructor): Do not
dereference NULL in character component test. Define 'shorter'
and use it help cure one of several whitespace issues.
2026-03-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/105168
* trans-expr.cc (gfc_conv_class_to_class): If the argument expr
is not a class type use the parent tree if that is a class.
(gfc_conv_procedure_call): If the argument expression is not a
variable, shift the bounds to give unity lbounds.
(gfc_trans_arrayfunc_assign): Return NULL_TREE instead of NULL.
2026-03-15 Christopher Albert <albert@tugraz.at>
PR fortran/124482
* decl.cc (gfc_match_data_decl): Defer CLASS container cleanup
until after all failed components are unlinked. Check remaining
component list before freeing a shared container.
2026-03-13 Christopher Albert <albert@tugraz.at>
PR fortran/102459
* trans-openmp.cc (gfc_trans_omp_clauses): Choose the scalar
reference path from the full expression rank rather than the first
array reference.
(gfc_trans_omp_depobj): Likewise.
2026-03-12 Christopher Albert <albert@tugraz.at>
PR fortran/102596
* trans-openmp.cc (gfc_omp_clause_default_ctor): Only require an
outer reference when the constructor path actually uses it.
2026-03-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Gilles Gouaillardet <gilles.gouaillardet@gmail.com>
PR fortran/121743
* trans-decl.cc (build_function_decl): Adjust the
gcc_assert condition to avoid the ICE.
2026-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/115316
* match.cc (spec_list_type): A version of gfc_spec_list_type,
which returns true if any of the LEN parameters are deferred.
(gfc_match_allocate): Use it to set saw_deferred if any of the
parameters of the allocate object are deferred.
2026-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/122696
* resolve.cc (resolve_assoc_var): A generic function selector
must be resolved to a specific function before doing anything
more with the associate name.
2026-03-12 Jakub Jelinek <jakub@redhat.com>
PR fortran/124450
* trans-io.cc (transfer_expr): If code is NULL, call
transfer_array_component with NULL where argument rather than
&code->loc.
2026-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/97818
* trans-decl.cc (gfc_trans_deferred_vars): Make sure that the
result symbol is referenced before allocating parameterized
components.
2026-03-12 Christopher Albert <albert@tugraz.at>
PR fortran/82721
* decl.cc (discard_pending_charlen): New helper.
(build_sym): Discard unattached CHARACTER length nodes when
gfc_add_type rejects the declaration.
2026-03-12 Christopher Albert <albert@tugraz.at>
PR fortran/106946
* decl.cc (gfc_match_data_decl): Remove CLASS components added by a
failed declaration in a derived type, and guard symtree deletion.
* gfortran.h (gfc_free_component, gfc_delete_symtree): Declare.
* symbol.cc (gfc_free_component): New function.
(free_components): Use it.
(gfc_delete_symtree): Make non-static.
2026-03-12 Christopher Albert <albert@tugraz.at>
PR fortran/110877
* trans-expr.cc (gfc_trans_assignment_1): Recover the class
vptr for scalarized elements of nonpointer dummy arrays.
2026-03-11 Christopher Albert <albert@tugraz.at>
PR fortran/95338
* trans-types.cc (gfc_get_entry_result_type): New helper to use the
ABI return type for mixed ENTRY union fields.
(gfc_get_mixed_entry_union): Use it for each entry result field.
2026-03-09 Jonathan Wakely <jwakely@redhat.com>
PR translation/124422
* primary.cc (gfc_match_varspec): Fix spelling in diagnostic.
2026-03-09 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/121043
* coarray.cc (check_add_new_component): Evaluate all functions
on the source image.
* trans-decl.cc (gfc_build_builtin_function_decls): The only
argument of team_number() is of type void* in the library ABI.
2026-03-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/122902
* expr.cc (has_parameterized_comps): Moved from trans-array.cc.
* gfortran.h : Add prototype for has_parameterized_comps.
* trans-array.cc : Move has_parameterized_comps to expr.cc.
* trans-expr.cc (gfc_trans_scalar_assign): Don't deep copy PDTs
unless they have parameterized components.
2026-02-27 Harald Anlauf <anlauf@gmx.de>
PR fortran/78187
* trans-decl.cc (gfc_trans_deferred_vars): An initialization block
shall be generated for deferred-length character results even
when -fno-automatic is given.
2026-02-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/88076
* invoke.texi: Use corrected english.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
* trans-intrinsic.cc (conv_caf_send_to_remote): Fix treating constant
char arrays when used in coarray sends.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/121360
* resolve.cc: Introduce temporary holding rhs when lhs is a
coarray expresssion.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
* invoke.texi: Document new environment variable GFORTRAN_IMAGE_
RESTARTS_LIMIT.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/88076
* invoke.texi: Add description for use.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
* trans-expr.cc (get_scalar_to_descriptor_type): Fix coarray
generation.
(copy_coarray_desc_part): New function to copy coarray dimensions.
(gfc_class_array_data_assign): Use the new function.
(gfc_conv_derived_to_class): Same.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
* check.cc (gfc_check_image_status): Fix argument index of team=
argument for correct error message.
* trans-intrinsic.cc (conv_intrinsic_image_status): Team=
argument is optional and is a pointer to the team handle.
* trans-stmt.cc (gfc_trans_sync): Make images argument also a
dereferencable pointer. But treat errmsg as a pointer to a
char array like in all other functions.
2026-02-26 Andre Vehreschild <vehre@gcc.gnu.org>
* check.cc (gfc_check_failed_or_stopped_images): Support teams
argument and check for incorrect type.
2026-02-25 Christopher Albert <albert@tugraz.at>
PR fortran/124235
* trans-array.cc (generate_element_copy_wrapper): Use
cgraph_node::finalize_function with no_collect=true instead
of cgraph_node::add_new_function to avoid garbage collection
while caller frames hold unrooted tree nodes.
2026-02-25 Christopher Albert <albert@tugraz.at>
PR fortran/124208
* resolve.cc (gfc_max_forall_iterators_in_chain): Count
iterators in EXEC_BLOCK namespaces.
2026-02-23 Gonzalo Silvalde Blanco <gonzalo.silvalde@gmail.com>
PR fortran/80012
* symbol.cc (gfc_add_procedure): Split error into gfc_error and
inform using auto_diagnostic_group.
2026-02-23 Paul-Antoine Arras <parras@baylibre.com>
PR fortran/120505
* trans-openmp.cc (gfc_map_array_descriptor): New function.
(gfc_trans_omp_clauses): Emit map clauses for intermediate array
descriptors.
2026-02-23 Christopher Albert <albert@tugraz.at>
PR fortran/123949
* trans-array.cc (structure_alloc_comps): Add missing
gfc_init_se call in case ALLOCATE_PDT_COMP for scalar
component default initializer.
2026-02-21 Harald Anlauf <anlauf@gmx.de>
Revert:
2026-02-20 Gonzalo Silvalde Blanco <gonzalo.silvalde@gmail.com>
PR fortran/80012
* symbol.cc (gfc_add_procedure): Split error into gfc_error and
inform using auto_diagnostic_group.
2026-02-20 Gonzalo Silvalde Blanco <gonzalo.silvalde@gmail.com>
PR fortran/80012
* symbol.cc (gfc_add_procedure): Split error into gfc_error and
inform using auto_diagnostic_group.
2026-02-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/123949
* decl.cc (gfc_get_pdt_instance): Use full integer string encoding
for PDT instance naming rather than 32-bit extraction, which caused
ICEs for valid large KIND values.
2026-02-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/122491
* decl.cc (gfc_match_end): Do not free current BLOCK namespace
during malformed END cleanup.
2026-02-18 Tobias Burnus <tburnus@baylibre.com>
* symbol.cc (gfc_check_conflict): Reject mixing OpenMP threadprivate
with groupprivate.
* trans-common.cc (build_common_decl): Remove warning when mixing
threadprivate with groupprivate.
* trans-decl.cc (add_attributes_to_decl): Likewise.
2026-02-15 Paul Thomas <pault@gcc.gnu.org>
PR fortran/108663
* decl.cc (gfc_get_pdt_instance): Use PDT_PREFIX and
PDT_PREFIX_LEN.
* gfortran.h : Define PDT_PREFIX and PDT_PREFIX_LEN. Note that
PDT_PREFIX must have at least two upper case letters.
* module.cc (read_module): Use PDT_PREFIX and PDT_PREFIX_LEN.
* resolve.cc (resolve_typebound_procedure): Both pdt_template
and pdt_type resolve_bindings_derived dummies should be tested
for LEN type parameters being assumed.
* symbol.cc (gfc_pdt_is_instance_of): Update preceding comment
and use PDT_PREFIX_LEN.
2026-02-14 Christopher Albert <albert@tugraz.at>
Harald Anlauf <anlauf@gcc.gnu.org>
PR fortran/123943
* resolve.cc (gfc_max_forall_iterators_in_chain): New helper
function for factorization of iterator-depth counting.
(gfc_count_forall_iterators): Use it.
2026-02-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/99250
* check.cc (gfc_check_coshape): New function.
* gfortran.h: Add GFC_ISYM_COSHAPE to gfc_isym_id.
* intrinsic.cc (add_functions): Add the coshape prototype and
its 'make_generic'.
* intrinsic.h: Add prototypes for gfc_check_coshape and
gfc_resolve_coshape.
* intrinsic.texi : Add entries for coshape.
* iresolve.cc (gfc_resolve_coshape): New function.
* trans-array.cc (gfc_conv_ss_startstride): Add 'case
GFC_ISYM_COSHAPE' in two places.
* trans-intrinsic.cc (conv_intrinsic_cobound): Modify assert in
scalarized section for lbound. Set bound to zero for scalar
case of coshape. Keep the lbound and use it together with the
scalarized ubound to obtain the coshape.
(gfc_conv_intrinsic_function, gfc_add_intrinsic_ss_code and
gfc_walk_intrinsic_function): Add 'case GFC_ISYM_COSHAPE' as
appropriate.
2026-02-08 Harald Anlauf <anlauf@gmx.de>
PR fortran/85547
* decl.cc (gfc_match_volatile): Fix frontend memleak.
(gfc_match_asynchronous): Likewise.
* dump-parse-tree.cc (show_expr): Show type-spec for character
array constructor when given.
* simplify.cc (gfc_simplify_len): Simplify LEN() when type-spec
is provided for character array constructor.
* trans-intrinsic.cc (gfc_conv_intrinsic_len): Likewise.
2026-02-08 Harald Anlauf <anlauf@gmx.de>
PR fortran/123961
* check.cc (array_check): Extend check to class array functions.
* class.cc (gfc_add_class_array_ref): Fix NULL pointer dereference.
2026-02-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/123545
PR fortran/123673
* decl.cc (gfc_get_pdt_instance): If a pdt_type component is
allocatable or has allocatable components, mark it alloc_comp.
(gfc_match_decl_type_spec): Sometimes in compiling contained
functions, the symtree for the constructor points to the type
instead of the constructor symbol. This corrects itself later
in compilation so return MATCH_YES.
* trans-decl.cc (gfc_generate_function_code): Unconditionally
nullify allocatable components as well as applying the default
initializer.
* trans-expr.cc (gfc_trans_alloc_subarray_assign): Restrict the
freeing of the destination data to non-allocatable expressions
and, instead, add the se finalblock to the encompassing final_
block.
2026-02-06 Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
PR middle-end/123892
* gfortran.h: Replace CONST_CAST with const_cast<>.
* module.cc: Likewise.
* openmp.cc: Likewise.
* options.cc: Likewise.
* parse.cc: Likewise.
* scanner.cc: Likewise.
* st.cc: Likewise.
* trans-intrinsic.cc: Likewise.
2026-02-04 Harald Anlauf <anlauf@gmx.de>
PR fortran/123941
* intrinsic.texi: SPLIT is a subroutine, not a function.
Improve documentation of its arguments.
2026-02-03 Kirill Chilikin <chilikin.k@gmail.com>
PR fortran/117303
* trans-intrinsic.cc (conv_isocbinding_function):
Assign the reference returned by C_FUNLOC to a variable.
2026-02-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/123952
* symbol.cc (gfc_copy_dummy_sym): Ensure that external, array
valued destination symbols have the correct interface so that
conflicts do not arise when adding attributes.
2026-01-31 Paul Thomas <pault@gcc.gnu.org>
* array.cc (resolve_array_list): Use macro IS_PDT.
* gfortran.h : Supply macros IS_PDT and IS_CLASS_PDT.
* match.cc (gfc_match_type_is): Use IS_PDT and IS_CLASS_PDT as
appropriate.
* resolve.cc (gfc_resolve_ref, build_init_assign,
resolve_component): Likewise.
* trans-array.cc (gfc_trans_array_constructor_value,
trans_array_constructor, structure_alloc_comps,
has_parameterized_comps): Likewise.
* trans-decl.cc (gfc_get_symbol_decl, gfc_init_default_dt,
gfc_trans_deferred_vars, gfc_generate_function_code): Likewise.
* trans-expr.cc (conv_dummy_value, gfc_conv_structure,
gfc_trans_assignment_1): Likewise.
* trans-stmt.cc (trans_associate_var, gfc_trans_allocate,
gfc_trans_deallocate): Likewise.
2026-01-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/123868
* trans-array.cc (structure_alloc_comps): For COPY_ALLOC_COMP,
remove the add_when_allocated != NULL_TREE clause that PR121628
added. This clause was redundant for scalars and caused double
allocation for arrays with nested allocatable components.
2026-01-27 Tobias Burnus <tburnus@baylibre.com>
* openmp.cc (resolve_omp_clauses): Reject groupprivate/device-local
variables in MAP clauses.
2026-01-27 Wilco Dijkstra <wilco.dijkstra@arm.com>
PR fortran/118955
* decl.cc (gfc_match_gcc_builtin): Add 'fastmath' option which
checks for fast-math before accepting a vector function.
* gfortran.texi (!GCC$ builtin): Update documentation.
2026-01-25 Sandra Loosemore <sloosemore@baylibre.com>
* lang.opt.urls: Regenerated.
2026-01-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/123772
* trans.cc: Add global variable is_assign_call.
(gfc_finalize_tree_expr): Derived type function results
with components that have defined assignements are
handled in resolve.cc(generate_component_assignments), unless
the assignment was replaced by a subroutine call to the
subroutine associated with the assignment operator.
(trans_code): In the case of EXEC_ASSIGN_CALL, set the
is_asign_call before calling gfc_trans_call, then clear it
after.
2026-01-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/123375
* decl.cc (gfc_match_import): Check that imported entity within
a interface is not from local scope.
2026-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/122957
* invoke.texi: Add note that these features are incompatible
with user defined derived type I/O. (DTIO)
2026-01-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/109512
* resolve.cc (resolve_function): Check if an external
attribute is required on a call to an external procedure.
(resolve_call): Likewise.
2026-01-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/112460
* array.cc (resolve_array_list): Stash the first PDT element
and check its type specification parameters against those of
subsequent elements.
* expr.cc (get_parm_list_from_expr): New function to extract the
type spec lists from expressions to be compared.
(gfc_check_type_spec_parms): New function to compare type spec
lists between two expressions. Emit an error if any constant
values are different.
(gfc_check_assign): Check that the PDT type specification parms
are the same on lhs and rhs.
* gfortran.h : Add prototype for gfc_check_type_spec_parms.
* trans-expr.cc (copyable_array_p): PDT arrays are not copyable
2026-01-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91960
* resolve.cc (resolve_fl_parameter): Check the righthand symbol
is a constant expression.
2026-01-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/123483
* trans-array.cc (gfc_deallocate_alloc_comp): Ad the new
finalization argument and pass it to structure_alloc_comps.
* trans-array.h (gfc_deallocate_alloc_comp): Add a finalization
flag that can be passed by gfc_conv_procedure_call.
* trans-expr.cc (gfc_conv_procedure_call): Use the new
finalization flag.
2026-01-08 Steve Kargl <kargl@gcc.gnu.org>
PR fortran/123321
* trans-io.cc (transfer_namelist_element): Adjust the
conditions determining when to use the local name or
the var name to build the object name.
2026-01-08 Steve Kargl <kargl@gcc.gnu.org>
PR fortran/123012
* trans-io.cc (transfer_namelist_element): Adjust the
conditions determining when to use the local name or
the var name to build the object name.
2026-01-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/123071
PR fortran/90218
* resolve.cc (resolve_typebound_function): If a generic
typebound procedure is marked as overridable and all the
specific procedures are non-overridable, it is safe to resolve
the compcall.
* trans-array.cc (gfc_trans_array_constructor_value): PDT
structure constructor elements must be finalized.
(trans_array_constructor): Set 'finalize_required' for PDT
constructors.
* trans-decl.cc (gfc_get_symbol_decl): PDT initialization is
required in contained namespaces as long as the parent is not
a module.
(gfc_init_default_pdt): Delete the stmtblock_t argument. Assign
a variable 'value' expression using gfc_trans_assignment.
Simplifiy the logic around the call to gfc_init_default_dt. In
both cases return a tree expression or null tree.
(gfc_trans_deferred_vars): Only call gfc_allocate_pdt_comp if
gfc_init_default_pdt returns null tree.
* trans-expr.cc (gfc_trans_alloc_subarray_assign): Add a static
stmtblock_t pointer 'final_block'. Free 'dest' data pointer and
add to final_block.
(gfc_conv_structure): Set 'final_block' to the se's finalblock.
(gfc_trans_assignment_1): Do not deallocate PDT array ctrs.
trans-stmt.cc (gfc_trans_allocate): Also deallocate PDT expr3
allocatable components.
(gfc_trans_deallocate): Add PDT deallocation to se.pre instead
of block.
* trans-stmt.cc (gfc_trans_allocate): Free the allocatable
components of a PDT expr3.
(gfc_trans_deallocate): Add 'tmp' to se.pre rather than block.
2026-01-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/123029
* io.cc (check_open_constraints): Delete erroneous check.
2026-01-06 Thomas Koenig <tkoenig@gcc.gnu.org>
* libgfortran.h: Add enum for new LIBERROR_RECURSIVE_IO.
2026-01-06 supers1ngular <supers1ngular@baylibre.com>
* openmp.cc (gfc_match_omp_clauses): New diagnostic logic.
2026-01-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/123071
* resolve.cc (resolve_typebound_function): Make sure that the
class declared type is resolved.
(resolve_allocate_deallocate): Any kind of expr3 array ref will
need resolution not just constant size refs.
* trans-decl.cc (gfc_trans_deferred_vars): Exclude vtabs from
initialization.
(emit_not_set_warning): New function using code extracted from
gfc_generate_function_code.
(gfc_generate_function_code): PDT module procedures results
that have not been referenced must have the fake_result_decl
added to the symbol and emit_not_set_warning called. Likewise
replace explicit code with call to emit_not_set_warning.
2026-01-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/123352
* gfortran.h: Add prototype for gfc_resolve_symbol.
* interface.cc (matching_typebound_op): If the current
namespace has not been resolved and the derived type is use
associated, resolve the derived type with gfc_resolve_symbol.
* match.cc (match_association_list): If the associate name is
unknown type and the selector is an operator expression, copy
the selector and call gfc_extend_expr. Replace the selector if
there is a match, otherwise free the copy.
* resolve.cc (gfc_resolve_symbol): New function.
2026-01-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Revert:
2026-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/119136
* libgfortran.h: Add enum for new LIBERROR_RECURSIVE_IO.
2026-01-02 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/101399
* io.cc (match_io): If the -Wtabs option is used, then Issue a
warning for a <tab> character following a 'print' statement;
otherwise ignore the <tab>.
2026-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/119136
* libgfortran.h: Add enum for new LIBERROR_RECURSIVE_IO.
2026-01-01 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) 2026 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.