tree-ssa-sccvn.h (copy_reference_ops_from_ref, [...]): Remove.
2014-09-01 Richard Biener <rguenther@suse.de> * tree-ssa-sccvn.h (copy_reference_ops_from_ref, copy_reference_ops_from_call, vn_nary_op_compute_hash, vn_reference_compute_hash, vn_reference_insert): Remove. (vn_reference_lookup_call): New function. * tree-ssa-sccvn.c (vn_reference_compute_hash, copy_reference_ops_from_ref, copy_reference_ops_from_call, vn_reference_insert, vn_nary_op_compute_hash): Make static. (create_reference_ops_from_call): Remove. (vn_reference_lookup_3): Properly update shared_lookup_references. (vn_reference_lookup_pieces): Assert that we updated shared_lookup_references properly. (vn_reference_lookup): Likewise. (vn_reference_lookup_call): New function. (visit_reference_op_call): Use it. Avoid re-building the reference ops. (visit_reference_op_load): Remove redundant lookup. (visit_reference_op_store): Perform special tail-merging work only when possibly doing tail-merging. (visit_use): Likewise. * tree-ssa-pre.c (compute_avail): Use vn_reference_lookup_call. From-SVN: r214787
This commit is contained in:
parent
a0107bd001
commit
26f3a4e144
|
@ -1,3 +1,26 @@
|
||||||
|
2014-09-01 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
* tree-ssa-sccvn.h (copy_reference_ops_from_ref,
|
||||||
|
copy_reference_ops_from_call, vn_nary_op_compute_hash,
|
||||||
|
vn_reference_compute_hash, vn_reference_insert): Remove.
|
||||||
|
(vn_reference_lookup_call): New function.
|
||||||
|
* tree-ssa-sccvn.c (vn_reference_compute_hash,
|
||||||
|
copy_reference_ops_from_ref, copy_reference_ops_from_call,
|
||||||
|
vn_reference_insert, vn_nary_op_compute_hash): Make static.
|
||||||
|
(create_reference_ops_from_call): Remove.
|
||||||
|
(vn_reference_lookup_3): Properly update shared_lookup_references.
|
||||||
|
(vn_reference_lookup_pieces): Assert that we updated
|
||||||
|
shared_lookup_references properly.
|
||||||
|
(vn_reference_lookup): Likewise.
|
||||||
|
(vn_reference_lookup_call): New function.
|
||||||
|
(visit_reference_op_call): Use it. Avoid re-building the
|
||||||
|
reference ops.
|
||||||
|
(visit_reference_op_load): Remove redundant lookup.
|
||||||
|
(visit_reference_op_store): Perform special tail-merging work
|
||||||
|
only when possibly doing tail-merging.
|
||||||
|
(visit_use): Likewise.
|
||||||
|
* tree-ssa-pre.c (compute_avail): Use vn_reference_lookup_call.
|
||||||
|
|
||||||
2014-09-01 Jakub Jelinek <jakub@redhat.com>
|
2014-09-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR target/62025
|
PR target/62025
|
||||||
|
|
|
@ -3767,17 +3767,14 @@ compute_avail (void)
|
||||||
case GIMPLE_CALL:
|
case GIMPLE_CALL:
|
||||||
{
|
{
|
||||||
vn_reference_t ref;
|
vn_reference_t ref;
|
||||||
|
vn_reference_s ref1;
|
||||||
pre_expr result = NULL;
|
pre_expr result = NULL;
|
||||||
auto_vec<vn_reference_op_s> ops;
|
|
||||||
|
|
||||||
/* We can value number only calls to real functions. */
|
/* We can value number only calls to real functions. */
|
||||||
if (gimple_call_internal_p (stmt))
|
if (gimple_call_internal_p (stmt))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
copy_reference_ops_from_call (stmt, &ops);
|
vn_reference_lookup_call (stmt, &ref, &ref1);
|
||||||
vn_reference_lookup_pieces (gimple_vuse (stmt), 0,
|
|
||||||
gimple_expr_type (stmt),
|
|
||||||
ops, &ref, VN_NOWALK);
|
|
||||||
if (!ref)
|
if (!ref)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
@ -608,7 +608,7 @@ vn_reference_op_compute_hash (const vn_reference_op_t vro1, inchash::hash &hstat
|
||||||
|
|
||||||
/* Compute a hash for the reference operation VR1 and return it. */
|
/* Compute a hash for the reference operation VR1 and return it. */
|
||||||
|
|
||||||
hashval_t
|
static hashval_t
|
||||||
vn_reference_compute_hash (const vn_reference_t vr1)
|
vn_reference_compute_hash (const vn_reference_t vr1)
|
||||||
{
|
{
|
||||||
inchash::hash hstate;
|
inchash::hash hstate;
|
||||||
|
@ -756,7 +756,7 @@ vn_reference_eq (const_vn_reference_t const vr1, const_vn_reference_t const vr2)
|
||||||
/* Copy the operations present in load/store REF into RESULT, a vector of
|
/* Copy the operations present in load/store REF into RESULT, a vector of
|
||||||
vn_reference_op_s's. */
|
vn_reference_op_s's. */
|
||||||
|
|
||||||
void
|
static void
|
||||||
copy_reference_ops_from_ref (tree ref, vec<vn_reference_op_s> *result)
|
copy_reference_ops_from_ref (tree ref, vec<vn_reference_op_s> *result)
|
||||||
{
|
{
|
||||||
if (TREE_CODE (ref) == TARGET_MEM_REF)
|
if (TREE_CODE (ref) == TARGET_MEM_REF)
|
||||||
|
@ -1118,7 +1118,7 @@ ao_ref_init_from_vn_reference (ao_ref *ref,
|
||||||
/* Copy the operations present in load/store/call REF into RESULT, a vector of
|
/* Copy the operations present in load/store/call REF into RESULT, a vector of
|
||||||
vn_reference_op_s's. */
|
vn_reference_op_s's. */
|
||||||
|
|
||||||
void
|
static void
|
||||||
copy_reference_ops_from_call (gimple call,
|
copy_reference_ops_from_call (gimple call,
|
||||||
vec<vn_reference_op_s> *result)
|
vec<vn_reference_op_s> *result)
|
||||||
{
|
{
|
||||||
|
@ -1160,18 +1160,6 @@ copy_reference_ops_from_call (gimple call,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a vector of vn_reference_op_s structures from CALL, a
|
|
||||||
call statement. The vector is not shared. */
|
|
||||||
|
|
||||||
static vec<vn_reference_op_s>
|
|
||||||
create_reference_ops_from_call (gimple call)
|
|
||||||
{
|
|
||||||
vec<vn_reference_op_s> result = vNULL;
|
|
||||||
|
|
||||||
copy_reference_ops_from_call (call, &result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fold *& at position *I_P in a vn_reference_op_s vector *OPS. Updates
|
/* Fold *& at position *I_P in a vn_reference_op_s vector *OPS. Updates
|
||||||
*I_P to point to the last element of the replacement. */
|
*I_P to point to the last element of the replacement. */
|
||||||
void
|
void
|
||||||
|
@ -1864,19 +1852,20 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_,
|
||||||
/* Now re-write REF to be based on the rhs of the assignment. */
|
/* Now re-write REF to be based on the rhs of the assignment. */
|
||||||
copy_reference_ops_from_ref (gimple_assign_rhs1 (def_stmt), &rhs);
|
copy_reference_ops_from_ref (gimple_assign_rhs1 (def_stmt), &rhs);
|
||||||
/* We need to pre-pend vr->operands[0..i] to rhs. */
|
/* We need to pre-pend vr->operands[0..i] to rhs. */
|
||||||
|
vec<vn_reference_op_s> old = vr->operands;
|
||||||
if (i + 1 + rhs.length () > vr->operands.length ())
|
if (i + 1 + rhs.length () > vr->operands.length ())
|
||||||
{
|
{
|
||||||
vec<vn_reference_op_s> old = vr->operands;
|
|
||||||
vr->operands.safe_grow (i + 1 + rhs.length ());
|
vr->operands.safe_grow (i + 1 + rhs.length ());
|
||||||
if (old == shared_lookup_references
|
if (old == shared_lookup_references)
|
||||||
&& vr->operands != old)
|
shared_lookup_references = vr->operands;
|
||||||
shared_lookup_references = vNULL;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vr->operands.truncate (i + 1 + rhs.length ());
|
vr->operands.truncate (i + 1 + rhs.length ());
|
||||||
FOR_EACH_VEC_ELT (rhs, j, vro)
|
FOR_EACH_VEC_ELT (rhs, j, vro)
|
||||||
vr->operands[i + 1 + j] = *vro;
|
vr->operands[i + 1 + j] = *vro;
|
||||||
vr->operands = valueize_refs (vr->operands);
|
vr->operands = valueize_refs (vr->operands);
|
||||||
|
if (old == shared_lookup_references)
|
||||||
|
shared_lookup_references = vr->operands;
|
||||||
vr->hashcode = vn_reference_compute_hash (vr);
|
vr->hashcode = vn_reference_compute_hash (vr);
|
||||||
|
|
||||||
/* Adjust *ref from the new operands. */
|
/* Adjust *ref from the new operands. */
|
||||||
|
@ -2001,7 +1990,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_,
|
||||||
vr->operands.safe_grow_cleared (2);
|
vr->operands.safe_grow_cleared (2);
|
||||||
if (old == shared_lookup_references
|
if (old == shared_lookup_references
|
||||||
&& vr->operands != old)
|
&& vr->operands != old)
|
||||||
shared_lookup_references.create (0);
|
shared_lookup_references = vr->operands;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vr->operands.truncate (2);
|
vr->operands.truncate (2);
|
||||||
|
@ -2084,8 +2073,7 @@ vn_reference_lookup_pieces (tree vuse, alias_set_type set, tree type,
|
||||||
(vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
|
(vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
|
||||||
vn_reference_lookup_2,
|
vn_reference_lookup_2,
|
||||||
vn_reference_lookup_3, &vr1);
|
vn_reference_lookup_3, &vr1);
|
||||||
if (vr1.operands != operands)
|
gcc_checking_assert (vr1.operands == shared_lookup_references);
|
||||||
vr1.operands.release ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*vnresult)
|
if (*vnresult)
|
||||||
|
@ -2137,8 +2125,7 @@ vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind,
|
||||||
(vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
|
(vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
|
||||||
vn_reference_lookup_2,
|
vn_reference_lookup_2,
|
||||||
vn_reference_lookup_3, &vr1);
|
vn_reference_lookup_3, &vr1);
|
||||||
if (vr1.operands != operands)
|
gcc_checking_assert (vr1.operands == shared_lookup_references);
|
||||||
vr1.operands.release ();
|
|
||||||
if (wvnresult)
|
if (wvnresult)
|
||||||
{
|
{
|
||||||
if (vnresult)
|
if (vnresult)
|
||||||
|
@ -2152,11 +2139,27 @@ vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind,
|
||||||
return vn_reference_lookup_1 (&vr1, vnresult);
|
return vn_reference_lookup_1 (&vr1, vnresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Lookup CALL in the current hash table and return the entry in
|
||||||
|
*VNRESULT if found. Populates *VR for the hashtable lookup. */
|
||||||
|
|
||||||
|
void
|
||||||
|
vn_reference_lookup_call (gimple call, vn_reference_t *vnresult,
|
||||||
|
vn_reference_t vr)
|
||||||
|
{
|
||||||
|
tree vuse = gimple_vuse (call);
|
||||||
|
|
||||||
|
vr->vuse = vuse ? SSA_VAL (vuse) : NULL_TREE;
|
||||||
|
vr->operands = valueize_shared_reference_ops_from_call (call);
|
||||||
|
vr->type = gimple_expr_type (call);
|
||||||
|
vr->set = 0;
|
||||||
|
vr->hashcode = vn_reference_compute_hash (vr);
|
||||||
|
vn_reference_lookup_1 (vr, vnresult);
|
||||||
|
}
|
||||||
|
|
||||||
/* Insert OP into the current hash table with a value number of
|
/* Insert OP into the current hash table with a value number of
|
||||||
RESULT, and return the resulting reference structure we created. */
|
RESULT, and return the resulting reference structure we created. */
|
||||||
|
|
||||||
vn_reference_t
|
static vn_reference_t
|
||||||
vn_reference_insert (tree op, tree result, tree vuse, tree vdef)
|
vn_reference_insert (tree op, tree result, tree vuse, tree vdef)
|
||||||
{
|
{
|
||||||
vn_reference_s **slot;
|
vn_reference_s **slot;
|
||||||
|
@ -2235,7 +2238,7 @@ vn_reference_insert_pieces (tree vuse, alias_set_type set, tree type,
|
||||||
|
|
||||||
/* Compute and return the hash value for nary operation VBO1. */
|
/* Compute and return the hash value for nary operation VBO1. */
|
||||||
|
|
||||||
hashval_t
|
static hashval_t
|
||||||
vn_nary_op_compute_hash (const vn_nary_op_t vno1)
|
vn_nary_op_compute_hash (const vn_nary_op_t vno1)
|
||||||
{
|
{
|
||||||
inchash::hash hstate;
|
inchash::hash hstate;
|
||||||
|
@ -2845,20 +2848,13 @@ visit_reference_op_call (tree lhs, gimple stmt)
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
struct vn_reference_s vr1;
|
struct vn_reference_s vr1;
|
||||||
vn_reference_t vnresult = NULL;
|
vn_reference_t vnresult = NULL;
|
||||||
tree vuse = gimple_vuse (stmt);
|
|
||||||
tree vdef = gimple_vdef (stmt);
|
tree vdef = gimple_vdef (stmt);
|
||||||
|
|
||||||
/* Non-ssa lhs is handled in copy_reference_ops_from_call. */
|
/* Non-ssa lhs is handled in copy_reference_ops_from_call. */
|
||||||
if (lhs && TREE_CODE (lhs) != SSA_NAME)
|
if (lhs && TREE_CODE (lhs) != SSA_NAME)
|
||||||
lhs = NULL_TREE;
|
lhs = NULL_TREE;
|
||||||
|
|
||||||
vr1.vuse = vuse ? SSA_VAL (vuse) : NULL_TREE;
|
vn_reference_lookup_call (stmt, &vnresult, &vr1);
|
||||||
vr1.operands = valueize_shared_reference_ops_from_call (stmt);
|
|
||||||
vr1.type = gimple_expr_type (stmt);
|
|
||||||
vr1.set = 0;
|
|
||||||
vr1.hashcode = vn_reference_compute_hash (&vr1);
|
|
||||||
vn_reference_lookup_1 (&vr1, &vnresult);
|
|
||||||
|
|
||||||
if (vnresult)
|
if (vnresult)
|
||||||
{
|
{
|
||||||
if (vnresult->result_vdef && vdef)
|
if (vnresult->result_vdef && vdef)
|
||||||
|
@ -2877,15 +2873,18 @@ visit_reference_op_call (tree lhs, gimple stmt)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vn_reference_s **slot;
|
|
||||||
vn_reference_t vr2;
|
vn_reference_t vr2;
|
||||||
|
vn_reference_s **slot;
|
||||||
if (vdef)
|
if (vdef)
|
||||||
changed |= set_ssa_val_to (vdef, vdef);
|
changed |= set_ssa_val_to (vdef, vdef);
|
||||||
if (lhs)
|
if (lhs)
|
||||||
changed |= set_ssa_val_to (lhs, lhs);
|
changed |= set_ssa_val_to (lhs, lhs);
|
||||||
vr2 = (vn_reference_t) pool_alloc (current_info->references_pool);
|
vr2 = (vn_reference_t) pool_alloc (current_info->references_pool);
|
||||||
vr2->vuse = vr1.vuse;
|
vr2->vuse = vr1.vuse;
|
||||||
vr2->operands = valueize_refs (create_reference_ops_from_call (stmt));
|
/* As we are not walking the virtual operand chain we know the
|
||||||
|
shared_lookup_references are still original so we can re-use
|
||||||
|
them here. */
|
||||||
|
vr2->operands = vr1.operands.copy ();
|
||||||
vr2->type = vr1.type;
|
vr2->type = vr1.type;
|
||||||
vr2->set = vr1.set;
|
vr2->set = vr1.set;
|
||||||
vr2->hashcode = vr1.hashcode;
|
vr2->hashcode = vr1.hashcode;
|
||||||
|
@ -2893,8 +2892,7 @@ visit_reference_op_call (tree lhs, gimple stmt)
|
||||||
vr2->result_vdef = vdef;
|
vr2->result_vdef = vdef;
|
||||||
slot = current_info->references->find_slot_with_hash (vr2, vr2->hashcode,
|
slot = current_info->references->find_slot_with_hash (vr2, vr2->hashcode,
|
||||||
INSERT);
|
INSERT);
|
||||||
if (*slot)
|
gcc_assert (!*slot);
|
||||||
free_reference (*slot);
|
|
||||||
*slot = vr2;
|
*slot = vr2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2917,12 +2915,6 @@ visit_reference_op_load (tree lhs, tree op, gimple stmt)
|
||||||
default_vn_walk_kind, NULL);
|
default_vn_walk_kind, NULL);
|
||||||
last_vuse_ptr = NULL;
|
last_vuse_ptr = NULL;
|
||||||
|
|
||||||
/* If we have a VCE, try looking up its operand as it might be stored in
|
|
||||||
a different type. */
|
|
||||||
if (!result && TREE_CODE (op) == VIEW_CONVERT_EXPR)
|
|
||||||
result = vn_reference_lookup (TREE_OPERAND (op, 0), gimple_vuse (stmt),
|
|
||||||
default_vn_walk_kind, NULL);
|
|
||||||
|
|
||||||
/* We handle type-punning through unions by value-numbering based
|
/* We handle type-punning through unions by value-numbering based
|
||||||
on offset and size of the access. Be prepared to handle a
|
on offset and size of the access. Be prepared to handle a
|
||||||
type-mismatch here via creating a VIEW_CONVERT_EXPR. */
|
type-mismatch here via creating a VIEW_CONVERT_EXPR. */
|
||||||
|
@ -3047,7 +3039,10 @@ visit_reference_op_store (tree lhs, tree op, gimple stmt)
|
||||||
resultsame = expressions_equal_p (result, op);
|
resultsame = expressions_equal_p (result, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result || !resultsame)
|
if ((!result || !resultsame)
|
||||||
|
/* Only perform the following when being called from PRE
|
||||||
|
which embeds tail merging. */
|
||||||
|
&& default_vn_walk_kind == VN_WALK)
|
||||||
{
|
{
|
||||||
assign = build2 (MODIFY_EXPR, TREE_TYPE (lhs), lhs, op);
|
assign = build2 (MODIFY_EXPR, TREE_TYPE (lhs), lhs, op);
|
||||||
vn_reference_lookup (assign, vuse, VN_NOWALK, &vnresult);
|
vn_reference_lookup (assign, vuse, VN_NOWALK, &vnresult);
|
||||||
|
@ -3081,8 +3076,13 @@ visit_reference_op_store (tree lhs, tree op, gimple stmt)
|
||||||
|| is_gimple_reg (op))
|
|| is_gimple_reg (op))
|
||||||
vn_reference_insert (lhs, op, vdef, NULL);
|
vn_reference_insert (lhs, op, vdef, NULL);
|
||||||
|
|
||||||
assign = build2 (MODIFY_EXPR, TREE_TYPE (lhs), lhs, op);
|
/* Only perform the following when being called from PRE
|
||||||
vn_reference_insert (assign, lhs, vuse, vdef);
|
which embeds tail merging. */
|
||||||
|
if (default_vn_walk_kind == VN_WALK)
|
||||||
|
{
|
||||||
|
assign = build2 (MODIFY_EXPR, TREE_TYPE (lhs), lhs, op);
|
||||||
|
vn_reference_insert (assign, lhs, vuse, vdef);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3663,7 +3663,10 @@ visit_use (tree use)
|
||||||
not alias with anything else. In which case the
|
not alias with anything else. In which case the
|
||||||
information that the values are distinct are encoded
|
information that the values are distinct are encoded
|
||||||
in the IL. */
|
in the IL. */
|
||||||
&& !(gimple_call_return_flags (stmt) & ERF_NOALIAS))))
|
&& !(gimple_call_return_flags (stmt) & ERF_NOALIAS)
|
||||||
|
/* Only perform the following when being called from PRE
|
||||||
|
which embeds tail merging. */
|
||||||
|
&& default_vn_walk_kind == VN_WALK)))
|
||||||
changed = visit_reference_op_call (lhs, stmt);
|
changed = visit_reference_op_call (lhs, stmt);
|
||||||
else
|
else
|
||||||
changed = defs_to_varying (stmt);
|
changed = defs_to_varying (stmt);
|
||||||
|
|
|
@ -204,24 +204,20 @@ vn_nary_op_t vn_nary_op_insert_pieces (unsigned int, enum tree_code,
|
||||||
tree, tree *, tree, unsigned int);
|
tree, tree *, tree, unsigned int);
|
||||||
void vn_reference_fold_indirect (vec<vn_reference_op_s> *,
|
void vn_reference_fold_indirect (vec<vn_reference_op_s> *,
|
||||||
unsigned int *);
|
unsigned int *);
|
||||||
void copy_reference_ops_from_ref (tree, vec<vn_reference_op_s> *);
|
|
||||||
void copy_reference_ops_from_call (gimple, vec<vn_reference_op_s> *);
|
|
||||||
bool ao_ref_init_from_vn_reference (ao_ref *, alias_set_type, tree,
|
bool ao_ref_init_from_vn_reference (ao_ref *, alias_set_type, tree,
|
||||||
vec<vn_reference_op_s> );
|
vec<vn_reference_op_s> );
|
||||||
tree vn_reference_lookup_pieces (tree, alias_set_type, tree,
|
tree vn_reference_lookup_pieces (tree, alias_set_type, tree,
|
||||||
vec<vn_reference_op_s> ,
|
vec<vn_reference_op_s> ,
|
||||||
vn_reference_t *, vn_lookup_kind);
|
vn_reference_t *, vn_lookup_kind);
|
||||||
tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *);
|
tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *);
|
||||||
vn_reference_t vn_reference_insert (tree, tree, tree, tree);
|
void vn_reference_lookup_call (gimple, vn_reference_t *, vn_reference_t);
|
||||||
vn_reference_t vn_reference_insert_pieces (tree, alias_set_type, tree,
|
vn_reference_t vn_reference_insert_pieces (tree, alias_set_type, tree,
|
||||||
vec<vn_reference_op_s> ,
|
vec<vn_reference_op_s> ,
|
||||||
tree, unsigned int);
|
tree, unsigned int);
|
||||||
|
|
||||||
hashval_t vn_nary_op_compute_hash (const vn_nary_op_t);
|
|
||||||
bool vn_nary_op_eq (const_vn_nary_op_t const vno1,
|
bool vn_nary_op_eq (const_vn_nary_op_t const vno1,
|
||||||
const_vn_nary_op_t const vno2);
|
const_vn_nary_op_t const vno2);
|
||||||
bool vn_nary_may_trap (vn_nary_op_t);
|
bool vn_nary_may_trap (vn_nary_op_t);
|
||||||
hashval_t vn_reference_compute_hash (const vn_reference_t);
|
|
||||||
bool vn_reference_eq (const_vn_reference_t const, const_vn_reference_t const);
|
bool vn_reference_eq (const_vn_reference_t const, const_vn_reference_t const);
|
||||||
unsigned int get_max_value_id (void);
|
unsigned int get_max_value_id (void);
|
||||||
unsigned int get_next_value_id (void);
|
unsigned int get_next_value_id (void);
|
||||||
|
|
Loading…
Reference in New Issue