Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP Fortran v2.7 for HP-UX 11.0 and 11i Release Note > Chapter 1 HP Fortran v2.7 for HP-UX 11.0 and 11i Release Note

Fixes

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

This section describes problems that have been fixed in current and previous versions of HP Fortran for HP-UX:

Current fixes

The following list describes problems that have been fixed and included in this version of HP Fortran v2.7 for HP-UX.

Other

  • There was a 10%+ performance improvement if transpose folded into matmul.

  • Inquire on an open file by name incorrectly padded out strings longer than the file name, resulting in garbage character in the string.

  • There was poor scalability for auto in parallel.

  • When compiling a file not in the current directory with +cpp_keep, the filename was given in error and warning messages were incorrect.

  • The compiler aborted on large real const (overflows).

  • Misaligned store caused segv.

  • The address of pruned block taken in block was not being pruned.

  • The DEFINE FILE statement aborted the bridge.

  • There was a front end abort on assumed size array.

  • There was an unsupported intrinsic SECNDS(real*8).

  • There was a TCG assert in bld_iltype_array.c.

  • The compiler aborted on a TSRUCTCON.

  • There was a failure to deallocate memory.

  • There was a need to handle TDECLARE allocatable DVAR as a pointer.

  • There was an unraveled type from ARRAYTYPE.

  • There was a wrong answer due to optimizing reductions even when +Ofltacc was specified.

  • A Caliper error sometimes resulted with errant unwind info; should be backed out.

  • There was a blockstack overflow.

  • DFIELD was not found.

  • There was a zext assert.

  • '$OPTIMIZE level X off' should default to command line opt level setting.

  • Occasionally, Wcount1 failed.

  • +objdebug was missing line numbers.

  • There was a tcg assert on ICUP.

PHSS_28059
  • Occasionally, the semantic analyzer was not checking for a derived type prior to accessing the underlying type, thus causing a compiler error.

PHSS_27363
  • The compiler aborted with the PREFETCH directive inside an OMP DO block.

  • The compiler aborted when +i8 was used with values greater than 2**31.

  • The compiler issued an internal error message when the first argument to an elemental procedure was not an array.

PHSS_27072
  • Inlined routines containing static (or Fortran SAVE) variables were giving wrong answers when compiled with +Oparallel or +Oopenmp.

  • The compiler aborted at +O3 in replace_interval.

  • Wrong answers were received from code within OMP locks.

  • Program aborted during runtime in $$divoI.

  • The compiler aborted during compiling rshift.

  • Segmentation fault when executing subroutines with a large number of arguments.

  • The compiler issued Error 215, Dummy argument or a private procedure cannot have a type that is private.

  • Performance problem caused by extra prefetches when using default cache line size.

  • Poor performance with multiple memory moves on some allocatable array types.

  • Subscript range error not detected in I/O implied DO.

  • The compiled program aborted when named parameters were used in some calls.

Previous version fixes

The following list describes problems that were fixed in previous versions of HP Fortran for HP-UX.

PHSS_26863

  • The compiler did not allow character function results to be used as unit numbers.

  • The compiler was generating a bogus error message.

  • The compiler failed to setup register r29 correctly.

  • The compiler did not call routines to print context during assert.

  • The compiler was performing an unnecessary error check.

  • The compiler was performing an illegal check.

  • The compiler was not ignoring C$Par when +Oopenmp is used.

PHSS_26732

  • Improved alias analysis for allocatable and automatic arrays.

  • Fixed symbolic handling of min/max expressions to avoid exponential expression growth.

  • Suppressed check when the array is null.

  • Fixed branch->skip conversion in wide mode.

  • A better check was provided to autopromote entity-type.

  • Increased the nametable size from 128 to 1024.

  • Prevent temporary copy of descriptor base address.

  • MIN1 and MAX1 calls are now coverted internally to MIN0 and MAX0 when integer arguments are specified.

  • The compiler did not look for the alias name for function and subroutine interfaces.

  • The compiler aborts with redefinition of macro type.

  • Updated the compiler to accept label formats.

  • The compiler maintained context beyond the statement function context.

  • Emit subtype alignment of 16 bits for item.

