summaryrefslogtreecommitdiff
path: root/gcc/ira.c
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-12-15 20:04:04 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-12-15 20:04:04 +0000
commit3130aced56fbe6671146fec8b84cf888ecfea122 (patch)
tree66048c3dfb9781777bc6aed4106af213685f2349 /gcc/ira.c
parent2bd0853710d6bda898e11f38dc704107e0c2823d (diff)
downloadgcc-3130aced56fbe6671146fec8b84cf888ecfea122.tar.gz
2014-12-15 Vladimir Makarov <vmakarov@redhat.com>
PR target/62642 * ira.c (rtx_moveable_p): Prevent UNSPEC_VOLATILE moves. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218761 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ira.c')
-rw-r--r--gcc/ira.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ira.c b/gcc/ira.c
index e610d358177..f08aa23e408 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -4358,6 +4358,12 @@ rtx_moveable_p (rtx *loc, enum op_type type)
case CLOBBER:
return rtx_moveable_p (&SET_DEST (x), OP_OUT);
+ case UNSPEC_VOLATILE:
+ /* It is a bad idea to consider insns with with such rtl
+ as moveable ones. The insn scheduler also considers them as barrier
+ for a reason. */
+ return false;
+
default:
break;
}