Logical_Code_Range_Interface

interface Logical_Code_Range_Interface (physical)

Stores the range of LIR code associated with a statement. Currently only stored on some kinds of statements (so that we avoid wasting memory on code ranges the analysis does not need).

Direct implementations:

Field

Kind

Type

Description

Code_Start

semantic to logical

class Execution_Node

Start of the LIR code belonging to this statement. If set to an instruction, that instruction is part of the code range. If set to a block, the code range begins with the tail jump of that block, but does not include the block’s code. Use is_inside_code_range() to determine if an instruction is between Code_Start and Code_End.

Code_End

semantic to logical

class Execution_Node

If set to an instruction, it is the first instruction after those belonging to the code range belonging to this statement. If set to a block, the code range includes all instructions in that block but not the block’s tail jump. In other words: A block is used to refer to the “instruction-after-last” in that block; all instructions between Code_Start (inclusive) to Code_End (exclusive) belong to the code range. If Code_Start==Code_End, then the statement did not emit any LIR instructions.