Some lines are ignored.

An IF-clause is ignored.

Versin 2.2.4 runs o.k.!!!!

The program:

program rangtest ;

 type
   trange = 0..2030 ;
   ytrange = 1990..2030 ;

 CONST
   lrange =   low ( trange ) ;
   hrange =  high ( trange ) ;
   ylrange =  low ( ytrange ) ;
   yhrange = high ( ytrange ) ;

 var
   bbb : trange ;
   kkk : longint ;
   xyzzy : array [ ytrange, 1..100 ] of
             record
               xyzp : longint ;
               xyzb : boolean ;
              end ;

 begin       (*$r+,s+,o+*)
   bbb := 0 ;
   kkk := 1 ;
IF ( bbb >= ylrange ) // this IFstatement can not be found in the assembler file AND ( bbb <= yhrange ) // and the program stops with range error
     THEN begin                             //
       WITH xyzzy[bbb,kkk] DO
         BEGIN
           xyzp := 2 ;
           xyzb := True ;
          END ;
      end
     else writeln ( 'out' ) ;
  end.

OS: WinXP

Output of the compiler:

Free Pascal Compiler version 2.4.0 [2009/12/18] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Note: Switching assembler to default source writing assembler
Target OS: Win32 for i386
Compiling rangtest.pas
rangtest.pas(34,12) Warning: unreachable code
rangtest.pas(16,5) Note: Local variable "xyzzy" is assigned but never used
Assembling rangtest
Linking .\rangtest.exe
35 lines compiled, 0.1 sec , 35952 bytes code, 1728 bytes data
1 warning(s) issued
2 note(s) issued
       1 Datei(en) kopiert.
       1 Datei(en) kopiert.

the assembler file (only the part from BEGIN to WITH)

# [rangtest.pas]
# [22] begin       (*$r+,s+,o+*)
call FPC_INITIALIZEUNITS
# Register eax,ecx,edx released
# Register ax allocated
.stabn 68,0,22,.Ll2 - _main
.Ll2:
movw $0,%ax
# Register eax allocated
movl $0,%eax
# Register eax released
# Register dx allocated
.stabn 68,0,23,.Ll3 - _main
.Ll3:
# [23] bbb := 0 ;
movw $0,%dx
# Register ecx allocated
.stabn 68,0,24,.Ll4 - _main
.Ll4:
# [24] kkk := 1 ;
movl $1,%ecx
# Register eax allocated
.stabn 68,0,28,.Ll5 - _main

##
## Here should be some result of the IF !!!!! the 2.2.4 version does not drop these lines
##

.Ll5:
# [28] WITH xyzzy[bbb,kkk] DO
movzwl %dx,%eax
subl $1990,%eax
cmpl $40,%eax
# Register eax released
jbe .Lj9
call FPC_RANGEERROR
.Lj9:

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to