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: Reload bug


> Concerning this testcase, the reload used to manage to get around this
> problem.  It didn't get around intentionally and just because the
> instruction contrain does not accept SSE register so reload is needed
> anyway.  The idea of reloading whole SSE register into integer is no-go
> as can be see from the other testcases.  There are two cases when the
> reload is really needed:
> 1) we are not able to access the SUBREG_BYTE part because of
>    the problem above because SUBREG_BYTE is not divisible by size of the
>    register (there is no way to get the size of the register, but I guess
>    we can use GET_MODE_SIZE / HARD_REGNO_NREGS) and we will also need to
>    compensate the lowparts,
>
>    This is the problem we are seeing.  It is IMO questionable whether it
>    is valid to see such scenario and whether local alloc can produce
>    such a subregs that has no representation.  My CANNOT_CHANGE_MODE_P
>    patch avoids that as it causes the problem described above.
>
> 2) We are outputing into the register and the HARD_REGNO_NREGS is
>    decreasing so we may convert subreg rewriting just part of the
>    register to the subreg rewriting the lower part and clobbering upper
>    part.  This is what I beleive the conditional was originally invented
>    for.
>
> Are we in the sync now?

I don't fully understand the second point. Could you give an example?

> It seems to be that the conditional is still overconservative for 2) as
> it is still possible that the subreg is large enought to fit into
> HARD_REGNO_NREGS of the destination and it now ignores 1).  It is
> question whether 1) can legaly happen at all but I see it does for 3.2
> (and does not for 3.3).

Are you sure of that for 3.3? Because we will silently miscompile too if 
there are a few leaks.

-- 
Eric Botcazou


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