On 11/27/23 10:36, Joern Rennecke wrote:
On 11/20/23 11:26, Richard Sandiford wrote:

+
+      mask = GET_MODE_MASK (GET_MODE (SUBREG_REG (x))) << bit;
+      if (!mask)
+ mask = -0x100000000ULL;

Not sure I follow this.  What does the -0x100000000ULL constant indicate?
Also, isn't it the mask of the outer register that is shifted, rather
than the mask of the inner mode?  E.g. if we have:
Jeff Law:
Inherited.  I should have marked it like the other one as needing
investigation.  Probably the fastest way is to just rip it out for a
test to see what breaks.

This is for support of types wider than DImode.

You unsupported tracking of these values in various places, though.
Because we don't track liveness beyond DImode in this code at all and if you don't filter out the larger modes, things will go wonky in a bad way. It may be less of an issue after fixing the big endian correction code which was totally broken.

Supporting TI, OI, etc would certainly be possible, but it didn't seem worth the effort on current architectures.

Jeff

Reply via email to