This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/36909] New: INTENT(IN) formal -> No need to call _gfortran_internal_unpack
- From: "burnus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Jul 2008 15:43:42 -0000
- Subject: [Bug fortran/36909] New: INTENT(IN) formal -> No need to call _gfortran_internal_unpack
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Currently, even for a INTENT(IN) variable _gfortran_internal_unpack is called.
D.1036 = _gfortran_internal_pack (&parm.1);
foo (D.1036);
if ((integer(kind=4)[0:] *) parm.1.data != (integer(kind=4)[0:] *) D.1036)
{
_gfortran_internal_unpack (&parm.1, D.1036);
if (D.1036 != 0B)
__builtin_free (D.1037);
}
For INTENT(IN) the _gfortran_internal_unpack call can be eliminated for good.
I think the rest can stay and also for INTENT(OUT) the status quo is OK.
Test case:
program test
implicit none
integer :: a(3,3)
call foo(a(1,:))
contains
subroutine foo(x)
integer,intent(in) :: x(3)
end subroutine foo
end program test
--
Summary: INTENT(IN) formal -> No need to call
_gfortran_internal_unpack
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36909