aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2015-08-12 13:27:41 +0000
committerYvan Roux <yroux@gcc.gnu.org>2015-08-12 13:27:41 +0000
commitc0ba5a8b0cd64aa0d1024756bdf2c095199f289c (patch)
tree8d38f5fe1b5c4d283a60f6a2b4ac10938f3e21de
parentda7db2ced2f26dc763e69176e850e8175945bc46 (diff)
downloadgcc-c0ba5a8b0cd64aa0d1024756bdf2c095199f289c.zip
gcc-c0ba5a8b0cd64aa0d1024756bdf2c095199f289c.tar.gz
gcc-c0ba5a8b0cd64aa0d1024756bdf2c095199f289c.tar.bz2
re PR target/67127 ([ARM] Avoiding odd-number ldrd/strd in movdi introduced a regression on armeb-linux-gnueabihf)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm.md4
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3869f67..0665009 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 817860d..288bbb9 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -5519,7 +5519,7 @@
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
@@ -5538,7 +5538,7 @@
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