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]

Re: Eliminable register breakage


    Shouldn't matter, I think.  Have a look at the code around

              /* Force reload if this is a constant or PLUS or if there may
		 be a problem accessing OPERAND in the outer mode.  */

    in find_reloads, which seems to try and detect this situation.

It does.  However, find_reloads then doesn't reload inside the SUBREG.

There are three problems here:

(1) Probably the first test should be true.  See
http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00013.html which would fix
this, but:

(2) The second test should also catch it, meaning that
reload_inner_reg_of_subreg should return 1 for PLUS as well as constant,
but:

(3) If it does, the code below the call fails since it assumes the
return value is a REG.  But it already can be a constant, so that code
is wrong.  But where it is supposed to get the class from in that case?

So there is a whole morass of problems that this finds.


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