This is the mail archive of the gcc-patches@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: [PATCH]: update to df for mainline.


Daniel Berlin wrote:
Bernd Schmidt wrote:
Daniel Berlin wrote:

Based on this discussion, I also have a hard time believing any part
outside of flow (or possibly including flow) actually gets subregs right
all the time, since nobody can seem to articulate the entire complete
set of dataflow distinctions that must be made for them. :)
Ian and I seem to be giving you the same set of rules.

But you aren't, AFAICT.


You said it's not a partial set if it's a subreg of a pseudo not inside
a strict low part, and it's a set of a smaller than the entire size of
the register.

I may have been imprecise, for which I apologize - it is hard to describe this verbally with the necessary amount of precision. I said "if A is a single register", which is ambiguous - I intended it to mean, not a multiword one. For pseudos, that was a poor choice of wording, given that you have pseudos that'll end up covering more than one hard register. My mental model of the situation is that there are essentially two cases, multiword values, and single-word values, and SUBREG has different meanings for the two, but (ignoring strict_low_part) it always affects an entire machine register (but not necessarily an entire pseudo).


I recommend that you try to read the code in flow.c and follow its behaviour, rather than any English-language description of it (the latter usually not being tested by a full bootstrap of the compiler).


Bernd



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