]> 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:55:11 +0000 (13:55 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 12 Jun 2015 11:55:11 +0000 (13:55 +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: r224421

gcc/ChangeLog
gcc/ira.c

index bea147c5b3db46245445ef0478b8e02d17640497..d6cf625fccf1b619ea537117dcbe573bc84fe0c1 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 385441a4302c3e839b35278e6abdcd9a6a134657..6a33aeae33ecc3b0aa5c1afd1a24165ae1bdce1d 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3878,6 +3878,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;
     }