/// Probe: `addmod(a, b, 0)` — LLVM `urem ..., 0` is UB; EVM defines ADDMOD /// with modulus = 0 as 0. The stdlib `__addmod` runtime function guards this. /// Question is whether LLVM constant-folds through the guard at O3. object "AddModZeroProbe" { code { let size := datasize("AddModZeroProbe_deployed") codecopy(0, dataoffset("AddModZeroProbe_deployed"), size) return(0, size) } object "AddModZeroProbe_deployed" { code { let tag := calldataload(0) let a := calldataload(32) let b := calldataload(64) // 0 modulus, obfuscated so revive can't pre-fold let modulus := sub(shl(8, 1), shl(8, 1)) mstore(0, xor(addmod(a, b, modulus), tag)) return(0, 32) } } }