public void ConnectTo(GraphBlock to) { if (Exited || OutBlocks.Contains(to)) { return; } OutBlocks.Add(to); to.InBlocks.Add(this); }
public override string ToString() { var inBlocks = string.Join(", ", InBlocks.Select(x => x.Id)); var outBlocks = string.Join(", ", OutBlocks.Select(x => x.Id)); var idom = IDom == null ? "null" : IDom.Id.ToString(); var doms = string.Join(", ", Dominators.Select(x => x.Id)); var children = string.Join(", ", DominantChildren.Select(x => x.Id)); var df = string.Join(", ", DominanceFrontiers.Select(x => x.Id)); var variables = string.Join(", ", Variables); return($"Block {Id} ({Name}): nodes={Nodes.Count}, exited={Exited}, in=({inBlocks}), out=({outBlocks}), idom={idom}, doms=({doms}), domchildren=({children}), df=({df}), variables=({variables})"); }