Responding wrt "DJ's proposed changes": > > As to what bits are modified, that's target dependent as the > > precise size of the partial modes is target dependent. > > GET_MODE_PRECISION (mode) is the precision of all modes.
True, but not all the compiler uses that info when it should. There are even testsuite cases that get it wrong. > > That's one of the things that would be largely made irrelevant by > > DJ's proposed changes. Instead of using PSImode, > > What’s PSImode? PSImode is a mode with more precision than HImode, but less than SImode. > > we'd be able to define modes of precisely the number of bits one > > of these targets needs. Not quite, Jeff. We still use PSImode but now it has a known defined precision, not just "fits in SImode", and may correspond to one of the __intN types. > Gosh, we already do that. GET_MODE_PRECISION (mode) is exactly the width: There's still lots of places in gcc that use SIZE where they should use PRECISION. I also added a step that looks for target-defined conversions between, for example, HImode and PSImode (rather than go HI->SI->PSI). Plus, as there was no real C type for "partial int modes", a lot of gcc made assumptions about type sizes. The addition of arbitrary __intN types means there are more places in the code that are able to properly handle partial integer modes.