pa: Fixes for RTL checking
authorSegher Boessenkool <segher@kernel.crashing.org>
Fri, 24 Feb 2017 22:41:02 +0000 (23:41 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Fri, 24 Feb 2017 22:41:02 +0000 (23:41 +0100)
* 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

gcc/ChangeLog
gcc/config/pa/pa.c

index a48aebafd8dd272c8d02003eb6fd6ac346ee5628..35b1609da1fc855fff528b0c65bb8d4a4ff168e2 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        PR target/79473
index b0b331175fbc6b008be456aacdf20067eaae1910..3f7b2c71a2f832c411be37306fbebbce6cc811de 100644 (file)
@@ -9178,17 +9178,17 @@ pa_combine_instructions (void)
                  || anchor_attr == PA_COMBINE_TYPE_FMPY))
            {
              /* Emit the new instruction and delete the old anchor.  */
-             emit_insn_before (gen_rtx_PARALLEL
-                               (VOIDmode,
-                                gen_rtvec (2, PATTERN (anchor),
-                                           PATTERN (floater))),
-                               anchor);
+             rtvec vtemp = gen_rtvec (2, copy_rtx (PATTERN (anchor)),
+                                      copy_rtx (PATTERN (floater)));
+             rtx temp = gen_rtx_PARALLEL (VOIDmode, vtemp);
+             emit_insn_before (temp, anchor);
 
              SET_INSN_DELETED (anchor);
 
              /* Emit a special USE insn for FLOATER, then delete
                 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);
 
              continue;
@@ -9196,21 +9196,19 @@ pa_combine_instructions (void)
          else if (floater
                   && anchor_attr == PA_COMBINE_TYPE_UNCOND_BRANCH)
            {
-             rtx temp;
              /* Emit the new_jump instruction and delete the old anchor.  */
-             temp
-               = emit_jump_insn_before (gen_rtx_PARALLEL
-                                        (VOIDmode,
-                                         gen_rtvec (2, PATTERN (anchor),
-                                                    PATTERN (floater))),
-                                        anchor);
+             rtvec vtemp = gen_rtvec (2, copy_rtx (PATTERN (anchor)),
+                                      copy_rtx (PATTERN (floater)));
+             rtx temp = gen_rtx_PARALLEL (VOIDmode, vtemp);
+             temp = emit_jump_insn_before (temp, anchor);
 
              JUMP_LABEL (temp) = JUMP_LABEL (anchor);
              SET_INSN_DELETED (anchor);
 
              /* Emit a special USE insn for FLOATER, then delete
                 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);
              continue;
            }