This is the mail archive of the gcc@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]

Re: GCC reload problem


   From: Eric Botcazou <ebotcazou at libertysurf dot fr>
   Date: Fri, 11 Apr 2003 09:07:54 +0200

   > The problem here is that with SUBREG_BYTE, the word-based tests in
   > this if statement are no longer valid.  Which parts of the comparison
   > are actually passing?
   
   The same part that triggers in reload.c:reload_inner_reg_of_subreg()
   
     /* If the outer part is a word or smaller, INNER larger than a
        word and the number of regs for INNER is not the same as the
        number of words in INNER, then INNER will need reloading.  */
     return (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
   	  && GET_MODE_SIZE (GET_MODE (inner)) > UNITS_PER_WORD
   	  && ((GET_MODE_SIZE (GET_MODE (inner)) / UNITS_PER_WORD)
   	      != HARD_REGNO_NREGS (REGNO (inner), GET_MODE (inner))));
   
   reload_inner_reg_of_subreg() is the function that detects invalid subregs, 
   but only if a reload has already been scheduled by find_reloads().
   
This clearly shows that my #if 0 and comment needs to be
removed.


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