]> granicus.if.org Git - clang/commitdiff
When rebuilding a MemberExpr that refers to an anonymous union, be
authorDouglas Gregor <dgregor@apple.com>
Thu, 24 Dec 2009 20:02:50 +0000 (20:02 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 24 Dec 2009 20:02:50 +0000 (20:02 +0000)
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

lib/Sema/TreeTransform.h

index cf424aa8c11c3031b1569c4be6bf1506b3bf5a97..61b57e7e5642bae3412fb97fa070286efac18dff 100644 (file)
@@ -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<Expr>();
+      if (getSema().PerformObjectMemberConversion(BaseExpr, Member))
+        return getSema().ExprError();
       MemberExpr *ME =
-        new (getSema().Context) MemberExpr(Base.takeAs<Expr>(), isArrow,
+        new (getSema().Context) MemberExpr(BaseExpr, isArrow,
                                            Member, MemberLoc,
                                            cast<FieldDecl>(Member)->getType());
       return getSema().Owned(ME);