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
vec< constructor_elt, va_gc > ** constructors
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
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: