mirror of
https://github.com/NaC-L/Mergen.git
synced 2026-05-12 09:40:34 +00:00
2.1 KiB
2.1 KiB
Mergen Review Checklist
Use this as the quick reviewer companion.
- Workflow, severity, and verification matrix live in
docs/REVIEWER_RULES.md. - LLVM API gotchas and erase/RAUW reminders live in
LLVM_API_NOTES.md.
Custom Pass / IR Safety
- Iterator invalidation is avoided during IR erasure (
it++before erase or collect-then-erase) replaceAllUsesWith()is followed by correct dead-instruction cleanup- Erase collections deduplicate
Instruction*values before destruction getIntegerBitWidth()/computeKnownBits()are guarded by type checks- GEP-based passes filter on the correct base pointer (
memory,stackmemory, etc.) - Passes return the correct preserved-analysis state after mutation
Runtime Image / Memory Invariants
RvaToFileOffset,readMemory, andaddress_to_mapped_addressfailure values are checked before use- Stack arithmetic cannot underflow or diverge from the clamped reserve window
pageMap,memoryPolicy, and stack-promotion logic derive bounds from the same source of truth- PE export parsing filters forwarded exports before adding outline targets
Call / ABI Behavior
- Unknown or outlined calls preserve the intended ABI contract for the chosen mode
- Strict-mode clobbers and memory effects remain consistent with
AbiCallContract.hpp - Compat-mode behavior remains opt-in and diagnostic-only
Rewrite Manifests / Vectors / Tests
scripts/rewrite/instruction_microtests.jsonstays in one-to-one sync withtestcases/rewrite_smoke/- Manifest sample names reject traversal/path separators
- Oracle/vector schema fields keep their expected types (
skipstays boolean, XMM values stay fixed-width) - Golden-hash churn is explained; C/C++-compiled samples are not treated like deterministic asm outputs
Documentation / Process
cmake.tomlis updated instead of hand-editing generatedCMakeLists.txt- Docs changed with behavior when defaults, commands, or invariants moved
- Verification commands in the PR match the changed subsystem