https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56493
--- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Richard Biener from comment #17) > Btw, I think that > > (int) ((long unsigned int) q + D.2078) > > to > > (int) ((unsigned int) q + (unsigned int) D.2078) > > doesn't look like an always profitable pattern on GIMPLE (more stmts). Also > take into consideration what targets PROMOTE_MODE (mode-of-q/D.2078) do > and prefer types according to that. > > The vectorizer prefers single type sizes throughout computations to avoid > re-packing. Which is why the proposal was to do demotion early and promote back depending on machine description (and, perhaps on separate IL copy, in between ifcvt and vectorizer also promote to decrease re-packing). The demotion would help with avoiding unnecessary computations (e.g. those affecting just the high bits), canonicalizing the IL and in some cases allowing bigger parts of computations with the same type bitsizes, and promotion would be an attempt to help with sub-word arithmetics on word only arithmetics targets, etc. Dunno why Kai has stopped working on that :(.