@@ -4117,12 +4117,18 @@ compute_transpout (void)
FOR_EACH_BB (bb)
{
- /* Note that flow inserted a nop at the end of basic blocks that
- end in call instructions for reasons other than abnormal
- control flow. */
if (! CALL_P (BB_END (bb)))
continue;
+ if (EDGE_COUNT (bb->succs) == 1
+ && !(EDGE_SUCC (bb, 0)->flags & EDGE_COMPLEX))
+ /* The call insn doesn't involve any special control flow and
+ just happens to be the last in basic block. */
+ {
+ gcc_assert (EDGE_SUCC (bb, 0)->flags & EDGE_FALLTHRU);
+ continue;
+ }
+
for (i = 0; i < expr_hash_table.size; i++)
for (expr = expr_hash_table.table[i]; expr ; expr = expr->next_same_hash)
if (MEM_P (expr->expr))