> The problem you are running into is that sizeof(sizetype) != > sizeof(void *). In the middle-end the type used as offset > (sizetype) doesn't have a defined signedness (it's unsigned for C, > signed for Ada for example), so we rely on the fact that its size > should match that of pointers (as then we don't need to worry about > sign or zero extension).
That kind of assumption just isn't going to work for m32c, because there aren't enough pointer-sized operators to satisfy gcc, so pointer math has to be done in a smaller mode. Doing it in a larger mode is way too slow (all emulated math). So... now what?