Marco van de Voort wrote:
In our previous episode, Mark Morgan Lloyd said:
In addition, what is the supposed difference between an "empty program"
and program "built with only minimal RTL initialisation"?
I don't see why something like this
program test;
begin
end.
should use anything other than the absolute minimum that's needed to
terminate in good order.
Well, first you must realize that that program is equal to
program test;
Uses System;
begin
FPC_INITIALIZEUNITS;
// nothing
FPC_FINALIZEUNITS;
end.
The FPC_* routines walk tables and call the all units' initialization
and finalization sections. In this case System's.
Your observation reduces to letting the compiler figuring out that in the
system unit initialization the FPU Initialization can be safely skipped, and
that possible state (like the FPU control word) is not important.
This is nearly impossible.
In fairness, my original question was "Could a completely empty program
be recognised by the compiler etc. as a special case". So what you're
saying- entirely fairly- is that because of the "Uses System" the
problem is probably intractable.
But could the "Uses system" be omitted or replaced by a simpler stub if
the program was recognised to be trivial?
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel