CtrlK
BlogDocsLog inGet started
Tessl Logo

himank-test/tessl-llvm

LLVM 22.x tile for building compilers, language runtimes, and out-of-tree tooling

88

1.23x
Quality

83%

Does it follow best practices?

Impact

96%

1.23x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-4/

{
  "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
    }
  ]
}

AUDIT.md

tile.json