PHSS_26377

  • The optimizer was hoisting a load without hoisting the associated store instruction, creating an uninitialized use of a reference.

  • The compiler was incorrectly calculating map region offsets.

  • The compiler was incorreclty optimizing away a variable that was still in use.

  • The compiler did not correctly output the SLT entry before the exit.

  • The compiler needed to extend array(1) to the end of the commonblock for alias purposes.

  • The compiler did not default to the correct type under the +i2 flag for BOZ constants.

  • The compiler should have issued a meaningul error diagnostic message.

  • The compiler's type checking was too strict and has been relaxed for IAND calls.

  • The compiler's type checking was too strict and has been relaxed for intrinsic calls.

  • The mechanism for handling the Open MP ORDERED directive needed to be enhanced.

  • The compiler has been changed to handle OPTIMIZE directives.

  • The compiler has been changed to handle SAVE_LOCALS directives.

  • Fixed symbolic handling of min/max expressions to avoid exponential expression growth.

  • The compiler did not issue a diagnostic message for undeclared function reference in a call.

  • The compiler did not allow iint to translate to int2 and int4 as appropriate.

  • The compiler did not pass int4 dimension to intrinsic.

  • The compiler incorrectly generated subscript checks on a zero sized array.

  • The compiler incorrectly determined that a variable equivalenced within a common block could be type-size promoted to match the size of address.

  • The namespace table was not large enough to handle the source file.

PHSS_26067

  • The compiler needed to check for valid frame size before running with bad input.

  • The compiler assumed loop indices to be integer*4 regardless of the compilation mode, causing unnecessary conversions during rutime.

  • An invalid but common idiom of equivalencing length 1 array to the beginning of a common block caused over optimization.

  • The compiler was incorrectly optimizing addresses to the LOC function.

  • The compiler did not correctly handle a boundary condition when writing a symbol across heaps.

  • An error in optimization caused incorrect code generation.

  • The compiler was not correctly generating line number references.

  • The present intrinsic returned wrong results.

  • The compiler was not checking to see if common blocks were indirect within functions and subroutines.

  • The compiler generated names incorrectly by using the kind precision instead of the type precision.

  • The parser did not allow f77 notation for 2 byte and 4 byte integer constants.

  • Error handing getarg and getarg1.

  • The compiler generated an error on a valid construct due to incorrect error checking.

  • An error in bounds checking prevented valid values as parameters to char.

  • Needed to encode the fact that fstream on typeint2 returns int4.

  • The compiler had a problem converting Holleriths to integers when using a bit or logical intrinsic.

  • The compiler turned on +Olibcalls even though the user specified _Onolibcalls.

PHSS_25859

  • The compiler was stuck in an infinite recursive call loop when compiling an incomplete type.

  • The compiler needed to recognize and correctly handle the $SHORT directive.

  • There was a bug coding the determination of the index intrinsic parameter.

  • The +i8 switch was not compatible with some of the OMP internal intrinsics.

  • The compiler incorrectly reported the hash line number instead of the line number.

  • The compiler failed to convert some types.

  • The compiler did not allow dimension as a function result attribute.

PHSS_25772

  • The CRAY target object was not being handled properly by intrinsics.

  • The function result type attributes were not being checked correctly.

  • The compiler recognized a hollerith field as an unnamed variable and issued invalid debug information.

  • C$pragma was not recognized, the compiler has been changed to ignore it.

  • The compiler was constant folding divides by zero.

  • The compiler created temporary variables but failed to privatize them in the parallel region.

  • A USE statement of a module which exported an operator definition within a nested scope caused an abort due to failure to clear the pushed operator count.

