Commit Graph

286 Commits

Author SHA1 Message Date
Tobias Burnus
6739e9ec6e [multiple changes]
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-10-26 08:49:43 +02:00
Mikael Morin
fcba55090e trans-array.c (gfc_free_ss_chain): Made non-static.
2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>

	* trans-array.c (gfc_free_ss_chain): Made non-static.
	* trans-array.h (gfc_free_ss_chain): New prototype.
	* trans-stmt.c (gfc_trans_where_2): Free ss chains.

From-SVN: r165052
2010-10-06 16:30:08 +00:00
Mikael Morin
3db5d687b4 trans-array.c (gfc_conv_tmp_array_ref): Add factorized call to gfc_advance_se_ss_chain.
2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>

	* trans-array.c (gfc_conv_tmp_array_ref): Add factorized call to
	gfc_advance_se_ss_chain.
	* trans-expr.c (gfc_conv_subref_array_ref, gfc_conv_procedure_call,
	gfc_conv_array_constructor_expr, gfc_trans_assignment_1): Remove
	calls to gfc_advance_se_ss_chain after gfc_conv_tmp_array_ref.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Ditto.
	* trans-stmt.c (gfc_trans_where_assign, gfc_trans_where_3): Ditto.

From-SVN: r165046
2010-10-06 15:59:31 +00:00
Mikael Morin
363aab2195 trans.c (gfc_restore_backend_locus): New function.
2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>

	* trans.c (gfc_restore_backend_locus): New function.
	(gfc_get_backend_locus): Renamed to ...
	(gfc_save_backend_locus): ... this.
	* trans.h (gfc_restore_backend_locus, gfc_get_backend_locus,
	gfc_save_backend_locus): Same.
	* trans-array.c (gfc_trans_g77_array, gfc_trans_dummy_array_bias,
	gfc_trans_deferred_array): Rename gfc_get_backend_locus to
	gfc_save_backend_locus.
	(gfc_trans_dummy_array_bias): Call gfc_restore_backend_locus at the
	end.
	(gfc_trans_g77_array, gfc_trans_deferred_array): Use
	gfc_restore_backend_locus instead of gfc_set_backend_locus.
	(gfc_trans_deferred_array): Call gfc_restore_backend_locus on early
	return.
	* trans-decl.c (gfc_get_extern_function_decl, build_entry_thunks,
	gfc_trans_deferred_vars):
	Rename gfc_get_backend_locus to gfc_save_backend_locus.
	Use gfc_restore_backend_locus insted of gfc_set_backend_locus.

From-SVN: r165045
2010-10-06 15:48:25 +00:00
Mikael Morin
1b4544b729 trans-array.c (gfc_build_constant_array_constructor): Free array spec when done.
2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>

	* trans-array.c (gfc_build_constant_array_constructor): Free array
	spec when done.

From-SVN: r165041
2010-10-06 15:39:15 +00:00
Mikael Morin
bef6486a5a re PR fortran/45745 (ICE in gfc_conv_array_stride)
2010-09-23  Mikael Morin  <mikael@gcc.gnu.org>

	PR fortran/45745
	PR fortran/45648
	* trans-array.c (gfc_conv_expr_descriptor): Handle 
	ss->type == GFC_SS_INTRINSIC (for {l,u}bound intrinsics) case. 

2010-09-23  Mikael Morin  <mikael@gcc.gnu.org>

	PR fortran/45745
	PR fortran/45648
	* gfortran.dg/vector_subscript_bound_1.f90: New.

From-SVN: r164558
2010-09-23 11:11:23 +00:00
Mikael Morin
0b4f2770ff re PR fortran/45648 (Unnecessary temporary for transpose calls as actual argument.)
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-21 19:04:09 +00:00
Mikael Morin
712efae143 gfortran.h (gfc_expr): Remove inline_noncopying_intrinsic attribute.
2010-09-11  Mikael Morin  <mikael@gcc.gnu.org>

	* gfortran.h (gfc_expr): Remove inline_noncopying_intrinsic attribute.
	* dependency.c (gfc_check_dependency): Don't depend on
	expr's inline_noncopying_intrinsic_attribute.
	* dependency.c (gfc_check_argument_var_dependency,
	gfc_check_argument_dependency): Ditto. Recursively check dependency
	as NOT_ELEMENTAL in the non-copying (=transpose) case.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Ditto.
	* resolve.c (find_noncopying_intrinsics): Remove.
	(resolve_function, resolve_call): Remove call to
	find_noncopying_intrinsics.

	* trans-array.c (gfc_conv_array_transpose): Remove.
	(gfc_walk_subexpr): Make non-static. Move prototype...
	* trans-array.h (gfc_walk_subexpr): ... here.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Update transpose
	handling.
	(walk_inline_intrinsic_transpose, walk_inline_intrinsic_function,
	gfc_inline_intrinsic_function_p): New.
	(gfc_is_intrinsic_libcall): Return early in inline intrinsic case.
	Remove transpose from the libcall list.
	(gfc_walk_intrinsic_function): Special case inline intrinsic.
	* trans.h (gfc_inline_intrinsic_function_p): New prototype.

2010-09-11  Mikael Morin  <mikael@gcc.gnu.org>

	* gfortran.dg/inline_transpose_1.f90: Update temporary's locations
	and counts. Check that transpose is not called.
	* gfortran.dg/transpose_2.f90: Update error message.

