> As I repeatedly said having sizetype of a different precision than
> pointer types will cause all sorts of problems ;)
And as I've rebutted repeatedly, I can't change the chip.
> The middle-end generally assumes it can cast between sizetype and
> pointers arbitrarily.
Bad assumption. It will get worse with the upcoming named address
branch work.
> In the above case, what type is tmp_9, what type is tmp_16?
The 107t dump file doesn't say, but the .128r.expand file looks like this:
;; D.1229 = (unsigned int) tmp;
(insn 36 35 37 20000412-6.c:14 (set (reg:SI 53)
(sign_extend:SI (reg/v/f:PSI 48 [ tmp ]))) -1 (nil))
(insn 37 36 0 20000412-6.c:14 (set (reg:HI 47 [ D.1229 ])
(subreg:HI (reg:SI 53) 0)) -1 (nil))
;; if (bufend > (short unsigned int *) D.1229)
(insn 39 37 40 20000412-6.c:18 (set (reg:SI 55)
(zero_extend:SI (reg:HI 47 [ D.1229 ]))) -1 (nil))
(insn 40 39 41 20000412-6.c:18 (set (reg:PSI 54)
(truncate:PSI (reg:SI 55))) -1 (nil))
So it goes PSI -> SI -> HI -> SI -> PSI