summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-12-22 05:24:09 +0000
committerAnders Carlsson <andersca@mac.com>2009-12-22 05:24:09 +0000
commit9c45ad7a1b8f28390a114ccec5d475b25258f324 (patch)
treea2967cf8501bb2f66bcefb09c300a14264ccff6b /clang/lib/Sema
parentf3ef2cada74bfc315150c1c3dbf6b8cafce2eeb0 (diff)
downloadbcm5719-llvm-9c45ad7a1b8f28390a114ccec5d475b25258f324.tar.gz
bcm5719-llvm-9c45ad7a1b8f28390a114ccec5d475b25258f324.zip
When we simply return a retained member expression when instantiating, we must also mark the member decl as referenced.
llvm-svn: 91887
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/TreeTransform.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 03169bf3800..8c84d4a95ac 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -3688,8 +3688,13 @@ TreeTransform<Derived>::TransformMemberExpr(MemberExpr *E) {
Base.get() == E->getBase() &&
Qualifier == E->getQualifier() &&
Member == E->getMemberDecl() &&
- !E->hasExplicitTemplateArgumentList())
+ !E->hasExplicitTemplateArgumentList()) {
+
+ // Mark it referenced in the new context regardless.
+ // FIXME: this is a bit instantiation-specific.
+ SemaRef.MarkDeclarationReferenced(E->getMemberLoc(), Member);
return SemaRef.Owned(E->Retain());
+ }
TemplateArgumentListInfo TransArgs;
if (E->hasExplicitTemplateArgumentList()) {
OpenPOWER on IntegriCloud