From-SVN: r164205
2010-09-10 23:38:54 +00:00
Mikael Morin
4b4c18e273 trans-array.c (gfc_conv_loop_setup): Access the shape along the real array dimension instead of the scalarizer...
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-10 10:42:56 +00:00
Mikael Morin
af80460358 trans-array.c (gfc_conv_resolve_dependencies): Handle same-array transposed references.
2010-09-10  Mikael Morin  <mikael@gcc.gnu.org>

	* trans-array.c (gfc_conv_resolve_dependencies): Handle same-array
	transposed references.

From-SVN: r164158
2010-09-10 10:27:59 +00:00
Tobias Burnus
5d44e5c839 re PR fortran/45186 (Gfortran 4.5.0 emits wrong linenumbers)
2010-09-10  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45186
        * trans.h (build1_stat_loc, build2_stat_loc, build3_stat_loc,
        build4_stat_loc): New inline functions.
        (build1_loc, build2_loc, build3_loc, build4_loc): New macros.
        (build1_v, build2_v, build3_v, build4_v): Use input_location
        as locus.
        * trans-array.c (gfc_trans_scalarized_loop_end,
        gfc_conv_array_parameter): Replace build[1-4] by build[1-4]_loc.
        * trans.c (gfc_build_addr_expr, gfc_build_array_ref,
        gfc_finish_wrapped_block): Ditto.
        * trans-decl.c (gfc_init_default_dt, init_intent_out_dt): Ditto.
        * trans-expr.c (gfc_conv_missing_dummy,
        gfc_trans_alloc_subarray_assign, gfc_trans_zero_assign): Ditto.
        * trans-openmp.c (gfc_omp_clause_default_ctor,
        gfc_trans_omp_critical, gfc_trans_omp_parallel,
        gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
        gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections
        gfc_trans_omp_single, gfc_trans_omp_task,
        gfc_trans_omp_workshare): Ditto.

From-SVN: r164143
2010-09-10 08:01:50 +02:00
Mikael Morin
99da3840a2 trans-array.c (gfc_get_array_ref_dim): New function.
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 17:09:37 +00:00
Mikael Morin
e3cdb7cf9a trans-array.c (gfc_set_loop_bounds_from_array_spec): Get the array dimension from the dim array.
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 14:12:08 +00:00
Mikael Morin
79c3dc5f22 trans-array.c (gfc_trans_preloop_setup): Unconditionally use the dim array to get the stride in the innermost loop.
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 13:54:34 +00:00
Mikael Morin
ffc3bba45e trans-array.c (gfc_trans_create_temp_array): Don't set dim array.
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 13:41:54 +00:00
Mikael Morin
ea5e803f5d trans-array.c (gfc_trans_create_temp_array): Assert loop dimension and info dimension are the same.
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-09-09 13:25:07 +00:00
Mikael Morin
d09b9f672b trans-array.c (gfc_conv_array_transpose): Change generated descriptor name
2010-09-09  Mikael Morin  <mikael@gcc.gnu.org>

	* trans-array.c (gfc_conv_array_transpose): Change generated descriptor
	name

2010-09-09  Mikael Morin  <mikael@gcc.gnu.org>

	* gfortran.dg/inline_transpose_1.f90: New test.

From-SVN: r164087
2010-09-09 12:56:12 +00:00
Tobias Burnus
94471a5663 re PR fortran/45186 (Gfortran 4.5.0 emits wrong linenumbers)
2010-09-07  Tobias Burnus <burnus@net-b.de>

        PR fortran/45186
        * trans-array.c (gfc_conv_descriptor_data_get,
        gfc_conv_descriptor_data_set, gfc_conv_descriptor_data_addr,
        gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype,
        gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride,
        gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound,
        gfc_conv_shift_descriptor_lbound,
        gfc_set_loop_bounds_from_array_spec,
        gfc_trans_allocate_array_storage, gfc_trans_create_temp_array,
        gfc_conv_array_transpose, gfc_get_iteration_count,
        gfc_grow_array, gfc_trans_array_ctor_element,
        gfc_trans_array_constructor_subarray,
        gfc_trans_array_constructor_value,
        constant_array_constructor_loop_size,
        gfc_trans_array_constructor,
        gfc_set_vector_loop_bounds, gfc_trans_array_bound_check,
        gfc_conv_array_index_offset, gfc_conv_scalarized_array_ref,
        gfc_conv_array_ref, gfc_trans_preloop_setup,
        gfc_trans_scalarized_loop_end, gfc_conv_ss_startstride,
        gfc_conv_loop_setup, gfc_conv_array_extent_dim,
        gfc_conv_descriptor_size, gfc_array_init_size,
        gfc_array_allocate, gfc_array_deallocate,
        gfc_trans_array_bounds, gfc_trans_auto_array_allocation,
        gfc_trans_dummy_array_bias, gfc_get_dataptr_offset,
        get_array_charlen, gfc_conv_expr_descriptor,
        array_parameter_size, gfc_conv_array_parameter,
        gfc_trans_dealloc_allocated, get_full_array_size,
        duplicate_allocatable,
        structure_alloc_comps): Change fold_build[0-9] to
        fold_build[0-9]_loc.
        (duplicate_allocatable, structure_alloc_comps,
        gfc_duplicate_allocatable): Add space after function name.

