From: Ivan A. Kosarev Date: Thu, 21 Dec 2017 08:14:16 +0000 (+0000) Subject: [CodeGen] Fix access sizes in new-format TBAA tags X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=883f8a25f88623676f665db058361e06099b93dd;p=clang [CodeGen] Fix access sizes in new-format TBAA tags The new format requires to specify both the type of the access and its size. This patch fixes setting access sizes for TBAA tags that denote accesses to structure members. This fix affects all future TBAA metadata tests for the new format, so I guess we don't need any special tests for this fix. Differential Revision: https://reviews.llvm.org/D41452 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321250 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index b61b273977..90eeddf5cc 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -3801,8 +3801,10 @@ LValue CodeGenFunction::EmitLValueForField(LValue base, FieldTBAAInfo.Offset += Layout.getFieldOffset(field->getFieldIndex()) / CharWidth; - // Update the final access type. + // Update the final access type and size. FieldTBAAInfo.AccessType = CGM.getTBAATypeInfo(FieldType); + FieldTBAAInfo.Size = + getContext().getTypeSizeInChars(FieldType).getQuantity(); } Address addr = base.getAddress();