This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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.