summaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
AgeCommit message (Collapse)Author
2018-05-24re PR fortran/85780 (ICE in resolve_fl_procedure, at fortran/resolve.c:12504)Steven G. Kargl
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85780 * resolve.c (resolve_fl_procedure): Avoid NULL dereference. 2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85780 * gfortran.dg/pr85780.f90: New test. From-SVN: r260698
2018-05-24re PR fortran/85895 (ICE in gfc_conv_array_ref, at fortran/trans-array.c:3518)Steven G. Kargl
2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85895 * resolve.c (resolve_sync): Resolve expression before checking for an error. 2018-05-24 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85895 * gfortran.dg/coarray_3.f90: Fix invalid testcase. * gfortran.dg/pr85895.f90: New test. From-SVN: r260696
2018-05-20re PR fortran/80657 (Loop in character function declaration)Paul Thomas
2018-05-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/80657 * resolve.c (flag_fn_result_spec): Use the 'sym' argument to test for self refs to the function result in the character len expression. If a self reference is found, emit an error and return true. (resolve_fntype): Use the function symbol in the calls to the above. 2018-05-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/80657 * gfortran.dg/char_result_18.f90: New test. From-SVN: r260415
2018-05-10re PR fortran/68846 (Pointer function as LValue doesn't work when the ↵Paul Thomas
assignment regards a dummy argument.) 2018-05-10 Paul Thomas <pault@gcc.gnu.org> PR fortran/68846 PR fortran/70864 * resolve.c (get_temp_from_expr): The temporary must not have dummy or intent attributes. 2018-05-10 Paul Thomas <pault@gcc.gnu.org> PR fortran/68846 * gfortran.dg/temporary_3.f90 : New test. PR fortran/70864 * gfortran.dg/temporary_2.f90 : New test. From-SVN: r260113
2018-04-09re PR fortran/51260 (PARAMETER array with constructor initializer: ↵Thomas Koenig
Compile-time simplify single element access) 2018-04-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51260 * resolve.c (resolve_variable): Simplify cases where access to a parameter array results in a single constant. 2018-04-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51260 * gfortran.dg/parameter_array_element_3.f90: New test. From-SVN: r259256
2018-03-11re PR fortran/83939 (Constraint C1290 (elemental function cannot be ↵Steven G. Kargl
allocatable) not enforced) 2018-03-11 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/83939 * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. 2018-03-11 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/83939 * gfortran.dg/pr83939.f90 From-SVN: r258437
2018-03-03re PR fortran/80965 (ICE with class argument and -O2 optimization)Paul Thomas
2018-03-03 Paul Thomas <pault@gcc.gnu.org> PR fortran/80965 * resolve.c (build_loc_call): Change symtree name from 'loc' to '_loc'. 2018-03-03 Paul Thomas <pault@gcc.gnu.org> PR fortran/80965 * gfortran.dg/select_type_41.f90: New test. From-SVN: r258195
2018-02-25re PR fortran/78238 ([OOP] ICE: verify_gimple failed, with -fdefault-integer-8)Thomas Koenig
2018-02-25 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/78238 * gfortran.h (gfc_integer_4_kind): Define. * resolve.c (resolve_select_type): Make sure that the kind of c->high is gfc_integer_4_kind. 2018-02-25 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/78238 * gfortran.dg/select_type_40.f90: New test. From-SVN: r257968
2018-02-19re PR fortran/83344 (Use of uninitialized memory with ASSOCIATE and strings)Paul Thomas
2018-02-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/83344 PR fortran/83975 * resolve.c (resolve_assoc_var): Rearrange the logic for the determination of the character length of associate names. If the associate name is missing a length expression or the length expression is not a constant and the target is not a variable, make the associate name allocatable and deferred length. * trans-decl.c (gfc_get_symbol_decl): Null the character length backend_decl for deferred length associate names that are not variables. Set 'length' to gfc_index_zero_node for character associate names, whose character length is a PARM_DECL. 2018-02-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/83344 PR fortran/83975 * gfortran.dg/associate_22.f90: Enable commented out test. * gfortran.dg/associate_36.f90: New test. From-SVN: r257827
2018-02-17re PR fortran/84115 (Failure in associate construct with concatenated ↵Paul Thomas
character target) 2018-02-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/84115 * resolve.c (resolve_assoc_var): If a non-constant target expr. has no string length expression, make the associate variable into a deferred length, allocatable symbol. * trans-decl.c (gfc_is_reallocatable_lhs): Add and use a ptr to the symbol. * trans-stmt.c (trans_associate_var): Null and free scalar associate names that are allocatable. After assignment, remove the allocatable attribute to prevent reallocation. 2018-02-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/84115 * gfortran.dg/associate_35.f90: Remove error, add stop n's and change to run. From-SVN: r257781
2018-02-12re PR fortran/84273 ([F03] Reject allocatable passed-object dummy argument ↵Janus Weil
(proc_ptr_47.f90)) 2018-02-12 Janus Weil <janus@gcc.gnu.org> PR fortran/84273 * resolve.c (resolve_component): Fix checks of passed argument in procedure-pointer components. 2018-02-12 Janus Weil <janus@gcc.gnu.org> PR fortran/84273 * gfortran.dg/proc_ptr_47.f90: Fix invalid test case. * gfortran.dg/proc_ptr_comp_pass_4.f90: Fix and extend test case. From-SVN: r257590
2018-02-11re PR fortran/35299 (scope of variables in statement function do not acquire ↵Francois-Xavier Coudert
rank from host) 2018-02-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/35299 * gfortran.dg/statement_function_3.f: New test. 2018-02-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/35299 * resolve.c (resolve_formal_arglist): Update error message. From-SVN: r257566
2018-02-01PR 83975 Associate target with non-constant character lengthJanne Blomqvist
When associating a variable of type character, if the length of the target isn't known at compile time, generate an error. See PR 83344 for more details. Regtested on x86_64-pc-linux-gnu. gcc/fortran/ChangeLog: 2018-02-01 Janne Blomqvist <jb@gcc.gnu.org> PR 83975 PR 83344 * resolve.c (resolve_assoc_var): Generate an error if target length unknown. From-SVN: r257310
2018-01-29re PR fortran/84073 (In -fc-prototypes fixed (nonzero) length strings are ↵Thomas Koenig
mapped to plain char in prototype.) 2017-01-29 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/84073 * resolve.c (resolve_component): Ensure BIND(C) character components have length one. (resolve_symbol): Likewise for variables. 2017-01-29 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/84073 * gfortran.dg/bind_c_usage_31.f90: New test. From-SVN: r257138
2018-01-26Partial Failed Images patchDamian Rouson
Co-Authored-By: Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> Co-Authored-By: Soren Rasmussen <s.c.rasmussen@gmail.com> From-SVN: r257105
2018-01-22PR 78534, 83704 Large character lengthsJanne Blomqvist
This patch fixes various parts of the code to use a larger type than int for the character length. Depending on the situation, HOST_WIDE_INT, size_t, or gfc_charlen_t is appropriate. Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu. gcc/fortran/ChangeLog: 2018-01-22 Janne Blomqvist <jb@gcc.gnu.org> PR 78534 PR 83704 * arith.c (gfc_arith_concat): Use size_t for string length. (gfc_compare_string): Likewise. (gfc_compare_with_Cstring): Likewise. * array.c (gfc_resolve_character_array_constructor): Use HOST_WIDE_INT, gfc_mpz_get_hwi. * check.c (gfc_check_fe_runtime_error): Use size_t. * data.c (create_character_initializer): Use HOST_WIDE_INT, gfc_extract_hwi. * decl.c (gfc_set_constant_character_len): Use gfc_charlen_t. (add_init_expr_to_sym): Use HOST_WIDE_INT. * expr.c (gfc_build_init_expr): Use HOST_WIDE_INT, gfc_extract_hwi. (gfc_apply_init): Likewise. * match.h (gfc_set_constant_character_len): Update prototype. * primary.c (match_string_constant): Use size_t. * resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT, gfc_mpz_get_hwi. * simplify.c (init_result_expr): Likewise. (gfc_simplify_len_trim): Use size_t. * target-memory.c (gfc_encode_character): Use size_t. (gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi. (interpret_array): Use size_t. (gfc_interpret_character): Likewise. * target-memory.h (gfc_encode_character): Update prototype. (gfc_interpret_character): Likewise. (gfc_target_interpret_expr): Likewise. * trans-const.c (gfc_build_string_const): Use size_t for length argument. (gfc_build_wide_string_const): Likewise. * trans-const.h (gfc_build_string_const): Likewise. (gfc_build_wide_string_const): Likewise. 2018-01-22 Janne Blomqvist <jb@gcc.gnu.org> PR 78534 PR 83704 * gfortran.dg/string_1.f90: Remove printing the length. From-SVN: r256944
2018-01-16re PR fortran/82257 (f951: Internal compiler error segmentation fault)Louis Krupp
2018-01-15 Louis Krupp <louis.krupp@zoho.com> PR fortran/82257 * interface.c (compare_rank): Don't try to retrieve CLASS_DATA from symbol marked unlimited polymorphic. * resolve.c (resolve_structure_cons): Likewise. * misc.c (gfc_typename): Don't dereference derived->components if it's NULL. 2018-01-15 Louis Krupp <louis.krupp@zoho.com> PR fortran/82257 * gfortran.dg/unlimited_polymorphic_28.f90: New test. From-SVN: r256720
2018-01-13re PR fortran/82007 (DTIO write format stored in a string leads to severe ↵Jerry DeLisle
errors) 2018-01-13 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/82007 * resolve.c (resolve_transfer): Delete code looking for 'DT' format specifiers in format strings. Set formatted to true if a format string or format label is present. * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix whitespace. From-SVN: r256649
2018-01-10re PR fortran/82367 (ICE with deferred length string allocate on ↵Steven G. Kargl
non-deferred length argument) 2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82367 * resolve.c (resolve_allocate_expr): Check for NULL pointer. 2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82367 * gfortran.dg/deferred_character_18.f90: New test. From-SVN: r256464
2018-01-10[multiple changes]Steven G. Kargl
2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/83093 * resolve.c (resolve_charlen): Check the type of cl->length after resolution. 2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/83093 * gfortran.dg/allocate_with_typespec_7.f90: New test. From-SVN: r256455
2018-01-05PR 78534 Change character length from int to size_tJanne Blomqvist
In order to handle large character lengths on (L)LP64 targets, switch the GFortran character length from an int to a size_t. This is an ABI change, as procedures with character arguments take hidden arguments with the character length. I also changed the _size member in vtables from int to size_t, as there were some cases where character lengths and sizes were apparently mixed up and caused regressions otherwise. Although I haven't tested, this might enable very large derived types as well. Also, as there are some places in the frontend were negative character lengths are used as special flag values, in the frontend the character length is handled as a signed variable of the same size as a size_t, although in the runtime library it really is size_t. I haven't changed the character length variables for the co-array intrinsics, as this is something that may need to be synchronized with OpenCoarrays. This is v5 of the patch. v4 was applied but caused breakage on big endian targets. These have been fixed and tested, thanks to access to the GCC compile farm. Overview of v4 of the patch: v3 was applied but had to reverted due to breaking bootstrap. The fix is in resolve.c:resolve_charlen, where it's necessary to check that an expression is constant before using mpz_sgn. Overview of v3 of the patch: All the issues pointed out by FX's review of v2 have been fixed. In particular, there are now new functions gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT instead of a long value. Similarly, gfc_get_int_expr now takes a HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by gfc_extract_hwi. Also, the preliminary work to handle gfc_charlen_type_node being unsigned has been removed. Regtested on x86_64-pc-linux-gnu, i686-pc-linux-gnu and powerpc64-unknown-linux-gnu. Also regtested all three targets by modifying gfortran-dg.exp to also test with "-g -flto", no new failures observed. frontend: 2018-01-05 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/78534 PR fortran/66310 * array.c (got_charlen): Use gfc_charlen_int_kind. * class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of hardcoded kind. (find_intrinsic_vtab): Likewise. * decl.c (match_char_length): Use gfc_charlen_int_kind. (add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind. (gfc_match_implicit): Use gfc_charlen_int_kind. * dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t. (show_expr): Use HOST_WIDE_INT_PRINT_DEC. * expr.c (gfc_get_character_expr): Length parameter of type gfc_charlen_t. (gfc_get_int_expr): Value argument of type HOST_WIDE_INT. (gfc_extract_hwi): New function. (simplify_const_ref): Make string_len of type gfc_charlen_t. (gfc_simplify_expr): Use HOST_WIDE_INT for substring refs. * frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind. * gfortran.h (gfc_mpz_get_hwi): New prototype. (gfc_mpz_set_hwi): Likewise. (gfc_charlen_t): New typedef. (gfc_expr): Use gfc_charlen_t for character lengths. (gfc_size_kind): New extern variable. (gfc_extract_hwi): New prototype. (gfc_get_character_expr): Use gfc_charlen_t for character length. (gfc_get_int_expr): Use HOST_WIDE_INT type for value argument. * gfortran.texi: Update description of hidden string length argument. * iresolve.c (check_charlen_present): Use gfc_charlen_int_kind. (gfc_resolve_char_achar): Likewise. (gfc_resolve_repeat): Pass string length directly without temporary, use gfc_charlen_int_kind. (gfc_resolve_transfer): Use gfc_charlen_int_kind. * match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen. * misc.c (gfc_mpz_get_hwi): New function. (gfc_mpz_set_hwi): New function. * module.c (atom_int): Change type from int to HOST_WIDE_INT. (parse_integer): Don't complain about large integers. (write_atom): Use HOST_WIDE_INT for integers. (mio_integer): Handle integer type mismatch. (mio_hwi): New function. (mio_intrinsic_op): Use HOST_WIDE_INT. (mio_array_ref): Likewise. (mio_expr): Likewise. * primary.c (match_substring): Use gfc_charlen_int_kind. * resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind. (resolve_character_operator): Likewise. (resolve_assoc_var): Likewise. (resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf. (resolve_charlen): Use mpz_sgn to determine sign. * simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t instead of long. * symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind. * target-memory.c (size_character): Length argument of type gfc_charlen_t. (gfc_encode_character): Likewise. (gfc_interpret_character): Use gfc_charlen_t. * target-memory.h (gfc_encode_character): Modify prototype. * trans-array.c (gfc_trans_array_ctor_element): Use existing type. (get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type. (trans_array_constructor): Use existing type. (get_array_charlen): Likewise. * trans-const.c (gfc_conv_mpz_to_tree_type): New function. * trans-const.h (gfc_conv_mpz_to_tree_type): New prototype. * trans-decl.c (gfc_trans_deferred_vars): Use existing type. (add_argument_checking): Likewise. * trans-expr.c (gfc_class_len_or_zero_get): Build const of type gfc_charlen_type_node. (gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of 4, fold_convert to correct type. (gfc_conv_class_to_class): Build const of type size_type_node for size. (gfc_copy_class_to_class): Likewise. (gfc_conv_string_length): Use same type in expression. (gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen. (gfc_conv_string_tmp): Make sure len is of the right type. (gfc_conv_concat_op): Use same type in expression. (gfc_conv_procedure_call): Likewise. (fill_with_spaces): Comment out memset() block due to spurious -Wstringop-overflow warnings. (gfc_trans_string_copy): Use gfc_charlen_type_node. (alloc_scalar_allocatable_for_subcomponent_assignment): fold_convert to right type. (gfc_trans_subcomponent_assign): Likewise. (trans_class_vptr_len_assignment): Build const of correct type. (gfc_trans_pointer_assignment): Likewise. (alloc_scalar_allocatable_for_assignment): fold_convert to right type in expr. (trans_class_assignment): Build const of correct type. * trans-intrinsic.c (gfc_conv_associated): Likewise. (gfc_conv_intrinsic_repeat): Do calculation in sizetype. * trans-io.c (gfc_build_io_library_fndecls): Use gfc_charlen_type_node for character lengths. (set_string): Convert to right type in assignment. * trans-stmt.c (gfc_trans_label_assign): Build const of gfc_charlen_type_node. (trans_associate_var): Likewise. (gfc_trans_character_select): Likewise. (gfc_trans_allocate): Likewise, don't typecast strlen result. (gfc_trans_deallocate): Don't typecast strlen result. * trans-types.c (gfc_size_kind): New variable. (gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind from size_type_node. * trans-types.h: Fix comment. testsuite: 2018-01-05 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/78534 PR fortran/66310 * gfortran.dg/char_cast_1.f90: Update scan pattern. * gfortran.dg/dependency_49.f90: Likewise. * gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T. * gfortran.dg/repeat_7.f90: New test for PR 66310. * gfortran.dg/scan_2.f90: Handle potential cast in assignment. * gfortran.dg/string_1.f90: Limit to ilp32 targets. * gfortran.dg/string_1_lp64.f90: New test. * gfortran.dg/string_3.f90: Limit to ilp32 targets. * gfortran.dg/string_3_lp64.f90: New test. libgfortran: 2019-01-05 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/78534 * intrinsics/args.c (getarg_i4): Use gfc_charlen_type. (get_command_argument_i4): Likewise. (get_command_i4): Likewise. * intrinsics/chmod.c (chmod_internal): Likewise. * intrinsics/env.c (get_environment_variable_i4): Likewise. * intrinsics/extends_type_of.c (struct vtype): Use size_t for size member. * intrinsics/gerror.c (gerror): Use gfc_charlen_type. * intrinsics/getlog.c (getlog): Likewise. * intrinsics/hostnm.c (hostnm_0): Likewise. * intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to work if gfc_charlen_type is unsigned. (string_scan): Likewise. * io/transfer.c (transfer_character): Modify prototype. (transfer_character_write): Likewise. (transfer_character_wide): Likewise. (transfer_character_wide_write): Likewise. (transfer_array): Typecast to avoid signed-unsigned comparison. * io/unit.c (is_trim_ok): Use gfc_charlen_type. * io/write.c (namelist_write): Likewise. * libgfortran.h (gfc_charlen_type): Change typedef to size_t. From-SVN: r256284
2018-01-03Update copyright years.Jakub Jelinek
From-SVN: r256169
2018-01-01re PR fortran/83076 (ICE in gfc_deallocate_scalar_with_status, at ↵Paul Thomas
fortran/trans.c:1598) 2018-01-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/83076 * resolve.c (resolve_fl_derived0): Add caf_token fields for allocatable and pointer scalars, when -fcoarray selected. * trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token field as well as the backend_decl. (gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module derived types that are not vtypes. Components with caf_token attribute are pvoid types. For a component requiring it, find the caf_token field and have the component token field point to its backend_decl. PR fortran/83319 *trans-types.c (gfc_get_array_descriptor_base): Add the token field to the descriptor even when codimen not set. 2018-01-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/83076 * gfortran.dg/coarray_45.f90 : New test. PR fortran/83319 * gfortran.dg/coarray_46.f90 : New test. From-SVN: r256065
2017-12-28PR fortran/83344 Don't set bogus constant valueJanne Blomqvist
This patch does not fix PR 83344, but merely fixes an error where we used to set a constant character length value from a non-constant expression, and thus set it to some bogus value. As a result of this, I have commented out part of the associate_22.f90 test which otherwise generates a warning message. Regtested on x86_64-pc-linux-gnu. gcc/fortran/ChangeLog: 2017-12-28 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/83344 * resolve.c (resolve_assoc_var): Don't set the constant value unless the target is a constant expression. gcc/testsuite/ChangeLog: 2017-12-28 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/83344 * gfortran.dg/associate_22.f90: Comment out part of test. From-SVN: r256021
2017-12-10re PR fortran/53478 (gfortran segfaults when module name clashes with C ↵Dominique d'Humieres
binding name of procedure) 2017-12-10 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/53478 * gfortran.h (gfc_find_case_gsymbol): New prototype. * symbol.c (gfc_find_case_gsymbol): New procedure, case insensistive version of gfc_find_gsymbol. * resolve.c (resolve_common_blocks): Use it. Replace %s with %qs where needed. * gfortran.dg/binding_label_tests_4.f03: Update dg-error. * gfortran.dg/binding_label_tests_6.f03: Likewise. * gfortran.dg/binding_label_tests_7.f03: Likewise. * gfortran.dg/binding_label_tests_8.f03: Likewise. * gfortran.dg/binding_label_tests_10_main.f03: Likewise. * gfortran.dg/binding_label_tests_11_main.f03: Likewise. * gfortran.dg/binding_label_tests_13_main.f03: Likewise. * gfortran.dg/test_common_binding_labels_3_main.f03: Likewise. * gfortran.dg/binding_label_tests_29.f90: New test. From-SVN: r255530
2017-12-01re PR fortran/82605 ([PDT] ICE in insert_parameter_exprs, at ↵Paul Thomas
fortran/decl.c:3154) 2017-12-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/82605 * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL. (resolve_pdt): Correct typo in prior comment. Emit an error if any parameters are deferred and the object is neither pointer nor allocatable. PR fortran/82606 * decl.c (gfc_get_pdt_instance): Continue if the parameter sym is not present or has no name. Select the parameter by name of component, rather than component order. Remove all the other manipulations of 'tail' when building the pdt instance. (gfc_match_formal_arglist): Emit and error if a star is picked up in a PDT decl parameter list. PR fortran/82622 * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an info->end, use it rather than falling through to gcc_unreachable. (structure_alloc_comps): Check that param->name is non-null before comparing with the component name. * trans-decl.c (gfc_get_symbol_decl): Do not use the static initializer for PDT symbols. (gfc_init_default_dt): Do nothing for PDT symbols. * trans-io.c (transfer_array_component): Parameterized array components use the descriptor ubound since the shape is not available. PR fortran/82719 PR fortran/82720 * trans-expr.c (gfc_conv_component_ref): Do not use the charlen backend_decl of pdt strings. Use the hidden component instead. * trans-io.c (transfer_expr): Do not do IO on "hidden" string lengths. Use the hidden string length for pdt string transfers by adding it to the se structure. When finished nullify the se string length. PR fortran/82866 * decl.c (gfc_match_formal_arglist): If a name is not found or star is found, while reading a type parameter list, emit an immediate error. (gfc_match_derived_decl): On reading a PDT parameter list, on failure to match call gfc_error_recovery. PR fortran/82978 * decl.c (build_struct): Character kind defaults to 1, so use kind_expr whatever is the set value. (gfc_get_pdt_instance): Ditto. * trans-array.c (structure_alloc_comps): Copy the expression for the PDT string length before parameter substitution. Use this expression for evaluation and free it after use. 2017-12-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/82605 * gfortran.dg/pdt_4.f03 : Incorporate the new error. PR fortran/82606 * gfortran.dg/pdt_19.f03 : New test. * gfortran.dg/pdt_21.f03 : New test. PR fortran/82622 * gfortran.dg/pdt_20.f03 : New test. * gfortran.dg/pdt_22.f03 : New test. PR fortran/82719 PR fortran/82720 * gfortran.dg/pdt_23.f03 : New test. PR fortran/82866 * gfortran.dg/pdt_24.f03 : New test. PR fortran/82978 * gfortran.dg/pdt_10.f03 : Correct for error in coding the for kind 4 component and change the kind check appropriately. * gfortran.dg/pdt_25.f03 : New test. From-SVN: r255311
2017-11-28re PR fortran/83021 (gfortran segfault in polymorphic assignment)Paul Thomas
2017-11-28 Paul Thomas <pault@gcc.gnu.org> PR fortran/83021 * resolve.c (resolve_component): Only escape for use assciated vtypes if the current namespace has no proc_name and is most particularly block data. From-SVN: r255202
2017-11-19re PR fortran/78990 (ICE when assigning polymorphic array function result)Paul Thomas
2017-11-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/78990 * expr.c (gfc_is_class_array_function): Renamed from 'gfc_is_alloc_class_array_function' and modified to return true for pointers as well as allocatable results. * gfortran.h : Change of name for prototype of above function. * trans-array.c (gfc_add_loop_ss_code): Force finalization of class array results. (build_class_array_ref): Change assertion into a condition. (build_class_array_ref): Set the se class_vptr for class array function results. (gfc_walk_function_expr): Reference gfc_is_class_array_function as above. * trans-decl.c (get_proc_result): Move it up before gfc_trans_deferred_vars. (gfc_trans_deferred_vars): Nullify explicit return class arrays on entry. * trans-expr.c (gfc_conv_class_to_class): Allow conversion of class array functions that have an se class_vptr and use it for the result vptr. (gfc_conv_subref_array_arg): Rename reference to the above function. (gfc_conv_procedure_call): Ditto. Add the se pre block to the loop pre block before the function is evaluated. Do not finalize class pointer results. (arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More renamed references. * trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto. 2017-11-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/78990 * gfortran.dg/class_67.f90: New test. From-SVN: r254936
2017-11-14re PR fortran/78240 (ICE in match_clist_expr, at fortran/decl.c:728)Fritz Reese
2017-11-13 Fritz Reese <fritzoreese@gmail.com> PR fortran/78240 gcc/fortran/ChangeLog: PR fortran/78240 * decl.c (match_clist_expr): Replace gcc_assert with proper handling of bad result from spec_size(). * resolve.c (check_data_variable): Avoid NULL dereference when passing locus to gfc_error. gcc/testsuite/ChangeLog: PR fortran/78240 * gfortran.dg/dec_structure_23.f90: New. * gfortran.dg/pr78240.f90: New. From-SVN: r254718
2017-11-11re PR fortran/82932 ([OOP] ICE in update_compcall_arglist, at ↵Janus Weil
fortran/resolve.c:5837) 2017-11-11 Janus Weil <janus@gcc.gnu.org> PR fortran/82932 * resolve.c (update_compcall_arglist): Improve error recovery, remove a gcc_assert. 2017-11-11 Janus Weil <janus@gcc.gnu.org> PR fortran/82932 * gfortran.dg/typebound_call_29.f90: New test. From-SVN: r254660
2017-11-05re PR fortran/78641 ([OOP] ICE on polymorphic allocatable function in array ↵Paul Thomas
constructor) 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/78641 * resolve.c (resolve_ordinary_assign): Do not add the _data component for class valued array constructors being assigned to derived type arrays. * trans-array.c (gfc_trans_array_ctor_element): Take the _data of class valued elements for assignment to derived type arrays. 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/78641 * gfortran.dg/class_66.f90: New test. From-SVN: r254428
2017-11-05re PR fortran/81447 ([7/8] gfortran fails to recognize the exact dynamic ↵Paul Thomas
type of a polymorphic entity that was allocated in a external procedure) 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/81447 PR fortran/82783 * resolve.c (resolve_component): There is no need to resolve the components of a use associated vtype. (resolve_fl_derived): Unconditionally generate a vtable for any module derived type, as long as the standard is F2003 or later and it is not a vtype or a PDT template. 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/81447 * gfortran.dg/class_65.f90: New test. * gfortran.dg/alloc_comp_basics_1.f90: Increase builtin_free count from 18 to 21. * gfortran.dg/allocatable_scalar_9.f90: Increase builtin_free count from 32 to 54. * gfortran.dg/auto_dealloc_1.f90: Increase builtin_free count from 4 to 10. * gfortran.dg/coarray_lib_realloc_1.f90: Increase builtin_free count from 3 to 6. Likewise _gfortran_caf_deregister from 2 to 3, builtin_malloc from 1 to 4 and builtin_memcpy|= MEM from 2 to 5. * gfortran.dg/finalize_28.f90: Increase builtin_free count from 3 to 6. * gfortran.dg/move_alloc_15.f90: Increase builtin_free and builtin_malloc counts from 11 to 14. * gfortran.dg/typebound_proc_27.f03: Increase builtin_free count from 7 to 10. Likewise builtin_malloc from 12 to 15. From-SVN: r254427
2017-11-04re PR fortran/82796 (Private+equivalence in used module breaks compilation ↵Steven G. Kargl
of pure function) 2017-11-01 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82796 * resolve.c (resolve_equivalence): An entity in a common block within a module cannot appear in an equivalence statement if the entity is with a pure procedure. 2017-11-01 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82796 * gfortran.dg/equiv_pure.f90: New test. From-SVN: r254403
2017-10-30resolve.c (resolve_transfer): Set derived to correct symbol for BT_CLASS.Steven G. Kargl
2017-10-30 Steven G. Kargl <kargl@gcc.gnu.org> * resolve.c (resolve_transfer): Set derived to correct symbol for BT_CLASS. 2017-10-30 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.dg/dtio_13.f90: Remove TODO comment and dg-error test. From-SVN: r254241
2017-10-21re PR fortran/82586 ([PDT] ICE: write_symbol(): bad module symbol)Paul Thomas
2017-10-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/82586 * decl.c (gfc_get_pdt_instance): Remove the error message that the parameter does not have a corresponding component since this is now taken care of when the derived type is resolved. Go straight to error return instead. (gfc_match_formal_arglist): Make the PDT relevant errors immediate so that parsing of the derived type can continue. (gfc_match_derived_decl): Do not check the match status on return from gfc_match_formal_arglist for the same reason. * resolve.c (resolve_fl_derived0): Check that each type parameter has a corresponding component. PR fortran/82587 * resolve.c (resolve_generic_f): Check that the derived type can be used before resolving the struture constructor. PR fortran/82589 * symbol.c (check_conflict): Add the conflicts involving PDT KIND and LEN attributes. 2017-10-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/82586 * gfortran.dg/pdt_16.f03 : New test. * gfortran.dg/pdt_4.f03 : Catch the changed messages. * gfortran.dg/pdt_8.f03 : Ditto. PR fortran/82587 * gfortran.dg/pdt_17.f03 : New test. PR fortran/82589 * gfortran.dg/pdt_18.f03 : New test. From-SVN: r253970
2017-10-19re PR fortran/82568 ([6/7/8] ICE with do-loop inside BLOCK inside omp)Jakub Jelinek
PR fortran/82568 * gfortran.h (gfc_resolve_do_iterator): Add a bool arg. (gfc_resolve_omp_local_vars): New declaration. * openmp.c (omp_current_ctx): Make static. (gfc_resolve_omp_parallel_blocks): Handle EXEC_OMP_TASKLOOP and EXEC_OMP_TASKLOOP_SIMD. (gfc_resolve_do_iterator): Add ADD_CLAUSE argument, if false, don't actually add any clause. Move omp_current_ctx test earlier. (handle_local_var, gfc_resolve_omp_local_vars): New functions. * resolve.c (gfc_resolve_code): Call gfc_resolve_omp_parallel_blocks instead of just gfc_resolve_omp_do_blocks for EXEC_OMP_TASKLOOP and EXEC_OMP_TASKLOOP_SIMD. (gfc_resolve_code): Adjust gfc_resolve_do_iterator caller. (resolve_codes): Call gfc_resolve_omp_local_vars. * gfortran.dg/gomp/pr82568.f90: New test. From-SVN: r253878
2017-10-19Use Levenshtein spelling suggestions in Fortran FEBernhard Reutner-Fischer
gcc/fortran/ChangeLog 2017-10-19 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> * gfortran.h (gfc_lookup_function_fuzzy): New declaration. (gfc_closest_fuzzy_match): New declaration. (vec_push): New definition. * misc.c (gfc_closest_fuzzy_match): New definition. * resolve.c: Include spellcheck.h. (lookup_function_fuzzy_find_candidates): New static function. (lookup_uop_fuzzy_find_candidates): Likewise. (lookup_uop_fuzzy): Likewise. (resolve_operator) <INTRINSIC_USER>: Call lookup_uop_fuzzy. (gfc_lookup_function_fuzzy): New definition. (resolve_unknown_f): Call gfc_lookup_function_fuzzy. * interface.c (check_interface0): Likewise. (lookup_arg_fuzzy_find_candidates): New static function. (lookup_arg_fuzzy ): Likewise. (compare_actual_formal): Call lookup_arg_fuzzy. * symbol.c: Include spellcheck.h. (lookup_symbol_fuzzy_find_candidates): New static function. (lookup_symbol_fuzzy): Likewise. (gfc_set_default_type): Call lookup_symbol_fuzzy. (lookup_component_fuzzy_find_candidates): New static function. (lookup_component_fuzzy): Likewise. (gfc_find_component): Call lookup_component_fuzzy. gcc/testsuite/ChangeLog 2017-10-19 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> * gfortran.dg/spellcheck-operator.f90: New testcase. * gfortran.dg/spellcheck-procedure_1.f90: New testcase. * gfortran.dg/spellcheck-procedure_2.f90: New testcase. * gfortran.dg/spellcheck-structure.f90: New testcase. * gfortran.dg/spellcheck-parameter.f90: New testcase. From-SVN: r253877
2017-10-18re PR fortran/79795 (Fortran ICE in resolve_symbol starting with r163221)Thomas Koenig
2017-10-18 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/79795 * resolve.c (resovle_symbol): Change gcc_assert to sensible error message. 2017-10-18 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/79795 * gfortran.dg/assumed_size_2.f90: New test. From-SVN: r253868
2017-10-13re PR fortran/81048 (incorrect derived type initialization)Paul Thomas
2017-10-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/81048 * resolve.c (resolve_symbol): Ensure that derived type array results get default initialization. 2017-10-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/81048 * gfortran.dg/derived_init_4.f90 : New test. From-SVN: r253738
2017-10-07re PR fortran/82375 (PDT components in PDT declarations fail to compile)Paul Thomas
2017-10-07 Paul Thomas <pault@gcc.gnu.org> PR fortran/82375 * class.c (gfc_find_derived_vtab): Return NULL for a passed pdt template to prevent bad procedures from being written. * decl.c (gfc_get_pdt_instance): Do not use the default initializer for pointer and allocatable pdt type components. If the component is allocatbale, set the 'alloc_comp' attribute of 'instance'. * module.c : Add a prototype for 'mio_actual_arglist'. Add a boolean argument 'pdt'. (mio_component): Call it for the parameter list of pdt type components with 'pdt' set to true. (mio_actual_arg): Add the boolean 'pdt' and, if it is set, call mio_integer for the 'spec_type'. (mio_actual_arglist): Add the boolean 'pdt' and use it in the call to mio_actual_arg. (mio_expr, mio_omp_udr_expr): Call mio_actual_arglist with 'pdt' set false. * resolve.c (get_pdt_spec_expr): Add the parameter name to the KIND parameter error. (get_pdt_constructor): Check that cons->expr is non-null. * trans-array.c (structure_alloc_comps): For deallocation of allocatable components, ensure that parameterized components are deallocated first. Likewise, when parameterized components are allocated, nullify allocatable components first. Do not recurse into pointer or allocatable pdt components while allocating or deallocating parameterized components. Test that parameterized arrays or strings are allocated before freeing them. (gfc_trans_pointer_assignment): Call the new function. Tidy up a minor whitespace issue. trans-decl.c (gfc_trans_deferred_vars): Set 'tmp' to NULL_TREE to prevent the expression from being used a second time. 2017-10-07 Paul Thomas <pault@gcc.gnu.org> PR fortran/82375 * gfortran.dg/pdt_13.f03 : New test. * gfortran.dg/pdt_14.f03 : New test. * gfortran.dg/pdt_15.f03 : New test. From-SVN: r253514
2017-10-07gfortran.h (async_io_dt): Add external reference.Thomas Koenig
2017-10-07 Thomas Koenig <tkoenig@gcc.gnu.org> * gfortran.h (async_io_dt): Add external reference. * io.c (async_io_dt): Add variable. (compare_to_allowed_values): Add prototyte. Add optional argument num. If present, set it to the number of the entry that was matched. (check_io_constraints): If this is for an asynchronous I/O statement, set async_io_dt and set the asynchronous flag for a SIZE tag. * resolve.c (resolve_transfer): If async_io_dt is set, set the asynchronous flag on the variable. (resolve_fl_namelist): If async_io_dt is set, set the asynchronous flag on all elements of the namelist. From-SVN: r253508
2017-10-04re PR fortran/60458 (Error message on associate: deferred type parameter and ↵Paul Thomas
requires either the pointer or allocatable attribute) 2017-10-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/60458 PR fortran/77296 * resolve.c (resolve_assoc_var): Deferred character type associate names must not receive an integer conatant length. * symbol.c (gfc_is_associate_pointer): Deferred character length functions also require an associate pointer. * trans-decl.c (gfc_get_symbol_decl): Deferred character length functions or derived type components require the assoc name to have variable string length. * trans-stmt.c (trans_associate_var): Set the string length of deferred string length associate names. The address expression is not needed for allocatable, pointer or dummy targets. Change the comment about defered string length targets. 2017-10-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/77296 * gfortran.dg/associate_32.f03 : New test. From-SVN: r253400
2017-10-02re PR fortran/82312 ([OOP] Pointer assignment to component of class variable ↵Paul Thomas
results wrong vptr for the variable.) 2017-10-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/82312 * resolve.c (gfc_resolve_code): Simplify condition for class pointer assignments becoming regular assignments by asserting that only class valued targets are permitted. * trans-expr.c (trans_class_pointer_fcn): New function using a block of code from gfc_trans_pointer_assignment. (gfc_trans_pointer_assignment): Call the new function. Tidy up a minor whitespace issue. 2017-10-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/82312 * gfortran.dg/typebound_proc_36.f90 : New test. From-SVN: r253362
2017-09-21re PR fortran/52832 ([F03] ASSOCIATE construct with proc-pointer selector is ↵Paul Thomas
rejected) 2017-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/52832 * match.c (gfc_match_associate): Before failing the association try again, allowing a proc pointer selector. PR fortran/80120 PR fortran/81903 PR fortran/82121 * primary.c (gfc_match_varspec): Introduce 'tgt_expr', which points to the associate selector, if any. Go through selector references, after resolution for variables, to catch any full or section array references. If a class associate name does not have the same declared type as the selector, resolve the selector and copy the declared type to the associate name. Before throwing a no implicit type error, resolve all allowed selector expressions, and copy the resulting typespec. PR fortran/67543 * resolve.c (resolve_assoc_var): Selector must cannot be the NULL expression and it must have a type. PR fortran/78152 * resolve.c (resolve_symbol): Allow associate names to be coarrays. 2017-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/78512 * gfortran.dg/associate_26.f90 : New test. PR fortran/80120 * gfortran.dg/associate_27.f90 : New test. PR fortran/81903 * gfortran.dg/associate_28.f90 : New test. PR fortran/82121 * gfortran.dg/associate_29.f90 : New test. PR fortran/67543 * gfortran.dg/associate_30.f90 : New test. PR fortran/52832 * gfortran.dg/associate_31.f90 : New test. From-SVN: r253077
2017-09-17re PR fortran/82173 ([meta-bug] Parameterized derived type errors)Paul Thomas
2017-09-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/82173 * decl.c (gfc_get_pdt_instance): Use the component initializer expression for the default, rather than the parameter value. * resolve.c (resolve_pdt): New function. (resolve_symbol): Call it. Remove false error, prohibiting deferred type parameters for dummy arguments. PR fortran/60483 * primary.c (gfc_match_varspec): If the type of an associate name is unknown and yet there is a match, try resolving the target expression and using its type. 2017-09-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/82173 * gfortran.dg/pdt_1.f03 : Eliminate spurious error checks. * gfortran.dg/pdt_2.f03 : The same. * gfortran.dg/pdt_3.f03 : The same. * gfortran.dg/pdt_4.f03 : Add 'modtype' and two new errors in module 'bad_vars'. Add error concerning assumed parameters and save attribute. * gfortran.dg/pdt_11.f03 : New test. PR fortran/60483 * gfortran.dg/associate_9.f90 : Remove XFAIL and change to run. * gfortran.dg/associate_25.f90 : New test. * gfortran.dg/pdt_12.f03 : New test. From-SVN: r252894
2017-09-09decl.c: Add decl_type_param_list...Paul Thomas
2017-09-09 Paul Thomas <pault@gcc.gnu.org> * decl.c : Add decl_type_param_list, type_param_spec_list as static variables to hold PDT spec lists. (build_sym): Copy 'type_param_spec_list' to symbol spec_list. (build_struct): Copy the 'saved_kind_expr' to the component 'kind_expr'. Check that KIND or LEN components appear in the decl_type_param_list. These should appear as symbols in the f2k_derived namespace. If the component is itself a PDT type, copy the decl_type_param_list to the component param_list. (gfc_match_kind_spec): If the KIND expression is parameterized set KIND to zero and store the expression in 'saved_kind_expr'. (insert_parameter_exprs): New function. (gfc_insert_kind_parameter_exprs): New function. (gfc_insert_parameter_exprs): New function. (gfc_get_pdt_instance): New function. (gfc_match_decl_type_spec): Match the decl_type_spec_list if it is present. If it is, call 'gfc_get_pdt_instance' to obtain the specific instance of the PDT. (match_attr_spec): Match KIND and LEN attributes. Check for the standard and for type/kind of the parameter. They are also not allowed outside a derived type definition. (gfc_match_data_decl): Null the decl_type_param_list and the type_param_spec_list on entry and free them on exit. (gfc_match_formal_arglist): If 'typeparam' is true, add the formal symbol to the f2k_derived namespace. (gfc_match_derived_decl): Register the decl_type_param_list if this is a PDT. If this is a type extension, gather up all the type parameters and put them in the right order. *dump-parse-tree.c (show_attr): Signal PDT templates and the parameter attributes. (show_components): Output parameter atrributes and component parameter list. (show_symbol): Show variable parameter lists. * expr.c (expr.c): Copy the expression parameter list. (gfc_is_constant_expr): Pass on symbols representing PDT parameters. (gfc_check_init_expr): Break on PDT KIND parameters and PDT parameter expressions. (gfc_check_assign): Assigning to KIND or LEN components is an error. (derived_parameter_expr): New function. (gfc_derived_parameter_expr): New function. (gfc_spec_list_type): New function. * gfortran.h : Add enum gfc_param_spec_type. Add the PDT attrs to the structure symbol_attr. Add the 'kind_expr' and 'param_list' field to the gfc_component structure. Comment on the reuse of the gfc_actual_arglist structure as storage for type parameter spec lists. Add the new field 'spec_type' to this structure. Add 'param_list' fields to gfc_symbol and gfc_expr. Add prototypes for gfc_insert_kind_parameter_exprs, gfc_insert_parameter_exprs, gfc_add_kind, gfc_add_len, gfc_derived_parameter_expr and gfc_spec_list_type. * interface.c (gfc_compare_derived_types): Treat PDTs in the same way as sequence types. * match.c : Add variable 'type_param_spec_list'. (gfc_op2string, gfc_match_member_sep, gfc_match_label): Remove trailing whitespace. (match_derived_type_spec): Match PDTs and find specific instance. (gfc_match_type_spec): Remove more trailing whitespace. (gfc_match_allocate): Assumed or deferred parameters cannot appear here. Copy the type parameter spec list to the expr for the allocatable entity. Free 'type_param_spec_list'. (gfc_match_common, gfc_match_namelist, gfc_match_module): Still more trailing whitespace to remove. (gfc_match_type_is): Allow PDT typespecs. * match.h : Modify prototypes for gfc_match_formal_arglist and gfc_match_actual_arglist. * module.c (ab_attribute, mstring attr_bits): PDT attributes added. (mio_symbol_attribute): PDT attributes handled. (mio_component): Deal with 'kind_expr' field. (mio_full_f2k_derived): For PDT templates, transfer the formal namespace symroot to the f2k_derived namespace. *primary.c (match_keyword_arg, gfc_match_actual_arglist): Add modifications to handle PDT spec lists. These are flagged in both cases by new boolean arguments, whose prototype defaults are false. (gfc_match_structure_constructor, match_variable): Remove yet more trailing whitespace. * resolve.c (get_pdt_spec_expr, get_pdt_constructor): New functions. (resolve_structure_cons): If the constructor is a PDT template, call get_pdt_constructor to build it using the parameter lists and then get the specific instance of the PDT. (resolve_component): PDT strings need a hidden string length component like deferred characters. (resolve_symbol): Dummy PDTs cannot have deferred parameters. * symbol.c (gfc_add_kind, gfc_add_len): New functions. (free_components): Free 'kind_expr' and 'param_list' fields. (gfc_free_symbol): Free the 'param_list' field. (gfc_find_sym_tree): If the current state is a PDT template, look for the symtree in the f2k_derived namspaces. trans-array.c (structure_alloc_comps): Allocate and deallocate PDTs. Check dummy arguments for compliance of LEN parameters. Add the new functions to the preceeding enum. (gfc_allocate_pdt_comp, gfc_deallocate_pdt_comp and gfc_check_pdt_dummy): New functions calling above. * trans-array.h : Add prototypes for these functions. trans-decl.c (gfc_get_symbol_decl): Call gfc_defer_symbol_init as appropriate for PDT symbols. (gfc_trans_deferred_vars): Allocate/deallocate PDT entities as they come into and out of scope. Exclude pdt_types from being 'gcc_unreachable'. (gfc_trans_subcomponent_assign): PDT array components must be handles as if they are allocatable. * trans-stmt.c (gfc_trans_allocate): Handle initialization of PDT entities. (gfc_trans_deallocate): Likewise. * trans-types.c (gfc_get_derived_type): PDT templates must not arrive here. PDT string components are handles as if deferred. Similarly, PDT arrays are treated as if allocatable. PDT strings are pointer types. * trans.c (gfc_deferred_strlen): Handle PDT strings in the same way as deferred characters. 2017-09-09 Paul Thomas <pault@gcc.gnu.org> * gfortran.dg/pdt_1.f03 : New test. * gfortran.dg/pdt_2.f03 : New test. * gfortran.dg/pdt_3.f03 : New test. * gfortran.dg/pdt_4.f03 : New test. * gfortran.dg/pdt_5.f03 : New test. From-SVN: r251925
2017-08-11re PR fortran/60355 ([F08] constraint C519 for BIND attribute not enforced)Thomas Koenig
2017-08-11 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/60355 * resolve.c (resolve_symbol): Adjust (and reformat) comment. Perform check if a BIND(C) is declared at module level regardless of whether it is typed implicitly or not. 2017-08-11 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/60355 * gfortran.dg (bind_c_usage_30): New test. From-SVN: r251054
2017-07-29simplify the bitmap alloc_stat functions with c++Trevor Saunders
gcc/fortran/ChangeLog: 2017-07-28 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * resolve.c (find_reachable_labels): Adjust. gcc/ChangeLog: 2017-07-28 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc. (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc. * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype. (bitmap_gc_alloc_stat): Likewise. (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust. From-SVN: r250709
2017-07-03re PR fortran/79866 (diagnostics: typo in "Variable %s at %L of type ↵Dominique d'Humieres
EVENT_TYPE") 2017-07-03 Dominique d'Humieres <dominiq@lps.ens.fr> PR fortran/79866 * resolve.c (resolve_symbol): Fix typo. PR testsuite/79866 * gfortran.dg/coarray_event_2.f08: New test. From-SVN: r249934
2017-05-22re PR fortran/80766 ([OOP] ICE with type-bound procedure returning an array)Janus Weil
2017-05-22 Janus Weil <janus@gcc.gnu.org> PR fortran/80766 * resolve.c (resolve_fl_derived): Make sure that vtype symbols are properly resolved. 2017-05-22 Janus Weil <janus@gcc.gnu.org> PR fortran/80766 * gfortran.dg/typebound_call_28.f90: New test. From-SVN: r248341