diff options
author | Andreas Krebbel <krebbel1@de.ibm.com> | 2006-08-31 07:43:36 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2006-08-31 07:43:36 +0000 |
commit | e4f2cd43ec2076e9a84f611c8a72454e34975e0c (patch) | |
tree | 1827db1892808b46722cf8bee2f28098e66535fb /gcc/config | |
parent | 99cdbefb972862f1fd6219a990df04ab7cb95503 (diff) | |
download | gcc-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.md | 12 |
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); }) |