Bug 45474 - Missing definable check actuals to INTENT(INOUT) dummies of intrinsics
Summary: Missing definable check actuals to INTENT(INOUT) dummies of intrinsics
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.6.0
: P3 normal
Target Milestone: ---
Assignee: Daniel Kraft
URL:
Keywords: accepts-invalid
Depends on:
Blocks:
 
Reported: 2010-09-01 06:47 UTC by Tobias Burnus
Modified: 2010-09-23 08:40 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2010-09-22 10:05:06


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Burnus 2010-09-01 06:47:50 UTC
No error is printed for:

call execute_command_line("date", .true.,(1),(1),('aa'))
end

although the third to fifth argument are declared as INTENT(INOUT) in intrinsic.c and thus they have to be definable. The example is for execute_command_line, but I think it applies to all intrinsics.
Comment 1 Daniel Kraft 2010-09-22 10:05:06 UTC
Mine.
Comment 2 Daniel Kraft 2010-09-23 08:38:22 UTC
Subject: Bug 45474

Author: domob
Date: Thu Sep 23 08:37:54 2010
New Revision: 164550

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164550
Log:
2010-09-23  Daniel Kraft  <d@domob.eu>

	PR fortran/38936
	PR fortran/44044
	PR fortran/45474
	* gfortran.h (gfc_check_vardef_context): New method.
	(struct symbol_attribute): New flag `select_type_temporary'.
	* primary.c (gfc_variable_attr): Clarify initialization of ref.
	(match_variable): Remove PROTECTED check and assignment check
	for PARAMETERs (this is now done later).
	* match.c (gfc_match_iterator): Remove INTENT(IN) check.
	(gfc_match_associate): Defer initialization of newAssoc->variable.
	(gfc_match_nullify): Remove PURE definability check.
	(select_type_set_tmp): Set new `select_type_temporary' flag.
	* expr.c (gfc_check_assign): Remove INTENT(IN) check here.
	(gfc_check_pointer_assign): Ditto (and other checks removed).
	(gfc_check_vardef_context): New method.
	* interface.c (compare_parameter_protected): Removed.
	(compare_actual_formal): Use `gfc_check_vardef_context' for checks
	related to INTENT([IN]OUT) arguments.
	* intrinsic.c (check_arglist): Check INTENT for intrinsics.
	* resolve.c (gfc_resolve_iterator): Use `gfc_check_vardef_context'.
	(remove_last_array_ref): New method.
	(resolve_deallocate_expr), (resolve_allocate_expr): Ditto.
	(resolve_allocate_deallocate): Ditto (for STAT and ERRMSG).
	(resolve_assoc_var): Remove checks for definability here.
	(resolve_select_type): Handle resolving of code->block here.
	(resolve_ordinary_assign): Remove PURE check.
	(resolve_code): Do not resolve code->blocks for SELECT TYPE here.
	Use `gfc_check_vardef_context' for assignments and pointer-assignments.

2010-09-23  Daniel Kraft  <d@domob.eu>

	PR fortran/38936
	PR fortran/44044
	PR fortran/45474
	* gfortran.dg/intrinsic_intent_1.f03: New test.
	* gfortran.dg/select_type_17.f03: New test.
	* gfortran.dg/associate_5.f03: More definability tests.
	* gfortran.dg/enum_2.f90: Check definability.
	* gfortran.dg/allocatable_dummy_2.f90: Change expected error message.
	* gfortran.dg/allocate_alloc_opt_2.f90: Ditto.
	* gfortran.dg/char_expr_2.f90: Ditto.
	* gfortran.dg/deallocate_alloc_opt_2.f90: Ditto.
	* gfortran.dg/enum_5.f90: Ditto.
	* gfortran.dg/equiv_constraint_8.f90: Ditto.
	* gfortran.dg/impure_assignment_2.f90: Ditto.
	* gfortran.dg/impure_assignment_3.f90: Ditto.
	* gfortran.dg/intent_out_1.f90: Ditto.
	* gfortran.dg/intent_out_3.f90: Ditto.
	* gfortran.dg/pointer_assign_7.f90: Ditto.
	* gfortran.dg/pointer_intent_3.f90: Ditto.
	* gfortran.dg/pr19936_1.f90: Ditto.
	* gfortran.dg/proc_ptr_comp_3.f90: Ditto.
	* gfortran.dg/simpleif_2.f90: Ditto.
	* gfortran.dg/protected_5.f90: Ditto.
	* gfortran.dg/protected_4.f90: Ditto and remove invalid error check.
	* gfortran.dg/protected_6.f90: Ditto.
	* gfortran.dg/protected_7.f90: Ditto.

Added:
    trunk/gcc/testsuite/gfortran.dg/intrinsic_intent_1.f03
    trunk/gcc/testsuite/gfortran.dg/select_type_17.f03
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c
    trunk/gcc/fortran/gfortran.h
    trunk/gcc/fortran/interface.c
    trunk/gcc/fortran/intrinsic.c
    trunk/gcc/fortran/match.c
    trunk/gcc/fortran/primary.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/allocatable_dummy_2.f90
    trunk/gcc/testsuite/gfortran.dg/allocate_alloc_opt_2.f90
    trunk/gcc/testsuite/gfortran.dg/associate_5.f03
    trunk/gcc/testsuite/gfortran.dg/char_expr_2.f90
    trunk/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_2.f90
    trunk/gcc/testsuite/gfortran.dg/enum_2.f90
    trunk/gcc/testsuite/gfortran.dg/enum_5.f90
    trunk/gcc/testsuite/gfortran.dg/equiv_constraint_8.f90
    trunk/gcc/testsuite/gfortran.dg/impure_assignment_2.f90
    trunk/gcc/testsuite/gfortran.dg/impure_assignment_3.f90
    trunk/gcc/testsuite/gfortran.dg/intent_out_1.f90
    trunk/gcc/testsuite/gfortran.dg/intent_out_3.f90
    trunk/gcc/testsuite/gfortran.dg/pointer_assign_7.f90
    trunk/gcc/testsuite/gfortran.dg/pointer_intent_3.f90
    trunk/gcc/testsuite/gfortran.dg/pr19936_1.f90
    trunk/gcc/testsuite/gfortran.dg/proc_ptr_comp_3.f90
    trunk/gcc/testsuite/gfortran.dg/protected_4.f90
    trunk/gcc/testsuite/gfortran.dg/protected_5.f90
    trunk/gcc/testsuite/gfortran.dg/protected_6.f90
    trunk/gcc/testsuite/gfortran.dg/protected_7.f90
    trunk/gcc/testsuite/gfortran.dg/simpleif_2.f90

Comment 3 Daniel Kraft 2010-09-23 08:40:40 UTC
Fixed.