[fpc-pascal]BUG 1222: CASE/OF Bug
Michael Knapp
mknapp at gmx.at
Sun Nov 5 11:33:42 CET 2000
Michael Knapp wrote:
>
> I have found a Bug in FPC (1.0.2 [2000/10/12])
> I have submitted it as Bug 1222:
>
> this code displays "case failed, but it should not", but it shouldn't
>
> CONST
> c1=$80000000;
> c2=$80000001;
> c3=$80000002;
> c4=$80000003;
>
> VAR v:dword;
>
> BEGIN
> v:=c2;
> CASE v OF
> c1,c2:writeln('case c1,c2');
> c3,c4:writeln('case c3,c4');
> ELSE writeln('case failed, but it should not');
> END;
> END.
the problem/solution:
# [13] v:=c2;
movl $-2147483647,_V
# [14] CASE v OF
movl _V,%eax EAX=80000001h
subl $1,%eax EAX=80000000h, SF=1, ZF=0, CF=0
jbe .L3 Jump if (ZF=1) OR (CF=1) - NO JUMP
subl $1,%eax EAX=7FFFFFFFh, SF=0, ZF=0, CF=0
jb .L12 Jump if (CF=1) - NO JUMP
subl $1,%eax EAX=7FFFFFFEh, SF=0, ZF=0, CF=0
jbe .L6 jump if (ZF=1) OR (CF=1) - NO JUMP
jmp .L12 JUMP to .L12
.L6:
.L13:
# [16] c3,c4:writeln('case c3,c4');
[...code snipped...]
.L3:
.L17:
# [15] c1,c2:writeln('case c1,c2');
[...code snipped...]
.L12:
.L21:
# [17] ELSE writeln('case failed, but it should not');
[...code snipped...]
.L11:
# [19] END.
Michael
--
+--------------------------------------------------------------------+
| Michael Knapp - Mauerbach - Niederösterreich - Austria - Europe |
| E-Mail: mknapp at gmx.at ICQ: 36542787 |
+--------------------------------------------------------------------+
| G r a p h i X http://programmierer.freepage.de/graphix/ |
| Graphics Library for Freepascal, Virtual Pascal and Borland Pascal |
| http://graphix4pascal.cjb.net/ http://www.graphix4pascal.de.vu/ |
+--------------------------------------------------------------------+
More information about the fpc-pascal
mailing list