I am trying compile a software with the new release of Intel Visual Fortran and Visual Studio 2012 and I am getting:
catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error.
The build log says nothing but the same error message. The software compiled before without a problem.
Also within a different project I never received an error about a pure procedure and allocatable arrays. This is the error I receive:
"This object must not be used as an allocate-object in an allocate-stmt or deallocate-stmt in a PURE procedure or an internal procedure contained in a PURE procedure. "
The following is the code its complaining about (note that this is within a FINAL routine and OUT_DETAIL is a global variable):
Before the update that section had compiled fine.
I attached the visual studio package with source code for the project with the catastrophic error.
Any compiler flag recommendations in addition to the bug fix, would be greatly appreciated too.
The first compiler abort I found was in gwf2ghb7_OWHM.f related to the defined assignment at line 444. We have a very similar issue we are looking at already, DPD200412879, so I added your case to that one. A workaround is to replace the assignment with a call to the procedure that implements the assignment. For example, replace:
CALL CONDBND_TRANSFER (RLST(II),RLST(III))
This issue may pop up in some other sources and the workaround would be the same. I will look to see what else goes wrong in this project and update this thread with what I find.
As for the error message regarding the PURE procedure, PURE procedures are not allowed to change the allocation status of non-local variables. We are continually improving the error checking of the compiler.
The wording of the standard in this area is as follows:
30 C1283 In a pure subprogram any designator with a base object that is in common or accessed by host or use
31 association, is a dummy argument with the INTENT (IN) attribute, is a coindexed object, or an object
32 that is storage associated with any such variable, shall not be used
33 (1) in a variable definition context (16.6.7),
16.6.7 Variable definition context
40 1 Some variables are prohibited from appearing in a syntactic context that would imply definition or undefinition
41 of the variable (5.3.10, 5.3.15, 12.7). The following are the contexts in which the appearance of a variable implies
42 such definition or undefinition of the variable:
9 (11) a stat-variable, allocate-object , or errmsg-variable;
R640 deallocate-stmt is DEALLOCATE ( allocate-object -list [ , dealloc-opt -list ] )
Therefore, DEALLOCATE of a global variable is not permitted in a PURE procedure.