PHSS_25617

  • Fixed problem with line number handling.

  • Fixed problem with type conversion on array constants.

  • Fixed problem with graceful handling of error situation.

  • Fixed problem with more than one thread saving the result.

  • The compiler stored subspace lengths as integers; changed to use unsigned integers.

  • Changed the compiler to suppress errors for c$doacross, c$$, *$$, and !$$.

  • Multiple use statements caused a name collision.

  • Fixed the compiler to allow C$$$ to be a comment.

  • Fixed problem with #line directives throwing off the line countin the original source file.

  • Fixed problem with missing label from replicated nodes resulting from parallelization.

  • The data limit was too small; increased to 400 megabytes

PHSS_25521

  • Fixed uninitialized register problem causing intermittent wrong answers at high optimization levels.

  • Fixed problem with code to determine where the character length is stored is aborting.

  • Fixed problem of over-writing memory due to overflow of 16 bit field describing debugger position.

  • Fixed handling of the 'type' form of the print statement so that the label is recognized.

PHSS_25414

  • The compiler did not correctly infer data type for BOZ (typeless) constants from context.

  • Fixed bug in handling of the data statement.

  • Fixed the internal compiler assertion.

  • Fixed the bug in handling the +Ofaster compile option.

PHSS_25176

  • Fixed a problem with strength reduction of 64 bit multiplication by unsigned consants.

  • Removed an unused warning message "invalid arc calculation".

  • Added support for multiple arguments to the +U option.

  • To be consistent with f77, updated the compiler to accept 'type' as a synonym for 'print' when not within a declaration.

  • Fixed the compiler to resolve the omp_memcpy reference.

  • Fixed the OMP intrinsic assertion problem resulting from parameter mismatch.

  • Enhanced the compiler to allow up to 300 continuation lines.

  • Error in algorithm was causing the compiler to use workload/2 to guide scheduling. Changed this to use workload/numthreads.

  • Fixed the internal compiler error generated on a pack intrinsic.

  • Fixed the internal compiler error resulting in TCG in_descriptor.c assertion.

  • Fixed the compiler internal error.

  • Placement of $HP$SHARED_COMMON directive contrary to documentation was permitted in F77. Upgraded the f90 compiler to allow the f77 placement.

  • Fixed problem with intrinsic handling of dope vector array, resulting in bus error.

  • Fixed problem so that OMP directives are not lost.

  • Fixed bug in compiler for implicit open of file with unit number greater than 99.

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.

  • There were occasional wrong answers at +O2 +DA2.0W.

  • The compiler sometimes aborted with internal error 1000.

  • The compiler sometimes aborted with name table overflow.

  • The compiler occsionally had wrong answers at +O3 with automatic arrays.

  • The compiler issued an error message when MIN1 and MAX1 were called with integer arguments.

  • The $HP$ALIAS directive on interfaces was not always being honored.

  • The compiler was looking up constant operands in the dictionary table.

  • The compiler aborted on use of a format label with OpenMP; legal code was rejected.

  • The compiler gave wrong answers in 64 bit mode when using statement functions.

  • The compiler aborted for +A compilation of a 2 byte aligned common item.

PHSS_26378

  • Occasionally there were extremely long (infinite) compiles on case statements.

  • When using allocatable arrays embedded in a f90 record type, the program would bus error or seg fault during the program execution.

  • The compiler aborted when -g was specified with union map regions containing only one component.

  • The program received wrong answers at +O2.

  • GDB could not stop at the end of a program due to missing SLT entry.

  • The executable received wrong answers with parmsoverlap at optimization level +O3.

  • Request for O'400' and Z'400'to be treated as 2 bytes for intrinsic calls.

  • 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.

  • Compiling at +O3 resulted in the compiler running out of memory in codes that accumulate a result from a large number of min or max expressions.

  • The compiler aborted when an undeclared function reference was used in a call.

  • Intrinsic iint was not allowed with type int.

  • The compiler aborted with +i8 on SIZE(array, dim) intrinsic.

  • The compiler generated runtime checks causing the program to abort when -C was used with zero-sized arrays.

  • The compiler aborted on NASTRAN code.

  • The compiler aborted on very large source files.

