aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2023-06-10 16:56:06 -0400
committerAndrew MacLeod <amacleod@redhat.com>2023-06-12 10:51:03 -0400
commit1c0aae69a760c7ec3ee436d4c36bb01be6bc0951 (patch)
treee2add4b8dc1e8e3eb238777eccaaa091679a0586
parent2eb50117ca26f665ce22085d620ff474622971cc (diff)
downloadgcc-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.cc14
-rw-r--r--gcc/range-op.h33
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;