diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2011-04-08 11:53:25 +0000 |
---|---|---|
committer | Alexander Monakov <amonakov@ispras.ru> | 2011-04-08 11:53:25 +0000 |
commit | 4f85a833f4665015dec53c017f0856def21d9c1f (patch) | |
tree | 586c2008cb2ba82b8fde6b577fb903af06659acd /gcc/sel-sched-ir.c | |
parent | 40eea537c5a3d4c18aa1f83793fb6599e6a707cc (diff) |
PR rtl-optimization/48302
* sel-sched-ir.h (sel_add_loop_preheaders): Update prototype.
* sel-sched-ir.c (sel_add_loop_preheaders): Add 'bbs' argument. Use
it to record added preheader blocks.
* sel-sched.c (setup_current_loop_nest): Add 'bbs' argument. Pass it
on to sel_add_loop_preheaders.
(sel_region_init): Move call to setup_current_loop_nest after
sel_init_bbs.
testsuite:
* g++.dg/opt/pr48302.C: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@172176 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sel-sched-ir.c')
-rw-r--r-- | gcc/sel-sched-ir.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 95c1431001e..a6daa5886dc 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -6094,11 +6094,11 @@ sel_find_rgns (void) bbs_in_loop_rgns = NULL; } -/* Adds the preheader blocks from previous loop to current region taking - it from LOOP_PREHEADER_BLOCKS (current_loop_nest). +/* Add the preheader blocks from previous loop to current region taking + it from LOOP_PREHEADER_BLOCKS (current_loop_nest) and record them in *BBS. This function is only used with -fsel-sched-pipelining-outer-loops. */ void -sel_add_loop_preheaders (void) +sel_add_loop_preheaders (bb_vec_t *bbs) { int i; basic_block bb; @@ -6109,6 +6109,7 @@ sel_add_loop_preheaders (void) VEC_iterate (basic_block, preheader_blocks, i, bb); i++) { + VEC_safe_push (basic_block, heap, *bbs, bb); VEC_safe_push (basic_block, heap, last_added_blocks, bb); sel_add_bb (bb); } |