From a90fe4027b3c868e41b95fdc32ef8e448e779a80 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Sun, 7 Mar 2004 02:48:04 +0000 Subject: [PATCH] s390.md ("load_multiple", [...]): Allow only if reload_completed. ChangeLog: * config/s390/s390.md ("load_multiple", "*load_multiple_di", "*load_multiple_si"): Allow only if reload_completed. ("store_multiple", "*store_multiple_di", "*store_multiple_si"): Likewise. testsuite/ChangeLog: * gcc.dg/20040306-1.c: New test. From-SVN: r79049 --- gcc/ChangeLog | 7 +++++++ gcc/config/s390/s390.md | 16 ++++++++++------ gcc/testsuite/ChangeLog | 4 ++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c1dbd772ce4e..42f11df104ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-03-05 Ulrich Weigand + + * config/s390/s390.md ("load_multiple", "*load_multiple_di", + "*load_multiple_si"): Allow only if reload_completed. + ("store_multiple", "*store_multiple_di", "*store_multiple_si"): + Likewise. + 2004-03-05 Ulrich Weigand * config/s390/s390.c (s390_expand_movstr): Clobber double-word diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index a0374d453ad8..0ad76dc00d68 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -1420,12 +1420,16 @@ ; ; load_multiple pattern(s). ; +; ??? Due to reload problems with replacing registers inside match_parallel +; we currently support load_multiple/store_multiple only after reload. +; + (define_expand "load_multiple" [(match_par_dup 3 [(set (match_operand 0 "" "") (match_operand 1 "" "")) (use (match_operand 2 "" ""))])] - "" + "reload_completed" " { int regno; @@ -1485,7 +1489,7 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:DI 1 "register_operand" "=r") (match_operand:DI 2 "s_operand" "Q"))])] - "" + "reload_completed" "* { int words = XVECLEN (operands[0], 0); @@ -1504,7 +1508,7 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 1 "register_operand" "=r") (match_operand:SI 2 "s_operand" "Q"))])] - "" + "reload_completed" "* { int words = XVECLEN (operands[0], 0); @@ -1527,7 +1531,7 @@ [(match_par_dup 3 [(set (match_operand 0 "" "") (match_operand 1 "" "")) (use (match_operand 2 "" ""))])] - "" + "reload_completed" " { int regno; @@ -1589,7 +1593,7 @@ [(match_parallel 0 "store_multiple_operation" [(set (match_operand:DI 1 "s_operand" "=Q") (match_operand:DI 2 "register_operand" "r"))])] - "" + "reload_completed" "* { int words = XVECLEN (operands[0], 0); @@ -1609,7 +1613,7 @@ [(match_parallel 0 "store_multiple_operation" [(set (match_operand:SI 1 "s_operand" "=Q") (match_operand:SI 2 "register_operand" "r"))])] - "" + "reload_completed" "* { int words = XVECLEN (operands[0], 0); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 027c6e7b33a3..2ce064ab6ab0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-03-06 Ulrich Weigand + + * gcc.dg/20040306-1.c: New test. + 2004-02-25 John David Anglin * g++.dg/opt/inline4.C (dg-final): Robustify regexp. -- 2.47.2