This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
pa.md bugfix
- To: gcc-patches at gcc dot gnu dot org
- Subject: pa.md bugfix
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Sat, 31 Jul 1999 04:13:08 -0600
- Reply-To: law at cygnus dot com
While working on the PA64 code generator I noticed that we were getting
really bizarre reloads when we had to perform a secondary reload for a
DImode value.
The root of the problem was the reload_indi/reload_outdi patterns indicated
that the original reload register needed to be an FP reg, which in turn
caused reload to allocate a tertiary reload from the FP reg class and
generate code to use it as an intermediate register. Needless to say this
is not what we wanted :-)
This patch fixes the reload_indi and reload_outdi expanders to allow any
register as the original reload register just like all the other reload
expanders on the PA do.
* pa.md (reload_indi, reload_outdi): Allow any register for the
original reload register.
***************
*** 3139,3145 ****
}")
(define_expand "reload_indi"
! [(set (match_operand:DI 0 "register_operand" "=f")
(match_operand:DI 1 "non_hard_reg_operand" ""))
(clobber (match_operand:SI 2 "register_operand" "=&r"))]
""
--- 3139,3145 ----
}")
(define_expand "reload_indi"
! [(set (match_operand:DI 0 "register_operand" "=Z")
(match_operand:DI 1 "non_hard_reg_operand" ""))
(clobber (match_operand:SI 2 "register_operand" "=&r"))]
""
***************
*** 3155,3161 ****
(define_expand "reload_outdi"
[(set (match_operand:DI 0 "general_operand" "")
! (match_operand:DI 1 "register_operand" "f"))
(clobber (match_operand:SI 2 "register_operand" "=&r"))]
""
"
--- 3155,3161 ----
(define_expand "reload_outdi"
[(set (match_operand:DI 0 "general_operand" "")
! (match_operand:DI 1 "register_operand" "Z"))
(clobber (match_operand:SI 2 "register_operand" "=&r"))]
""
"