diff options
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r-- | gcc/cfgloopmanip.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index 50c7267..73134a2 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -1506,9 +1506,10 @@ create_preheader (class loop *loop, int flags) else { /* If we want simple preheaders, also force the preheader to have - just a single successor. */ + just a single successor and a normal edge. */ if ((flags & CP_SIMPLE_PREHEADERS) - && !single_succ_p (single_entry->src)) + && ((single_entry->flags & EDGE_COMPLEX) + || !single_succ_p (single_entry->src))) need_forwarder_block = true; /* If we want fallthru preheaders, also create forwarder block when preheader ends with a jump or has predecessors from loop. */ |