]> granicus.if.org Git - clang/commitdiff
Make the ivar offset always be a ptrdiff_t, because stuff in CGObjC.cpp expects this...
authorDavid Chisnall <csdavec@swan.ac.uk>
Tue, 22 Mar 2011 19:57:51 +0000 (19:57 +0000)
committerDavid Chisnall <csdavec@swan.ac.uk>
Tue, 22 Mar 2011 19:57:51 +0000 (19:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128102 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjCGNU.cpp

index 8b45ed3f3a458623d55716cedb8e04cd0a6c5cce..93b86580c073d86a400889d90f9c336ad87bfe3d 100644 (file)
@@ -2451,11 +2451,13 @@ llvm::Value *CGObjCGNU::EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
                          const ObjCIvarDecl *Ivar) {
   if (CGM.getLangOptions().ObjCNonFragileABI) {
     Interface = FindIvarInterface(CGM.getContext(), Interface, Ivar);
-    return CGF.Builder.CreateLoad(CGF.Builder.CreateLoad(
-                ObjCIvarOffsetVariable(Interface, Ivar), false, "ivar"));
+    return CGF.Builder.CreateZExtOrBitCast(
+        CGF.Builder.CreateLoad(CGF.Builder.CreateLoad(
+                ObjCIvarOffsetVariable(Interface, Ivar), false, "ivar")),
+        PtrDiffTy);
   }
   uint64_t Offset = ComputeIvarBaseOffset(CGF.CGM, Interface, Ivar);
-  return llvm::ConstantInt::get(LongTy, Offset, "ivar");
+  return llvm::ConstantInt::get(PtrDiffTy, Offset, "ivar");
 }
 
 CodeGen::CGObjCRuntime *