PGI Release 2019 Technical Problem Reports
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 Component |
Symptoms / Actions |
---|---|---|---|
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 Implemented |
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 |