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

Data Fields

tree index_expr
tree range_min
tree range_max
tree range_size
basic_block switch_bb
basic_block default_bb
basic_block final_bb
int default_prob
gcov_type default_count
gcov_type other_count
int phi_count
treedefault_values
vec< constructor_elt, va_gc > ** constructors
treetarget_inbound_names
treetarget_outbound_names
gimple arr_ref_first
gimple arr_ref_last
const char * reason
unsigned int uniq
unsigned int count

Detailed Description

The main structure of the pass.


Field Documentation

gimple switch_conv_info::arr_ref_first

The first load statement that loads a temporary from a new static array.

Referenced by build_one_array().

gimple switch_conv_info::arr_ref_last

The last load statement that loads a temporary from a new static array.

vec<constructor_elt, va_gc>** switch_conv_info::constructors

Constructors of new static arrays.

Referenced by free_temp_arrays().

unsigned int switch_conv_info::count
basic_block switch_conv_info::default_bb

Basic block that is the target of the default case.

gcov_type switch_conv_info::default_count

The count of the default edge in the replaced switch.

int switch_conv_info::default_prob

The probability of the default edge in the replaced switch.

tree* switch_conv_info::default_values

Array of default values, in the same order as phi nodes.

Referenced by free_temp_arrays().

basic_block switch_conv_info::final_bb

The single successor block of all branches out of the GIMPLE_SWITCH, if such a block exists. Otherwise NULL.

Referenced by build_one_array(), and create_temp_arrays().

tree switch_conv_info::index_expr

The expression used to decide the switch branch.

Referenced by build_one_array().

gcov_type switch_conv_info::other_count

Combined count of all other (non-default) edges in the replaced switch.

int switch_conv_info::phi_count

Number of phi nodes in the final bb (that we'll be replacing).

tree switch_conv_info::range_max
tree switch_conv_info::range_min

The following integer constants store the minimum and maximum value covered by the case labels.

Referenced by build_one_array(), create_temp_arrays(), and free_temp_arrays().

tree switch_conv_info::range_size

The difference between the above two numbers. Stored here because it is used in all the conversion heuristics, as well as for some of the transformation, and it is expensive to re-compute it all the time.

Referenced by build_one_array().

const char* switch_conv_info::reason

String reason why the case wasn't a good candidate that is written to the dump file, if there is one.

Referenced by check_all_empty_except_final().

basic_block switch_conv_info::switch_bb

Basic block that contains the actual GIMPLE_SWITCH.

Referenced by create_temp_arrays().

tree* switch_conv_info::target_inbound_names

Array of ssa names that are initialized with a value from a new static array.

tree* switch_conv_info::target_outbound_names

Array of ssa names that are initialized with the default value if the switch expression is out of range.

unsigned int switch_conv_info::uniq

Parameters for expand_switch_using_bit_tests. Should be computed the same way as in expand_case.


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