summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
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
commit8e8eaa14f7e1cc5376fb53645aed83212cf9cec4 (patch)
tree2ef83a8bffb39fd6536dca82fa259a9f1da5460a /clang/lib/Sema/TreeTransform.h
parent61a401caecce1eec51813647cb34d781e242a621 (diff)
downloadbcm5719-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.h5
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);
OpenPOWER on IntegriCloud