summaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-03 06:49:31 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-07-03 06:49:31 +0000
commitbafa5ac77d4fc0eadf34d9de4240d840156bd8f7 (patch)
tree130e69cd01a373660baf29190aa73a897687265e /gcc/gcse.c
parentfd037eda58e7505fc78b2c52e823a5055df6f0bc (diff)
downloadgcc-bafa5ac77d4fc0eadf34d9de4240d840156bd8f7.tar.gz
* gcse.c (compute_pre_data): Compute ae_kill using other local
properties instead of calling compute_ae_kill. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34839 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index cc133177caa..0486dc946a4 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -4118,10 +4118,24 @@ free_pre_mem ()
static void
compute_pre_data ()
{
+ int i;
+
compute_local_properties (transp, comp, antloc, 0);
compute_transpout ();
sbitmap_vector_zero (ae_kill, n_basic_blocks);
- compute_ae_kill (comp, ae_kill);
+
+ /* Compute ae_kill for each basic block using:
+
+ ~(TRANSP | COMP)
+
+ This is significantly after than compute_ae_kill. */
+
+ for (i = 0; i < n_basic_blocks; i++)
+ {
+ sbitmap_a_or_b (ae_kill[i], transp[i], comp[i]);
+ sbitmap_not (ae_kill[i], ae_kill[i]);
+ }
+
edge_list = pre_edge_lcm (gcse_file, n_exprs, transp, comp, antloc,
ae_kill, &pre_insert_map, &pre_delete_map);
}