According to Frank Heckenbach:
program p;
var x:record f:function:real; end;
begin Writeln(x.f) end.
Fixed.
Another little bug I just found:
program x; var x:real value 0; {"initial value is of wrong type} begin end.
Fixed.
Another thing I observed when looking at the asm code (see above) was that the i386 backend doesn't seem to know the "push mem" instruction.
Indeed.
[...] But since it's a backend problem (the same can happen with gcc), this is probably the wrong place to report it...
Probably. However if you want to try yourself on that problem, look into the GCC info documentation, and read about "machine descriptions". There is something about how to describe each instruction a processor has, and maybe it's a trivial error and somebody overlooked this instruction. Or else: Loading the memory reference into a register and pushing that *might* be faster than a direct push (don't know).
Greetings,
Peter
Dipl.-Phys. Peter Gerwinski, Essen, Germany, free physicist and programmer peter.gerwinski@uni-essen.de - http://home.pages.de/~peter.gerwinski/ [970201] maintainer GNU Pascal [970510] - http://home.pages.de/~gnu-pascal/ [970125]