summaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index db61af149579..974bf3b018c0 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -649,9 +649,11 @@ struct BuiltinDumpStructGenerator {
if (!FD || FD->isUnnamedBitField() || FD->isAnonymousStructOrUnion())
continue;
+ QualType FieldType = FD->getType();
+
llvm::SmallString<20> Format = llvm::StringRef("%s%s %s ");
llvm::SmallVector<Expr *, 5> Args = {FieldIndentArg,
- getTypeString(FD->getType()),
+ getTypeString(FieldType),
getStringLiteral(FD->getName())};
if (FD->isBitField()) {
@@ -667,15 +669,16 @@ struct BuiltinDumpStructGenerator {
ExprResult Field =
IFD ? S.BuildAnonymousStructUnionMemberReference(
CXXScopeSpec(), Loc, IFD,
- DeclAccessPair::make(IFD, AS_public), RecordArg, Loc)
+ DeclAccessPair::make(IFD, AS_public), RecordArg, nullptr,
+ Loc)
: S.BuildFieldReferenceExpr(
- RecordArg, RecordArgIsPtr, Loc, CXXScopeSpec(), FD,
- DeclAccessPair::make(FD, AS_public),
+ RecordArg, RecordArgIsPtr, Loc, NestedNameSpecifierLoc(),
+ FD, FieldType, DeclAccessPair::make(FD, AS_public),
DeclarationNameInfo(FD->getDeclName(), Loc));
if (Field.isInvalid())
return true;
- auto *InnerRD = FD->getType()->getAsRecordDecl();
+ auto *InnerRD = FieldType->getAsRecordDecl();
auto *InnerCXXRD = dyn_cast_or_null<CXXRecordDecl>(InnerRD);
if (InnerRD && (!InnerCXXRD || InnerCXXRD->isAggregate())) {
// Recursively print the values of members of aggregate record type.
@@ -684,7 +687,7 @@ struct BuiltinDumpStructGenerator {
return true;
} else {
Format += " ";
- if (appendFormatSpecifier(FD->getType(), Format)) {
+ if (appendFormatSpecifier(FieldType, Format)) {
// We know how to print this field.
Args.push_back(Field.get());
} else {