aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-12-24 20:02:50 +0000
committerDouglas Gregor <dgregor@apple.com>2009-12-24 20:02:50 +0000
commit83a56c4a1d5bbf7e4b6b08b105051575a2421d34 (patch)
treea4ff2d612d6a558a60d701adb6ccb1481f8dcdd5
parentf3c47c9525153aea2de0ec4bd615b9cf2d81c103 (diff)
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
-rw-r--r--lib/Sema/TreeTransform.h5
1 files changed, 4 insertions, 1 deletions
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<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);