> I'm not sure how to fix this. When I tried to do something similar, I > got completely stuck because I couldn't make GCC refer to the *same* > pseudo register in two different modes. You need to use SUBREGs, TRUNCATE or FLOAT_/SIGN_/ZERO_EXTEND for that.