This PR makes a series of small housekeeping changes to the backend that allow us to build against LLVM 18, which we will need soon to support Ubuntu 24.04.
The changes required are all self-contained and can be reviewed commit-by commit:
Build system update to detect LLVM 18 and consistently use fmt's header-only distribution
Fully adopt the opaque pointer API everywhere it can be; the remaining places we were using typed pointers are removed in LLVM 18.
Conditional compilation to support the various different APIs LLVM has had for creating malloc calls; we'll be able to simplify this soon.
Conditional compilation for changed enum visibilities across LLVM versions.
Note that we're not yet running CI against LLVM 18; that will require a Nixpkgs update which I'll handle in a separate PR. This PR is just backwards compatible changes that allow us to adopt 18 with no extra work.
This PR makes a series of small housekeeping changes to the backend that allow us to build against LLVM 18, which we will need soon to support Ubuntu 24.04.
The changes required are all self-contained and can be reviewed commit-by commit:
malloc
calls; we'll be able to simplify this soon.Note that we're not yet running CI against LLVM 18; that will require a Nixpkgs update which I'll handle in a separate PR. This PR is just backwards compatible changes that allow us to adopt 18 with no extra work.