GCC Middle and Back End API Reference
idata_def Struct Reference

#include <sel-sched-ir.h>

Collaboration diagram for idata_def:

Data Fields

int type
rtx lhs
rtx rhs
regset reg_sets
regset reg_clobbers
regset reg_uses

Detailed Description

InstructionData. Contains information about insn pattern.


Field Documentation

rtx idata_def::lhs

If insn is a SET, this is its left hand side.

regset idata_def::reg_clobbers
regset idata_def::reg_sets

Registers that are set/used by this insn. This info is now gathered via sched-deps.c. The downside of this is that we also use live info from flow that is accumulated in the basic blocks. These two infos can be slightly inconsistent, hence in the beginning we make a pass through CFG and calculating the conservative solution for the info in basic blocks. When this scheduler will be switched to use dataflow, this can be unified as df gives us both per basic block and per instruction info. Actually, we don't do that pass and just hope for the best.

regset idata_def::reg_uses
rtx idata_def::rhs

If insn is a SET, this is its right hand side.

int idata_def::type

Type of the insn. o CALL_INSN - Call insn o JUMP_INSN - Jump insn o INSN - INSN that cannot be cloned o USE - INSN that can be cloned o SET - INSN that can be cloned and separable into lhs and rhs o PC - simplejump. Insns that simply redirect control flow should not have any dependencies. Sched-deps.c, though, might consider them as producers or consumers of certain registers. To avoid that we handle dependency for simple jumps ourselves.


The documentation for this struct was generated from the following file: