finit-local-zero and default initialization

Asher Langton langton2@llnl.gov
Wed Jun 6 00:51:00 GMT 2007


On 6/5/07, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
> On Tue, Jun 05, 2007 at 04:50:43PM -0700, Asher Langton wrote:
> > I'm planning to add support for -finit-local-zero (PR20441), as well
> > as for arbitrary default initializations specified at compile-time.
> > One request from within LLNL has been for a way to control the default
> > initialization values at runtime, via some simple library routines
> > (set_default_integer, get_default_integer, etc.).  This would be very
> > useful for debugging large codes without recompiling an entire
> > project.  Any comments, suggestions, or objections?
> >
>
> I think the compile time options would be quite useful.
> Can you describe the runtime method?  Would
>
>    program test
>    integer i
>    print *, i
>    end progrma test
>
> compile to (pseudocode of course)
>
>   if (getenv(RUNTIME_INITIALIZE))
>     i = set_default_integer()
>
>   print i
>   end

The default initializations would be done only if specified at compile
time.  The runtime option would just change the values used for
default initialization.  So if default initialization was specified at
compile time, the compiled code would be something like:

i = get_default_integer()
print i
end

By default, get_default_integer() would evaluate to 0, but a different
value could be specified at compile time (via a compiler flag) or at
runtime by calling set_default_integer.  Then a user could write a
driver program to do something like:

set_default_integer (-2147483648)
call massive_program
set_default_integer (2147483647)
call massive_program

This would help to reveal problems arising from incorrectly initialized values.


-Asher



More information about the Fortran mailing list