Commit Graph

50 Commits

Author SHA1 Message Date
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
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
Jerry DeLisle
401fcd3b8f re PR fortran/43217 (Output of Hollerith constants which are not a multiple of 4 bytes)
2010-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/43217
	* primary.c (match_hollerith_constant): Calculate padding needed to
	fill default integer and allocate string for that size.  Set pad bytes
	to ' '.
	* gfortran.h: Add hollerith pad value to type spec union.
	* data.c (create_character_initializer): Fix spelling of function name.
	Use hollerith pad value to calculate length.
	* arith.c (hollerith2representation); Use hollerith pad value to
	calculate length.

From-SVN: r163581
2010-08-27 06:50:03 +00:00
Mikael Morin
c9d75a48c4 decl.c (free_value): Also free repeat field.
2010-07-28  Mikael Morin  <mikael@gcc.gnu.org>

	* decl.c (free_value): Also free repeat field.
	* data.c (gfc_assign_data_value): Always free offset before returning.

From-SVN: r162649
2010-07-28 17:33:37 +00: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
Daniel Franke
66faed7643 re PR fortran/38404 (Warning message identifies incorrect line)
gcc/fortran/:
2010-05-19  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/38404
	* primary.c (match_string_constant): Move start_locus just inside 
	the string.
	* data.c (create_character_intializer): Clarified truncation warning.

gcc/testsuite/:
2010-05-19  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/38404
	* gfortran.dg/data_char_1.f90: Updated warning message.
	* gfortran.dg/data_array_6.f: New.

From-SVN: r159561
2010-05-19 08:55:26 -04: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
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
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
Janus Weil
bc21d3152f re PR fortran/40941 (gfc_typespec: put derived and cl into union)
2009-08-13  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/40941
	* gfortran.h (gfc_typespec): Put 'derived' and 'cl' into union.
	* decl.c (build_struct): Make sure 'cl' is only used
	if type is BT_CHARACTER.
	* symbol.c (gfc_set_default_type): Ditto.
	* resolve.c (resolve_symbol, resolve_fl_derived): Ditto.
	(resolve_equivalence,resolve_equivalence_derived): Make sure 'derived'
	is only used if type is BT_DERIVED.
	* trans-io.c (transfer_expr): Make sure 'derived' is only used if type
	is BT_DERIVED or BT_INTEGER (special case: C_PTR/C_FUNPTR).
	* array.c: Mechanical replacements to accomodate union in gfc_typespec.
	* check.c: Ditto.
	* data.c: Ditto.
	* decl.c: Ditto.
	* dump-parse-tree.c: Ditto.
	* expr.c: Ditto.
	* interface.c: Ditto.
	* iresolve.c: Ditto.
	* match.c: Ditto.
	* misc.c: Ditto.
	* module.c: Ditto.
	* openmp.c: Ditto.
	* parse.c: Ditto.
	* primary.c: Ditto.
	* resolve.c: Ditto.
	* simplify.c: Ditto.
	* symbol.c: Ditto.
	* target-memory.c: Ditto.
	* trans-array.c: Ditto.
	* trans-common.c: Ditto.
	* trans-const.c: Ditto.
	* trans-decl.c: Ditto.
	* trans-expr.c: Ditto.
	* trans-intrinsic.c: Ditto.
	* trans-io.c: Ditto.
	* trans-stmt.c: Ditto.
	* trans-types.c: Ditto.

From-SVN: r150725
2009-08-13 21:46:46 +02:00
Steven G. Kargl
5846213b87 re PR fortran/39893 ([4.4] gfortran ICE on invalid program)
2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/39893
	* gfortran.dg/assumed_charlen_dummy.f90: New Test.


2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/39893
	fortran/data.c (gfc_assign_data_value): If the lvalue is an 
	assumed character length entity in a data statement, then 
	return FAILURE to prevent segmentation fault.

From-SVN: r146816
2009-04-26 19:27:50 +00:00
Kaveh R. Ghazi
17b1d2a049 gfortran.h (try): Remove macro.
* gfortran.h (try): Remove macro.  Replace try with gfc_try
	throughout.
	* array.c: Likewise.
	* check.c: Likewise.
	* cpp.c: Likewise.
	* cpp.h: Likewise.
	* data.c: Likewise.
	* data.h: Likewise.
	* decl.c: Likewise.
	* error.c: Likewise.
	* expr.c: Likewise.
	* interface.c: Likewise.
	* intrinsic.c: Likewise.
	* intrinsic.h: Likewise.
	* io.c: Likewise.
	* match.h: Likewise.
	* parse.c: Likewise.
	* parse.h: Likewise.
	* resolve.c: Likewise.
	* scanner.c: Likewise.
	* simplify.c: Likewise.
	* symbol.c: Likewise.
	* trans-openmp.c: Likewise.
	* trans-types.c: Likewise.

