The following patch fixes

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64671

The patch was successfully bootstrapped on x86-64.I don't expect that the patch can result in any trouble.

  Committed as rev. 219857.

2015-01-19  Vladimir Makarov  <vmaka...@redhat.com>

        PR rtl-optimization/64671
        * lra-remat.c (operand_to_remat): Don't consider jump and call
        insns.

Index: lra-remat.c
===================================================================
--- lra-remat.c (revision 219705)
+++ lra-remat.c (working copy)
@@ -413,6 +413,9 @@ operand_to_remat (rtx_insn *insn)
   struct lra_static_insn_data *static_id = id->insn_static_data;
   struct lra_insn_reg *reg, *found_reg = NULL;
 
+  /* Don't rematerialize insns which can change PC.  */
+  if (JUMP_P (insn) || CALL_P (insn))
+    return -1;
   /* First find a pseudo which can be rematerialized.  */
   for (reg = id->regs; reg != NULL; reg = reg->next)
     /* True FRAME_POINTER_NEEDED might be because we can not follow

Reply via email to