PHSS_26068

  • The compiler aborted with an internal error with large real*8 arrays.

  • Inefficient code was generated in 64-bit mode for loop indices.

  • The compiler issued internal error messages.

  • A wrong answer was received at optimization level +O2 due to use of EQUIVALENCE.

  • A wrong answer was received at optimization level +O2 when using the LOC intrinsic.

  • The ocmpiler was slow to compile case selectors with a range.

  • The compiler issued a bogus error.

  • The compiler generated wrong answers in wide mode at optimization level +O3 when using integer*8 induction variables.

  • The debugger was not setting breakpoints in functions included via header files.

  • The present intrinsic returned the wrong result when an optional parameter was not passed by the calling program.

  • Incorrect code was generated when an indirect common block was used in a subroutine.

  • 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.

  • The compiler generated low-level optimizer internal error messages.

  • The compiler aborted with a segmentation violation when a function with alernate returns was called.

  • The compiler aborted on fstream with integer*2 result assignment.

  • There was an error compiling hollerith constants when used with the IAND intrinsic.

  • The compiler ignored +Onolibcalls at optimization level +O2.

PHSS_25860

  • The compiler aborted when parallelizing OpenMP programs with parallel sections.

  • The compiler aborted in a segmentation fault when compiling an incomplete type at +O3.

  • The compiler did not recognize the $SHORT directive, which is needed for f77 backward compatibility.

  • The compiler aborted using +i8 when compiling the index intrinsic.

  • The compiler aborted in wide mode with the +i8 switch when compiling OMP intrinsics.

  • The compiler reported the wrong line number in error messages when the -I include path is used.

  • The compiler gave incorrect results for integer*1.

  • The compiler aborted compiling set_num_threads call using +autodbl in 64-bit mode.

  • The compiler issued an error 300 message when compiling a generic function.

  • The compiler issued an error message for a character array argument whose length was different that a specific formal parameter character array argument.

PHSS_25724

  • The debugger did not stop at the correct line number.

  • The compiler aborted with segmentation fault after correctly reporting errors.

  • Random wrong results sometimes occurred in Open MP 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.

  • The compiler aborted when the source file contained only comments and blank lines

  • The compiler asserted with "Backend Error" when PARAMETER was used with RESHAPE.

  • The compiler did not accept the incremental linking options +ild and +ildrelink.

  • The compiler asserted on the data statement which uses rep and has another overlapping data statement

  • The compiler aborted with f90: Signal 6

  • Use of the +Ofaster compile option caused a bus error

  • There was a problem shifting a 64 bit integer by 64 bits

  • The compiler gave an internal error with array assignment.

  • Wrong answers were occasionally received for reentrant subroutines

  • The use of 300 continuation lines sometimes caused internal compiler error.

  • The label on a 'type' statement was lost.

  • The compiler aborted when -C was used

  • The compiler aborted with a low-level optimizer message

  • The compiler was changed to suppress errors for c$doacross, c$$, *$$, and !$$.

  • The compiler emited a warning for an OMP parallel directive.

  • The compiler aborted when a module was used multiple times within the same source file.

  • The compiler issued an error message for c$$$.

  • The compiler generated a missing label assertion on Open MP code.

  • The compiler appeared to limit initialized DATA to 42 megabytes, much smaller than F77.

  • The compiler emited an assert on operator in INTERFACE definition.

  • The compiler asserted with -g on a program with a hollerith constant.

  • The compiler issued an error with +Oopenmp a pragma directive.

  • 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.

