Am 27.10.2018 um 18:21 schrieb Ben Grasset:
> On Sat, Oct 27, 2018 at 8:47 AM Jonas Maebe <jo...@freepascal.org 
> <mailto:jo...@freepascal.org>> wrote:
> 
>     On 27/10/18 05:45, Ben Grasset wrote:
> 
>   
> 
>     You also need "opt" if you want to perform full optimizations (or just
>     use clang, which a.o. combines the functionality of llc and opt).
> 
>     There's one more problem I forgot to mention in my first post, and it is
>     probably a deal breaker for the original bounty: LLVM does not support
>     Borland's fastcall calling convention for i386. So you would need to add
>     support for Borland fastcall on i386 to LLVM if it has to support
>     existing i386 inline assembly routines written for FPC/Delphi.
> 
>     Finally, adding support for 32 bit targets in FPC's LLVM backend would
>     also require some work due to how FPC's code generator is structured,
>     and due to the fact that need to have two code generators in a single
>     binary (the native one to support the generation of entry and exit code
>     for pure inline assembler routines, and the LLVM one for the rest).
> 
> 
> LLC (at least now) statically links the necessary parts of LLVM and works 
> independently of Opt, with a simpler set of
> command line options (it just has overall O1, O2, and O3 flags.)
> 
> As far as the point about assembly on 32 bit, while it does seem like that 
> would be a problem for the bounty
> requirements, would it really be the end of the world in a more general 
> sense? I can't imagine people who are still
> using 32-bit-hardware and writing 32-bit applications would complain if the 
> LLVM backend was not available for 32-bit.
> 
> Anyways though, I do think code gen improvements for FPC, LLVM or not, are 
> likely going to be a lot more widely helpful
> than just rewriting exception handling.... 

If you read the whole thread, LLVM needs a rewritten exception handling as 
well. Further, a quick test
of table based exception handling on bansi1 (which is mainly a memory manager 
test) gives:

standard exception handling:

fpctrunk\tests\bench>pp11 bansi1 -O3

fpctrunk\tests\bench>bansi1
Test 1: 1000000 done in 0.537 sec
Test 2: 1000000 done in 0.535 sec
Test 3: 1000000 done in 0.587 sec

SEH based exception handling:

fpctrunk\tests\bench>pp11 bansi1 -O3

fpctrunk\tests\bench>bansi1
Test 1: 1000000 done in 0.456 sec
Test 2: 1000000 done in 0.457 sec
Test 3: 1000000 done in 0.446 sec

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to