PGF90-F-0000-Internal compiler error. Macro recursion

The subject is my main question. What exactly does:

PGF90-F-0000-Internal compiler error. Macro recursion

mean when it appears in a program. It’s new to me. Does this mean when the preprocessor runs over the .F90 file it’s getting stuck in a infinite loop?

I did try running cpp on the .F90 file in question and it doesn’t seem to create the recursion.

Also, a look through the man page told me that ‘pgfortran -Mcpp test.F90’ would do the PGI version of just using cpp and, again, no issue that I can see. (Though I am surprised it took test.F90 and output test.f. Guess I thought test.f90 would occur.)

Hi Matt,

In general, an internal compiler error occurs when the compiler enters an unexpected state. A compiler engineer will insert error checks with messages that are often only meaningful to the engineer. The best thing to do when encountering an ICE is send a report to PGI Customer Service (trs@pgroup.com) and include a reproducing example. You’re welcome to post them on the UF, but unless the example is small or the source is available on the web, I’ll need to send you to PGI Customer Service.

As for this particular error, you are most likely correct that it’s a problem with the Fortran pre-processor. We can guess as to the problem, but I’d rather have one of our compiler engineers determine the exact issue. The pre-processor code is very old and well tested so I very surprised to see an ICE from it (In my eight years here this would be only the second I’ve heard of). It will be very interesting to see the macro that’s causing it!

Thanks,
Mat

Mat,

I’ve sent an email to TRS, apologies for not having done it sooner.

As an aside, there is an odd bit of “C-style” (in my mind) logic in this file that I thought might be tripping things up:

evapfrom_nucto = evaplg(iz,inucto,ignucto) .gt. 0.

but that wasn’t the reason, it turns out. Still, I’d never thought of writing code like that in Fortran. Guess I still have old-style FORTRAN thinking in my head.

I can confirm that this issue still occurs in 10.6, as it did in 10.4 and 10.5. I sent in sample code to trs@pgroup.com back then, so is this issue currently in the TPR system? Is there a TPR # I can look out for in future releases?

Or should I resend in the sample source code?

Hi Matt,

I apologize but I don’t see a TPR for this nor do I see any mail regarding this in the TRS archives. Please resend. I’ve asked Dave to keep an eye out for it.

Thanks,
Mat

Okay, mail (re-)sent. Hope you get it this time! (If not, maybe I’m triggering some spam filter?)