GCC Middle and Back End API Reference
noce_if_info Struct Reference
Collaboration diagram for noce_if_info:

Data Fields

basic_block test_bb
basic_block then_bb
basic_block else_bb
basic_block join_bb
rtx jump
rtx cond
rtx cond_earliest
rtx insn_a
rtx insn_b
rtx a
rtx b
rtx x
bool then_else_reversed
int branch_cost

Detailed Description

Used by noce_process_if_block to communicate with its subroutines.

The subroutines know that A and B may be evaluated freely. They know that X is a register. They should insert new instructions before cond_earliest.


Field Documentation

rtx noce_if_info::a

The SET_SRC of INSN_A and INSN_B.

Referenced by end_ifcvt_sequence(), and noce_try_addcc().

rtx noce_if_info::b
int noce_if_info::branch_cost

Estimated cost of the particular branch instruction.

Referenced by noce_try_addcc().

rtx noce_if_info::cond

The jump condition.

Referenced by cond_exec_find_if_block(), end_ifcvt_sequence(), and noce_try_addcc().

rtx noce_if_info::cond_earliest

New insns should be inserted before this one.

Referenced by cond_exec_find_if_block().

basic_block noce_if_info::else_bb

Referenced by cond_exec_find_if_block().

rtx noce_if_info::insn_a

Insns in the THEN and ELSE block. There is always just this one insns in those blocks. The insns are single_set insns. If there was no ELSE block, INSN_B is the last insn before COND_EARLIEST, or NULL_RTX. In the former case, the insn operands are still valid, as if INSN_B was moved down below the jump.

Referenced by noce_try_addcc().

rtx noce_if_info::insn_b
basic_block noce_if_info::join_bb
rtx noce_if_info::jump

The jump that ends TEST_BB.

Referenced by cond_exec_find_if_block(), end_ifcvt_sequence(), and noce_try_addcc().

basic_block noce_if_info::test_bb

The basic blocks that make up the IF-THEN-{ELSE-,}JOIN block.

basic_block noce_if_info::then_bb

Referenced by cond_exec_find_if_block().

bool noce_if_info::then_else_reversed

True if this if block is not canonical. In the canonical form of if blocks, the THEN_BB is the block reached via the fallthru edge from TEST_BB. For the noce transformations, we allow the symmetric form as well.

rtx noce_if_info::x

The SET_DEST of INSN_A.

Referenced by end_ifcvt_sequence(), noce_try_addcc(), and noce_try_store_flag_constants().


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