2010-10-26 Tobias Burnus <burnus@net-b.de>
PR fortran/45451
* trans-stmt.c (gfc_trans_allocate): Do a deep-copy for SOURCE=.
PR fortran/43018
* trans-array.c (duplicate_allocatable): Use size of type and not
the size of the pointer to the type.
2010-10-26 Tobias Burnus <burnus@net-b.de>
PR fortran/45451
* gfortran.dg/class_allocate_5.f90: New.
From-SVN: r165936
2010-09-21 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/45648
* trans-array.c (gfc_conv_expr_descriptor): Calculate dim out of n and
info->dim.
PR fortran/45648
* trans-array.c (gfc_conv_expr_descriptor): Unset full if we are
accessing dimensions in reversed order.
PR fortran/45648
* trans-array.c (gfc_conv_expr_descriptor): Special case noncopying
intrinsic function call.
* trans-array.c (gfc_conv_expr_descriptor): Remove ss lookup.
Update asserts accordingly.
PR fortran/45648
* trans.h (gfc_se): New field force_tmp.
* trans-expr.c (gfc_conv_procedure_call): Check for argument alias
and set parmse.force_tmp if some alias is found.
* trans-array.c (gfc_conv_expr_descriptor): Force a temporary creation
if se->force_tmp is set.
2010-09-21 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/45648
* gfortran.dg/inline_transpose_1.f90: Update temporary's locations
and counts. Add non-elemental function call check.
PR fortran/45648
* gfortran.dg/inline_transpose_1.f90: Add function calls with aliasing
arguments checks. Update temporary counts.
* gfortran.dg/transpose_optimization_1.f90: New.
From-SVN: r164494
2010-09-10 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_conv_loop_setup): Access the shape along the
real array dimension instead of the scalarizer (loop) dimension.
From-SVN: r164162
2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_get_array_ref_dim): New function.
(gfc_trans_create_temp_array): Reconstruct array
bounds from loop bounds. Use array bounds instead of loop bounds.
From-SVN: r164112
2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_set_loop_bounds_from_array_spec):
Get the array dimension from the dim array.
From-SVN: r164109
2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_trans_preloop_setup): Unconditionally use the
dim array to get the stride in the innermost loop.
From-SVN: r164103
2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_trans_create_temp_array): Don't set dim array.
(gfc_conv_loop_setup, gfc_walk_function_expr): Set dim array.
* trans-intrinsic.c (gfc_walk_intrinsic_libfunc): Ditto.
From-SVN: r164094
2010-09-09 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_trans_create_temp_array): Assert loop dimension
and info dimension are the same. Loop over loop dimension.
* trans-stmt.c (gfc_conv_elemental_dependencies): Set loop dimension
Co-Authored-By: Janus Weil <janus@gcc.gnu.org>
From-SVN: r164090
2010-08-19 Daniel Kraft <d@domob.eu>
PR fortran/29785
PR fortran/45016
* trans.h (struct gfc_se): New flag `byref_noassign'.
* trans-array.h (gfc_conv_shift_descriptor_lbound): New method.
(gfc_conv_array_extent_dim), (gfc_conv_descriptor_size): New methods.
* expr.c (gfc_check_pointer_assign): Allow bounds and rank remapping
and check for compile-time errors with those.
* trans-decl.c (trans_associate_var): Use new routine
`gfc_conv_shift_descriptor_lbound' instead of doing it manually.
* trans-array.c (gfc_conv_shift_descriptor_lbound): New method.
(gfc_conv_array_extent_dim), (gfc_conv_descriptor_size): New methods.
(gfc_array_init_size): Use new `gfc_conv_array_extent_dim'.
(gfc_conv_expr_descriptor): Handle new flag `byref_noassign'.
* trans-expr.c (gfc_trans_pointer_assignment): Handle bounds and
rank remapping for assignment.
2010-08-19 Daniel Kraft <d@domob.eu>
PR fortran/29785
PR fortran/45016
* gfortran.dg/pointer_assign_5.f90: Remove 'not implemented' error.
* gfortran.dg/pointer_remapping_1.f90: New test.
* gfortran.dg/pointer_remapping_2.f03: New test.
* gfortran.dg/pointer_remapping_3.f08: New test.
* gfortran.dg/pointer_remapping_4.f03: New test.
* gfortran.dg/pointer_remapping_5.f08: New test.
* gfortran.dg/pointer_remapping_6.f08: New test.
From-SVN: r163377
2009-07-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24524
* trans-array.c (gfc_init_loopinfo): Initialize the reverse
field.
gfc_trans_scalarized_loop_end: If reverse set in dimension n,
reverse the scalarization loop.
gfc_conv_resolve_dependencies: Pass the reverse field of the
loopinfo to gfc_dep_resolver.
trans-expr.c (gfc_trans_assignment_1): Enable loop reversal for
assignment by resetting loop.reverse.
gfortran.h : Add the gfc_reverse enum.
trans.h : Add the reverse field to gfc_loopinfo.
dependency.c (gfc_check_dependency): Pass null to the new arg
of gfc_dep_resolver.
(gfc_check_section_vs_section): Check for reverse dependencies.
(gfc_dep_resolver): Add reverse argument and deal with the loop
reversal logic.
dependency.h : Modify prototype for gfc_dep_resolver to include
gfc_reverse *.
From-SVN: r162462
2010-07-17 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_free_ss): Don't free beyond ss rank.
Access subscript through the "dim" field index.
(gfc_trans_create_temp_array): Access ss info through the "dim" field
index.
(gfc_conv_array_index_offset): Ditto.
(gfc_conv_loop_setup): Ditto.
(gfc_conv_expr_descriptor): Ditto.
(gfc_conv_ss_startstride): Ditto. Update call to
gfc_conv_section_startstride.
(gfc_conv_section_startstride): Set values along the array dimension.
Get array dimension directly from the argument.
From-SVN: r162276
2010-07-15 Daniel Kraft <d@domob.eu>
PR fortran/44709
* trans.h (struct gfc_wrapped_block): New struct.
(gfc_start_wrapped_block), (gfc_add_init_cleanup): New methods.
(gfc_finish_wrapped_block): New method.
(gfc_init_default_dt): Add new init code to block rather than
returning it.
* trans-array.h (gfc_trans_auto_array_allocation): Use gfc_wrapped_block
(gfc_trans_dummy_array_bias): Ditto.
(gfc_trans_g77_array): Ditto.
(gfc_trans_deferred_array): Ditto.
* trans.c (gfc_add_expr_to_block): Call add_expr_to_chain.
(add_expr_to_chain): New method based on old gfc_add_expr_to_block.
(gfc_start_wrapped_block), (gfc_add_init_cleanup): New methods.
(gfc_finish_wrapped_block): New method.
* trans-array.c (gfc_trans_auto_array_allocation): use gfc_wrapped_block
(gfc_trans_g77_array), (gfc_trans_dummy_array_bias): Ditto.
(gfc_trans_deferred_array): Ditto.
* trans-decl.c (gfc_trans_dummy_character): Ditto.
(gfc_trans_auto_character_variable), (gfc_trans_assign_aux_var): Ditto.
(init_intent_out_dt): Ditto.
(gfc_init_default_dt): Add new init code to block rather than
returning it.
(gfc_trans_deferred_vars): Use gfc_wrapped_block to collect all init
and cleanup code and put it all together.
From-SVN: r162219
2010-07-14 Mikael Morin <mikael@gcc.gnu.org>
* trans-array.c (gfc_conv_section_upper_bound): Remove
(gfc_conv_section_startstride): Don't set the upper bound in the
vector subscript case.
(gfc_conv_loop_setup): Don't use gfc_conv_section_upper_bound
From-SVN: r162191
2010-06-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43895
* trans-array.c (structure_alloc_comps): Dereference scalar
'decl' if it is a REFERENCE_TYPE. Tidy expressions containing
TREE_TYPE (decl).
2010-06-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43895
* gfortran.dg/alloc_comp_class_1.f90 : New test.
From-SVN: r160326
2010-05-21 Tobias Burnus <burnus@net-b.de>
* gfortran.h: Do not include system.h.
* bbt.c: Include system.h.
* data.c: Ditto.
* dependency.c: Ditto.
* dump-parse-tree.c: Ditto.
* arith.h: Do not include gfortran.h.
* constructor.h: Do not include gfortran.h and splay-tree.h.
* match.h: Do not include gfortran.h.
* parse.h: Ditto.
* target-memory.h: Ditto.
* openmp.c: Do not include toplev.h and target.h.
* trans-stmt.c: Ditto not include toplev.h.
* primary.c: Ditto.
* trans-common.c: Tell why toplev.h is needed. And
do not include target.h.
* trans-expr.c: Tell why toplev.h is needed.
* trans-array.c: Ditto.
* trans-openmp.c: Ditto.
* trans-const.c: Ditto.
* trans.c: Ditto.
* trans-types.c: Ditto.
* trans-io.c: Ditto.
* trans-decl.c: Ditto.
* scanner.c: Ditto.
* convert.c: Ditto.
* trans-intrinsic.c: Ditto.
* options.c: Ditto.
From-SVN: r159763
* trans-expr.c: Do not include convert.h, ggc.h, real.h, and gimple.h.
(gfc_conv_string_tmp): Do not assert type comparibilty.
* trans-array.c: Do not include gimple.h, ggc.h, and real.h.
(gfc_conv_expr_descriptor): Remove assert.
* trans-common.c: Clarify why rtl.h and tm.h are included.
* trans-openmp.c: Do not include ggc.h and real.h.
Explain why gimple.h is included.
* trans-const.c: Do not include ggc.h.
* trans-stmt.c: Do not include gimple.h, ggc.h, and real.h.
* trans.c: Do not include ggc.h and real.h.
Explain why gimple.h is included.
* trans-types.c: Do not include tm.h. Explain why langhooks.h
and dwarf2out.h are included.
* trans-io.c: Do not include gimple.h and real.h.
* trans-decl.c: Explain why gimple.h, tm.h, and rtl.h are included.
* trans-intrinsic.c: Do not include gimple.h. Explain why tm.h
is included.
From-SVN: r159640
gcc/fortran/:
2010-05-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/42360
* gfortran.h (gfc_has_default_initializer): New.
* expr.c (gfc_has_default_initializer): New.
* resolve.c (has_default_initializer): Removed, use
gfc_has_default_initializer() instead. Updated all callers.
* trans-array.c (has_default_initializer): Removed, use
gfc_has_default_initializer() instead. Updated all callers.
* trans-decl.c (generate_local_decl): Do not check the
first component only to check for initializers, but use
gfc_has_default_initializer() instead.
gcc/testsuite/:
2010-05-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/42360
* gfortran.dg/warn_intent_out_not_set.f90: New.
From-SVN: r159562
gcc/fortran/:
2010-05-05 Daniel Franke <franke.daniel@gmail.com>
PR fortran/24978
* gfortran.h: Removed repeat count from constructor, removed
all usages.
* data.h (gfc_assign_data_value_range): Changed return value from
void to gfc_try.
* data.c (gfc_assign_data_value): Add location to constructor element.
(gfc_assign_data_value_range): Call gfc_assign_data_value()
for each element in range. Return early if an error was generated.
* resolve.c (check_data_variable): Stop early if range assignment
generated an error.
gcc/testsuite/:
2010-05-05 Daniel Franke <franke.daniel@gmail.com>
PR fortran/24978
* gfortran.dg/data_invalid.f90: New.
From-SVN: r159076
2010-04-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/30073
PR fortran/43793
* trans-array.c (gfc_trans_array_bound_check): Use TREE_CODE instead
of mucking with a tree directly.
2010-04-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/30073
PR fortran/43793
gfortran.dg/pr43793.f90: New test.
From-SVN: r158692
2010-04-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43841
PR fortran/43843
* trans-expr.c (gfc_conv_expr): Supply an address expression for
GFC_SS_REFERENCE.
(gfc_conv_expr_reference): Call gfc_conv_expr and return for
GFC_SS_REFERENCE.
* trans-array.c (gfc_add_loop_ss_code): Store the value rather
than the address of a GFC_SS_REFERENCE.
* trans.h : Change comment on GFC_SS_REFERENCE.
2010-04-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43841
PR fortran/43843
* gfortran.dg/elemental_scalar_args_1.f90 : New test.
From-SVN: r158683
2010-04-22 Richard Guenther <rguenther@suse.de>
PR fortran/43829
* resolve.c (gfc_resolve_index): Wrap around ...
(gfc_resolve_index_1): ... this. Add parameter to allow
any integer kind index type.
(resolve_array_ref): Allow any integer kind for the start
index of an array ref.
* gfortran.dg/vector_subscript_6.f90: New testcase.
* gfortran.dg/assign_10.f90: Adjust.
From-SVN: r158632
2010-04-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/31538
* gfortran.dg/bounds_check_fail_4.f90: Adjust error message.
* gfortran.dg/bounds_check_fail_3.f90: Ditto.
2010-04-17 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/31538
* fortran/trans-array.c (gfc_conv_ss_startstride): Remove the use of
gfc_msg_bounds by using 'Array bound mismatch' directly.
(gfc_trans_dummy_array_bias): Remove the use of gfc_msg_bounds. Reword
error message to include the mismatch in the extent of array bound.
* fortran/trans.c: Remove gfc_msg_bounds. It is only used in one place.
* fortran/trans.h: Remove extern definition of gfc_msg_bounds.
From-SVN: r158474
PR fortran/30073
* trans-array.c (gfc_trans_array_bound_check): Eliminate a redundant
block of code. Set name to the variable associated with the descriptor.
From-SVN: r158392
2010-03-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43243
* trans-array.c (gfc_conv_array_parameter): Contiguous refs to
allocatable ultimate components do not need temporaries, whilst
ultimate pointer components do.
2010-03-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43243
* gfortran.dg/internal_pack_12.f90: New test.
From-SVN: r157199
2010-03-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43180
* trans-array.c (gfc_conv_array_parameter): A full array of
derived type need not be restricted to a symbol without an
array spec to use the call to gfc_conv_expr_descriptor.
PR fortran/43173
* trans-array.c (gfc_conv_array_parameter): Contiguous refs to
allocatable arrays do not need temporaries.
2010-03-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43180
* gfortran.dg/internal_pack_10.f90: New test.
PR fortran/43173
* gfortran.dg/internal_pack_11.f90: New test.
From-SVN: r157163
2010-02-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/36932
PR fortran/36933
PR fortran/43072
PR fortran/43111
* dependency.c (gfc_check_argument_var_dependency): Use enum
value instead of arithmetic vaue for 'elemental'.
(check_data_pointer_types): New function.
(gfc_check_dependency): Call check_data_pointer_types.
* trans-array.h : Change fourth argument of
gfc_conv_array_parameter to boolean.
* trans-array.c (gfc_conv_array_parameter): A contiguous array
can be a dummy but it must not be assumed shape or deferred.
Change fourth argument to boolean. Array constructor exprs will
always be contiguous and do not need packing and unpacking.
* trans-expr.c (gfc_conv_procedure_call): Clean up some white
space and change fourth argument of gfc_conv_array_parameter
to boolean.
(gfc_trans_arrayfunc_assign): Change fourth argument of
gfc_conv_array_parameter to boolean.
* trans-io.c (gfc_convert_array_to_string): The same.
* trans-intrinsic.c (gfc_conv_intrinsic_loc): The same.
2010-02-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/36932
PR fortran/36933
* gfortran.dg/dependency_26.f90: New test.
PR fortran/43072
* gfortran.dg/internal_pack_7.f90: New test.
PR fortran/43111
* gfortran.dg/internal_pack_8.f90: New test.
From-SVN: r156926
2010-02-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41113
PR fortran/41117
* trans-array.c (gfc_conv_array_parameter): Use
gfc_full_array_ref_p to detect full and contiguous variable
arrays. Full array components and contiguous arrays do not need
internal_pack and internal_unpack.
2010-02-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41113
PR fortran/41117
* gfortran.dg/internal_pack_6.f90: New test.
From-SVN: r156749
2010-01-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41478
* trans-array.c (duplicate_allocatable): Static version of
gfc_duplicate_allocatable with provision to handle scalar
components. New boolean argument to switch off call to malloc
if true.
(gfc_duplicate_allocatable): New function to call above with
new argument false.
(gfc_copy_allocatable_data): New function to call above with
new argument true.
(structure_alloc_comps): Do not apply indirect reference to
scalar pointers. Add new section to copy allocatable components
of arrays. Extend copying of allocatable components to include
scalars.
(gfc_copy_only_alloc_comp): New function to copy allocatable
component derived types, without allocating the base structure.
* trans-array.h : Add primitive for gfc_copy_allocatable_data.
Add primitive for gfc_copy_only_alloc_comp.
* trans-expr.c (gfc_conv_procedure_call): After calls to
transformational functions with results that are derived types
with allocatable components, copy the components in the result.
(gfc_trans_arrayfunc_assign): Deallocate allocatable components
of lhs derived types before allocation.
2010-01-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41478
* gfortran.dg/alloc_comp_scalar_1.f90: New test.
* gfortran.dg/alloc_comp_transformational_1.f90: New test.
From-SVN: r155877
2010-01-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/20923
PR fortran/32489
* trans-array.c (gfc_conv_array_initializer): Change call to
gfc_error_now to call to gfc_fatal_error.
* array.c (count_elements): Whitespace. (extract_element): Whitespace.
(is_constant_element): Changed name from constant_element.
(gfc_constant_ac): Only use expand_construuctor for expression
types of EXPR_ARRAY. If expression type is EXPR_CONSTANT, no need to
call gfc_is_constant_expr.
* expr.c (gfc_reduce_init_expr): Adjust conditionals and delete error
message.
* resolve.c (gfc_is_expandable_expr): New function that determiners if
array expressions should have their constructors expanded.
(gfc_resolve_expr): Use new function to determine whether or not to call
gfc_expand_constructor.
From-SVN: r155769