PHSS_25009

  • There was a compiler internal error with the parallel directive.

  • The $alias directive was not being accepted.

  • Character declarations which follow the equivalence declarations were syntactic errors due to the grammar specification.

  • There was no debugger support for Cray Pointees.

  • Wrong answers were received with assigned GOTO compiled at +O3.

  • A mixed multiple entry caused an abort.

  • There was poor optimization of arrays with descriptors at +O3.

  • Array declaration rejected when it involved specifying array size based on a previous arrays size declaration.

  • Certain uses of zero-sized arrays/character variables caused compiler asserts.

  • Poor performance sometimes resulted on array sections as actual arguments.

  • There was occasionally execessive compile time for data statements that create large initialized arrays.

  • +Ostore_ordering was not being honored.

  • Exact +cat option placement on command line changed behavior.

  • Empty directive nests were not being supported.

  • The omp_set_num_threads intrinsic did not behave as expected.

  • There were problems with -exec/-dynamic/-minshared interactions.

  • There was a +DD64 assigned format compiler abort.

  • Interference between c$dir and c$omp.+ild/+ildrelink was not recognized correctly.

  • There was an application bus error.

  • There was an assert on multi-diminsional array constant in record.

  • The REPEAT constructor compiler asserted.

  • Pack intrinsic / parenthisised 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.

  • TYPE statement in declarative region rejected with syntax error.

  • OpenMP integer*8 loops were not shared.

  • OpenMP loops were not always trip counted.

  • There was an occasional abnormal exit from the compiler.

  • The source with the includes files was not fully debugable.

  • Wrong answer was received at +DD64 +O2 +i8.

  • The compiler aborted with privatived USE.

  • There was a compiler error with allocatable arrays and the save statement.

  • There was a module not found error messages none: Not linking with the IA64 unwind library.

  • OMP Copyin clauses were not correct.

  • Undocumented M edit descriptor from F77 needed to be supported in F90.

  • Externally declared omp callables were not getting the right linkages.

  • There was an assert on an unexpected DLABEL.

  • OMP callables required treatment as external rather than intrinsic.

  • Reduction on subtract incorrectly subtracted.

  • There was somtimes a memory corruption on large OMP codes.

  • There was an occasional problem with automatic arrays privatized in parallel region.

  • Some OpenMP reductions were not recognized as valid.

  • The OMP fmt label refs caused error.

PHSS_24486

  • SEGV was received while compiling at +O4.

Other

  • Occasionally, there were problems with type keyword placement.

  • There was a TCG in_descriptor.C assert.

  • When compiling ftn code, a compiler error resulted.

  • An unused warning, "invalid arc calculation," was removed.

  • There was a problem with zero sized array for SELECT CASE (char).

  • Private structure was imported.

  • Data statement on pointer was using null.

PHSS_ 24771 (10.20) and PHSS_24772 (11.x)

  • Occasionally, there was a problem when using +FPD combined with certain optimizations.

  • The compiler did not recognize the !$ALIAS form of the $ALIAS directive.

  • The compiler now returns an error message if an end do statement does not have a matching do statement.

  • The compiler was incorrectly calculating the destination address.

  • Occasionally, there was a problem with quadword results for entry statements.

  • The compiler included the concatenated file plus all of the individual files in the compile and link.

  • The compiler would occasionally assert when parallelizing a loop with an inlined routine.

  • The cputime routine did not return the correct value.

  • Occasionally, the compiler removed some necessary code.

  • The incorrect version of the error message file was built in the compiler.

  • There was a problem with the variable step transformation.

  • The compiler generated SAVE tags for an automatic variable.

  • The compiler did not clear the USEASSOCIATED bit for use variables which were privatized.

  • An INTERFACE assignment definition prvented the compiler from resolving an operator.

  • The compiler was using the incorrect variable hashlinenumber, which did not always track line number.

  • When propogating type tags from uplevel imported module to the nested routine, the compiler was not checking to see if the type tags had already been set.

  • The compiler inadvertantly modified loops not directly attached to OMP DO directives.

  • The compiler was not correctly typing I*8 induction variables.

  • The compiler was incorrectly using the address of the repetition count instead of the repetition count.

PHSS_23025 (10.20) and PHSS_23026 (11.x)

  • The compiler asserted on source with large number of tokens.

  • Occasionally, there was an internal compiler error using +Oopenmp.

  • Return 0 was not handled properly.

  • The compiler now returns an error for the non-supported Complex(16).

  • The use of the PRIVATE directive caused an internal compiler abort with bad dictionary reference.

