OSDN Git Service

*** empty log message ***
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Apr 2005 20:41:51 +0000 (20:41 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Apr 2005 20:41:51 +0000 (20:41 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98040 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 392eb67..11e50e9 100644 (file)
@@ -1,3 +1,9 @@
+2005-04-12  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       PR middle-end/20917
+       * config/s390/s390.md ("*set_tp"): Use SET in pattern.
+       ("set_tp_64", "set_tp_31"): Adapt expanded pattern.
+
 2004-04-12  Richard Henderson  <rth@redhat.com>
 
        * config/i386/i386.md (UNSPEC_FIX, UNSPEC_MOVA, UNSPEC_SHUFFLE,
index 022d779..65b49dc 100644 (file)
 
 (define_expand "set_tp_64"
   [(set (reg:DI 36) (match_operand:DI 0 "nonimmediate_operand" ""))
-   (unspec_volatile [(reg:DI 36)] UNSPECV_SET_TP)]
+   (set (reg:DI 36) (unspec_volatile:DI [(reg:DI 36)] UNSPECV_SET_TP))]
   "TARGET_64BIT"
   "")
 
 (define_expand "set_tp_31"
   [(set (reg:SI 36) (match_operand:SI 0 "nonimmediate_operand" ""))
-   (unspec_volatile [(reg:SI 36)] UNSPECV_SET_TP)]
+   (set (reg:SI 36) (unspec_volatile:SI [(reg:SI 36)] UNSPECV_SET_TP))]
   "!TARGET_64BIT"
   "")
 
 (define_insn "*set_tp"
-  [(unspec_volatile [(reg 36)] UNSPECV_SET_TP)]
+  [(set (reg 36) (unspec_volatile [(reg 36)] UNSPECV_SET_TP))]
   ""
   ""
   [(set_attr "type" "none")
index d36f432..3edefec 100644 (file)
@@ -1,3 +1,8 @@
+2005-04-12  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       PR middle-end/20917
+       * gcc.dg/20050409-1.c: New test.
+
 2005-04-12  Andrew Pinski  <pinskia@physics.uc.edu>
 
        * gcc.dg/tree-ssa/alias-1.c: Fix spelling of optimized.
diff --git a/gcc/testsuite/gcc.dg/20050409-1.c b/gcc/testsuite/gcc.dg/20050409-1.c
new file mode 100644 (file)
index 0000000..be85f71
--- /dev/null
@@ -0,0 +1,18 @@
+/* This used to ICE due to a regmove problem on s390.  */
+
+/* { dg-do compile { target s390*-*-* } } */
+/* { dg-options "-O2" } */
+
+
+extern void abort (void);
+extern void **alloc (void);
+
+void *test (void)
+{
+  void **p = alloc ();
+  if (!p) abort ();
+
+  __builtin_set_thread_pointer (p);
+  return *p;
+}
+