]> granicus.if.org Git - clang/commitdiff
Fixed another code gen bug in objc's new write-barrier API.
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 25 Sep 2009 00:00:20 +0000 (00:00 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 25 Sep 2009 00:00:20 +0000 (00:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82735 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExpr.cpp

index 332d47c1dd924ea5a0d71b2a385bd2d5784dc54f..af8363dbb11b13aa672b555ceb51eb43a69dffdc 100644 (file)
@@ -494,11 +494,12 @@ void CodeGenFunction::EmitStoreThroughLValue(RValue Src, LValue Dst,
       assert(Dst.getBaseIvarExp() && "BaseIvarExp is NULL");
       const llvm::Type *ResultType = ConvertType(getContext().LongTy);
       llvm::Value *RHS = EmitScalarExpr(Dst.getBaseIvarExp());
+      llvm::Value *dst = RHS;
       RHS = Builder.CreatePtrToInt(RHS, ResultType, "sub.ptr.rhs.cast");
       llvm::Value *LHS = 
         Builder.CreatePtrToInt(LvalueDst, ResultType, "sub.ptr.lhs.cast");
       llvm::Value *BytesBetween = Builder.CreateSub(LHS, RHS, "ivar.offset");
-      CGM.getObjCRuntime().EmitObjCIvarAssign(*this, src, LvalueDst,
+      CGM.getObjCRuntime().EmitObjCIvarAssign(*this, src, dst,
                                               BytesBetween);
     }
     else if (Dst.isGlobalObjCRef())