From-SVN: r163964
2010-09-07 21:03:41 +02:00
Daniel Kraft
99d821c01c re PR fortran/29785 (Fortran 2003: POINTER Rank Remapping)
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
2010-08-19 18:02:30 +02:00
Paul Thomas
3d03ead0b8 re PR fortran/24524 (Fortran dependency checking should reverse loops)
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-23 14:25:55 +00:00
Mikael Morin
9157ccb29f trans-array.c (gfc_free_ss): Don't free beyond ss rank.
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-17 09:57:19 +00:00
Daniel Kraft
0019d49828 re PR fortran/44709 (BLOCK and GOTO/EXIT/CYCLE)
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-15 14:23:47 +02:00
Mikael Morin
859b660016 trans-array.c (gfc_conv_section_upper_bound): Remove
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-07-14 19:19:57 +00:00
Tobias Burnus
c829d0163d trans-decl.c: Include diagnostic-core.h besides toplev.h.
2010-07-06  Tobias Burnus  <burnus@net-b.de>

        * trans-decl.c: Include diagnostic-core.h besides toplev.h.
        * trans-intrinsic.c: Ditto.
        * trans-types.c: Ditto.
        * convert.c: Include diagnostic-core.h instead of toplev.h.
        * options.c: Ditto.
        * trans-array.c: Ditto.
        * trans-const.c: Ditto.
        * trans-expr.c: Ditto.
        * trans-io.c: Ditto.
        * trans-openmp.c: Ditto.
        * trans.c: Ditto.

