Each release of the PGI compilers brings a number of technical corrections to problems discovered by PGI and by users. Problems found can be emailed directly to PGI Technical Support or submitted through the web-based Support Request form. PGI refers to all such reports as Technical Problem Reports, or TPRs.
The following table is a list of problems that have been fixed in each release. Descriptions as provided may be incomplete due to proprietary nature of the sample code. In such cases simple replacement examples may not be available.
Note: ICE stands for Internal Compiler Error.
OSX installs need to support other directories besides /opt/pgi
Updated the installer to allow users to change the installation location.
pgcc fails with floating point subscript expression
Corrected the compiler to report a warning and to convert the expression to integer
C program generates the message "Illegal use of void type"
for an illegal function call.
Corrected the compiler to emit just the message, "Attempt to call non-function"
omp_In_parallel() can return wrong answer.
Corrected omp_in_parallel() to reflect the state of all enclosing parallel regions.
OpenMP example generates the error: 'add_assignment: bad alignment'
Corrected the C compiler to handle firstprivate aggregates which are 8-byte aligned.
Using Microsoft extensions, _try _except and _try_finally, yields
the message, "gen_statements: bad statement kind"
Corrected the compiler to report "unsupported microsoft extension: try-except, try-finally".
Values of threadprivate variables do not persist in the presence of
Corrected the processing of threadprivate variables when default(private) is present.
Maximum number of cpus not properly computed on SLES10
Updated the run-time to determine the correct value on SLES10
pgf90 Mstandard should not give warnings for F95 features
A warning for the use of CPU_TIME is no longer issued.
pgf90 aborts with "add_assign_firstprivate - can't find prologue"
Corrected the processing of firstprivate for a pointer variable within a SINGLE construct.
pgcc executable gives bad answers with -Mvect=sse
Corrected the processing of outer index variables in a C nested loop.
failure of omp_test_nest_lock(nvar) to set the nesting lock
Fixed the lock functon to properly increment the lock variable
-i8 -fast cause 64-bit compilation to fail
Corrected the detection of reduction operations in large loops
pgf90 -fast example fails with TERMINATED by signal 11
Corrected the detection of reduction operations in large loops
Corrected the associated intrinsic when the pointer is NULL and the target is absent
pgf90 -Mipa fails with "calc_dw_tag: unexpected type 3"
Corrected the ipa processing of namelist groups
pgf90 reports error for a threadprivate variable
Corrected the error detection for threadprivate variables in the presence of the DEFAULT(NONE) clause.
pgf90 -Mipa fails with TERMINATED by signal 6
Fixed a memory write error in ipa
complex arguments not passed correctly in 64-bit pgcc
Corrected passing complex arguments via the stack
Invalid operand for 'movss' generated for extasm statements at "-O2".
Corrected the extended asm facility to generate the correct move instruction.
|15535||8.0-4||Fortran||See TPR 15484|
Spread regression in pgf90.
Corrected the handling of the spread intrinsic when the dim argument is present.
Fedora 10 includes "bits/byteswap.h" directly from "endian.h".
Corrected byteswap.h to conditionally include endian.h.
User Code gets the error "PGF90-S-0084-Illegal use of symbol null"
Using null() as a component initializer no longer conflicts with a component named null.
|15461||8.0-4||Fortran||See TPR 15434|
pgf90 example shows problems with allocatable derived type.
Corrected assigning derived type objects containing allocatable components.
Derived type problem in pgf90.
Corrected assigning to an element of a derived type array containing allocatable components.
size() in subroutine different from size() function on same data.
Corrected computing size of host allocatables from within contained/internal procedures.
Derived type assignment gives the error "mk_mem_ptr_shape: no static desc for pointer".
Corrected assigning derived type objects containing allocatable components.
Incorrect size of temp when using the 'repeat' intrinsic.
Corrected the processing of the result of the repeat intrinsic when used in an expression also referencing the adjustl intrinsic.
32-bit pgf90 example gives the error "exp_ac:ilm not cased' 'unrec. ili opcode' ".
Corrected the 32-bit compiler when processing the 64-bit versions of the popcnt, poppar, and leadz intrinsics.
No variables in scope in subroutine with alternate entry.
Corrected the processing of Fortran ENTRYs by the debugger.
User code gets the error "size_of:bad dtype".
Corrected deallocating derived type objects containing allocatable components.
F90 program causes compiler TERMINATION.
Corrected the handling of derived type constructors containing pointer or allocatable components.
User example (allocate (f(a)) ) generates the error "gen_funcret: illegal dtype, sym".
Corrected declaring a pointer-valued function with the POINTER statement.
-Mstandard should not give warnings for F90 extensions that are now part of F95.
Do not classify features new to f95 as extensions
pgcc aborts with TERMINATED by signal 11.
Corrected converting an integer constant to double complex.
Macros not evaluated in Working Directory property.
Added macro evaluation to the handling of the Working Directory property.
pgf90 fails when type(c_ptr) combined with value attribute.
Allow a dummy argument of a subprogram to be C_PTR and VALUE.
|15442||8.0-3||Fortran||pgf90 hoists pointer dereference out of loop at -O2.
Corrected the compiler to detect the presence of a guarded pointer dereference in the presence of a call.
|15440||8.0-3||PVF||Unspecified PVF error.
Fixed Package Load failure.
ALLOCATABLE arrays as dummy arguments fail.
Corrected passing local allocatable arrays to a routine whose corresponding formals are also allcocatble.
pgf90 Non-standard f90 usage causes ICE 'name_dependent: unexpected ast'.
Add an error check for a component of the result of a function.
java can fail with xcb_xlib.c:50: xcb_xlib_unlock.
Update to Java 6 on Linux.
|4063||8.0-2||All||c++ debug info is recursive.
Corrected the c++ compiler to process void typedefs and void subroutine type entries.
|4332||8.0-2||Fortran||Fortran Blockdata in a archive is not linked on Mac OSX.
pgf90 forces a reference to the blockdata if its name appears in an EXTERNAL statement.
|14856||8.0-2||Fortran||pgf90 fails to detect errors of INTENT(IN) arguments.
The compiler has been fixed to detect passing an INTENT(IN) dummy to a routine whose corresponding dummy is INTENT(INOUT), INTENT(OUT), or has default INTENT.
|15048||8.0-2||Fortran||pgf90 fails to report a warning that a character of length greater than 1 is passed to C_LOC.
Fixed the compiler to detect this error.
|15381||8.0-2||Fortran||pgf90 fails to compile a routine that does not return at -O2.
Corrected the compiler to accommodate a subprogam which does not contain a normal exit.
|15387||8.0-2||C/C++||pgcc example seg faults when compiled -O2 -fpic.
Corrected the compiler to ensure that compiler-generated assignments to 'const' objects are deleted.
|15393||8.0-2||Fortran||Fortran component initializations are not applied to a dummy argument.
Corrected the compiler to apply the initializations when the dummy argument is INTENT(OUT).
|15394||8.0-2||Fortran||pgf90 not detecting the use of private components when use associated.
Fixed the compiler to report an error for a derived type appearing as an I/O item when the type contains private components.
|15395||8.0-2||64-bit Fortran||Provide same functionality of GNU's "-finstrument-functions" option.
Added the feature, -Minstrument[:functions] to gcc/gfortran; added the feature, -Minstrument[:functions].
|15398||8.0-2||C/C++||C++ non-templated abs(complex) not defined in STL library.
Add support for abs(complex) to the STL.
|15403||8.0-2||Fortran||Regression of ADJUSTR behavior.
Fixed the result of ADJUSTR so it is correct if its argument contains a TRIM intrinsic invocation.
|15404||8.0-2||64-bit C/C++||Boost C++ file too large to compile with -w.
Fixed the compiler to address size issue.
|15414||8.0-2||64-bit Fortran||ECHAM5 application from Max-Planck-Institut fails at runtime with SEGV using 7.2-5.
Rebuilt ECHAM5 and it fixed the problem.
|15419||8.0-2||64-bit C/C++||pgCC lacks a shared object of libstd with -mp.
Added the appropriate shared object for combination of -fpic, -lstd, and -mp.
|15432||8.0-2||OSX||OSX license manager setup script 'PGI' should change 7.0 to 8.0 .
Line in file changes to correct version.
|15436||8.0-2||Fortran||Failure to nullify deallocated pointer.
Corrected behavior so a deallocate() of a pointer now nullifies that pointer.
|3699||8.0-1||All||pgdbg incorrect array element is printed.|
pgbdg 'display' shows different values than a PRINT statement.
Corrected the debug information produced by the fortran compiler for assumed shape arrays
pgCC should emulate GCC'S treatment of system header files.
Enhanced the compiler to omit warnings for supported "non-standard" features unless the --pedantic switch is present
pgCC uses 1-byte unbuffered writes when emitting error messages.
Corrected the error processing in the compiler to emit the errors as complete lines.
preprocessor does not handle comment lines properly.
Corrected the preprocessor when the name of function macro appeared at the end of any line including comment lines.
Example fails with "Can't find a register in class 'AREG'".
Corrected register allocation for two output operands in an extended asm sequence."
HPF program fails to run correctly with -Mmpi.
Corrected the HPF run-time to use the default MPI library.
Nonadvancing read of 'stdin' fails to execute properly.
Corrected the I/O run-time to position the preconnected unit at end-of-record after performing a nonadvancing read.
Trial license does not support more than one PVF project.
Creating multiple PVF projects is now allowed with a trial license.
preprocessor treats variables named 'pgi' as a macro.
The name 'pgi' is no longer a predefined macro name in the preprocessor.
pgf95 entering an infinite loop at -02.
Corrected the processing of automatic arrays declared in an internal procedure whose extents depend on the size of a host automatic array.
pgf90 fails test of type equivalence of derived types.
Corrected the type equivalence checking of derived types which are recursive (the derived types containg self-referential members).
pgf90 fails with "bld_lhs, ast nyd 45"
Corrected the compiler to properly pass an allocatable argument to a routine whose corresponding argument is allocatable.
pgf90 example fails at -O2 with "bld_lhs, ast nyd" and at -O1 with "redundss:mark unexpected AST type".
Corrected the compiler to properly pass an allocatable module variable to a routine whose corresponding argument is allocatable."
-Wc, a issues error for __builtin_huge_val.
The compiler no longer issues an "ansi" error for HUGE_VAL since it's a supported builtin.
f90 parameter attribute disables bounds checking.
Apply array bounds checking when subscripting an array with the parameter attribute.
False warning about packed structures.
The compiler should not emit the warning when the packed attribute is embedded in the typedef of the formal argument.
pgf90 example fails wiht "Errors in ILM file".
Corrected the processing of a pointer assignment whose target is a substring reference with an omitted starting or ending position."
pgcc gives bad answers with -Mipa=fast when recompile needed.
Corrected ipa to detect when a function may modify its arguments.
pgdbg fails with 'not defined in current scope'.
Corrected the debug information for module variables so that the user can fully qualify module variable names.
pgf90 fails to use the initialization in the module.
The compiler failed to apply the explicit component initializers when the derived type contained allocatable components.
Error with f90 character length specification.
Corrected the processing of a subsripted array element as the argument to the len intrinsic in a specification expression.
pgf90 fails with "bad ast optype in expression"
Corrected the processing of a subscript reference of a formal array array in a specification statement."
Install script gives improper pointer to old /account/index.php.
Corrected the instructions produced by the install script.
File opened with READ and APPEND should not return failing status.
Corrected the I/O run-time to allow the combination of the action flags READ and APPEND.
pgf90 fails with "Illegal use of derived type" for BIND(C) derived types.
Allow type equivalence for derived types which have the BIND(C) attribute.
Debug line number information missing for one line functions.
Emit the correct line dwarf entries for one line functions.
pgcc - wrong if condition result for if( ~(0x1 & ii))
Corrected a peephole optimization that did not properly set the condition code of and operation.
pgf90 fails with "flowgraph: node is zero".
The compiler determined that the conditionals in consecutive if statements branching to the same target were always false. The compiler deleted the conditionals, but failed to update the target of the conditionals.
pgf90 hangs when compiling a BIND(C) declaration.
Corrected the processing of a BIND(C) declaration containing a list of variables.
Program fails due to allocation for assumed character length.
Corrected the length computation of an assumed length character argument for a subprogram which also has a procedure argument whose interface specifies pointer arguments.
Syntax error when using "optional" attribute with an allocatable.
Corrected the compiler to allow the OPTIONAL and ALLOCATABLE attributes for a dummy argument.
pgCC with -fast causes bad code for conditional assignment.
Corrected the optimizations to detect a conflict between members of a class inlined from different functions