aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
AgeCommit message (Collapse)AuthorFilesLines
2011-11-19re PR fortran/51207 ([OOP] Mark __def_init_... as FL_PARAMETER)Tobias Burnus4-3/+27
2011-11-19 Tobias Burnus <burnus@net-b.de> PR fortran/51207 * class.c (gfc_find_derived_vtab): Mark __def_init as PARAMETER and hence as TREE_READONLY; add subroutine attribute to __copy_ procedure. PR fortran/50640 * trans.h (GFC_DECL_PUSH_TOPLEVEL): New DECL_LANG_FLAG_7. * trans-decl.c (gfc_get_symbol_decl): Mark __def_init and vtab as GFC_DECL_PUSH_TOPLEVEL. (gfc_generate_function_code): If GFC_DECL_PUSH_TOPLEVEL, push it there. (build_function_decl): Push __copy_ procedure to the toplevel. From-SVN: r181505
2011-11-16re PR fortran/39427 (F2003: Procedures with same name as types/type ↵Tobias Burnus14-304/+802
constructors) gcc/fortran 2011-11-16 Tobias Burnus <burnus@net-b.de> PR fortran/39427 PR fortran/37829 * decl.c (match_data_constant, match_data_constant, * variable_decl, gfc_match_decl_type_spec, access_attr_decl, check_extended_derived_type, gfc_match_derived_decl, gfc_match_derived_decl, gfc_match_derived_decl) Modified to deal with DT constructors. * gfortran.h (gfc_find_dt_in_generic, gfc_convert_to_structure_constructor): New function prototypes. * interface.c (check_interface0, check_interface1, gfc_search_interface): Ignore DT constructors in generic list. * match.h (gfc_match_structure_constructor): Update prototype. * match.c (match_derived_type_spec): Ensure that one uses the DT not the generic function. * module.c (MOD_VERSION): Bump. (dt_lower_string, dt_upper_string): New functions. (find_use_name_n, find_use_operator, compare_true_names, find_true_name, add_true_name, fix_mio_expr, load_needed, read_module, write_dt_extensions, write_symbol): Changes to deal with different symtree vs. sym names. (create_derived_type): Create also generic procedure. * parse.c (gfc_fixup_sibling_symbols): Don't regard DT and * generic function as the same. * primary.c (gfc_convert_to_structure_constructor): New * function. (gfc_match_structure_constructor): Restructured; calls gfc_convert_to_structure_constructor. (build_actual_constructor, gfc_match_rvalue): Update for DT generic functions. * resolve.c (resolve_formal_arglist, resolve_structure_cons, is_illegal_recursion, resolve_generic_f, resolve_variable, resolve_fl_variable_derived, resolve_fl_derived0, resolve_symbol): Handle DT and DT generic constructors. * symbol.c (gfc_use_derived, gfc_undo_symbols, gen_special_c_interop_ptr, gen_cptr_param, generate_isocbinding_symbol, gfc_get_derived_super_type): Handle derived-types, which are hidden in the generic type. (gfc_find_dt_in_generic): New function * trans-array.c (gfc_conv_array_initializer): Replace * FL_PARAMETER expr by actual value. * trans-decl.c (gfc_get_module_backend_decl, * gfc_trans_use_stmts): Ensure that we use the DT and not the generic function. * trans-types.c (gfc_get_derived_type): Ensure that we use the * DT and not the generic procedure. gcc/testsuite/ 2011-11-16 Tobias Burnus <burnus@net-b.de> PR fortran/39427 PR fortran/37829 * gfortran.dg/constructor_1.f90: New. * gfortran.dg/constructor_2.f90: New. * gfortran.dg/constructor_3.f90: New. * gfortran.dg/constructor_4.f90: New. * gfortran.dg/constructor_5.f90: New. * gfortran.dg/constructor_6.f90: New. * gfortran.dg/use_only_5.f90: New. * gfortran.dg/c_ptr_tests_17.f90: New. * gfortran.dg/c_ptr_tests_18.f90: New. * gfortran.dg/used_types_25.f90: New. * gfortran.dg/used_types_26.f90: New * gfortran.dg/type_decl_3.f90: New. * gfortran.dg/function_types_3.f90: Update dg-error. * gfortran.dg/result_1.f90: Ditto. * gfortran.dg/structure_constructor_3.f03: Ditto. * gfortran.dg/structure_constructor_4.f03: Ditto. From-SVN: r181425
2011-11-14re PR fortran/51073 (_gfortran_caf_register incorrectly assumes malloc(0) ↵Tobias Burnus2-2/+11
returns non-NULL) 2011-11-14 Tobias Burnus <burnus@net-b.de> PR fortran/51073 * trans-decl.c (generate_coarray_sym_init): Handle zero-sized * arrays. From-SVN: r181348
2011-11-09symbol.c (clear_sym_mark, [...]): Remove functions.Tobias Burnus2-28/+66
2011-11-09 Tobias Burnus <burnus@net-b.de> * symbol.c (clear_sym_mark, traverse_ns): Remove functions. (count_st_nodes, do_traverse_symtree, fill_st_vector): New functions. (gfc_traverse_symtree, gfc_traverse_ns): Call do_traverse_symtree. From-SVN: r181232
2011-11-09PR 50016 Slow I/O on MingW due to _commitJanne Blomqvist2-0/+81
frontend ChangeLog: 2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/50016 * gfortran.texi (Data consistency and durability): New section. testsuite ChangeLog: 2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/50016 * gfortran.dg/inquire_size.f90: Don't flush the unit. libgfortran ChangeLog: 2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/50016 * io/inquire.c (inquire_via_unit): Flush the unit and use ssize. * io/unix.c (buf_flush): Don't call _commit. From-SVN: r181207
2011-11-09re PR fortran/50540 (Internal Error: Can't convert UNKNOWN to INTEGER(4) ↵Francois-Xavier Coudert2-4/+10
(r178939)) PR fortran/50540 * resolve.c (resolve_forall_iterators): Transform internal errors to normal errors. * gfortran.dg/forall_16.f90: New test. From-SVN: r181200
2011-11-09re PR fortran/50960 ([OOP] vtables not marked as constant)Janus Weil4-4/+15
2011-11-09 Janus Weil <janus@gcc.gnu.org> PR fortran/50960 * class.c (gfc_find_derived_vtab): Make the vtab symbols FL_PARAMETER. * expr.c (gfc_simplify_expr): Prevent vtabs from being replaced with their value. * resolve.c (resolve_values): Use-associated symbols do not need to be resolved again. (resolve_fl_parameter): Make sure the symbol has a value. From-SVN: r181199
2011-11-09re PR fortran/38718 (some simplifiers for elemental intrinsics missing; ↵Francois-Xavier Coudert4-2/+25
required for init expressions) PR fortran/38718 * intrinsic.c (add_functions): Add gfc_simplify_dreal. * intrinsic.h (gfc_simplify_dreal): New proto. * simplify.c (gfc_simplify_dreal): New function. * gfortran.dg/initialization_29.f90: Expand test. From-SVN: r181198
2011-11-09re PR fortran/21881 (ICE instead of error for large arrays in derived types)Francois-Xavier Coudert2-1/+7
PR fortran/21881 * trans-types.c (gfc_get_dtype): Issue a fatal error instead of an internal error. From-SVN: r181192
2011-11-08re PR fortran/50404 (SIGSEGV in gfc_resolve_close)Francois-Xavier Coudert2-0/+23
PR fortran/50404 * io.c (gfc_resolve_close): CLOSE requires a UNIT. * gfortran.dg/io_constraints_3.f90: Improve testcase. From-SVN: r181183
2011-11-08re PR fortran/50409 (SIGSEGV in gfc_simplify_expr)Francois-Xavier Coudert2-2/+8
PR fortran/50409 * expr.c (gfc_simplify_expr): Substrings can't have negative length. * gcc/testsuite/gfortran.dg/string_5.f90: Improve testcase. From-SVN: r181181
2011-11-08re PR fortran/50334 (interaction between -Wuninitialized and -finit-*)Francois-Xavier Coudert2-0/+10
PR fortran/50334 * invoke.texi (-finit-*): Document interaction with -Wuninitialized. From-SVN: r181150
2011-11-07re PR libfortran/49188 (Mismatch between -fsign-zero documentation and ↵Francois-Xavier Coudert4-28/+40
formatted output) PR libfortran/49188 PR libfortran/49336 * invoke.texi: Fix documentation of fsign-zero option. Remove contractions. * intrinsic.texi: Fix ATAN2 documentation for signed zeros. Remove contractions. * gfortran.texi: Remove contractions. From-SVN: r181127
2011-11-07re PR fortran/50919 ([OOP] Don't use vtable for NON_OVERRIDABLE TBP)Janus Weil3-26/+50
2011-11-07 Janus Weil <janus@gcc.gnu.org> PR fortran/50919 * class.c (add_proc_comp): Don't add non-overridable procedures to the vtable. * resolve.c (resolve_typebound_function,resolve_typebound_subroutine): Don't generate a dynamic _vptr call for non-overridable procedures. 2011-11-07 Janus Weil <janus@gcc.gnu.org> PR fortran/50919 * gfortran.dg/typebound_call_21.f03: New. From-SVN: r181107
2011-11-07clock and time are part of the C standard library.Janne Blomqvist2-6/+11
2011-11-07 Janne Blomqvist <jb@gcc.gnu.org> * intrinsic.texi (MCLOCK, MCLOCK8, TIME, TIME8): Functions clock and time are part of the C standard library. From-SVN: r181087
2011-11-06gfortran.h (gfc_extend_expr): Modified prototype.Janus Weil4-19/+20
2011-11-06 Janus Weil <janus@gcc.gnu.org> * gfortran.h (gfc_extend_expr): Modified prototype. * interface.c (gfc_extend_expr): Return 'match' instead of 'gfc_try'. Remove argument 'real_error'. * resolve.c (resolve_operator): Modified call to 'gfc_extend_expr'. From-SVN: r181044
2011-11-06Check in patch/merge from cxx-mem-model BranchAndrew Macleod2-1/+68
From-SVN: r181031
2011-11-04re PR fortran/43829 (Scalarization of reductions)Mikael Morin4-34/+217
PR fortran/43829 * trans-array.c (gfc_conv_expr_descriptor): Accept the inline intrinsic case in the assertion. * trans-intrinsic (enter_nested_loop): New function. (gfc_conv_intrinsic_arith): Support non-scalar cases. (nest_loop_dimension, walk_inline_intrinsic_arith): New functions. (walk_inline_intrinsic_function): Handle sum and product. (gfc_inline_intrinsic_function_p): Ditto. * trans.h (gfc_get_loopinfo): New macro. From-SVN: r180920
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent expression ↵Mikael Morin2-2/+10
variable. * trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent expression variable. Use it. From-SVN: r180919
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic.c): Introduce current loop pointer.Mikael Morin2-10/+17
* trans-intrinsic.c (gfc_conv_intrinsic.c): Introduce current loop pointer. Use it. From-SVN: r180918
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_arith): Small argument handling cleanup.Mikael Morin2-6/+12
* trans-intrinsic.c (gfc_conv_intrinsic_arith): Small argument handling cleanup. From-SVN: r180917
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions.Mikael Morin2-6/+10
* trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions. From-SVN: r180913
2011-11-04frontend-passes.c (cfe_register_funcs): Return early in the case of an ↵Mikael Morin2-3/+11
inline intrinsic function. * frontend-passes.c (cfe_register_funcs): Return early in the case of an inline intrinsic function. (optimize_binop_array_assignment): Skip optimization in the case of an inline intrinsic function. From-SVN: r180911
2011-11-04array.c (match_subscript): Skip whitespaces before setting locus.Mikael Morin3-0/+7
* array.c (match_subscript): Skip whitespaces before setting locus. * matchexp.c (match_level_1): Ditto. From-SVN: r180910
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Set loop's temporary rank ↵Mikael Morin2-5/+26
to the loop rank. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Set loop's temporary rank to the loop rank. Mark ss chains for multiple loop if necessary. Use gfc_trans_scalarized_loop_boundary to end one loop and start another. From-SVN: r180909
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set loop's temporary rank ↵Mikael Morin2-4/+27
to the loop rank. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set loop's temporary rank to the loop rank. Mark ss chains for multiple loop if necessary. Use gfc_trans_scalarized_loop_boundary to end one loop and start another. From-SVN: r180908
2011-11-04trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Don't calculate offset ↵Mikael Morin2-20/+13
twice in generated code. * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Don't calculate offset twice in generated code. From-SVN: r180907
2011-11-04trans-expr.c (gfc_conv_procedure_call): Handle temporaries for arguments to ↵Mikael Morin3-67/+67
elemental calls. * trans-expr.c (gfc_conv_procedure_call): Handle temporaries for arguments to elemental calls. * trans-stmt.c (replace_ss): New function. (gfc_conv_elemental_dependencies): Remove temporary loop handling. Create a new ss for the temporary and replace the original one with it. Remove fake array references. Recalculate all offsets. From-SVN: r180906
2011-11-04trans-array.h (gfc_free_ss, [...]): New prototypes.Mikael Morin3-14/+19
* trans-array.h (gfc_free_ss, gfc_set_delta): New prototypes. * trans-array.c (gfc_free_ss): Remove forward declaration. Make non-static. (set_delta, gfc_set_delta): Remove forward declaration. Make non-static and rename the former to the later. Update uses. From-SVN: r180905
2011-11-03trans.h (gfc_inline_intrinsic_function_p): Move prototype...Mikael Morin4-3/+21
* trans.h (gfc_inline_intrinsic_function_p): Move prototype... * gfortran.h (gfc_inline_intrinsic_function_p): ... here. * dependency.c (gfc_check_argument_var_dependency): Check dependencies of inline intrinsics' arguments. From-SVN: r180904
2011-11-03trans-array.c (gfc_trans_preloop_setup): New pointers to outer dimension's ↵Mikael Morin2-7/+32
ss and loop. * trans-array.c (gfc_trans_preloop_setup): New pointers to outer dimension's ss and loop. Use them. From-SVN: r180903
2011-11-03trans-array.c (outermost_loop): New function.Mikael Morin2-25/+47
* trans-array.c (outermost_loop): New function. (gfc_trans_array_constructor, gfc_set_vector_loop_bounds, gfc_add_loop_ss_code): Put generated code out of the outermost loop. From-SVN: r180902
2011-11-03trans-array.c (constant_array_constructor_loop_size): Handle multiple loops.Mikael Morin2-18/+29
* trans-array.c (constant_array_constructor_loop_size): Handle multiple loops. From-SVN: r180901
2011-11-03trans-array.c (get_rank, [...]): New functions.Mikael Morin2-7/+46
* trans-array.c (get_rank, get_loop_upper_bound_for_array): New functions. (gfc_trans_array_constructor): Handle multiple loops. From-SVN: r180900
2011-11-03trans.h (struct gfc_loopinfo): New field parent.Mikael Morin3-0/+36
* trans.h (struct gfc_loopinfo): New field parent. * trans-array.c (gfc_cleanup_loop): Free nested loops. (gfc_add_ss_to_loop): Set nested_loop's parent loop. (gfc_trans_array_constructor): Update assertion. (gfc_conv_loop_setup): Ditto. From-SVN: r180899
2011-11-03trans-array.c (gfc_add_loop_ss_code): Skip non-nestedmost ss.Mikael Morin2-3/+39
* trans-array.c (gfc_add_loop_ss_code): Skip non-nestedmost ss. Call recursively gfc_add_loop_ss_code for all the nested loops. (gfc_conv_ss_startstride): Only get the descriptor for the outermost ss. Call recursively gfc_conv_ss_startstride for all the nested loops. (set_loop_bounds): Call recursively for all the nested loops. (set_delta): Ditto. From-SVN: r180898
2011-11-03trans.h (struct gfc_loopinfo): New fields nested and next.Mikael Morin3-0/+25
* trans.h (struct gfc_loopinfo): New fields nested and next. * trans-array.c (gfc_add_ss_to_loop): Update list of nested list if ss has non-null nested_ss field. From-SVN: r180897
2011-11-03trans-array.c (gfc_trans_create_temp_array): Loop over the parents.Mikael Morin2-32/+43
* trans-array.c (gfc_trans_create_temp_array): Loop over the parents. From-SVN: r180895
2011-11-03trans-array.c (get_array_ref_dim, [...]): Rename the former to the latter ↵Mikael Morin2-14/+57
and loop over the parents. * trans-array.c (get_array_ref_dim, get_scalarizer_dim_for_array_dim): Rename the former to the latter and loop over the parents. (innermost_ss): New function. (get_array_ref_dim_for_loop_dim): New function. (gfc_trans_create_temp_array): Use get_scalarizer_dim_for_array_dim. (set_loop_bounds): Use get_array_dim_for_loop_dim). From-SVN: r180894
2011-11-03trans.h (struct gfc_ss): New field nested_ss.Mikael Morin3-1/+12
* trans.h (struct gfc_ss): New field nested_ss. * trans-expr.c (gfc_advance_se_ss_chain): Update assertion. From-SVN: r180893
2011-11-03trans-array.c (set_vector_loop_bounds): Loop over the parents.Mikael Morin2-5/+13
* trans-array.c (set_vector_loop_bounds): Loop over the parents. From-SVN: r180892
2011-11-03trans-array.c (gfc_trans_array_constructor): Loop over the parents.Mikael Morin2-10/+20
* trans-array.c (gfc_trans_array_constructor): Loop over the parents. From-SVN: r180891
2011-11-03trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the parents.Mikael Morin2-30/+48
* trans-array.c (gfc_set_loop_bounds_from_array_spec): Loop over the parents. From-SVN: r180890
2011-11-03trans.h (struct gfc_ss): New field parent.Mikael Morin4-2/+23
* trans.h (struct gfc_ss): New field parent. * trans-array.c (gfc_trans_scalarizing_loops): Skip clearing if a parent exists. * trans-expr.c (gfc_advance_se_ss_chain): Move to parent ss at the end of the chain. From-SVN: r180889
2011-11-03trans-array.h (gfc_trans_create_temp_array): Remove loop argument.Mikael Morin6-25/+33
* trans-array.h (gfc_trans_create_temp_array): Remove loop argument. * trans-array.c (gfc_trans_create_temp_array): Ditto. Get loop from ss. Update reference to loop. Remove loop argument. (gfc_trans_array_constructor, gfc_conv_loop_setup): Update calls to gfc_trans_create_temp_array. * trans-expr.c (gfc_conv_procedure_call): Ditto. * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ditto. * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. Set loop before calling gfc_trans_create_temp_array. From-SVN: r180888
2011-11-03trans-array.c (gfc_trans_create_temp_array): New variable total_dim.Mikael Morin2-4/+11
* trans-array.c (gfc_trans_create_temp_array): New variable total_dim. Set total_dim to loop's rank. Replace usages of loop's rank. From-SVN: r180887
2011-11-03trans-array.c (gfc_trans_array_constructor, [...]): Rename the former to the ↵Mikael Morin2-2/+11
later. * trans-array.c (gfc_trans_array_constructor, trans_array_constructor): Rename the former to the later. Get loop from ss. Remove loop argument. (gfc_add_loop_ss_code): Update call. From-SVN: r180886
2011-11-03trans-array.c (gfc_set_vector_loop_bounds): Get loop from ss.Mikael Morin2-2/+10
* trans-array.c (gfc_set_vector_loop_bounds): Get loop from ss. Remove loop argument. (gfc_add_loop_ss_code): Update call. From-SVN: r180885
2011-11-03trans.h (struct gfc_ss): New field loop.Mikael Morin3-0/+32
* trans.h (struct gfc_ss): New field loop. * trans-array.c (set_ss_loop): New function. (gfc_add_ss_to_loop): Call set_ss_loop. From-SVN: r180884
2011-11-03trans.h (struct gfc_ss_info): New field refcount.Mikael Morin3-0/+17
* trans.h (struct gfc_ss_info): New field refcount. * trans-array.c (free_ss_info): Decrement refcount. Return early if still non-zero. (gfc_get_array_ss, gfc_get_temp_ss, gfc_get_scalar_ss): Increment refcount. From-SVN: r180883