Show / Hide Table of Contents

    Class DominatorTree

    A data structure that describes the dominator tree of a control-flow graph.

    Inheritance
    System.Object
    DominatorTree
    Inherited Members
    System.Object.ToString()
    System.Object.Equals(System.Object)
    System.Object.Equals(System.Object, System.Object)
    System.Object.ReferenceEquals(System.Object, System.Object)
    System.Object.GetHashCode()
    System.Object.GetType()
    System.Object.MemberwiseClone()
    Namespace: Flame.Compiler.Analysis
    Assembly: Flame.Compiler.dll
    Syntax
    public abstract class DominatorTree

    Methods

    | Improve this Doc View Source

    GetImmediateDominator(BasicBlockTag)

    Gets a block's immediate dominator, that is, the block that dominates this block such that there is no intermediate block that is dominated by the immediate dominator and also dominates the given block.

    Declaration
    public abstract BasicBlockTag GetImmediateDominator(BasicBlockTag block)
    Parameters
    Type Name Description
    BasicBlockTag block

    A block to find an immediate dominator for.

    Returns
    Type Description
    BasicBlockTag

    The tag of the immediate dominator block if it exists; otherwise, null.

    | Improve this Doc View Source

    IsDominatedBy(BasicBlockTag, BasicBlockTag)

    Tells if a particular block is dominated by another block, that is, if control cannot flow to the block unless it first flowed through the dominator block or if the blocks are equal.

    Declaration
    public bool IsDominatedBy(BasicBlockTag block, BasicBlockTag dominator)
    Parameters
    Type Name Description
    BasicBlockTag block

    A block that might be dominated by dominator.

    BasicBlockTag dominator

    A block that might dominate block.

    Returns
    Type Description
    System.Boolean

    true if block is strictly dominated by dominator or block equals dominator; otherwise, false.

    | Improve this Doc View Source

    IsDominatedBy(InstructionBuilder, ValueTag)

    Tells if a particular value is dominated by another value, that is, if control cannot flow to the value unless it first flowed through the dominator value.

    Declaration
    public bool IsDominatedBy(InstructionBuilder value, ValueTag dominator)
    Parameters
    Type Name Description
    InstructionBuilder value

    A value that might be dominated by dominator.

    ValueTag dominator

    A value that might dominate value.

    Returns
    Type Description
    System.Boolean

    true if value is strictly dominated by dominator or value equals dominator; otherwise, false.

    | Improve this Doc View Source

    IsDominatedBy(NamedInstruction, NamedInstruction)

    Tells if a particular instruction is dominated by another instruction, that is, if control cannot flow to the instruction unless it first flowed through the dominator instruction.

    Declaration
    public bool IsDominatedBy(NamedInstruction instruction, NamedInstruction dominator)
    Parameters
    Type Name Description
    NamedInstruction instruction

    An instruction that might be dominated by dominator.

    NamedInstruction dominator

    An instruction that might dominate instruction.

    Returns
    Type Description
    System.Boolean

    true if instruction is strictly dominated by dominator or instruction equals dominator; otherwise, false.

    | Improve this Doc View Source

    IsDominatedBy(ValueTag, ValueTag, FlowGraph)

    Tells if a particular value is dominated by another value, that is, if control cannot flow to the value unless it first flowed through the dominator value.

    Declaration
    public bool IsDominatedBy(ValueTag value, ValueTag dominator, FlowGraph graph)
    Parameters
    Type Name Description
    ValueTag value

    A value that might be dominated by dominator.

    ValueTag dominator

    A value that might dominate value.

    FlowGraph graph

    A control-flow graph that defines both value and dominator.

    Returns
    Type Description
    System.Boolean

    true if value is strictly dominated by dominator or value equals dominator; otherwise, false.

    | Improve this Doc View Source

    IsDominatedBy(ValueTag, ValueTag, FlowGraphBuilder)

    Tells if a particular value is dominated by another value, that is, if control cannot flow to the value unless it first flowed through the dominator value.

    Declaration
    public bool IsDominatedBy(ValueTag value, ValueTag dominator, FlowGraphBuilder graph)
    Parameters
    Type Name Description
    ValueTag value

    A value that might be dominated by dominator.

    ValueTag dominator

    A value that might dominate value.

    FlowGraphBuilder graph

    A control-flow graph that defines both value and dominator.

    Returns
    Type Description
    System.Boolean

    true if value is strictly dominated by dominator or value equals dominator; otherwise, false.

    | Improve this Doc View Source

    IsStrictlyDominatedBy(BasicBlockTag, BasicBlockTag)

    Tells if a particular block is strictly dominated by another block, that is, if control cannot flow to the block unless it first flowed through the dominator block.

    Declaration
    public virtual bool IsStrictlyDominatedBy(BasicBlockTag block, BasicBlockTag dominator)
    Parameters
    Type Name Description
    BasicBlockTag block

    A block that might be dominated by dominator.

    BasicBlockTag dominator

    A block that might dominate block.

    Returns
    Type Description
    System.Boolean

    true if block is strictly dominated by dominator; otherwise, false.

    | Improve this Doc View Source

    IsStrictlyDominatedBy(InstructionBuilder, ValueTag)

    Tells if a particular value is strictly dominated by another value, that is, if control cannot flow to the value unless it first flowed through the dominator value.

    Declaration
    public bool IsStrictlyDominatedBy(InstructionBuilder value, ValueTag dominator)
    Parameters
    Type Name Description
    InstructionBuilder value

    An value that might be dominated by dominator.

    ValueTag dominator

    An value that might dominate value.

    Returns
    Type Description
    System.Boolean

    true if value is strictly dominated by dominator; otherwise, false.

    | Improve this Doc View Source

    IsStrictlyDominatedBy(NamedInstruction, NamedInstruction)

    Tells if a particular instruction is strictly dominated by another instruction, that is, if control cannot flow to the instruction unless it first flowed through the dominator instruction.

    Declaration
    public bool IsStrictlyDominatedBy(NamedInstruction instruction, NamedInstruction dominator)
    Parameters
    Type Name Description
    NamedInstruction instruction

    An instruction that might be dominated by dominator.

    NamedInstruction dominator

    An instruction that might dominate instruction.

    Returns
    Type Description
    System.Boolean

    true if instruction is strictly dominated by dominator; otherwise, false.

    | Improve this Doc View Source

    IsStrictlyDominatedBy(ValueTag, ValueTag, FlowGraph)

    Tells if a particular value is strictly dominated by another value, that is, if control cannot flow to the value unless it first flowed through the dominator value.

    Declaration
    public bool IsStrictlyDominatedBy(ValueTag value, ValueTag dominator, FlowGraph graph)
    Parameters
    Type Name Description
    ValueTag value

    An value that might be dominated by dominator.

    ValueTag dominator

    An value that might dominate value.

    FlowGraph graph

    A graph that defines both values.

    Returns
    Type Description
    System.Boolean

    true if value is strictly dominated by dominator; otherwise, false.

    | Improve this Doc View Source

    IsStrictlyDominatedBy(ValueTag, ValueTag, FlowGraphBuilder)

    Tells if a particular value is strictly dominated by another value, that is, if control cannot flow to the value unless it first flowed through the dominator value.

    Declaration
    public bool IsStrictlyDominatedBy(ValueTag value, ValueTag dominator, FlowGraphBuilder graph)
    Parameters
    Type Name Description
    ValueTag value

    An value that might be dominated by dominator.

    ValueTag dominator

    An value that might dominate value.

    FlowGraphBuilder graph

    A control-flow graph that defines both value and dominator.

    Returns
    Type Description
    System.Boolean

    true if value is strictly dominated by dominator; otherwise, false.

    | Improve this Doc View Source

    TryFindCommonDominator(IEnumerable<BasicBlockTag>, out BasicBlockTag)

    Tries to find the last common dominator of a sequence of blocks.

    Declaration
    public bool TryFindCommonDominator(IEnumerable<BasicBlockTag> blocks, out BasicBlockTag dominator)
    Parameters
    Type Name Description
    System.Collections.Generic.IEnumerable<BasicBlockTag> blocks

    A sequence of blocks.

    BasicBlockTag dominator

    The last common dominator for blocks.

    Returns
    Type Description
    System.Boolean

    true if blocks have one or more common dominators; otherwise, false.

    • Improve this Doc
    • View Source
    Back to top Generated by DocFX