diff options
Diffstat (limited to 'gcc/tree-ssa-scopedtables.h')
-rw-r--r-- | gcc/tree-ssa-scopedtables.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/tree-ssa-scopedtables.h b/gcc/tree-ssa-scopedtables.h index 3e6798a..df304ae 100644 --- a/gcc/tree-ssa-scopedtables.h +++ b/gcc/tree-ssa-scopedtables.h @@ -47,6 +47,20 @@ struct hashable_expr } ops; }; +/* Structure for recording known value of a conditional expression. + + Clients build vectors of these objects to record known values + that occur on edges. */ + +struct cond_equivalence +{ + /* The condition, in a HASHABLE_EXPR form. */ + struct hashable_expr cond; + + /* The result of the condition (true or false. */ + tree value; +}; + /* Structure for entries in the expression hash table. */ typedef class expr_hash_elt * expr_hash_elt_t; @@ -132,6 +146,12 @@ class avail_exprs_stack hash_table<expr_elt_hasher> *avail_exprs (void) { return m_avail_exprs; } + /* Lookup and conditionally insert an expression into the table, + recording enough information to unwind as needed. */ + tree lookup_avail_expr (gimple *, bool, bool); + + void record_cond (cond_equivalence *); + private: vec<std::pair<expr_hash_elt_t, expr_hash_elt_t> > m_stack; hash_table<expr_elt_hasher> *m_avail_exprs; @@ -182,5 +202,6 @@ class const_and_copies }; void initialize_expr_from_cond (tree cond, struct hashable_expr *expr); +void record_conditions (vec<cond_equivalence> *p, tree, tree); #endif /* GCC_TREE_SSA_SCOPED_TABLES_H */ |