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

Reply via email to