OSDN Git Service

PR target/13054
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 14 Dec 2003 07:26:19 +0000 (07:26 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 14 Dec 2003 07:26:19 +0000 (07:26 +0000)
commitdbd3d89dbeabdfe82325737146a3b6e934995bd1
tree3112b57849d016c6c7ff338d03b3d70ac5b472fe
parentaca2da743142c37d318376a9669f27ef305bf6c1
PR target/13054
* pa-protos.h (indexed_memory_operand, borx_reg_operand,
move_dest_operand, move_src_operand): New protypes.
(basereg_operand, move_operand, reg_or_nonsymb_mem_operand): Deleted.
* pa.c (copy_reg_pointer, indexed_memory_operand, move_dest_operand,
move_src_operand): New functions.
(basereg_operand, reg_or_nonsymb_mem_operand, move_operand): Delete.
(reg_or_0_or_nonsymb_mem_operand): Return false for unscaled indexed
address until cse is not expected on targets with non-equivalent
space registers.
(hppa_legitimize_address): Canonicalize unscaled indexed addresses
on targets non-equivalent space registers.
(emit_move_sequence): Break out indexed addresses from destination
operand.  Similarly, break out unscaled indexed addresses from
source operand on targets with non-equivalent space registers.  Fix
REG_POINTER flag when possible.  Mark register pointer when creating
new pointers.
(print_operand): Handle unscaled index addresses.
* pa.h (IS_INDEX_ADDR_P, IS_LO_SUM_DLT_ADDR_P): New macro subroutines
for EXTRA_CONSTRAINT.
(EXTRA_CONSTRAINT): Rework to make more readable.
(MODE_OK_FOR_SCALED_INDEXING_P, MODE_OK_FOR_UNSCALED_INDEXING_P): New
subroutines for GO_IF_LEGITIMATE_ADDRESS.
(GO_IF_LEGITIMATE_ADDRESS): Rework using new subroutines.  Allow scaled
and unscaled addresses.  Canonicalize unscaled indexed addresses on
targets with non-equivalent space registers.  Document issues in
handling indexed address modes on PA-RISC.
(PREDICATE_CODES): Update for new and deleted predicates.
* pa.md (move_dest_operand, move_src_operand, indexed_memory_operand):
Use new predicates in move patterns.
Add peephole2 patterns to optimize floating point stores.  Fix
constrain preferencing in move patterns.  Delete patterns for handling
unscaled indexed memory loads.  Add missing load and store with
base-register modification patterns.  Correct SFmode floating point
store pattern.  Add missing zero extension loads.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74614 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/pa/pa-protos.h
gcc/config/pa/pa.c
gcc/config/pa/pa.h
gcc/config/pa/pa.md