Mikael Morin
bcc4d4e089
trans.h (struct gfc_ss_info): New struct.
...
* trans.h (struct gfc_ss_info): New struct.
(gfc_get_ss_info): New macro.
(struct gfc_ss): Move type field to struct gfc_ss_info.
Add an info field of type gfc_ss_info.
* trans-array.c (free_ss_info): New function.
(gfc_free_ss): Call free_ss_info.
(gfc_get_array_ss, gfc_get_temp_ss, gfc_get_scalar_ss):
Allocate gfc_ss_info field.
(gfc_get_array_ss, gfc_get_temp_ss, gfc_get_scalar_ss,
gfc_set_vector_loop_bounds, gfc_add_loop_ss_code,
gfc_conv_array_index_offset, gfc_trans_preloop_setup,
gfc_trans_scalarized_loop_boundary, gfc_conv_section_startstride,
gfc_conv_ss_startstride, gfc_conv_resolve_dependencies,
gfc_conv_loop_setup, transposed_dims, gfc_conv_expr_descriptor,
gfc_walk_elemental_function_args): Update references to type.
* trans-const.c (gfc_conv_constant): Factor common reference chains
and update reference to type.
* trans-expr.c (gfc_conv_procedure_call, gfc_trans_assignment_1):
Update reference to type.
(gfc_conv_array_constructor_expr, gfc_conv_expr,
gfc_conv_expr_reference): Ditto. Factor common reference chains.
* trans-intrinsic.c (walk_inline_intrinsic_transpose): Update references
to type
* trans-stmt.c (gfc_trans_where_assign): Ditto.
From-SVN: r180867
2011-11-03 21:55:48 +00:00
Mikael Morin
08dcec6137
trans.h (struct gfc_ss, [...]): Move shape field from the former struct to the latter.
...
* trans.h (struct gfc_ss, struct gfc_array_info): Move shape field
from the former struct to the latter.
* trans-array.c (gfc_conv_ss_startstride, gfc_conv_loop_setup):
Update field references.
* trans-expr.c (gfc_trans_subarray_assign): Update field references
and factor common reference chains.
* trans-io.c (transfer_array_component): Ditto.
From-SVN: r180866
2011-11-03 21:47:49 +00:00
Mikael Morin
cb4b9eaebe
trans.h (struct gfc_array_info): Move dim and dimen fields...
...
* trans.h (struct gfc_array_info): Move dim and dimen fields...
(struct gfc_ss): ... here. Remove gfc_ss::data::temp::dimen field.
* trans-array.c (gfc_conv_loop_setup): Remove temp_ss dim array
initialization.
(gfc_get_temp_ss): Initialize dim and dimen.
(gfc_free_ss, gfc_get_array_ss, gfc_get_temp_ss,
gfc_set_loop_bounds_from_array_spec, get_array_ref_dim,
gfc_trans_create_temp_array, gfc_trans_constant_array_constructor,
gfc_set_vector_loop_bounds, gfc_conv_scalarized_array_ref,
gfc_trans_preloop_setup, gfc_conv_ss_startstride,
gfc_conv_resolve_dependencies, gfc_conv_loop_setup, transposed_dims,
gfc_conv_expr_descriptor, gfc_alloc_allocatable_for_assignment,
gfc_walk_array_ref): Update field references.
* trans-expr.c (gfc_conv_subref_array_arg, gfc_conv_procedure_call):
Ditto.
* trans-intrinsic.c (walk_inline_intrinsic_transpose): Ditto.
* trans-stmt.c (gfc_conv_elemental_dependencies): Ditto.
From-SVN: r180865
2011-11-03 21:44:56 +00:00
Mikael Morin
6d63e468a3
trans.h (struct gfc_ss_info, [...]): Rename the former to the latter.
...
* trans.h (struct gfc_ss_info, struct gfc_array_info):
Rename the former to the latter.
* trans-array.c (gfc_get_array_ss, gfc_trans_allocate_array_storage,
get_array_ref_dim, gfc_trans_create_temp_array,
gfc_trans_constant_array_constructor, gfc_set_vector_loop_bounds,
gfc_conv_array_index_offset, gfc_conv_scalarized_array_ref,
add_array_offset, gfc_trans_preloop_setup, gfc_conv_section_startstride,
gfc_conv_ss_startstride, gfc_conv_loop_setup, transposed_dims,
gfc_conv_expr_descriptor): Update all uses.
* trans-expr.c (gfc_conv_subref_array_arg, gfc_conv_procedure_call):
Ditto.
* trans-intrinsic.c (gfc_conv_intrinsic_transfer,
walk_inline_intrinsic_transpose): Ditto.
* trans-stmt.c (gfc_conv_elemental_dependencies,
gfc_trans_pointer_assign_need_temp): Ditto.
From-SVN: r180864
2011-11-03 21:39:11 +00:00
Mikael Morin
a7fb208d57
trans-array.c (dim_ok, [...]): Rename the former to the latter.
...
* trans-array.c (dim_ok, transposed_dims): Rename the former to the
latter. Change argument type. Invert return value.
(gfc_conv_expr_descriptor): Update calls.
From-SVN: r180862
2011-11-03 21:35:35 +00:00
Mikael Morin
820d5e68fb
trans-array.c (get_array_ref_dim): Change argument type and name.
...
* trans-array.c (get_array_ref_dim): Change argument type and name.
Obtain previous argument from the new argument in the body.
(gfc_trans_create_temp_arry, gfc_conv_loop_setup): Update calls.
From-SVN: r180861
2011-11-03 21:33:28 +00:00
Mikael Morin
43e7d60bc6
trans-array.c (gfc_set_vector_loop_bounds, [...]): Rename the former to the latter.
...
* trans-array.c (gfc_set_vector_loop_bounds, set_vector_loop_bounds):
Rename the former to the latter. Change type and name of argument.
Get previous argument from the new one.
(gfc_add_loop_ss_code): Update call.
From-SVN: r180860
2011-11-03 21:31:12 +00:00
Mikael Morin
f44d227711
trans-array.h (gfc_trans_create_temp_array): Replace info argument with ss argument.
...
* trans-array.h (gfc_trans_create_temp_array): Replace info argument
with ss argument.
* trans-array.c (gfc_trans_create_temp_array): Ditto. Get info from ss.
(gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
gfc_trans_create_temp_array.
* trans-expr.c (gfc_conv_procedure_call): Ditto.
* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ditto.
* trans-stmt.c (gfc_conv_elemental_dependencies): Ditto.
From-SVN: r180859
2011-11-03 21:28:26 +00:00
Mikael Morin
14bf3267a6
trans-array.c (gfc_trans_array_bound_check): Use ss argument to get name.
...
* trans-array.c (gfc_trans_array_bound_check): Use ss argument
to get name.
From-SVN: r180858
2011-11-03 21:24:24 +00:00
Mikael Morin
36e783e382
trans-array.c (gfc_trans_array_bound_check, [...]): Rename the former to the latter.
...
* trans-array.c (gfc_trans_array_bound_check,
trans_array_bound_check): Rename the former to the latter.
Replace descriptor argument with ss argument. Get descriptor from ss.
(gfc_conv_array_index_offset, conv_array_index_offset): Rename the
former to the latter. Update call to trans_array_bound_check.
Replace info argument with ss argument. Get info from ss.
(gfc_conv_scalarized_array_ref): Update call to conv_array_index_offset.
(add_array_offset): Ditto
From-SVN: r180857
2011-11-03 21:21:30 +00:00
Mikael Morin
a13d9afef7
trans-array.c (gfc_trans_constant_array_constructor, [...]): Rename the former to the latter.
...
* trans-array.c (gfc_trans_constant_array_constructor,
trans_constant_array_constructor): Rename the former to the latter.
Don't set the rank of the temporary for the loop. Remove then unused
loop argument.
(gfc_trans_array_constructor): Update call.
From-SVN: r180856
2011-11-03 21:19:27 +00:00
Mikael Morin
39abb03c4b
trans-array.c (gfc_trans_scalarizing_loops): Stop loop before end marker, not after it.
...
* trans-array.c (gfc_trans_scalarizing_loops): Stop loop before end
marker, not after it.
From-SVN: r180855
2011-11-03 21:16:54 +00:00
Mikael Morin
596a95799c
trans-array.c (gfc_conv_loop_setup): Also skip temporary arrays.
...
* trans-array.c (gfc_conv_loop_setup): Also skip temporary arrays.
From-SVN: r180853
2011-11-03 21:14:19 +00:00
Mikael Morin
ae9054ba25
trans-array.c (gfc_conv_ss_startstride): Access array bounds along array dimensions instead of loop dimensions.
...
* trans-array.c (gfc_conv_ss_startstride): Access array bounds along
array dimensions instead of loop dimensions.
From-SVN: r180852
2011-11-03 21:12:33 +00:00
Mikael Morin
1e633e4fe1
trans-array.c (gfc_trans_preloop_setup): Assertify one condition.
...
* trans-array.c (gfc_trans_preloop_setup): Assertify one condition.
From-SVN: r180851
2011-11-03 21:09:58 +00:00
Mikael Morin
a7c6141677
trans-array.c (gfc_walk_array_ref): Skip coarray dimensions.
...
* trans-array.c (gfc_walk_array_ref): Skip coarray dimensions.
From-SVN: r180850
2011-11-03 21:08:25 +00:00
Mikael Morin
37f1447217
trans-array.c (get_array_ref_dim): Remove redundant condition.
...
* trans-array.c (get_array_ref_dim): Remove redundant condition.
From-SVN: r180849
2011-11-03 21:03:56 +00:00
Mikael Morin
1190b61129
trans-array.c (gfc_trans_preloop_setup): Move common code...
...
* trans-array.c (gfc_trans_preloop_setup): Move common code...
(add_array_offset): ...into that new function.
From-SVN: r180848
2011-11-03 21:00:41 +00:00
Mikael Morin
e2b3e6bdd6
trans-array.c (gfc_trans_preloop_setup): Use loop's dimension instead of array's dimention.
...
* trans-array.c (gfc_trans_preloop_setup): Use loop's dimension instead
of array's dimention. Check that it is indeed the same.
From-SVN: r180847
2011-11-03 20:56:19 +00:00
Mikael Morin
4f9a70fa31
trans-array.c (gfc_trans_preloop_setup): Remove redundant assertion.
...
* trans-array.c (gfc_trans_preloop_setup): Remove redundant assertion.
Special case outermost loop.
From-SVN: r180846
2011-11-03 20:52:14 +00:00
Mikael Morin
7f6d568e74
trans-array.c (gfc_trans_preloop_setup): Factor loop index initialization.
...
* trans-array.c (gfc_trans_preloop_setup): Factor loop index
initialization.
From-SVN: r180844
2011-11-03 20:49:14 +00:00
Mikael Morin
bee1695c21
trans-array.c (gfc_trans_preloop_setup): Move code earlier.
...
* trans-array.c (gfc_trans_preloop_setup): Move code earlier.
From-SVN: r180843
2011-11-03 20:46:00 +00:00
Mikael Morin
1fb35a9015
trans-array.c (gfc_trans_preloop_setup): Move array reference initialisation earlier.
...
* trans-array.c (gfc_trans_preloop_setup): Move array reference
initialisation earlier. Factor subsequent array references.
From-SVN: r180842
2011-11-03 20:28:58 +00:00
Mikael Morin
6b81e94de1
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
...
PR fortran/50420
* trans-array.c (gfc_walk_array_ref): Allow zero rank arrays
if they are coarrays.
From-SVN: r180145
2011-10-18 14:55:48 +00:00
Mikael Morin
42ac5ee128
trans-array.h (gfc_walk_array_ref): New prototype.
...
* trans-array.h (gfc_walk_array_ref): New prototype.
* trans-array.c (gfc_walk_array_ref): New function, containing
all but the beginning of gfc_walk_variable_expr's code.
(gfc_walk_variable_expr): Use gfc_walk_array_ref.
From-SVN: r180144
2011-10-18 14:53:43 +00:00
Mikael Morin
700535b75f
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
...
PR fortran/50420
* trans-array.c (gfc_conv_expr_descriptor): Use loop.dimen instead of
ndim for the descriptor's rank.
From-SVN: r180143
2011-10-18 14:45:46 +00:00
Mikael Morin
a04b23d8a4
re PR fortran/50420 ([Coarray] lcobound doesn't accept coarray subcomponents)
...
PR fortran/50420
* trans-array.c (gfc_conv_expr_descriptor): Count codimensions starting
from zero, and add then the relevant offset (either ndim or loop.dimen)
depending on context.
From-SVN: r180142
2011-10-18 14:42:21 +00:00
Mikael Morin
7c5950bd7f
trans-array.c (gfc_conv_expr_descriptor): Save some horizontal space.
...
* trans-array.c (gfc_conv_expr_descriptor): Save some horizontal space.
From-SVN: r180141
2011-10-18 14:37:39 +00:00
Mikael Morin
c2558afc97
trans-array.c (gfc_conv_expr_descriptor): Move ndim initialization earlier.
...
* trans-array.c (gfc_conv_expr_descriptor): Move ndim initialization
earlier.
From-SVN: r180140
2011-10-18 14:32:03 +00:00
Michael Meissner
e79983f458
Convert standard builtin functions from being arrays to using a functional interface
...
From-SVN: r179820
2011-10-11 19:55:09 +00:00
Paul Thomas
30a390c810
re PR fortran/47844 (Array stride ignored for pointer-valued function results)
...
2011-10-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/47844
* trans-array.c (gfc_conv_array_index_offset): Use descriptor
stride for pointer function results.
2011-10-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/47844
* gfortran.dg/pointer_function_result_1.f90 : New test.
From-SVN: r179710
2011-10-08 10:18:51 +00:00
Mikael Morin
621babd8d0
trans-array.c (gfc_conv_expr_descriptor): Remove trailing whitespace.
...
* trans-array.c (gfc_conv_expr_descriptor): Remove trailing whitespace.
From-SVN: r179695
2011-10-07 20:56:31 +00:00
Mikael Morin
c2eb5b539f
trans-array.c (gfc_conv_ss_startstride): Merge two switch cases.
...
* trans-array.c (gfc_conv_ss_startstride): Merge two switch cases.
From-SVN: r179694
2011-10-07 20:35:47 +00:00
Mikael Morin
065c6f9de2
trans-array.c (gfc_conv_section_startstride): Remove coarray argument.
...
* trans-array.c (gfc_conv_section_startstride): Remove coarray argument.
Remove conditions on coarray.
(gfc_conv_ss_startstride): Update call to gfc_conv_section_startstride.
(gfc_conv_expr_descriptor): Ditto. Add assertions before the call.
From-SVN: r179693
2011-10-07 20:32:37 +00:00
Mikael Morin
6cb0246c1b
trans-array.c (gfc_conv_section_startstride): Remove coarray_last argument.
...
* trans-array.c (gfc_conv_section_startstride): Remove coarray_last
argument. Remove condition on coarray_last.
(gfc_conv_ss_startstride): Update call to gfc_conv_section_startstride.
(gfc_conv_expr_descriptor): Ditto.
From-SVN: r179692
2011-10-07 20:29:27 +00:00
Mikael Morin
d7baf64789
trans-array.c (gfc_walk_variable_expr): Remove scalar coarray handling.
...
* trans-array.c (gfc_walk_variable_expr): Remove scalar coarray
handling. Don't reset array ref's corank and codimensions' types
in the full array ref case. Update loop upper limit.
Remove DIMEN_THIS_IMAGE case. Remove unnecessary conditions.
From-SVN: r179691
2011-10-07 20:26:11 +00:00
Mikael Morin
677e2daebf
trans.h (gfc_ss_info): Remove codimen field.
...
* trans.h (gfc_ss_info): Remove codimen field.
* trans-array.c (gfc_get_array_ss): Don't set codimen field.
(gfc_trans_create_temp_array): Don't set descriptor's cobounds.
(gfc_trans_constant_array_constructor): Update loop upper limit.
(gfc_conv_ss_startstride): Don't set codimen field.
Don't get descriptor's cobounds.
(gfc_walk_variable_expr): Update dimension index.
* trans-intrinsic.c (trans_this_image, trans_image_index,
conv_intrinsic_cobound): Don't set codimen field
From-SVN: r179690
2011-10-07 20:22:50 +00:00
Mikael Morin
c6d741b85b
trans.h (gfc_loopinfo): Remove codimen field.
...
* trans.h (gfc_loopinfo): Remove codimen field.
* trans-array.c (gfc_set_vector_loop_bounds,
gfc_trans_scalarizing_loops, gfc_conv_loop_setup): Update loop upper
limit.
(gfc_set_loop_bounds_from_array_spec): Ditto. Remove skip on last
codimension.
(gfc_start_scalarized_body): Update loop lower limit.
(gfc_conv_ss_startstride): Don't set loop's codimen field.
(gfc_conv_loop_setup): Remove unnecessary condition.
(gfc_conv_expr_descriptor): Don't use loop's codimen field as corank.
From-SVN: r179689
2011-10-07 20:14:44 +00:00
Mikael Morin
8e50858e07
trans.h (gfc_ss): Remove data.temp.codimen field.
...
* trans.h (gfc_ss): Remove data.temp.codimen field.
* trans-array.c (gfc_conv_resolve_dependencies,
gfc_conv_expr_descriptor): Don't set temp's codimen field.
From-SVN: r179686
2011-10-07 20:05:35 +00:00
Mikael Morin
6bd0ce7b61
trans-array.c (gfc_conv_expr_descriptor): Add out-of-the-scalarizer cobounds evaluation.
...
* trans-array.c (gfc_conv_expr_descriptor): Add out-of-the-scalarizer
cobounds evaluation.
From-SVN: r179683
2011-10-07 19:47:07 +00:00
Mikael Morin
199c387dd1
trans-array.c (gfc_conv_ss_startstride): Support zero rank loop.
...
* trans-array.c (gfc_conv_ss_startstride): Support zero rank loop.
From-SVN: r179682
2011-10-07 19:43:21 +00:00
Mikael Morin
287b3dd2b2
trans-array.c (gfc_conv_section_startstride): Move code to evaluate_bound.
...
* trans-array.c (gfc_conv_section_startstride): Move code to
evaluate_bound. Use evaluate_bound.
(evaluate_bound): New function.
From-SVN: r179681
2011-10-07 19:39:22 +00:00
Mikael Morin
b0ac6998a7
trans-array.c (gfc_conv_section_startstride): Update assertion to also accept coarrays.
...
* trans-array.c (gfc_conv_section_startstride): Update assertion to
also accept coarrays.
From-SVN: r179680
2011-10-07 19:36:20 +00:00
Mikael Morin
3ca398580d
trans-array.c (gfc_conv_section_startstride): Factor common array ref references.
...
* trans-array.c (gfc_conv_section_startstride): Factor common
array ref references.
From-SVN: r179679
2011-10-07 19:33:10 +00:00
Mikael Morin
a7525708c6
trans-array.c (gfc_conv_expr_descriptor): Use codim instead of loop.codimen as argument to gfc_get_array_type_bounds.
...
* trans-array.c (gfc_conv_expr_descriptor): Use codim instead of
loop.codimen as argument to gfc_get_array_type_bounds.
From-SVN: r179677
2011-10-07 19:28:55 +00:00
Mikael Morin
23c3d0f972
trans-array.h (struct gfc_se): New flag want_coarray.
...
* trans-array.h (struct gfc_se): New flag want_coarray.
* trans-intrinsic.c (trans_this_image, trans_image_index,
conv_intrinsic_cobound): Set want_coarray.
* trans_array.c (gfc_conv_expr_descriptor): Evaluate codimension
earlier and without relying on the scalarizer.
From-SVN: r179676
2011-10-07 19:24:07 +00:00
Mikael Morin
bb033c9adc
trans-array.c (gfc_conv_expr_descriptor): Simplify coarray descriptor setup code.
...
* trans-array.c (gfc_conv_expr_descriptor): Simplify coarray
descriptor setup code.
From-SVN: r179674
2011-10-07 19:11:01 +00:00
Mikael Morin
e97b61c26e
trans-array.c (gfc_trans_constant_array_constructor): Remove superfluous initialisation of DIM field.
...
2011-09-08 Mikael Morin <mikael.morin@sfr.fr>
* trans-array.c (gfc_trans_constant_array_constructor): Remove
superfluous initialisation of DIM field.
(gfc_trans_array_constructor): Assert that DIMEN field is properly set.
(gfc_conv_expr_descriptor): Ditto.
* trans-expr.c (gfc_conv_procedure_call): Ditto.
From-SVN: r178698
2011-09-08 15:40:48 +00:00
Mikael Morin
26f7753013
trans-array.h (gfc_get_scalar_ss): New prototype.
...
2011-09-08 Mikael Morin <mikael.morin@sfr.fr>
* trans-array.h (gfc_get_scalar_ss): New prototype.
* trans-array.c (gfc_get_scalar_ss): New function.
(gfc_walk_variable_expr, gfc_walk_op_expr,
gfc_walk_elemental_function_args): Re-use gfc_get_scalar_ss.
* trans-expr.c (gfc_trans_subarray_assign): Ditto.
(gfc_trans_assignment_1): Ditto.
* trans-stmt.c (compute_inner_temp_size, gfc_trans_where_assign,
gfc_trans_where_3): Ditto.
From-SVN: r178697
2011-09-08 15:30:39 +00:00
Mikael Morin
a1ae4f435f
trans-array.h (gfc_get_temp_ss): New prototype.
...
2011-09-08 Mikael Morin <mikael.morin@sfr.fr>
* trans-array.h (gfc_get_temp_ss): New prototype.
* trans-array.c (gfc_get_temp_ss): New function.
(gfc_conv_resolve_dependencies): Re-use gfc_get_temp_ss.
(gfc_conv_expr_descriptor): Ditto.
* trans-expr.c (gfc_conv_subref_array_arg): Ditto.
From-SVN: r178696
2011-09-08 15:18:20 +00:00