(Belongs to the features already implemented in several compilers, including ifort, g95, NAG f95, absoft) The INTENT applies to the value of the pointer, not the thing being pointed to. Main points (from 5.1.2.7): The INTENT (IN) attribute for a pointer dummy argument specifies that during the execution of the procedure its association shall not be changed except that it may become undefined if the target is deallocated other than through the pointer. The INTENT (OUT) attribute for a pointer dummy argument specifies that on invocation of the procedure the pointer association status of the dummy argument becomes undefined. Any actual argument associated with such a pointer dummy shall be a pointer variable. The INTENT (INOUT) attribute for a pointer dummy argument specifies that it is intended for use both to receive a pointer association from and to return a pointer association to the invoking scoping unit. Any actual argument associated with such a pointer dummy shall be a pointer variable. If a dummy argument is a derived-type object with a pointer component, then the pointer as a pointer is a subobject of the dummy argument, but the target of the pointer is not. Therefore, the restrictions on subobjects of the dummy object apply to the pointer in contexts where it is used as a pointer, but not in contexts where it is dereferenced to indicate its target. Similarly, the INTENT restrictions on pointer dummy arguments apply only to the association of the dummy argument; they do not restrict the operations allowed on its target. A pointer object with the INTENT (IN) attribute shall not appear as (1) A pointer-object in a nullify-stmt, (2) A data-pointer-object or proc-pointer-object in a pointer-assignment-stmt, (3) An allocate-object in an allocate-stmt or deallocate-stmt, or (4) An actual argument in a reference to a procedure if the associated dummy argument is a pointer with the INTENT (OUT) or INTENT (INOUT) attribute.
Confirmed Paul
It would help to confirm it! Paul
Subject: Bug number PR29624 A patch for this bug has been added to the patch tracker. The mailing list url for the patch is http://gcc.gnu.org/ml/gcc-patches/2006-12/msg00827.html
Subject: Bug 29624 Author: burnus Date: Fri Jan 5 09:08:37 2007 New Revision: 120472 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=120472 Log: fortran/ 2007-01-05 Tobias Burnus <burnus@net-b.de> PR fortran/29624 * interface.c (compare_parameter_intent): New function. (check_intents): Support pointer intents. * symbol.c (check_conflict): Support pointer intents, better conflict_std message. * expr.c (gfc_check_assign,gfc_check_pointer_assign): Support pointer intents. * resolve.c (resolve_deallocate_expr,resolve_allocate_expr): Support pointer intents. testsuite/ 2006-01-05 Tobias Burnus <burnus@net-b.de> PR fortran/29624 * gfortran.dg/alloc_alloc_expr_1.f90: Add check for invalid deallocate. * gfortran.dg/allocatable_dummy_2.f90: Update dg-error. * gfortran.dg/protected_4.f90: Add pointer intent check. * gfortran.dg/protected_6.f90: Add pointer intent check. * gfortran.dg/pointer_intent_1.f90: New test. * gfortran.dg/pointer_intent_2.f90: New test. * gfortran.dg/pointer_intent_3.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/pointer_intent_1.f90 trunk/gcc/testsuite/gfortran.dg/pointer_intent_2.f90 trunk/gcc/testsuite/gfortran.dg/pointer_intent_3.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/expr.c trunk/gcc/fortran/interface.c trunk/gcc/fortran/resolve.c trunk/gcc/fortran/symbol.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/alloc_alloc_expr_1.f90 trunk/gcc/testsuite/gfortran.dg/allocatable_dummy_2.f90 trunk/gcc/testsuite/gfortran.dg/protected_4.f90 trunk/gcc/testsuite/gfortran.dg/protected_6.f90
Fixed in 4.3.