This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

pa.md bugfix



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"))]
    ""
    "





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]