It occurs to me that we can actually accomplish the promotion if all loads from the byval struct use the x86_fp80 type. We just need to make sure that nobody is loading from the other bits. I think the right fix is probably to add logic to the checking we do on the loads. http://reviews.llvm.org/D5057