aboutsummaryrefslogtreecommitdiff
path: root/gcc/sel-sched-ir.c
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2011-04-08 11:53:25 +0000
committerAlexander Monakov <amonakov@ispras.ru>2011-04-08 11:53:25 +0000
commit4f85a833f4665015dec53c017f0856def21d9c1f (patch)
tree586c2008cb2ba82b8fde6b577fb903af06659acd /gcc/sel-sched-ir.c
parent40eea537c5a3d4c18aa1f83793fb6599e6a707cc (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.c7
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);
}