HP Fortran v2.9 for HP-UX 11i v2 Release Note*5991-0697*

HP Fortran for HP-UX v2.9
Known Problems and Workarounds
Chapter 118
Known Problems and Workarounds
This section details known problems and workarounds for HP Fortran.
When very large arrays are declared to be local to a subroutine, the arrays are privatized.
This means that the arrays are allocated in stack space.Workaround: The default stack
size for an OPENMP thread is 8 megabytes. This can be changed by setting the
environment variable CPS_STACK_SIZE. For example, setenv CPS_STACK_SIZE
20000000 changes the stack size per thread from 8MB to 20MB.
HP Fortran only accepts the !$ALIAS directive, not $ALIAS.
A program compiled with “+DA2.0W +check=all +fp_exception” results in a divide by
zero trap during a subroutine call.
Compiling an array slice assignment at +O0 results in an internal compiler error.
Dummy arguments in multiple entry routines are not correctly handled by the WDB
debugger.
Printing a dummy argument that is a CHARACTER in 64-bit wide mode (+DA2.0W) does
not work in the WDB debugger.
When compiling, the +ppu switch is enabled by default. To access C routines, use the
ALIAS directive to map the C routine name to itself. For example:
!$HP ALIAS getrusage=`getrusage’
If the ALIAS directive is not used, `getrusage’ is mapped to `getrusage_’ in the object file.
With +DD64, memory addresses are 64-bit values. This allows common blocks and
dynamically allocated memory to exceed 32-bit address limits. This feature is restricted
by the available virtual memory on the system where the application is run.
Common blocks greater than 2GBytes are automatically placed into a huge data segment
and initialization is performed at program start-up.
Workaround: To force smaller common blocks into the huge data segment, use the
+hugecommon and +hugesize compiler switches.
NOTE When using initialized huge common blocks, large repeat counts are
represented compactly to help reduce object file size.