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:
class If_Statement
class Loop_Statement
class Switch_Statement
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.