From-SVN: r138226
2008-07-29 00:45:52 +00:00
Ralf Wildenhues
df2fba9e34 fmt_g0_3.f08: Fix typo in expected error message.
gcc/testsuite/

	* gfortran.dg/fmt_g0_3.f08: Fix typo in expected error message.

gcc/fortran/

	* expr.c (gfc_check_pointer_assign): Fix typo in string.
	* io.c (check_format): Fix typo in string.  Fix comment typos.
	* parse.c (gfc_global_used): Likewise.
	* resolve.c (resolve_allocate_expr): Likewise.
	* symbol.c (gfc_set_default_type): Likewise.
	* arith.c: Fix typos in comments.
	* array.c: Likewise.
	* data.c: Likewise.
	* decl.c: Likewise.
	* dependency.c: Likewise.
	* f95-lang.c: Likewise.
	* gfortran.h: Likewise.
	* matchexp.c: Likewise.
	* module.c: Likewise.
	* primary.c: Likewise.
	* scanner.c: Likewise.
	* trans-array.c: Likewise.
	* trans-common.c: Likewise.
	* trans-decl.c: Likewise.
	* trans-expr.c: Likewise.
	* trans-intrinsic.c: Likewise.
	* trans-types.c: Likewise.
	* trans.c: Likewise.
	* trans.h: Likewise.

