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.
Request for f2003 PROCEDURE statements
Corrected the support for procedure statements.
pgf90 reports an error for 'procedure (proc_template), nopass, pointer :: proc => null ()'
Corrected the support of procedure pointers.
pgf90 reports the error, "transform_call:Array Expression can't be here"
Corrected the processing of array expressions as arguments to elemental procedures.
pgf90 reports the error, "Lowering Error: bad ast optype in expression [ast= É"
Corrected the processing any argument that is an array expression that contains the use of LBOUND of a pointer or allocatable component.
pgf90 reports the error, "Derived type has not been declared" for an IMPORT
Corrected the IMPORT processing when the name of the imported object is the same as the name of a component.
pgf90 reports the error, "Illegal use of derived type"
Corrected the support of C_ASSOCIATED.
pgf90 reports the error, "Syntax error at or near ,"
Allow the presence of both PUBLIC and BIND in a TYPE declaration.
pgf90 reports the warning 'association of scalar actual arg to array dummy arg'
Allow a characater scalar to be associated with a character array.
pgf90 reports the error, "check_member: cannot match member with derived type"
Corrected processing of a nested MATMUL of array pointer components.
Very long file name causes a seg fault in pgf90
Corrected the compiler's handling of a file name when its length exceeds the limit.
pgCC example with long bit fields fails
Corrected the compiler's handling of long bit fields when wider than 32 bits,
pghpf reports the error, "distribute_fval: fval not ID"
The HPF compiler can only replace the result of an array-valued function with the left-hand side of an assignment when the left-hand side is an identifier.
User program seg faults on exit
Corrected that array temporaries of insufficent size were being created for the results of nested calls to array-value functions.
problems with -gopt on corefiles read with gdb
Do not generate a bogus address for an argument not saved in memory.
pgCC --zc_eh can't process lists
Corrected the processing when throws appear within a parameter list.
Compiling --zc_eh cause pgCC to seg fault
Corrected creating a "dtor" routine with a missing "this" parameter.
pgf90 reports the error, "Subprogram too large to compile at this optimization level", with -Mcray=pointer
Corrected the management of certain data structures internal to the compiler.
pgf90 preprocessing problems of a file with a very long file name
Corrected the preprocessor's handling of a file name when its length exceeds the limit.
C_F_POINTER should allow C_LOC() as cptr argument
Corrected the compiler to allow C_LOC() as cptr argument.
pgCC --zc_eh num_regions error
Corrected the processing of --zc_eh for lexical blocks.
f90 Code hangs when compiled -mp
Corrected the processing of private allocatables and pointers.
pgCC --zc_eh error when deleting conditionals
Corrected the processing -f --zc_eh when dead code is removed.
pgCC --zc_eh causes pgCC to crash
Corrected the compiler.
pgCC --zc_eh error with function that throws inside a static initializer
Corrected the processing of a region within an initializer
pgCC --zc_eh error within a "for" expression
Corrected the processing of a region within a for-init expression.
pgcc -mp errors
Corrected declaring the same private variable with multiple clauses.
Windows "-pgcpplibs" flag includes the Linux C++ runtime
Corrected the driver so that "libcpp" is included instead of "libC".
pgCC ---zc_eh error with nested constructors
Corrected the processing of zc_eh regions within nested constructors.
OSX86 driver does not send '-arch i386' to 'as'
On OSX, corrected the 32-bit driver to invoke the assembler, as, with the "-arch -i386" option.
Remove resource file option from new file dialog
Removed the resource file from the Add | New item dialog.
Compiling --exceptions reports the error: 'calc_dw_tag: no tag'
Corrected the generation of debug information for --exceptions and -mp.
Contents of new file dialogs differ
The sort order of fixed- and free-formatted files is now the same.
pgcpp generating incorrect debug information
Corrected the generation of debug information.
Stopping debugging causes unspecified error in VS 2008
Corrected how processes are terminated at the end of debugging.
Command in immediate window causes loss of scope under VS 2008
Corrected the attribute of the event used for expression evaluation.
Add MPI dialog and install instructions to PVF install package
Adding a message box detailing the MSMPI co-requirements.
Too many bound breakpoints
Corrected the program name associated with bound breakpoints.
MP_BLIST and OMP_NUM_THREAD have different maximum number of cores
Changed the MP_BLIST maximum to the same as the OMP_NUM_THREAD maximum (64).
pgCC example gives incorrect answers with -fast autoinline.
Corrected the last value computation of a pointer.
pgf90 example gives incorrect answers with -Mvect
Cannot compute the last value of an induction variable not assigned on every iteration of its loop
pgf90 example yields the error 'assem.c-put_skip old, new not in sync'
Corrected the initialization of a derived type containing component initializers.
pgcc/pgCC doesn't reject 'schedule(auto,2)' clause - no chunk size permitted.
Corrected the compiler to emit an error if a chunk size is specified for auto or runtime schedules.
Illegal implied DO expression in an initializer
Added the support for the '**' operator in an initializer
pow(3) produces nonstandard results with -Kieee
Corrected the -Kieee version of the run-time routine for double precision pow.
pgf90 -mp fails to detect 'chunk size when specifying an auto schedule'.
Corrected the compiler to emit an error if a chunk size is specified for auto or runtime schedules.
Failure with single to double vectorization.
Corrected the single-to-double vectorization of a divide expression.
32-bit pgsampt cannot find libpgc.so
Corrected the build of pgsampt to statically link lilbpgc.
Add check for and use of JDK to installers
The Windows install script now searches for the JDK if the JRE is not found.
pgf90 example fails with 'Could not resolve generic procedure'
Corrected the processing of a user generic when there exists a specific of the same name
pgcollect gives error 'pserv_init:task_for_pid failed'
Set the correct permissions for pgsampt.
index.htm in CDK and Mac OS X are broken
Corrected the index.htm files for the CDK and OSX.
OSX install creates an incorrect doc area
Fixed the install to include the correct documentation.
pgcc issues the error 'check_ilm0: illegal store' when using __m128
Corrected the processing of multiple assignments of __m128 variables.
pgf90 program gives the error 'get_ac_op: unexpected operator in initialization expr'
Added the support for logical and relational operators in an initializer
pgcc program reports the error 'fold_const: bad args'
Corrected the processing of expressions containing long double complex constants.
Need to be able to debug subroutines compiled with -Mnoframe
Corrected the debug information for stack-based local variables.
Parameter passed by value cannot be used in array bounds
Corrected the processing of value arguments in specification expressions.
c99 feature reports the error ' ad_func: illegal arg'.
Corrected processing of the declaration of a prototyped function with VLA arguments.
OpenMP fatal error 'DO loop expected after COLLAPSE' when using a named do construct in inner loop
Allow a construct name for a DO loop within the scope of a COLLAPSE."
pgf90 example causes compiler to terminate.
Corrected the processing of subscripted member references during the processing of generics.
pgaccelinfo reports a false number of threads per block.
pgf90 code causes pgf901 seg fault.
Corrected the optimizer when examining pointer components.
pgf90 reports the error, "unable to resolve generic".
Corrected the processing of a user generic declared PUBLIC where its same-named module procedure is PRIVATE
offsetof() header entry fails on RHEL4, 64-bit, C
Corrected the definition of offsetof in stddef.h.
INSTALL.txt missing a continuation line.
Added the required line to INSTALL.txt.
pgf90 reports the error, "expression must be character type" for a MERGE
Corrected the compiler's handling of merge when one argument source is assumed-length character and the other source is adjustable-length character.
pgf90 -fast causes errors for a PRINT of a pointer section
Corrected optimizing the reference to a whole pointer section when appearing as an I/O item.
Debug line information unavailable for include files.
The compilers now emit debug line information for code from include files.
MPI program fails to complete.
Corrected the I/O run-time and MPI process extends a direct access unformatted file.
pgcpp gnu linkonce and Suse 9.3 linker incompatibility
pgcpp now generates linkonce.r sections for the cases where the incompatibilities occurred.
Error not reported for an OpenMP example containing statement functions
If a variable appears in the definition of a statement function, the compiler now reports the appearance of that same variable in a PRIVATE clause as an error.
Warnings imply -r8 affecting variables declared with specific kind.
Corrected how compiler processes certain intrinsics when the -r8 option is present.
time() and ctime() return integer*8 - not integer*4 as documentation indicates.
Corrected the documentation of time & ctime.
An intrinsic returning the wrong kind of answer.
Corrected how the compiler processes certain intrinsics when the -r8 option is present.
Compiler fails to catch INTENT errors
The compiler now reports errors for mismatched INTENT.
pgcpp inlining generates bad code
Corrected the inliner to not discard the value of arguments if they could have side-effects.
pgf90 issues severe error for IMPORT
The compiler now supports the f2003 feature: IMPORT.
libacml gives wrong answer compared to lapack, blas.
Corrected a failure in zgemm which only occurred for certain matrix sizes.
PGI User Guide OpenMP examples need adjustment.
Revised the OpenMP examples and explanations.
OpenMP program causes compiler crash.
Corrected how compiler processes a recursive function call within a TASK construct.
pgcc issues error for a multi-dimensional variable length array
Corrected the processing of a declaration of a formal VLA whose bounds contain pointer dereferences.
NAMELIST boundary problems.
Updated the namelist read to properly handle character constants which span multiple lines.
IMPLICIT NONE rules fail to work on pgf90.
Corrected the compiler to report an error for the use of an undeclared variable in a derived type constructor.
Thread race condition with pgf90
Corrected passing pointer arguments to assumed-shape dummy arguments when appearing in a parallel region.
Higher optimization levels excessively hinder ability to debug.
Fixed the compiler to present the correct line number of the first executable of a subprogram.
Error in default constructor for THREADPRIVATE classes
Corrected the compiler and run-time to account for classes which do not have defined destructors.
C compilers fail to support C99 hexadecimal floating-point constants.
Added the recognition of hex floating-point constants.
Use of %VAL causes the error," exp_call bad ili" on Windows
Allow %VAL expression to appear as an argument passed to a STDCALL routine.
emacs on windows should not appear in the PGI Users Guide.
Removed the references to emacs from the documentation.
Improper assignment from contained function (pgf90).
Corrected an optimization where the compiler was directly assigning the result of an internal function to a host-associated array variable.
use-associated' module error is false, code should compile.
Corrected the compiler to not report the error for a PRIVATE module variable.
MAX intrinsic KIND arg should not be changed by -r8.
Corrected the compiler's processing of certain intrinsics when the -r8 option is present.
pgcpp reports the error 'unexpected default type'.
Corrected the compiler's handling of the DEFAULT(NONE) clause for OpenMP constructs.
Windows C99 header files.
Added the include files, stdint.h and inttypes.h.
Request to update CDK MVAPICH.
Added the newer version of mvapich to the CDK.
Missing C_LOC() error in module with ISO_C_BINDING included.
Corrected the USE of a module which contains a USE of iso_c_binding
Examples using TRIM() report the error 'string_expr_length: ast not string op'.
Correct the processing of a TRIM expression appearing as an item in an array constructor.
pgf90 example yields "Lowering" errors.
Corrected the processing of an ELEMENTAL function returning derived type.
Feature request - F2003 version of intrinsic SIZE.
Added the support of the SIZE intrinsic.
-dD' is not supported in pgcpp, just pgcc.
Updated the documentation and help to indicate that '-dD' is for pgcc-only.
ubuntu not recognized in lmgrd.rc
Updated lmgrd.rc to account for ubuntu.
Example fails with the error, 'mismatched carry-around expression'.
Corrected the compiler to account for duplicate expressions in the LRE optimization.
Dummy procedure args show up in object as undefined external refs.
Corrected the processing of MODULEs where certain dummy procedures of routines in INTERFACEs were showing up as global symbols.
pgcpp example seg faults when compiled -tp x64.
Corrected references of certain local pointers in the presence of unified binary.
Man pages indicate -O3 is the same as -O4.
Updated the man pages.
Optimized code reports wrong result for size() intrinsic.
Corrected the computation of SIZE of a pointer whose target is an array section where all but the last dimension is ':'.
C++ template example crashes pgcpp
Corrected how the compiler processes templates.
Legal f2003 code causes severe error 'Statement may not appear in an INTERFACE block'.
Added support of the f2003 statement: IMPORT.
pgcpp example problems with -mp.
Corrected the processing of field members within parallel regions.
f90 example hangs during compilation.
Corrected the processing a derived type PARAMETER.
Single to Double conversion(vectorized) failure with Cray pointers.
Corrected the vectorization of the single to double conversion when the source is a Cray pointer.
Extended asm gets syntax error "Can't find a register in class 'AREG' for extended ASM operand 4".
Correct the processing of "write only operands" when the operand has a "matching constraint".
Inconsistent interpretation of extended asm output parameters.
Fixed the processing of the 'm' constraints.