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.


Kenneth Zadeck wrote:
All of the little comments will be done as you ask.
+  /* Kill this register if it is not a subreg store.  */
+  if (!(DF_REF_FLAGS (def) & DF_REF_PARTIAL))
+    bitmap_clear_bit (live, dregno);
Looks like this depends on another part.  I have to admit that I'm not
convinced yet by the subreg handling in DF as a whole.  A normal
(non-multiword non-strict-low) subreg store _does_ kill the whole reg.

I find this somewhat confusing.  Are there other cases of subregs that
cover the whole register?

Paradoxical subregs might also count. As I said, the whole situation is a bit of a mess, the subreg rtx code is overloaded to mean a whole set of different things.


a<- ...

(part of a) <- ...

use of a

If we assume that second store complete, the first store looks dead.

The first store is dead if A is a single register and the partial access is smaller and not using strict_low_part. The second store is documented to have undefined effects on the rest of the register in that case.


If there is a set of test that we can apply when setting the df_ref
_partial flag to ignore the cases where it really is to the entire word,
we will add this in the next flip of the patch.

There's some code in flow.c's mark_set_1 which may be usable.


Do you think we need this patch in stage3, or can it wait until 4.3
stage1?


As danny said this patch has been in for a long time and fixes or at least partially fixes several bugs.

Okay, let's sort out the subreg situation and get it in.



Bernd



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