aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2004-01-31 17:01:24 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2004-01-31 17:01:24 +0000
commit025b17a479d9e2c3fcf4ea96c9572a5e53e998ad (patch)
treef3ab8f2609802e73159579a94d9e0a312271894b /gcc
parent24f330691d685bbae31d59ab79c717e4b02c1467 (diff)
downloadgcc-025b17a479d9e2c3fcf4ea96c9572a5e53e998ad.zip
gcc-025b17a479d9e2c3fcf4ea96c9572a5e53e998ad.tar.gz
gcc-025b17a479d9e2c3fcf4ea96c9572a5e53e998ad.tar.bz2
s390.c (s390_decompose_address): Do not treat virtual registers as pointers.
* config/s390/s390.c (s390_decompose_address): Do not treat virtual registers as pointers. * config/s390/s390.md ("*la_31" second peephole2): Fix incorrect mode. From-SVN: r77036
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c4
-rw-r--r--gcc/config/s390/s390.md2
3 files changed, 7 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5997244..5da71cd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-01-31 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_decompose_address): Do not treat virtual
+ registers as pointers.
+ * config/s390/s390.md ("*la_31" second peephole2): Fix incorrect mode.
+
2004-01-31 Paolo Bonzini <bonzini@gnu.org>
* combine.c (cse_main): Set gen_lowpart to gen_lowpart_for_combine
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 3531d87..4c2a9e4 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -2081,8 +2081,6 @@ s390_decompose_address (register rtx addr, struct s390_address *out)
&& frame_pointer_needed
&& REGNO (base) == HARD_FRAME_POINTER_REGNUM)
|| REGNO (base) == ARG_POINTER_REGNUM
- || (REGNO (base) >= FIRST_VIRTUAL_REGISTER
- && REGNO (base) <= LAST_VIRTUAL_REGISTER)
|| (flag_pic
&& REGNO (base) == PIC_OFFSET_TABLE_REGNUM))
pointer = base_ptr = TRUE;
@@ -2108,8 +2106,6 @@ s390_decompose_address (register rtx addr, struct s390_address *out)
&& frame_pointer_needed
&& REGNO (indx) == HARD_FRAME_POINTER_REGNUM)
|| REGNO (indx) == ARG_POINTER_REGNUM
- || (REGNO (indx) >= FIRST_VIRTUAL_REGISTER
- && REGNO (indx) <= LAST_VIRTUAL_REGISTER)
|| (flag_pic
&& REGNO (indx) == PIC_OFFSET_TABLE_REGNUM))
pointer = indx_ptr = TRUE;
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index a8957c9..77537c7 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -3616,7 +3616,7 @@
&& !reg_overlap_mentioned_p (operands[0], operands[2])
&& strict_memory_address_p (VOIDmode, gen_rtx_PLUS (SImode, operands[1], operands[2]))
&& preferred_la_operand_p (gen_rtx_PLUS (SImode, operands[1], operands[2]))"
- [(set (match_dup 0) (plus:DI (match_dup 1) (match_dup 2)))]
+ [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))]
"")
(define_insn "*la_31_and"