2006-08-31 Andreas Krebbel <krebbel1@de.ibm.com>
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 Aug 2006 07:43:36 +0000 (07:43 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 Aug 2006 07:43:36 +0000 (07:43 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116599 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/s390.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr24367.c [new file with mode: 0644]

index 795c0a7..8f1fd34 100644 (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.
index d6443e0..eb734e1 100644 (file)
   ""
 {
   /* 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);
 })
 
   ""
 {
   /* 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);
 })
 
index ad0a274..2e6cec9 100644 (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.
diff --git a/gcc/testsuite/gcc.dg/pr24367.c b/gcc/testsuite/gcc.dg/pr24367.c
new file mode 100644 (file)
index 0000000..6486719
--- /dev/null
@@ -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);
+}