(
label: BasicBlock,
pre_live: AnalysisDict[Value],
source_defined: set[Value],
source_borrowed: set[Value],
source_live_regs: set[Value],
ordering: dict[Value, int],
omitted: Iterable[Value],
)
| 209 | |
| 210 | |
| 211 | def after_branch_decrefs( |
| 212 | label: BasicBlock, |
| 213 | pre_live: AnalysisDict[Value], |
| 214 | source_defined: set[Value], |
| 215 | source_borrowed: set[Value], |
| 216 | source_live_regs: set[Value], |
| 217 | ordering: dict[Value, int], |
| 218 | omitted: Iterable[Value], |
| 219 | ) -> tuple[tuple[Value, bool], ...]: |
| 220 | target_pre_live = pre_live[label, 0] |
| 221 | decref = source_live_regs - target_pre_live - source_borrowed |
| 222 | if decref: |
| 223 | return tuple( |
| 224 | (reg, is_maybe_undefined(source_defined, reg)) |
| 225 | for reg in sorted(decref, key=lambda r: ordering[r]) |
| 226 | if reg.type.is_refcounted and reg not in omitted |
| 227 | ) |
| 228 | return () |
| 229 | |
| 230 | |
| 231 | def after_branch_increfs( |
no test coverage detected
searching dependent graphs…