This makes the code generated for fat calli smaller because of the clearing of the fat pointer bit gets fused into address mode.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8e3f231e944e4adb7b8e9e8c364e95ae0b8798da
{
GenTreePtr fptrAddressCopy = compiler->gtCloneExpr(fptrAddress);
GenTreePtr fatPointerMask = new (compiler, GT_CNS_INT) GenTreeIntCon(TYP_I_IMPL, FAT_POINTER_MASK);
- return compiler->gtNewOperNode(GT_XOR, pointerType, fptrAddressCopy, fatPointerMask);
+ return compiler->gtNewOperNode(GT_SUB, pointerType, fptrAddressCopy, fatPointerMask);
}
//------------------------------------------------------------------------