[Bug fortran/64952] Missing temporary in assignment from elemental function
ktkachov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 24 10:02:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64952
ktkachov at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ktkachov at gcc dot gnu.org
--- Comment #8 from ktkachov at gcc dot gnu.org ---
(In reply to Mikael Morin from comment #5)
> Author: mikael
> Date: Mon Mar 23 07:53:31 2015
> New Revision: 221586
>
> URL: https://gcc.gnu.org/viewcvs?rev=221586&root=gcc&view=rev
> Log:
> 2015-03-23 Paul Thomas <pault@gcc.gnu.org>
> Mikael Morin <mikael@gcc.gnu.org>
>
> PR fortran/64952
> fortran/
> * gfortran.h (struct symbol_attribute) : New field
> 'array_outer_dependency'.
> * trans.h (struct gfc_ss_info): New field 'array_outer_dependency'.
> * module.c (enum ab_attribute): New value AB_ARRAY_OUTER_DEPENDENCY.
> (attr_bits): Append same value to initializer.
> (mio_symbol_attribute): Handle 'array_outer_dependency' attr
> in module read and write.
> * resolve.c (update_current_proc_outer_array_dependency): New function.
> (resolve_function, resolve_call): Add code to update current procedure's
> 'array_outer_dependency' attribute.
> (resolve_variable): Mark current procedure with attribute
> array_outer_dependency if the variable is an array coming from outside
> the current namespace.
> (resolve_fl_procedure): Mark a procedure without body with attribute
> 'array_outer_dependency'.
> * trans-array.c (gfc_conv_resolve_dependencies): If any ss is
> marked as 'array_outer_dependency' generate a temporary.
> (gfc_walk_function_expr): If the function may reference external arrays,
> mark the head gfc_ss with flag 'array_outer_dependency'.
> testsuite/
> * gfortran.dg/elemental_dependency_4.f90: New.
> * gfortran.dg/elemental_dependency_5.f90: New.
>
>
> Added:
> trunk/gcc/testsuite/gfortran.dg/elemental_dependency_4.f90
> trunk/gcc/testsuite/gfortran.dg/elemental_dependency_5.f90
> Modified:
> trunk/gcc/fortran/ChangeLog
> trunk/gcc/fortran/gfortran.h
> trunk/gcc/fortran/module.c
> trunk/gcc/fortran/resolve.c
> trunk/gcc/fortran/trans-array.c
> trunk/gcc/fortran/trans.h
> trunk/gcc/testsuite/ChangeLog
With this commit I can no longer build 481.wrf for aarch64.
I get:
module_ra_rrtm.fppized.f90:4438:33:
DIMENSION H2OREF(59),CO2REF(59), ETAREF(10)
1
Error: Different shape for array assignment at (1) on dimension 1 (59 and 7)
Anything that can be done?
More information about the Gcc-bugs
mailing list