From: Manman Ren Date: Wed, 28 Nov 2012 22:29:41 +0000 (+0000) Subject: ABI: comments from Eli on r168820. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=060f34d6d12a851faa9463da522f7dff1104d0e1;p=clang ABI: comments from Eli on r168820. rdar://12723368 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168821 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp index ab933c52b4..54ccb86a03 100644 --- a/lib/CodeGen/CGCall.cpp +++ b/lib/CodeGen/CGCall.cpp @@ -695,6 +695,7 @@ static llvm::Value *CreateCoercedLoad(llvm::Value *SrcPtr, llvm::Type *I8PtrTy = CGF.Builder.getInt8PtrTy(); llvm::Value *Casted = CGF.Builder.CreateBitCast(Tmp, I8PtrTy); llvm::Value *SrcCasted = CGF.Builder.CreateBitCast(SrcPtr, I8PtrTy); + // FIXME: Use better alignment. CGF.Builder.CreateMemCpy(Casted, SrcCasted, llvm::ConstantInt::get(CGF.IntPtrTy, SrcSize), 1, false); @@ -782,6 +783,7 @@ static void CreateCoercedStore(llvm::Value *Src, llvm::Type *I8PtrTy = CGF.Builder.getInt8PtrTy(); llvm::Value *Casted = CGF.Builder.CreateBitCast(Tmp, I8PtrTy); llvm::Value *DstCasted = CGF.Builder.CreateBitCast(DstPtr, I8PtrTy); + // FIXME: Use better alignment. CGF.Builder.CreateMemCpy(DstCasted, Casted, llvm::ConstantInt::get(CGF.IntPtrTy, DstSize), 1, false); diff --git a/test/CodeGen/x86_64-arguments.c b/test/CodeGen/x86_64-arguments.c index b39fa1d349..d416045d88 100644 --- a/test/CodeGen/x86_64-arguments.c +++ b/test/CodeGen/x86_64-arguments.c @@ -370,7 +370,7 @@ typedef union T1 { T2 field0; T4 field1; } T1; extern T1 T1_retval; T1 test48(void) { // CHECK: @test48 -// CHECK-NOT: load %struct.T4* %{{.*}} -// CHECK-NOT: store %struct.T4 %{{.*}}, %struct.T4* %{{.*}} +// CHECK: memcpy +// CHECK: memcpy return T1_retval; }