A few general principles have been followed when designing the FPC implementation of
WPO:
     
     - All information necessary to generate a WPO feedback file for a program is always
     stored in the ppu files. This means that it is possible to use a generic RTL for WPO
     (or, in general, any compiled unit). It does mean that the RTL itself will then not be
     optimised, the compiled program code and its units can be correctly optimised because
     the compiler knows everything it has to know about all RTL units.
     
- The generated WPO feedback file is plain text. The idea is that it should be easy to
     inspect this file by hand, and to add information to it produced by external tools if
     desired (e.g., profile information).
     
- The implementation of the WPO subsystem in the compiler is very modular, so it
     should be easy to plug in additional WPO information providers, or to choose at run
     time between different information providers for the same kind of information. At the
     same time, the interaction with the rest of the compiler is kept to a bare minimum to
     improve maintainability.
     
- It is possible to generate a WPO feedback file while at the same time using another
     one as input. In some cases, using this second feedback file as input during a third
     compilation can further improve the results.