This patch fixes a bug in which the function prologue would save more registers to the stack than there was space allocated. This would cause data corruption when the epilogue restored the registers if a child function had overwritten that memory. The problem was caused by insn constraints that allow vectors to be placed in scalar registers. This isn't usually allowed without an explicit vec_duplicate in the pattern, but some post-reload splitters do it sometimes (hence the size calculation mismatch). A full fix would add vec_duplicate variants of all the instructions that support this, but that's a huge explosion of patterns, and this fix is enough for correctness, for now. This has already been committed to the OG12 branch. Andrew