diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20050409-1.c | 18 |
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; +} + |