re PR bootstrap/36864 (Yet another bootstrap failure on i686-apple-darwin9)
2008-07-19 Richard Guenther <rguenther@suse.de> PR bootstrap/36864 * tree-ssa-sccvn.h (get_constant_value_id): Declare. * tree-ssa-sccvn.c (get_constant_value_id): New function. * tree-ssa-pre.c (get_expr_value_id): For newly created constant value-ids make sure to add the expression to its expression-set. From-SVN: r137991
This commit is contained in:
parent
52e07aa164
commit
bb9e419935
@ -1,3 +1,12 @@
|
||||
2008-07-19 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR bootstrap/36864
|
||||
* tree-ssa-sccvn.h (get_constant_value_id): Declare.
|
||||
* tree-ssa-sccvn.c (get_constant_value_id): New function.
|
||||
* tree-ssa-pre.c (get_expr_value_id): For newly created
|
||||
constant value-ids make sure to add the expression to its
|
||||
expression-set.
|
||||
|
||||
2008-07-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/36877
|
||||
|
@ -599,7 +599,16 @@ get_expr_value_id (pre_expr expr)
|
||||
switch (expr->kind)
|
||||
{
|
||||
case CONSTANT:
|
||||
return get_or_alloc_constant_value_id (PRE_EXPR_CONSTANT (expr));
|
||||
{
|
||||
unsigned int id;
|
||||
id = get_constant_value_id (PRE_EXPR_CONSTANT (expr));
|
||||
if (id == 0)
|
||||
{
|
||||
id = get_or_alloc_constant_value_id (PRE_EXPR_CONSTANT (expr));
|
||||
add_to_value (id, expr);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
case NAME:
|
||||
return VN_INFO (PRE_EXPR_NAME (expr))->value_id;
|
||||
case NARY:
|
||||
|
@ -248,6 +248,24 @@ vn_constant_hash (const void *p1)
|
||||
return vc1->hashcode;
|
||||
}
|
||||
|
||||
/* Lookup a value id for CONSTANT and return it. If it does not
|
||||
exist returns 0. */
|
||||
|
||||
unsigned int
|
||||
get_constant_value_id (tree constant)
|
||||
{
|
||||
void **slot;
|
||||
struct vn_constant_s vc;
|
||||
|
||||
vc.hashcode = iterative_hash_expr (constant, 0);
|
||||
vc.constant = constant;
|
||||
slot = htab_find_slot_with_hash (constant_to_value_id, &vc,
|
||||
vc.hashcode, NO_INSERT);
|
||||
if (slot)
|
||||
return ((vn_constant_t)*slot)->value_id;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Lookup a value id for CONSTANT, and if it does not exist, create a
|
||||
new one and return it. If it does exist, return it. */
|
||||
|
||||
|
@ -163,6 +163,7 @@ hashval_t vn_reference_compute_hash (const vn_reference_t);
|
||||
int vn_reference_eq (const void *, const void *);
|
||||
unsigned int get_max_value_id (void);
|
||||
unsigned int get_next_value_id (void);
|
||||
unsigned int get_constant_value_id (tree);
|
||||
unsigned int get_or_alloc_constant_value_id (tree);
|
||||
bool value_id_constant_p (unsigned int);
|
||||
VEC (tree, gc) *shared_vuses_from_stmt (tree);
|
||||
|
Loading…
x
Reference in New Issue
Block a user