PHSS_23243 (10.20) and PHSS_23244 (11.x)

  • The compiler did not allow a called "C" subroutine to modify a string literal parameter.

PHSS_23351 (10.20) and PHSS_23352 (11.x)

  • The compiler did not allow common blocks to be mapped to system shared memory regions.

  • FORTRAN 77 and Fortran 90 processes could not shared memory whose size was not a multiple of 8 bytes.

  • The compiler did not unroll a simple loop in a timely manner.

  • The Fortran 90 compiler was taking over 100 times longer to compile a series of logical/equivalence statements that the FORTRAN 77 compiler.

PHSS_23724 (10.20) and PHSS_23725 (11.x)

  • The compiler returned an internal error when passing a character substring as a parameter.

  • The compiler did not recognize and default to generate code for PA2.0 architecture on L class machines.

  • The compiler did not handle ".." in relative source path correctly.

  • Occasionally, the shared common directive was not processed correctly.

PHSS_23952 (10.20) and PHSS_23953 (11.x)

  • The prefetch directive occasionally caused an internal compiler error.

  • The wrong answer problem with intrinsic function NINT was corrected.

  • The low level optimization of 64-bit code occasionally caused an internal compiler error.

  • When using +U77, there was a core dump and memory fault problem.

  • Using -g+z and +O2 caused an internal compiler error.

  • The compiler was updated to accept READONLY as a key word in OPEN. This was mapped to ACTION='READ'.

  • Compile-time performance for large array initialization was improved.

  • The M and N edit descriptors were implemented for f77 compatibility.

  • The compiler aborted in the presence of redundant module uses.

  • The compiler was updated to allow the use of the intrinsic "size" function in array declarations.

  • Occasionally, the compiler aborted on very large arrays.

  • There was a compile-time performance problem with producing debug information at +O1.

  • The compiler failed to create threads if the user set CPS_STACK_SIZE too large.

  • The compiler now allows an EQUIVALENCE statement to follow variable declaration.

  • The compiler was updated to allow % as a comment character (FORTRAN 77 issue).

  • The compiler was updated to handle debug symbol indexes above 2**20.

  • The compiler aborted on nested routines with ALIAS directives.

  • An upgrade of the compiler now results in copy out semantics to optimize for contiguous memory when pointers to arrays are passed as parameters.

  • Wrong answers resulted when copying large string constants.

  • The compiler now allows " SAVE" to be specified more than once for a variable.

  • The Fortran 90 compiler generated different output than the FORTRAN 77 compiler for 2**(-1).

  • An internal error resulted when evaluating a parameter statement that used the INT intrinsic.

  • The compiler now initializes character variables with length*.

  • The compiler calculated incorrect results for -10**30 when compiling using free-format.

  • The SAVE statement was fixed so that when no arguments are specified, it does not try to save values not valid for a save list.

  • Occasionally, there was a problem when using +O3 +Oall +Oautopar +Oparallel +Ovectorize.

PHSS_22538 (10.20) and PHSS_22539 (11.x)

  • Fortran did not inline x**r, where r is a real constant with an integral value.

  • The basic block optimizer in the LLO disposed of a store that it incorrectly determined was redundant.

  • The optimizer tried to parallelize a loop with multiple exits and aborted. This type of loop cannot be parallelized. A warning message is now generated by the compiler and continues to compiler without parallelizing the loop.

  • The compiler was producing an unexpected type of initializer for an array of derived type when the initial value was an array constructor composed of structure constructors.

  • The compiler was using an incorrect memory area when several reduction variables were needed within a loop.

  • The compiler now generates an error message when unable to handle a disallowed variable.

  • The link process caused 2.0 libraries to get pulled in. 1.1 libraries are now pulled in.

  • The compiler now supports +multi_open to allow a file to be used in multiple Fortran OPEN statements.

