PGI Release 2018 Technical Problem Reports
What problems have been fixed in PGI 2018?
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 |
---|---|---|---|
16570 | 18.10 | OpenMP | OpenMP omp_set_max_active_levels(0) not setting the ICV Corrected the runtime to honor the active levels value |
18800 | 18.10 | Accelerator | Unsupported branch type with switch statements Corrected the compiler to support large switch statements |
19986 | 18.10 | Accelerator | Long compile times for accelerator code Reimplemented several slow algorithms |
21386 | 18.10 | Accelerator | C++ error "coalesce_and_lookup_generalized_identifier: not identifier" with array of structs Corrected the compiler to better integrate array indexing and subarray indexing in accelerator pragmas |
21390 | 18.10 | OpenMP | Memory deallocation failure when OpenMP used Corrected the compilers tracking of allocated data |
21697 | 18.10 | CUDA Fortran | Please remove 32-bit CUDA-Fortran-Book tests that do not build from examples directory Removed the examples because 32-bit targets are no longer supported |
21982 | 18.10 | OpenMP | OMP_MAX_ACTIVE_LEVELS should be a large number by default Changed the default setting to INT_MAX |
22158 | 18.10 | Accelerator | Fortran calls requiring array reshaping are not supported Improved the support for reshape in accelerator regions |
22492 | 18.10 | Accelerator | Auto reduction in vector routine causes ICE "Load of NULL symbol" Corrected the compiler to initialize the reduction variable |
22607 | 18.10 | Accelerator | Trouble accessing member elements of struct Corrected the compiler |
23160 | 18.10 | Fortran | pgfortran -Mallocatable=03 compiler internal error in lowering Corrected how the compiler handles shallow copies of array |
23404 | 18.10 | Optimization | Address issues with results differing on CPUs because of FMA Added informational messages when FMA instructions are generated |
23562 | 18.10 | Accelerator | Calling both cudaSetDevice and acc_set_device_num in OpenMP gets context creation error Changed the runtime to retain the primary context |
23764 | 18.10 | Fortran | ICE - Lowering Error: symbol a$sd is an inconsistent array descriptor Corrected the handling of array descriptors |
24392 | 18.10 | Accelerator | Severe Error - 'Clause 'DEVICEPTR' not allowed in ACC DECLARE ' Implemented additional features in the DECLARE directive |
24608 | 18.10 | Fortran | Behavior of -Ktrap signals in Fortran not consistent. Corrected the handling of traps in the runtime |
24639 | 18.10 | Accelerator | Relocation truncation error when putting multicore in shared object Changed generated code to use a @PLT reference |
24677 | 18.10 | Fortran | Application segmentation faults on execution. Corrected the virtual function table |
24680 | 18.10 | Fortran | OpenPOWER compile gets use of undefined value %verbose Corrected the symbol table for module names |
24817 | 18.10 | Fortran | pgfortran does not read or post strings properly allocated from a namelist. Corrected the handling of the internal namelist descriptor |
24875 | 18.10 | Accelerator | Relocation truncation error when putting OpenACC and CUDA in shared object; pgimport problem Implemented PIC code generation for registration objects |
24933 | 18.10 | Installation | Please make Windows CE version installable anywhere the Professional compilers can be installed This restriction has been lifted |
25053 | 18.10 | OpenMP | Fortran example fails when 'allocatable' replaced with 'pointer' type. Corrected the handling of arrays in the WORKSHARE construct |
25695 | 18.10 | Fortran | ICE: insert_sym: bad hash Corrected the compiler |
25846 | 18.10 | Fortran | Compiling gives IL_RES of ILI is incompatible with context Corrected the context :) |
25999 | 18.10 | All | Add -static as a synonym to -Bstatic to help with libtool Added a new command-line option -static |
26003 | 18.10 | Fortran | The defined "elemental" final routine is not called on deallocation Corrected the guard so the final routine is called |
26015 | 18.10 | Accelerator | Add "guided" schedule for OpenACC multicore Implemented the feature |
26060 | 18.10 | Fortran | Add special case for small matrices to 'matmul' intrinsic function. Optimized handling of matrices that number in the low thousands of elements |
26092 | 18.10 | Fortran | Program cannot access PRIVATE type bound procedure Corrected the compiler |
26103 | 18.10 | Fortran | Problems with allocatable character arrays Reimplemented much of the handling of allocatable array of character constructors |
26136 | 18.10 | Fortran | Optimization introduces phantom assignments that cause SIGSEGV Corrected the conditional assignment optimization to avoid read-only memory |
26152 | 18.10 | C/C++ | Add symbol hiding via attribute "visibility" and compiler command line options Implemented __attribute__((visibility)) and the command-line options -fvisibility and -fvisibility-inlines-hidden |
26157 | 18.10 | Runtime | Fortran floating point exception with 0 to a power Corrected the implementation of dpow |
26181 | 18.10 | Fortran | Compiler fails to call a private type-bound procedure Corrected the implementation of forward references to type-bound procedures |
26184 | 18.10 | Fortran | Code fails to compile atomic operations to derived type members Corrected the internal storage class of derived type members |
26196 | 18.10 | C/C++ | u_int64_t undefined with some include files Adjusted the header files to work better with GCC 4.7 and 4.8 |
26234 | 18.10 | Fortran | Fortran floating point exception Corrected the analysis for chained-conditional optimizations |
26242 | 18.10 | Runtime | Haswell FPE with zero base Corrected the implementation of dpow to avoid the floating-point exception |
26338 | 18.10 | Accelerator | "no .eh_frame_hdr table" when compiling NVIDIA OpenACC training course lab #2 Corrected the code generator |
26368 | 18.10 | Accelerator | Shared-library code fails with -Mllvm with managed memory in a C++ shared library Corrected the compiler |
26374 | 18.10 | Accelerator | Code fails mixing CUDA Fortran pinned with tesla:managed Corrected the pool allocator to work properly when mixing pinned and managed memory |
26378 | 18.10 | Fortran | Application produces NaNs at -O2, okay with -Mvect=nocond Corrected a problem with complex conditional optimization |
26079 | 18.7 | C/C++ | Missing debug info for typedefs and type aliases Corrected the compiler's DWARF generation |
25979 | 18.7 | Fortran | NAMELIST read fails at run time when members are pointers to derived types Corrected the compiler and runtime to handle this case |
25886 | 18.7 | Accelerator | Make -Mcudalib=cufft work with -Bstatic_pgi for CUDA 9.x and up Added the library libcufft_static.a to the release package |
25873 | 18.7 | Fortran | Code causes compiler failure with procedure arguments Corrected the compiler to handle inner procedure arguments |
25863 | 18.7 | Fortran | TRANSFER intrinsic causes an internal compiler error Corrected the compiler to handle cases where a function is used as a parameter |
25859 | 18.7 | Fortran | Link error with 17.5 and later Corrected the compiler to restrict external references to type descriptors |
25851 | 18.7 | Fortran | Symbols ending in __td_ causing code to not link Corrected the compiler to restrict external references to type descriptors |
25693 | 18.7 | Fortran | Structure constructor with allocatable component rejected Reworked how structure constructors are handled |
25675 | 18.7 | Fortran | Empty constructor causes syntax error Reworked how structure constructors are handled |
25606 | 18.7 | Fortran | Debugger issues with arrays, local variables, and offsets off by one Corrected the handling of negative offsets when generating DWARF |
25604 | 18.7 | C/C++ | Member variable debug info missing when same name as class Corrected how the compiler generates DWARF in this case |
25603 | 18.7 | C/C++ | C++ references are reported as pointers in the debugger Corrected the compiler to correctly mark references when generating DWARF |
25591 | 18.7 | Fortran | Passing an internal subprogram as argument Corrected the compiler to handle internal subprogram descriptors as arguments |
25574 | 18.7 | C/C++ | C11 test gets ICE: mkexpr: bad id -99 Implemented the _Generic macro and related support |
25555 | 18.7 | Accelerator | Call back routines when the program encounters an OpenACC runtime error Document existing API acc_set_error_routine |
25554 | 18.7 | Fortran | F2003 code gets ICE: "insert_sym: bad hash" Corrected the resolution of associate symbols |
25467 | 18.7 | Accelerator | OpenPOWER 'pghpf_instance_i8' has no acc routine information Corrected the compiler to always inline this routine |
25328 | 18.7 | Accelerator | Mixing OpenACC and OpenMP code on Windows causes device num to change after data region Added OpenMP support to Windows library |
25306 | 18.7 | Fortran | Very long comment line causes fixed format Fortran to fail Corrected the compiler to handle much longer lines |
25284 | 18.7 | Fortran | Applications get an LLVM error when using a SAVE statement in a module Corrected an underlying problem with static descriptors |
25084 | 18.7 | Fortran | Empty structure constructors are not handled correctly Reworked how structure constructors are handled |
24973 | 18.7 | Fortran | Generic class and type casting problem Corrected the handling of CLASS(*) dummy arguments |
24845 | 18.7 | Accelerator | Array constructors in OpenACC parallel loop get wrong answers Corrected the creation of array constructors in parallel regions |
24599 | 18.7 | Accelerator | An acc routine vector with 2d temp arrays gets launch failures Implement better error reporting in the runtime |
23598 | 18.7 | Accelerator | A seq routine with seq loops fail Implemented named constant arrays in device code |
22345 | 18.7 | Accelerator | Using switch statement with a case label of 0 gets wrong answers Corrected the handling of C case statements |
22221 | 18.7 | Fortran | Add support for Submodules Implemented support for SUBMODULE |
22158 | 18.7 | Accelerator | Fortran calls require array reshaping in OpenACC Corrected the compiler to generate a contiguous array |
19910 | 18.7 | Fortran | Fortran 2003 allocatable semantics should be the default behavior Switched the default behavior to 2003 semantics from 1995 semantics |
17292 | 18.7 | C/C++ | PGCC-S-0155-#pragma omp for does not match canonical form Implement handling of C++ iterators with OpenMP |
16163 | 18.7 | C/C++ | Syntax error for #pragma omp Corrected the parser to handle standalone directives |
25612 | 18.5 | Accelerator | Windows C compiler, using -Mcuda, cannot open file 'libcudapgi.lib' Corrected the Windows installation packages to include libcudapgi.lib. |
25599 | 18.5 | Fortran | User code gets incorrect error "Expression must be character type" using "ubound" param init Corrected the compiler's handling of ubound. |
25572 | 18.5 | Accelerator | User code gets ICE with OpenACC+OpenMP using Lin+LLVM backend Added recognition of __kmpc_global_thread_num in compiler's backend. |
25570 | 18.5 | Accelerator | OpenACC: undefined reference error when using ISO_C_BINDING in a function with a kernel Corrected the compiler's handling of BIND(C). |
25535 | 18.5 | Fortran | User test gets segfault on OpenPOWER Corrected the compiler's loading of a class descriptor. |
25459 | 18.5 | Fortran | MOVE_ALLOC with polymorphic arguments loses dynamic type Corrected the compiler's handling of a dynamic type member in a descriptor embedded in a derived type. |
24877 | 18.5 | Accelerator | pgf90 -c -ta=multicore ICE "Unhandled DTY case in load_var" Corrected the compiler's handling of loop trip counts. |
24141 | 18.5 | Fortran | BIND(C) reference is being name mangled. Corrected the compiler's handling of BIND(C). |
23781 | 18.5 | Accelerator | OpenACC: MPI program will create multiple context on device 0 calling acc_get_device_type Corrected the compiler's creation of contexts. |
21314 | 18.5 | C/C++ | pgcpp example gives wrong answers with optimization (-fast, -O2, etc) PGI C++ compiler (pgc++) compiles the provided test case without error. |
25514 | 18.4 | Fortran | LLVM reports undefined value with -mp Corrected the compiler |
25400 | 18.4 | Accelerator | Small C++ example code compiles forever Corrected the compiler |
25377 | 18.4 | C/C++ | Missing support for "#pragma GCC warning" and "#pragma GCC error" Implemented these pragmas |
25373 | 18.4 | Accelerator | Application does not link with -Bstatic_pgi on OpenPOWER like it does on x86 Corrected the driver |
25372 | 18.4 | C/C++ | Add support for constants declared with appended 'd/D' like 1.234D Implemented this GCC extension |
25365 | 18.4 | Fortran | Using Fortran accessors from C++ routine to access PARAMETER values get wrong value Corrected the compiler |
25355 | 18.4 | Fortran | Compilation error with logical(8) ::f =.true. Corrected the compiler's error checking logic |
25352 | 18.4 | Fortran | Compiler reports ambiguous interface error for move_list Corrected the compiler |
25351 | 18.4 | Fortran | Compiler incorrectly reports too few data constants in initialization statement Corrected the compiler |
25316 | 18.4 | Libraries | The library libpgm conflicts Linux libpgm Renamed libpgm to be libpgmath |
25268 | 18.4 | Fortran | Object-oriented code works at -O1, fails at -O2 in pgf90_dealloc_poly03 and final procedure Properly initialize descriptors |
25250 | 18.4 | Accelerator | Building application with "managed" gets an LLVM error on OpenPOWER Corrected the compiler |
25217 | 18.4 | Accelerator | Application gets an LLVM error on OpenPOWER: "use of undefined value" Corrected the compiler |
25176 | 18.4 | C/C++ | ICE "lowering of xx to ILI of this kind not yet implemented" Implemented the missing lowering functionality |
25067 | 18.4 | Fortran | Derived type i/o example gives segmentation fault Corrected the compiler and runtime library |
24995 | 18.4 | Fortran | Compilation error using TRANSFER with unlimited polymorphism Corrected the compiler |
24932 | 18.4 | Fortran | Compiler incorrectly reports syntax error on type definition Corrected the compiler |
24665 | 18.4 | C/C++ | The include file immintrin.h has typos Corrected the typos |
24182 | 18.4 | Accelerator | C++ code gets error when calling device routine and "parallel" is missing scoping brackets Corrected the compiler |
24048 | 18.4 | CUDA Fortran | CUDA Fortran reports an LLVM parse error when using "\r" in a string initializer for a module parameter Corrected the compiler |
25249 | 18.3 | Accelerator | Illegal memory error in 17.10 when using "cudaLaunchKernel" Corrected the compiler |
25298 | 18.3 | C/C++ | C parameter is set using the double precision literal "d" Corrected the compiler to accept this GCC extension |
25223 | 18.3 | Accelerator | Accelerated Loop Block in fails at run time Corrected the compiler to handle conditional out-of-bounds references |
25176 | 18.3 | C/C++ | ICE "lowering of xx to ILI of this kind not yet implemented" Corrected the compiler |
25016 | 18.3 | C/C++ | Please support GCC extension '__builtin_return_address' Added __builtin_return_address and __builtin_frame_address to the PGI+LLVM compilers |
24870 | 18.3 | Accelerator | ICE "Unhandled DTY case in load_var" with -ta=multicore Corrected the the compiler |
25230 | 18.3 | Fortran | ICE on OpenPower: internal routine gets bad address for outer variable Corrected the compiler |
25131 | 18.1 | Fortran | Legal code caused diagnostic "Illegal use of symbol r8 - not public entity of module" Corrected the compiler |
25123 | 18.1 | Installation | macOS 17.10 com.pgroup.flexlm.plist points to '2016' and not '2017' Corrected the file to refer to the proper release |
25101 | 18.1 | Fortran | Application gets a double free or corruption in process_final_procedures Corrected the implementation of final procedures |
25098 | 18.1 | Fortran | Application regression in 17.10; worked in 17.4 and 17.5 Corrected the initialization of polymorphic array objects |
25024 | 18.1 | Fortran | Erroneous compilation error optimizing ASSOCIATE with OpenMP Corrected the handling of uplevel addresses for ASSOCIATE in parallel regions |
25023 | 18.1 | Fortran | OpenPOWER compilation errors with OpenMP and optimization or when debugging is enabled Corrected the LLVM code generator |
25002 | 18.1 | Fortran | Return inside OpenMP parallel regions gets error on OpenPOWER Corrected the compiler to issue an error message in this case |
24989 | 18.1 | Accelerator | pgc++ complains Invalid accelerator region: branching into or out of region is not allowed Corrected the compiler to ignore exceptions in device code |
24979 | 18.1 | Accelerator | ICE IL_RES of ILI is incompatible with context 0 Corrected the handling of 8-byte integer induction variables |
24968 | 18.1 | Accelerator | OpenACC cudaGetSymbolAddress error when calling acini when using "declare" and compiling -Mcuda Corrected the kernel launch sequence |
24956 | 18.1 | C/C++ | pgc++ is very slow compiling a class with 71 base classes and 25 levels of inheritance Optimized the algorithm used to process the inheritance hierarchy |
24944 | 18.1 | Fortran | Polymorphism problems with procedure pointers Corrected the compiler analysis of functions that return arrays |
24935 | 18.1 | C/C++ | Compilation fails when testing a constructor with zero length Changed the compiler to allow this g++ extension |
24931 | 18.1 | Fortran | Variable initialization fails when using SHIFT intrinsics Implemented compile-time evaluation of LSHIFT, ISHFT, and RSHIFT intrinsics |
24923 | 18.1 | C/C++ | std::to_string fails on OpenPOWER Corrected the handling of __builtin_va_start with some versions of GCC |
24918 | 18.1 | All | Compiler outputting extra verbiage with ishft "iliutil.c: case IL_KISHFT:" Disabled the extraneous output |
24914 | 18.1 | Fortran | PGF90-S-0000- ICE "check_member: member arrived with wrong derived type" Corrected the handling of derived types |
24884 | 18.1 | Fortran | OpenPOWER OpenMP running with 2 threads hangs in simple test Eliminated a race condition in the runtime library |
24872 | 18.1 | C/C++ | OpenMP 4.5 test gets error: use of undefined value '%L.B0017' Corrected the compiler |
24865 | 18.1 | Fortran | Separate compilation affects how function calls are compiled Corrected the compiler to always compile function calls the same way |
24863 | 18.1 | Debugger | Enable 64-bit pgdbg to handle 32-bit executables with resilience. The debugger now exits with a message |
24857 | 18.1 | Fortran | Example get ICE at -O2 "search_ivuse: iv not found" Corrected a problem in the optimizer |
24825 | 18.1 | Fortran | Code on OpenPOWER gets seg fault Corrected the initialization of type descriptors |
24804 | 18.1 | Fortran | Application on OpenPOWER gets seg fault with -g Corrected the compiler |
24793 | 18.1 | Fortran | Generated code error with empty C binding name Corrected the compiler to properly create an empty binding name |
24736 | 18.1 | C/C++ | TERMINATED by signal 11 with addition of -mp switch Corrected the compiler to issue a diagnostic that STL iterators are not support in OpenMP loops |
24731 | 18.1 | C/C++ | TERMINATED by signal 11 with -O2 Corrected the compiler |
24720 | 18.1 | Fortran | Request to support MERGE intrinsic in data initialization Implemented the feature |
24716 | 18.1 | Fortran | Intrinsics EOSHIFT and CSHIFT on RHS of allocatable=03 statement seg faults Corrected the compiler to allocate the LHS when needed |
24689 | 18.1 | Fortran | ICE compiling IDATE Corrected the handling of IDATE and JDATE |
24672 | 18.1 | Fortran | Array bounds not set correctly after assignment Changed the compiler to always set the bounds of a section to 1:extent |
24587 | 18.1 | Fortran | Simple loop with Fortran SIGN intrinsic not vectorized on OpenPOWER Implemented vectorization of SIGN |
24584 | 18.1 | Accelerator | Routine fails with explicit data directive, works when not. Corrected the compiler |
24543 | 18.1 | Fortran | Object-oriented code gets several lowering errors Corrected the handling complex derived types |
24494 | 18.1 | Fortran | ICE " Errors in ILM file" "ILM file: can't find intrinsic ..sqrt" Corrected the handling of move_alloc; sqrt was unrelated to the actual ICE |
24489 | 18.1 | Fortran | Example demonstrates memory leak Corrected the runtime when deallocating an unlimited polymorphic pointer to also deallocate members |
24369 | 18.1 | Accelerator | CUDA Fortran: pgf902 segv when using parameter arrays Corrected the compiler |
24226 | 18.1 | Fortran | Incorrect message PGF90-S-0034-Syntax error at or near :: Corrected the compiler to allow :: on PROCEDURE and MODULE PROCEDURE statements |
24207 | 18.1 | Accelerator | Fatal Compiler Crash "Ptx assembly aborted due to errors" with -g Corrected in CUDA 8.0 |
24036 | 18.1 | C/C++ | __builtin_abs is not a member of this struct or union Corrected the include file to properly implement __builtin_abs |
23964 | 18.1 | Fortran | Severe error for constructor for derived type bug "too few data constants" Corrected the handling of extensions to type bound procedures |
23870 | 18.1 | Fortran | Program seg faults "aa = [a(:j-1), a(j+1:)]" Corrected a problem with the layout descriptor for polymorphic types |
23807 | 18.1 | C/C++ | TERMINATED by signal 6 with header Corrected parsing a lambda expression with an implicit return type |
23783 | 18.1 | C/C++ | Neither __thread nor __Thread_local are set with -c11 or -c1x Set the value of __STDC_VERSION__ for C11. |
23318 | 18.1 | C/C++ | macOS "no instance of overloaded function "std::make_shared"" Corrected the handling of variadics on different versions of macOS |
23158 | 18.1 | Fortran | pgfortran "Lowering Error: symbol c$sd is an inconsistent array descriptor" Corrected the handling of array descriptors |
22700 | 18.1 | Fortran | Wrong results with -O2 Enhanced the optimizer data analysis for array sections |
22445 | 18.1 | C/C++ | Application causes pggpp2 segv Corrected the compiler |
22370 | 18.1 | C/C++ | C++11 atomic/thread error Application must use -latomic |
22317 | 18.1 | Accelerator | Internal error when using a class member Corrected the compiler |
22200 | 18.1 | Accelerator | CUDA Fortran: User code gets pgf902 segv when using constant on parameter array Corrected the compiler |
22097 | 18.1 | C/C++ | ICE "flowgraph: node is zero" Corrected the flow graph analyzer |
18743 | 18.1 | C/C++ | Compile-time slowdown with function-call statements Corrected the compiler |
17107 | 18.1 | C/C++ | Regression with -O2 setting an address of a global pointer to const char Corrected the compiler |