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]
Other format: [Raw text]

fix ia64 epilogue generation


Should fix the problem Andreas mentions here:

  http://gcc.gnu.org/ml/gcc/2001-12/msg01409.html


r~


        * config/ia64/ia64.c (mark_reg_gr_used_mask): Mind HARD_REGNO_NREGS.

Index: gcc/config/ia64/ia64.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.c,v
retrieving revision 1.134
diff -c -p -d -r1.134 ia64.c
*** ia64.c	2001/12/19 22:09:03	1.134
--- ia64.c	2002/01/01 00:22:03
*************** mark_reg_gr_used_mask (reg, data)
*** 1377,1383 ****
  {
    unsigned int regno = REGNO (reg);
    if (regno < 32)
!     current_frame_info.gr_used_mask |= 1 << regno;
  }
  
  /* Returns the number of bytes offset between the frame pointer and the stack
--- 1377,1387 ----
  {
    unsigned int regno = REGNO (reg);
    if (regno < 32)
!     {
!       unsigned int i, n = HARD_REGNO_NREGS (regno, GET_MODE (reg));
!       for (i = 0; i < n; ++i)
! 	current_frame_info.gr_used_mask |= 1 << (regno + i);
!     }
  }
  
  /* Returns the number of bytes offset between the frame pointer and the stack


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