What problem does it solve?
Upgrading the LLVM version vendored into the ponyc compiler is error-prone: the submodule is a shallow clone, patches may or may not have been upstreamed, LLVM APIs change or disappear between major versions, and some failures only surface when ponyc compiles a Pony program rather than at build time. This Skill provides the exact step-by-step procedure to perform the upgrade safely.
Core Features & Use Cases
- Per-version commit strategy: Upgrade one major LLVM version at a time with separate commits so the branch can be bisected when something breaks.
- Patch and hash management: Check each patch in
lib/llvm/patches/ with forward and reverse git apply checks, and update LLVM_DESIRED_HASH and PATCHES_DESIRED_HASH in lib/CMakeLists.txt.
- API migration guidance: Covers common LLVM C and C++ API changes (constant expression removal, deprecated functions, intrinsic signature changes, new link dependencies) with concrete before/after code examples.
- Use Case: You need to move ponyc from LLVM 21 to LLVM 22. Follow the steps to fetch the new tag shallowly, re-check patches, rebuild LLVM and ponyc, fix codegen compile errors, run the
ci-core test label, and add a release note.
Quick Start
Ask the AI to upgrade ponyc's vendored LLVM submodule from the current version to a specific newer LLVM release and follow the documented per-version procedure.