Commit e4f2cd43 by Andreas Krebbel Committed by Andreas Krebbel

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
parent 99cdbefb
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> 2006-08-30 Richard Guenther <rguenther@suse.de>
* Makefile.in (see.o): Add $(EXPR_H) dependency. * Makefile.in (see.o): Add $(EXPR_H) dependency.
......
...@@ -907,7 +907,11 @@ ...@@ -907,7 +907,11 @@
"" ""
{ {
/* Handle symbolic constants. */ /* 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); emit_symbolic_move (operands);
}) })
...@@ -1158,7 +1162,11 @@ ...@@ -1158,7 +1162,11 @@
"" ""
{ {
/* Handle symbolic constants. */ /* 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); emit_symbolic_move (operands);
}) })
......
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> 2006-08-30 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/arm-mmx-1.c: Skip for -mfloat-abi=softfp. * gcc.dg/arm-mmx-1.c: Skip for -mfloat-abi=softfp.
/* { 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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment