* trans-array.c (constant_array_constructor_p): New function to determine whether an array constructor consists only of constant elements, and if so return it's size. (gfc_build_constant_array_constructor): Construct a statically initialized gfortran array for a given EXPR_ARRAY. (gfc_trans_constant_array_constructor): Efficiently scalarize a constant array constructor. (gfc_trans_array_constructor): Tidy up use of CONST_STRING. Special case scalarization of constant array constructors, all of whose elements are specified, using constant_array_constructor_p and gfc_trans_constant_array_constructor. (gfc_conv_scalarized_array_ref): Check whetger info->offset is zero before adding it to index, to avoid creating a NON_LVALUE_EXPR. * gfortran.dg/array_constructor_14.f90: New test case. * gfortran.dg/vect/vect-5.f90: Update test for improved alignment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120584 138bc75d-0d04-0410-961f-82ee72b054a4
Showing
- gcc/fortran/ChangeLog 16 additions, 0 deletionsgcc/fortran/ChangeLog
- gcc/fortran/trans-array.c 136 additions, 7 deletionsgcc/fortran/trans-array.c
- gcc/testsuite/ChangeLog 5 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gfortran.dg/array_constructor_14.f90 15 additions, 0 deletionsgcc/testsuite/gfortran.dg/array_constructor_14.f90
- gcc/testsuite/gfortran.dg/vect/vect-5.f90 1 addition, 1 deletiongcc/testsuite/gfortran.dg/vect/vect-5.f90
Loading
Please register or sign in to comment