The generic __throw function in libgcc cannot restore registers that are bigger than word_type, like fpu registers. There needs to be a way to encode the size of the saved register in the frame info, or something like this.