[fpc-devel] The 15k bounty: Optimizing executable speed forLinux x86 / LLVM

Florian Klämpfl florian at freepascal.org
Sun Feb 17 23:08:14 CET 2019


The debug_eh branch contains now support for dwarf based exception 
handling for i386-linux.

Testing fpc/tests/bench/bansi1.pp gives with trunk

Test 1: 1000000 done in 0.367 sec
Test 2: 1000000 done in 0.414 sec
Test 3: 1000000 done in 0.359 sec

while with debug_eh it results in

Test 1: 1000000 done in 0.337 sec
Test 2: 1000000 done in 0.310 sec
Test 3: 1000000 done in 0.315 sec

The debug_eh branch can be build with e.g. from x86_64-linux

make all OS_TARGET=linux CPU_TARGET=i386 -j OPT="-XP -dpsabieh -Aas" 
CROSSOPT="-Fl/lib/i386-linux-gnu/ -Fl/usr/lib/gcc/i686-linux-gnu/8/"

or natively:

make all -j OPT="-dpsabieh -Aas" OPT="-Fl/lib/i386-linux-gnu/ 
-Fl/usr/lib/gcc/i686-linux-gnu/8/"

/usr/lib/gcc/i686-linux-gnu/8 needs to be adapted to the build system, 
libgcc_s must be found.

The library pathes need to be passed when compiling a program as well, 
also -Aas is needed.

The debug_eh branch contains also the tls threadvar support, so this can 
be enabled when building by -dtls_threadvars as well.

Oh, and Kylix:

This module must be distributed under the terms of the GNU General 
Public License (GPL), version 2. A copy of this license can be found 
at:http://www.borland.com/kylix/gpl.html.
Test 1: 1000000 done in 0.819 sec
Test 2: 1000000 done in 0.826 sec
Test 3: 1000000 done in 0.794 sec

For Simon's benchmark is does not help though as it is not using 
exception frames in the hot spots.



More information about the fpc-devel mailing list