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.
- 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
-
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
- 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
-
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
-
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