aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop-iv.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-01-17 10:47:59 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-01-17 10:47:59 +0000
commit7be64667c127a0cdb9dc7e4f02dcd7720589919d (patch)
tree87501164890f5046ea55327b6647afe5ac2c9e28 /gcc/loop-iv.c
parentcc3a9f0d477d52982b504c954da0d87d48e6c1f7 (diff)
downloadgcc-7be64667c127a0cdb9dc7e4f02dcd7720589919d.zip
gcc-7be64667c127a0cdb9dc7e4f02dcd7720589919d.tar.gz
gcc-7be64667c127a0cdb9dc7e4f02dcd7720589919d.tar.bz2
re PR rtl-optimization/38518 (Excessive compile time with -O3)
2014-01-17 Richard Biener <rguenther@suse.de> PR rtl-optimization/38518 * df.h (df_analyze_loop): Declare. * df-core.c: Include cfgloop.h. (df_analyze_1): Split out main part of df_analyze. (df_analyze): Adjust. (loop_inverted_post_order_compute): New function. (loop_post_order_compute): Likewise. (df_analyze_loop): New function avoiding whole-function postorder computes. * loop-invariant.c (find_defs): Use df_analyze_loop. (find_invariants): Adjust. * loop-iv.c (iv_analysis_loop_init): Use df_analyze_loop. From-SVN: r206702
Diffstat (limited to 'gcc/loop-iv.c')
-rw-r--r--gcc/loop-iv.c14
1 files changed, 1 insertions, 13 deletions
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c
index d03cc40..9091220 100644
--- a/gcc/loop-iv.c
+++ b/gcc/loop-iv.c
@@ -278,10 +278,6 @@ clear_iv_info (void)
void
iv_analysis_loop_init (struct loop *loop)
{
- basic_block *body = get_loop_body_in_dom_order (loop), bb;
- bitmap blocks = BITMAP_ALLOC (NULL);
- unsigned i;
-
current_loop = loop;
/* Clear the information from the analysis of the previous loop. */
@@ -294,11 +290,6 @@ iv_analysis_loop_init (struct loop *loop)
else
clear_iv_info ();
- for (i = 0; i < loop->num_nodes; i++)
- {
- bb = body[i];
- bitmap_set_bit (blocks, bb->index);
- }
/* Get rid of the ud chains before processing the rescans. Then add
the problem back. */
df_remove_problem (df_chain);
@@ -306,14 +297,11 @@ iv_analysis_loop_init (struct loop *loop)
df_set_flags (DF_RD_PRUNE_DEAD_DEFS);
df_chain_add_problem (DF_UD_CHAIN);
df_note_add_problem ();
- df_set_blocks (blocks);
- df_analyze ();
+ df_analyze_loop (loop);
if (dump_file)
df_dump_region (dump_file);
check_iv_ref_table_size ();
- BITMAP_FREE (blocks);
- free (body);
}
/* Finds the definition of REG that dominates loop latch and stores