From: Douglas Gregor Date: Thu, 24 Dec 2009 20:02:50 +0000 (+0000) Subject: When rebuilding a MemberExpr that refers to an anonymous union, be X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=83a56c4a1d5bbf7e4b6b08b105051575a2421d34;p=clang When rebuilding a MemberExpr that refers to an anonymous union, be sure to perform derived-to-base conversions on the base expression. Fixes PR5868. Proper testcase is coming soon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92139 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index cf424aa8c1..61b57e7e56 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -956,8 +956,11 @@ public: // We have a reference to an unnamed field. assert(!Qualifier && "Can't have an unnamed field with a qualifier!"); + Expr *BaseExpr = Base.takeAs(); + if (getSema().PerformObjectMemberConversion(BaseExpr, Member)) + return getSema().ExprError(); MemberExpr *ME = - new (getSema().Context) MemberExpr(Base.takeAs(), isArrow, + new (getSema().Context) MemberExpr(BaseExpr, isArrow, Member, MemberLoc, cast(Member)->getType()); return getSema().Owned(ME);