aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Melnik <dm@ispras.ru>2011-08-11 11:41:27 +0000
committerAlexander Monakov <amonakov@gcc.gnu.org>2011-08-11 15:41:27 +0400
commit6bf2d15641ada998b550b681e4be89c2f8897643 (patch)
tree03beb08ee5680de8b404ed2ce6b7983a8b4a6df3
parentbf3a40e953ac2de927a56de8fda9cda4eba036ad (diff)
downloadgcc-6bf2d15641ada998b550b681e4be89c2f8897643.zip
gcc-6bf2d15641ada998b550b681e4be89c2f8897643.tar.gz
gcc-6bf2d15641ada998b550b681e4be89c2f8897643.tar.bz2
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 (init_global_and_expr_for_insn): Forbid copying of recognized by cannot_copy_insn_p hook and volatile instructions. From-SVN: r177652
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/sel-sched-ir.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a2e42c7..5600070 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
index 599714b..1e6e55e 100644
--- a/gcc/sel-sched-ir.c
+++ b/gcc/sel-sched-ir.c
@@ -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;