Repository navigation
Fix LLVM trunk API v3 compatibility and require full CI builds - #286
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
August 10, 2026 07:45
e50b30d to
f632c07
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
August 17, 2026 06:59
f632c07 to
a2ddae1
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
August 24, 2026 07:02
a2ddae1 to
275a57d
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
August 31, 2026 13:02
275a57d to
1dff6c9
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
September 7, 2026 11:54
1dff6c9 to
3814c7f
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
September 14, 2026 12:09
3814c7f to
c3fbe47
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
September 21, 2026 12:18
c3fbe47 to
806cb2e
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
September 28, 2026 13:14
806cb2e to
35c1c1c
Compare
github-actions
Bot
force-pushed
the
chore/bump-llvm-trunk
branch
from
October 5, 2026 13:57
35c1c1c to
fe1c348
Compare
Bump the pinned LLVM trunk commit to 201b446bf71c7c6d37a9bb195ed5e448c5231070 and update Morok to support both plugin API v2 and v3. Key changes: - cmake: Accept LLVM_PLUGIN_API_VERSION 2 or 3 in MorokLLVM.cmake, clear MOROK_PASSPLUGIN_HEADER cache across LLVM_DIR changes, and fail CMake configuration if MOROK_BUILD_PLUGIN=ON cannot find a usable LLVM. - passes: Migrate pass classes from PassInfoMixin to RequiredPassInfoMixin and drop redundant isRequired() definitions. - ir: Update instruction insertion and PHINode creation calls to use iterators, migrate opaque PointerType creation, and use getAlign() instead of getAlignment() in IR tests. - ci & test: Add tests/cmake/llvm_discovery.py to validate LLVM discovery, build morok_plugin and morok_ir_tests explicitly in CI, and enforce --no-tests=error in ctest invocations.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Build Morok against LLVM trunk
201b446bf71c7c6d37a9bb195ed5e448c5231070. The new pin exposes plugin API v3; rejecting it previously allowed a pure-layer build with no plugin or IR tests, so CI reported successful test steps before failing packaging. Earlier LLVM bumps also failed because the publicPassInfoMixinwas removed.RequiredPassInfoMixinfor every required Morok pass and migrate removed instruction-insertion, alignment, and opaque-pointer APIs.LLVM_DIRchanges, and fail configuration when a requested plugin cannot be built.Post-merge follow-up dcc32b6 fixes the Linux arm64 runtime failure exposed by the full matrix. Caller-keyed dispatch overwrote
x19, which LLVM reserves as the frame base for dynamic stack frames. An argument reload consequently read target instruction bytes instead of the Fibonacci index. The AArch64 carrier pool now starts atx20; a focused regression with an aligned dynamic frame and 32 arguments crashes with the old implementation on both Linux and macOS arm64 and passes with the fix.Post-merge follow-up fe5180a6 fixes the Linux x86 runtime failure. MBA emitted
shl i1 ..., 1, which produces LLVM poison and corrupted the arena workload's branch condition. Doubling now yields zero modulo 2 for one-bit operands. An exhaustive regression checks all four Boolean inputs for six operations, one to three layers, and both heuristic settings; it fails on the old pass and passes with the fix. The extra Linux x86 sweep also exposed an invalid syscall fixture: the third argument belongs inrdx, notr10; the fixture now uses thedconstraint.Validation of final master tree
30180306530c1de2481bf2452a45704a473b1513:tracerpid_zero_cleanskip each.high,max.toml, and built-inmax; all 95 runtime-selected programs matched clean exit status and normalized output. The two existing runtime exclusions remainasm_context_switch.candsyscall_signals.c.The latest master CI run on
fe5180a6is green on Linux x86_64, Linux arm64, macOS arm64, and Windows x86_64. The CI head, remote master head, and locally tested tree were verified against commitfe5180a6e47cb9a5b0f35a1e2956f21e3363e0efand tree30180306530c1de2481bf2452a45704a473b1513. The preceding2e9928brun was intentionally cancelled after all four LLVM caches were saved to release the final run. The queueddcc32b6run was intentionally cancelled before any jobs started because the Linux x86 failure required the MBA follow-up. The original Linux x86 cancellation was a hosted-runner acquisition failure: no job steps executed, and GitHub annotated it with “The job was not acquired by Runner of type hosted even after multiple attempts.”