github.com/tetratelabs/wazero@v1.7.3-0.20240513003603-48f702e154b5/internal/engine/wazevo/ssa/ssa.go (about) 1 // Package ssa is used to construct SSA function. By nature this is free of Wasm specific thing 2 // and ISA. 3 // 4 // We use the "block argument" variant of SSA: https://en.wikipedia.org/wiki/Static_single-assignment_form#Block_arguments 5 // which is equivalent to the traditional PHI function based one, but more convenient during optimizations. 6 // However, in this package's source code comment, we might use PHI whenever it seems necessary in order to be aligned with 7 // existing literatures, e.g. SSA level optimization algorithms are often described using PHI nodes. 8 // 9 // The rationale doc for the choice of "block argument" by MLIR of LLVM is worth a read: 10 // https://mlir.llvm.org/docs/Rationale/Rationale/#block-arguments-vs-phi-nodes 11 // 12 // The algorithm to resolve variable definitions used here is based on the paper 13 // "Simple and Efficient Construction of Static Single Assignment Form": https://link.springer.com/content/pdf/10.1007/978-3-642-37051-9_6.pdf. 14 package ssa