What problems have been fixed in PGI 2019?

Each release of the PGI compilers brings a number of technical corrections to problems discovered by PGI and by users. Submit problems found using our online technical 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.

TPR Version Affected
Symptoms /
27725 19.10 Accelerator OpenACC: Using declare create on a fixed size module array initialized to 0 cause GPU code gen err
Corrected the logic for device array initialization
27603 19.10 C/C++ #include fails with strict ANSI compatibility enabled
Corrected the handling of __attribute__ when the -A option is used
27601 19.10 C/C++ Integer type specialization fails depending on include order with strict ANSI
Corrected the handling of __attribute__ when the -A option is used
27600 19.10 C/C++ Cannot include GCC 4.9.3+ regex_automation header with strict ANSI
Changed the compiler to allow an anonymous struct within an anonymous union in a system header file
27583 19.10 Fortran Incorrect "Subscript out of range" error when compiled with -Mbounds
Corrected the generation of function prolog code that indirectly caused the error
27576 19.10 Fortran ICE with allocating unlimited polymorphic with source attribute
Corrected the code generator to correctly fetch the size of the source or mold parameter
27541 19.10 Accelerator Use of undefined value %L.B0009 when -Mcuda and -ta=multicore are used together
Corrected the code generator to prevent generation of device code for this combination of options
27533 19.10 All Windows missing entry points in pgf90rtl.dll
Corrected the library to include the missing entry points
27410 19.10 Accelerator OpenACC: Adding a loop index to a data clause causes an illegal memory error
Corrected how the compiler handles implicit private variables
24933 19.10 All Please make Windows CE version installable anywhere the Professional compilers can be installed.
Removed the restriction from the Windows installer
24916 19.10 Fortran "pgfortran -fast -Kieee" significantly slower vs. 16.10 -- power of 2
Restored an optimization of X**Y when Y is 1 or 2
22316 19.10 Accelerator Success with "!$acc kernels loop copy(e) copyin(b)" failure with "!$acc kernels"
Corrected the compiler to properly identify which pieces of b and e to copy in and out
21911 19.10 Fortran F2008: capability to have non-NULL procedure initialization
Added support for default procedure pointer initialization
21365 19.10 Accelerator Inlining subroutine with OpenACC directives causes ICE "pragma: bad ilmopc"
Corrected the inliner
20963 19.10 Fortran F2008: please implement execute_command_line
Implemented EXECUTE_COMMAND_LINE for Linux and macOS
27608 19.9 Accelerator Regression with host_data use_device
Corrected the calculation of array addresses that require offsets
27578 19.9 Fortran Buffer overflow with -Mlist
Fixed an incorrect buffer overflow check
27577 19.9 Fortran Interface mismatch in procedure pointer assignment
Relaxed an internal assertion check
27559 19.9 Fortran Invalid symbol table index with failure to resolve generic type bound procedure
Corrected the TBP checking when the actual arguments are subprograms
27543 19.9 C/C++ Add support for read time stamp counter intrinsic
Added the rdtscp intrinsic
27520 19.9 C/C++ Unsupported AVX-512 intrinsics set1/mul
Added support for more intrinsics, including these
27514 19.9 C/C++ Treat out-of-range integer operations as warnings
Demoted the error to a warning
27508 19.9 C/C++ Multicore application fails when target is tp=zen, from 19.1 onwards
Corrected the driver to define the correct architecture macros for zen, for example, __SSE2__.
27451 19.9 Accelerator Driver: "-Mcudalib -Bstatic_pgi" uses static CUDA libs, but no static libs exist for cuSparse cuRand
Added these static libraries to the package
27394 19.9 Fortran Read into namelist hangs
Treat allocatable character objects that are allocatable scalars similar to deferred length character objects
27393 19.9 Accelerator Incorrect results with implicit reduction within OpenACC routine
Corrected the handling of reductions with module variables
27392 19.9 Accelerator Missing -Minfo on reduction clause
Reductions are now logged if a subroutine is marked as an acc routine
27345 19.9 Accelerator Explicit reduction with scalar in separate module cannot find symbol
Corrected the symbol table entry for the device symbol
27106 19.9 Accelerator Unknown variable reference with non-referenced index in inner loop
Corrected the internal data structures used to track references
27058 19.9 Accelerator OpenACC update device directive with allocated host memory yields illegal address
Corrected the compiler to initialize references to uplevel addresses
26589 19.9 C/C++ Extended asm failure when compiling OpenBLAS
Implemented many more extended asm instructions
26560 19.9 Fortran Incorrect DWARF emitted for function parameters
Remove the redundant dereference DW_OP on formal argument's expression mdnode when the LL_BaseDataType is non-pointer
25600 19.9 Fortran Segfault on polymorphic sourced allocation, valgrind error in pgf90_poly_asn
Corrected the generated code to initialize the type descriptor of a deferred length character object
24666 19.9 C/C++ Support for SSE 4.1 intrinsics
Added support for more missing instrinsics
23852 19.9 Accelerator Compiler fails to generate kernel, Unknown variable reference
Corrected the internal data structures used to track references
22894 19.9 Accelerator OpenACC: User code gets "Misaligned address" when compiled with cc30
Corrected the compiler
22685 19.9 C/C++ Undefined reference to '_mm_cvtsi128_si64'
Improved support for intrinsics
27354 19.7 C/C++ Subscripting an array of enum class type with sizeof less than int does not work
Corrected the compiler to use the correct type size
27349 19.7 Accelerator GPU failures for intrinsics with array syntax in a KERNELS block
Corrected the allocation of temp arrays for SUM and MAXVAL
27347 19.7 C/C++ Higher optimization removes non-virtual thunk from object
Corrected the compiler not to mark such objects as link-once
27319 19.7 C/C++ ICE generating invalid LLVM IR
Corrected the initialization of data for certain sequences of fields
27273 19.7 Fortran ICE OpenMP missing token with pointer inside private clause
Corrected the compiler to handle pointers in private clauses
27249 19.7 Fortran Issue with public parameter, procedure name: not public entity of module
Corrected the generation of module files when entity names match
27239 19.7 Fortran Add support for logical_kinds
Corrected the underlying problem; support nested intrinsic calls in PARAMETER statements
27236 19.7 Accelerator Request to call ACC routine from CUDA Fortran
Implemented calling from CUDA Fortran device routine to OpenACC routine vector procedure
27214 19.7 Accelerator LLVM code gen error "parse '%li99' defined with type 'i64'"
Corrected the compiler to always generate the correct canonical form of operations
27213 19.7 Fortran Passing argument functions that are instances of abstract functions
Relax the semantic checking in the compiler to allow this case
27212 19.7 Fortran Can't use public user-defined operator from another module
Corrected the compiler to correctly parse user-defined operators
27181 19.7 Fortran A type bound procedure can have only one binding name
Updated the parser to accept a list of binding names
27158 19.7 Accelerator OpenACC "if" clause on host_data directive causes -Minfo segfault
Corrected the initialization of compiler internal data structures
27155 19.7 Accelerator Compiling CUDA Fortran code with "-g" gets error: missing required field 'scope'
Do not generate debug information on the host for a device routine
27125 19.7 Accelerator Unable to resolve size in acc loop with pointers to derived types
Corrected the compiler for certain situations with pointers to derived types
27109 19.7 Accelerator Exit data without clauses. Is this valid? Error message is not what is expected.
Corrected the compiler to issue error messages in this case
27101 19.7 Accelerator Incorrect GPU answers with max and sqrt intrinsics
Implemented IEEE compliant min and max intrinsics
27096 19.7 Fortran Failure to include directories with long absolute paths
Increase the length of allowed paths to match the system path-length limit
27051 19.7 Fortran Unexpected result and bus error
Corrected the compiler to add a type descriptor argument to function calls
26981 19.7 C/C++ Mbounds possible false positive with initialized array of char *
Corrected the compiler for cases where the size of the initialized array can be known
26975 19.7 Fortran No DWARF debug information generated for allocatables within modules
Enhanced the DWARF generation for allocatables
26908 19.7 Accelerator OpenACC Fortran dot_product() returning incorrect results when offloaded to GPU.
Corrected the accelerator code generator
26897 19.7 Accelerator Code gets error "cuModuleGetFunction returned error 500: Not found" due to missing reduction
Corrected the code generation for a single gang
26706 19.7 Accelerator OpenACC: missing interface in OpenACC module for "acc_memcpy_device"
Added the interface
26421 19.7 Fortran F2008 contiguous pointer issues
Implemented runtime error checking for contiguous arrays
26394 19.7 Fortran pgfortran man page on OpenPOWER does not list Ktrap
Added documentation for Ktrap
26383 19.7 C/C++ DWARF symbols not generated properly for union within struct
Corrected the compiler to handle this case
26183 19.7 Fortran PGF90 segfaults with -O2
Corrected the optimizer
26147 19.7 Accelerator Linking CUDA Fortran program with "-ta=multicore" gives linker errors
Corrected the creation of initialization constructors
25124 19.7 Fortran pgfortran fails to handle "contains without content" and "contains without container" properly
Corrected the parser to handle empty sections
24831 19.7 Accelerator Loop exits one iteration too early with OpenACC
Corrected the code generator
24715 19.7 Accelerator OpenACC Out of memory error using vector private
Corrected a problem with an uninitialized variable
24104 19.7 Fortran NORM2 intrinsic function is missing
Implemented NORM2
24058 19.7 Accelerator Accelerator 'loop contains unsupported statement type' float4 data2 = data[i];
Corrected the handling of struct move expansion
23950 19.7 Accelerator $acc kernel with "val = maxval(abs(t2 - t1))" fails at runtime
Corrected the compiler and improved optimization of abs
23849 19.7 C/C++ Illegal optimization of unused variable in va_arg
Corrected the compiler to track side-effects of va_arg()
23765 19.7 Fortran Erroneous placement of "contains" causes ICE "unknown state file error"
Corrected the parser
23755 19.7 Accelerator OpenACC pointer scalar semantics not behaving as expected
Corrected default(present) to work with pointers
22582 19.7 Accelerator OpenACC code gets ICE
Corrected the handling of an empty host_data region
22578 19.7 C/C++ Inline assembly in C/C++ does not support sse4.1 instructions.
Added support for many sse4.1 instructions
22495 19.7 Accelerator A goto which jumps to a continue statement causes "Unexpected flow graph" error
Corrected the flow-graph generation
21903 19.7 Fortran Execution hangs with more than one thread. Expected output with 2 threads
Introduced distinct semaphores to guard i/o routines
21879 19.7 Accelerator Code gets incorrect answers when calling a "routine gang" from a "kernels" region
Corrected an error generating calls
21852 19.7 Accelerator struct return function fails badly
Corrected how the compiler handles structs
21594 19.7 Accelerator Should limit the vector length to 1024 on NVIDIA targets
Vector length is now limited to 1024 on NVIDIA targets
20869 19.7 Accelerator OpenACC code fails with "Unknown variable reference" when dereferencing a pointer
Corrected the compiler
20236 19.7 Fortran INTEGER, INTRINSIC :: MOD "Name mod is not an intrinsic function"
Corrected handling of intrinsics in internal procedures
27104 19.5 Accelerator Undefined reference to __pgi_ldg_unknown
Corrected the compiler to only use ldg for supported data types
27102 19.5 Accelerator Unmatched prototype for acc device routine
Corrected a type mismatch in the compiler
27025 19.5 Accelerator Private array on worker loop isn't actually private
Corrected an indexing error in the accelerator code generator
26897 19.5 Accelerator Application gets error "cuModuleGetFunction returned error 500: Not found" due to missing reduction
Corrected the code generation for reductions
26895 19.5 All Divide by zero error when calling C++ random number generator from Fortran code
Corrected the interaction between x87 code and SSE code
26335 19.5 Accelerator Module array variable initialization not parallelizing in "kernels" region.
The compiler now generates parallel code for array variable initialization
24150 19.5 Accelerator Severe error on OpenPOWER "Missing branch target block"
Implemented subkernels which fixed this issue
22574 19.5 Accelerator ICE "Load of NULL Symbol" when save is used in a routine
Corrected the compiler to statically allocate SAVE data on the GPU
22336 19.5 Accelerator User code gets PTX error with -g
Fixed in CUDA 8.0
19219 19.5 CUDA Fortran Allow user to manage parameter arrays
Enhanced the compiler to create statically initialized data on the device
22549 19.4 Accelerator OpenACC application exits data within another data region "cuMemcpyDtoHAsync returned error 1: Invalid value"
Corrected the runtime
27064 19.4 Fortran Using too many assign statements causes pgf902-llvm to segfault
Corrected the compiler to properly allocate tables for ASSIGN
27054 19.4 Fortran Problem compiling certain OpenMP atomic captures LLVM compilers
Corrected the compiler to handle all cases of atomic capture
26987 19.4 Fortran LLVM ICE with -Msave
Corrected the compiler to properly generate names for static objects
26979 19.4 Accelerator pgnvd needs to add "--c++14" to "cicc" (-ta=tesla:nollvm) with GNU 7.x or later
Enhanced the localrc handling to use different compilers
26906 19.4 Fortran Application regression in pointer assignment to extended derived type
Corrected the handling of dummy argument descriptors
26893 19.4 Fortran LLVM ICE unsafe type for inttoptr32
Corrected the compiler to pass subroutine pointers by reference
26840 19.4 All General protection fault with -tp nehalem
Corrected the code generator to properly load long constants on older architectures
26652 19.4 Fortran Infinite recursive loop process_final_procedures inside f90 runtime
Corrected the compiler to correctly generate layout descriptors for type-bound procedures
26558 19.4 All Missing DWARF for allocatable arrays on OpenPOWER
Added DWARF support for allocatable arrays to LLVM compilers
26281 19.4 Accelerator GPU and CPU maxval reduction produced different values
Corrected the accelerator maxval reduction
26257 19.4 Accelerator Using maxval over multiple dimensions within acc loop yields incorrect values
Same as TPR26281
26002 19.4 Fortran Using shared libraries segfaults when a function is called.
Enhanced the layout descriptor to work in shared libraries
25988 19.4 All Add .note.GNU-stack ELF section
Implemented support to prohibit executing code on the runtime data stack
25844 19.4 Fortran Applications segfault, reading from null address in eval_trees.f90
Corrected the compiler to better manage descriptors
23851 19.4 Accelerator Overflow in index address calculation
Corrected the compiler optimization to do 32-bit address computations
23242 19.4 Accelerator OpenACC kernels with array syntax shows bizarre behavior
Added an information message to dispel the confusion
23238 19.4 Accelerator OpenACC request for C++ support for isinf
Implemented isinf.
23085 19.4 Accelerator OpenACC application shows exit data segfaults
Corrected the runtime
22703 19.4 Accelerator OpenACC PGI extension "deviceid" gets runtime error "Invalid handle"
Corrected the runtime
26950 19.3 Fortran Constant argument parameter gets written even when guarded
Tightened the compiler rules for optimizing conditional moves
26889 19.3 Accelerator CUDA changed cudaPointerAttributes struct in CUDA 10; CUF needs to follow
Updated the CUF module with the new layout
26885 19.3 Fortran FPE with write
Avoided generating a vcvttsd2si instruction because it causes a floating point exception
26878 19.3 Fortran Value does not match function result type i64
Corrected the implementation of BIND( C ) for i64 function results
26877 19.3 Fortran ICE with ILM file with -Mllvm
Corrected the handling of module files for compilers using the LLVM code generator
26817 19.3 Accelerator A struct member int as a kernel loop size prevents parallel execution
Improved the analysis of loop index expression
26784 19.3 Accelerator Run time error "ALLOCATE: copyin Symbol Memcpy FAILED:13" when compiling with "-tp knl"
Removed device code support for Knights Landing host systems.
26718 19.3 Accelerator Generated gpu code omits comparison within MERGE intrinsic
Corrected a bug in the optimizer
26596 19.3 Accelerator ICE "parse integer constant must have integer type"
Corrected a type error in the compiler
25243 19.3 Accelerator Using type members in host_data mangles the type's parent address
Corrected ordering of mangling for array descriptors
24145 19.3 Accelerator ICE "size_of: attempt to get size of assumed size character"
Corrected the compiler to handle this case
24041 19.3 Accelerator Intercept cudaSetDevice calls
Implemented synchronization between cudaSetDevice and acc_set_device_num
22166 19.3 Accelerator User code gets wrong answers when using maxval within another loop
Corrected the handling of this reduction
19674 19.1 Fortran ICE "Errors in Lowering" with contained subroutine in module
Corrected the compiler
20337 19.1 C/C++ OSX gives directory not found warning when linking with -fPIC
Remove the obsolete library libso from the command line
20425 19.1 C/C++ User requests PGI-compiled MAGMA library
The MAGMA libraries are available for download on pgicompilers.com
24234 19.1 CUDA Fortran Managed memory at module scope gets undefined references
Add symhandle copyin and copyout routines to the cudafor runtime
24263 19.1 Fortran ICE "get_const_from_ast: can't get const value"
Handle more cases of constant scalar expressions in parameter statements
24317 19.1 Accelerator GPU code generation is missing zero-trip test causing wrong answers in user code
Corrected the code generator
25041 19.1 Fortran Performance differences with pointers in structs and array syntax
Enhanced the compiler pointer disambiguation code to better handle structs
25957 19.1 Accelerator OpenACC RFE: recognize __finite routines
26016 19.1 Fortran An include file causes a line length failure when the source file is deep in the source tree
Updated the compiler to accommodate much longer paths
26065 19.1 Fortran Interface constructor fails when renaming
Corrected the compiler to recognize the case where a constructor is being renamed
26066 19.1 Accelerator With -ta=multicore, ICE: size_of: attempt to size assumed size character 0
Corrected the compiler to handle the size_of cases when compiling for multicore
26097 19.1 C/C++ Using -fPIC, a matrix matrix multiply causes an ICE
Implemented GCC style -mask=att support
26187 19.1 Fortran Support OpenMP 4.0 SEQ_CST qualifier
Added support for SEQ_CST to the compiler
26191 19.1 Accelerator OpenACC: runtime failure temp array not present due to -Mallocatable=03
With -Mallocatable=03, the runtime now recognizes that temps are created on the device
26274 19.1 Fortran ICE: interf:new_symbol not found with submodules
Corrected the internal handling of separate module procedures and dummy arguments
26282 19.1 Accelerator Using managed memory with Thrust causes error header file errors
Extend the C solution for using Thrust with OpenACC to C++
26289 19.1 Accelerator Managed memory getting undefined reference to pgi_delete_managed in device code
Corrected how the compiler handles passing pointers to memory-allocation functions
26300 19.1 Fortran ICE: compiling libxc-3.0.0 :: Errors in Lowering
Corrected the compiler to handle complex dummy parameters to c_associated
26327 19.1 Fortran ICE: missing subtype for pointer datatype 68
Corrected the handling of a CHARACTER type with the same name as its enclosing subprogram
26366 19.1 C/C++ Code fails with a Boost include
Prevent the compiler from generating code in a non-evaluated context
26376 19.1 C/C++ Compiler fails with an internal error
Corrected the internal error in the compiler
26403 19.1 Fortran Found a problem with derived type data initialization
Corrected the compiler to correctly handle complex cases of type-descriptor initialization
26410 19.1 Fortran Segfault in type-bound function with pointer return value
Corrected the compiler to track dummy argument descriptors
26470 19.1 Accelerator C++ code fails at run time
Corrected the compiler to handle cases where arrays assigned in a loop are arriving to the kernel as live
26540 19.1 Fortran ICE: Operand type mismach for AVX instructions
When using -Mlarge_arrays, change the compiler to carefully track the types used to values
26550 19.1 Accelerator acc kernel from std::thread has an invalid context
The code worked well with -mp, so in PGI 19.1, all OpenACC support libraries are compiled with -mp
26552 19.1 Fortran A derived type C binding fails for a C++ object
Pass interface objects by value, not by reference; note pointers are passed by value as addresses
26588 19.1 C/C++ Missing -Meh_frame option for OpenPOWER
Implemented the -Meh_frame and -Mnoeh_frame options for OpenPOWER
Click me
Cookie Consent

This site uses cookies to store information on your computer. See our cookie policy for further details on how to block cookies.