PHSS_22464 (10.20) and PHSS_22465 (11.x)

  • Internal compiler tables were increased in size to resolve Compiler Internal Errors referencing f90numtab overflow with large data initialization.

  • The compiler failed to handle an extra set of parentheses in a character variable as an intrinsic argument.

  • IXOR of logical*1 was not supported.

  • A new switch, +io77, was added to support E and G format treatment of leading zeros to match FORTRAN 77 compiler output for easier comparison of prior results.

  • +fastallocatable caused errors with allocatable arrays that were SAVEd.

  • There was a Compiler Internal Error when a module defined a COMMON block and USEd another module that also defined the same COMMON block.

PHSS_22290 (10.20) and PHSS_22291 (11.x)

  • The compiler failed to correctly handle a constant argument to sizeof.

  • EQUIVALENCE statements with shared common were not handled correctly by the compiler.

PHSS_22112 (10.20) and PHSS_22113 (11.x)

  • Some OpenMP directives caused compiler internal errors when used with Modules.

  • When multiple load options occurred in a single compile line and the later options were shorter than the earlier options, incorrect behavior occurred.

  • The zero-based getarg solution provided by PHSS_20578 caused incompatibilities for some customers using shared library calls to getarg.

  • FSTREAM instrinsic only returned the lower 32 bits of FILE *fp pointer, causing problems for applications using wide mode (+DA2.0W).

  • Hollerith literals that extended beyond a single line behaved differently in FORTRAN 77 +es than with Fortran with +extend_source.

  • Request for closer correspondence of I/O output between FORTRAN 77 and Fortran 90.

PHSS_21787 (10.20) and PHSS_21788 (11.x)

  • The use of OpenMP runtime routines not yet available (such as omp_get_thread_num, omp_set_lock, omp_unset_lock, omp_test_lock) caused an abnormal exit from the compiler instead of returning an appropriate error message.

  • There were instances of a segmentation fault in the Fortran front end after an invalid alternate return was detected.

  • The use of +fastallocatable building module occasionally returned an error.

  • Previously, there was a problem with SPEC 191.fma3d.

  • The compiler aborted when a PARAMETER value was placed in a CHARACTER declaration.

  • Assigning 65535 to an integer*2 generated an error message.

  • Parallel reduction overflows were not handled correctly.

  • There was a difference in literal printing between f77 +es and f90 +extend_source.

  • Issues with Union overlapping other variables were resolved.

  • Assigned format labels in wide mode were not being handled correctly.

  • LOGICAL FUNCTION G*1() syntax was not accepted by f90, but was accepted by f77.

  • The OpenMP directive error handling was inadequate.

PHSS_21485 (10.20) and PHSS_21486 (11.x)

  • Integer exponentiation of negative numbers by negative numbers resulted in incorrect results.

  • Some variables beginning with Z in data statements were not being handled properly.

  • Logical statement functions containing floating points returned incorrect results.

  • Occasionally, there was a backend assert while compiling +O3 +oparallel for a loop that had a multiple of 2 loop stride.

  • Alternate return arguments in an external subroutine call that was part of an IF statement caused an internal compiler error.

  • REAL*4 constants that exceeded the range of REAL*4 variables caused a compiler time error to be generated.

  • There was a need to support the OpenMP model of threadprivate.

