LLVM 22.x tile for building compilers, language runtimes, and out-of-tree tooling
88
83%
Does it follow best practices?
Impact
96%
1.23xAverage score across 5 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent correctly applies LLVM 22 migration changes: replacing legacy pass manager with NPM, fixing opaque pointer APIs, updating deprecated headers, replacing llvm::Optional with std::optional, and using getOrInsertDeclaration instead of removed getDeclaration.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Legacy PM removed from StatsPass",
"description": "StatsPass no longer inherits from FunctionPass. Instead uses PassInfoMixin<StatsPass> with a run(Function&, FunctionAnalysisManager&) method returning PreservedAnalyses",
"max_score": 12
},
{
"name": "No legacy PM in main.cpp",
"description": "main.cpp does NOT use legacy::PassManager, PM.add(), or PM.run(). Custom pass invoked via NPM (ModulePassManager or FunctionPassManager with PassBuilder)",
"max_score": 8
},
{
"name": "llvm::Optional replaced",
"description": "All uses of llvm::Optional<T> replaced with std::optional<T>, and llvm::None replaced with std::nullopt. llvm/ADT/Optional.h header removed.",
"max_score": 10
},
{
"name": "Intrinsic::getDeclaration replaced",
"description": "Intrinsic::getDeclaration() replaced with Intrinsic::getOrInsertDeclaration() or Intrinsic::getDeclarationIfExists()",
"max_score": 12
},
{
"name": "Opaque pointer API fixed",
"description": "getFloatPtrTy() (or equivalent) no longer uses ->getPointerTo(). Uses PointerType::get(Ctx, 0) or Builder.getPtrTy() instead",
"max_score": 10
},
{
"name": "Triple.h include path updated",
"description": "Include of llvm/ADT/Triple.h updated to llvm/TargetParser/Triple.h",
"max_score": 8
},
{
"name": "Host.h include path updated",
"description": "Include of llvm/Support/Host.h updated to llvm/TargetParser/Host.h",
"max_score": 8
},
{
"name": "CMake LLVM version bumped",
"description": "CMakeLists.txt changes find_package(LLVM 18 ...) to find_package(LLVM 22 REQUIRED CONFIG)",
"max_score": 6
},
{
"name": "CMake uses llvm_map_components_to_libnames",
"description": "CMakeLists.txt replaces hardcoded -lLLVMCore/-lLLVMSupport/etc. with llvm_map_components_to_libnames()",
"max_score": 8
},
{
"name": "C++17 set in CMake",
"description": "CMakeLists.txt sets CMAKE_CXX_STANDARD to 17 (or higher)",
"max_score": 6
},
{
"name": "No using namespace llvm in header",
"description": "StatsPass.h does NOT contain 'using namespace llvm' at file scope",
"max_score": 6
},
{
"name": "MIGRATION.md lists changes",
"description": "MIGRATION.md file is present and lists at least 4 of the changes made with reasons",
"max_score": 6
}
]
}docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
skills
add-alias-analysis
add-attributes-metadata
add-calling-convention
add-debug-info
add-exception-handling
add-gc-statepoints
add-intrinsic
add-lto
add-sanitizer
add-vectorization-hint
frontend-to-ir
jit-setup
lit-filecheck
lower-struct-types
new-target
out-of-tree-setup
tessl-llvm
version-sync