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
This commit is contained in:
Andreas Krebbel 2006-08-31 07:43:36 +00:00 committed by Andreas Krebbel
parent 99cdbefb97
commit e4f2cd43ec
4 changed files with 38 additions and 2 deletions

View File

@ -1,3 +1,9 @@
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-30 Richard Guenther <rguenther@suse.de>
* Makefile.in (see.o): Add $(EXPR_H) dependency.

View File

@ -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);
})

View File

@ -1,3 +1,8 @@
2006-08-31 Andreas Krebbel <krebbel1@de.ibm.com>
PR target/24367
* gcc.dg/pr24367.c: New testcase.
2006-08-30 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/arm-mmx-1.c: Skip for -mfloat-abi=softfp.

View File

@ -0,0 +1,17 @@
/* { dg-do compile { target fpic } } */
/* { dg-options "-O2 -fPIC -funroll-loops" } */
char *
test (const char *parent, const char *child)
{
static char rtn_path[1024];
char *s = rtn_path;
char *s_end = rtn_path + sizeof (rtn_path);
const char *s2 = child;
while (*s != '\0')
s++;
while ((s < s_end) && (*s2 != '\0'))
*s++ = *s2++;
return (rtn_path);
}