diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-12-24 20:02:50 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-12-24 20:02:50 +0000 |
commit | 8e8eaa14f7e1cc5376fb53645aed83212cf9cec4 (patch) | |
tree | 2ef83a8bffb39fd6536dca82fa259a9f1da5460a /clang/lib/Sema/TreeTransform.h | |
parent | 61a401caecce1eec51813647cb34d781e242a621 (diff) | |
download | bcm5719-llvm-8e8eaa14f7e1cc5376fb53645aed83212cf9cec4.tar.gz bcm5719-llvm-8e8eaa14f7e1cc5376fb53645aed83212cf9cec4.zip |
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.
llvm-svn: 92139
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index cf424aa8c11..61b57e7e564 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/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); |