diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2023-06-10 16:56:06 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2023-06-12 10:51:03 -0400 |
commit | 1c0aae69a760c7ec3ee436d4c36bb01be6bc0951 (patch) | |
tree | e2add4b8dc1e8e3eb238777eccaaa091679a0586 | |
parent | 2eb50117ca26f665ce22085d620ff474622971cc (diff) | |
download | gcc-1c0aae69a760c7ec3ee436d4c36bb01be6bc0951.zip gcc-1c0aae69a760c7ec3ee436d4c36bb01be6bc0951.tar.gz gcc-1c0aae69a760c7ec3ee436d4c36bb01be6bc0951.tar.bz2 |
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.
-rw-r--r-- | gcc/range-op.cc | 14 | ||||
-rw-r--r-- | gcc/range-op.h | 33 |
2 files changed, 16 insertions, 31 deletions
diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 3e8b122..382f5d5 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 295e511..328910d 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; |