Compiler differences

John Gordon Ollason john at houseofdeer.co.uk
Fri Dec 11 18:45:57 CET 2009


Frank,

My mistake was misunderstanding the defintion of a statement-sequence.

Thanks.

John O.
>
> ISO7185 says:
>
> : The label shall be permitted to occur in a goto-statement G (see
> : 6.8.2.4) if and only if any of the following three conditions is
> : satisfied.
> :
> : a) S contains G.
> :
> : b) S is a statement of a statement-sequence containing G.
> :
> : c) S is a statement of the statement-sequence of the  
> compound-statement of the
> : statementpart of a block containing G.
>
> Though this is hardly readable, the "statementpart of a block" means
> that the target of a non-local goto must be in the outermost scope
> of the procedure. (To understand that, you have to follow the
> grammar rules.)
>
> So, the old gpc was too permissive, the new one behaves acoording to
> ISO.
>
>> Incidentally FreePascal gives the following error for both programs:
>>
>> Free Pascal Compiler version 2.2.2 [2008/10/26] for x86_64
>> Copyright (c) 1993-2008 by Florian Klaempfl
>> Target OS: Linux for x86-64
>> Compiling gototest.p
>> gototest.p(5,13) Error: Goto statements aren't allowed between different
>> procedures
>
> Well, Free Pascal doesn't allow non-local gotos at all (and doesn't
> claim to support ISO Pascal).
>
> Frank
>






More information about the Gpc mailing list