Commit 11a6609c by Andrey Belevantsev

re PR target/66660 ([ia64] Speculative load not checked before use, leading to a…

re PR target/66660 ([ia64] Speculative load not checked before use, leading to a NaT Consumption Vector interruption)

        PR target/66660
        * sel-sched-ir.c (merge_expr): Avoid changing the speculative pattern
        to non-speculative when propagating trap bits.

From-SVN: r234218
parent 81fa2944
......@@ -1871,12 +1871,16 @@ merge_expr (expr_t to, expr_t from, insn_t split_point)
/* Make sure that speculative pattern is propagated into exprs that
have non-speculative one. This will provide us with consistent
speculative bits and speculative patterns inside expr. */
if ((EXPR_SPEC_DONE_DS (from) != 0
&& EXPR_SPEC_DONE_DS (to) == 0)
/* Do likewise for volatile insns, so that we always retain
the may_trap_p bit on the resulting expression. */
|| (VINSN_MAY_TRAP_P (EXPR_VINSN (from))
&& !VINSN_MAY_TRAP_P (EXPR_VINSN (to))))
if (EXPR_SPEC_DONE_DS (to) == 0
&& (EXPR_SPEC_DONE_DS (from) != 0
/* Do likewise for volatile insns, so that we always retain
the may_trap_p bit on the resulting expression. However,
avoid propagating the trapping bit into the instructions
already speculated. This would result in replacing the
speculative pattern with the non-speculative one and breaking
the speculation support. */
|| (!VINSN_MAY_TRAP_P (EXPR_VINSN (to))
&& VINSN_MAY_TRAP_P (EXPR_VINSN (from)))))
change_vinsn_in_expr (to, EXPR_VINSN (from));
merge_expr_data (to, from, split_point);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment