Mikael Morin
d6b3a0d72c
trans-array.c (get_array_ref_dim, [...]): Rename the former to the latter and loop over the parents.
...
* trans-array.c (get_array_ref_dim, get_scalarizer_dim_for_array_dim):
Rename the former to the latter and loop over the parents.
(innermost_ss): New function.
(get_array_ref_dim_for_loop_dim): New function.
(gfc_trans_create_temp_array): Use get_scalarizer_dim_for_array_dim.
(set_loop_bounds): Use get_array_dim_for_loop_dim).
From-SVN: r180894
2011-11-03 23:34:53 +00:00
Mikael Morin
f49afcb009
trans-array.c (set_vector_loop_bounds): Loop over the parents.
...
* trans-array.c (set_vector_loop_bounds): Loop over the parents.
From-SVN: r180892
2011-11-03 23:28:25 +00:00
Mikael Morin
fa168d9ff4
trans-array.c (gfc_trans_array_constructor): Loop over the parents.
...
* trans-array.c (gfc_trans_array_constructor): Loop over the parents.
From-SVN: r180891
2011-11-03 23:25:34 +00:00
Mikael Morin
5125d6d5d7
trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the parents.
...
* trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the
parents.
From-SVN: r180890
2011-11-03 23:22:13 +00:00
Mikael Morin
2eace29ac3
trans.h (struct gfc_ss): New field parent.
...
* trans.h (struct gfc_ss): New field parent.
* trans-array.c (gfc_trans_scalarizing_loops): Skip clearing if a
parent exists.
* trans-expr.c (gfc_advance_se_ss_chain): Move to parent ss at the
end of the chain.
From-SVN: r180889
2011-11-03 23:17:08 +00:00
Mikael Morin
4164579308
trans-array.h (gfc_trans_create_temp_array): Remove loop argument.
...
* trans-array.h (gfc_trans_create_temp_array): Remove loop argument.
* trans-array.c (gfc_trans_create_temp_array): Ditto. Get loop from ss.
Update reference to loop. Remove loop argument.
(gfc_trans_array_constructor, gfc_conv_loop_setup): Update calls 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.
Set loop before calling gfc_trans_create_temp_array.
From-SVN: r180888
2011-11-03 23:06:22 +00:00
Mikael Morin
d35335e315
trans-array.c (gfc_trans_create_temp_array): New variable total_dim.
...
* trans-array.c (gfc_trans_create_temp_array): New variable total_dim.
Set total_dim to loop's rank. Replace usages of loop's rank.
From-SVN: r180887
2011-11-03 23:02:03 +00:00
Mikael Morin
6adbe65465
trans-array.c (gfc_trans_array_constructor, [...]): Rename the former to the later.
...
* trans-array.c (gfc_trans_array_constructor, trans_array_constructor):
Rename the former to the later. Get loop from ss.
Remove loop argument.
(gfc_add_loop_ss_code): Update call.
From-SVN: r180886
2011-11-03 22:59:29 +00:00
Mikael Morin
84952a4e31
trans-array.c (gfc_set_vector_loop_bounds): Get loop from ss.
...
* trans-array.c (gfc_set_vector_loop_bounds): Get loop from ss.
Remove loop argument.
(gfc_add_loop_ss_code): Update call.
From-SVN: r180885
2011-11-03 22:56:12 +00:00
Mikael Morin
4615abe856
trans.h (struct gfc_ss): New field loop.
...
* trans.h (struct gfc_ss): New field loop.
* trans-array.c (set_ss_loop): New function.
(gfc_add_ss_to_loop): Call set_ss_loop.
From-SVN: r180884
2011-11-03 22:54:37 +00:00
Mikael Morin
c7bf4f1e64
trans.h (struct gfc_ss_info): New field refcount.
...
* trans.h (struct gfc_ss_info): New field refcount.
* trans-array.c (free_ss_info): Decrement refcount. Return early if
still non-zero.
(gfc_get_array_ss, gfc_get_temp_ss, gfc_get_scalar_ss): Increment
refcount.
From-SVN: r180883
2011-11-03 22:50:06 +00:00
Mikael Morin
f28cd38e36
trans-array.c (gfc_trans_create_temp_array): Move invariant condition out of the containing loop.
...
* trans-array.c (gfc_trans_create_temp_array): Move invariant condition
out of the containing loop.
From-SVN: r180882
2011-11-03 22:45:41 +00:00
Mikael Morin
b2028d0b94
trans-array.c (gfc_conv_loop_setup, [...]): Move specloop arrays clearing from the former to the latter.
...
* trans-array.c (gfc_conv_loop_setup, gfc_trans_create_temp_array):
Move specloop arrays clearing from the former to the latter.
From-SVN: r180881
2011-11-03 22:42:58 +00:00
Mikael Morin
1d9370e909
trans-array.c (set_loop_bounds): Separate the beginning of gfc_conv_loop_setup into a function of its own.
...
* trans-array.c (set_loop_bounds): Separate the beginning of
gfc_conv_loop_setup into a function of its own.
(set_delta): Separate the end of gfc_conv_loop_setup into a function
of its own.
(gfc_conv_loop_setup): Call set_loop_bounds and set delta.
(set_loop_bounds, set_delta, gfc_conv_loop_setup): Make loopspec a
pointer to the specloop field from the loop struct.
From-SVN: r180880
2011-11-03 22:40:55 +00:00
Mikael Morin
42d0058e49
trans.h (struct gfc_ss, [...]): Move field gfc_ss::where into gfc_ss_info.
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field
gfc_ss::where into gfc_ss_info.
* trans-array.c (gfc_add_loop_ss_code):
Update reference chains.
* trans-stmt.c (gfc_trans_where_assign, gfc_trans_where_3): Ditto.
From-SVN: r180877
2011-11-03 22:29:25 +00:00
Mikael Morin
7a412892a6
trans.h (struct gfc_ss, [...]): Move field gfc_ss::useflags into gfc_ss_info.
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field
gfc_ss::useflags into gfc_ss_info.
* trans-array.c (gfc_mark_ss_chain_used, gfc_trans_preloop_setup,
gfc_trans_scalarizing_loops, gfc_trans_scalarized_boundary):
Update reference chains.
* trans-expr.c (gfc_conv_procedure_call): Ditto.
* trans-intrinsic.c (gfc_conv_intrinsic_function): Ditto.
From-SVN: r180875
2011-11-03 22:24:37 +00:00
Mikael Morin
1838afec3e
trans.h (struct gfc_ss, [...]): Move field gfc_ss::data::info into gfc_ss_info::data and remove empty union...
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field
gfc_ss::data::info into gfc_ss_info::data and remove empty union
gfc_ss::data.
* trans-array.c (gfc_free_ss, gfc_trans_create_temp_array,
gfc_trans_constant_array_constructor, gfc_trans_array_constructor,
gfc_set_vector_loop_bounds, gfc_add_loop_ss_code,
gfc_conv_ss_descriptor, gfc_trans_array_bound_check,
gfc_conv_array_index_offset, gfc_conv_scalarized_array_ref,
add_array_offset, gfc_trans_preloop_setup,
gfc_trans_scalarized_boundary, gfc_conv_section_startstride,
gfc_conv_ss_startstride, gfc_could_be_alias,
gfc_conv_loop_setup, gfc_conv_expr_descriptor,
gfc_alloc_allocatable_for_assignment, gfc_walk_array_ref):
Update reference chains and factor them where possible.
* trans-expr.c (gfc_conv_variable, gfc_conv_subref_array_arg,
gfc_conv_procedure_call, gfc_trans_subarray_assign): Updata reference
chains.
* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ditto.
* trans-io.c (transfer_array_component): Ditto.
* trans-stmt.c (gfc_conv_elemental_dependencies,
gfc_trans_pointer_assign_need_temp): Ditto.
From-SVN: r180873
2011-11-03 22:21:36 +00:00
Mikael Morin
961e73ace2
trans.h (struct gfc_ss, [...]): Move member struct gfc_ss::data::temp into gfc_ss_info::data.
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct
gfc_ss::data::temp into gfc_ss_info::data.
* trans-array.c (gfc_get_temp_ss, gfc_conv_loop_setup): Update reference
chains.
From-SVN: r180872
2011-11-03 22:16:29 +00:00
Mikael Morin
99dd5a2990
trans.h (struct gfc_ss, [...]): Move member struct gfc_ss::data::scalar into newly created union...
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct
gfc_ss::data::scalar into newly created union gfc_ss_info::data,
and rename subfield expr to value.
* trans-array.c (gfc_add_loop_ss_code, gfc_conv_array_index_offset,
gfc_conv_expr_descriptor): Update reference chains.
* trans-const.c (gfc_conv_constant): Ditto.
* trans-expr.c (gfc_conv_expr): Ditto.
From-SVN: r180870
2011-11-03 22:10:25 +00:00
Mikael Morin
a0add3be3e
trans.h (struct gfc_ss, [...]): Move field string_length from the former struct to the latter.
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field
string_length from the former struct to the latter.
* trans-array.c
(gfc_get_temp_ss, gfc_trans_array_constructor, gfc_add_loop_ss_code,
gfc_conv_ss_descriptor, gfc_conv_scalarized_array_ref,
gfc_conv_resolve_dependencies, gfc_conv_loop_setup,
gfc_conv_expr_descriptor): Update references to string_length and
factor common reference chains where possible.
* trans-const.c (gfc_conv_constant): Ditto.
* trans-expr.c (gfc_conv_variable, gfc_conv_subref_array_arg,
gfc_conv_expr): Ditto.
From-SVN: r180869
2011-11-03 22:04:50 +00:00
Mikael Morin
f98cfd3c42
trans.h (struct gfc_ss, [...]): Move field expr from the former struct to the latter.
...
* trans.h (struct gfc_ss, struct gfc_ss_info): Move field expr from
the former struct to the latter.
* trans-array.c
(gfc_get_array_ss, gfc_get_scalar_ss,
gfc_trans_constant_array_constructor, gfc_trans_array_constructor,
gfc_add_loop_ss_code, gfc_conv_ss_descriptor,
gfc_trans_array_bound_check, gfc_conv_array_index_offset,
gfc_conv_scalarized_array_ref, gfc_conv_ss_startstride,
gfc_could_be_alias, gfc_conv_resolve_dependencies,
gfc_conv_loop_setup, gfc_conv_expr_descriptor,
gfc_alloc_allocatable_for_assignment): Update references to expr and
factor common reference chains where possible.
* trans-const.c (gfc_conv_constant): Ditto.
* trans-expr.c (gfc_conv_variable, gfc_conv_procedure_call,
gfc_conv_array_constructor_expr, gfc_conv_expr,
gfc_conv_expr_reference): Ditto.
* trans-intrinsic.c (trans_this_image, gfc_conv_intrinsic_bound,
gfc_conv_intrinsic_cobound, gfc_conv_intrinsic_funcall,
gfc_add_intrinsic_ss_code): Ditto.
* trans-stmt.c (gfc_conv_elemental_dependencies): Ditto.
From-SVN: r180868
2011-11-03 22:01:46 +00:00
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
Mikael Morin
6687727615
trans-array.h (gfc_get_array_ss): New prototype.
...
2011-09-08 Mikael Morin <mikael.morin@sfr.fr>
* trans-array.h (gfc_get_array_ss): New prototype.
* trans-array.c (gfc_get_array_ss): New function.
(gfc_walk_variable_expr, gfc_walk_function_expr,
gfc_walk_array_constructor): Re-use gfc_get_array_ss.
* trans-expr.c (gfc_trans_subarray_assign): Ditto.
* trans-intrinsic.c (gfc_walk_intrinsic_bound,
gfc_walk_intrinsic_libfunc): Ditto.
* trans-io.c (transfer_array_component): Ditto.
From-SVN: r178695
2011-09-08 15:07:01 +00:00
Tobias Burnus
aa13dc3c93
trans-array.c (gfc_conv_descriptor_token): Add assert.
...
2011-08-25 Tobias Burnus <burnus@net-b.de>
* trans-array.c (gfc_conv_descriptor_token): Add assert.
* trans-decl.c (gfc_build_qualified_array,
create_function_arglist): Handle assumed-shape arrays.
* trans-expr.c (gfc_conv_procedure_call): Ditto.
* trans-types.c (gfc_get_array_descriptor_base): Ditto, don't
add "caf_token" to assumed-shape descriptors, new akind argument.
(gfc_get_array_type_bounds): Pass akind.
* trans.h (lang_decl): New elements caf_offset and token.
(GFC_DECL_TOKEN, GFC_DECL_CAF_OFFSET): New macros.
2011-08-25 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_lib_token_4.f90: New.
From-SVN: r178069
2011-08-25 18:27:39 +02:00
Tobias Burnus
241e79cfc4
trans-array.c (structure_alloc_comps): Fix for allocatable scalar coarray components.
...
2011-08-25 Tobias Burnus <burnus@net-b.de>
* trans-array.c (structure_alloc_comps): Fix for allocatable
scalar coarray components.
* trans-expr.c (gfc_conv_component_ref): Ditto.
* trans-type.c (gfc_get_derived_type): Ditto.
2011-08-25 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray/alloc_comp_1.f90: New.
From-SVN: r178068
2011-08-25 17:59:40 +02:00
Richard Guenther
428f80e651
re PR tree-optimization/49957 (Fails to SLP in 410.bwaves)
...
2011-08-04 Richard Guenther <rguenther@suse.de>
PR fortran/49957
* trans-array.c (add_to_offset): New function.
(gfc_conv_array_ref): Build the array index expression in optimally
associated order.
(gfc_walk_variable_expr): Adjust for the backward walk.
* gfortran.dg/vect/O3-pr49957.f: New testcase.
From-SVN: r177368
2011-08-04 12:22:42 +00:00
Daniel Kraft
f315a6b438
re PR fortran/49885 (Segmentation fault when writing to an automatic character array)
...
2011-08-02 Daniel Kraft <d@domob.eu>
PR fortran/49885
* trans-array.c (gfc_trans_auto_array_allocation): Change
gfc_start_block to gfc_init_block to avoid spurious extra-scope.
2011-08-02 Daniel Kraft <d@domob.eu>
PR fortran/49885
* gfortran.dg/auto_char_dummy_array_3.f90: New test.
From-SVN: r177211
2011-08-02 22:10:13 +02:00
Tobias Burnus
979d459888
trans-array.c (gfc_array_allocate): Pass token to gfc_allocate_allocatable for -fcoarray=lib.
...
2011-08-02 Tobias Burnus <burnus@net-b.de>
* trans-array.c (gfc_array_allocate): Pass token to
gfc_allocate_allocatable for -fcoarray=lib.
* trans-stmt.c (gfc_trans_allocate): Update
gfc_allocate_allocatable call.
* trans.h (gfc_allocate_allocatable): Update prototype.
(gfc_allocate_using_lib): Remove.
* trans.c (gfc_allocate_using_lib): Make static, handle
token.
(gfc_allocate_allocatable): Ditto.
2011-08-02 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_lib_token_3.f90: New.
From-SVN: r177198
2011-08-02 20:07:52 +02:00
Daniel Carrera
4f13e17fff
re PR fortran/49755 (ALLOCATE with STAT= produces invalid code for already allocated vars)
...
2011-07-26 Daniel Carrera <dcarrera@gmail.com>
PR fortran/49755
* trans.c (gfc_allocate_using_malloc): Change function signature.
Return nothing. New parameter "pointer". Eliminate temorary variables.
(gfc_allocate_using_lib): Ditto.
(gfc_allocate_allocatable): Ditto. Update call to gfc_allocate_using_lib
and gfc_allocate_using_malloc. Do not free and then reallocate a
variable that is already allocated.
(gfc_likely): New function. Basedon gfc_unlikely.
* trans-array.c (gfc_array_init_size): New parameter "descriptor_block".
Instructions to modify the array descriptor are stored in this block
while other instructions continue to be stored in "pblock".
(gfc_array_allocate): Update call to gfc_array_init_size. Move the
descriptor_block so that the array descriptor is only updated if
the array was allocated successfully.
Update calls to gfc_allocate_allocatable and gfc_allocate_using_malloc.
* trans.h (gfc_allocate_allocatable): Change function signature.
Function now returns void.
(gfc_allocate_using_lib): Ditto, and new function parameter.
(gfc_allocate_using_malloc): Ditto.
* trans-openmp.c (gfc_omp_clause_default_ctor,
gfc_omp_clause_copy_ctor,gfc_trans_omp_array_reduction): Replace a call
to gfc_allocate_allocatable with gfc_allocate_using_malloc.
* trans-stmt.c (gfc_trans_allocate): Update function calls for
gfc_allocate_allocatable and gfc_allocate_using_malloc.
2011-07-26 Daniel Carrera <dcarrera@gmail.com>
PR fortran/49755
* gfortran.dg/multiple_allocation_1.f90: Fix test. Allocating an
allocated array should *not* change its size.
* gfortran.dg/multiple_allocation_3.f90: New test.
From-SVN: r176822
2011-07-27 10:10:06 +00:00
Tobias Burnus
af232d48a7
trans-array.c (CAF_TOKEN_FIELD): New macro constant.
...
2011-07-26 Tobias Burnus <burnus@net-b.de>
* trans-array.c (CAF_TOKEN_FIELD): New macro constant.
(gfc_conv_descriptor_token): New function.
* trans-array.h (gfc_conv_descriptor_token): New prototype.
* trans-types.c (gfc_get_array_descriptor_base): For coarrays
with -fcoarray=lib, append "void *token" to the array descriptor.
(gfc_array_descriptor_base_caf): New static variable.
* trans-expr.c (gfc_conv_procedure_call): Handle token and
* offset
when passing a descriptor coarray to a nondescriptor dummy.
2011-07-26 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_lib_token_2.f90: New.
From-SVN: r176784
2011-07-26 09:30:37 +02:00
Daniel Carrera
8f992d640e
trans.c (gfc_allocate_with_status): Split into two functions gfc_allocate_using_malloc and gfc_allocate_usig_lib.
...
2011-07-21 Daniel Carrera <dcarrera@gmail.com>
* trans.c (gfc_allocate_with_status): Split into two functions
gfc_allocate_using_malloc and gfc_allocate_usig_lib.
(gfc_allocate_using_malloc): The status parameter is now the
actual status rather than a pointer. Code cleanup.
(gfc_allocate_using_lib): Ditto. Add new parametrs errmsg and
errlen. Pass these to the coarray lib.
* trans-openmp.c (gfc_omp_clause_default_ctor): Update calls to
gfc_allocate_allocatable.
(gfc_omp_clause_copy_ctor): Ditto.
(gfc_trans_omp_array_reduction): Ditto.
* trans-stmt.c (gfc_trans_allocate): Ditto. Update call to
gfc_allocate_using_malloc. Pass stat rather than pstat to the allocate
fuctions. If using coarray lib, pass errmsg and errlen to the allocate
functions. Move error checking outside the if (!gfc_array_allocate)
block so that it also affects trees produced by gfc_array_allocate.
* trans-array.c (gfc_array_allocate): Add new parameters errmsg
and errlen. Replace parameter pstat by status. Code cleanup. Update
calls to gfc_allocate_allocatable and gfc_allocate_using_malloc.
* trans-array.h (gfc_array_allocate): Update signature of
gfc_array_allocate.
From-SVN: r176606
2011-07-21 23:18:24 +00:00
Tobias Burnus
0c53708ead
check.c (gfc_check_present): Allow coarrays.
...
2011-07-21 Tobias Burnus <burnus@net-b.de>
* check.c (gfc_check_present): Allow coarrays.
* trans-array.c (gfc_conv_array_ref): Avoid casting
when a pointer is wanted.
* trans-decl.c (create_function_arglist): For -fcoarray=lib,
handle hidden token and offset arguments for nondescriptor
coarrays.
* trans-expr.c (get_tree_for_caf_expr): New function.
(gfc_conv_procedure_call): For -fcoarray=lib pass the
token and offset for nondescriptor coarray dummies.
* trans.h (lang_type): Add caf_offset tree.
(GFC_TYPE_ARRAY_CAF_OFFSET): New macro.
2011-07-21 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_lib_token_1.f90: New.
From-SVN: r176562
2011-07-21 14:00:25 +02:00
Tobias Burnus
badd9e6941
expr.c (gfc_ref_this_image): New function.
...
2011-07-16 Tobias Burnus <burnus@net-b.de>
* expr.c (gfc_ref_this_image): New function.
(gfc_is_coindexed): Use it.
* gfortran.h (gfc_ref_this_image): New prototype.
* resolve.c (resolve_deallocate_expr,
resolve_allocate_expr): Support alloc scalar coarrays.
* trans-array.c (gfc_conv_array_ref, gfc_array_init_size,
gfc_conv_descriptor_cosize, gfc_array_allocate,
gfc_trans_deferred_array): Ditto.
* trans-expr.c (gfc_conv_variable) Ditto.:
* trans-stmt.c (gfc_trans_deallocate): Ditto.
* trans-types.c (gfc_get_element_type, gfc_get_array_type_bounds
gfc_get_array_descr_info): Ditto.
* trans-decl.c (gfc_get_symbol_decl): Ditto.
2011-07-16 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_14.f90: Remove dg-error "sorry not
* implemented".
* gfortran.dg/coarray_7.f90: Ditto.
* gfortran.dg/coarray/scalar_alloc_1.f90: New.
* gfortran.dg/coarray/scalar_alloc_2.f90: New.
From-SVN: r176358
2011-07-16 19:31:13 +02:00
Daniel Carrera
ea6363a3b1
trans-array.c (gfc_array_allocate): Rename allocatable_array
...
2011-07-06 Daniel Carrera <dcarrera@gmail.com>
* trans-array.c (gfc_array_allocate): Rename allocatable_array
* to
allocatable. Rename function gfc_allocate_array_with_status to
gfc_allocate_allocatable_with_status. Update function call for
gfc_allocate_with_status.
* trans-opemp.c (gfc_omp_clause_default_ctor): Rename function
gfc_allocate_array_with_status to gfc_allocate_allocatable_with_status.
* trans-stmt.c (gfc_trans_allocate): Update function call for
gfc_allocate_with_status. Rename function gfc_allocate_array_with_status
to gfc_allocate_allocatable_with_status.
* trans.c (gfc_call_malloc): Add new parameter
* gfc_allocate_with_status
so it uses the library for memory allocation when -fcoarray=lib.
(gfc_allocate_allocatable_with_status): Renamed from
gfc_allocate_array_with_status.
(gfc_allocate_allocatable_with_status): Update function call for
gfc_allocate_with_status.
* trans.h (gfc_coarray_type): New enum.
(gfc_allocate_with_status): Update prototype.
(gfc_allocate_allocatable_with_status): Renamed from
gfc_allocate_array_with_status.
* trans-decl.c (generate_coarray_sym_init): Use the new constant
GFC_CAF_COARRAY_ALLOC in the call to gfor_fndecl_caf_register.
From-SVN: r175937
2011-07-06 22:57:03 +02:00
Jakub Jelinek
21ea4922ac
re PR fortran/49540 (Memory-hog with large DATA stmt)
...
PR fortran/49540
* gfortran.h (gfc_constructor): Add repeat field.
* trans-array.c (gfc_conv_array_initializer): Handle repeat > 1.
* array.c (current_expand): Add repeat field.
(expand_constructor): Copy repeat.
* constructor.c (node_free, node_copy, gfc_constructor_get,
gfc_constructor_lookup): Handle repeat field.
(gfc_constructor_lookup_next, gfc_constructor_remove): New functions.
* data.h (gfc_assign_data_value): Add mpz_t * argument.
(gfc_assign_data_value_range): Removed.
* constructor.h (gfc_constructor_advance): Removed.
(gfc_constructor_lookup_next, gfc_constructor_remove): New prototypes.
* data.c (gfc_assign_data_value): Add REPEAT argument, handle it and
also handle overwriting a range with a single entry.
(gfc_assign_data_value_range): Removed.
* resolve.c (check_data_variable): Adjust gfc_assign_data_value
call. Use gfc_assign_data_value instead of
gfc_assign_data_value_expr.
* gfortran.dg/pr49540-1.f90: New test.
* gfortran.dg/pr49540-2.f90: New test.
From-SVN: r175693
2011-06-30 12:25:40 +02:00
Janus Weil
dbb7247b9a
re PR fortran/49466 (Memory leak with assignment of extended derived types)
...
2011-06-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/49466
* trans-array.c (structure_alloc_comps): Make sure sub-components
and extended types are correctly deallocated.
2011-06-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/49466
* gfortran.dg/allocatable_scalar_9.f90: Modified.
* gfortran.dg/extends_14.f03: Modified.
From-SVN: r175563
2011-06-27 22:59:12 +02:00
Tobias Burnus
73039f8950
2011-06-12 Tobias Burnus
...
PR fortran/49324
* trans-expr.c (gfc_trans_assignment_1): Tell
gfc_trans_scalar_assign to also deep-copy RHS nonvariables
with allocatable components.
* trans-array.c (gfc_conv_expr_descriptor): Ditto.
2011-06-12 Tobias Burnus
PR fortran/49324
* gfortran.dg/alloc_comp_assign_11.f90: New.
From-SVN: r174959
2011-06-12 00:08:46 +02:00
Tobias Burnus
d73b65b6db
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-05-31 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* trans-array.c (gfc_trans_dummy_array_bias): Handle
cobounds of assumed-shape arrays.
2011-05-31 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray/dummy_1.f90: New.
From-SVN: r174504
2011-05-31 20:40:55 +02:00
Tobias Burnus
9f3761c527
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-05-31 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* resolve.c (resolve_fl_variable): Handle static coarrays
with non-constant cobounds.
(resolve_symbol): Handle SAVE statement without arguments
for coarrays.
* trans-array.c (gfc_trans_array_cobounds): New function.
(gfc_trans_array_bounds): Place code by call to it.
* trans-array.h (gfc_trans_array_cobounds): New prototype.
* trans-decl.c (gfc_get_symbol_decl, gfc_trans_deferred_vars):
Handle static coarrays with nonconstant cobounds.
2011-05-31 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray/save_1.f90: New.
* gfortran.dg/coarray_4.f90: Update dg-error.
From-SVN: r174503
2011-05-31 20:25:51 +02:00
Tobias Burnus
8a5c4899e8
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-05-29 Tobias Burnus <burnus@net-b.de>
Richard Guenther <rguenther@suse.de>
PR fortran/18918
* trans-types.c (gfc_get_nodesc_array_type): Don't mess with
the type's TREE_TYPE.
* trans-array.c (gfc_conv_array_ref): Use TYPE_MAIN_VARIANT.
* trans.c (gfc_build_array_ref): Ditto.
2011-05-29 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray_23.f90: New.
Co-Authored-By: Richard Guenther <rguenther@suse.de>
From-SVN: r174410
2011-05-29 20:15:08 +02:00
Paul Thomas
aed5574e7b
[multiple changes]
...
2011-05-26 Paul Thomas <pault@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/48955
* trans-expr.c (gfc_trans_assignment_1): GFC_REVERSE_NOT_SET
changed to GFC_ENABLE_REVERSE.
* trans-array.c (gfc_init_loopinfo): GFC_CANNOT_REVERSE changed
to GFC_INHIBIT_REVERSE.
* gfortran.h : Enum gfc_reverse is now GFC_ENABLE_REVERSE,
GFC_FORWARD_SET, GFC_REVERSE_SET and GFC_INHIBIT_REVERSE.
* dependency.c (gfc_dep_resolver): Change names for elements of
gfc_reverse as necessary. Change the logic so that forward
dependences are remembered as well as backward ones. When both
have appeared, force a temporary.
2011-05-26 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/48955
* gfortran.dg/dependency_40.f90 : New test.
From-SVN: r174302
2011-05-26 18:19:36 +00:00
Tobias Burnus
b8ff4e88e7
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-05-26 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* trans-array.c (gfc_conv_array_ref): Handle pointer coarrays.
* trans-decl.c (has_coarray_vars, caf_init_block,
gfor_fndecl_caf_register): New file-global variables.
(gfc_finish_var_decl): Make sure that coarrays in main are static.
(gfc_build_qualified_array): Generate coarray token variable.
(gfc_get_symbol_decl): Don't use a static initializer for coarrays.
(gfc_build_builtin_function_decls): Set gfor_fndecl_caf_register.
(gfc_trans_deferred_vars, gfc_emit_parameter_debug_info): Skip for
static coarrays.
(generate_local_decl): Check for local coarrays.
(create_main_function): SYNC ALL before calling MAIN.
(generate_coarray_sym_init): Register static coarray.
(generate_coarray_init): Generate CAF registering constructor
function.
(gfc_generate_function_code): Call it, if needed, do not create
cgraph twice.
(gfc_generate_module_vars, gfc_process_block_locals): Call
generate_coarray_init.
* trans-types.c (gfc_get_nodesc_array_type): Generate pointers
* for
-fcoarray=lib.
* trans.h (gfor_fndecl_caf_register): New variable.
(lang_type): New element caf_token.
(GFC_TYPE_ARRAY_CAF_TOKEN): New macro.
2011-05-26 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray/registering_1.f90: New.
From-SVN: r174301
2011-05-26 19:41:34 +02:00
Tobias Burnus
4409de247c
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-06-19 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* trans-types.c (gfc_get_element_type): Handle scalar coarrays.
(gfc_get_nodesc_array_type): Make a variant-type copy for scalar
coarrays.
* trans.c (gfc_build_array_ref): Return original type not
* variant
copy for scalar coarrays.
* trans-array.c (gfc_conv_array_ref): Ditto.
2011-06-19 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray_21.f90: New.
From-SVN: r173920
2011-05-19 22:53:33 +02:00
Tobias Burnus
c81e79b590
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* trans-array.c (gfc_walk_variable_expr): Continue walking
for scalar coarrays.
* trans-intrinsic.c (convert_element_to_coarray_ref): New
* function.
(trans_this_image, trans_image_index, conv_intrinsic_cobound): Use it.
(trans_this_image): Fix algorithm.
* trans-types.c (gfc_get_element_type,
* gfc_get_array_descriptor_base,
gfc_sym_type): Handle scalar coarrays.
2011-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray/this_image_2.f90: New.
From-SVN: r173506
2011-05-06 20:39:08 +02:00
Richard Guenther
df09d1d51c
trans-array.c (gfc_trans_array_constructor_value): Use size_int for bounds of range types.
...
2011-05-04 Richard Guenther <rguenther@suse.de>
* trans-array.c (gfc_trans_array_constructor_value): Use
size_int for bounds of range types.
(gfc_trans_array_constructor_value): Use size_type_node
for memcpy argument.
* trans-common.c (build_field): Use gfc_charlen_type_node
for lengths.
* trans-openmp.c (gfc_trans_omp_clauses): Do not pass NULL
as type to build_int_cst.
* trans-const.c (gfc_build_string_const): Use size_int
for bounds of range types.
(gfc_build_wide_string_const): Likewise.
* trans-stmt.c (gfc_trans_label_assign): Use gfc_charlen_type_node
for lengths.
(gfc_trans_character_select): Likewise.
(gfc_trans_character_select): Do not pass NULL
as type to build_int_cst.
(gfc_trans_character_select): Use size_int for bounds of range types.
* trans-io.c (gfc_build_io_library_fndecls): Likewise.
(add_case): Do not pass NULL as type to build_int_cst.
(transfer_expr): Likewise.
(transfer_array_desc): Likewise.
* trans-decl.c (gfc_add_assign_aux_vars): Use gfc_charlen_type_node
for lengths.
(gfc_trans_assign_aux_var): Likewise.
(create_main_function): Use size_int for bounds of range types.
* trans-intrinsic.c (gfc_conv_intrinsic_minmax_char): Do not pass
NULL as type to build_int_cst.
(gfc_conv_intrinsic_spacing): Likewise.
(gfc_conv_intrinsic_rrspacing): Likewise.
(gfc_conv_intrinsic_len): Use gfc_charlen_type_node for lengths.
From-SVN: r173374
2011-05-04 13:18:34 +00:00
Jim Meyering
cede950232
convert each use of gfc_free (p) to free (p)
...
Do that by running this command:
perl -pi -e 's/\bgfc_free ?\(/free (/' \
$(git grep -El '\bgfc_free ?\(')
which also corrects the few uses that lacked a space between
the function name and the open parenthesis.
Manually undo the change to the function definition itself
and its prototype. They'll be removed next.
* array.c (gfc_free_array_spec, gfc_set_array_spec): s/gfc_free/free/
* constructor.c (node_free): Likewise.
* cpp.c (dump_queued_macros): Likewise.
* data.c (gfc_assign_data_value): Likewise.
* decl.c (free_variable, free_value, gfc_free_data): Likewise.
(gfc_free_data_all, match_old_style_init): Likewise.
(gfc_set_constant_character_len, gfc_free_enum_history, NUM_DECL):
Likewise.
(gfc_match_modproc): Likewise.
* dependency.c (check_section_vs_section): Likewise.
* error.c (gfc_pop_error, gfc_free_error): Likewise.
* expr.c (free_expr0, gfc_free_expr, gfc_free_actual_arglist): Likewise.
(gfc_free_ref_list, gfc_replace_expr, gfc_copy_ref): Likewise.
(find_substring_ref, gfc_simplify_expr, gfc_check_assign_symbol):
Likewise.
* frontend-passes.c (gfc_run_passes, cfe_expr_0): Likewise.
(strip_function_call, optimize_comparison): Likewise.
* interface.c (gfc_free_interface, arginfo, check_interface0): Likewise.
(CHECK_OS_COMPARISON, gfc_extend_assign, gfc_free_formal_arglist):
Likewise.
* intrinsic.c (gfc_intrinsic_done_1, gfc_convert_type_warn): Likewise.
(gfc_convert_chartype): Likewise.
* io.c (gfc_free_open, compare_to_allowed_values, gfc_free_close):
Likewise.
(gfc_free_filepos, gfc_free_dt, gfc_free_inquire): Likewise.
* match.c (gfc_free_iterator, gfc_match_associate): Likewise.
(gfc_free_alloc_list, gfc_free_namelist, gfc_free_equiv_until):
Likewise.
(free_case, gfc_free_forall_iterator): Likewise.
* misc.c: Likewise.
* module.c (free_pi_tree, resolve_fixups, free_rename): Likewise.
(free_true_name, peek_atom, mio_allocated_wide_string): Likewise.
(mio_pool_string, mio_internal_string, mio_gmp_integer): Likewise.
(mio_gmp_real, mio_expr, mio_typebound_proc): Likewise.
(mio_full_typebound_tree, skip_list, load_equiv): Likewise.
(free_written_common, gfc_use_module, gfc_free_use_stmts): Likewise.
* openmp.c (gfc_free_omp_clauses): Likewise.
* options.c (gfc_post_options): Likewise.
* parse.c (select_type_pop, parse_omp_structured_block): Likewise.
* primary.c (gfc_free_structure_ctor_component): Likewise.
* resolve.c (resolve_structure_cons, check_host_association): Likewise.
(gfc_resolve_forall, resolve_equivalence): Likewise.
* scanner.c (gfc_scanner_done_1, gfc_release_include_path): Likewise.
(gfc_define_undef_line, preprocessor_line, include_line): Likewise.
(load_file, gfc_read_orig_filename): Likewise.
* simplify.c (simplify_transformation_to_array): Likewise.
(gfc_simplify_ibits, simplify_shift, gfc_simplify_ishftc, STRING):
Likewise.
(gfc_simplify_compiler_options): Likewise.
* st.c (gfc_free_statement, gfc_free_statements): Likewise.
(gfc_free_association_list): Likewise.
* symbol.c (free_components, gfc_free_st_label, free_st_labels):
Likewise.
(gfc_delete_symtree, gfc_free_symbol, gfc_undo_symbols): Likewise.
(free_old_symbol, gfc_commit_symbols, free_tb_tree): Likewise.
(free_common_tree, free_uop_tree, free_sym_tree): Likewise.
(gfc_free_dt_list, gfc_free_equiv_infos, gfc_free_equiv_lists):
Likewise.
(gfc_free_finalizer, gfc_free_charlen, free_entry_list): Likewise.
(gfc_free_namespace): Likewise.
* trans-array.c (gfc_free_ss, gfc_trans_array_bound_check): Likewise.
(gfc_conv_array_ref, gfc_conv_ss_startstride): Likewise.
(gfc_trans_dummy_array_bias, gfc_conv_array_parameter): Likewise.
* trans-common.c (get_init_field, create_common): Likewise.
* trans-const.c (gfc_build_wide_string_const): Likewise.
(gfc_conv_string_init): Likewise.
* trans-decl.c (gfc_generate_function_code): Likewise.
* trans-expr.c (gfc_conv_substring, gfc_free_interface_mapping):
Likewise.
(SCALAR_POINTER, gfc_conv_statement_function): Likewise.
(gfc_trans_subarray_assign): Likewise.
* trans-intrinsic.c (conv_generic_with_optional_char_arg): Likewise.
* trans-io.c (gfc_trans_io_runtime_check, set_string): Likewise.
(transfer_namelist_element, transfer_array_component): Likewise.
* trans-openmp.c (gfc_trans_omp_array_reduction): Likewise.
* trans-stmt.c (cleanup_forall_symtrees, gfc_trans_forall_1): Likewise.
* trans.c (trans_runtime_error_vararg, gfc_restore_backend_locus):
Likewise.
From-SVN: r172666
2011-04-18 19:20:53 +00:00
Tobias Burnus
5af0793001
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-04-18 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* iresolve.c (gfc_resolve_image_index): Set ts.type.
* simplify.c (gfc_simplify_image_index): Don't abort if the
* bounds
are not known at compile time and handle -fcoarray=lib.
* trans-intrinsics.c (gfc_conv_intrinsic_function): Handle
IMAGE_INDEX.
(conv_intrinsic_cobound): Fix comment typo.
(trans_this_image): New function.
* trans-array.c (gfc_unlikely): Move to trans.c.
* trans.c (gfc_unlikely): Function moved from trans-array.c.
(gfc_trans_runtime_check): Use it.
* trans-io.c (gfc_trans_io_runtime_check): Ditto.
* trans.h (gfc_unlikely): Add prototype.
2011-04-18 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray_16.f90: New.
From-SVN: r172637
2011-04-18 07:56:05 +02:00
Michael Matz
c76f8d52e2
trans-array.c (toplevel): Include gimple.h.
...
* trans-array.c (toplevel): Include gimple.h.
(gfc_trans_allocate_array_storage): Check flag_stack_arrays,
properly expand variable length arrays.
(gfc_trans_auto_array_allocation): If flag_stack_arrays create
variable length decls and associate them with their scope.
* gfortran.h (gfc_option_t): Add flag_stack_arrays member.
* options.c (gfc_init_options): Handle -fstack_arrays option.
* lang.opt (fstack-arrays): Add option.
* invoke.texi (Code Gen Options): Document it.
* Make-lang.in (trans-array.o): Depend on GIMPLE_H.
From-SVN: r172524
2011-04-15 21:48:19 +00:00
Paul Thomas
99ee025114
re PR fortran/48360 (ICE on array assignment statement with allocatable LHS)
...
2011-04-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48360
PR fortran/48456
* trans-array.c (get_std_lbound): For derived type variables
return array valued component lbound.
2011-04-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48360
PR fortran/48456
* gfortran.dg/realloc_on_assign_6.f03: New test.
From-SVN: r172339
2011-04-12 19:14:49 +00:00
Tobias Burnus
155e5d5f55
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-04-11 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* simplify.c (simplify_bound_dim): Exit for
ucobound's last dimension unless -fcoarray=single.
* trans-array (gfc_conv_descriptor_size_1): Renamed from
gfc_conv_descriptor_size, made static, has now from_dim and
to_dim arguments.
(gfc_conv_descriptor_size): Call gfc_conv_descriptor_size.
(gfc_conv_descriptor_cosize): New function.
* trans-array.h (gfc_conv_descriptor_cosize): New prototype.
* trans-intrinsic.c (conv_intrinsic_cobound): Add input_location
and handle last codim of ucobound for when -fcoarray is not "single".
From-SVN: r172262
2011-04-11 17:50:47 +02:00
Tobias Burnus
a3935ffcb7
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
...
2011-04-04 Tobias Burnus <burnus@net-b.de>
Mikael Morin <mikael.morin@sfr.fr>
PR fortran/18918
* check.c (is_coarray): Update - because of DIMEN_THIS_IMAGE.
* expr.c (gfc_is_coindexed): Ditto.
* gfortran.h (gfc_array_ref_dimen_type): Add DIMEN_THIS_IMAGE.
* interface.c (compare_parameter): Use gfc_expr_attr and
gfc_is_coindexed.
* resolve.c (check_dimension, compare_spec_to_ref,
resolve_allocate_expr, check_data_variable): Update for
DIMEN_THIS_IMAGE.
* simplify.c (gfc_simplify_lcobound, gfc_simplify_this_image,
gfc_simplify_ucobound): Allow non-constant bounds.
* trans-array.c (gfc_set_loop_bounds_from_array_spec,
gfc_trans_create_temp_array, gfc_trans_constant_array_constructor,
gfc_set_vector_loop_bounds, gfc_conv_array_index_offset,
gfc_start_scalarized_body, gfc_trans_scalarizing_loops,
gfc_trans_scalarized_loop_boundary, gfc_conv_section_startstride,
gfc_conv_ss_startstride, gfc_conv_loop_setup,
gfc_trans_array_bounds, gfc_conv_expr_descriptor,
gfc_walk_variable_expr): Handle codimen.
* trans-decl.c (gfc_build_qualified_array): Save cobounds.
* trans-intrinsic.c (gfc_conv_intrinsic_bound): Use arg2.
(conv_intrinsic_cobound): New function.
(gfc_conv_intrinsic_function): Call it.
(gfc_walk_intrinsic_function, gfc_add_intrinsic_ss_code): Handle
ucobound, lcobound, this_image.
* fortran/trans-types.c (gfc_build_array_type): Save cobounds.
(gfc_get_dtype): Honour corank.
(gfc_get_nodesc_array_type): Save corank and codimensions.
(gfc_get_array_type_bounds): Save cobound.
* fortran/trans.h (gfc_ss_info,gfc_loopinfo): Add codimen item.
(gfc_array_kind): Add corank item.
(GFC_TYPE_ARRAY_CORANK): New macro.
2011-04-04 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray_10.f90: Add coarray descriptor diagnostic
check.
* gfortran.dg/coarray_13.f90: Add checks for run-time cobounds.
* gfortran.dg/coarray_15.f90: New.
Co-Authored-By: Mikael Morin <mikael.morin@sfr.fr>
From-SVN: r171949
2011-04-04 20:35:13 +02:00