diff options
author | Anders Carlsson <andersca@mac.com> | 2010-01-29 05:41:25 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-01-29 05:41:25 +0000 |
commit | 42c876dff209fb4b3a5fa0ba29da41d2072c9cf5 (patch) | |
tree | 38fcbd4a1db5e142a28e1e011003f7be73c81e92 /clang/lib/CodeGen | |
parent | db78f0ad046e1dfb79ed03fbe8b1d1a2c18616fb (diff) | |
download | bcm5719-llvm-42c876dff209fb4b3a5fa0ba29da41d2072c9cf5.tar.gz bcm5719-llvm-42c876dff209fb4b3a5fa0ba29da41d2072c9cf5.zip |
Use EmitLValueForFieldInitialization when synthesizing the copy ctor as well.
llvm-svn: 94800
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index 7e78e7df52e..33189498de5 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -647,26 +647,9 @@ CodeGenFunction::SynthesizeCXXCopyConstructor(const CXXConstructorDecl *Ctor, continue; } - if (Field->getType()->isReferenceType()) { - unsigned FieldIndex = CGM.getTypes().getLLVMFieldNo(Field); - - llvm::Value *LHS = Builder.CreateStructGEP(LoadOfThis, FieldIndex, - "lhs.ref"); - - llvm::Value *RHS = Builder.CreateStructGEP(LoadOfThis, FieldIndex, - "rhs.ref"); - - // Load the value in RHS. - RHS = Builder.CreateLoad(RHS); - - // And store it in the LHS - Builder.CreateStore(RHS, LHS); - - continue; - } // Do a built-in assignment of scalar data members. - LValue LHS = EmitLValueForField(LoadOfThis, Field, 0); - LValue RHS = EmitLValueForField(LoadOfSrc, Field, 0); + LValue LHS = EmitLValueForFieldInitialization(LoadOfThis, Field, 0); + LValue RHS = EmitLValueForFieldInitialization(LoadOfSrc, Field, 0); if (!hasAggregateLLVMType(Field->getType())) { RValue RVRHS = EmitLoadOfLValue(RHS, Field->getType()); |