diff options
Diffstat (limited to 'gcc-4.9/gcc/loop-iv.c')
-rw-r--r-- | gcc-4.9/gcc/loop-iv.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc-4.9/gcc/loop-iv.c b/gcc-4.9/gcc/loop-iv.c index 909122064..ef46aefad 100644 --- a/gcc-4.9/gcc/loop-iv.c +++ b/gcc-4.9/gcc/loop-iv.c @@ -3022,8 +3022,12 @@ get_simple_loop_desc (struct loop *loop) /* At least desc->infinite is not always initialized by find_simple_loop_exit. */ desc = ggc_alloc_cleared_niter_desc (); - iv_analysis_loop_init (loop); - find_simple_exit (loop, desc); + if (loop->latch != EXIT_BLOCK_PTR_FOR_FN (cfun)) + { + iv_analysis_loop_init (loop); + find_simple_exit (loop, desc); + } + analyze_loop_insns (loop, desc); loop->simple_loop_desc = desc; if (desc->simple_p && (desc->assumptions || desc->infinite)) |