================ @@ -2876,10 +2876,21 @@ class TreeTransform { return ExprError(); Base = BaseResult.get(); + // We want to use `BuildMemberReferenceExpr()` so we can use its logic + // that materializes `Base` into a temporary if it's a prvalue. + // To do so, we need to create a `LookupResult` for `Member`, even though + // it's an unnamed field (that we could never actually have looked up). + // This small hack seems preferable to duplicating the logic for + // materializing the temporary. + LookupResult R(getSema(), MemberNameInfo, Sema::LookupMemberName); + R.addDecl(Member); + R.resolveKind(); + CXXScopeSpec EmptySS; - return getSema().BuildFieldReferenceExpr( - Base, isArrow, OpLoc, EmptySS, cast<FieldDecl>(Member), - DeclAccessPair::make(FoundDecl, FoundDecl->getAccess()), MemberNameInfo); + return getSema().BuildMemberReferenceExpr( + Base, Base->getType(), OpLoc, isArrow, EmptySS, TemplateKWLoc, + FirstQualifierInScope, R, ExplicitTemplateArgs, + /*S*/ nullptr); ---------------- shafik wrote:
```suggestion /*S=*/nullptr); ``` We use [bugprone-argument-comment](https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html) format for these. https://github.com/llvm/llvm-project/pull/90842 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits