aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/loop-iv.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/loop-iv.c')
-rw-r--r--gcc-4.9/gcc/loop-iv.c8
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))