Hi, I assume everybody here still knows who I am, so I'll drop the introduction part.
In our products, we use FPC for a couple of targets. However, for all of Linux x86 platforms, we still have to use Kylix (CrossKylix). This is because for our code, FPC on these platforms compiles code that is 25% slower than Kylix, and up to 50% when it comes to multi-threaded stuff. We know about a couple of bottlenecks (fpc_pushexceptaddr / RelocateThreadVar etc) which explain FPC's terrible multi-threading performance, but in general, FPC's code generator really is quite a mess, which we learned the hard way a couple of years when we did optimization work on the ARM target. Due to use having to stick to Kylix, we can not use any of the recent Object Pascal language features of the last 15 years, which is frustrating. It also prevents us from fully moving over to Unicode. I'd therefore like to put out a 15.000 Euro bounty for whoever brings FPC at least on par with Kylix when it comes to executable speed in multi-threaded scenarios, but first would like to discuss with you guys what route should be taken (the list is not complete and not mutually exclusive, of course): - Complete the LLVM branch of FPC. It looks like Jonas has stopped working on it two years ago, which is a pity. - Rewrite the code generator, for example in a SSA-IR way - Make Exception handling, TLS etc use the infrastructure that libpthread is providing The requirements for my bounty would be: - Must bring executable speed for non-Floating point load on both multihreaded and non-multithreaded workloads to the Speed of Kylix combined binaries - Improvements should also help on ARM targets - An LLVM-based solution must allow inline assembler for all x86 and ARM - Must be completed by February 2019 So, any suggestions on how to move forward on this? Cheers, Simon _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel