In http://reviews.llvm.org/D9198#161802, @dsanders wrote:
> This shouldn't be a problem but it is an uncomfortable discrepancy with our > _documented_ ABI which says that 32-bit integers are always sign-extended to > GPR-sized integers. I put the underbars around 'documented' because the > available documentation isn't completely reliable as a statement of how > things are actually implemented. I discussed it with Matthew Fortune (one of > the current GCC maintainers for Mips) at the time and as far as we could > tell, the truth of the matter is that unsigned integers are passed zero > extended by the caller in all cases. I also ran a few hundred thousand > randomized ABI tests and couldn't produce any failures running mixtures of > clang-compiled and gcc-compiled code. IIRC from a recent discussion, unsigned 32-bit int are represented in a 64-bit register as sign-extended value of the 32-bit value (i.e. bit 31 is copied through the top half). So, the caller has to make sure the value is correctly represented before making a call, right? http://reviews.llvm.org/D9198 EMAIL PREFERENCES http://reviews.llvm.org/settings/panel/emailpreferences/ _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
