From: Andrew MacLeod Date: Sat, 10 Jun 2023 20:56:06 +0000 (-0400) Subject: Switch from unified table to range_op_table. There can be only one. X-Git-Tag: basepoints/gcc-15~8407 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1c0aae69a760c7ec3ee436d4c36bb01be6bc0951;p=thirdparty%2Fgcc.git Switch from unified table to range_op_table. There can be only one. Now that there is only a single range_op_table, make the base table the only table. * range-op.cc (unified_table): Delete. (range_op_table operator_table): Instantiate. (range_op_table::range_op_table): Rename from unified_table. (range_op_handler::range_op_handler): Use range_op_table. * range-op.h (range_op_table::operator []): Inline. (range_op_table::set): Inline. --- diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 3e8b1222b1c2..382f5d50ffaa 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -49,13 +49,6 @@ along with GCC; see the file COPYING3. If not see #include "tree-ssa-ccp.h" #include "range-op-mixed.h" -// Instantiate a range_op_table for unified operations. -class unified_table : public range_op_table -{ - public: - unified_table (); -} unified_tree_table; - // Instantiate the operators which apply to multiple types here. operator_equal op_equal; @@ -80,9 +73,12 @@ operator_bitwise_or op_bitwise_or; operator_min op_min; operator_max op_max; +// Instantaite a range operator table. +range_op_table operator_table; + // Invoke the initialization routines for each class of range. -unified_table::unified_table () +range_op_table::range_op_table () { initialize_integral_ops (); initialize_pointer_ops (); @@ -134,7 +130,7 @@ range_op_handler::range_op_handler () range_op_handler::range_op_handler (tree_code code) { - m_operator = unified_tree_table[code]; + m_operator = operator_table[code]; } // Create a dispatch pattern for value range discriminators LHS, OP1, and OP2. diff --git a/gcc/range-op.h b/gcc/range-op.h index 295e5116dd19..328910d0ec55 100644 --- a/gcc/range-op.h +++ b/gcc/range-op.h @@ -266,35 +266,24 @@ extern void wi_set_zero_nonzero_bits (tree type, class range_op_table { public: - range_operator *operator[] (enum tree_code code); - void set (enum tree_code code, range_operator &op); + range_op_table (); + inline range_operator *operator[] (enum tree_code code) + { + gcc_checking_assert (code >= 0 && code < MAX_TREE_CODES); + return m_range_tree[code]; + } protected: + inline void set (enum tree_code code, range_operator &op) + { + gcc_checking_assert (m_range_tree[code] == NULL); + m_range_tree[code] = &op; + } range_operator *m_range_tree[MAX_TREE_CODES]; void initialize_integral_ops (); void initialize_pointer_ops (); void initialize_float_ops (); }; - -// Return a pointer to the range_operator instance, if there is one -// associated with tree_code CODE. - -inline range_operator * -range_op_table::operator[] (enum tree_code code) -{ - gcc_checking_assert (code >= 0 && code < MAX_TREE_CODES); - return m_range_tree[code]; -} - -// Add OP to the handler table for CODE. - -inline void -range_op_table::set (enum tree_code code, range_operator &op) -{ - gcc_checking_assert (m_range_tree[code] == NULL); - m_range_tree[code] = &op; -} - extern range_operator *ptr_op_widen_mult_signed; extern range_operator *ptr_op_widen_mult_unsigned; extern range_operator *ptr_op_widen_plus_signed;