CodeQL library for Python
codeql/python-all 3.0.1-dev (changelog, source)
Search

Class PhiFunction

A Phi-function as specified in classic SSA form.

Import path

import python

Direct supertypes

Indirect supertypes

Predicates

getAPrimaryQlClass

Gets the name of the primary QL class for this element.

getAUse

Gets a use of this definition as defined by the SsaSourceVariable class.

getAnInput

Gets an input variable for this phi node.

getBasicBlock

Gets the basic block that succeeds this phi node.

getInput

Gets the input variable for this phi node on the edge pred -> this.getBasicBlock(), if any.

getLocation

Gets the location of a control flow node that is indicative of this definition. Since definitions may occur on edges of the control flow graph, the given location may be imprecise. Distinct EssaDefinitions may return the same ControlFlowNode even for the same variable.

getRepresentation

Gets a representation of this SSA definition for debugging purposes. Since this is primarily for debugging and testing, performance may be poor.

getScope
getShortCircuitInput

Gets the variable which is the common and complete input to all pi-nodes that are themselves inputs to this phi-node. For example: x = y() if complicated_test(x): do_a() else: do_b() phi Which gives us the ESSA form: x0 = y() x1 = pi(x0, complicated_test(x0)) x2 = pi(x0, not complicated_test(x0)) x3 = phi(x1, x2) However we may not be able to track the value of x through compilated_test meaning that we cannot track x from x0 to x3. By using getShortCircuitInput() we can do so, since the short-circuit input of x3 is x0.

getSourceVariable

Gets the source variable for which this a definition, either explicit or implicit.

isComplete

Holds if forall incoming edges in the flow graph, there is an input variable

reachesEndOfBlock

Holds if this definition reaches the end of b.

toString

Gets a textual representation of this element.

Inherited predicates