Internal compiler errors: Intel Compiler XE 2013

Internal compiler errors: Intel Compiler XE 2013

Based on past forum topics, I suppose unexpected internal compiler errors (ICE) has been a problem with any upgrade with past versions of Intel compilers, but this was a first for me. I recently upgraded to Fortran Compiler XE 2013 from XE 2011 and code that has worked without errors for nearly 15 years in Compaq Visual Fortran as well as Intel Fortran 9 and XE 2011 started giving an internal compiler error (ICE C00005). Based on previous Steve Lionel's responses to similar errors on many posts in this forum and the fact that this code has worked without errors in previous versions, I figured it is a compiler bug and attempted several code tweaks such as removing/inserting comment lines, creating code listings, etc. After many failed attempts at such code tweaks, I hit upon a USE statement that did not have a ONLY keyword; I modified the statement to have the ONLY keyword to only access the needed entities from the module and voila, the ICE disappeared! That is,

USE MyModName

to

USE MyModName, ONLY : PublicVar1, PublicVar2

Owing to the proprietary aspect, I can't post the exact code here. But I'll try to isolate and simplify the code and submit to Intel Premier Support and they can hopefully fix the issue in one of the future updates to Compiler XE 2013.

For those of you who can't turn the "ship around" and can't wait through the Intel update cycle to bug fixes, the above information is just to let you know minor code changes - note they could be anything, not necessarily USE statements - might help you get around this issue. In my case, my preference is always to include the ONLY keyword on all USE statements and there was a silver lining after all. I understand it may not be the case always.

Separately though, it is distressing to come across such compiler bugs. I can understand if they were to happen with the newer Fortran 2003/2008 features, but not with fairly standard Fortran 90/95 that has been handled since the days of Digital Fortran circa late 90s. Can any of the Intel staff shed some detail on what's commonly the root cause of such regressions in their compiler versions?

2 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项
Steve Lionel (Intel)的头像

I've been working on compilers for more than 30 years. You can never tell when an issue with an old feature will show a failure - I remember fixing a bug that was 20 years old in VAX Fortran. Also, we are constantly making changes throughout the compiler - to support new language features and improve performance. Sometimes we make a change that has unintended consequences - if you're a programmer, you've done it too. Every day the compiler is fed a program it has never seen before - and it can be surprising what small changes can result in a combination of code paths that trigger a failure.

We hate ICEs too - and we fix them as soon as we can. Go ahead and try tweaking your code to work around it, but please make sure we get a copy of a reproducer for the error so that we can fix it.

Steve

登陆并发表评论。