Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
公告
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29285 讨论

CVF6.6B - !DEC$IF parsing - Is it as it should be?

Jugoslav_Dujic
重要分销商 II
785 次查看
I upgraded to 6.6B and I was pleasantly surprised how it caught few errors that were left unnoticed in 6.6A (misordered names in USE,ONLY lists and a few assumed-shape/assumed-array/scalar argument mismatches). However, apparently parsing of !DEC$IF parsing was changed as well. The following program:
!DEC$DEFINE _ENGLISH
PROGRAM Test

!DEC$IF DEFINED (_ENGLISH)
      WRITE(*,*)
!DEC$ELSE
      CALL ErrHandler('a' // &
            STRING(isiftse(i),9)'b'
            STRING(isifrasab,9),2)

!DEC$ENDIF

END PROGRAM Test

Produces
D:UsersDujaCodeTestTest.f90(9) : Error: Unbalanced parentheses
STRING(isifrasab,9),2)
Not all syntax errors in a code that is supposedly not compiled will trigger such errors -- mostly, it is sensitive to some combinations with line continuations. Now, I recall Steve said once that !DEC$IF is not semantically identical to #ifdef...#endif. Should I file a bug report or is this as it should be? (But if it is, I can't figure out the rules?).

Jugoslav


0 项奖励
7 回复数
Steven_L_Intel1
785 次查看
What do you think this should have done? The code in the ELSE clause looks very strange to me - definitely incorrect. I'm not sure what your complaint is.

!DEC$ IF is not like #ifdef in that !DEC$ IF operates on entire statements, not source lines.

Steve
0 项奖励
Jugoslav_Dujic
重要分销商 II
785 次查看
I see now. Forget it -- just a minor inconvenience. The actual code between ELSE...ENDIF where it popped out was never meant to be compiled at all (long story). My point was -- why should compiler even care about the contents of "commented" code. 6.6A acted as if !DEC$IF was line-based, not statement-based.

Jugoslav
0 项奖励
Steven_L_Intel1
785 次查看
6.6A was still statement-based but text that would not be compiled was still run through syntax analysis. I think we have it in 6.6B that it won't complain about code it won't compile.

Steve
0 项奖励
james1
初学者
785 次查看
It appears to be complaining in this case. Seems to only care if there are too many ")". One would expect this code to be ignored.

James
0 项奖励
Steven_L_Intel1
785 次查看
Oh, I get it now... Sometimes I'm a bit slow to catch on...

Steve
0 项奖励
Jugoslav_Dujic
重要分销商 II
785 次查看
Should I file a bug report or I may consider it already done?

Jugoslav
0 项奖励
Steven_L_Intel1
785 次查看
I'll take care of it - thanks.

Steve
0 项奖励
回复