GCC Middle and Back End API Reference
rtx_iv Struct Reference

#include <cfgloop.h>

Collaboration diagram for rtx_iv:

Data Fields

rtx base
rtx step
enum iv_extend_code extend
rtx delta
rtx mult
enum machine_mode extend_mode
enum machine_mode mode
unsigned first_special: 1

Detailed Description

   Induction variable analysis.  
   The description of induction variable.  The things are a bit complicated
   due to need to handle subregs and extends.  The value of the object described
   by it can be obtained as follows (all computations are done in extend_mode):

   Value in i-th iteration is
     delta + mult * extend_{extend_mode} (subreg_{mode} (base + i * step)).

   If first_special is true, the value in the first iteration is
     delta + mult * base

   If extend = UNKNOWN, first_special must be false, delta 0, mult 1 and value is
     subreg_{mode} (base + i * step)

   The get_iv_value function can be used to obtain these expressions.

   ??? Add a third mode field that would specify the mode in that inner
   computation is done, which would enable it to be different from the
   outer one?  

Field Documentation

rtx rtx_iv::base
     Its base and step (mode of base and step is supposed to be extend_mode,
     see the description above).  

Referenced by iv_extend(), and record_biv().

rtx rtx_iv::delta
     Operations applied in the extended mode.  

Referenced by iv_extend(), and iv_mult().

enum iv_extend_code rtx_iv::extend
     The type of extend applied to it (IV_SIGN_EXTEND, IV_ZERO_EXTEND,
     or IV_UNKNOWN_EXTEND).  

Referenced by iv_extend().

enum machine_mode rtx_iv::extend_mode
     The mode it is extended to.  

Referenced by analyze_insn_to_expand_var(), and iv_extend().

unsigned rtx_iv::first_special
     Whether the first iteration needs to be handled specially.  
enum machine_mode rtx_iv::mode
     The mode the variable iterates in.  

Referenced by analyze_insn_to_expand_var().

rtx rtx_iv::mult

Referenced by iv_extend(), and iv_mult().

rtx rtx_iv::step

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