(subreg:SF (reg:SC)) question - 20020227-1.c failure
Ulrich Weigand
weigand@immd1.informatik.uni-erlangen.de
Sat May 3 20:03:00 GMT 2003
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
More information about the Gcc
mailing list