aboutsummaryrefslogtreecommitdiff
path: root/gcc/sel-sched-ir.c
diff options
context:
space:
mode:
authorDmitry Melnik <dm@ispras.ru>2011-08-11 11:41:27 +0000
committerAlexander Monakov <amonakov@ispras.ru>2011-08-11 11:41:27 +0000
commit6e91482f821bfed59dd8dc89822e4385d7bba14f (patch)
tree03beb08ee5680de8b404ed2ce6b7983a8b4a6df3 /gcc/sel-sched-ir.c
parentd4146c9324d1ecdda4ced94f618895691388ae91 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@177652 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sel-sched-ir.c')
-rw-r--r--gcc/sel-sched-ir.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
index 599714b44e4..1e6e55e6632 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;