GCC Middle and Back End API Reference
|
#include <cfgloop.h>
Data Fields | |
rtx | base |
rtx | step |
enum iv_extend_code | extend |
rtx | delta |
rtx | mult |
scalar_int_mode | extend_mode |
scalar_int_mode | mode |
unsigned | first_special: 1 |
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?
rtx rtx_iv::base |
Referenced by canonicalize_iv_subregs(), iv_add(), and iv_number_of_iterations().
rtx rtx_iv::delta |
Referenced by canonicalize_iv_subregs(), iv_add(), and iv_number_of_iterations().
enum iv_extend_code rtx_iv::extend |
Referenced by canonicalize_iv_subregs(), and iv_add().
scalar_int_mode rtx_iv::extend_mode |
Referenced by canonicalize_iv_subregs(), iv_add(), and iv_number_of_iterations().
unsigned rtx_iv::first_special |
Referenced by canonicalize_iv_subregs().
scalar_int_mode rtx_iv::mode |
rtx rtx_iv::mult |
Referenced by canonicalize_iv_subregs().
rtx rtx_iv::step |
Referenced by canonicalize_iv_subregs(), iv_add(), and iv_number_of_iterations().