aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManman Ren <mren@apple.com>2012-11-28 22:29:41 +0000
committerManman Ren <mren@apple.com>2012-11-28 22:29:41 +0000
commit060f34d6d12a851faa9463da522f7dff1104d0e1 (patch)
treecfa0b5bfddbedeceb320aa46e704d08021f9f27b
parentf51c61c78e8487061b6a434286488fa3e5b919e5 (diff)
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
-rw-r--r--lib/CodeGen/CGCall.cpp2
-rw-r--r--test/CodeGen/x86_64-arguments.c4
2 files changed, 4 insertions, 2 deletions
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;
}