extractFromCfg method

List<Fact> extractFromCfg(
  1. ControlFlowGraph cfg, [
  2. String? functionName
])

Extracts facts from a CFG.

Implementation

List<Fact> extractFromCfg(ControlFlowGraph cfg, [String? functionName]) {
  final facts = <Fact>[];

  // Extract flow edges between blocks
  for (final block in cfg.blocks) {
    for (final successor in block.successors) {
      facts.add(Fact('Flow', [block.id, successor.id]));
    }

    // Extract facts from each instruction
    for (final instr in block.instructions) {
      facts.addAll(_extractFromInstruction(instr, block.id));
    }
  }

  // Add entry block as reachable (base fact)
  facts.add(Fact('Reachable', [cfg.entry.id]));

  return facts;
}