On 25/12/2018 19:14, Jonas Maebe wrote:
On 2018-12-02 11:26, Jonas Maebe wrote:

The LLVM version of the code generator has been significantly improved in the mean time:

The LLVM code generator on the debug_eh branch now also works with Linux/ARM, although only with the hard float EABI for now (compiler compiled with -dFPC_ARMHF).

Obligatory vipribench results (on gcc113.fsffrance.org, an APM X-Gene Mustang board -- that's an AArch64 board, but it can also run 32 bit ARM programs):
* FPC (-O2): Time: 5107ms = 2839240 pkts/s = 4245 MB/s
* FPC+LLVM (clang 7.0 -O2): Time: 5063ms = 3357693 pkts/s = 5020 M B/s

Higher optimization levels don't make a noticeable difference in either case.

Some notes about the FPC LLVM ARM Linux version:
* You have to use -Cg when compiling dynamic libraries, or they won't link (it's not necessary for all units, just for the main library source file) * there are still a few bugs with bitpacked records that contain 64 bit values * the compiler does not yet generate call frame information for the entry/exit code of assembler routines, which means that exceptions will not propagate through them and instead terminate the program immediately. In particular, overflow exceptions from 64 bit multiplication/division trigger this behaviour because they're implemented via assembler helpers in the RTL

fpc-devel maillist  -  fpc-devel@lists.freepascal.org

Reply via email to