From-SVN: r138040
2008-07-21 19:17:08 +00:00
Francois-Xavier Coudert
006601890b arith.c: (gfc_arith_concat...
* arith.c: (gfc_arith_concat, gfc_compare_string,
	gfc_compare_with_Cstring, hollerith2representation,
	gfc_hollerith2int, gfc_hollerith2real, gfc_hollerith2complex,
	gfc_hollerith2character, gfc_hollerith2logical): Use wide
	characters for character constants.
	* data.c (create_character_intializer): Likewise.
	* decl.c (gfc_set_constant_character_len): Likewise.
	* dump-parse-tree.c (show_char_const): Correctly dump wide
	character strings.
	error.c (print_wide_char): Rename into gfc_print_wide_char.
	(show_locus): Adapt to new prototype of gfc_print_wide_char.
	expr.c (free_expr0): Representation is now disjunct from
	character string value, so we always free it.
	(gfc_copy_expr, find_substring_ref, gfc_simplify_expr): Adapt
	to wide character strings.
	* gfortran.h (gfc_expr): Make value.character.string a wide string.
	(gfc_wide_toupper, gfc_wide_strncasecmp, gfc_wide_memset,
	gfc_widechar_to_char, gfc_char_to_widechar): New prototypes.
	(gfc_get_wide_string): New macro.
	(gfc_print_wide_char): New prototype.
	* io.c (format_string): Make a wide string.
	(next_char, gfc_match_format, compare_to_allowed_values, 
	gfc_match_open): Deal with wide strings.
	* module.c (mio_expr): Convert between wide strings and ASCII ones.
	* primary.c (match_hollerith_constant, match_charkind_name): 
	Handle wide strings.
	* resolve.c (build_default_init_expr): Likewise.
	* scanner.c (gfc_wide_toupper, gfc_wide_memset,
	gfc_char_to_widechar): New functions.
	(wide_strchr, gfc_widechar_to_char, gfc_wide_strncasecmp):
	Changes in prototypes.
	(gfc_define_undef_line, load_line, preprocessor_line,
	include_line, load_file, gfc_read_orig_filename): Handle wide
	strings.
	* simplify.c (gfc_simplify_achar, gfc_simplify_adjustl,
	gfc_simplify_adjustr, gfc_simplify_char, gfc_simplify_iachar,
	gfc_simplify_ichar, simplify_min_max, gfc_simplify_new_line,
	gfc_simplify_repeat): Handle wide strings.
	(wide_strspn, wide_strcspn): New helper functions.
	(gfc_simplify_scan, gfc_simplify_trim, gfc_simplify_verify):
	Handle wide strings.
	* symbol.c (generate_isocbinding_symbol): Likewise.
	* target-memory.c (size_character, gfc_target_expr_size,
	encode_character, gfc_target_encode_expr, gfc_interpret_character,
	gfc_target_interpret_expr): Handle wide strings.
	* trans-const.c (gfc_conv_string_init): Lower wide strings to
	narrow ones.
	(gfc_conv_constant_to_tree): Likewise.
	* trans-expr.c (gfc_conv_substring_expr): Handle wide strings.
	* trans-io.c (gfc_new_nml_name_expr): Likewise.
	* trans-stmt.c (gfc_trans_label_assign): Likewise.

From-SVN: r135006
2008-05-06 21:06:20 +00:00
Tom Tromey
2d593c86cf system.h (USE_MAPPED_LOCATION): Poison.
gcc
	* system.h (USE_MAPPED_LOCATION): Poison.
	* Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
	* tree-cfg.c (make_cond_expr_edges): Remove old location code.
	(make_goto_expr_edges): Likewise.
	(remove_bb): Likewise.
	(execute_warn_function_return): Likewise.
	* basic-block.h (struct edge_def) <goto_locus>: Change type to
	location_t.
	* c-common.c (fname_decl): Remove old location code.
	* tree-vect-transform.c (vect_finish_stmt_generation): Remove old
	location code.
	* rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
	variant.
	(ASM_INPUT_SOURCE_LOCATION): Likewise.
	(gen_rtx_ASM_INPUT): Likewise.
	(gen_rtx_ASM_INPUT_loc): Likewise.
	(get_rtx_asm_OPERANDS): Remove.
	* cfglayout.c (insn_locators_alloc): Remove old location code.
	(set_curr_insn_source_location): Likewise.
	(curr_insn_locator): Likewise.
	* print-tree.c (print_node): Remove old location code.
	* tree-mudflap.c (mf_varname_tree): Remove old location code.
	(mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
	* cfgexpand.c (expand_gimple_cond_expr): Don't use
	location_from_locus.
	(construct_exit_block): Remove old location code.
	* emit-rtl.c (force_next_line_note): Remove old location code.
	* profile.c (branch_prob): Remove old location code.
	* tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
	LOC_LINE): Remove old-location variants.
	* langhooks.c (lhd_print_error_function): Remove old location
	code.
	* configure, config.in: Rebuilt.
	* configure.ac (--enable-mapped-location): Remove.
	* c-decl.c (c_init_decl_processing): Remove old location code.
	(finish_function): Likewise.
	* recog.c (decode_asm_operands): Remove old location code.
	* c-pch.c (c_common_read_pch): Remove old location code.
	* rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
	variants.
	* gimple-low.c (lower_function_body): Remove old location code.
	* toplev.c (unknown_location): Remove.
	(push_srcloc): Remove old-location variant.
	(process_options): Remove old location code.
	(lang_dependent_init): Likewise.
	* input.h (UNKNOWN_LOCATION): Move definition.
	(location_t): Undeprecate.
	(source_locus): Remove.
	(location_from_locus): Remove.
	(struct location_s): Remove.
	Remove all old-location code.
	(input_line, input_filename): Remove.
	* final.c (final_scan_insn): Remove old location code.
	* diagnostic.c (diagnostic_build_prefix): Remove
	USE_MAPPED_LOCATION test.
	* tree.h (gimple_stmt) <locus>: Now a location_t.
	(tree_exp) <locus>: Likewise.
	(DECL_IS_BUILTIN): Remove old-location variant.
	(annotate_with_file_line, annotate_with_locus): Likewise.
	(expr_locus, set_expr_locus): Update.
	* tree.c (build1_stat): Remove old location code.
	(last_annotated_node): Remove.
	(annotate_with_file_line): Remove old-location variant.
	(annotate_with_locus): Likewise.
	(expr_location): Remove old location code.
	(set_expr_location): Likewise.
	(expr_has_location): Likewise.
	(expr_locus): Likewise.
	(set_expr_locus): Likewise.
	(expr_filename): Don't use location_from_locus.
	(expr_lineno): Likewise.
	* rtl-error.c (location_for_asm): Remove old location code.
	* c-lex.c (cb_line_change): Remove old location code.
	(fe_file_change): Likewise.
	(cb_def_pragma): Likewise.
	(c_lex_with_flags): Likewise.
	* gengtype.c (do_typedef): Don't special-case location types.
	(define_location_structures): Remove.
	(main): Don't call define_location_structures.
	* tree-pretty-print.c (dump_implicit_edges): Remove old location
	code.
gcc/ada
	* misc.c (internal_error_function): Remove test of
	USE_MAPPED_LOCATION.
	* trans.c (gigi): Remove test of USE_MAPPED_LOCATION.
	(Sloc_to_locus): Remove old location code.
gcc/cp
	* parser.c (eof_token): Remove old location code.
	(check_empty_body): Remove test of USE_MAPPED_LOCATION.
	* decl2.c (generate_ctor_or_dtor_function): Remove old location
	code.
	(cp_write_global_declarations): Likewise.
	* lex.c (cxx_init): Remove old location code.
	(handle_pragma_implementation): Remove test of
	USE_MAPPED_LOCATION.
	* pt.c (tsubst): Remove old location code.
	* error.c (cp_print_error_function): Remove test of
	USE_MAPPED_LOCATION.
	* decl.c (pop_label): Remove old location code.
	(finish_function): Likewise.
gcc/fortran
	* trans-io.c (set_error_locus): Remove old location code.
	* trans-decl.c (gfc_set_decl_location): Remove old location code.
	* f95-lang.c (gfc_init): Remove test of USE_MAPPED_LOCATION.
	* scanner.c (gfc_gobble_whitespace): Remove old location code.
	(get_file): Likewise.
	(preprocessor_line): Likewise.
	(load_file): Likewise.
	(gfc_new_file): Likewise.
	* trans.c (gfc_trans_runtime_check): Remove old location code.
	(gfc_get_backend_locus): Likewise.
	(gfc_set_backend_locus): Likewise.
	* data.c (gfc_assign_data_value): Remove old location code.
	* error.c (show_locus): Remove old location code.
	* gfortran.h (gfc_linebuf): Remove old location code.
	(gfc_linebuf_linenum): Remove old-location variant.
gcc/java
	* lang.c (java_post_options): Remove conditional.
	* expr.c (expand_byte_code): Remove old location code.
	* jcf-parse.c (set_source_filename): Remove old location code.
	(give_name_to_class): Likewise.
	(jcf_parse): Likewise.
	(duplicate_class_warning): Likewise.
	(parse_class_file): Likewise.
	(java_parse_file): Likewise.
	* decl.c (finish_method): Remove old location code.
	* class.c (push_class): Remove old location code.
gcc/objc
	* objc-act.c (objc_init): Remove old location code.
gcc/treelang
	* tree1.c (treelang_init): Remove old location code.
	(treelang_parse_file): Likewise.
	* lex.l (LINEMAP_POSITION_FOR_COLUMN): Remove.
	(update_lineno_charno): Remove old location code.

From-SVN: r132679
2008-02-26 16:05:24 +00:00
Tobias Schlüter
835aac9231 arith.c: Update copyright years.
* arith.c: Update copyright years.
* arith.h: Likewise.
* array.c: Likewise.
* bbt.c: Likewise.
* check.c: Likewise.
* data.c: Likewise.
* data.h: Likewise.
* decl.c: Likewise.
* dependency.c: Likewise.
* dependency.h: Likewise.
* dump-parse-tree.c: Likewise.
* error.c: Likewise.
* expr.c: Likewise.
* gfc-internals.texi: Likewise.
* gfortran.h: Likewise.
* gfortran.texi: Likewise.
* gfortranspec.c: Likewise.
* interface.c: Likewise.
* intrinsic.c: Likewise.
* intrinsic.h: Likewise.
* intrinsic.texi: Likewise.
* invoke.texi: Likewise.
* io.c: Likewise.
* iresolve.c: Likewise.
* iso-c-binding.def: Likewise.
* iso-fortran-env.def: Likewise.
* lang-specs.h: Likewise.
* lang.opt: Likewise.
* libgfortran.h: Likewise.
* match.c: Likewise.
* match.h: Likewise.
* matchexp.c: Likewise.
* misc.c: Likewise.
* module.c: Likewise.
* openmp.c: Likewise.
* options.c: Likewise.
* parse.c: Likewise.
* parse.h: Likewise.
* primary.c: Likewise.
* resolve.c: Likewise.
* scanner.c: Likewise.
* simplify.c: Likewise.
* st.c: Likewise.
* symbol.c: Likewise.
* target-memory.c: Likewise.
* target-memory.h: Likewise.
* trans-array.h: Likewise.
* trans-const.h: Likewise.
* trans-stmt.h: Likewise.
* trans-types.c: Likewise.
* trans-types.h: Likewise.
* types.def: Likewise.

From-SVN: r132600
2008-02-24 22:43:48 +01:00
Tobias Burnus
da36ba2754 re PR fortran/35093 (gfortran.dg/data_constraints_1.f90)
2008-02-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/35093
        * data.c (gfc_assign_data_value): Only free "size" if
        it has not already been freed.

From-SVN: r132128
2008-02-05 21:40:45 +01:00
Paul Thomas
3969f765e3 re PR fortran/32315 (DATA with implied-do: Bounds checks missing [regression vs. g77])
2008-02-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32315
	* data.c (gfc_assign_data_value): Add bounds check for array
	references.

2008-02-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32315
	* gfortran.dg/data_bounds_1.f90: New test.

From-SVN: r132113
2008-02-05 11:16:33 +00:00
Daniel Franke
7c8d270315 re PR fortran/34202 (ICE (segfault) for invalid code in formalize_init_expr (data.c:691))
gcc/fortran:
2008-01-24  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/34202
	* data.c (formalize_structure_cons): Skip formalization on
	empty structures.

gcc/testsuite:
2008-01-24  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/34202
        * gfortran.dg/empty_type.f90: New test.

From-SVN: r131810
2008-01-24 16:28:20 -05:00
Francois-Xavier Coudert
ca39e6f200 gfortran.h (gfc_get_data_variable, [...]): Move to decl.c.
* gfortran.h (gfc_get_data_variable, gfc_get_data_value,
	gfc_get_data): Move to decl.c.
	(global_used): Rename into gfc_global_used.
	(gfc_formalize_init_value, gfc_get_section_index,
	gfc_assign_data_value, gfc_assign_data_value_range,
	gfc_advance_section): Move to data.h.
	(gfc_set_in_match_data): Remove.
	* decl.c (gfc_get_data_variable, gfc_get_data_value,
	gfc_get_data): Move here.
	(gfc_set_in_match_data): Rename into set_in_match_data.
	(gfc_match_data): Likewise.
	(add_global_entry): Rename global_used into gfc_global_used.
	* data.c: Include data.h.
	* trans.h (gfc_todo_error): Remove.
	* trans-array.c (gfc_trans_array_constructor,
	gfc_conv_ss_startstride, gfc_conv_loop_setup): Change
	gfc_todo_error into assertions.
	* resolve.c (resolve_global_procedure): Rename global_used into
	gfc_global_used.
	* parse.c (gfc_global_used, parse_module, add_global_procedure,
	add_global_program): Likewise.
	* trans-intrinsic.c (gfc_walk_intrinsic_function): Rename
	global_used into gfc_global_used.
	* Make-lang.in: Add dependencies on fortran/data.h.
	* data.h: New file.

From-SVN: r129034
2007-10-05 12:33:07 +00:00
Nick Clifton
d234d78859 arith.c: Change copyright header to refer to version 3 of the GNU General Public...
* arith.c: Change copyright header to refer to version 3 of the GNU General 
  Public License and to point readers at the COPYING3 file and the FSF's 
  license web page.
* openmp.c, interface.c, intrinsic.c, trans-array.c, trans-expr.c, symbol.c, 
  iso-fortran-env.def, intrinsic.h, decl.c, trans-array.h, matchexp.c, 
  dump-parse-tree.c, trans-common.c, array.c, Make-lang.in, trans-openmp.c, 
  gfortran.h, error.c, iso-c-binding.def, lang.opt, data.c, trans-const.c, 
  trans-stmt.c, expr.c, trans-const.h, trans-stmt.h, module.c, trans.c, 
  scanner.c, trans-types.c, trans.h, gfortranspec.c, trans-types.h, 
  lang-specs.h, io.c, bbt.c, resolve.c, f95-lang.c, st.c, iresolve.c, match.c,
  trans-decl.c, trans-io.c, target-memory.c, match.h, target-memory.h, parse.c,
  arith.h, check.c, dependency.c, parse.h, types.def, convert.c, dependency.h,
  primary.c, trans-intrinsic.c, options.c, misc.c, simplify.c: Likewise.

From-SVN: r127129
2007-08-01 16:29:36 +00:00
Jerry DeLisle
a24668a34f re PR fortran/32432 (SEGV/endless loop after: "ERROR: ... already is initialized")
2007-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32432
	* gfortran.h: Change type of gfc_assign_data_value from void to try.
	* data.c (gfc_assign_data_value): Return FAILURE if error found.
	* resolve.c (check_data_variable): If gfc_assign_data_value returns
	failure, break out of loop and return failure.

From-SVN: r126282
2007-07-03 22:14:55 +00:00
Paul Thomas
d2088bb6d4 re PR fortran/20863 ([4.2 only] Pointer problems in PURE procedures)
2007-06-19  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20863
	PR fortran/20082
	* resolve.c (resolve_code): Use gfc_impure_variable as a
	condition for rejecting derived types with pointers, in pure
	procedures.
	(gfc_impure_variable): Add test for dummy arguments of pure
	procedures; any for functions and INTENT_IN for subroutines.

	PR fortran/32236
	* data.c (gfc_assign_data_value): Change the ICE on an array
	reference initializer not being an array into an error and
	clear init to prevent a repetition of the error.

2007-06-19  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20863
	PR fortran/20082
	* gfortran.dg/impure_assignment_2.f90 : New test.

	PR fortran/32236
	* gfortran.dg/data_initialized_2.f90 : New test.

	* gfortran.dg/equiv_7.f90 : Test for endianess and call the
	appropriate version of 'dmach'.

From-SVN: r125831
2007-06-18 23:04:28 +00:00
Brooks Moses
20585ad66a gfortran.h (gfc_expr): Remove from_H, add "representation" struct.
* gfortran.h (gfc_expr): Remove from_H, add "representation"
struct.
* primary.c (match_hollerith_constant): Store the representation
of the Hollerith in representation, not in value.character.
* arith.c: Add dependency on target-memory.h.
(eval_intrinsic): Remove check for from_H.
(hollerith2representation): New function.
(gfc_hollerith2int): Determine value of the new constant.
(gfc_hollerith2real): Likewise.
(gfc_hollerith2complex): Likewise.
(gfc_hollerith2logical): Likewise.
(gfc_hollerith2character): Point both representation.string and
value.character.string at the value string.
* data.c (create_character_initializer): For BT_HOLLERITH
rvalues, get the value from the representation rather than
value.character.
* expr.c (free_expr0): Update handling of BT_HOLLERITH values
and values with representation.string.
(gfc_copy_expr): Likewise.
* intrinsic.c (do_simplify): Remove special treatement of
variables resulting from Hollerith constants.
* dump-parse-trees.c (gfc_show_expr): Update handling of
Holleriths.
* trans-const.c (gfc_conv_constant_to_tree): Replace from_H
check with check for representation.string; get Hollerith
representation from representation.string, not value.character.
* trans-expr.c (is_zero_initializer_p): Replace from_H check
with check for representation.string.
* trans-stmt.c (gfc_trans_integer_select): Use
gfc_conv_mpz_to_tree for case values, so as to avoid picking up
the memory representation if the case is given by a transfer
expression.
* target-memory.c (gfc_target_encode_expr): Use the known memory
representation rather than the value, if it exists.
(gfc_target_interpret_expr): Store the memory representation of
the interpreted expression as well as its value.
(interpret_integer): Move to gfc_interpret_integer, make
non-static.
(interpret_float): Move to gfc_interpret_float, make non-static.
(interpret_complex): Move to gfc_interpret_complex, make
non-static.
(interpret_logical): Move to gfc_interpret_logical, make
non-static.
(interpret_character): Move to gfc_interpret_character, make
non-static.
(interpret_derived): Move to gfc_interpret_derived, make
non-static.
* target-memory.h: Add prototypes for newly-exported
gfc_interpret_* functions.

From-SVN: r125135
2007-05-28 11:20:29 -07:00
Steven G. Kargl
636dff67dd decl.c, [...]: Update Copyright dates.
2007-01-07  Steven G. Kargl  <kargl@gcc.gnu.org>

    * decl.c, dump-parse-tree.c, error.c, data.c, expr.c, dependency.c,
    convert.c:  Update Copyright dates.  Fix whitespace.

From-SVN: r120552
2007-01-07 19:39:52 +00:00
Bernhard Fischer
cd85e27a61 data.c (gfc_assign_data_value): Fix whitespace.
2007-01-07  Bernhard Fischer  <aldot@gcc.gnu.org>

        * data.c (gfc_assign_data_value): Fix whitespace.

From-SVN: r120551
2007-01-07 17:46:09 +01:00
Brooks Moses
e25a0da328 data.c: Remove trailing periods from error messages.
* data.c: Remove trailing periods from error messages.
* decl.c: Likewise.
* expr.c: Likewise.
* io.c: Likewise.
* match.c: Likewise.
* module.c: Likewise.
* options.c: Likewise.
* resolve.c: Likewise.
* symbol.c: Likewise.
* trans-io.c: Likewise.

From-SVN: r118880
2006-11-15 19:05:28 -08:00
Bud Davis
5868cbf992 re PR fortran/28974 (Extremely slow compilation of enumerated DATA statements.)
2006-11-15  Bud Davis <bdavis9659@sbcglobal.net>

        PR fortran/28974
        * gfortran.h (gfc_expr): Add element which holds a splay-tree
        for the exclusive purpose of quick access to a constructor by
        offset.
        * data.c (find_con_by_offset): Use the splay tree for the search.
        (gfc_assign_data_value): Use the splay tree.
        (gfc_assign_data_value_range): ditto.
        * expr.c (gfc_get_expr): Initialize new element to null.
        (gfc_free_expr): Delete splay tree when deleting gfc_expr.

From-SVN: r118844
2006-11-15 05:10:22 +00:00
Tobias Schlüter
bc0a33d315 data.c: Add 2006 to copyright years.
* data.c: Add 2006 to copyright years.
* interface.c: Same.
* misc.c: Same.
* trans-io.c: Same.

From-SVN: r118700
2006-11-11 18:10:24 +01:00
Francois-Xavier Coudert
150675a88b re PR fortran/29067 (gfc_resolve_expr(): Bad expression type)
PR fortran/29067

	* decl.c (gfc_set_constant_character_len): NULL-terminate the
	character constant string.
	* data.c (create_character_intializer): Likewise.
	* expr.c (gfc_simplify_expr): NULL-terminate the substring
	character constant.
	* primary.c (match_hollerith_constant): NULL-terminate the
	character constant string.

	* gfortran.dg/pr29067.f: New test.

From-SVN: r118338
2006-10-31 20:15:22 +00:00
Paul Thomas
5b440a1cf4 [multiple changes]
2006-10-17  Paul Thomas <pault@gcc.gnu.org>

	PR fortran/20541
	* trans-array.c (gfc_trans_array_bounds): Test for and set
	negative stride of a non-constant bound array to zero.

	PR fortran/29392
	* data.c (create_character_intializer): Copy and simplify
	the expressions for the start and end of a sub-string
	reference.

2006-10-17  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29392
	* gfortran.dg/data_char_3.f90: New test.

	PR fortran/20541
	* gfortran.dg/negative_automatic_size.f90: New test.

From-SVN: r117797
2006-10-16 22:29:46 +00:00
Steven G. Kargl
6c655c5e60 data.c (gfc_assign_data_value): Fix comment typo.
2006-06-05  Steven G. Kargl  <kargls@comcast.net>

        * data.c (gfc_assign_data_value):  Fix comment typo.  Remove
        a spurious return.

From-SVN: r114406
2006-06-05 19:50:05 +00:00
Paul Thomas
6690a9e079 re PR fortran/14067 (no warning when character data statement overflows declared size)
2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* data.c (create_character_intializer): Add warning message
	for truncated string.

	PR fortran/16943
	* symbol.c : Include flags.h.
	(gfc_add_type): If a procedure and types are the same do not
	throw an error unless standard is less than gnu or pedantic.

	PR fortran/20838
	* parse.c (parse_do_block): Error if named block do construct
	does not have a named enddo.

	PR fortran/27655
	* check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
	as well as target and put error return at end of function.

2006-06-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/14067
	* gfortran.dg/data_char_1.f90: Add messages for truncated
	strings.

	PR fortran/16943
	* gfortran.dg/func_decl_2.f90: New test.

	PR fortran/20838
	* gfortran.dg/do_2.f90: New test.

	PR fortran/27655
	* gfortran.dg/associated_3.f90: New test.

From-SVN: r114385
2006-06-05 07:45:03 +00:00
Per Bothner
45a82bd957 data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
* data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
	* scanner.c (gfc_gobble_whitespace): Likewise.

From-SVN: r114310
2006-06-01 09:18:34 -07:00
Francois-Xavier Coudert
223f9d5aaa re PR fortran/27552 (-fdump-parse-tree doesn't like Holleriths (but then, who does?))
2006-05-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
            Feng Wang  <fengwang@nudt.edu.cn>

        PR fortran/27552
        * dump-parse-tree.c (gfc_show_expr): Deal with Hollerith constants.
        * data.c (create_character_intializer): Set from_H flag if character is
        initialized by Hollerith constant.


Co-Authored-By: Feng Wang <fengwang@nudt.edu.cn>

From-SVN: r113881
2006-05-18 02:31:41 +00:00
Paul Thomas
4075a94ef5 re PR fortran/24534 (PUBLIC derived types with private components)
2005-11-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/24534
	* resolve.c (resolve_symbol): Exclude case of PRIVATE declared
	within derived type from error associated with PRIVATE type
	components within derived type.

	PR fortran/20838
	PR fortran/20840
	* gfortran.h: Add prototype for gfc_has_vector_index.
	* io.c (gfc_resolve_dt): Error if internal unit has a vector index.
	* expr.c (gfc_has_vector_index): New function to check if any of
	the array references of an expression have vector inidices.
	(gfc_check_pointer_assign): Error if internal unit has a vector index.

	PR fortran/17737
	* data.c (gfc_assign_data_value): Remove gcc_assert that caused the ICE
	and replace by a standard dependent warning/error if overwriting an
	existing initialization.
	* decl.c (gfc_data_variable): Remove old error for already initialized
	variable and the unused error check for common block variables.  Add
	error for hots associated variable and standard dependent error for
	common block variables, outside of blockdata.
	* symbol.c (check_conflict): Add constraints for DATA statement.

2005-11-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/24534
	gfortran.dg/private_type_2.f90: Modified to check that case with
	PRIVATE declaration within derived type is accepted.

	PR fortran/20838
	gfortran.dg/pointer_assign_1.f90: New test.

	PR fortran/20840
	* gfortran.dg/arrayio_0.f90: New test.

	PR fortran/17737
	gfortran.dg/data_initialized.f90: New test.
	gfortran.dg/data_constraints_1.f90: New test.
	gfortran.dg/data_constraints_2.f90: New test.

From-SVN: r106567
2005-11-06 20:05:12 +00:00
Jakub Jelinek
31f74accb2 re PR fortran/20063 (n*'xxxx' disables padding)
PR fortran/20063
	* data.c (gfc_assign_data_value_range): Call
	create_character_initializer if last_ts is a character type.

	* gfortran.fortran-torture/execute/data_4.f90: New test.

From-SVN: r102349
2005-07-25 09:51:12 +02:00
Kelley Cook
ab57747bb0 Update FSF address.
From-SVN: r101310
2005-06-25 00:40:37 +00:00
Kazu Hirata
aa9c57ecdb data.c, [...]: Fix comment typos.
* data.c, parse.c, trans-array.c, trans-decl.c,
	trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.c,
	trans.h: Fix comment typos.  Follow spelling conventions.

From-SVN: r100219
2005-05-26 18:36:11 +00:00
Kazu Hirata
e7dc5b4f22 data.c, [...]: Fix comment typos.
* data.c, dependency.c, f95-lang.c, io.c, trans-array.c,
	trans-decl.c, trans-expr.c, trans-intrinsic.c, trans-io.c,
	trans-stmt.c, trans-types.c, trans.h: Fix comment typos.
	Follow spelling conventions.

From-SVN: r94111
2005-01-23 14:36:26 +00:00
Kazu Hirata
1f2959f06e array.c, [...]: Fix comment typos.
* array.c, data.c, decl.c, dependency.c, error.c, f95-lang.c,
	interface.c, intrinsic.c, io.c, misc.c, module.c, parse.h,
	resolve.c, scanner.c, trans-array.c, trans-array.h,
	trans-common.c, trans-const.h, trans-decl.c, trans-expr.c,
	trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.c,
	trans.h: Fix comment typos.  Follow spelling conventions.

From-SVN: r87605
2004-09-16 16:00:45 +00:00
Kazu Hirata
13795658b5 data.c, [...]: Fix comment typos.
* data.c, decl.c, f95-lang.c, gfortran.h, match.c,
	trans-array.c, trans-common.c, trans-expr.c,
	trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.h: Fix
	comment typos.  Follow spelling conventions.

From-SVN: r87492
2004-09-14 12:37:28 +00:00
Paul Brook
6e45f57bf3 array.c: Don't include assert.h.
* array.c: Don't include assert.h.
	* data.c: Don't include assert.h.  Replace assert and abort with
	gcc_assert and gcc_unreachable.
	* dependency.c: Ditto.
	* f95-lang.c: Ditto.
	* iresolve.c: Ditto.
	* resolve.c: Ditto.
	* simplify.c: Ditto.
	* symbol.c: Ditto.
	* trans-array.c: Ditto.
	* trans-common.c: Ditto.
	* trans-const.c: Ditto.
	* trans-decl.c: Ditto.
	* trans-expr.c: Ditto.
	* trans-intrinsic.c: Ditto.
	* trans-io.c: Ditto.
	* trans-stmt.c: Ditto.
	* trans-types.c: Ditto.
	* trans.c: Ditto.

From-SVN: r87187
2004-09-08 14:33:03 +00:00
Richard Henderson
b85024359a re PR fortran/13465 (Data statement for large arrays compiles verrrry slllowwwly and shows quadratic behaviour.)
PR 13465
        * data.c (find_con_by_offset): Search ordered list; handle
        elements with repeat counts.
        (gfc_assign_data_value_range): New.
        * gfortran.h (struct gfc_data_value): Make repeat unsigned.
        (gfc_assign_data_value_range): Declare.
        * match.c (top_val_list): Extract repeat count into a temporary.
        * resolve.c (values): Make left unsigned.
        (next_data_value): Don't decrement left.
        (check_data_variable): Use gfc_assign_data_value_range.

From-SVN: r86443
2004-08-23 14:53:14 -07:00
Paul Brook
ec53454bff re PR fortran/14976 (.space is wrong)
PR fortran/14976
	PR fortran/16228
	* data.c (assign_substring_data_value): Remove.
	(create_character_intializer): New function.
	(gfc_assign_data_value): Track the typespec for the current
	subobject.  Use create_character_intializer.
testsuite/
	* gfortran.dg/data_char_1.f90: New test.

From-SVN: r86256
2004-08-19 16:45:21 +00:00
Tobias Schlüter
fd52837724 Make-lang.in (F95_OBJS, [...]): Alpabetize.
* Make-lang.in (F95_OBJS, F95_PARSER_OBJS): Alpabetize.  Move data.c
	* data.c (gfc_get_section_index):  Remove dependency on trans.h.

From-SVN: r83041
2004-06-12 19:48:41 +00:00
Tobias Schlüter
2fa548415a re PR fortran/15557 (Not Implemented: Substring reference in DATA statement)
fortran/
PR fortran/15557
* data.c (assign_substring_data_value): New function.
(gfc_assign_data_value): Call the new function if we're dealing
with a substring LHS.

testsuite/
PR fortran/15557
* gfortran.fortran-torture/execute/data_3.f90: New testcase.

From-SVN: r82570
2004-06-02 13:38:24 +02:00
Tobias Schlüter
9fc4d79ba4 Make-lang.in, [...]: Update copyright years and boilerplate.
* Make-lang.in, arith.c, arith.h, array.c, bbt.c, check.c,
decl.c, dependency.c, dependency.h, dump-parse-tree.c, error.c,
expr.c, f95-lang.c, gfortran.h, interface.c, intrinsic.c,
intrinsic.h, io.c, iresolve.c, lang-specs.h, match.c, match.h,
matchexp.c, misc.c, module.c, options.c, parse.c, parse.h,
primary.c, resolve.c, scanner.c, simplify.c, st.c, symbol.c,
trans-array.c, trans-array.h, trans-common.c, trans-const.c,
trans-const.h, trans-decl.c, trans-expr.c, trans-intrinsic.c,
trans-io.c, trans-stmt.c, trans-stmt.h, trans-types.c,
trans-types.h, trans.c, trans.h: Update copyright years and
boilerplate.
* data.c: Likewise, also removed two whitespace-only lines.
        * gfortranspec.c, lang.opt: Update copyright years.

From-SVN: r81839
2004-05-14 15:00:04 +02:00
Diego Novillo
6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00