Software Archive
Read-only legacy content
17061 Discussions

Internal compiler Error

Intel_C_Intel
Employee
805 Views
I get an internal compiler error C0000005 on DVF6.5A.
With the same code, I have compiled successfully on SGI Fortran 7.2 and LF95.

Have anyone got some experience of this kind of error and how to solve??
0 Kudos
6 Replies
Jugoslav_Dujic
Valued Contributor II
805 Views
This error should never happen no matter what are circumstances. For the benefit of all users, please send a message
with problem description to vf-support@compaq.com with attached zipped workspace, if possible.

Usually, this kind of error happens when compiler fails to understand
some expression either as valid or invalid. Quick workaround is to find the
line in question using "dissection method", i.e. comment out half the
problematical source and compile only; if the error reappears, comment more of the rest; if the error does not appear, uncomment some of commented part etc. In this way, you should find the line in question;
then, it should be rewritten.

Tip: You can use metacommands !DEC$IF(.FALSE.)...!DEC$ENDIF as "block
comments".

For example, I got such error in CVF5 in release builds with aggregation of character-manipulation functions, i.e.
sString=TRIM(ADJUSTL(MyCharFunction())). The problem was solved
using temporary variable, i.e. sTemp=MyCharFunction(); sString=TRIM(ADJUSTL(sTemp)).

Rebuild all sometimes help, but the reason is more probably something
like above. Please let us know about the outcome.

HTH

Jugoslav
0 Kudos
Intel_C_Intel
Employee
805 Views
Thank you for Jugoslav for pointing this out.

I found the error when call subroutine like this for dummy@
a(ia(imin(k-1)):ia(imax(k-1)+1)-1) and
ja(ia(imin(k)):ia(imax(k)+1)-1).

! .................
CALL rwsrt(ecg1, ecg2, ierr, mdjtr, imin(k-1), imax(k-1), iws, &
a(ia(imin(k-1)):ia(imax(k-1)+1)-1), &
ja(ia(imin(k-1)):ia(imax(k-1)+1)-1))
!........................

Any idea would be appreciated.
0 Kudos
Jugoslav_Dujic
Valued Contributor II
805 Views
This one looks "typical" -- a complicated expression which invokes some
f90 features, such as array sections. Did you try something like:

 
i1 = ia(imin(k-1)) 
i2 = ia(imax(k-1)+1)-1 
CALL rwsrt(ecg1, ecg2, ierr, mdjtr, imin(k-1), imax(k-1), iws, &  
        a(i1:i2), ja(i1:i2)) 
 


I bet that would fix it.

Jugoslav
0 Kudos
Intel_C_Intel
Employee
805 Views
Thank a lot.

The errors are disappeared using temporary variable.
But it is funny, why it appeared on CVF 6.5A ? when I compiled without temporary variables on CVF 6.5, the internal compiler error is nothing.
0 Kudos
Jugoslav_Dujic
Valued Contributor II
805 Views
Because they've probably fixed something else ;-). To paraphrase a Murphy's law:

You can't fix something without simultaneously screwing up something else

Which is, believe me, more true the system gets bigger and more complex :-).
0 Kudos
Steven_L_Intel1
Employee
805 Views
Please do send us a source that shows the error.

Steve
0 Kudos
Reply