Commit 8faa8118 by Segher Boessenkool Committed by Segher Boessenkool

pa: Fixes for RTL checking


	* config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
	the special USEs with the pattern of the insn, not the insn itself.

From-SVN: r245726
parent 7f811f38
2017-02-24 Segher Boessenkool <segher@kernel.crashing.org>
* config/pa/pa.c (pa_combine_instructions): Do not share RTL. Make
the special USEs with the pattern of the insn, not the insn itself.
2017-02-24 Matthew Fortune <matthew.fortune@imgtec.com> 2017-02-24 Matthew Fortune <matthew.fortune@imgtec.com>
PR target/79473 PR target/79473
......
...@@ -9178,17 +9178,17 @@ pa_combine_instructions (void) ...@@ -9178,17 +9178,17 @@ pa_combine_instructions (void)
|| anchor_attr == PA_COMBINE_TYPE_FMPY)) || anchor_attr == PA_COMBINE_TYPE_FMPY))
{ {
/* Emit the new instruction and delete the old anchor. */ /* Emit the new instruction and delete the old anchor. */
emit_insn_before (gen_rtx_PARALLEL rtvec vtemp = gen_rtvec (2, copy_rtx (PATTERN (anchor)),
(VOIDmode, copy_rtx (PATTERN (floater)));
gen_rtvec (2, PATTERN (anchor), rtx temp = gen_rtx_PARALLEL (VOIDmode, vtemp);
PATTERN (floater))), emit_insn_before (temp, anchor);
anchor);
SET_INSN_DELETED (anchor); SET_INSN_DELETED (anchor);
/* Emit a special USE insn for FLOATER, then delete /* Emit a special USE insn for FLOATER, then delete
the floating insn. */ the floating insn. */
emit_insn_before (gen_rtx_USE (VOIDmode, floater), floater); temp = copy_rtx (PATTERN (floater));
emit_insn_before (gen_rtx_USE (VOIDmode, temp), floater);
delete_insn (floater); delete_insn (floater);
continue; continue;
...@@ -9196,21 +9196,19 @@ pa_combine_instructions (void) ...@@ -9196,21 +9196,19 @@ pa_combine_instructions (void)
else if (floater else if (floater
&& anchor_attr == PA_COMBINE_TYPE_UNCOND_BRANCH) && anchor_attr == PA_COMBINE_TYPE_UNCOND_BRANCH)
{ {
rtx temp;
/* Emit the new_jump instruction and delete the old anchor. */ /* Emit the new_jump instruction and delete the old anchor. */
temp rtvec vtemp = gen_rtvec (2, copy_rtx (PATTERN (anchor)),
= emit_jump_insn_before (gen_rtx_PARALLEL copy_rtx (PATTERN (floater)));
(VOIDmode, rtx temp = gen_rtx_PARALLEL (VOIDmode, vtemp);
gen_rtvec (2, PATTERN (anchor), temp = emit_jump_insn_before (temp, anchor);
PATTERN (floater))),
anchor);
JUMP_LABEL (temp) = JUMP_LABEL (anchor); JUMP_LABEL (temp) = JUMP_LABEL (anchor);
SET_INSN_DELETED (anchor); SET_INSN_DELETED (anchor);
/* Emit a special USE insn for FLOATER, then delete /* Emit a special USE insn for FLOATER, then delete
the floating insn. */ the floating insn. */
emit_insn_before (gen_rtx_USE (VOIDmode, floater), floater); temp = copy_rtx (PATTERN (floater));
emit_insn_before (gen_rtx_USE (VOIDmode, temp), floater);
delete_insn (floater); delete_insn (floater);
continue; continue;
} }
......
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