aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.md6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/20050409-1.c18
4 files changed, 32 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 392eb67..11e50e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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,
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 022d779..65b49dc 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -7784,18 +7784,18 @@
(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")
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d36f432..3edefec 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..be85f71
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20050409-1.c
@@ -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;
+}
+