21#ifndef GCC_VALUE_RELATION_H
22#define GCC_VALUE_RELATION_H
232 void dump (
FILE *f)
const final override;
278 void dump (
FILE *)
const final override;
294 bool full =
true,
bool partial =
false);
306#define FOR_EACH_EQUIVALENCE(oracle, bb, name, equiv_name) \
307 for (equiv_relation_iterator iter (oracle, bb, name, true, false); \
308 ((equiv_name) = iter.get_name ()); \
311#define FOR_EACH_PARTIAL_EQUIV(oracle, bb, name, equiv_name, equiv_rel) \
312 for (equiv_relation_iterator iter (oracle, bb, name, false, true); \
313 ((equiv_name) = iter.get_name (&equiv_rel)); \
316#define FOR_EACH_PARTIAL_AND_FULL_EQUIV(oracle, bb, name, equiv_name, \
318 for (equiv_relation_iterator iter (oracle, bb, name, true, true); \
319 ((equiv_name) = iter.get_name (&equiv_rel)); \
350#define TRIO_VARYING relation_trio ()
353#define TRIO_MASK 0x000F
Definition value-relation.h:218
relation_kind query_relation(basic_block bb, tree ssa1, tree ssa2) final override
Definition value-relation.cc:1401
void register_relation(basic_block bb, relation_kind k, tree op1, tree op2) final override
Definition value-relation.cc:1102
bitmap m_tmp2
Definition value-relation.h:234
relation_chain * set_one_relation(basic_block bb, relation_kind k, tree op1, tree op2)
Definition value-relation.cc:1130
relation_kind find_relation_dom(basic_block bb, unsigned v1, unsigned v2) const
Definition value-relation.cc:1380
~dom_oracle()
Definition value-relation.cc:1020
void register_transitives(basic_block, const class value_relation &)
Definition value-relation.cc:1209
void dump(FILE *f, basic_block bb) const final override
Definition value-relation.cc:1438
bitmap m_relation_set
Definition value-relation.h:235
relation_kind find_relation_block(unsigned bb, const_bitmap b1, const_bitmap b2) const
Definition value-relation.cc:1300
bitmap m_tmp
Definition value-relation.h:234
dom_oracle()
Definition value-relation.cc:1009
vec< relation_chain_head > m_relations
Definition value-relation.h:236
Definition value-relation.h:134
void dump(FILE *f) const
Definition value-relation.cc:322
equiv_chain * find(unsigned ssa)
Definition value-relation.cc:305
equiv_chain * m_next
Definition value-relation.h:138
bitmap m_names
Definition value-relation.h:136
basic_block m_bb
Definition value-relation.h:137
Definition value-relation.h:157
relation_kind partial_equiv(tree ssa1, tree ssa2, tree *base=NULL) const
Definition value-relation.cc:461
bool has_equiv_p(unsigned v)
Definition value-relation.h:176
equiv_chain * find_equiv_dom(tree name, basic_block bb) const
Definition value-relation.cc:546
const_bitmap equiv_set(tree ssa, basic_block bb) final override
Definition value-relation.cc:485
vec< pe_slice > m_partial
Definition value-relation.h:183
bitmap m_equiv_set
Definition value-relation.h:180
bitmap_obstack m_bitmaps
Definition value-relation.h:177
void limit_check(basic_block bb=NULL)
Definition value-relation.cc:746
struct obstack m_chain_obstack
Definition value-relation.h:178
vec< bitmap > m_self_equiv
Definition value-relation.h:182
~equiv_oracle()
Definition value-relation.cc:360
equiv_oracle()
Definition value-relation.cc:345
void add_partial_equiv(relation_kind, tree, tree)
Definition value-relation.cc:372
void dump(FILE *f, basic_block bb) const override
Definition value-relation.cc:756
equiv_chain * find_equiv_block(unsigned ssa, int bb) const
Definition value-relation.cc:534
vec< equiv_chain * > m_equiv
Definition value-relation.h:181
void register_relation(basic_block bb, relation_kind k, tree ssa1, tree ssa2) override
Definition value-relation.cc:654
relation_kind query_relation(basic_block, tree, tree) override
Definition value-relation.cc:508
const pe_slice * partial_equiv_set(tree name) final override
Definition value-relation.cc:448
void add_equiv_to_block(basic_block bb, bitmap equiv)
Definition value-relation.cc:715
void register_initial_def(tree ssa)
Definition value-relation.cc:632
bitmap register_equiv(basic_block bb, unsigned v, equiv_chain *equiv_1)
Definition value-relation.cc:568
Definition value-relation.h:291
const pe_slice * m_pe
Definition value-relation.h:300
tree get_name(relation_kind *rel=NULL)
Definition value-relation.cc:1750
tree m_name
Definition value-relation.h:303
relation_oracle * m_oracle
Definition value-relation.h:298
unsigned m_y
Definition value-relation.h:302
bitmap_iterator m_bi
Definition value-relation.h:301
const_bitmap m_bm
Definition value-relation.h:299
void next()
Definition value-relation.cc:1741
equiv_relation_iterator(relation_oracle *oracle, basic_block bb, tree name, bool full=true, bool partial=false)
Definition value-relation.cc:1722
Definition value-relation.h:265
equiv_chain m_equiv
Definition value-relation.h:281
relation_oracle * m_root
Definition value-relation.h:283
void reset_path(relation_oracle *oracle=NULL)
Definition value-relation.cc:1677
void register_relation(basic_block, relation_kind, tree, tree) final override
Definition value-relation.cc:1595
void dump(FILE *, basic_block) const final override
Definition value-relation.cc:1690
void killing_def(tree)
Definition value-relation.cc:1548
struct obstack m_chain_obstack
Definition value-relation.h:287
bitmap_obstack m_bitmaps
Definition value-relation.h:286
bitmap m_killed_defs
Definition value-relation.h:284
void set_root_oracle(relation_oracle *oracle)
Definition value-relation.h:276
~path_oracle()
Definition value-relation.cc:1491
void register_equiv(basic_block bb, tree ssa1, tree ssa2)
Definition value-relation.cc:1522
relation_kind query_relation(basic_block, tree, tree) final override
Definition value-relation.cc:1657
const_bitmap equiv_set(tree, basic_block) final override
Definition value-relation.cc:1501
relation_chain_head m_relations
Definition value-relation.h:282
Definition value-relation.h:144
tree ssa_base
Definition value-relation.h:146
relation_kind code
Definition value-relation.h:147
bitmap members
Definition value-relation.h:148
Definition value-relation.h:199
relation_kind find_relation(const_bitmap b1, const_bitmap b2) const
Definition value-relation.cc:983
bitmap m_names
Definition value-relation.h:201
int m_num_relations
Definition value-relation.h:203
class relation_chain * m_head
Definition value-relation.h:202
Definition value-relation.cc:972
Definition value-relation.h:98
virtual relation_kind query_relation(basic_block, const_bitmap, const_bitmap)=0
virtual relation_kind query_relation(basic_block, tree, tree)=0
virtual ~relation_oracle()
Definition value-relation.h:100
void register_stmt(gimple *, relation_kind, tree, tree)
Definition value-relation.cc:1028
virtual void dump(FILE *) const =0
friend class path_oracle
Definition value-relation.h:127
relation_kind validate_relation(relation_kind, tree, tree)
Definition value-relation.cc:262
void debug() const
Definition value-relation.cc:1471
virtual const class pe_slice * partial_equiv_set(tree)
Definition value-relation.h:122
void valid_equivs(bitmap b, const_bitmap equivs, basic_block bb)
Definition value-relation.cc:275
void register_edge(edge, relation_kind, tree, tree)
Definition value-relation.cc:1076
virtual const_bitmap equiv_set(tree, basic_block)=0
virtual void dump(FILE *, basic_block) const =0
virtual void register_relation(basic_block, relation_kind, tree, tree)=0
Definition value-relation.h:331
relation_kind op1_op2()
Definition value-relation.h:405
relation_kind lhs_op2()
Definition value-relation.h:399
unsigned m_val
Definition value-relation.h:346
relation_trio swap_op1_op2()
Definition value-relation.h:411
relation_trio()
Definition value-relation.h:359
relation_kind lhs_op1()
Definition value-relation.h:393
Definition value-relation.h:423
tree name1
Definition value-relation.h:442
void negate()
Definition value-relation.cc:809
relation_trio create_trio(tree lhs, tree op1, tree op2)
Definition value-relation.cc:921
tree name2
Definition value-relation.h:442
bool union_(value_relation &p)
Definition value-relation.cc:835
void set_relation(relation_kind kind, tree n1, tree n2)
Definition value-relation.h:448
void dump(FILE *f) const
Definition value-relation.cc:955
value_relation()
Definition value-relation.h:460
relation_kind kind() const
Definition value-relation.h:429
relation_kind related
Definition value-relation.h:441
bool apply_transitive(const value_relation &rel)
Definition value-relation.cc:854
tree op1() const
Definition value-relation.h:430
tree op2() const
Definition value-relation.h:431
bool intersect(value_relation &p)
Definition value-relation.cc:817
Definition value-range.h:78
class edge_def * edge
Definition coretypes.h:342
const class bitmap_head * const_bitmap
Definition coretypes.h:52
class bitmap_head * bitmap
Definition coretypes.h:51
union tree_node * tree
Definition coretypes.h:97
int i2
Definition fp-test.cc:66
int i1
Definition fp-test.cc:66
static struct obstack obstack
Definition gcc.cc:357
#define bitmap_bit_p(bitstring, bitno)
Definition genautomata.cc:3429
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
poly_int< N, C > r
Definition poly-int.h:770
Ca const poly_int< N, Cb > & b
Definition poly-int.h:767
Definition basic-block.h:117
#define NULL
Definition system.h:50
#define MIN(X, Y)
Definition system.h:392
#define STATIC_ASSERT(X)
Definition system.h:871
#define gcc_checking_assert(EXPR)
Definition system.h:828
#define TREE_CODE(NODE)
Definition tree.h:324
#define NULL_TREE
Definition tree.h:317
void adjust_equivalence_range(vrange &range)
Definition value-relation.cc:191
#define TRIO_MASK
Definition value-relation.h:353
enum relation_kind_t relation_kind
#define TRIO_SHIFT
Definition value-relation.h:352
relation_kind relation_intersect(relation_kind r1, relation_kind r2)
Definition value-relation.cc:105
int pe_to_bits(relation_kind t)
Definition value-relation.h:479
relation_kind_t
Definition value-relation.h:64
@ VREL_PE8
Definition value-relation.h:73
@ VREL_PE16
Definition value-relation.h:74
@ VREL_GT
Definition value-relation.h:69
@ VREL_LT
Definition value-relation.h:67
@ VREL_LE
Definition value-relation.h:68
@ VREL_LAST
Definition value-relation.h:77
@ VREL_NE
Definition value-relation.h:72
@ VREL_EQ
Definition value-relation.h:71
@ VREL_PE32
Definition value-relation.h:75
@ VREL_VARYING
Definition value-relation.h:65
@ VREL_UNDEFINED
Definition value-relation.h:66
@ VREL_GE
Definition value-relation.h:70
@ VREL_PE64
Definition value-relation.h:76
relation_kind relation_union(relation_kind r1, relation_kind r2)
Definition value-relation.cc:142
relation_kind pe_min(relation_kind t1, relation_kind t2)
Definition value-relation.h:520
void print_relation(FILE *f, relation_kind rel)
Definition value-relation.cc:42
bool relation_partial_equiv_p(relation_kind r)
Definition value-relation.h:87
relation_kind bits_to_pe(int bits)
Definition value-relation.h:500
bool relation_equiv_p(relation_kind r)
Definition value-relation.h:89
relation_kind relation_swap(relation_kind r)
Definition value-relation.cc:68
relation_kind relation_negate(relation_kind r)
Definition value-relation.cc:55
bool relation_lt_le_gt_ge_p(relation_kind r)
Definition value-relation.h:85