tree-phinodes.c (make_phi_node, [...]): Don't zero the whole PHI node.
* tree-phinodes.c (make_phi_node, resize_phi_node): Don't zero the whole PHI node. * tree.h (tree_phi_node): Tell the garbage collector to chase num_args arguments. From-SVN: r89844
This commit is contained in:
parent
fe94b6534a
commit
c24a4dcffa
3 changed files with 15 additions and 11 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-10-29 Kazu Hirata <kazu@cs.umass.edu>
|
||||||
|
|
||||||
|
* tree-phinodes.c (make_phi_node, resize_phi_node): Don't zero
|
||||||
|
the whole PHI node.
|
||||||
|
* tree.h (tree_phi_node): Tell the garbage collector to chase
|
||||||
|
num_args arguments.
|
||||||
|
|
||||||
2004-10-29 Richard Earnshaw <rearnsha@arm.com>
|
2004-10-29 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
* opts.c (decode_options): Lower the crossjump threshold for -Os.
|
* opts.c (decode_options): Lower the crossjump threshold for -Os.
|
||||||
|
|
|
@ -199,7 +199,12 @@ make_phi_node (tree var, int len)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
memset (phi, 0, size);
|
/* We do not have to clear a part of the PHI node that stores PHI
|
||||||
|
arguments, which is safe because we tell the garbage collector to
|
||||||
|
scan up to num_args elements in the array of PHI arguments. In
|
||||||
|
other words, the garbage collector will not follow garbage
|
||||||
|
pointers in the unused portion of the array. */
|
||||||
|
memset (phi, 0, sizeof (struct tree_phi_node) - sizeof (struct phi_arg_d));
|
||||||
TREE_SET_CODE (phi, PHI_NODE);
|
TREE_SET_CODE (phi, PHI_NODE);
|
||||||
PHI_ARG_CAPACITY (phi) = len;
|
PHI_ARG_CAPACITY (phi) = len;
|
||||||
TREE_TYPE (phi) = TREE_TYPE (var);
|
TREE_TYPE (phi) = TREE_TYPE (var);
|
||||||
|
@ -234,7 +239,7 @@ resize_phi_node (tree *phi, int len)
|
||||||
{
|
{
|
||||||
int size, old_size;
|
int size, old_size;
|
||||||
tree new_phi;
|
tree new_phi;
|
||||||
int i, old_len, bucket = NUM_BUCKETS - 2;
|
int bucket = NUM_BUCKETS - 2;
|
||||||
|
|
||||||
gcc_assert (len >= PHI_ARG_CAPACITY (*phi));
|
gcc_assert (len >= PHI_ARG_CAPACITY (*phi));
|
||||||
|
|
||||||
|
@ -271,16 +276,8 @@ resize_phi_node (tree *phi, int len)
|
||||||
|
|
||||||
memcpy (new_phi, *phi, old_size);
|
memcpy (new_phi, *phi, old_size);
|
||||||
|
|
||||||
old_len = PHI_ARG_CAPACITY (new_phi);
|
|
||||||
PHI_ARG_CAPACITY (new_phi) = len;
|
PHI_ARG_CAPACITY (new_phi) = len;
|
||||||
|
|
||||||
for (i = old_len; i < len; i++)
|
|
||||||
{
|
|
||||||
SET_PHI_ARG_DEF (new_phi, i, NULL_TREE);
|
|
||||||
PHI_ARG_EDGE (new_phi, i) = NULL;
|
|
||||||
PHI_ARG_NONZERO (new_phi, i) = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
*phi = new_phi;
|
*phi = new_phi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1405,7 +1405,7 @@ struct tree_phi_node GTY(())
|
||||||
/* Dataflow information. */
|
/* Dataflow information. */
|
||||||
struct dataflow_d *df;
|
struct dataflow_d *df;
|
||||||
|
|
||||||
struct phi_arg_d GTY ((length ("((tree)&%h)->phi.capacity"))) a[1];
|
struct phi_arg_d GTY ((length ("((tree)&%h)->phi.num_args"))) a[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue