2011-08-11 Dmitry Melnik <dm@ispras.ru>
authoramonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Aug 2011 11:41:27 +0000 (11:41 +0000)
committeramonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Aug 2011 11:41:27 +0000 (11:41 +0000)
* sel-sched-ir.c (init_global_and_expr_for_insn): Forbid copying of
recognized by cannot_copy_insn_p hook and volatile instructions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177652 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/sel-sched-ir.c

index a2e42c7..5600070 100644 (file)
@@ -1,5 +1,10 @@
 2011-08-11  Dmitry Melnik  <dm@ispras.ru>
 
+       * sel-sched-ir.c (init_global_and_expr_for_insn): Forbid copying of
+       recognized by cannot_copy_insn_p hook and volatile instructions.
+
+2011-08-11  Dmitry Melnik  <dm@ispras.ru>
+
        * sel-sched-ir.c (merge_expr_data): Take maximum spec.
 
 2011-08-11  Richard Sandiford  <richard.sandiford@linaro.org>
index 599714b..1e6e55e 100644 (file)
@@ -2956,7 +2956,10 @@ init_global_and_expr_for_insn (insn_t insn)
           /* Exception handling insns are always unique.  */
           || (cfun->can_throw_non_call_exceptions && can_throw_internal (insn))
           /* TRAP_IF though have an INSN code is control_flow_insn_p ().  */
-          || control_flow_insn_p (insn))
+          || control_flow_insn_p (insn)
+          || volatile_insn_p (PATTERN (insn))
+          || (targetm.cannot_copy_insn_p
+              && targetm.cannot_copy_insn_p (insn)))
         force_unique_p = true;
       else
         force_unique_p = false;