The scheduler knows that insns with different COND_EXEC conditions don't conflict and can be scheduled independently. Unfortunately, sched-deps.c does not try to keep the conditions valid as it progresses. For example, [B0] A0 = [A1] B0 = something [!B0] [A2] = A0 The first and third insns have opposite conditions, so the scheduler decides they are independent. For most targets this isn't a problem, as the insn in the middle will produce enough dependencies to ensure the right order. However, on C6X, order alone isn't sufficient due to the exposed pipeline: we also need to ensure that the latencies are observed. Bernd