diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vect-loop-manip.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8298ebb..c1b71bc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-03-07 Richard Biener <rguenther@suse.de> + + * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve + preheaders. + 2017-03-07 Segher Boessenkool <segher@kernel.crashing.org> * config/i386/i386.c (ix86_local_alignment): Align most aggregates diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index 5ee2c38..2f82061 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -569,6 +569,11 @@ slpeel_add_loop_guard (basic_block guard_bb, tree cond, enter_e->count -= new_e->count; enter_e->probability = inverse_probability (probability); set_immediate_dominator (CDI_DOMINATORS, guard_to, dom_bb); + + /* Split enter_e to preserve LOOPS_HAVE_PREHEADERS. */ + if (enter_e->dest->loop_father->header == enter_e->dest) + split_edge (enter_e); + return new_e; } |