aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2006-08-31 07:43:36 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2006-08-31 07:43:36 +0000
commite4f2cd43ec2076e9a84f611c8a72454e34975e0c (patch)
tree1827db1892808b46722cf8bee2f28098e66535fb /gcc/config
parent99cdbefb972862f1fd6219a990df04ab7cb95503 (diff)
downloadgcc-e4f2cd43ec2076e9a84f611c8a72454e34975e0c.zip
gcc-e4f2cd43ec2076e9a84f611c8a72454e34975e0c.tar.gz
gcc-e4f2cd43ec2076e9a84f611c8a72454e34975e0c.tar.bz2
re PR target/24367 (unrecognizable insn with -fPIC -O2 -funroll-loops)
2006-08-31 Andreas Krebbel <krebbel1@de.ibm.com> PR target/24367 * config/s390/s390.md ("movsi", "movdi" expander): Accept rtxes like r12 + SYMBOLIC_CONST. 2006-08-31 Andreas Krebbel <krebbel1@de.ibm.com> PR target/24367 * gcc.dg/pr24367.c: New testcase. From-SVN: r116599
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/s390/s390.md12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index d6443e0..eb734e1 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -907,7 +907,11 @@
""
{
/* Handle symbolic constants. */
- if (TARGET_64BIT && SYMBOLIC_CONST (operands[1]))
+ if (TARGET_64BIT
+ && (SYMBOLIC_CONST (operands[1])
+ || (GET_CODE (operands[1]) == PLUS
+ && XEXP (operands[1], 0) == pic_offset_table_rtx
+ && SYMBOLIC_CONST (XEXP (operands[1], 1)))))
emit_symbolic_move (operands);
})
@@ -1158,7 +1162,11 @@
""
{
/* Handle symbolic constants. */
- if (!TARGET_64BIT && SYMBOLIC_CONST (operands[1]))
+ if (!TARGET_64BIT
+ && (SYMBOLIC_CONST (operands[1])
+ || (GET_CODE (operands[1]) == PLUS
+ && XEXP (operands[1], 0) == pic_offset_table_rtx
+ && SYMBOLIC_CONST (XEXP(operands[1], 1)))))
emit_symbolic_move (operands);
})