re PR target/67127 ([ARM] Avoiding odd-number ldrd/strd in movdi introduced a regress...
authorYvan Roux <yvan.roux@linaro.org>
Wed, 12 Aug 2015 13:27:41 +0000 (13:27 +0000)
committerYvan Roux <yroux@gcc.gnu.org>
Wed, 12 Aug 2015 13:27:41 +0000 (13:27 +0000)
2015-08-12  Yvan Roux  <yvan.roux@linaro.org>

PR target/67127
* config/arm/arm.md (movdi): Restrict illegitimate ldrd/strd checking
to ARM core registers.

From-SVN: r226811

gcc/ChangeLog
gcc/config/arm/arm.md

index 3869f671cd3fbfe40e884d85c1c4d070af796e95..06650098dc9b8948814cd94a91181c646e655baf 100644 (file)
@@ -1,3 +1,9 @@
+2015-08-12  Yvan Roux  <yvan.roux@linaro.org>
+
+       PR target/67127
+       * config/arm/arm.md (movdi): Restrict illegitimate ldrd/strd checking
+       to ARM core registers.
+
 2015-08-12  Nathan Sidwell  <nathan@acm.org>
 
        * tree-vrp.c (simplify_min_or_max_using_ranges): New.
index 817860dda028929d4351e348f237f43be804f58a..288bbb9f83638db0c5d298d17a60ff96ff3c982e 100644 (file)
       if (!REG_P (operands[0]))
        operands[1] = force_reg (DImode, operands[1]);
     }
-  if (REG_P (operands[0]) && REGNO (operands[0]) < FIRST_VIRTUAL_REGISTER
+  if (REG_P (operands[0]) && REGNO (operands[0]) <= LAST_ARM_REGNUM
       && !HARD_REGNO_MODE_OK (REGNO (operands[0]), DImode))
     {
       /* Avoid LDRD's into an odd-numbered register pair in ARM state
                      gen_highpart (SImode, operands[1]));
       DONE;
     }
-  else if (REG_P (operands[1]) && REGNO (operands[1]) < FIRST_VIRTUAL_REGISTER
+  else if (REG_P (operands[1]) && REGNO (operands[1]) <= LAST_ARM_REGNUM
           && !HARD_REGNO_MODE_OK (REGNO (operands[1]), DImode))
     {
       /* Avoid STRD's from an odd-numbered register pair in ARM state