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 |
enum machine_mode | extend_mode |
enum machine_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 |
rtx rtx_iv::delta |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_add(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_mult(), iv_neg(), iv_number_of_iterations(), iv_shift(), and iv_subreg().
enum iv_extend_code rtx_iv::extend |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_add(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_mult(), iv_neg(), iv_shift(), iv_subreg(), and shorten_into_mode().
enum machine_mode rtx_iv::extend_mode |
unsigned rtx_iv::first_special |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_subreg(), and may_unswitch_on().
enum machine_mode rtx_iv::mode |
Referenced by analyze_iv_to_split_insn(), canon_condition(), canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), implies_p(), iv_add(), iv_analyze_biv(), iv_analyze_def(), iv_analyze_expr(), iv_constant(), iv_extend(), iv_number_of_iterations(), iv_subreg(), may_unswitch_on(), and shorten_into_mode().
rtx rtx_iv::mult |
Referenced by canonicalize_iv_subregs(), dump_iv_info(), get_iv_value(), iv_analyze_biv(), iv_constant(), iv_extend(), iv_mult(), iv_neg(), iv_shift(), and iv_subreg().
rtx rtx_iv::step |