According to this issue I created ( https://github.com/dotnet/coreclr/issues/17294 ), creating a new backend for a new architecture is a complex job, so why not create a new backend that supports multiple architectures?
Mono have implemented a LLVM backend.
I say this because the Power and s390x architecture is returning with relative intensity...
A few years back we worked on an LLVM code generator for .Net: LLILC. We ran into a number of issues that looked like they were going to be difficult to address: support for precise GC, full support for the .Net exception model, and low throughput. You can read up on some of the details here: LLILC at Six Months.
Mono via LLVM uses conservative GC and (at least in some cases) does not handle the full range of exception behaviors. This is acceptable for Mono's application targets, but it is not general enough for our purposes.
LLILC might still be interesting as an upper-tier jit (someday) or as a bring-up vehicle to get basic codegen running on a new architecture.
Hi @AndyAyersMS
I fixed a simple build issue for LLILC https://github.com/dotnet/llilc/issues/1097
Please review it.
Thanks,
Leslie Zhai
I'm going to close this issue, as the question has been answered.
Most helpful comment
A few years back we worked on an LLVM code generator for .Net: LLILC. We ran into a number of issues that looked like they were going to be difficult to address: support for precise GC, full support for the .Net exception model, and low throughput. You can read up on some of the details here: LLILC at Six Months.
Mono via LLVM uses conservative GC and (at least in some cases) does not handle the full range of exception behaviors. This is acceptable for Mono's application targets, but it is not general enough for our purposes.
LLILC might still be interesting as an upper-tier jit (someday) or as a bring-up vehicle to get basic codegen running on a new architecture.