[fpc-devel] Whole Program Optimization with FPC 2.6.0?

Martin Schreiber mse00000 at gmail.com
Sat Apr 7 15:32:57 CEST 2012


On Saturday 07 April 2012 13:23:39 Jonas Maebe wrote:
> On 07 Apr 2012, at 13:15, Martin Schreiber wrote:
> > Thanks, where can I get that "nm utility" for win32?
>
> Any distribution of the GNU binutils for win32 should include it. I don't
> have Windows myself, but I suppose the mingw site would be a good place to
> look for it.
>
Thanks. The normally 711KB MSEgui win32 minimal program is 694KB after strip 
with -OWall/-Owall. There is an EAbstractError at startup.
Without symbolliveness it is 697KB, there is an EAbstractError too.

> > It is the MSEgui minimal program not the example.
>
> Then that looks like a bug in the optimization (unless you e.g. use pointer
> hacks to directly read the addresses of virtual methods from the VMT, in
> which case there is nothing the compiler can do about this).
>
AFAIK there is no direct VMT access in MSEgui. I assume gdb debugging with 
symbolinfo is not possible after whole program optimization?
gdb shows:
"
(gdb) run
Starting program: /home/mse/proj/msegui/testcase/mse/minimal/minimal
[Thread debugging using libthread_db enabled]
An unhandled exception occurred at $08075595 :
EAbstractError : Abstract method called
  $08075595 line 1875 of main.pas
  $08070455 line 1875 of main.pas
  $0806FA7B line 1875 of main.pas
  $080F4389  TWIDGET__HASOVERLAPPINGSIBLINGS,  line 8588 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msegui.pas
  $08087711  LOADMODULE,  line 1974 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/mseclasses.pas
  $080867EC  DOLOAD,  line 2499 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/mseclasses.pas
  $0808663E  INITMSECOMPONENT,  line 2521 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/mseclasses.pas
  $0808504A  LOADMSEMODULE,  line 2636 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/mseclasses.pas
  $080A15D0  TMSEDATAMODULE__CREATE,  line 136 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msedatamodules.pas
  $080A77F4  INIT,  line 293 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msestockobjects.pas
  $0807BC64  INIT,  line 1661 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/graphics/msegraphics.pas
  $0805EC5F  TGUIAPPLICATION__INTERNALINITIALIZE,  line 16396 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msegui.pas
  $08082AF1  TCUSTOMAPPLICATION__INITIALIZE,  line 1615 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/mseapplication.pas
  $08081FD3  TCUSTOMAPPLICATION__CREATE,  line 1046 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/mseapplication.pas
  $0804E23F  TGUIAPPLICATION__CREATE,  line 16387 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msegui.pas
  $0804DF36  TINTERNALAPPLICATION__CREATE,  line 14518 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msegui.pas
  $0804DD25  APPLICATION,  line 3423 
of /home/mse/packs/standard/git/mseide-msegui/lib/common/kernel/msegui.pas
"
main.pas has 16 lines only, hasoverlappingsiblings is never called in minimal 
program.

Martin



More information about the fpc-devel mailing list