diff options
author | Ivan A. Kosarev <ikosarev@accesssoftek.com> | 2018-01-25 14:21:55 +0000 |
---|---|---|
committer | Ivan A. Kosarev <ikosarev@accesssoftek.com> | 2018-01-25 14:21:55 +0000 |
commit | 1860b520a2327702e1b50455c87882879eb777d3 (patch) | |
tree | 7e232f614a5d8208872ccbdcc452be4855faecd8 /clang/lib/CodeGen/CGClass.cpp | |
parent | 929697bd55fdf384880cd6b15b3f276875085a1c (diff) | |
download | bcm5719-llvm-1860b520a2327702e1b50455c87882879eb777d3.tar.gz bcm5719-llvm-1860b520a2327702e1b50455c87882879eb777d3.zip |
[CodeGen] Decorate aggregate accesses with TBAA tags
Differential Revision: https://reviews.llvm.org/D41539
llvm-svn: 323421
Diffstat (limited to 'clang/lib/CodeGen/CGClass.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index 593d6152c8b..b1496a8e1b9 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -640,8 +640,7 @@ static void EmitMemberInitializer(CodeGenFunction &CGF, LValue Src = CGF.EmitLValueForFieldInitialization(ThisRHSLV, Field); // Copy the aggregate. - CGF.EmitAggregateCopy(LHS.getAddress(), Src.getAddress(), FieldType, - LHS.isVolatileQualified()); + CGF.EmitAggregateCopy(LHS, Src, FieldType, LHS.isVolatileQualified()); // Ensure that we destroy the objects if an exception is thrown later in // the constructor. QualType::DestructionKind dtorKind = FieldType.isDestructedType(); @@ -2002,10 +2001,10 @@ void CodeGenFunction::EmitCXXConstructorCall(const CXXConstructorDecl *D, assert(E->getNumArgs() == 1 && "unexpected argcount for trivial ctor"); const Expr *Arg = E->getArg(0); - QualType SrcTy = Arg->getType(); - Address Src = EmitLValue(Arg).getAddress(); + LValue Src = EmitLValue(Arg); QualType DestTy = getContext().getTypeDeclType(D->getParent()); - EmitAggregateCopyCtor(This, Src, DestTy, SrcTy); + LValue Dest = MakeAddrLValue(This, DestTy); + EmitAggregateCopyCtor(Dest, Src); return; } @@ -2072,8 +2071,10 @@ void CodeGenFunction::EmitCXXConstructorCall(const CXXConstructorDecl *D, QualType SrcTy = D->getParamDecl(0)->getType().getNonReferenceType(); Address Src(Args[1].RV.getScalarVal(), getNaturalTypeAlignment(SrcTy)); + LValue SrcLVal = MakeAddrLValue(Src, SrcTy); QualType DestTy = getContext().getTypeDeclType(ClassDecl); - EmitAggregateCopyCtor(This, Src, DestTy, SrcTy); + LValue DestLVal = MakeAddrLValue(This, DestTy); + EmitAggregateCopyCtor(DestLVal, SrcLVal); return; } |