]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/62642 (x86 rdtsc is moved through barrier)
authorJakub Jelinek <jakub@redhat.com>
Fri, 12 Jun 2015 11:54:43 +0000 (13:54 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 12 Jun 2015 11:54:43 +0000 (13:54 +0200)
Backported from mainline
2014-12-15  Vladimir Makarov  <vmakarov@redhat.com>

PR target/62642
* ira.c (rtx_moveable_p): Prevent UNSPEC_VOLATILE moves.

From-SVN: r224420

gcc/ChangeLog
gcc/ira.c

index 971906297dcbb4d087f8f3ece2cbf54373ac4a5d..be2c3a9f590c57a233442d553a5f9798144601ae 100644 (file)
@@ -1,3 +1,11 @@
+2015-06-12  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       2014-12-15  Vladimir Makarov  <vmakarov@redhat.com>
+       PR target/62642
+       * ira.c (rtx_moveable_p): Prevent UNSPEC_VOLATILE moves.
+
 2015-06-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/63608
index 0c703c514ca04c24dba9960eef2bba9432d0c83a..fb0650e59ecd0d686cc328c71b3ff0470ace4713 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -4434,6 +4434,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;
     }