I did some benchmarks and, at least for calculix the differences are miniscule. I'd say we can stick with the current approach and improve as needed.
However, I noticed ICEs here: + gcc_assert (biggest_size >= mode_size); and here: + mode = TYPE_MODE (TREE_TYPE (lhs)); when compiling calculix. Regards Robin