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 implements DWARF debug info emission in LLVM 22, including required module flags, DIBuilder finalization, correct alloca location handling, and parameter variable preservation.",
"type": "weighted_checklist",
"checklist": [
{
"name": "DIBuilder finalize called",
"description": "Code calls DBuilder->finalize() (or DBuilder.finalize()) after all functions are emitted, before printing/compiling the module",
"max_score": 14
},
{
"name": "Debug Info Version module flag",
"description": "Code adds a module flag with key \"Debug Info Version\" using addModuleFlag() with the value llvm::DEBUG_METADATA_VERSION",
"max_score": 10
},
{
"name": "Dwarf Version module flag",
"description": "Code adds a module flag with key \"Dwarf Version\" (typically 4 or 5) using addModuleFlag()",
"max_score": 8
},
{
"name": "No location on alloca instructions",
"description": "Alloca instructions are emitted without a debug location (clearLocation() or equivalent called before alloca, NOT setLocation() before alloca). Implementation distinguishes alloca emission from statement emission.",
"max_score": 10
},
{
"name": "AlwaysPreserve=true for parameters",
"description": "createParameterVariable() is called with AlwaysPreserve set to true (not false)",
"max_score": 10
},
{
"name": "createCompileUnit called",
"description": "Code calls DBuilder->createCompileUnit() to establish the compilation unit before emitting any functions",
"max_score": 6
},
{
"name": "setSubprogram on Function",
"description": "F->setSubprogram(SP) is called to attach the DISubprogram to the llvm::Function",
"max_score": 8
},
{
"name": "insertDeclare usage",
"description": "Code uses DBuilder->insertDeclare() to associate AllocaInst with DIVariable (for both params and locals)",
"max_score": 8
},
{
"name": "DILocation per instruction",
"description": "Debug locations are set via B.SetCurrentDebugLocation(DILocation::get(...)) — does NOT reuse the same DILocation object for all instructions",
"max_score": 8
},
{
"name": "createParameterVariable vs createAutoVariable",
"description": "Uses createParameterVariable() for function parameters and createAutoVariable() (or createLocalVariable) for local variables — not the same call for both",
"max_score": 8
},
{
"name": "createSubroutineType for function type",
"description": "Uses DBuilder->createSubroutineType() to create the function's debug type (DISubroutineType)",
"max_score": 6
},
{
"name": "createBasicType for primitive types",
"description": "Uses DBuilder->createBasicType() for primitive type mappings (e.g., int, bool, float) with appropriate DW_ATE_ encoding",
"max_score": 4
}
]
}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