diff --git a/bugs/readme.txt b/bugs/readme.txt index 2c15be841a..892957dc4e 100644 --- a/bugs/readme.txt +++ b/bugs/readme.txt @@ -55,6 +55,7 @@ Fixed bugs: bug0039.pp shows the else-else problem OK 0.9.9 (FK) bug0040.pp shows the if b1 xor b2 problem where b1,b2 :boolean OK 0.9.9 (FK) bug0041.pp shows the if then end. problem OK 0.9.9 (FK) + bug0043.pp shows assembler nasm output fpu opcodes problem OK 0.99.6 (PFV) bug0044.pp shows $ifdef and comment nesting/directive problem OK 0.99.1 (PFV) bug0045.pp shows problem with virtual private methods OK 0.9.9 (FK) (might not be a true bug but more of an incompatiblity?) @@ -157,6 +158,7 @@ Fixed bugs: bug0139.pp Cannot access protected method of ancestor class from other unit. OK 0.99.6 bug0140.pp Shows that interdependent units still are not OK. OK 0.99.6 (PFV) bug0141.pp Wrong Class sizes when using forwardly defined classes. OK 0.99.6 + bug0146.pp no sizeof() for var arrays and the size is pushed incorrect OK 0.99.7 (PFV) bug0147.pp function b; is not allowed in implementation OK 0.99.7 (PFV) Unproducable bugs: @@ -177,8 +179,7 @@ bug0133.pp object type declaration not 100% compatibile with TP7 Unfixed bugs: ------------- bug0042.pp shows assembler double operator expression problem -bug0043.pp shows assembler nasm output with fpu opcodes problem -bug0049.pp shows an error while defining subrange types +bug0049.pp shows an error while defining subrange types bug0050.pp can't set a function result in a nested procedure of a function bug0051.pp shows a problem with putpixel bug0052.pp collects missing graph unit routines @@ -195,7 +196,6 @@ bug0142.pp sizeof(object) is not tp7 compatible when no constructor is used bug0143.pp cannot concat string and array of char in $X+ mode bug0144.pp problem with 'with object do' bug0145.pp typed files with huges records (needs filerec.size:longint) -bug0146.pp no sizeof() for var arrays and the size is pushed incorrect bug0148.pp crash when setting function result of a declared but not yet implemented function in another function bug0149.pp (a, b) compile bug0149b twice and you'll get a crash diff --git a/compiler/aasm.pas b/compiler/aasm.pas index ee8025e173..2a406bf26f 100644 --- a/compiler/aasm.pas +++ b/compiler/aasm.pas @@ -38,7 +38,7 @@ unit aasm; {$ifdef m68k} bestreal = real; {$endif} - + pbestreal=^bestreal; tait = ( ait_string, @@ -836,7 +836,11 @@ uses end. { $Log$ - Revision 1.14 1998-08-10 23:56:03 peter + Revision 1.15 1998-08-11 15:31:36 peter + * write extended to ppu file + * new version 0.99.7 + + Revision 1.14 1998/08/10 23:56:03 peter * fixed extended writing Revision 1.13 1998/08/10 14:49:33 peter diff --git a/compiler/pdecl.pas b/compiler/pdecl.pas index 4a3971cbdb..a615b25b39 100644 --- a/compiler/pdecl.pas +++ b/compiler/pdecl.pas @@ -81,7 +81,7 @@ unit pdecl; def : pdef; sym : psym; ps : pconstset; - pd : pdouble; + pd : pbestreal; sp : pstring; begin @@ -1881,7 +1881,11 @@ unit pdecl; end. { $Log$ - Revision 1.36 1998-08-10 14:50:09 peter + Revision 1.37 1998-08-11 15:31:38 peter + * write extended to ppu file + * new version 0.99.7 + + Revision 1.36 1998/08/10 14:50:09 peter + localswitches, moduleswitches, globalswitches splitting Revision 1.35 1998/07/26 21:59:00 florian diff --git a/compiler/pexpr.pas b/compiler/pexpr.pas index 5167a52dc7..a45562d63e 100644 --- a/compiler/pexpr.pas +++ b/compiler/pexpr.pas @@ -1179,7 +1179,7 @@ unit pexpr; constchar: p1:=genordinalconstnode(pconstsym(srsym)^.value,cchardef); constreal: - p1:=genrealconstnode(pdouble(pconstsym(srsym)^.value)^); + p1:=genrealconstnode(pbestreal(pconstsym(srsym)^.value)^); constbool: p1:=genordinalconstnode(pconstsym(srsym)^.value,booldef); constseta: @@ -1786,7 +1786,11 @@ unit pexpr; end. { $Log$ - Revision 1.32 1998-08-11 14:05:32 peter + Revision 1.33 1998-08-11 15:31:39 peter + * write extended to ppu file + * new version 0.99.7 + + Revision 1.32 1998/08/11 14:05:32 peter * fixed sizeof(array of char) Revision 1.31 1998/08/10 14:50:11 peter diff --git a/compiler/ppu.pas b/compiler/ppu.pas index 69ea54acc6..31441a9cd1 100644 --- a/compiler/ppu.pas +++ b/compiler/ppu.pas @@ -97,6 +97,12 @@ const uf_smartlink = $40; uf_finalize = $80; +type +{$ifdef m68k} + ppureal=single; +{$else} + ppureal=extended; +{$endif} type tppuerror=(ppuentrytoobig,ppuentryerror); @@ -161,7 +167,7 @@ type function getbyte:byte; function getword:word; function getlongint:longint; - function getdouble:double; + function getreal:ppureal; function getstring:string; function skipuntilentry(untilb:byte):boolean; {write} @@ -174,7 +180,7 @@ type procedure putbyte(b:byte); procedure putword(w:word); procedure putlongint(l:longint); - procedure putdouble(d:double); + procedure putreal(d:ppureal); procedure putstring(s:string); end; @@ -488,6 +494,7 @@ begin if entryidx+1>entry.size then begin error:=true; + getbyte:=0; exit; end; readdata(b,1); @@ -505,6 +512,7 @@ begin if entryidx+2>entry.size then begin error:=true; + getword:=0; exit; end; readdata(w,2); @@ -522,6 +530,7 @@ begin if entryidx+4>entry.size then begin error:=true; + getlongint:=0; exit; end; readdata(l,4); @@ -530,20 +539,21 @@ begin end; -function tppufile.getdouble:double; +function tppufile.getreal:ppureal; type - pdouble = ^double; + pppureal = ^ppureal; var - d : double; + d : ppureal; begin - if entryidx+sizeof(double)>entry.size then + if entryidx+sizeof(ppureal)>entry.size then begin error:=true; + getreal:=0; exit; end; - readdata(d,sizeof(double)); - getdouble:=d; - inc(entryidx,sizeof(double)); + readdata(d,sizeof(ppureal)); + getreal:=d; + inc(entryidx,sizeof(ppureal)); end; @@ -735,9 +745,9 @@ begin end; -procedure tppufile.putdouble(d:double); +procedure tppufile.putreal(d:ppureal); begin - putdata(d,sizeof(double)); + putdata(d,sizeof(ppureal)); end; @@ -750,7 +760,11 @@ end; end. { $Log$ - Revision 1.7 1998-06-25 10:51:01 pierre + Revision 1.8 1998-08-11 15:31:40 peter + * write extended to ppu file + * new version 0.99.7 + + Revision 1.7 1998/06/25 10:51:01 pierre * removed a remaining ifndef NEWPPU replaced by ifdef OLDPPU * added uf_finalize to ppu unit diff --git a/compiler/symppu.inc b/compiler/symppu.inc index 266b93543f..b6d0b556c7 100644 --- a/compiler/symppu.inc +++ b/compiler/symppu.inc @@ -56,9 +56,9 @@ end; - procedure writedouble(d:double); + procedure writereal(d:bestreal); begin - current_ppu^.putdata(d,sizeof(double)); + current_ppu^.putreal(d); end; @@ -248,14 +248,11 @@ end; - function readdouble : double; - var - d : double; + function readreal : bestreal; begin - current_ppu^.getdata(d,sizeof(double)); + readreal:=current_ppu^.getreal; if current_ppu^.error then Message(unit_f_ppu_read_error); - readdouble:=d; end; @@ -697,7 +694,11 @@ { $Log$ - Revision 1.8 1998-08-10 14:50:29 peter + Revision 1.9 1998-08-11 15:31:41 peter + * write extended to ppu file + * new version 0.99.7 + + Revision 1.8 1998/08/10 14:50:29 peter + localswitches, moduleswitches, globalswitches splitting Revision 1.7 1998/07/14 14:47:07 peter diff --git a/compiler/symsym.inc b/compiler/symsym.inc index 0b228dac1a..df43f1d44f 100644 --- a/compiler/symsym.inc +++ b/compiler/symsym.inc @@ -1337,7 +1337,7 @@ constructor tconstsym.load; var - pd : pdouble; + pd : pbestreal; ps : pointer; {***SETCONST} begin @@ -1355,7 +1355,7 @@ conststring : value:=longint(stringdup(readstring)); constreal : begin new(pd); - pd^:=readdouble; + pd^:=readreal; value:=longint(pd); end; {***SETCONST} @@ -1405,7 +1405,7 @@ writelong(value); end; conststring : writestring(pstring(value)^); - constreal : writedouble(pdouble(value)^); + constreal : writereal(pbestreal(value)^); {***SETCONST} constseta: writeset(pointer(value)^); {***} @@ -1430,7 +1430,7 @@ end; constbool, constint, constord, constchar : st := 'i'+tostr(value); constreal : begin - system.str(pdouble(value)^,st); + system.str(pbestreal(value)^,st); st := 'r'+st; end; { if we don't know just put zero !! } @@ -1671,7 +1671,11 @@ { $Log$ - Revision 1.28 1998-08-11 14:07:27 peter + Revision 1.29 1998-08-11 15:31:42 peter + * write extended to ppu file + * new version 0.99.7 + + Revision 1.28 1998/08/11 14:07:27 peter * fixed pushing of high value for openarray Revision 1.27 1998/08/10 14:50:31 peter