Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background (Personal Problems)
I generate the QIR I test with qir-runner using LLVM 18, so the LLVM IR contains only opaque pointers. This causes errors like the following:
Building qir-runner with LLVM 18 (which supports only opaque pointers) works great except that qir-runner still uses the legacy pass manager, which was removed in LLVM 17.
This PR
Because the new LLVM pass manager has existed since LLVM 13, it is safe even on y'all's version (LLVM 14) to upgrade to the new pass manager instead of using the legacy pass manager.
I scoured the LLVM C API and could not find bindings for the new pass manager beyond
LLVMRunPasses()
, which Inkwell uses to implementModule::run_passes()
, which I use here. (Please check my work)Pros:
Cons:
Testing
cargo test
) passrun_basic_passes_on()
and my.ll
file contains the following:strip-dead-prototypes
is)