[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