PGI Release 2020 Technical Problem Reports
What problems have been fixed in PGI 2020?
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 |
---|---|---|---|
28139 | 20.4 | All | LLVM vector length mismatch Corrected the conditional vectorizer for size differences between operands and masks |
28252 | 20.4 | All | Unknown variable references linking with -Mipa and -mp Corrected the setting for arguments to outlined functions |
28184 | 20.4 | All | LLVM opt use of undefined value with -fast Corrected the inlining of functions with VLAs |
28169 | 20.4 | C/C++ | ICE building MPICH 3.3.2: read_memory_region: not all expected entries were read Corrected the folding of statement-expressions |
28168 | 20.4 | Fortran | pgfortran allows private attribute in public namelist Added a check under the -Mstandard flag. |
28112 | 20.4 | Accelerator | pgnvd fails if user has non-default named GNU compilers (i.e. gcc is renamed) Updated makelocalrc to handle non-default named GNU compilers |
28085 | 20.4 | C/C++ | std::byte fails equality assertion Corrected the underlying type to be signed |
28078 | 20.4 | Accelerator | Switch statement in OpenACC compute region is off-by one Corrected the generation of jump tables in the C compiler |
28053 | 20.4 | Fortran | User code causes pgf901 to hang in "subr_call2" at line 3705 of semfunc.c Corrected a coding error in pgf901 |
28047 | 20.4 | Accelerator | OpenMP redeclaration error w/ for loop index variable declaration, private clause Corrected the handling of scopes for index variables |
28025 | 20.4 | All | Autoinline optimization gives wrong answers Corrected the def/use chains for complex operands |
28014 | 20.4 | Accelerator | OpenACC ICE - "Internal accelerator LILI consistency check failure" Corrected the generation of LILIs |
28013 | 20.4 | Accelerator | OpenACC application fails "Unknown variable ref" when performing a struct copy Corrected the handling in invariant bounds |
27994 | 20.4 | Fortran | Allocating an array of a derived type in a submodule gives an undefined reference error Corrected the compiler to correctly handle derived types defined in submodules |
27930 | 20.4 | Accelerator | Application for loop w/ compound condition zero-trip test only checks second condition Corrected the handling of zero-trip loops that are not countable |
27876 | 20.4 | Fortran | Significant performance deficit with PGI when using "transfer" Greatly improved the performance of TRANSFER for contiguous arrays |
27786 | 20.4 | Accelerator | OpenACC with if statements and generation of kernels Corrected the computation of use-def chains |
27685 | 20.4 | Fortran | Improper handling of integer underflow Corrected the intrinsic functions |
27432 | 20.4 | Accelerator | OpenACC code gets wrong results due to bad initial loop bounds index Corrected the computation of use-def chains |
27427 | 20.4 | Accelerator | Application test fails when compiled with OpenMP Corrected the compiler to mark certain indexes as internal |
27311 | 20.4 | Fortran | Failure to parse assumed length character and pointer on dummy arguments Corrected the compiler to allow assumed shape character array actual argument to be passed to assumed length dummy argument. |
26926 | 20.4 | Fortran | ICE "interf:new_symbol, symbol not found" when module uses ENTRY from other module Corrected the handling of symbols in a module that are not to be brought in with a USE ONLY statement |
26781 | 20.4 | Fortran | Undefined symbol "_m2_f1_" Corrected the name selection when the type bound procedure and internal procedure have the same name |
26514 | 20.4 | C/C++ | Failure to convert explicit 0 to NULL pointer in ternary operator Updated the C compiler |
26476 | 20.4 | Fortran | Request for adding debug information for function inlining Implemented for Fortran |
26209 | 20.4 | Accelerator | acc_copyin not using "present_or" semantics Updated the compiler to use present_or semantics |
25056 | 20.4 | Accelerator | OpenACC: User wavefront code gets wrong answers, loop bounds calculated incorrectly Corrected the computation of use-def chains |
24592 | 20.4 | Accelerator | OpenACC - Add support for calling C99 Complex Intrinsics in device code Added support for C99 complex intrinsics |
22339 | 20.4 | Accelerator | Code gets wrong answer when loop bounds variable assigned in conditional expr Corrected the computation of use-def chains |
28033 | 20.1 | C/C++ | LLVM opt mismatch compiling mpich 3.3.2 Corrected the compiler's handling of hidden thread-local variables |
28031 | 20.1 | C/C++ | Add support for std::launder Implemented std::launder |
27996 | 20.1 | Fortran | ICE "transform_call:Array Expression can't be here" when passing an array expression to norm2 Corrected the handling of array expressions for NORM2 |
27946 | 20.1 | Fortran | ICE: llc invalid forward reference with SELECTED_INT_KIND Corrected an entry in the virtual function table |
27934 | 20.1 | Accelerator | User code causes pggpp2-llvm to segv when compiled with "-ta=telsa:nordc -Mcuda" Corrected a coding error in the compiler |
27910 | 20.1 | Fortran | ICE bitcast with differing sizes Corrected how the compiler allocates certain local variables |
27894 | 20.1 | Accelerator | Dwarf generation for static array gives double indirection Corrected the compiler to generate correct LLVM metadata |
27871 | 20.1 | Fortran | Overlapping data initialization with bind(C) leads to incorrectly initialized values Corrected the LLVM code generator to handle initialization with BIND(C) |
27850 | 20.1 | C/C++ | Bogus warning "offsetof applied to non-POD types is nonstandard" Corrected the implementation of __builtin_offsetof |
27840 | 20.1 | Fortran | ICE: Incompatible ILI with loop vectorization and real*8 Corrected the implementation of mixed-type vectorization |
27816 | 20.1 | Accelerator | Application crashes in large kernel, blocksize (-1,1,1) gridsize (-2,1,1) Increased the size of argptr_array to match the CUDA maximum |
27790 | 20.1 | Accelerator | Using 64-bit integers in acc routines causes ptxas failure with -g Corrected the generated ptx |
27787 | 20.1 | Accelerator | CUDA Fortran ICE "Unsupported IPOPPAR" Implemented IPOPPAR for CUDA Fortran |
27724 | 20.1 | Fortran | Program terminates with runtime error when allocating already allocated array even with STAT Corrected the runtime behavior to not terminate if STAT is present |
27672 | 20.1 | Fortran | ICE "mark_ilitree: visit != val" new in 19.7 Corrected the implementation of mixed-type vectorization |
27620 | 20.1 | C/C++ | ICE: OMP runtime scheduling processing error 0 Corrected the handling of the schedule clause. |
27606 | 20.1 | Accelerator | A copy clause on loop construct overrides previous unstructured data movement Corrected the compiler not to force a copy for certain reductions |
27549 | 20.1 | Fortran | Syntax error with kind and underscore prefix Corrected the lexical scanner |
27508 | 20.1 | C/C++ | Multicore OpenACC application fails when target is tp=zen Updated the pre-defined macros used with built-in intrinsics |
27395 | 20.1 | Fortran | Overloading constructor yields undeclared derived type Corrected the symbol table entry for derived-type constructors |
27115 | 20.1 | Fortran | User code causes pgf901 to crash with a double free when using OpenMP Corrected the bookkeeping for firstprivate |
27078 | 20.1 | Accelerator | OpenACC invalid thread id with PGI_ACC_TIME=1 Corrected the thread-private declaration and the OpenACC runtime |
26937 | 20.1 | Fortran | USE variable declared in other module is undefined in function declaration Corrected the expansion of parameters |
26930 | 20.1 | Accelerator | OpenACC kernel does not pick up new loop bounds Corrected the compiler to better track changes in loop bounds |
26838 | 20.1 | Fortran | Memory leak with allocatable types Corrected the runtime to free components that were not freed in finalization |
26715 | 20.1 | Fortran | Using "DEC ATTRIBUTES" directive from User's Guide example 11.7.1 causes pgf902 error Corrected a system interface to Windows |
26692 | 20.1 | C/C++ | Multiple definitions of the same prototype give error when "restrict" is used in square brackets Corrected as part of the pgcc update |
26626 | 20.1 | Fortran | Failure to pass argument to type-bound procedure with only an 'END' statement Corrected the handling of tbp arguments |
26402 | 20.1 | Fortran | Incorrect results with similarly named subroutine Corrected an issue with overload resolution |
26275 | 20.1 | C/C++ | OpenMPI 3.1.2 failing to build with PGI 18.7 Corrected as part of the pgcc upgrade |
26263 | 20.1 | C/C++ | Improperly handling macro expansion with #elif Corrected as part of the pgcc upgrade |
26152 | 20.1 | C/C++ | Add symbol hiding via attribute "visibility" and compiler command line options Implemented the GCC-compatible visibility attributes and command-line options |
25526 | 20.1 | C/C++ | OpenACC reduction clauses give incorrect results with multicore Corrected several issues with reduction clauses |
25277 | 20.1 | C/C++ | Support for IBM C99 extension "__real__" and "__imag__" operators Implemented the __real__ and __imag__ operators |
24946 | 20.1 | Fortran | Pointers with strides causing copy-in errors. Corrected the check for contiguous targets |
24666 | 20.1 | C/C++ | Support for SSE 4.1 intrinsics Implemented the SSE 4.1 intrinsics |
24608 | 20.1 | Fortran | Behavior of -Ktrap signals in Fortran not consistent. Corrected the behavior of -Ktrap signals when using the -Kieee option |
24592 | 20.1 | Accelerator | OpenACC Add support for calling C99 Complex Intrinsics in device code. Implemented the C99 complex intrinsic in device code |
23962 | 20.1 | Accelerator | OpenACC with host_data and unstructured data region problems Corrected how the compiler determines a region in on-device memory |
22685 | 20.1 | C/C++ | Undefined reference to `_mm_cvtsi128_si64' Implemented this intrinsic function |
22324 | 20.1 | C/C++ | Missing intrinsics Implemented _mm_cvtss_si64 and related intrinsic functions |
21474 | 20.1 | Fortran | Reduction example on inner seq loop gets incorrect answers Insure that reductions are not moved from parallel to sequential regions |
20424 | 20.1 | Fortran | Requests support of BLOCK construct Implemented the Fortran 2008 BLOCK construct |
19681 | 20.1 | Accelerator | Using reductions with both a worker and vector loop fails Corrected the compilers handling of mixed-parallelism reductions |
14594 | 20.1 | C/C++ | Request for type-generic macros support in pgcc/pgc++ Corrected as part of the pgcc upgrade |
3883 | 20.1 | C/C++ | Example does not accept arrays subscript declarations in prototypes Corrected as part of the pgcc upgrade |