Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Compiler bug: ASSOCIATE to POINTER

Daniel_Dopico
New Contributor I
2,836 Views

Despite of being incorrect, my compiler throws a "Fatal: There has been an internal compiler error (C0000005)." with this small code. Could someone double check this? 

PROGRAM MAIN
    IMPLICIT NONE
       
    TYPE STATES
        REAL(8),POINTER,DIMENSION(:)::q
    END TYPE STATES
    TYPE(states) jointcoord,jointcoordN
    TARGET jointcoord
    INTEGER ind(3), i
   
    ind=[1,2,3]
    i=0
    ASSOCIATE(vars=>jointcoord%q(ind))
        i=i+1
    END ASSOCIATE
END PROGRAM MAIN
0 Kudos
1 Solution
Steve_Lionel
Honored Contributor III
2,750 Views

Internal Compiler Error is always a compiler bug. Please report it through the Online Service Center.

Not that it matters to this test case, but keep in mind that in an ASSOCIATE block, the associate variable does not have the POINTER or ALLOCATABLE attribute even if the selector does. This is something people tend to forget.

View solution in original post

0 Kudos
25 Replies
Daniel_Dopico
New Contributor I
519 Views

Steve Lionel (Ret.) (Blackbelt) wrote:

As a former support engineer, I want to ask that you please always include BOTH the original source(s) and the minimal reproducer. More than once I have seen that the minimal reproducer got fixed but the original case did not. Compilers are complex things. Providing both allows both quick analysis and verification that you will be able to build with the fix in place.

I understand Steve, but you mean including the original sources no matter how big or complex the code is? Maybe in small programs this is posible and very convenient, but if the code is big I see it quite impractical, even to compile the code. Moreover, providing the code can pose some confidentiality issues, I don't know how you solved this in the past. I know that engineers don't care about my code, they are busy with the compiler, but sometimes you cannot legally provide it anyway.

0 Kudos
Steve_Lionel
Honored Contributor III
519 Views

If you can't provide it, just say so. But if you can, with everything needed to reproduce the problem in its original form, please do it. We very much appreciate minimal test cases, but I have encountered at least a handful of cases where the minimal case now compiles but the full case does not.

Just understand that if you can't provide the original code, there is a (small) possibility that the fix you get won't actually help you. Sometimes Support can provide you with a "hot" compiler to try out on your own, but that is not often done and requires multiple sign-offs. It helps if you are deemed a "critical" customer (we used to have a list of these - I don't know if it is still maintained.)

0 Kudos
Daniel_Dopico
New Contributor I
519 Views

Steve Lionel (Ret.) (Blackbelt) wrote:

If you can't provide it, just say so. But if you can, with everything needed to reproduce the problem in its original form, please do it. We very much appreciate minimal test cases, but I have encountered at least a handful of cases where the minimal case now compiles but the full case does not.

Just understand that if you can't provide the original code, there is a (small) possibility that the fix you get won't actually help you. Sometimes Support can provide you with a "hot" compiler to try out on your own, but that is not often done and requires multiple sign-offs. It helps if you are deemed a "critical" customer (we used to have a list of these - I don't know if it is still maintained.)

Steve, it is really nice to know all these details from inside, thank you very much for sharing.

I don't know if they have "critical" customers, but for sure I am not one of them, haha.
I didn't know either about this option of having a "hot" compiler, but it is something very welcome because I have been stuck in 2019 release 2 until 2020 update 1 because of a bug they introduced and I think this is more than 1 year since I reported it until I had the fix, paying but not being able to update the compiler and delaying changes in the code.

I understand that they don't want to provide these updates to everyone, but at least if I report a bug, it is nice to be informed when the bug is fixed. I have to say that lately they improved in this sense, now they provide this information about which release includes your fix, but I reported a good number of them in the last years and I remember that I had no Info at all in the first ones reported, I had to try new versions of the compiler hoping it was corrected, fortunatelly this is not the case with this last ones.

0 Kudos
Steve_Lionel
Honored Contributor III
519 Views

I should also mention that if you don't provide any reproducible test case at all, don't expect much. Such cases go to the bottom of the pile. Do as much as you can to help the support team figure out what the problem is - they'll do their best to reproduce it. What is not helpful is screenshots of code, fragments, pseudocode, "it's sort of like this...", incomplete sources, or assembly code.

Make sure that you show the exact command used to compile (and link if appropriate) the code and give the exact compiler version. For error messages, show the complete and exact text of the message, not just the error number or "it crashes". Full build logs are great.

0 Kudos
Daniel_Dopico
New Contributor I
512 Views

I have been quite lucky so far and they have been able to reproduce all the cases I sent, but your comment about the "bottom of the pile" was really funny.

Thank you again for sharing.

0 Kudos
Reply