Michael Schnell wroteI remember that some time ago an LLVM version of fpc was under discussion.
I'd like to know the state.
If you don't perform control-flow-based LLVM optimizations, almost everything works on Darwin/x86-64 (and Linux/x86-64, except for safecall -- the reason for this extra is that safecall is simply ignored on Darwin). There are currently about 40 testsuite failures left on Darwin/x86-64 with LLVM, compared to 26 without LLVM.
With such optimizations enabled, everything apart from try/except and try/finally should work:
* "should" because I did not actually test this, given that exceptions are pretty common and hence it's not possible to get a baseline
* it's a pretty big "apart from", obviously. I have some ideas on how to fix this without breaking compatibility with code produced by the regular code generators, but I'm still working on it.
Note that even once I fix this, exceptions still won't work equally well as with our regular code generators, due to the points mentioned under point 3 of "Progress" at http://wiki.freepascal.org/LLVM
Background: I might be interested in doing a project that runs in the
browser. It seems that the upcoming technology for this is WebAssembly.
I found that an LLVM backend for WebAssembly somewhere is under
construction.
You would also have to write a WebAssembly RTL for FPC, and you would have to add some FPC code generator support for a WebAssembly target (see the first FAQ on the wiki page mentioned above). LLVM IR is by construction architecture- and platform-specific. It's not like Java bytecode or CIL (or, for that matter, WebAssembly).
Jonas