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

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

Jugoslav_Dujic
Valued Contributor II
725 Views
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 Kudos
7 Replies
Steven_L_Intel1
Employee
725 Views
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 Kudos
Jugoslav_Dujic
Valued Contributor II
725 Views
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 Kudos
Steven_L_Intel1
Employee
725 Views
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 Kudos
james1
Beginner
725 Views
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 Kudos
Steven_L_Intel1
Employee
725 Views
Oh, I get it now... Sometimes I'm a bit slow to catch on...

Steve
0 Kudos
Jugoslav_Dujic
Valued Contributor II
725 Views
Should I file a bug report or I may consider it already done?

Jugoslav
0 Kudos
Steven_L_Intel1
Employee
725 Views
I'll take care of it - thanks.

Steve
0 Kudos
Reply