HP Fortran Release Notes Version 3.0 HP-UX Systems Manufacturing Part Number: 5991-2772 December 2005 United States © Copyright 2005 © Hewlett-Packard Development Company L.P.
Legal Notices The information contained herein is subject to change without notice. The only warranties for HP products and services are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. HP shall not be liable for technical or editorial errors or omissions contained herein. Printed in the United States Confidential computer software. Valid license from HP required for possession, use or copying.
1 HP Fortran Release Notes The information in this document applies to the release of HP Fortran compiler, version 3.0, for the HP-UX 11i/11.x operating system. Announcement HP Fortran for HP-UX is a modern, powerful mathematical and scientific language that supports array-handling, data-abstraction, and data hiding. This Release Note describes HP Fortran v3.0 for HP-UX. HP Fortran v3.
HP Fortran Release Notes What’s in This Version What’s in This Version This section gives an overview of the new features introduced in this version of the HP Fortran compiler. New Features in Version 3.0 HP Fortran version 3.
HP Fortran Release Notes What’s in This Version Stack temps for static-sized array arguments Use stack temps rather than allocatable temps for static-sized array arguments. lnblnk Intrinsic This version has a new intrinsic, lnblnk. +oversubscriptcommon Option Use the +oversubscriptcommon option to extend 1-element common blocks.
HP Fortran Release Notes Known Problems and Workarounds 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.
HP Fortran Release Notes Known Problems and Workarounds • When creating 64-bit shared executables (such as when +DD64 is specified) the +Z option is on by default. The +Z option (equivalent to +pic=long) is the only PIC option supported for 64-bit executables. If the +z option (equivalent to +pic=short) is specified when creating 64-bit code, it instead maps to +Z.
HP Fortran Release Notes Known Problems and Workarounds Workaround: To avoid this, use +O2 optimization instead of +O3.
HP Fortran Release Notes Restrictions in HP Fortran Restrictions in HP Fortran This section lists restrictions that exist when using the HP Fortran compiler and when using HP Fortran language features in your programs. +FPI +FPI will not work when calling any type of runtime libraries or intrinsics. Object files generated at optimization level 4 Object files generated by the compiler at optimization level 4, called intermediate object files, are intended to be temporary files.
HP Fortran Release Notes Restrictions in HP Fortran To parallelize your code, use another directive such as loop_parallel. In loops defined with NODEPCHK, we recommend that you not invoke parallelism.
HP Fortran Release Notes System Compatibility Information and Installation Requirements System Compatibility Information and Installation Requirements This section describes system requirements for the installation and running of HP Fortran v3.0. Software requirements The HP Fortran v3.0 compiler requires approximately 264 megabytes (MB) of disk space. This includes approximately 172 MB for the compiler, with remaining space for other components such as the debuggers. Hardware requirements HP Fortran v3.
HP Fortran Release Notes System Compatibility Information and Installation Requirements • B3907DB—HP Fortran Workstations • B3909DB—HP Fortran Servers To display the product number and the release version of your HP Fortran compiler, execute this HP-UX command: what /opt/fortran90/bin/f90 Specifying the +version option (entering f90 +version) displays compiler version information to standard output without compiling.
HP Fortran Release Notes Tru64 Fortran features (valid for 11.23 on both Itanium-based and PA-RISC systems) Tru64 Fortran features (valid for 11.23 on both Itanium-based and PA-RISC systems) Support has been added for options that will assist users in porting applications from Tru64 to HP Fortran. Wherever possible, these options mimic the behavior of their counterparts in the Tru64 Fortran compiler. +cfc Flag The +cfc flag has been added to the Fortran compiler.
HP Fortran Release Notes Tru64 Fortran features (valid for 11.23 on both Itanium-based and PA-RISC systems) • Added TRU64DRIVER as new (pseudo-) phase in the f90 driver. • Added/updated Compaq-mode determination code in driver. Now done early in main(), in case other driver components need to know the state of compaq_flag prior to standard options processing. • Added support for Compaq-mode defaults to be emitted, when they differ from HP-mode.
HP Fortran Release Notes Tru64 Fortran features (valid for 11.23 on both Itanium-based and PA-RISC systems) • -u (alternate for +implicit_none) • -names {uppercase|lowercase} (alternate for +[no]uppercase) • -[no]altparam (-Wc, -dps) • -what (alternate for +what) • +[no]padsrc flag (not restricted to Tru64 mode).
HP Fortran Release Notes Tru64 Fortran features (valid for 11.23 on both Itanium-based and PA-RISC systems) • -threads/-pthread options; recognized and ignored.
HP Fortran Release Notes Current Fixes Current Fixes This section describes issues that have been resolved in this version of HP Fortran v3.0: Itanium-based platforms The following current resolutions are for Itanium-based systems: PHSS_33166 (11.23) • A new directive, !DEC PACK:[|1|2|4], is added to F90 to support the similar feature in DEC compiler. • len(b//b) returned len(b) where it should have returned len(b)*2. This happened when b was a character array (character*5, dimension(1) :: b).
HP Fortran Release Notes Current Fixes • Excepting top-level nonmodules, +auto_ivar is disabled. • Performance enhancement request to link with lapack and veclib when -Wl, -aarchive_shared is used and these libraries exist on the system. • Memory directives are now processed correctly when they are in modules containing routines. • Supports optional positional arguments. • Compiler no more assumes that 1-element array oversubscripted has 1-element.
HP Fortran Release Notes Current Fixes • Does not relocate zero typelinks. • Makes -ipo not to imply -g. PHSS_32710 • Compiler gave internal error when linker identifier was supressed because it was private. • Use of 2-dimensional slice of record does not give compiler internal error. • No blank line is got when a real array to store a format string is reused. • Compiler used to give internal when using initialization with => null(). • OMP PARALLEL IF produced scalar, not parallel code.
HP Fortran Release Notes Current Fixes • Compiler does not go into infinite loop when processing two zero sized arrays that are equivalent to one another. • Compiler does not give an internal error with a logical if statement. • Compiler gave internal error with bad string pointer in module. • Performance problem with aliasing, which is not necessary with 1-character strings is now overcome.
HP Fortran Release Notes Previous Fixes Previous Fixes The following sections describe issues that were resolved in previous versions of HP Fortran for HP-UX: Fortran90 on Itanium-based platforms The following resolutions are for Itanium-based systems: PHSS_31323 (11.22)/PHSS_31324 (11.23) • When writing dictionary records to an output module dictionary, name table pointers such as idref were replaced with md string pointers.
HP Fortran Release Notes Previous Fixes • There was a compile-time assert from initialized private types. • There was a compiler abort with complicated aliased variables. PHSS_30775 (11.22)/PHSS_30776 (11.23) • An enhancement was made to allow unary +/- after binary +/-. • DPRIVATETYPE was incorrectly implemented as an unaligned byte array. • Occasionally, lbound/ubound received wrong answers for zero size array dimensions. • The +nocheckuf option caused a compiler abort.
HP Fortran Release Notes Previous Fixes • An error was incorrectly detected on this OpenMP example: The SINGLE directive should be bound to the nested PARALLEL region and not conflict with the CRITICAL directive. • There was a carry over problem from MODULE. • The option +oversubscriptcommon was enhanced in order to extend the size of local arrays equivalenced to arrays in a common block.
HP Fortran Release Notes Previous Fixes • There was an occasional compiler abort at +O3. • Wrong answers were given at +O2 and above for MATMUL(TRANSPOSE(S),S). • When using +O2, the compiler generated code which resulted in a memory core dump. • There was a dataval name issue. • There was a rsqrt performance issue. • The allocated memory size of common block differed by the way of declaration. • There was an occasional middle end assertion. PHSS_29663 (11.
HP Fortran Release Notes Previous Fixes • Nested subroutines produced erroneous addresses to break on when the compiler resumed generating code for the body of the containing routine. • Occasionally, compilation was slower at +O3 than at +O2, apparently due to the +Oloop_unroll_jam default set to “on.” • An assertion occasionally occurred if an indirect call omitted the alternate return entry on the first call.
HP Fortran Release Notes Previous Fixes PHSS_28914 (11.22) • FORM=UNFORMATTED did not handle big/little-endian conversion. • Occasionally, there was an assert on ICUP. • WDB did not find local variables with ‘info locals’. PHSS_28697 (11.22) • Occasionally, the compiler would abort due to emitting DSTRUCTON. • There were incorrect Caliper line numbers for +O2 -g. • There were incorrect offsets for vax structures. • Occasionally, the compiler rejected *size(dimension) declarations.
HP Fortran Release Notes Previous Fixes PHSS_27975 • A 4 byte variable forced to 16bit alignment using equivalence caused TCG assert on size versus alignment. • The compiled program occasionally aborted when compiled with +O2. • The compiled program sometimes did not work when compiled with +DSitanium2. • The compiler asserted in f95store.c on private type in boundless array of derived type. • Wrong answers were occasionally given when code was compiled at +O2.
HP Fortran Release Notes Previous Fixes • Fortran had options to select shared libF90 and libU77 libraries, but no corresponding option for libIO77. • The compiler occasionally aborted when +i8 was used with values greater than 2**31. • The compiler sometimes issued an internal error message when the first argument to an elemental procedure was not an array. • The compiler occasionally aborted with an error in the Arith.C routine of the low level optimizer.
HP Fortran Release Notes Previous Fixes • The compiler occasionally aborted when compiling with both the +Onoinline and +Oprofile options. • The compiler aborted when a parameter was equivalenced to a local variable. • There was an internal failure in low-level optimizer, file SchedDriver.C. • Wrong answers with +O2 +DSitanium2. • There was a memory leak when a save statement was used with an automatically allocated array.
HP Fortran Release Notes Previous Fixes • The compiler processed C$PAR directives even when OpenMP was used. PHSS_26733 • Occasionally, there was inferior performance for automatic and allocatable arrays. • Compiling at +O3 sometimes resulted in the compiler running out of memory in codes that accumulate a result from a large number of min or max expressions. • F90 option -C reported an error with zero-sized array. • Implemented +A alignment option for backward F77 compatibility.
HP Fortran Release Notes Previous Fixes • The compiler aborted when a PARAMETER statement redefined a COMMON definition. • The compiler rejected IAND (I4, i2const) with +i2. • IAND and IOR did not accept a mixture of INTEGER*2 and INTEGER*4 arguments. • The compiler mishandled the ORDERED clause within nested parallel directives. • The compiler did not honor F77 style OPTIMIZE directives. • The compiler did not honor F77 style SAVE_LOCALS directives.
HP Fortran Release Notes Previous Fixes • The compiler generated incorrect names for complex types for use by the debugger. • There was an F77 compatibility issue regarding nnnnl and nnnJ notation. • The compiler generated an internal error on call to getarg when using +getarg1. • The compiler occasionally aborted with an assertion error. • The compiler generated an error when values greater than 127 were passed to the char intrinsic in a PARAMETER statement.
HP Fortran Release Notes Previous Fixes • The compiler aborted with segmentation fault after correctly reporting errors. • Random wrong results sometimes occurred in OpenMP code. • The compiler did not correctly handle BOZ constants in intrinsic function calls. • Code produced at optimization level +O2 aborted with a bus error. • There was a compiler error when compiling a recursive function; abnormal exit from bridge.
HP Fortran Release Notes Previous Fixes • There was a problem with compile-time evaluation of math function calls with constant arguments. • The compiler issued an error message when defining a generic function using an INTERFACE block when the function specification contains a RESULT clause. • The compiler aborted during handling of a CRAY pointer object. • The compiler encountered an internal error in low-level optimizer file RaDf.c.
HP Fortran Release Notes Previous Fixes • There was an assert on multi-dimensional array constant in record. • The REPEAT constructor compiler asserted. • Pack intrinsic / parenthesized expression; compiler assert. • A compiler internal error occurred when importing private structure. • Wrong answers were received for some parallel loops. • The compiler sometimes didn’t support enough continuation lines. • SELECT CASE (chartype) caused a compiler assert.
HP Fortran Release Notes Previous Fixes PHSS_24486 • SEGV was received while compiling at +O4. Fixes not present in prior patch releases • Occasionally, there was an optimization problem with the use of the option +O2. Different results were calculated if the binary was compiled with different optimization levels. • When compiled in 64-bit mode, the executable received a bus error. • The debug information for arrays of characters passed by descriptor character cstring_arr (:,:)*(*) was incorrect.
HP Fortran Release Notes Previous Fixes • A new command-line flag— +sharedlibF90 —resolves potential issues with the F90 driver trying to link with the shared version of libF90. See Command-line flags in “New Features in Version 3.0” on page 4. • The PACK intrinsic has been corrected to properly handle nonstandard LOGICAL values. Previously, a segmentation fault would occur if nonstandard LOGICAL values were encountered by this intrinsic.
HP Fortran Release Notes Previous Fixes • modulo(x,y) returned incorrect results when -1 < x/y < 0. • The ES format descriptor printed zero values incorrectly. • A never-referenced variable name which was also a common block name caused syntax errors when used in an EQUIVALENCE statement. • Using 4-byte integer DO loop indices in wide mode (+DA2.0W) incorrectly inhibited a wide range of optimizations and auto-parallelization.
HP Fortran Release Notes Previous Fixes • Cray-style pointers were only 32 bits in wide mode unless +autodbl[4] was used. Now they are always 8 bytes in wide mode. • In previous versions of Fortran, space deallocation could potentially fail. This occurred when initialized commons were used in the presence of equivalences. • Additional NULL pointer checks have been added to the Fortran compiler. This fixes compile-time aborts in the optimizer portion of the compiler.
HP Fortran Release Notes Software Availability in Native Languages Software Availability in Native Languages There are no non-English translations for HP Fortran v3.0 for HP-UX 11i v2.