HP Fortran Version 3.2 Release Notes

HP Fortran Release Notes
Known Problems and Workarounds
Chapter 1 5
Known Problems and Workarounds
This section discusses the known problems and workarounds for HP Fortran v3.2.
Problem: When very large arrays are declared to be local to a subroutine, the arrays are
privatized. This implies that the arrays are allocated in the stack space.
Workaround: The default stack size for an OpenMP thread is 8 megabytes. This can be
modified 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 accepts only 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 enables the 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 2GB are automatically placed in 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.