[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::fortran

Title:Digital Fortran
Notice:Read notes 1.* for important information
Moderator:QUARK::LIONEL
Created:Thu Jun 01 1995
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1333
Total number of notes:6734

1278.0. "passing automatic arrays?" by CSC32::J_HENSON (Don't get even, get ahead!) Wed Apr 30 1997 17:31

DFAV V7.1, OpenVMS V7.0, Alpha

Are there any limitations or restrictions to passing automatic arrays
as arguments?  That is, it is ok for subroutine 1 to declare an
automatic array, and pass that array as an argument to subroutine 2?
I have attached an example that illustrates my question.

The reason I ask is that a customer, using dfav v6.3, is getting
an accvio when doing this, but only whan he compiles with /optimize.
If he compiles with /noop, it's ok.  Is there any reason why the
optimizer would be touching an automatic array?  Should it be declared
volatile?

FWIW, when I try the code below on fortran v7.1 with full optimization,
it runs cleanly.  I realize that this doesn't mean that the optimizer
might not do something with it in a larger program, but thought I
should at least mention this.

Thanks,

Jerry

=======================================================================

        program auto_array
        implicit none
        call sub1(10)
        end
c
        subroutine sub1(n)
        integer*4  array(n)
        integer*4  i
c
        do I=1,n
           array(i) = i
        end do
c
        call sub2(array,n)
        return
        end

        subroutine sub2(array,n)
        integer*4 array(n)
        type *,n,array
        return
        end
T.RTitleUserPersonal
Name
DateLines
1278.1QUARK::LIONELFree advice is worth every centWed Apr 30 1997 22:443
    There are no restrictions - an automatic array is just an array.
    
    				Steve
1278.2automatic arrays are allocated on the stackMSBCS::SCHNEIDERSay it with ASCIIThu May 01 1997 09:234
    Could it be that the customer just ran out of stack space?  It doesn't
    seem surprising that optimized code would need a bit more stack.
    
    Chuck
1278.3ThanksCSC32::J_HENSONDon't get even, get ahead!Thu May 01 1997 11:2111
>>     <<< Note 1278.1 by QUARK::LIONEL "Free advice is worth every cent" >>>
>>
>>    There are no restrictions - an automatic array is just an array.
    
Thanks.  That's what I needed to know.  I'll pass that on to the customer.
If they still have problems, I'll request a small reproducer and go
from there.  It's been my experience that about half of the optimizer
problems that I see are cases of poor coding and the optimizer is
uncovering a bug instead of causing one.

Jerry
1278.4QUARK::LIONELFree advice is worth every centThu May 01 1997 12:113
Only half? :-)

			Steve