From-SVN: r161885
2010-07-06 21:57:29 +02:00
Tobias Burnus
fe4e525c24 re PR fortran/40632 (Support F2008's contiguous attribute)
2010-06-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/40632
        * interface.c (compare_parameter): Add gfc_is_simply_contiguous
        checks.
        * symbol.c (gfc_add_contiguous): New function.
        (gfc_copy_attr, check_conflict): Handle contiguous attribute.
        * decl.c (match_attr_spec): Ditto.
        (gfc_match_contiguous): New function.
        * resolve.c (resolve_fl_derived, resolve_symbol): Handle
        contiguous.
        * gfortran.h (symbol_attribute): Add contiguous.
        (gfc_is_simply_contiguous): Add prototype.
        (gfc_add_contiguous): Add prototype.
        * match.h (gfc_match_contiguous): Add prototype.
        * parse.c (decode_specification_statement,
        decode_statement): Handle contiguous attribute.
        * expr.c (gfc_is_simply_contiguous): New function.
        * dump-parse-tree.c (show_attr): Handle contiguous.
        * module.c (ab_attribute, attr_bits, mio_symbol_attribute):
        Ditto.
        * trans-expr.c (gfc_add_interface_mapping): Copy
        attr.contiguous.
        * trans-array.c (gfc_conv_descriptor_stride_get,
        gfc_conv_array_parameter): Handle contiguous arrays.
        * trans-types.c (gfc_build_array_type, gfc_build_array_type,
        gfc_sym_type, gfc_get_derived_type, gfc_get_array_descr_info):
        Ditto.
        * trans.h (gfc_array_kind): Ditto.
        * trans-decl.c (gfc_get_symbol_decl): Ditto.

2010-06-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/40632
        * gfortran.dg/contiguous_1.f90: New.
        * gfortran.dg/contiguous_2.f90: New.
        * gfortran.dg/contiguous_3.f90: New.

From-SVN: r161079
2010-06-21 16:15:56 +02:00
Paul Thomas
546a65d9a8 re PR fortran/43895 ([OOP] internal compiler error: verify_ssa failed)
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-06-05 17:51:39 +00:00
Janus Weil
7a08eda161 gfortran.h (CLASS_DATA): New macro for accessing the $data component of a class container.
2010-05-30  Janus Weil  <janus@gcc.gnu.org>

	* gcc/fortran/gfortran.h (CLASS_DATA): New macro for accessing the
	$data component of a class container.
	* gcc/fortran/decl.c (attr_decl1): Use macro CLASS_DATA.
	* gcc/fortran/expr.c (gfc_check_pointer_assign,gfc_check_assign_symbol,
	gfc_has_ultimate_allocatable,gfc_has_ultimate_pointer): Ditto.
	* gcc/fortran/interface.c (matching_typebound_op): Ditto.
	* gcc/fortran/match.c (gfc_match_allocate, gfc_match_deallocate): Ditto.
	* gcc/fortran/parse.c (parse_derived): Ditto.
	* gcc/fortran/primary.c (gfc_match_varspec, gfc_variable_attr,
	gfc_expr_attr): Ditto.
	* gcc/fortran/resolve.c (resolve_structure_cons, find_array_spec,
	resolve_deallocate_expr, resolve_allocate_expr, resolve_select_type,
	resolve_fl_var_and_proc, resolve_typebound_procedure,
	resolve_fl_derived): Ditto.
	* gcc/fortran/symbol.c (gfc_type_compatible): Restructured.
	* gcc/fortran/trans-array.c (structure_alloc_comps): Use macro
	CLASS_DATA.
	* gcc/fortran/trans-decl.c (gfc_get_symbol_decl,
	gfc_trans_deferred_vars): Ditto.
	* gcc/fortran/trans-stmt.c (gfc_trans_allocate): Ditto.

From-SVN: r160060
2010-05-30 23:56:11 +02:00
Tobias Burnus
7274feea19 gfortran.h: Do not include system.h.
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
2010-05-23 19:18:24 +02:00
Steven Bosscher
a48ba7e10b trans-expr.c: Do not include convert.h, ggc.h, real.h, and gimple.h.
* 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
2010-05-20 20:57:45 +00:00
Daniel Franke
16e520b612 re PR fortran/42360 (intent(out)-dummy-not-set warning for types depends on order of component initializers)
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
2010-05-19 09:07:25 -04:00
Nathan Froyd
8748ad99e9 trans-array.c (gfc_trans_array_constructor_value): Use build_constructor instead of build_constructor_from_list.
* trans-array.c (gfc_trans_array_constructor_value): Use
	build_constructor instead of build_constructor_from_list.
	(gfc_build_constant_array_constructor): Likewise.
	* trans-decl.c (create_main_function): Likewise.
	* trans-stmt.c (gfc_trans_character_select): Likewise.

From-SVN: r159490
2010-05-17 16:03:46 +00:00
Daniel Franke
e588024304 re PR fortran/24978 (ICE in gfc_assign_data_value_range)
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-05-05 14:53:23 -04:00
Tobias Burnus
f33beee9f9 re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2010-04-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * resolve.c (resolve_allocate_expr): Allow array coarrays.
        * trans-types.h (gfc_get_array_type_bounds): Update prototype.
        * trans-types.c (gfc_get_array_type_bounds,
        gfc_get_array_descriptor_base): Add corank argument.
        * trans-array.c (gfc_array_init_size): Handle corank.
        (gfc_trans_create_temp_array, gfc_array_allocate,
        gfc_conv_expr_descriptor): Add corank argument to call.
        * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Ditto.

2010-04-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * gfortran.dg/coarray_7.f90: Modified and removed obsolete
        tests.
        * gfortran.dg/coarray_12.f90: New.

From-SVN: r158768
2010-04-27 10:41:00 +02:00
Steven G. Kargl
8583a5123e re PR fortran/30073 (Array out of bounds gives name of RHS array not LHS array)
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 20:32:04 +00:00
Paul Thomas
991b4da122 re PR fortran/43841 (Missing temporary for ELEMENTAL function call)
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-24 09:28:32 +00:00
Richard Guenther
92375a2020 re PR fortran/43829 (Scalarization of reductions)
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-22 08:34:41 +00:00
Steven G. Kargl
6c559604a8 re PR fortran/31538 (misleading bounds check error)
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
2010-04-17 21:05:53 +00:00
Steven G. Kargl
e3e529d14c re PR fortran/30073 (Array out of bounds gives name of RHS array not LHS array)
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-04-15 21:32:21 +00:00
Jerry DeLisle
b7e757713c [multiple changes]
2010-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* array.c (extract_element): Restore function from trunk.
	(gfc_get_array_element): Restore function from trunk.
	(gfc_expand_constructor): Restore check against
	flag_max_array_constructor.
	* constructor.c (node_copy_and_append): Delete unused.
	* gfortran.h: Delete comment and extra include.
	* constructor.h: Bump copyright and clean up TODO comments.
	* resolve.c: Whitespace.

2010-04-12  Daniel Franke  <franke.daniel@gmail.com>

	* simplify.c (compute_dot_product): Replaced usage of ADVANCE macro
	with direct access access to elements. Adjusted prototype, fixed all
	callers.
	(gfc_simplify_dot_product): Removed duplicate check for zero-sized
	array.
	(gfc_simplify_matmul): Removed usage of ADVANCE macro.
	(gfc_simplify_spread): Removed workaround, directly insert elements
	at a given array position.
	(gfc_simplify_transpose): Likewise.
	(gfc_simplify_pack): Replaced usage of ADVANCE macro with corresponding
	function calls.
	(gfc_simplify_unpack): Likewise.

2010-04-12  Daniel Franke  <franke.daniel@gmail.com>

	* simplify.c (only_convert_cmplx_boz): Renamed to ...
	(convert_boz): ... this and moved to start of file.
	(gfc_simplify_abs): Whitespace fix.
	(gfc_simplify_acos): Whitespace fix.
	(gfc_simplify_acosh): Whitespace fix.
	(gfc_simplify_aint): Whitespace fix.
	(gfc_simplify_dint): Whitespace fix.
	(gfc_simplify_anint): Whitespace fix.
	(gfc_simplify_and): Replaced if-gate by more common switch-over-type.
	(gfc_simplify_dnint): Whitespace fix.
	(gfc_simplify_asin): Whitespace fix.
	(gfc_simplify_asinh): Moved creation of result-expr out of switch.
	(gfc_simplify_atan): Likewise.
	(gfc_simplify_atanh): Whitespace fix.
	(gfc_simplify_atan2): Whitespace fix.
	(gfc_simplify_bessel_j0): Removed ATTRIBUTE_UNUSED.
	(gfc_simplify_bessel_j1): Likewise.
	(gfc_simplify_bessel_jn): Likewise.
	(gfc_simplify_bessel_y0): Likewise.
	(gfc_simplify_bessel_y1): Likewise.
	(gfc_simplify_bessel_yn): Likewise.
	(gfc_simplify_ceiling): Reorderd statements.
	(simplify_cmplx): Use convert_boz(), check for constant arguments.
	Whitespace fix.
	(gfc_simplify_cmplx): Use correct default kind. Removed check for
	constant arguments.
	(gfc_simplify_complex): Replaced if-gate. Removed check for
	constant arguments.
	(gfc_simplify_conjg): Whitespace fix.
	(gfc_simplify_cos): Whitespace fix.
	(gfc_simplify_cosh): Replaced if-gate by more common switch-over-type.
	(gfc_simplify_dcmplx): Removed check for constant arguments.
	(gfc_simplify_dble): Use convert_boz() and gfc_convert_constant().
	(gfc_simplify_digits): Whitespace fix.
	(gfc_simplify_dim): Whitespace fix.
	(gfc_simplify_dprod): Reordered statements.
	(gfc_simplify_erf): Whitespace fix.
	(gfc_simplify_erfc): Whitespace fix.
	(gfc_simplify_epsilon): Whitespace fix.
	(gfc_simplify_exp): Whitespace fix.
	(gfc_simplify_exponent): Use convert_boz().
	(gfc_simplify_floor): Reorderd statements.
	(gfc_simplify_gamma): Whitespace fix.
	(gfc_simplify_huge): Whitespace fix.
	(gfc_simplify_iand): Whitespace fix.
	(gfc_simplify_ieor): Whitespace fix.
	(simplify_intconv): Use gfc_convert_constant().
	(gfc_simplify_int): Use simplify_intconv().
	(gfc_simplify_int2): Reorderd statements.
	(gfc_simplify_idint): Reorderd statements.
	(gfc_simplify_ior): Whitespace fix.
	(gfc_simplify_ishftc): Removed duplicate type check.
	(gfc_simplify_len): Use range_check() instead of manual range check.
	(gfc_simplify_lgamma): Removed ATTRIBUTE_UNUSED. Whitespace fix.
	(gfc_simplify_log): Whitespace fix.
	(gfc_simplify_log10): Whitespace fix.
	(gfc_simplify_minval): Whitespace fix.
	(gfc_simplify_maxval): Whitespace fix.
	(gfc_simplify_mod): Whitespace fix.
	(gfc_simplify_modulo): Whitespace fix.
	(simplify_nint): Reorderd statements.
	(gfc_simplify_not): Whitespace fix.
	(gfc_simplify_or): Replaced if-gate by more common switch-over-type.
	(gfc_simplify_radix): Removed unused result-variable. Whitespace fix.
	(gfc_simplify_range): Removed unused result-variable. Whitespace fix.
	(gfc_simplify_real): Use convert_boz() and gfc_convert_constant().
	(gfc_simplify_realpart): Whitespace fix.
	(gfc_simplify_selected_char_kind): Removed unused result-variable.
	(gfc_simplify_selected_int_kind): Removed unused result-variable.
	(gfc_simplify_selected_real_kind): Removed unused result-variable.
	(gfc_simplify_sign): Whitespace fix.
	(gfc_simplify_sin): Whitespace fix.
	(gfc_simplify_sinh): Replaced if-gate by more common switch-over-type.
	(gfc_simplify_sqrt): Avoided goto by inlining check. Whitespace fix.
	(gfc_simplify_tan): Replaced if-gate by more common switch-over-type.
	(gfc_simplify_tanh): Replaced if-gate by more common switch-over-type.
	(gfc_simplify_xor): Replaced if-gate by more common switch-over-type.

2010-04-12  Daniel Franke  <franke.daniel@gmail.com>

	* gfortran.h (gfc_start_constructor): Removed.
	(gfc_get_array_element): Removed.
	* array.c (gfc_start_constructor): Removed, use gfc_get_array_expr 
	instead. Fixed all callers.
	(extract_element): Removed.
	(gfc_expand_constructor): Temporarily removed check for
	max-array-constructor. Will be re-introduced later if still required.
	(gfc_get_array_element): Removed, use gfc_constructor_lookup_expr
	instead. Fixed all callers.
	* expr.c (find_array_section): Replaced manual lookup of elements
	by gfc_constructor_lookup.

2010-04-12  Daniel Franke  <franke.daniel@gmail.com>

        * gfortran.h (gfc_get_null_expr): New prototype.
        (gfc_get_operator_expr): New prototype.
        (gfc_get_character_expr): New prototype.
        (gfc_get_iokind_expr): New prototype.
        * expr.c (gfc_get_null_expr): New.
        (gfc_get_character_expr): New.
        (gfc_get_iokind_expr): New.
        (gfc_get_operator_expr): Moved here from matchexp.c (build_node).
        * matchexp.c (build_node): Renamed and moved to
        expr.c (gfc_get_operator_expr). Reordered arguments to match 
        other functions. Fixed all callers.
        (gfc_get_parentheses): Use specific function to build expr.
        * array.c (gfc_match_array_constructor): Likewise.
        * arith.c (eval_intrinsic): Likewise.
        (gfc_hollerith2int): Likewise.
        (gfc_hollerith2real): Likewise.
        (gfc_hollerith2complex): Likewise.
        (gfc_hollerith2logical): Likewise.
        * data.c (create_character_intializer): Likewise.
        * decl.c (gfc_match_null): Likewise.
        (enum_initializer): Likewise.
        * io.c (gfc_match_format): Likewise.
        (match_io): Likewise.
        * match.c (gfc_match_nullify): Likewise.
        * primary.c (match_string_constant): Likewise.
        (match_logical_constant): Likewise.
        (build_actual_constructor): Likewise.
        * resolve.c (build_default_init_expr): Likewise.
        * symbol.c (generate_isocbinding_symbol): Likewise.
        (gfc_build_class_symbol): Likewise.
        (gfc_find_derived_vtab): Likewise.
        * simplify.c (simplify_achar_char): Likewise.
        (gfc_simplify_adjustl): Likewise.
        (gfc_simplify_adjustr): Likewise.
        (gfc_simplify_and): Likewise.
        (gfc_simplify_bit_size): Likewise.
        (gfc_simplify_is_iostat_end): Likewise.
        (gfc_simplify_is_iostat_eor): Likewise.
        (gfc_simplify_isnan): Likewise.
        (simplify_bound): Likewise.
        (gfc_simplify_leadz): Likewise.
        (gfc_simplify_len_trim): Likewise.
        (gfc_simplify_logical): Likewise.
        (gfc_simplify_maxexponent): Likewise.
        (gfc_simplify_minexponent): Likewise.
        (gfc_simplify_new_line): Likewise.
        (gfc_simplify_null): Likewise.
        (gfc_simplify_or): Likewise.
        (gfc_simplify_precision): Likewise.
        (gfc_simplify_repeat): Likewise.
        (gfc_simplify_scan): Likewise.
        (gfc_simplify_size): Likewise.
        (gfc_simplify_trailz): Likewise.
        (gfc_simplify_trim): Likewise.
        (gfc_simplify_verify): Likewise.
        (gfc_simplify_xor): Likewise.
        * trans-io.c (build_dt): Likewise.
        (gfc_new_nml_name_expr): Removed.

2010-04-12  Daniel Franke  <franke.daniel@gmail.com>

	* arith.h (gfc_constant_result): Removed prototype.
	* constructor.h (gfc_build_array_expr): Removed prototype.
	(gfc_build_structure_constructor_expr): Removed prototype.
	* gfortran.h (gfc_int_expr): Removed prototype.
	(gfc_logical_expr): Removed prototype.
	(gfc_get_array_expr): New prototype.
	(gfc_get_structure_constructor_expr): New prototype.
	(gfc_get_constant_expr): New prototype.
	(gfc_get_int_expr): New prototype.
	(gfc_get_logical_expr): New prototype.
	* arith.c (gfc_constant_result): Moved and renamed to
	expr.c (gfc_get_constant_expr). Fixed all callers.
	* constructor.c (gfc_build_array_expr): Moved and renamed to
	expr.c (gfc_get_array_expr). Split gfc_typespec argument to type
	and kind. Fixed all callers.
	(gfc_build_structure_constructor_expr): Moved and renamed to
	expr.c (gfc_get_structure_constructor_expr). Split gfc_typespec argument
	to type and kind. Fixed all callers.
	* expr.c (gfc_logical_expr): Renamed to ...
	(gfc_get_logical_expr): ... this. Added kind argument. Fixed all callers.
	(gfc_int_expr): Renamed to ...
	(gfc_get_int_expr): ... this. Added kind and where arguments. Fixed all
	callers.
	(gfc_get_constant_expr): New.
	(gfc_get_array_expr): New.
	(gfc_get_structure_constructor_expr): New.
	* simplify.c (int_expr_with_kind): Removed, callers use gfc_get_int_expr
	instead.

2010-04-12  Daniel Franke  <franke.daniel@gmail.com>

	* constructor.h: New.
	* constructor.c: New.
	* Make-lang.in: Add new files to F95_PARSER_OBJS.
	* arith.c (reducy_unary): Use constructor API.
	(reduce_binary_ac): Likewise.
	(reduce_binary_ca): Likewise.
	(reduce_binary_aa): Likewise.
	* check.c (gfc_check_pack): Likewise.
	(gfc_check_reshape): Likewise.
	(gfc_check_unpack): Likewise.
	* decl.c (add_init_expr_to_sym): Likewise.
	(build_struct): Likewise.
	* dependency.c (gfc_check_dependency): Likewise.
	(contains_forall_index_p): Likewise.
	* dump-parse-tree.c (show_constructor): Likewise.
	* expr.c (free_expr0): Likewise.
	(gfc_copy_expr): Likewise.
	(gfc_is_constant_expr): Likewise.
	(simplify_constructor): Likewise.
	(find_array_element): Likewise.
	(find_component_ref): Likewise.
	(find_array_section): Likewise.
	(find_substring_ref): Likewise.
	(simplify_const_ref): Likewise.
	(scalarize_intrinsic_call): Likewise.
	(check_alloc_comp_init): Likewise.
	(gfc_default_initializer): Likewise.
	(gfc_traverse_expr): Likewise.
	* iresolve.c (check_charlen_present): Likewise.
	(gfc_resolve_reshape): Likewise.
	(gfc_resolve_transfer): Likewise.
	* module.c (mio_constructor): Likewise.
	* primary.c (build_actual_constructor): Likewise.
	(gfc_match_structure_constructor): Likewise.
	* resolve.c (resolve_structure_cons): Likewise.
	* simplify.c (is_constant_array_expr): Likewise.
	(init_result_expr): Likewise.
	(transformational_result): Likewise.
	(simplify_transformation_to_scalar): Likewise.
	(simplify_transformation_to_array): Likewise.
	(gfc_simplify_dot_product): Likewise.
	(simplify_bound): Likewise.
	(simplify_matmul): Likewise.
	(simplify_minval_maxval): Likewise.
	(gfc_simplify_pack): Likewise.
	(gfc_simplify_reshape): Likewise.
	(gfc_simplify_shape): Likewise.
	(gfc_simplify_spread): Likewise.
	(gfc_simplify_transpose): Likewise.
	(gfc_simplify_unpack): Likewise.q
	(gfc_convert_constant): Likewise.
	(gfc_convert_char_constant): Likewise.
	* target-memory.c (size_array): Likewise.
	(encode_array): Likewise.
	(encode_derived): Likewise.
	(interpret_array): Likewise.
	(gfc_interpret_derived): Likewise.
	(expr_to_char): Likewise.
	(gfc_merge_initializers): Likewise.
	* trans-array.c (gfc_get_array_constructor_size): Likewise.
	(gfc_trans_array_constructor_value): Likewise.
	(get_array_ctor_strlen): Likewise.
	(gfc_constant_array_constructor_p): Likewise.
	(gfc_build_constant_array_constructor): Likewise.
	(gfc_trans_array_constructor): Likewise.
	(gfc_conv_array_initializer): Likewise.
	* trans-decl.c (check_constant_initializer): Likewise.
	* trans-expr.c (flatten_array_ctors_without_strlen): Likewise.
	(gfc_apply_interface_mapping_to_cons): Likewise.
	(gfc_trans_structure_assign): Likewise.
	(gfc_conv_structure): Likewise.
	* array.c (check_duplicate_iterator): Likewise.
	(match_array_list): Likewise.
	(match_array_cons_element): Likewise.
	(gfc_match_array_constructor): Likewise.
	(check_constructor_type): Likewise.
	(check_constructor): Likewise.
	(expand): Likewise.
	(expand_constructor): Likewise.
	(extract_element): Likewise.
	(gfc_expanded_ac): Likewise.
	(resolve_array_list): Likewise.
	(gfc_resolve_character_array_constructor): Likewise.
	(copy_iterator): Renamed to ...
	(gfc_copy_iterator): ... this.
	(gfc_append_constructor): Removed.
	(gfc_insert_constructor): Removed unused function.
	(gfc_get_constructor): Removed.
	(gfc_free_constructor): Removed.
	(qgfc_copy_constructor): Removed.
	* gfortran.h (struct gfc_expr): Removed member 'con_by_offset'.
	Removed all references. Replaced constructor list by splay-tree.
	(struct gfc_constructor): Removed member 'next', moved 'offset' from
	the inner struct, added member 'base'.
	(gfc_append_constructor): Removed prototype.
	(gfc_insert_constructor): Removed prototype.
	(gfc_get_constructor): Removed prototype.
	(gfc_free_constructor): Removed prototype.
	(qgfc_copy_constructor): Removed prototype.
	(gfc_copy_iterator): New prototype.
	* trans-array.h (gfc_constant_array_constructor_p): Adjusted prototype.

From-SVN: r158253
2010-04-13 01:59:35 +00:00
Tobias Burnus
d3a9eea2c0 re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2010-04-09  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * decl.c (variable_decl, match_attr_spec): Fix setting the array
        spec.
        * array.c (match_subscript,gfc_match_array_ref): Add coarray
        * support.
        * data.c (gfc_assign_data_value): Ditto.
        * expr.c (gfc_check_pointer_assign): Add check for coarray
        * constraint.
        (gfc_traverse_expr): Traverse also through codimension expressions.
        (gfc_is_coindexed, gfc_has_ultimate_allocatable,
        gfc_has_ultimate_pointer): New functions.
        * gfortran.h (gfc_array_ref_dimen_type): Add DIMEN_STAR for
        * coarrays.
        (gfc_array_ref): Add codimen.
        (gfc_array_ref): Add in_allocate.
        (gfc_is_coindexed, gfc_has_ultimate_allocatable,
        gfc_has_ultimate_pointer): Add prototypes.
        * interface.c (compare_parameter, compare_actual_formal,
        check_intents): Add coarray constraints.
        * match.c (gfc_match_iterator): Add coarray constraint.
        * match.h (gfc_match_array_ref): Update interface.
        * primary.c (gfc_match_varspec): Handle codimensions.
        * resolve.c (coarray_alloc, inquiry_argument): New static
        * variables.
        (check_class_members): Return gfc_try instead for error recovery.
        (resolve_typebound_function,resolve_typebound_subroutine,
        check_members): Handle return value of check_class_members.
        (resolve_structure_cons, resolve_actual_arglist, resolve_function,
        check_dimension, compare_spec_to_ref, resolve_array_ref,
        resolve_ref, resolve_variable, gfc_resolve_expr, conformable_arrays,
        resolve_allocate_expr, resolve_ordinary_assign): Add coarray
        support.
        * trans-array.c (gfc_conv_array_ref, gfc_walk_variable_expr):
        Skip over coarray refs.
        (gfc_array_allocate) Add support for references containing coindexes.
        * trans-expr.c (gfc_add_interface_mapping): Copy coarray
        * attribute.
        (gfc_map_intrinsic_function): Ignore codimensions.

2010-04-09  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * gfortran.dg/coarray_7.f90: New test.
        * gfortran.dg/coarray_8.f90: New test.

From-SVN: r158149
2010-04-09 07:54:29 +02:00
Tobias Burnus
2b56d6a425 re PR fortran/43178 (Pointless resetting to NULL for local ALLOCATABLEs)
2010-04-06  Tobias Burnus  <burnus@net-b.de>

        PR fortran/43178
        * trans-array.c (gfc_conv_expr_descriptor): Update
        gfc_trans_scalar_assign call.
        (has_default_initializer): New function.
        (gfc_trans_deferred_array): Nullify less often.
        * trans-expr.c (gfc_conv_subref_array_arg,
        gfc_trans_subcomponent_assign): Update call to
        gfc_trans_scalar_assign.
        (gfc_trans_scalar_assign): Add parameter and pass it on.
        (gfc_trans_assignment_1): Optionally, do not dealloc before
        assignment.
        * trans-openmp.c (gfc_trans_omp_array_reduction): Update
        call to gfc_trans_scalar_assign.
        * trans-decl.c (gfc_get_symbol_decl): Do not always apply
        initializer to static variables.
        (gfc_init_default_dt): Add dealloc parameter and pass it on.
        * trans-stmt.c (forall_make_variable_temp,
        generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp,
        gfc_trans_forall_1, gfc_trans_where_assign, gfc_trans_where_3
        gfc_trans_allocate): Update gfc_trans_assignment call.
        * trans.h (gfc_trans_scalar_assign, gfc_init_default_dt,
        gfc_init_default_dt, gfc_trans_assignment): Add bool dealloc
        parameter to prototype.

2010-04-06  Tobias Burnus  <burnus@net-b.de>

        PR fortran/43178
        * gfortran.dg/alloc_comp_basics_1.f90: Update
        * scan-tree-dump-times.
        * gfortran.dg/alloc_comp_constructor_1.f90: Ditto.
        * gfortran.dg/auto_dealloc_1.f90: Ditto.

From-SVN: r157993
2010-04-06 14:46:19 +02:00
Paul Thomas
fa502cb2db ioparm.def: Update copyright.
2010-04-01  Paul Thomas  <pault@gcc.gnu.org>

	* ioparm.def : Update copyright.
	* lang.opt : ditto
	* trans-array.c : ditto
	* trans-array.h : ditto
	* expr.c: ditto
	* trans-types.c: ditto
	* dependency.c : ditto
	* gfortran.h : ditto
	* options.c : ditto
	* trans-io.c : ditto
	* trans-intrinsic.c : ditto
	* libgfortran.h : ditto
	* invoke.texi : ditto
	* intrinsic.texi : ditto
	* trans.c : ditto
	* trans.h : ditto
	* intrinsic.c : ditto
	* interface.c : ditto
	* iresolve.c : ditto
	* trans-stmt.c : ditto
	* trans-stmt.h : ditto
	* parse,c : ditto
	* match.h : ditto
	* error.c : ditto

From-SVN: r157923
2010-04-01 18:06:05 +00:00
Tobias Burnus
b3aefde213 re PR fortran/43331 (Cray pointers generate bogus IL for the middle-end)
2010-03-17  Tobias Burnus  <burnus@net-b.de>

        PR fortran/43331
        * trans-array.c (gfc_conv_array_index_offset,gfc_conv_array_ref,
        gfc_conv_ss_startstride): Remove no-longer-needed cp_was_assumed
        check.
        * decl.c (gfc_match_derived_decl): Don't mark assumed-size Cray
        pointees as having explizit size.
        * expr.c (gfc_check_assign): Remove now unreachable Cray pointee
        check.
        * trans-types.c (gfc_is_nodesc_array): Add cp_was_assumed to
        * assert.
        (gfc_sym_type): Don't mark Cray pointees as restricted pointers.
        * resolve.c (resolve_symbol): Handle cp_was_assumed.
        * trans-decl.c (gfc_trans_deferred_vars): Ditto.
        (gfc_finish_var_decl): Don't mark Cray pointees as restricted
        pointers.

2010-03-17  Tobias Burnus  <burnus@net-b.de>

        PR fortran/43331
        * gfortran.dg/cray_pointers_1.f90: Update dg-error message.

From-SVN: r157512
2010-03-17 10:53:40 +01:00
Paul Thomas
ba4619917b re PR fortran/43243 ([4.4 Regression ?] Wrong-code due to missing array temp for DT with pointer component)
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-03 17:49:53 +00:00
Paul Thomas
2542496c70 re PR fortran/43180 (Bad results without temporary copy of intent(in) argument)
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-03-02 11:58:02 +00:00
Paul Thomas
f7172b55bb re PR fortran/36932 (unneeded temporary (2x))
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-20 12:46:43 +00:00
Paul Thomas
17555e7e36 re PR fortran/41113 (spurious _gfortran_internal_pack)
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-02-13 12:42:39 +00:00
Paul Thomas
40c3294835 re PR fortran/41478 (Corrupted memory using PACK for derived-types with allocated components)
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-14 06:17:38 +00:00
Jerry DeLisle
f2ff577a33 re PR fortran/20923 (gfortran slow for large array constructors)
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
2010-01-09 17:47:04 +00:00
Jakub Jelinek
c4fae39e15 trans-common.c (create_common): Remove unused offset variable.
* trans-common.c (create_common): Remove unused offset variable.
	* io.c (gfc_match_wait): Remove unused loc variable.
	* trans-openmp.c (gfc_trans_omp_clauses): Remove unused old_clauses
	variable.
	(gfc_trans_omp_do): Remove unused outermost variable.
	* iresolve.c (gfc_resolve_alarm_sub, gfc_resolve_fseek_sub): Remove
	unused status variable.
	* module.c (number_use_names): Remove unused c variable.
	(load_derived_extensions): Remove unused nuse variable.
	* trans-expr.c (gfc_conv_substring): Remove unused var variable.
	* trans-types.c (gfc_get_array_descr_info): Remove unused offset_off
	variable.
	* matchexp.c (match_primary): Remove unused where variable.
	* trans-intrinsic.c (gfc_conv_intrinsic_bound): Remove unused cond2
	variable.
	(gfc_conv_intrinsic_sizeof): Remove unused source variable.
	(gfc_conv_intrinsic_transfer): Remove unused stride variable.
	(gfc_conv_intrinsic_function): Remove unused isym variable.
	* arith.c (gfc_hollerith2real, gfc_hollerith2complex,
	gfc_hollerith2logical): Remove unused len variable.
	* parse.c (parse_derived): Remove unused derived_sym variable.
	* decl.c (variable_decl): Remove unused old_locus variable.
	* resolve.c (check_class_members): Remove unused tbp_sym variable.
	(resolve_ordinary_assign): Remove unused assign_proc variable.
	(resolve_equivalence): Remove unused value_name variable.
	* data.c (get_array_index): Remove unused re variable.
	* trans-array.c (gfc_conv_array_transpose): Remove unused src_info
	variable.
	(gfc_conv_resolve_dependencies): Remove unused aref and temp_dim
	variables.
	(gfc_conv_loop_setup): Remove unused dim and len variables.
	(gfc_walk_variable_expr): Remove unused head variable.
	* match.c (match_typebound_call): Remove unused var variable.
	* intrinsic.c (gfc_convert_chartype): Remove unused from_ts variable.

From-SVN: r154722
2009-11-28 13:13:21 +01:00