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: (subreg:SF (reg:SC)) question - 20020227-1.c failure


Michael Matz wrote:

> So, is it possible for s390x to store a complete SCmode value into _one_
> register (also into float regs)?  

We can store a SCmode value either in one general register, or else
in two floating point registers (that would be preferred).

I guess we could enforce the use of two general registers as well
(even though not strictly necessary), if that helps things.  But
that wouldn't change the flow.c test either.

> If yes, than the subreg-set correctly
> clobbers the other bits, i.e. flow.c correctly determines the single-ret
> case.  In that case the generated code was incorrect, and should use
> strict_low_part.

>From a quick look through the source, the result of gen_realpart and
gen_imagpart are used throughout as both source and destination,
so you can't just add strict_low_part there.

If we do indeed need to use strict_low_part, it would appear the
whole handling of complex values needs to be reworked ...
 
> If OTOH you need two registers for SCmode, the code was correct (and the
> subreg would be limited to one of the two regs).  In that case the
> condition in flow.c would be wrong.

That would contradict the documentation Geoff has pointed out.

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  weigand@informatik.uni-erlangen.de


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