Hello, We speculate an insn in the PR but we do not make a check for it though we should. The thing that broke this was the fix for PR 45472. In that pr, we have moved a volatile insn too far up because we failed to merge the bits describing its volatility when we have processed a control flow split. The code to propagate the insn pattern with the insn merging was added when the volatility of the two insns from the both split branches differ. However, the volatility of the speculated insn and its original differ: the original insn may trap while the speculated version may not. Thus, we replace a speculative pattern with the original one per the PR 45472 fix for no reason. The patch for this problem just limits the original fix for PR 45472 to apply for non-speculative insns only. There is no test as it is not so easy to construct one -- we could count the number of speculation check in the resulting assembly but there is no way to force speculation to happen. Ok for trunk? gcc/ 2016-03-14 Andrey Belevantsev PR target/66660 * sel-sched-ir.c (merge_expr): Do not propagate trap bits into speculative insns. Best, Andrey