aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ira.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ira.c b/gcc/ira.c
index 725b0ff..f0bdbc8 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -5433,12 +5433,22 @@ ira (FILE *f)
for (int i = 0; i < recog_data.n_operands; i++)
if (recog_data.operand_type[i] != OP_IN)
{
+ bool skip_p = false;
+ FOR_EACH_EDGE (e, ei, bb->succs)
+ if (EDGE_CRITICAL_P (e)
+ && e->dest != EXIT_BLOCK_PTR_FOR_FN (cfun)
+ && (e->flags & EDGE_ABNORMAL))
+ {
+ skip_p = true;
+ break;
+ }
+ if (skip_p)
+ break;
output_jump_reload_p = true;
FOR_EACH_EDGE (e, ei, bb->succs)
if (EDGE_CRITICAL_P (e)
&& e->dest != EXIT_BLOCK_PTR_FOR_FN (cfun))
{
- ira_assert (!(e->flags & EDGE_ABNORMAL));
start_sequence ();
/* We need to put some no-op insn here. We can
not put a note as commit_edges insertion will