HP Fortran v3.1 Release Notes

HP Fortran Release Notes
Known Problems and Workarounds
Chapter 16
Known Problems and Workarounds
This section details known problems and workarounds for HP Fortran.
Problem: 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.