ABI: comments from Eli on r168820.

rdar://12723368

llvm-svn: 168821
This commit is contained in:
Manman Ren 2012-11-28 22:29:41 +00:00
parent 84b921f805
commit 836a93bdb3
2 changed files with 4 additions and 2 deletions

View File

@ -695,6 +695,7 @@ static llvm::Value *CreateCoercedLoad(llvm::Value *SrcPtr,
llvm::Type *I8PtrTy = CGF.Builder.getInt8PtrTy(); llvm::Type *I8PtrTy = CGF.Builder.getInt8PtrTy();
llvm::Value *Casted = CGF.Builder.CreateBitCast(Tmp, I8PtrTy); llvm::Value *Casted = CGF.Builder.CreateBitCast(Tmp, I8PtrTy);
llvm::Value *SrcCasted = CGF.Builder.CreateBitCast(SrcPtr, I8PtrTy); llvm::Value *SrcCasted = CGF.Builder.CreateBitCast(SrcPtr, I8PtrTy);
// FIXME: Use better alignment.
CGF.Builder.CreateMemCpy(Casted, SrcCasted, CGF.Builder.CreateMemCpy(Casted, SrcCasted,
llvm::ConstantInt::get(CGF.IntPtrTy, SrcSize), llvm::ConstantInt::get(CGF.IntPtrTy, SrcSize),
1, false); 1, false);
@ -782,6 +783,7 @@ static void CreateCoercedStore(llvm::Value *Src,
llvm::Type *I8PtrTy = CGF.Builder.getInt8PtrTy(); llvm::Type *I8PtrTy = CGF.Builder.getInt8PtrTy();
llvm::Value *Casted = CGF.Builder.CreateBitCast(Tmp, I8PtrTy); llvm::Value *Casted = CGF.Builder.CreateBitCast(Tmp, I8PtrTy);
llvm::Value *DstCasted = CGF.Builder.CreateBitCast(DstPtr, I8PtrTy); llvm::Value *DstCasted = CGF.Builder.CreateBitCast(DstPtr, I8PtrTy);
// FIXME: Use better alignment.
CGF.Builder.CreateMemCpy(DstCasted, Casted, CGF.Builder.CreateMemCpy(DstCasted, Casted,
llvm::ConstantInt::get(CGF.IntPtrTy, DstSize), llvm::ConstantInt::get(CGF.IntPtrTy, DstSize),
1, false); 1, false);

View File

@ -370,7 +370,7 @@ typedef union T1 { T2 field0; T4 field1; } T1;
extern T1 T1_retval; extern T1 T1_retval;
T1 test48(void) { T1 test48(void) {
// CHECK: @test48 // CHECK: @test48
// CHECK-NOT: load %struct.T4* %{{.*}} // CHECK: memcpy
// CHECK-NOT: store %struct.T4 %{{.*}}, %struct.T4* %{{.*}} // CHECK: memcpy
return T1_retval; return T1_retval;
} }