This is a list of known issues with different Fortran compilers. This list is largely confined to Fortran bugs in the sense of non-compliance with the Fortran 2003 standard. Some notable extensions, like fpp, are also covered.
The color coding and layout are intended to help developers find specific bugs in the list, but the descriptions are still in Fortran jargon, and it's hard to pick out particularly important bugs. Developers looking for an overview of major/recent bugs can look at Fortran Compiler News.
Note to editors: As of December 2013, it doesn't seem to be possible to fix the width of a column in Confluence[?]. For now, do word wrapping by hand to prevent the table from growing too wide.
Compiler Support Information
The following color codes are used to highlight bugs that exist in compilers we still support:
No fix known | Fix exists, but in newer versions than supported | Fix exists and applies to all supported versions | Likely invalid |
---|---|---|---|
Red | Yellow | Green | Gray |
Compilers currently used in testing CESM2 are given here: https://docs.google.com/spreadsheets/d/15QUqsXD1Z0K_rYNTlykBvjTRt8s0XcQw0cfAj9DZbj0/edit#gid=0
Fortran Standard Support
As of post-CESM1.2, most major features of Fortran 2003 were permitted in CESM code, with the following exceptions (due to inconsistent compiler support at that time):
- Finalization
- Parameterized derived types
- User defined I/O
- IEEE modules (IEEE Infinity and NaN related functionality can be used from shr_infnan_mod in csm_share)
As of that time, there were also a few features that were seriously limited due to compiler bugs:
- Character variables with allocatable length:
- gfortran has related numerous bugs.
- gfortran does not allow these variables to be components of a type before version 4.9.
- Object oriented programs and OpenMP:
- OpenMP only updated to Fortran 2003 in version 4.0 of the standard, and its Fortran 2003 specification is still very incomplete.
- Rule of thumb: Try to avoid "threadprivate" directives, and the "private" clauses, for objects that use Fortran 2003 features, and for objects with allocatable components attached to them.
- This is not too serious of a restriction; there should not be major problems with objects that are private by default, e.g. because they are local to a function called inside the parallel region.
- Code that breaks the above rule may be OK, but should be tested carefully, on multiple compilers, to ensure that there is not an issue with accidentally shared memory or a memory leak.
A note on PGI
pgfortran is responsible for a large fraction of bugs on this list, but a high percentage of these have been fixed over the course of 2014. Developers finding new bugs not listed here are encouraged to look at PGI's release TPRs pages to see if the bug has already been discovered and fixed.
Bugs can be reported by anyone through the PGI forums. Of course you should also add any new bugs here.
Fortran 95 or earlier
Vendor(s) | Bug Description | Versions present |
---|---|---|
Cray | If a procedure argument is of a derived type with allocatable components, and the argument is intent(out) and optional, then calling the procedure with this argument absent produces a segmentation fault. | ? |
IBM | XLF considers size-zero variables to be initially undefined, and disallows returning them as function results unless they are assigned.
| 14.01.0000.0006 Reported through ALCF (#206161). IBM reports that they will fix this. |
Intel | A where statement is vectorized by executing both branches and merging the result according to the mask. Therefore, you cannot rely on the mask to filter out operations that result in out-of-bounds accesses, uses of uninitialized data, or floating point exceptions. | <= 13.1.2 Intel seems to consider this a limitation of their vectorization method. May be fixed in 15? |
Intel | If a routine uses an intrinsic function, and then is renamed (via use association) to have the same name as that intrinsic, there's an internal error. Workarounds:
| <= 15.0.0 Reported via CISL and again via forum. Intel reports that a fix will be available "later this year" in 2015. (2019-01-03) Given this vague statement, I'm not moving this to the archive list yet. |
Intel | Wrong bounds checking message when passing a section of an allocatable array that has a dimension of size 0, to a routine that accepts it as an explicit-shape dummy argument.
| 14-15 (Regression from 13) Reported to Intel via Premier Support account. Is fixed in Intel 17 (which will be released later this year) |
PGI | With FMA instructions enabled, runs on bluewaters do not give reproducible answers. | 13.1-14.1 Reported to PGI, but no reduced case so far. |
Fortran 2003
Vendor(s) | Bug Description | Versions present |
---|---|---|
GNU | Deferred length (i.e. allocatable length) character variables have issues:
| <=4.9 As of 4.9, most of the remaining bugs relate to arrays of deferred length characters. |
GNU | Unclassifiable statement during compilation when assigning to a character array in a derived type contained in a ASSOCIATE statement See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82121 Workaround is to reference the character variable directly rather than via associate | 7.2.0, 8.0, maybe others |
IBM | A user-defined constructor (a generic function with the same name as a type) can be mistaken by the compiler for a reference to a structure constructor, if one of the arguments is an expression involving division.
| <= XLF 14.1.0000.0009 IBM claims fix will be present in November/ December update. (2019-01-03) Given this vague statement, I'm not moving this to the archive list yet. |
IBM | Defining assignment(=) on a derived type with an allocatable component breaks default-initialization for that type, when an object of that type is a component of another type.
| <= XLF 14.1.0000.0009 Reported through ALCF. |
Intel | Segmentation fault when initializing a pointer to a class that does not have any data components, using a user-defined constructor. Reproducer: https://github.com/billsacks/compilerbugs-intel_pointer_empty_class Reported to CISL to reproduce and send to intel; however, as of 12-7-15, they have not yet taken any action on this. | <= 16.0.0 (non-standard, but intel looking at) |
NAG | Functions that return allocatable arrays of type character cause corruption on the stack. | <=6.0 (edit 1017) Reported to NAG. |
PGI | ICE when calling a type-bound procedure through an array of polymorphic objects:
The code causing the problem is https://github.com/ESCOMP/CISM-wrapper/blob/9aaa9914d55ca1fd9c9fcad0c9d1a34552b75d6e/source_glc/glc_history.F90; the relevant pieces are: Declarations:
Use (this line triggers the ICE):
Workaround: make a pointer to the instance, and call the subroutine through the pointer: See https://github.com/ESCOMP/CISM-wrapper/commit/90a60b39d67284539d106cae6c92a1c124488668 ; the key pieces are:
| Observed in 20.1 |
GNU Intel PGI | Several compilers don't yet implement allocatable array components as specified in OpenMP 4.0.
| Various. PGI 14.1 fixed. GCC 4.9.1 fixed. (2019-01-03) Remaining outstanding question is Intel |
GNU Intel NAG PGI | Some features are commonly missing from Fortran compilers:
| Various. PGI claims support for these features, but this should be regarded as experimental. NAG has derived type kind now (6.0) and len (6.1). Derived-type I/O will be in 6.2 (2017) parameterized derived types for Intel appear in 15 Intel fixed several bugs with derived-type I/O in 17. |
Fortran 2008
Vendor(s) | Bug Description | Versions present |
---|---|---|
GNU | If a dummy argument has the "contiguous" attribute, and the actual argument passed is not contiguous, the data is properly packed into a temporary, but the compiler incorrectly frees the temporary, resulting in a run-time crash. | <=4.9 Bug already reported to GCC. |
PGI | The intrinsics "erf" and "erfc" are actually external functions that are automatically linked in, rather than intrinsics. This distinction matters mostly because it means that they are not generic and do not have an explicit interface. If you use "erf" for a double precision variable, rather than "derf", you can silently get the wrong version.
| <=12.5 Not fixed in any known version. |
Intel | write statements in OpenMP threaded regions to a file opened with the "newunit" specifier can hang (even if the opening of the file is done outside of a threaded region) See https://github.com/ESCOMP/CTSM/issues/1331 for details | < 19.1.1 Appears to be fixed in 19.1.1 |
Extensions and the Preprocessor
Vendor(s) | Bug Description | Versions present |
---|---|---|
GNU | Specific intrinsics, such as "sin" and "dcos", do not have the "pure" attribute even if the generic intrinsic is pure. The Fortran standard does not specify this behavior, and in any case, the standards committee is considering deprecating the specific intrinsics in 2015. | <=4.8 Bug report filed. |
GNU | Instead of a dedicated fpp, GNU uses a "traditional" C preprocessor (i.e. one with behavior similar to preprocessors that existed before the standards of the 90's). Some implications:
| <=4.9 |
Archive: Issues that have been fixed for a long time now, or were never really bugs to begin with
Vendor(s) | Bug Description | Versions present |
---|---|---|
IBM | 14.01.0000.0007 Probably stack size issue, not a bug. | |
Intel | Wrong results due to inlining sum or product called on certain array sections.
| 13.0.1 - 14.0.2 Fixed in version 15. Not present in Intel 12 |
Intel | Optimization issue causes the compiler to produce wrong code for certain loops.
| 13-15.0.2 (Regression from 12) Reported via CISL by Jim Edwards. Intel reports a fix in version 15.0.3 |
Intel | In some cases with OpenMP and optimization enabled, setting an entire array to a scalar value can fail, e.g. the last row in the array is not properly set. | <=15.0.0 Appears fixed in 15.0.1 |
NAG | There are some bugs having to do with deallocating a length zero pointer, which show up if using nagfor's memory tracing features or OpenMP. | <= 5.3.1 NAG believes this to be fixed in 6.0 |
PGI | One or more bugs related to the location of use statements. The compiler may emit spurious errors about undefined variables unless you move use statements around (from module to procedure level, or vice versa).
| <= 14.1 Fixed in 14.7 |
PGI | If a module has the "private" attribute, and it uses a generic interface block to define a specific interface with the same name as the generic, some uses may be unable to resolve the procedure reference.
| <= 14.1 Fixed in 14.7 |
PGI | Pointers are sometimes modified when they shouldn't be?
| <= 14.9 tracer_data case was fixed in 14.10 |
PGI | Pointer array components of a derived type seem to randomly be resized to 0 when they are passed into a subroutine. As in: call foo(some_vars%bar(bounds%begc:bounds%endc, :)). Within foo, the corresponding dummy argument then appears to be size 0. A number of incarnations of this problem has been observed in CLM4.5 after the big refactor in r081. Initial problems were seen with pgi 13.9, when using the mpi-serial library. However, this was later observed without mpi-serial. Sometimes the problem only occurs when building threaded. Basically, it seems that any seemingly minor change to the build can push the compiler into a situation where this problem occurs in seemingly-random places. A similar problem was observed with a subroutine argument (an assumed-shape array), which was passed on to another subroutine. The actual argument was a pointer component of a derived type (a filter in CLM). A similar problem was observed in CLM when the actual argument was obtained from a function call, as in: call foo(..., cnveg_inst%get_some_var(...)). Workarounds:
Note that using pgi 14.10 allows some of the previously-failing CLM tests to pass, but also causes failures in new places (e.g., ERS_D_Lm20.1x1_smallvilleIA.ICLM45BGCCROP.yellowstone_pgi now fails on line 278 of SoilBiogeochemNitrogenStateType.F90, which is an assert on the size of the decomp_cpools_col argument). | <= 14.10 Reported to PGI. No clear reproducer now in 15.1? Also observed in 15.10 reported fixed in 16.5 |
PGI | Some installations of PGI seem to have excessive stack usage when run on certain files, triggering an internal compiler error. The only known workaround is to attempt to isolate sections of the code that cause the problem, and make pointless changes until it consistently compiles (almost pure trial-and-error). Luckily this bug seems rare. | <= 13.7 No longer reproducable. Assumed fixed. |
PGI | Internal compiler error when compiling CLM.
| >= 14.1 Fixed in 14.10 |
GNU | The IEEE intrinsic modules are not implemented.
| <=4.9 Fixed in 5.1 |
GNU | Many polymorphism bugs, especially "select type" and "transfer" issues. | Various. Most fixed by 4.8 |
GNU | Problems accessing allocatable arrays within a polymorphic array. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58043 Workaround: if possible, declare the offending variable using 'type' rather than 'class' | <= 4.9. Bug report filed |
GNU | Import statement does not work properly with entities renamed via use statement. Workaround is to use an unqualified import statement. | 4.6 - 4.7 only. Fixed in 4.8 |
IBM |
| <=XLF 14.1.0000.0006 Turned out to be an error due to wrong intent in the test case. |
IBM | Internal compiler error when assigning the output of the "eoshift" intrinsic directly to an allocatable array. This only applies when using xlf2003. Workaround is to replace the array on the left side with a section of itself.
| XLF 14.1.0000.0004 Fixed in XLF 14.1.0000.0006 (In practice, this is the 2013-11 build on Mira.) |
IBM | Code involving procedure pointers can sometimes jump to a bad location, leading to illegal instruction errors.
| XLF 14.1.0000.0006 Tentatively seems fixed in 14.1.0000.0009 |
Intel | Valid uses of user-defined constructors are rejected by the compiler, if they are called on the outputs of functions (i.e. on "rvalues").
| <= 13.0.1 Fixed in 13.1.2 |
Intel | Internal compiler error when assigning the output of the "merge" intrinsic to an allocatable array, if the option "-assume realloc_lhs" is passed to the compiler. (This option is necessary for full Fortran 2003 support.)
Workarounds:
| <=13.1.2 Fixed in 14.0.1 |
Intel | Internal compiler error when re-exporting a derived type with a user-defined constructor, and an operator on that type.
| <=13.1.2 Fixed in 14.0.1 |
Intel | Internal compiler error when using a structure constructor inside a user-defined constructor, in certain conditions.
| <=14.0.2 Fixed in version 15. |
Intel PGI | Internal compiler error when using a structure constructor to produce a type with a procedure pointer.
| <=15.0.0 (Intel) 14.1 (PGI) Reported through Intel and PGI forums. PGI fixed in 14.7 Intel fixed in 15.0.1 |
Intel PGI | Spurious error when using a structure constructor directly on an array section (or the output of some intrinsics). For PGI, this is only a warning.
| 14.0.2 (Intel) 14.1 (PGI) PGI fixed in 14.7 Intel fixed in 15.0.0 |
Intel | Stack corruption when allocating a polymorphic variable under certain specific circumstances.
| <=14.0.2 Fixed in 15.0.0 |
Intel | Internal compiler error when calling a generic procedure on a component of a derived type, under some conditions. i.e., if bar_type contains a generic procedure do_stuff, then this could cause an internal compiler error: call foo%bar%do_stuff I haven't determined the exact conditions when this problem occurs and doesn't occur. Workaround: call the specific version of the procedure rather than using the generic. | <= 13.1.2. Fixed in 14.0.2 |
Intel | Internal compiler error when assigning the output of max/min to an entire allocatable array, if one of the arguments of max or min is a scalar.
| <=13.0.1 Fixed in 13.1.2 |
Intel | Internal compiler error when using a structure constructor to create any extended type, if the base types are not in scope.
| Intel 13 only. Fixed in Intel 14. Intel 12 did not have this issue. |
Intel | Segmentation fault when doing intrinsic assignment on a derived type variable, which has a component that is a derived type with defined assignment. | <=15.0.0 Reported to Intel via forums. Fixed in Intel 16. And fixed in Intel 15 version from Oct/2014. |
NAG | Error when using pointer bounds remapping to set a pointer component of a derived type. Workaround is to remap to a temporary pointer, then set the pointer component from the temporary. | <=5.3.1 Fixed in 6.0 |
NAG | If you have a function without a result clause, and you reference the name of the output variable in an associate construct, the name is erroneously treated as referring to the function itself rather than the output variable. | <=5.3.1 Fixed in 6.0 |
NAG | NAG seems to be the last compiler to implement namelist I/O for allocatable/pointer arrays. | <=5.3.1 Implemented in 6.0 |
NAG | Internal compiler error when calling a generic type-bound function inside an implied do loop. | <=6.0 (edit 1017) Fixed in edit 1019 |
PGI | Allocate with "source=" set to a scalar does not work. | <=13.7 Fixed in 13.9. |
PGI | Cannot create a literal empty array (syntax in Fortran 2003 is returns an empty array of the desired type. | <=13.7 Fixed in 13.9 |
PGI | Compile-time errors when using a structure constructor for a derived type with default initialization.
| <=11.5 Fixed in 12.5 |
PGI | Compile-time error when using a structure constructor for a derived type with a type-bound procedure (i.e. a method). | <=12.5 Fixed in 12.10 |
PGI | Link-time error when using a structure constructor for a derived type with a method. | <=12.10 Fixed in 13.3 |
PGI | Scope of type-bound procedures is not handled correctly, causing clashes between method names and names in module scope.
| <=14.3 Fixed in 14.7 |
PGI | When using intrinsic assignment to copy an object with an allocated polymorphic component, dynamic type information is lost. | <=13.9 Fixed in 13.10 |
PGI | The compiler erroneously rejects code that attempts to allocate non-polymorphic variables of derived type, when the type has no components. The message complains that the type is empty, but Fortran allows this. Workarounds:
| <=13.10 Fixed in 14.7 |
PGI | Intrinsic assignment sometimes fails to work properly for variables of derived type, when the derived type contains a pointer component and an allocatable component. In this case, the variable on the left-hand side of the assignment ends up with uninitialized values for all of its components (even simple scalar components). Workarounds:
| <=13.9 PGI claims a fix in 14.2 |
PGI | PGI encounters an internal error sometimes, when programs use types with type-bound operators (e.g. operator (+)) from a module.
| <=14.1 Fixed in 14.7 |
PGI | PGI does not yet support using the "associate" statement on expressions (rvalues) of arrays. Array elements are usually fine, but other expressions (e.g. those involving arithmetic) do not seem to work yet.
| <=14.7, and ==15.1 Fixed in 14.9 Broken again in 15.1 Fixed again in 15.4 |
PGI | Using the "associate" statement on array subsections causes an internal compiler error ("lowering error"). | <=13.9 Fixed as of 14.1 |
PGI | PGI has an internal "Lowering Error" for some code that uses intrinsics to set array sizes/bounds.
| <=14.3 Fixed in 14.7 |
PGI | PGI has an internal compiler error if you forget the "nopass" attribute on a procedure pointer/binding.
| 14.1 Fixed in 14.7 |
PGI | PGI rejects valid code that uses a structure constructor for a polymorphic type that inherits a procedure binding.
| 14.1 Fixed in 14.7 |
PGI | Calling a function from a function pointer bound to a type, when the pointer is default-initialized to null(), causes an internal compiler error.
| 14.1 Fixed in 14.7 |
PGI | PGI has an internal compiler error if you import a type into an interface earlier in the file than you define the type.
| 14.1 Fixed in 14.3 |
PGI | PGI does not accept "select type" for distinguishing a type with a name that starts with "record".
| 14.1 Fixed in 14.7 |
PGI | PGI does not accept a generic binding on a type that aliases only one specific procedure, if that procedure is deferred, if the module does not have a "contains" in it.
| 14.1 Fixed in 14.7 |
PGI | PGI produces code with a linking error, if compiling a type that has a polymorphic component of one of its own classes, and does certain things with that type, in a module with a save statement.
| 14.1 Fixed in 14.7 |
PGI | The compiler does not recognize that two procedures have compatible interfaces, if one is defined in an interface block and the other is a module procedure, if the procedures accept a procedure with an explicit interface.
| 14.1 Fixed in 14.7 |
PGI | Overridden methods are broken (at least for types with multiple methods).
| <=13.6 Fixed in 13.7. |
PGI | pgfortran rejects apparently valid code by saying that it cannot invoke an abstract interface, giving the name of a type- bound procedure that has been overridden with a concrete implementation and which is not actually being called in the given location. It is not clear what triggers this behavior.
| 13.9-14.10 pFUnit builds in 15.1 |
PGI | pgfortran rejects apparently valid code by saying that a particular type-bound procedure has not been explicitly declared, despite the fact that (1) the type-bound procedure is declared in the given derived type, and (2) that type-bound procedure is not actually being called in the file that generates the error. In the one observed instance, the file giving the error referenced many types that all had the same names for type-bound procedures (e.g., Init).
| <= 14.10 Fixed in 15.1 |
PGI | Case where method calls could only be resolved if the methods had not been renamed to something different from the original procedure's name.
| <=14.10 Fixed in version 15 (official release will be 15.1) |
PGI | pgfortran encounters a segfault when compiling CLM's filterMod, if the flag "-Mallocatable=03" is given (needed for full Fortran 2003 compliance).
| <=14.7 Fixed in 14.9 |
PGI | pgfortran 14.7 has an internal compiler error when compiling the file in the attached tarball.
| <=14.7 Fixed in 14.9 |
PGI | pgfortran 14 fails to look recursively through subobjects of a derived type object when doing automatic deallocation. | <=14.10 Fixed in 15.1 |
PGI | pgfortran 14 internal compiler error with "-Mallocatable=03" and allocatable components of allocatable components. | <=14.10 Fixed in 15.1 |
PGI | pgfortran 14 gives a warning if you set the values pointed to by pointer components of intent(in) values, even though the Fortran standard allows this.
| <=14.10 Fixed in 15.1 |
PGI | pgfortran 14 loses information about variables declared in the child class of a polymorphic entity allocated with "source=". type, extends(foo_base_type) :: foo_concrete_type class(foo_base_type) :: my_foo Then, if the dynamic type of my_foo is foo_concrete_type, my_foo%barvar2 will sometimes get resized to 0, although This can be reproduced with: PET_P15x2_Ly3.f10_f10.ICLM45BGCCROP.yellowstone_pgi.clm-irrig_o3_reduceOutput run on this tag, although the problem is not actually threading-related.
| <=14.10 Fixed in 15.1 |
PGI | When not all allocatable fields are allocated in the parent class of a polymorphic entity allocated with "source=", the allocation may cause a segfault.
| <=14.10. Fixed in PGI 15; the official release will be 15.1 |
PGI | pgfortran 14 sometimes has trouble with sourced allocation of a polymorphic entity. For example, in this tag many tests, such as ERS_D.f10_f10.ICLM45.yellowstone_pgi.clm-reduceOutput die at runtime in the sourced allocation of ozone_inst, line 287 of models/lnd/clm/src/main/clm_instMod.F90: allocate(ozone_inst, source = create_and_init_ozone_type(bounds)) That allocate line works fine if creating an instance of ozone_type, but NOT if creating an instance of ozone_off_type. The same allocate statement works fine in the n09 tag, where the difference is that n09 has some variables declared in ozone_type rather than in ozone_base_type. | <= 14.10 Fixed in PGI 15; the official release will be 15.1 |
PGI | pgfortran 15 hangs after a compile time glibc error.
| <= 14.10 Fixed in 15.1 |
PGI | When building CLM code with mpi-serial, using pgi14.7, Bill Sacks encountered the error: PGF90-F-0000-Internal compiler error. normalize_forall_array: non-conformable 37663 PGF90/x86-64 Linux 14.7-0: compilation aborted
| <= 14.10 Fixed in 15.1? No known case triggers it anymore. |
PGI | Regression in early access version 15.0 of PGI. This should not be necessary to work around because it will probably be fixed by the release. The issue is that association to expressions of the form "bar%x(:)" will not work if "bar%x is an allocatable array.
| 15.0 only |
PGI | pgfortran 14 and 15 give internal compiler errors when setting an allocatable character variable equal to an expression that involves a function result. For example: character(len=:), allocatable :: mystring mystring = 'hello' // two_char_string() results in: PGF90-S-0000-Internal compiler error. string_expr_length: ast not string op 13 Workaround: introduce an intermediate variable, as in: character(len=:), allocatable :: temp_string temp_string = two_char_string() Reproducer is test_allocatable_char_broken.F90 in pgi_allocatable_char.tar | <= 15.4 Fixed in 15.7 |
PGI | POSSIBLE BUG: Allocatable character components of derived types sometimes get filled with garbage? This showed up in a few yellowstone-pgi tests (using pgi 15.10) in https://svn-ccsm-models.cgd.ucar.edu/clm2/branch_tags/product_pools_gridcell2_tags/ product_pools_gridcell2_n02_clm4_5_8_r172 and was fixed in tag product_pools_gridcell2_n03_clm4_5_8_r172 by changing allocatable character variables to fixed-length. Specifically, this is in SpeciesIsotopeType and SpeciesNonIsotopeType. In the n02 tag, I got failures like: ERP_P15x2_D_Ld5.f10_f10.I1850CLM45BGC.yellowstone_pgi.clm-ciso 8: masterlist_addfld ERROR:1od_CROPPROD11 already on list as well as failures that suggested that different tasks were putting different garbage in the field: e.g.: ERI_Ld9.f09_g16.I1850CRUCLM45BGC.yellowstone_pgi.clm-drydepnomegan 451:Abort with message Variable names are defined inconsistently among processes Possibly relevant: the objects of the derived type in question were actually polymorphic entities. I'm not positive that this is a compiler bug - it might have been programmer error. I'm filing it here to keep an eye on it. | <= 15.10 May have been programmer error rather than a compiler bug reported fixed in 16.5 |
PGI | Adding an interface to subroutines in seq_infodata_mod.F90 caused a compiler error: *** glibc detected *** /glade/u/ssg/ys/opt/pgi/15.10/ linux86-64/15.10/bin/pgf901: free(): invalid next size (fast): 0x000000000242fb00 *** The issue was caused by adding a new interface to seq_infodata_GetData and seq_infodata_PutData. The code which triggered the PGI compiler error is in the current version of cime/driver_cpl/shr/seq_infodata_mod.F90 in sections set off by #ifndef CPRPGI. | 15.10 although it seems to also be in other versions. reported fixed in 16.5 |
PGI Cray | Operators in IEEE_ARITHMETIC are not always elemental/pure when they should be.
| <=13.7 (PGI) Fixed in 13.9 (PGI) Fixed in an unknown version for Cray. |
GNU | Finalization is not supported by gfortran yet. | <=4.8 4.9 has preliminary support (at least code with finalization should compile). |
PGI | (Fortran 2008) Multidimensional pointer bounds remapping can be confused by lower bounds of an array that are lower than 1.
| <=13.10 Fixed in 14.1 |
PGI | (Fortran 2008) The compiler claims that the "contiguous" attribute is incompatible with "intent", and rejects valid code in which dummy arguments have both.
| <=14.1 Fixed in 14.7 |
NAG | (Extensions and the preprocessor) Bugs involving the preprocessor and line length limits. NAG's fpp guarantees that if the input file obeys the 132 character limit, then so will the output file. However, there have been a few bugs that result in:
| <=5.3.1 Fixed in 6.0 |
NAG | (Extensions and the preprocessor) Bugs involving function macros given no arguments. If you define a function macro, then refer to the name of that macro without providing arguments (e.g. in comments about the macro), the preprocessor may produce odd output, such as files that are incomplete, or an infinite number of control characters. Workarounds:
| <=6.0 (edit 1017) Report filed w/ NAG support. Nag reports a fix in edit 1032. |