GCC Middle and Back End API Reference
hwloop_info_d Struct Reference

#include <hw-doloop.h>

Collaboration diagram for hwloop_info_d:

Data Fields

int loop_no
hwloop_info next
vec< basic_blockblocks
bitmap block_bitmap
vec< hwloop_infoloops
vec< edge, va_gc > * incoming
basic_block incoming_src
basic_block incoming_dest
basic_block head
basic_block tail
basic_block successor
rtx last_insn
rtx loop_end
rtx iter_reg
rtx start_label
rtx end_label
int length
int depth
bool bad
bool visited
bool has_call
bool has_asm
bool jumps_within
bool jumps_outof
bool iter_reg_used
bool iter_reg_used_outside
HARD_REG_SET regs_set_in_loop

Detailed Description

   Information about a loop we have found (or are in the process of

Field Documentation

bool hwloop_info_d::bad
     True if we can't optimize this loop.  

Referenced by dump_hwloops(), optimize_loop(), scan_loop(), and set_bb_indices().

bitmap hwloop_info_d::block_bitmap
     Same information in a bitmap.  

Referenced by add_forwarder_blocks(), discover_loops(), and reorder_loops().

vec<basic_block> hwloop_info_d::blocks
     Vector of blocks only within the loop, including those within
     inner loops.  

Referenced by add_forwarder_blocks(), discover_loops(), and dump_hwloops().

int hwloop_info_d::depth
     The nesting depth of the loop.  Innermost loops are given a depth
     of 1.  Only successfully optimized doloops are counted; if an inner
     loop was marked as bad, it does not increase the depth of its parent
     This value is valid when the target's optimize function is called.  

Referenced by dump_hwloops(), and optimize_loop().

rtx hwloop_info_d::end_label
     The new label placed at the end of the loop. 
bool hwloop_info_d::has_asm

Referenced by scan_loop().

bool hwloop_info_d::has_call
     The following values are collected before calling the target's optimize
     function and are not valid earlier.  
     Record information about control flow: whether the loop has calls
     or asm statements, whether it has edges that jump out of the loop,
     or edges that jump within the loop.  
basic_block hwloop_info_d::head
     First block in the loop.  This is the one branched to by the loop_end

Referenced by dump_hwloops(), reorder_loops(), and set_bb_indices().

vec<edge, va_gc>* hwloop_info_d::incoming
     All edges that jump into the loop.  

Referenced by add_forwarder_blocks().

basic_block hwloop_info_d::incoming_dest

Referenced by process_incoming_edges().

basic_block hwloop_info_d::incoming_src
     The ports currently using this infrastructure can typically
     handle two cases: all incoming edges have the same destination
     block, or all incoming edges have the same source block.  These
     two members are set to the common source or destination we found,
     or NULL if different blocks were found.  If both are NULL the
     loop can't be optimized.  

Referenced by process_incoming_edges().

rtx hwloop_info_d::iter_reg
     The iteration register.  

Referenced by dump_hwloops(), and scan_loop().

bool hwloop_info_d::iter_reg_used
     True if there is an instruction other than the doloop_end which uses the
     iteration register.  

Referenced by scan_loop().

bool hwloop_info_d::iter_reg_used_outside
     True if the iteration register lives past the doloop instruction.  
bool hwloop_info_d::jumps_outof

Referenced by scan_loop().

bool hwloop_info_d::jumps_within

Referenced by scan_loop().

rtx hwloop_info_d::last_insn
     The last instruction in the tail.  
int hwloop_info_d::length
     The length of the loop.  
rtx hwloop_info_d::loop_end
     The loop_end insn.  

Referenced by scan_loop().

int hwloop_info_d::loop_no
     loop number, for dumps 

Referenced by add_forwarder_blocks(), discover_loops(), and dump_hwloops().

vec<hwloop_info> hwloop_info_d::loops
     Vector of inner loops within this loop.  Includes loops of every
     nesting level.  

Referenced by dump_hwloops().

hwloop_info hwloop_info_d::next
     Next loop in the graph. 

Referenced by discover_loops(), and set_bb_indices().

HARD_REG_SET hwloop_info_d::regs_set_in_loop
     Hard registers set at any point in the loop, except for the loop counter
     register's set in the doloop_end instruction.  

Referenced by optimize_loop(), and scan_loop().

rtx hwloop_info_d::start_label
     The new label placed at the beginning of the loop. 
basic_block hwloop_info_d::successor
     The successor block of the loop.  This is the one the loop_end insn
     falls into.  
basic_block hwloop_info_d::tail
     Last block in the loop (the one with the loop_end insn).  

Referenced by reorder_loops(), scan_loop(), and set_bb_indices().

bool hwloop_info_d::visited
     True if we have visited this loop during the optimization phase.  

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