From 836a93bdb3bbf6b2b63a72c04ae307b7ed4e578a Mon Sep 17 00:00:00 2001 From: Manman Ren Date: Wed, 28 Nov 2012 22:29:41 +0000 Subject: [PATCH] ABI: comments from Eli on r168820. rdar://12723368 llvm-svn: 168821 --- clang/lib/CodeGen/CGCall.cpp | 2 ++ clang/test/CodeGen/x86_64-arguments.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index ab933c52b42d..54ccb86a030d 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/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/clang/test/CodeGen/x86_64-arguments.c b/clang/test/CodeGen/x86_64-arguments.c index b39fa1d34910..d416045d8874 100644 --- a/clang/test/CodeGen/x86_64-arguments.c +++ b/clang/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; }