Other fixes

  • 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.

  • Occasionally, v2.3 did not autopar parallelize the indicated loop.

  • When using +Onolimit +Odataprefetch +O3 +Oprocelim +Olibcalls, ccom entered an infinite loop.

  • Previously, +Onoloop_transform inhibited loop parallelization.

  • Fortran range checking displayed line #0 instead of the actual line number.

  • +Onoinline did not work for call sites that were transformed from indirect calls to direct calls.

  • Fortran ignored 17 loop_parallel directives in LS-DYNA.

  • +DA1.1 +Odataprefetch generated an internal code error.

  • Inlining dropped the register storage class of certain variables.

  • The compiler would occasionally have an abnormal termination when compiling at optimization level +O3 or higher.

  • Wrong answers were generated when computing polynomials at +Oparallel.

  • Occasionally, inlined code created a situation where loop recognition failed to recognize a perfect nest, thereby disabling a critical interchange. The HLO loop recognition phase has been improved to handle such cases.

  • Previously, +i8 +O2 caused an infinite loop in the compiler.

  • Using +i8 and +O2 occasionally resulted in an internal error with the Fortran compiler.

  • There were instances when the compiler produced an internal error if you were using '-g' .

  • The Fortran driver was updated to infer +DA<model> machine parameters.

  • 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 elsewhere in this document.

  • 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.

  • In previous versions of the compiler, the MERGE intrinsic was unimplemented, resulting in compiler aborts. Instances where this happened included when the compiler encountered complicated expressions involving derived types or character strings. The MERGE intrinsic has been corrected so that it properly handles complicated expressions.

  • (HP-UX 11.0 only) Fortran has been corrected so that it works in wide mode (64-bit addressing) when a derived-type selector is used on an array.

  • The LBOUND, UBOUND, and SHAPE intrinsics asserted when their result array was non-contiguous.

  • The Fortran compiler previously declared some variables as thread_private when they were not. The Fortran memory classes have been changed to correct this.

  • (HP-UX 11.0 only) In certain situations, Fortran would abort at +O3 +Oparallel.

  • In certain situations, Fortran would abort at +O3 +Opal.

  • (HP-UX 11.0 only) Using CXperf profiling support option +pal with optimization enabled caused Fortran to assert.

  • Using +autodbl occasionally resulted in an assert.

  • (HP-UX 11.0 only) The HP Performance Analysis Tool CXperf can now profile Fortran applications with empty routines and compiled with +pa. This is a Fortran fix which corrects the previous problem of a resulting coredump.

  • Wrong answers were generated by Fortran at +O3.

  • When the code specified loop interchange, the compiler would not honor c$dir no_loop_transform in certain situations.

  • -g +objdebug now works in the same manner as +objdebuf -g so that +objdebug takes precedence.

  • The compiler would occasionally run out of memory at optimization level +O3.

  • SELECT CASE statements with REAL*4 ranges/values failed when +autodbl4 used.

  • Explicit double precision constants (3.0D4) were corrupted when +autodbl was specified.

  • The ADJUSTL intrinsic returned wrong answers when its argument was a parenthesized character constant.

  • 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.

  • Certain uses of variable length character variables with the POINTER attribute caused intermittent aborts at runtime.

  • NAMELIST input of character arrays was not compatible with FORTRAN 77 (non-standard usage of a scalar subscript but multiple values is now accepted).

  • NAMELIST READs in wide mode (+DA.0W) sometimes corrupted memory and caused unpredictable aborts.

  • Some character expressions in a SELECT CASE statement were evaluated more than once.

  • SYSTEM_CLOCK sometimes returned an invalid value.

  • Short Hollerith initializers (i.e., 1h3) in DATA statements for REAL variables caused an internal error.

  • Using an INTENT(IN) dummy argument in a subsequent initialization expression sometimes caused an internal error.

  • Referencing a character variable via a substring and later as if it were a function caused an internal error. Now a syntax error is issued.

  • Routines which indirectly used the same module many times caused the compilers symbol table to become corrupted. The compiler now detects and ignores the indirect redundant USE statements (it has always ignored directly visible redundant USE statements).

  • Several internal errors caused by the +DA2.0 flag have been fixed.

  • All of the compiler directive code has been reimplemented. Many observed and undiscovered bugs with memory class and loop-based directives have been fixed.

  • An unsubscripted integer array used as a FORMAT is now assumed to be a character string format, and not an ASSIGN statement format.

  • Zero-length character type array constructors caused an internal error.

  • The ftnxx environment variables were ignored in wide mode.

  • When a library (.a file) was listed several times on the command line, all but one of them was (incorrectly) removed.

  • 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.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1979-2003 Hewlett-Packard Development Company, L.P.